<?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>223886</bug_id>
          
          <creation_ts>2021-03-29 11:18:27 -0700</creation_ts>
          <short_desc>[perf dashboard] Add sequential mode for perf dashboard A/B testing.</short_desc>
          <delta_ts>2021-05-25 18:25:02 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to>dewei_zhu</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744789</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-03-29 11:18:27 -0700</bug_when>
    <thetext>[perf dashboard] Add sequential mode for perf dashboard A/B testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744792</commentid>
    <comment_count>1</comment_count>
      <attachid>424552</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-03-29 11:21:01 -0700</bug_when>
    <thetext>Created attachment 424552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745566</commentid>
    <comment_count>2</comment_count>
      <attachid>424552</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-31 03:02:09 -0700</bug_when>
    <thetext>Comment on attachment 424552
Patch

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

Maybe we should just skip B&apos;s if all A&apos;s failed?

&gt; Websites/perf.webkit.org/public/include/commit-sets-helpers.php:7
&gt; -function create_test_group_and_build_requests($db, $commit_sets, $task_id, $name, $author, $triggerable_id, $platform_id, $test_id, $repetition_count, $needs_notification) {
&gt; +function create_test_group_and_build_requests($db, $commit_sets, $task_id, $name, $author, $triggerable_id, $platform_id, $test_id, $repetition_count, $test_mode, $needs_notification) {

&quot;test mode&quot; is a very generic term.
How about &quot;repetition type&quot; or &quot;repetition strategy&quot;?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:17
&gt;      if (!$additional_build_request_count)

We don&apos;t need this check anymore given we&apos;re using validate_arguments now, right?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:21
&gt;      if (!$test_group_id)

Ditto.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:24
&gt; +    $commit_set = array_get($arguments, &apos;commitSet&apos;, NULL);

Nit: call this $commit_set_id.

&gt; Websites/perf.webkit.org/public/privileged-api/create-analysis-task.php:13
&gt; +    $test_mode = array_get($data, &apos;testMode&apos;, &apos;alternate&apos;);

Ditto about naming.

&gt; Websites/perf.webkit.org/public/v3/components/test-group-form.js:30
&gt; +            modeExplanation.textContent = testModeSelect.value == &apos;alternate&apos; ?

We don&apos;t want to be updating textContent like.
enqueueToRender instead.

&gt; Websites/perf.webkit.org/public/v3/components/test-group-form.js:82
&gt; +            &lt;label id=&quot;mode-explanation&quot;&gt;(Alternate A &amp; B between iterations)&lt;/label&gt;

This is very wordy. I think we can just say:
alternative (e.g. ABAB)
sequential (e.g. AABB)
in the above select element instead.

&gt; Websites/perf.webkit.org/public/v3/models/analysis-task.js:327
&gt; -    static async create(name, startPoint, endPoint, testGroupName=null, repetitionCount=0, notifyOnCompletion=false)
&gt; +    static async create(name, startPoint, endPoint, testGroupName=null, repetitionCount=0, notifyOnCompletion=false, testMode=&apos;alternate&apos;)

Huh, this function has wrong style.
All these = should have spaces around them!

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:14
&gt; -        this._initialRepetitionCount = object.initialRepetitionCount;
&gt; +        this._initialRepetitionCount = parseInt(object.initialRepetitionCount);

Use +object.initialRepetitionCount instead.
It would be more strict than parseInt since parseInt like atoi will ignore non-digit letters at the end.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:39
&gt; -        this._initialRepetitionCount = object.initialRepetitionCount;
&gt; +        this._initialRepetitionCount = parseInt(object.initialRepetitionCount);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:102
&gt; +        const firstTwoBuildRequests = this._orderedBuildRequests().filter(buildRequest =&gt; buildRequest.order() &gt; 0).slice(0, 2);
&gt; +        if (firstTwoBuildRequests.length &lt; 2)
&gt; +            return &apos;alternate&apos;;
&gt; +        const [first, second] = firstTwoBuildRequests;
&gt; +        return first.commitSet() == second.commitSet() ? &apos;sequential&apos; : &apos;alternate&apos;;

Hm... this code makes me think that maybe we should just store this information in the database instead.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:243
&gt; +    async addMoreBuildRequests(addCount, commitSet=null)

Nit: spaces around =.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:374
&gt; -            this.content(&apos;status-summary&apos;).innerHTML = statusSummary;
&gt; -
&gt; +            this.content(&apos;status-summary&apos;).textContent = this._summarizedTestGroup(currentGroup);

LOL. This is bad. How did we end up with innerHTML!?
Also, we should be using this.renderReplace instead.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:376
&gt; -            this.content(&apos;request-summary&apos;).innerHTML = `Scheduled ${authoredBy} at ${currentGroup.createdAt()}`
&gt; +            this.content(&apos;request-summary&apos;).textContent = `Scheduled ${authoredBy} at ${currentGroup.createdAt()}`

Ditto about using renderReplace.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:404
&gt; +            retryCountByCommitSet.set(configurationLabel, addedRepetitionForCurrentConfiguration)
&gt; +            configurationLabel = String.fromCharCode(configurationLabel.charCodeAt(0) + 1);
&gt; +            if (addedRepetitionForPreviousConfiguration &gt;= 0 &amp;&amp; addedRepetitionForCurrentConfiguration !== addedRepetitionForPreviousConfiguration)
&gt; +                sameRetryCount = false;
&gt; +            addedRepetitionForPreviousConfiguration = addedRepetitionForCurrentConfiguration;

This is very complicated! I&apos;d suggest something like this instead:
const retryCountByCommitSet = new Map;
for (const commitSet of testGroup.requestedCommitSets())
    retryCountByCommitSet.set(commitSet, testGroup.repetitionCountForCommitSet(commitSet) - testGroup.initialRepetitionCount());
const firstCommit = testGroup.requestedCommitSets()[0];
const retryCountsAreIdentical = testGroup.requestedCommitSets().every((commitSet) =&gt; retryCountByCommitSet.get(commitSet) == retryCountByCommitSet.get(firstCommit));

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:422
&gt; +        statusSummaryParts.push(&apos;due to failures.&apos;)

This is hard to read, we probably want to define a local variable to be able to do something like this:
return [`${testGroup.initialRepetitionCount()} requested,`, retryDescription, &apos; due to failures.&apos;]

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:423
&gt; +        return statusSummaryParts.join(&apos; &apos;);

If we used renderReplace, we can just return an array here.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:133
&gt; +            modeExplanation.textContent = testMode.value == &apos;alternate&apos; ?

Again, we shouldn&apos;t be updating DOM like this. We need to enqueueToRender

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:609
&gt; +                            &lt;label&gt;mode&lt;/label&gt;
&gt; +                            &lt;label id=&quot;mode-explanation&quot;&gt;(Alternate A &amp; B between iterations)&lt;/label&gt;

Same suggestion about this being very verbose.

&gt; Websites/perf.webkit.org/server-tests/resources/common-operations.js:56
&gt; -            await testFunction()
&gt; +            await testFunction();

Huh, bad indentation. This should be indented by 4 spaces to the right of try, not by 8 spaces.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:15
&gt; +        if (testGroup.testMode() === &apos;alternate&apos;)
&gt; +            await createAdditionalBuildRequestForTestGroupInAlternateMode(testGroup, maximumRetryFactor);
&gt; +        else if (testGroup.testMode() === &apos;sequential&apos;)
&gt; +            await createAdditionalBuildRequestForTestGroupInSequentialMode(testGroup, maximumRetryFactor);

Can we use a switch and assert that we don&apos;t hit the the default? Also, these are really long name.
How about just createAlternatingRetriesForTestGroupInAlternate / createSequentialRetriesForTestGroupInAlternate?

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:19
&gt; +async function createAdditionalBuildRequestForTestGroupInAlternateMode(testGroup, maximumRetryFactor) {

Nit: { on the new line.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:54
&gt; +async function createAdditionalBuildRequestForTestGroupInSequentialMode(testGroup, maximumRetryFactor) {

Nit: { should be on new line.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:58
&gt; +    // Relies on `TestGroup.requestedCommitSets` returns commit sets sorted by build request order.

A comment like this is an prime example of something we should write an assertion instead.
Here, we can do something like this:
console.assert(Array.from(testGroup.requestedCommitSets()).every((commitSet, index, list) =&gt; !index || list[index - 1].order() &lt; commitSet.order()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747026</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-05 11:19:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/76225788&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747288</commentid>
    <comment_count>4</comment_count>
      <attachid>425244</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-05 23:18:33 -0700</bug_when>
    <thetext>Created attachment 425244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747554</commentid>
    <comment_count>5</comment_count>
      <attachid>424552</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-06 11:57:49 -0700</bug_when>
    <thetext>Comment on attachment 424552
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:102
&gt;&gt; +        return first.commitSet() == second.commitSet() ? &apos;sequential&apos; : &apos;alternate&apos;;
&gt; 
&gt; Hm... this code makes me think that maybe we should just store this information in the database instead.

I agree! I think storing it in database might be easier in many ways, will update the patch with adding repetition_type field.

&gt;&gt; Websites/perf.webkit.org/server-tests/resources/common-operations.js:56
&gt;&gt; +            await testFunction();
&gt; 
&gt; Huh, bad indentation. This should be indented by 4 spaces to the right of try, not by 8 spaces.

Nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747557</commentid>
    <comment_count>6</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-06 12:07:17 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #2)
&gt; Comment on attachment 424552 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424552&amp;action=review
&gt; 
&gt; Maybe we should just skip B&apos;s if all A&apos;s failed?

Like what we did if root building fails? There might be a race that the first B is already running. That means we either leave the B run alone and we will not accept the result or find a way to stop the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751026</commentid>
    <comment_count>7</comment_count>
      <attachid>426210</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-16 05:04:10 -0700</bug_when>
    <thetext>Created attachment 426210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751301</commentid>
    <comment_count>8</comment_count>
      <attachid>426287</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-16 15:53:53 -0700</bug_when>
    <thetext>Created attachment 426287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751395</commentid>
    <comment_count>9</comment_count>
      <attachid>426287</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-17 00:51:00 -0700</bug_when>
    <thetext>Comment on attachment 426287
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:11
&gt; +        support alternating A and B configurations between runs.
&gt; +        Add retry logic for &apos;sequential&apos; A/B testing.

Can we insert blank lines between different paragraphs? It&apos;s hard to read otherwise.

&gt; Websites/perf.webkit.org/init-database.sql:295
&gt; +    testgroup_repetition_type varchar(32) DEFAULT &apos;alternating&apos;,

Why isn&apos;t this enum?

&gt; Websites/perf.webkit.org/public/include/commit-sets-helpers.php:7
&gt; -function create_test_group_and_build_requests($db, $commit_sets, $task_id, $name, $author, $triggerable_id, $platform_id, $test_id, $repetition_count, $needs_notification) {
&gt; +function create_test_group_and_build_requests($db, $commit_sets, $task_id, $name, $author, $triggerable_id, $platform_id, $test_id, $repetition_count, $repetition_type, $needs_notification) {

Nit: We should put { in the new line we&apos;re at it.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:47
&gt; +        if (is_null($commit_set_id) || $requested_commit_set == $commit_set_id)
&gt; +            array_push($commit_sets, $requested_commit_set);

Hm... this logic is getting quite a bit complicated.
Maybe it&apos;s better if we just extracted helper functions and split to sequential case &amp; alternating case right away?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:51
&gt; +        if  (count($commit_sets) &amp;&amp; $is_sequential_type) {

Nit: Two spaces between if and (.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:66
&gt; +            $db-&gt;query(&apos;UPDATE build_requests SET request_order = request_order + &apos; . $incremental
&gt; +                . &apos; WHERE request_commit_set = $1&apos;, array($commit_set));

We can&apos;t use prepared statement like &apos;request_order + $1&apos;?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:90
&gt; +function insert_build_requests($db, $build_request, $order_overwrite) {

Nit: { on the next line.

&gt; Websites/perf.webkit.org/public/v3/components/test-group-form.js:92
&gt; +            &lt;label&gt;iterations per set in&lt;/label&gt;
&gt; +            &lt;select id=&quot;repetition-type&quot;&gt;
&gt; +                &lt;option selected&gt;alternating&lt;/option&gt;
&gt; +                &lt;option&gt;sequential&lt;/option&gt;
&gt; +            &lt;/select&gt;
&gt; +            &lt;label&gt;mode&lt;/label&gt;
&gt; +            &lt;label id=&quot;repetition-type-explanation&quot;&gt;(e.g. ABABAB)&lt;/label&gt;

Again, this is quite verbose. I think we can just do:
&lt;label&gt;iterations per set in&lt;/label&gt;
&lt;select id=&quot;repetition-type&quot;&gt;
    &lt;option selected&gt;alternate (ABAB)&lt;/option&gt;
    &lt;option&gt;sequence (AABB)&lt;/option&gt;
&lt;/select&gt;

&gt; Websites/perf.webkit.org/public/v3/models/build-request.js:-34
&gt; -        console.assert(this._order == object.order);

I guess can we still assert that this._order &lt;= object.order?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:99
&gt; +    hasRetry()

Nit: hasRetries*

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:140
&gt; +    _deferSchedulingRequest(buildRequest)

I&apos;d prefer if this function name said why we may defer it.
e.g. _shouldDeferSequentialTestingRequestWithNewCommitSet(~)

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:146
&gt; +        if (testGroup.repetitionType() !== &apos;sequential&apos;)

Just use !=.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:151
&gt; +        if (buildRequestIndex &lt;= 0)

This can&apos;t be negative as that would mean that buildRequest isn&apos;t in orderedBuildRequests.
We should assert that instead.
Then this condition becomes !buildRequestIndex

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:159
&gt; +        const buildRequestBeforeCurrent = orderedBuildRequests[buildRequestIndex - 1];
&gt; +        if (buildRequestBeforeCurrent.isBuild())
&gt; +            return false;
&gt; +
&gt; +        if (buildRequestBeforeCurrent.commitSet() === buildRequest.commitSet())
&gt; +            return false;

This is a very round about way of checking whether this request is the first one in the group of build requests for a given commit set.
We can simply check this:
const isFirstTestRequestForCommitSet = testGroup.requestsForCommitSet(buildRequest.commitSet()).find((request) =&gt; !request.isBuild()) == request;
Then we don&apos;t even need to make testGroup.orderedBuildRequests a public method.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:162
&gt; +        return testGroup.initialRepetitionCount() &gt; testGroup.requestsForCommitSet(buildRequestBeforeCurrent.commitSet())
&gt; +            .filter(request =&gt; request.isTest() &amp;&amp; request.hasCompleted()).length;

I&apos;m a bit confused here. Didn&apos;t we say we want to do retires first before trying the second configuration?

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:-223
&gt; -

This seems like an unrelated change?

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:273
&gt; -    _scheduleRequestIfWorkerIsAvailable(nextRequest, requestsInGroup, syncer, workerName)
&gt; +    async _scheduleRequestIfWorkerIsAvailable(nextRequest, requestsInGroup, syncer, workerName)

Why are we making this async? We&apos;re not using await anywhere here.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:9
&gt;              continue;

Huh, I never caught this but it&apos;s very strange that this is a standalone module file.
Why isn&apos;t this a part of TestGroup?

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:13
&gt; +        switch(testGroup.repetitionType()) {
&gt; +            case &apos;alternating&apos;:

This is very verbose. I think it&apos;s better to do:
console.assert([&apos;alternating&apos;, &apos;sequential&apos;].includes(testGroup.repetitionType());
if (testGroup.repetitionType() == &apos;alternating&apos;)
    await ~
else
    await ~

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:20
&gt; +                console.assert(false, &apos;InvalidRepetitionType&apos;)

Missing a semicolon at the end.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:37
&gt; +        hasCompletedBuildRequestForEachCommitSet &amp;= (completedBuildRequestCount &gt; 0);

Oh man, we should be using &amp;&amp;= instead. This is bitwise AND.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:69
&gt; +    console.assert(Array.from(testGroup.requestedCommitSets()).every((commitSet, index, list) =&gt;
&gt; +        !index || Math.min(...(testGroup.requestsForCommitSet(list[index - 1]).map(buildRequest =&gt; buildRequest.order())))
&gt; +        &lt; Math.min(...(testGroup.requestsForCommitSet(commitSet).map(buildRequest =&gt; buildRequest.order())))
&gt; +    ));

This assertion is impossible to decipher at glance &amp; also incredibly conservative.
Since testGroup.requestsForCommitSet sorts all requests via order, it&apos;s sufficient to check this instead:
const lastItem = (array) =&gt; array[array.length - 1];
console.assert(testGroup.requestedCommitSets().every(currentSet, index, setList) =&gt;
    !index || lastItem(testGroup.requestsForCommitSet(setList[index - 1])).order() &lt; testGroup.requestsForCommitSet(currentSet)[0].order());

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:70
&gt; +    const firstCommitSetToRetry = testGroup.requestedCommitSets().find(commitSet =&gt; {

This variable / find result is very confusing.
Despite of the fact this variable claims that this is the commit set to retry,
we may also find a commit set which is about to exceed the maximum retries.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:78
&gt; +        const unfinishedBuildRequestCount = buildRequests.filter((buildRequest) =&gt; !buildRequest.hasFinished()).length;
&gt; +        const potentiallySuccessfulCount = completedBuildRequestCount + unfinishedBuildRequestCount;
&gt; +        missingBuildRequestCount = testGroup.initialRepetitionCount() - potentiallySuccessfulCount;

This is some funky math here, which is something we can share between two versions of the function.
I think we should extract this as a helper method on TestGroup.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:90
&gt; +    if (willExceedMaximumRetry)
&gt; +        await testGroup.cancelPendingRequests();

This doesn&apos;t look right.

We shouldn&apos;t stop running the rest of the test group just because one of the configurations may exceed the maximum retry.
What we had discussed is canceling the rest if all requests had failed.

If we had requested 8, and the maximum retry factor was 2, and we eventually tried 16 but only got 7 successful runs,
we probably still want to go ahead with the rest of testing. It would be infuriating if we canceled the rest of testing
when the failure rate is so high as to hit the max retry limit in the first place.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:91
&gt; +    else if(!firstCommitSetToRetry)

Nit: missing space between if and (.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751744</commentid>
    <comment_count>10</comment_count>
      <attachid>426409</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-19 05:42:10 -0700</bug_when>
    <thetext>Created attachment 426409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751745</commentid>
    <comment_count>11</comment_count>
      <attachid>426287</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-19 05:42:42 -0700</bug_when>
    <thetext>Comment on attachment 426287
Patch

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

&gt;&gt; Websites/perf.webkit.org/init-database.sql:295
&gt;&gt; +    testgroup_repetition_type varchar(32) DEFAULT &apos;alternating&apos;,
&gt; 
&gt; Why isn&apos;t this enum?

I think the main reason to not using enum is adding new type to enum will require recreating the enum table.

&gt;&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:66
&gt;&gt; +                . &apos; WHERE request_commit_set = $1&apos;, array($commit_set));
&gt; 
&gt; We can&apos;t use prepared statement like &apos;request_order + $1&apos;?

Actually we can, I will update this part.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/build-request.js:-34
&gt;&gt; -        console.assert(this._order == object.order);
&gt; 
&gt; I guess can we still assert that this._order &lt;= object.order?

OK.

&gt;&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:159
&gt;&gt; +            return false;
&gt; 
&gt; This is a very round about way of checking whether this request is the first one in the group of build requests for a given commit set.
&gt; We can simply check this:
&gt; const isFirstTestRequestForCommitSet = testGroup.requestsForCommitSet(buildRequest.commitSet()).find((request) =&gt; !request.isBuild()) == request;
&gt; Then we don&apos;t even need to make testGroup.orderedBuildRequests a public method.

I&apos;m trying to avoid adding the assumption that we only have two configurations in an A/B test. It can be A/B/C test.

&gt;&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:162
&gt;&gt; +            .filter(request =&gt; request.isTest() &amp;&amp; request.hasCompleted()).length;
&gt; 
&gt; I&apos;m a bit confused here. Didn&apos;t we say we want to do retires first before trying the second configuration?

Yes, the function returns whether we would like to defer the request, so if  the user initially scheduled is greater than completed build request from previous configuration (does not meet user expectation), we should defer and wait for retry.

&gt;&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:273
&gt;&gt; +    async _scheduleRequestIfWorkerIsAvailable(nextRequest, requestsInGroup, syncer, workerName)
&gt; 
&gt; Why are we making this async? We&apos;re not using await anywhere here.

Will fix this.

&gt;&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:9
&gt;&gt;              continue;
&gt; 
&gt; Huh, I never caught this but it&apos;s very strange that this is a standalone module file.
&gt; Why isn&apos;t this a part of TestGroup?

The reason we did this is because there could be multiple retry strategies for a test group.

&gt;&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:13
&gt;&gt; +            case &apos;alternating&apos;:
&gt; 
&gt; This is very verbose. I think it&apos;s better to do:
&gt; console.assert([&apos;alternating&apos;, &apos;sequential&apos;].includes(testGroup.repetitionType());
&gt; if (testGroup.repetitionType() == &apos;alternating&apos;)
&gt;     await ~
&gt; else
&gt;     await ~

I think that&apos;s one comment from your last review.
&quot;Can we use a switch and assert that we don&apos;t hit the the default? &quot;
I think using `if else` might be cleaner because so far we only have two types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752124</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-19 20:49:02 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #11)
&gt; Comment on attachment 426287 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426287&amp;action=review
&gt; 
&gt; &gt;&gt; Websites/perf.webkit.org/init-database.sql:295
&gt; &gt;&gt; +    testgroup_repetition_type varchar(32) DEFAULT &apos;alternating&apos;,
&gt; &gt; 
&gt; &gt; Why isn&apos;t this enum?
&gt; 
&gt; I think the main reason to not using enum is adding new type to enum will
&gt; require recreating the enum table.

That is not a good reason to avoid using enum. Note that if you&apos;re referring to the inability to add a new value to enum, that has become possible since Postgres 9.1:
https://www.postgresql.org/docs/9.1/sql-altertype.html

&gt; &gt;&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:159
&gt; &gt;&gt; +            return false;
&gt; &gt; 
&gt; &gt; This is a very round about way of checking whether this request is the first one in the group of build requests for a given commit set.
&gt; &gt; We can simply check this:
&gt; &gt; const isFirstTestRequestForCommitSet = testGroup.requestsForCommitSet(buildRequest.commitSet()).find((request) =&gt; !request.isBuild()) == request;
&gt; &gt; Then we don&apos;t even need to make testGroup.orderedBuildRequests a public method.
&gt; 
&gt; I&apos;m trying to avoid adding the assumption that we only have two
&gt; configurations in an A/B test. It can be A/B/C test.

I don&apos;t understand. Even if we had A/B/C configurations, it&apos;s still sufficient to check whether this is the first of its kind or not.

&gt; &gt;&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:9
&gt; &gt;&gt;              continue;
&gt; &gt; 
&gt; &gt; Huh, I never caught this but it&apos;s very strange that this is a standalone module file.
&gt; &gt; Why isn&apos;t this a part of TestGroup?
&gt; 
&gt; The reason we did this is because there could be multiple retry strategies
&gt; for a test group.

But we never did, right? I don&apos;t think it makes to keep that kind of extra verboseness just in the case we may add it in the future. There is virtually no benefit until such a need comes up. As is, the way we&apos;ve structured the code is making it harder to understand the codebase as a whole.

&gt; &gt;&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:13
&gt; &gt;&gt; +            case &apos;alternating&apos;:
&gt; &gt; 
&gt; &gt; This is very verbose. I think it&apos;s better to do:
&gt; &gt; console.assert([&apos;alternating&apos;, &apos;sequential&apos;].includes(testGroup.repetitionType());
&gt; &gt; if (testGroup.repetitionType() == &apos;alternating&apos;)
&gt; &gt;     await ~
&gt; &gt; else
&gt; &gt;     await ~
&gt; 
&gt; I think that&apos;s one comment from your last review.
&gt; &quot;Can we use a switch and assert that we don&apos;t hit the the default? &quot;
&gt; I think using `if else` might be cleaner because so far we only have two
&gt; types.

Oh oops, sorry. I guess I didn&apos;t think of the implication there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752183</commentid>
    <comment_count>13</comment_count>
      <attachid>426409</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-20 02:15:59 -0700</bug_when>
    <thetext>Comment on attachment 426409
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:15
&gt; +        Add retry logic for &apos;sequential&apos; A/B testing and vove retry logic into syncing script so that retry can be

Nit: vove??

&gt; Websites/perf.webkit.org/ChangeLog:19
&gt; +        Fix a potential race in syncing script that &apos;Promise.all&apos; may cause test group not scheduled in order .

Nit: space between order and .

&gt; Websites/perf.webkit.org/init-database.sql:295
&gt; +    testgroup_repetition_type varchar(32) DEFAULT &apos;alternating&apos;,

We should enum as I mention above.

&gt; Websites/perf.webkit.org/public/include/commit-sets-helpers.php:27
&gt; +    } else {
&gt; +        for ($i = 0; $i &lt; $repetition_count; $i++) {

We should assert that $repetition_type is alternating here.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:33
&gt; +    $is_sequential_type = $test_group[&apos;testgroup_repetition_type&apos;] == &apos;sequential&apos;;

Please assert that testgroup_repetition_type is either alternating or sequential.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:43
&gt; +function add_build_request_for_sequential_test_group($db, $build_requests, $add_count, $commit_set_id)
&gt; +{

Please flip the order in which functions are defined so that the diff will look saner.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:48
&gt; -    foreach ($existing_build_requests as $build_request) {
&gt; +    foreach ($build_requests as $build_request) {

Why are we renaming this? They&apos;re clearly existing build requests.
It&apos;s important for clarify since this whole function is about adding new ones.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:56
&gt; +        if (is_null($commit_set_id) || $requested_commit_set == $commit_set_id)

Just check !$commit_set_id || $requested_commit_set == $commit_set_id

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:59
&gt;          $build_request_by_commit_set[$requested_commit_set] = $build_request;

So the only reason have this dictionary is to get the order of the last build request.
It&apos;s very confusing / misleadingly generic to have this &amp; order_incremental_by_commit_set.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:61
&gt; +        if (count($commit_sets)) {

Just do: if ($commit_sets)

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:63
&gt; +            $order_incremental_by_commit_set[$requested_commit_set] = $current_order_incremental;
&gt; +            $current_order_incremental += $add_count;

This whole incremental thing is rather confusing.
Logically, each build request could only move by the number of build requests added before it.
But that could be either $add_count or $add_count * (the position of $commit_set in $commit_sets).

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:75
&gt; +        $db-&gt;query(&apos;UPDATE build_requests SET request_order = request_order + $1 WHERE request_commit_set = $2&apos;,
&gt; +            array($incremental, $commit_set));

It&apos;s not safe to assume that request_commit_set will uniquely identify a test group. Please specify the group.
This also looks wrong. Because we have a unique constraint on (request_group, request_order),
this will fail if commit_set_id wasn&apos;t set so that we&apos;d try to add more build requests to every commit set
since then request_order will start overlapping with later build requests.
r- because of this bug. I guess we don&apos;t have any tests for this case?

I suggest we rewrite this so that we iterate over all commits sets in the reverse order,
and update build requests for each commit set (and test group).

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:106
&gt; +    if (!is_null($commit_set_id) &amp;&amp; !count($commit_sets))
&gt; +        exit_with_error(&apos;CommitSetNotInTestGroup&apos;, array(&apos;commitSet&apos; =&gt; $commit_set_id));

The first check for commit_set_id is redundant since we never use the value of commit_set_id.

&gt; Websites/perf.webkit.org/public/v3/components/test-group-form.js:74
&gt; +                &lt;option selected value=&quot;alternating&quot;&gt;alternating (ABAB)&lt;/option&gt;
&gt; +                &lt;option value=&quot;sequential&quot;&gt;sequential (AABB)&lt;/option&gt;

This should be nouns: &quot;alternative&quot; and &quot;sequence&quot;, not adjectives.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:113
&gt; +        const buildRequests = this.requestsForCommitSet(commitSet).filter((buildRequest) =&gt; buildRequest.isTest());
&gt; +        const completedBuildRequestCount = buildRequests.filter((buildRequest) =&gt; buildRequest.hasCompleted()).length;
&gt; +        const unfinishedBuildRequestCount = buildRequests.filter((buildRequest) =&gt; !buildRequest.hasFinished()).length;

This is very inefficient way of counting these two values. I think we should just loop over this._buildRequests like this:
for (const request of this._buildRequests) {
    if (request.commitSet() != commitSet || !request.isTest())
        continue;
    completedBuildRequestCount += request.hasCompleted();
    unfinishedBuildRequestCount += buildRequest.hasFinished();
}

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:276
&gt; -    static createWithTask(taskName, platform, test, groupName, repetitionCount, commitSets, notifyOnCompletion)
&gt; +    static async createWithTask(taskName, platform, test, groupName, repetitionCount, commitSets, notifyOnCompletion, repetitionType)

For consistency, let&apos;s add repetitionType to right after repetitionCount.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:281
&gt; +        const params = {taskName, name: groupName, platform: platform.id(), test: test.id(), repetitionCount,
&gt; +            revisionSets, repetitionType, needsNotification: !!notifyOnCompletion};

It seems like we can just inline params to the function call of PrivilegedAPI.sendRequest now?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:288
&gt; -    static createWithCustomConfiguration(task, platform, test, groupName, repetitionCount, commitSets, notifyOnCompletion)
&gt; +    static async createWithCustomConfiguration(task, platform, test, groupName, repetitionCount, commitSets, notifyOnCompletion, repetitionType)

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:294
&gt; +        const data = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;, params);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:295
&gt; +        return await this.fetchForTask(data[&apos;taskId&apos;], true);

It seems like we can just use fetchById now? create-test-group returns testGroupId too.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:298
&gt; -    static createAndRefetchTestGroups(task, name, repetitionCount, commitSets, notifyOnCompletion)
&gt; +    static async createAndRefetchTestGroups(task, name, repetitionCount, commitSets, notifyOnCompletion, repetitionType)

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:306
&gt; +        return await this.fetchForTask(data[&apos;taskId&apos;], true);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:314
&gt; +    static async fetchById(testGroupId, ignoreCache=false)

Nit: space around =. Also, we should also call the first argument id.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:317
&gt; +        return this._createModelsFromFetchedTestGroups(data)[0];

This works but I think our preferred way of writing is this:
return TestGroup.findById(testGroupId).

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:28
&gt; +        this.part(&apos;form&apos;).listenToAction(&apos;startTesting&apos;, (repetitionCount, name, commitSetMap, notifyOnCompletion, repetitionType) =&gt; {
&gt; +            this.dispatchAction(&apos;newTestGroup&apos;, name, repetitionCount, commitSetMap, notifyOnCompletion, repetitionType);

Again, we should reorder two that repetitionType appears right after repetitionCount for consistency.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:110
&gt; +        this.part(&apos;form&apos;).listenToAction(&apos;startTesting&apos;, (repetitionCount, name, commitSetMap, notifyOnCompletion, repetitionType) =&gt; {
&gt; +            this.dispatchAction(&apos;newTestGroup&apos;, name, repetitionCount, commitSetMap, notifyOnCompletion, repetitionType);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:271
&gt; +        this.part(&apos;retry-form&apos;).listenToAction(&apos;startTesting&apos;, (repetitionCount, notifyOnCompletion, repetitionType) =&gt; {
&gt; +            this.dispatchAction(&apos;retryTestGroup&apos;, this._currentTestGroup, repetitionCount, notifyOnCompletion, repetitionType);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:273
&gt; -        this.part(&apos;bisect-form&apos;).listenToAction(&apos;startTesting&apos;, (repetitionCount, notifyOnCompletion) =&gt; {
&gt; +        this.part(&apos;bisect-form&apos;).listenToAction(&apos;startTesting&apos;, (repetitionCount, notifyOnCompletion, repetitionType) =&gt; {

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:384
&gt; +            if (currentGroup.hasRetries()) {
&gt; +                statusSummary = this.createElement(&apos;div&apos;, {id: &apos;status-summary&apos;, class: &apos;summary&apos;},
&gt; +                    this._summarizedTestGroup(currentGroup));
&gt; +            }

This is very confusing. This function is really about summarizing retries.
We should be re-using the element in the DOM and simply calling renderReplace on this.content(&apos;status-summary&apos;).
The element should probably be renamed to retry-summary.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:388
&gt; +                `Scheduled ${authoredBy}at ${currentGroup.createdAt()}`);

Nit: Missing space between ${authoredBy} and at. The original code was better for that reason.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:391
&gt; +            hideButton = this.createElement(&apos;button&apos;, {&apos;id&apos;: &apos;hide-button&apos;},
&gt; +                currentGroup.isHidden() ? &apos;Unhide&apos; : &apos;Hide&apos;);

Again, we shouldn&apos;t be re-constructing button every single time.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:406
&gt; +        this.renderReplace(this.content(&apos;test-group-details&apos;), [
&gt; +            this.content(&apos;results-viewer&apos;), this.content(&apos;revision-table&apos;), statusSummary, requestSummary,
&gt; +            retryForm, bisectForm, hideButton, pendingRequestCancelWarning
&gt; +        ].filter(element =&gt; !!element));

Ugh... this will re-generate the entire DOM. I don&apos;t think we should do that.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:418
&gt; +                testGroup.repetitionCountForCommitSet(commitSet) - testGroup.initialRepetitionCount());

Why are we re-computing retry count here??
Just call testGroup.retryCountForCommitSet.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:419
&gt; +            currentLabel = String.fromCharCode(currentLabel.charCodeAt(0) + 1);

Use testGroup.labelForCommitSet instead.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:422
&gt; +        const retryCountsAreIdentical = testGroup.requestedCommitSets().every((commitSet) =&gt;
&gt; +            retryCountByLabel.get(commitSet) === retryCountByLabel.get(currentLabel));

It seems like this should really be a helper function on TestGroup.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:426
&gt; +        if (retryCountsAreIdentical)
&gt; +            return `${testGroup.initialRepetitionCount()} requested,
&gt; +                ${retryCountByLabel.get(currentLabel)} added due to failures.`;

Two line statements like these require curly braces: { ~ }
Since testGroup.initialRepetitionCount() is used many times in this function,
we might as well as just store in a local variable instead so that this whole thing fits in a single line.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:435
&gt; +        const retrySummary = retrySummaryParts.length === 1 ? retrySummaryParts[0] :
&gt; +            `${retrySummaryParts.slice(0, -1).join(&apos;, &apos;)} and ${retrySummaryParts[retrySummaryParts.length - 1]}`;

Use new Intl.ListFormat(&apos;en&apos;, {style:&apos;long&apos;, type:&apos;conjunction&apos;}).format(~)?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:917
&gt; -    _createTestGroupAfterVerifyingCommitSetList(testGroupName, repetitionCount, commitSetMap, notifyOnCompletion)
&gt; +    _createTestGroupAfterVerifyingCommitSetList(testGroupName, repetitionCount, commitSetMap, notifyOnCompletion, repetitionType)

Maybe make this function async as well?

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:111
&gt; +        this._repetitionType = &apos;alternating&apos;;

Looks like this variable is never used now? So maybe remove it?

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:131
&gt; +        repetitionType.onchange = () =&gt; this._repetitionType = repetitionType.value;

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:602
&gt; +                                &lt;option value=&quot;alternating&quot; selected&gt;alternating (ABAB)&lt;/option&gt;
&gt; +                                &lt;option value=&quot;sequential&quot;&gt;sequential (AABB)&lt;/option&gt;

Again, this should read &quot;In alternate (ABAB)&quot; / &quot;In sequence (AABB)&quot;

&gt; Websites/perf.webkit.org/public/v3/pages/create-analysis-task-page.js:25
&gt; -    _createAnalysisTaskWithGroup(repetitionCount, testGroupName, commitSets, platform, test, taskName, notifyOnCompletion)
&gt; +    async _createAnalysisTaskWithGroup(repetitionCount, testGroupName, commitSets, platform, test, taskName, notifyOnCompletion, repetitionType)

Ditto about putting repetitionType right after repetitionCount.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:570
&gt; +    it(&apos;should still return build requests associated with a given triggerable when test group has all build requests finished with &quot;mayNeedMoreRequest&quot; flag to be trues&apos;, () =&gt; {
&gt; +        return MockData.addMockData(TestServer.database(), [&apos;completed&apos;, &apos;completed&apos;, &apos;completed&apos;, &apos;failed&apos;], true, null, null, &apos;alternating&apos;, true).then(() =&gt; {

Use async?

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:578
&gt; +            assert.deepStrictEqual(content[&apos;commitSets&apos;][0].revisionItems,
&gt; +                [{commit: &apos;87832&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null}, {commit: &apos;93116&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null}]);

Please insert another line break in this long line.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:581
&gt; +            assert.deepStrictEqual(content[&apos;commitSets&apos;][1].revisionItems,
&gt; +                [{commit: &apos;87832&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null}, {commit: &apos;96336&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null}]);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:149
&gt; +        for (const commitSet of group.requestedCommitSets())
&gt; +            assert.strictEqual(parseInt(group.repetitionCountForCommitSet(commitSet)), 2);

Just use + here. parseInt is overly permissive (like atoi, it would ignore trailing non-digit characters).

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:157
&gt; +        for (const commitSet of updatedGroups[0].requestedCommitSets())
&gt; +            assert.strictEqual(parseInt(updatedGroups[0].repetitionCountForCommitSet(commitSet)), 4);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:181
&gt; +        for (const commitSet of group.requestedCommitSets())
&gt; +            assert.strictEqual(parseInt(group.repetitionCountForCommitSet(commitSet)), 2);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:192
&gt; +        let result = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;,

const?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:198
&gt; +        const testGroups = await TestGroup.fetchForTask(result[&apos;taskId&apos;], true);

Please add /* noCache */ or define a local variable like const noCache = true, to make it clear what this true is.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:203
&gt; +        assert.strictEqual(parseInt(group.initialRepetitionCount()), 2);

Ditto about using + and the rest of tests.
We should also assert that the repetition type retuned by the server is &quot;sequential&quot;

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:205
&gt; +        for (const commitSet of group.requestedCommitSets())
&gt; +            assert.strictEqual(parseInt(group.repetitionCountForCommitSet(commitSet)), 2);

We should also assert that requestedCommitSets().length is 2.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:207
&gt; +        const commitSet = testGroups[0].requestedCommitSets()[1].id();

Add assertions for order.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:211
&gt; +        const updatedGroups = await TestGroup.fetchForTask(result[&apos;taskId&apos;], true);

Ditto about true.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:215
&gt; +        const firstCommitSet = updatedGroups[0].requestedCommitSets()[0];

Need an assert for the length of commit sets here as well.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:221
&gt; +        assert.strictEqual(buildRequestsForSecondCommitSet.length, 4);

Ditto about needing tests for order.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:224
&gt; +    it(&apos;should add build requests right after requests with same commit set for sequential test group&apos;, async () =&gt; {

This is very wordy. How about this:
it should be able to build requests for a specific commit set in a sequential test group.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:230
&gt; +            {name: &apos;test&apos;, taskName: &apos;other task&apos;, platform: MockData.somePlatformId(), repetitionCount: 2,
&gt; +                test: MockData.someTestId(), needsNotification: false, repetitionType: &apos;sequential&apos;, revisionSets});

I don&apos;t think we should be nesting the indentation here.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:237
&gt; +        assert.strictEqual(parseInt(group.initialRepetitionCount()), 2);

Use + here too. But we should also assert that the repetition type is &quot;sequential&quot;.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:239
&gt; +            assert.strictEqual(parseInt(group.repetitionCountForCommitSet(commitSet)), 2);

We need to assert order here as well as the number of distinct commit sets.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:251
&gt; +        assert.strictEqual(buildRequestsForFirstCommitSet[3].order(), 3)

We probably want to check all the orders here.
We should also make sure build requests kept the same IDs &amp; retained the original sorting order
e.g. 1st build request for a commit set didn&apos;t become 3rd, etc...
So just store the build request IDs early, and then assert that they&apos;re in the same order here.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:260
&gt; +    it(&apos;should not shift request order if adding build request to commit set representing last configuration in sequential test group&apos;, async () =&gt; {

Hm... what&apos;s important here is the fact the order of the first configuration so I&apos;d rephrase it like this:
it should not modify the order of preceding build requests when adding new build requests in a sequential test group

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:264
&gt; +        let result = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;,

const?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:266
&gt; +            {name: &apos;test&apos;, taskName: &apos;other task&apos;, platform: MockData.somePlatformId(), repetitionCount: 2,
&gt; +                test: MockData.someTestId(), needsNotification: false, repetitionType: &apos;sequential&apos;, revisionSets});

Wrong indentation again.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:269
&gt; +        const testGroups = await TestGroup.fetchForTask(result[&apos;taskId&apos;], true);

Ditto about noCache.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:274
&gt; +        for (const commitSet of group.requestedCommitSets())

Same thing about the number of distinct commit sets &amp; order.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:318
&gt; +        await assertThrows(&apos;CommitSetNotInTestGroup&apos;, () =&gt;
&gt; +            PrivilegedAPI.sendRequest(&apos;add-build-requests&apos;, {group: insertedGroupId, addCount: 2, commitSet}));

Maybe we need another test case for a sequential test group?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:341
&gt; +        await assertThrows(&apos;InvalidCommitSet&apos;, () =&gt;
&gt; +            PrivilegedAPI.sendRequest(&apos;add-build-requests&apos;, {group: insertedGroupId, addCount: 2, commitSet}));

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:686
&gt; +    it(&apos;should create an analysis task with test group with &quot;sequential&quot; mode when specified&apos;, async () =&gt; {

I think we can just say:
it should be able to create an analysis task with a sequential test group

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:694
&gt; +        await db.insert(&apos;tests&apos;, {id: 1, name: &apos;Suite&apos;});
&gt; +        await db.insert(&apos;tests&apos;, {id: test1Id, name: &apos;test1&apos;, parent: 1});

Do we really need two tests? It seems like one test will be enough?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:735
&gt; +        assert.ok(testGroup.needsNotification());

Check the repetition type &amp; repetition count here too?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:754
&gt; +    it(&apos;should reject with &quot;InvalidRepetitionType&quot; when test mode is neither &quot;alternating&quot; nor &quot;sequential&quot;&apos;, async () =&gt; {

Is &quot;test mode&quot; the old terminology we used?
We should be consistent and say the &quot;repetition type&quot;.
Also, I think this will read better: &quot;not &apos;alternating&apos; or &apos;sequential&apos;&quot;

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:757
&gt; +        const test1Id = 2;

Hm... maybe subTestId? &quot;test1&quot; is so non-descriptive.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:762
&gt; +        await db.insert(&apos;tests&apos;, {id: 1, name: &apos;Suite&apos;});
&gt; +        await db.insert(&apos;tests&apos;, {id: test1Id, name: &apos;test1&apos;, parent: 1});

Do we really need two tests? It seems like a single test will suffice for this test??

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:776
&gt; +        let test1 = Test.findById(test1Id);
&gt; +        let somePlatform = Platform.findById(platformId);

const?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:786
&gt; +        await assertThrows(&apos;InvalidRepetitionType&apos;, () =&gt;
&gt; +            PrivilegedAPI.sendRequest(&apos;create-analysis-task&apos;, {name: &apos;confirm&apos;, repetitionCount: 2,
&gt; +                testGroupName: &apos;Confirm&apos;, revisionSets: [oneRevisionSet, anotherRevisionSet], repetitionType: &apos;invalid-mode&apos;,
&gt; +                startRun: testRuns[0][&apos;id&apos;], endRun: testRuns[1][&apos;id&apos;], needsNotification: true}));

These multiple line statements need { ~ }

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1342
&gt; +    it(&apos;should create a test group with an analysis task with &quot;sequential&quot; mode&apos;, async () =&gt; {

just say: should create a sequential test group with an analysis task

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1357
&gt; +        assert.strictEqual(group.initialRepetitionCount(), 2);

Check the repetition type.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1367
&gt; +        assert(requests[0].commitSet().equals(requests[1].commitSet()));

Let&apos;s first assert that the number of distinct commit sets is 2.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1380
&gt; +    it(&apos;should reject with &quot;InvalidMode&quot; if test mode is neither &quot;alternating&quot; nor &quot;sequential&quot;&apos;, async () =&gt; {

Ditto about the test name.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:280
&gt; +    it(&apos;should cancel a test group with &quot;may_need_more_requests&quot; flag cleared&apos;, async () =&gt; {

I think it would be better to say:
should be able to cancel a test group and the &quot;may need more requests&quot; flag

There is no reason to put the exact database column name in the description.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:285
&gt; +        const result = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;,
&gt; +            {name: &apos;test&apos;, taskName: &apos;other task&apos;, platform: MockData.somePlatformId(), test: MockData.someTestId(), needsNotification: false, revisionSets});

Should we add another test case for a sequential test group?

&gt; Websites/perf.webkit.org/server-tests/resources/mock-data.js:67
&gt; +    addMockData: function (db, statusList, needsNotification = true, urlList = null, commitSetList = null, repetitionType=&apos;alternating&apos;, mayNeedMoreRequests=false)

Haha, you fixed the existing code but then forgot to add spaces around = in the new arguments :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752187</commentid>
    <comment_count>14</comment_count>
      <attachid>426409</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-20 02:25:15 -0700</bug_when>
    <thetext>Comment on attachment 426409
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:75
&gt;&gt; +            array($incremental, $commit_set));
&gt; 
&gt; It&apos;s not safe to assume that request_commit_set will uniquely identify a test group. Please specify the group.
&gt; This also looks wrong. Because we have a unique constraint on (request_group, request_order),
&gt; this will fail if commit_set_id wasn&apos;t set so that we&apos;d try to add more build requests to every commit set
&gt; since then request_order will start overlapping with later build requests.
&gt; r- because of this bug. I guess we don&apos;t have any tests for this case?
&gt; 
&gt; I suggest we rewrite this so that we iterate over all commits sets in the reverse order,
&gt; and update build requests for each commit set (and test group).

Oh, I know why we don&apos;t have a test for this. It&apos;s because this bug will only manifest when there are more than two commit sets involved.
e.g. Say we have AABBCC, and want to add AA.
We&apos;d have to adjust the orders of BB and CC but the adjusted orders of BB will overlap with that of CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752190</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-20 02:28:40 -0700</bug_when>
    <thetext>I think r- is still right given there are many changes we want to make before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753996</commentid>
    <comment_count>16</comment_count>
      <attachid>426409</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-25 05:15:07 -0700</bug_when>
    <thetext>Comment on attachment 426409
Patch

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

&gt;&gt; Websites/perf.webkit.org/ChangeLog:15
&gt;&gt; +        Add retry logic for &apos;sequential&apos; A/B testing and vove retry logic into syncing script so that retry can be
&gt; 
&gt; Nit: vove??

I meant &apos;move&apos;.

&gt;&gt; Websites/perf.webkit.org/init-database.sql:295
&gt;&gt; +    testgroup_repetition_type varchar(32) DEFAULT &apos;alternating&apos;,
&gt; 
&gt; We should enum as I mention above.

Will do

&gt;&gt;&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:75
&gt;&gt;&gt; +            array($incremental, $commit_set));
&gt;&gt; 
&gt;&gt; It&apos;s not safe to assume that request_commit_set will uniquely identify a test group. Please specify the group.
&gt;&gt; This also looks wrong. Because we have a unique constraint on (request_group, request_order),
&gt;&gt; this will fail if commit_set_id wasn&apos;t set so that we&apos;d try to add more build requests to every commit set
&gt;&gt; since then request_order will start overlapping with later build requests.
&gt;&gt; r- because of this bug. I guess we don&apos;t have any tests for this case?
&gt;&gt; 
&gt;&gt; I suggest we rewrite this so that we iterate over all commits sets in the reverse order,
&gt;&gt; and update build requests for each commit set (and test group).
&gt; 
&gt; Oh, I know why we don&apos;t have a test for this. It&apos;s because this bug will only manifest when there are more than two commit sets involved.
&gt; e.g. Say we have AABBCC, and want to add AA.
&gt; We&apos;d have to adjust the orders of BB and CC but the adjusted orders of BB will overlap with that of CC.

Nice catch, will fix this and add unit tests for it.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:295
&gt;&gt; +        return await this.fetchForTask(data[&apos;taskId&apos;], true);
&gt; 
&gt; It seems like we can just use fetchById now? create-test-group returns testGroupId too.

Maybe we can, we will need to
`return this.findAllByTask(data[&apos;taskId&apos;])`
afterwards, because we expect test groups under current analysis task on the place we use it.

One thing that I&apos;m kind afraid is that the code doesn&apos;t guarantee that all test groups under this task are fetched already. So far, the usage of this API is in the UI page, we shouldn&apos;t have this issue.

&gt;&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:418
&gt;&gt; +                testGroup.repetitionCountForCommitSet(commitSet) - testGroup.initialRepetitionCount());
&gt; 
&gt; Why are we re-computing retry count here??
&gt; Just call testGroup.retryCountForCommitSet.

`retryCountForCommitSet` is an ambiguous name, I will rename it to `retryToAddForCommitSet`, which is the retry count we will add.
The retryCount here means the number of retries we scheduled already.

&gt;&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:435
&gt;&gt; +            `${retrySummaryParts.slice(0, -1).join(&apos;, &apos;)} and ${retrySummaryParts[retrySummaryParts.length - 1]}`;
&gt; 
&gt; Use new Intl.ListFormat(&apos;en&apos;, {style:&apos;long&apos;, type:&apos;conjunction&apos;}).format(~)?
&gt; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat

It would be nice to use this. However, the page says Safari hasn&apos;t supported it yet.

&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:318
&gt;&gt; +            PrivilegedAPI.sendRequest(&apos;add-build-requests&apos;, {group: insertedGroupId, addCount: 2, commitSet}));
&gt; 
&gt; Maybe we need another test case for a sequential test group?

If we don&apos;t support adding build requests for a specific commit set in alternating test group, then this should be sequential test group only.

&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:694
&gt;&gt; +        await db.insert(&apos;tests&apos;, {id: test1Id, name: &apos;test1&apos;, parent: 1});
&gt; 
&gt; Do we really need two tests? It seems like one test will be enough?

I think

&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:762
&gt;&gt; +        await db.insert(&apos;tests&apos;, {id: test1Id, name: &apos;test1&apos;, parent: 1});
&gt; 
&gt; Do we really need two tests? It seems like a single test will suffice for this test??

Those will be created anyway by submitting reportWithRevision and anotherReportWithRevision.

&gt;&gt; Websites/perf.webkit.org/server-tests/resources/mock-data.js:67
&gt;&gt; +    addMockData: function (db, statusList, needsNotification = true, urlList = null, commitSetList = null, repetitionType=&apos;alternating&apos;, mayNeedMoreRequests=false)
&gt; 
&gt; Haha, you fixed the existing code but then forgot to add spaces around = in the new arguments :)

lol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753997</commentid>
    <comment_count>17</comment_count>
      <attachid>427001</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-25 05:15:34 -0700</bug_when>
    <thetext>Created attachment 427001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753998</commentid>
    <comment_count>18</comment_count>
      <attachid>426409</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-25 05:17:42 -0700</bug_when>
    <thetext>Comment on attachment 426409
Patch

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

&gt;&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-analysis-task-tests.js:694
&gt;&gt;&gt; +        await db.insert(&apos;tests&apos;, {id: test1Id, name: &apos;test1&apos;, parent: 1});
&gt;&gt; 
&gt;&gt; Do we really need two tests? It seems like one test will be enough?
&gt; 
&gt; I think

Updated in new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755491</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-29 12:24:01 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #16)
&gt;
&gt; &gt;&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:435
&gt; &gt;&gt; +            `${retrySummaryParts.slice(0, -1).join(&apos;, &apos;)} and ${retrySummaryParts[retrySummaryParts.length - 1]}`;
&gt; &gt; 
&gt; &gt; Use new Intl.ListFormat(&apos;en&apos;, {style:&apos;long&apos;, type:&apos;conjunction&apos;}).format(~)?
&gt; &gt; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat
&gt; 
&gt; It would be nice to use this. However, the page says Safari hasn&apos;t supported
&gt; it yet.

We definitely do. We just blogged about it!
https://webkit.org/blog/11648/new-webkit-features-in-safari-14-1/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755497</commentid>
    <comment_count>20</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-29 12:41:24 -0700</bug_when>
    <thetext>That&apos;s nice! For backward compatibility, we will use it when it&apos;s available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755498</commentid>
    <comment_count>21</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-29 12:41:45 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #19)
&gt; (In reply to dewei_zhu from comment #16)
&gt; &gt;
&gt; &gt; &gt;&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:435
&gt; &gt; &gt;&gt; +            `${retrySummaryParts.slice(0, -1).join(&apos;, &apos;)} and ${retrySummaryParts[retrySummaryParts.length - 1]}`;
&gt; &gt; &gt; 
&gt; &gt; &gt; Use new Intl.ListFormat(&apos;en&apos;, {style:&apos;long&apos;, type:&apos;conjunction&apos;}).format(~)?
&gt; &gt; &gt; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat
&gt; &gt; 
&gt; &gt; It would be nice to use this. However, the page says Safari hasn&apos;t supported
&gt; &gt; it yet.
&gt; 
&gt; We definitely do. We just blogged about it!
&gt; https://webkit.org/blog/11648/new-webkit-features-in-safari-14-1/

That&apos;s nice! For backward compatibility, we will use it when it&apos;s available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755509</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-29 13:04:05 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #21)
&gt; (In reply to Ryosuke Niwa from comment #19)
&gt; &gt; (In reply to dewei_zhu from comment #16)
&gt; &gt; &gt;
&gt; &gt; &gt; &gt;&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:435
&gt; &gt; &gt; &gt;&gt; +            `${retrySummaryParts.slice(0, -1).join(&apos;, &apos;)} and ${retrySummaryParts[retrySummaryParts.length - 1]}`;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Use new Intl.ListFormat(&apos;en&apos;, {style:&apos;long&apos;, type:&apos;conjunction&apos;}).format(~)?
&gt; &gt; &gt; &gt; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat
&gt; &gt; &gt; 
&gt; &gt; &gt; It would be nice to use this. However, the page says Safari hasn&apos;t supported
&gt; &gt; &gt; it yet.
&gt; &gt; 
&gt; &gt; We definitely do. We just blogged about it!
&gt; &gt; https://webkit.org/blog/11648/new-webkit-features-in-safari-14-1/
&gt; 
&gt; That&apos;s nice! For backward compatibility, we will use it when it&apos;s available.

I don&apos;t think we need to maintain backward compatibility for that long. Historically, we only kept it until a stable release has shipped. Nobody who is using this website should really be using Safari older than 14.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755532</commentid>
    <comment_count>23</comment_count>
      <attachid>427001</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-29 14:39:03 -0700</bug_when>
    <thetext>Comment on attachment 427001
Patch

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

&gt; Websites/perf.webkit.org/browser-tests/test-group-form-tests.js:25
&gt; +    it(&apos;must dispatch &quot;startTesting&quot; action with the repetition type user selects on &quot;Start A/B testing&quot;&apos;, () =&gt; {

Use async?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:37
&gt; +        exit_with_error(&apos;ShouldNotSpecifyCommitSetForAlternatingRequest&apos;);

CommitSetNotSupportedForAlternatingRepetitionType?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:51
&gt; -    foreach ($existing_build_requests as $build_request) {
&gt; +    foreach ($build_requests as $build_request) {

Again, we shouldn&apos;t rename this variable! The fact these are existing build requests is quite significant.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:53
&gt;          if ($build_request[&apos;request_order&apos;] &lt; 0)
&gt;              continue;

It seems like we always skip build build-requests in all cases.
We should probably do that in &quot;main&quot; before calling these functions.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:62
&gt; -    for ($i = 0; $i &lt; $additional_build_request_count; $i++) {
&gt; +    for ($i = 0; $i &lt; $add_count; $i++) {

Ditto. Please stick to the more verbose form of $additional_build_request_count

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:71
&gt; +function add_build_request_for_sequential_test_group($db, $build_requests, $add_count, $commit_set_id, $test_group_id)

Please rename $add_count to $additional_build_request_count and $commit_set_id to something like $target_commit_set_id
Also, given $target_commit_set_id is an optional argument, it&apos;s good to put it at the end and add the default value in the argument list.
That would signify to the reader of this function that this argument is optional.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:73
&gt; +    $order_incremental_by_commit_set = array();

&quot;incremental&quot; is an adjective. I don&apos;t think we need a noun here: $order_increment_by_commit_set

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:74
&gt; +    $commit_sets = array();

Again, this variable needs to be more descriptive.
It seems like this contains the list of commit sets for which we&apos;re adding new build request.
But it&apos;s also confusing that such a thing exists when $target_commit_set is specified!

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:76
&gt; +    foreach ($build_requests as $build_request) {

This should be called $existing_build_requests.
Also we should probably call the latter variable $current_build_request to further differentiate from the whole list.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:79
&gt; +        $requested_commit_set = $build_request[&apos;request_commit_set&apos;];

It&apos;s very confusing to call this variable $requested_commit_set
given we also have $commit_set_id, which is used to add new build requests.
We should probably call this $commit_set_for_current_request instead.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:97
&gt; +    if (!$commit_sets)
&gt; +        exit_with_error(&apos;NoCommitSetInTestGroup&apos;);

This is a convoluted way of checking that when $target_commit_set_id isn&apos;t found in build_requests.
I think it&apos;s a lot clearer if the above loop was split into two separate functions.

The one for a specific commit set can be as simple as this:

$found_target = false;
foreach ($existing_build_requests as $current_build_request) {
    if ($build_request[&apos;request_order&apos;] &lt; 0) // This should be moved to main.
        continue;
    if ($current_build_request[&apos;request_commit_set&apos;] == $target_commit_set) {
        $found_target = true;
        break;
    }
}
if (!$found_target)
    exit_with_error(&apos;NoCommitSetInTestGroup&apos;);

$db-&gt;begin_transaction();
foreach (array_reverse($existing_build_requests, true) as $current_build_request) {
    if ($build_request[&apos;request_order&apos;] &lt; 0) // This should be moved to main.
        continue;
    if ($current_build_request[&apos;request_commit_set&apos;] == $target_commit_set) {
        for ($i = 0; $i &lt; $additional_build_request_count; $i++)
            duplicate_build_request_with_new_order($db, $current_build_request, $current_build_request[&apos;request_order&apos;] + $i + 1);
        break;
    } else {
        $db-&gt;query(&apos;UPDATE build_requests SET request_order = request_order + $1 WHERE request_id = $2&apos;,
            array($additional_build_request_count, $build_request[&apos;request_id&apos;]));
    }
}

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:117
&gt; +function insert_build_requests($db, $build_request, $order_overwrite)

This only adds a single build request so it&apos;s confusing to call it insert_build_request*s*.
Also, this thing takes an existing build request and simply overrides order so we should convey that in its name.
e.g. duplicate_build_request_with_new_order

&gt; Websites/perf.webkit.org/public/privileged-api/create-analysis-task.php:25
&gt; +        exit_with_error(&apos;InvalidRepetitionType&apos;, array(&apos;mode&apos; =&gt; $repetition_type));

This should say &apos;repetitionType&apos; =&gt; $repetition_type

&gt; Websites/perf.webkit.org/public/v3/components/test-group-form.js:27
&gt; +        const repetitionTypeSelect = this.content(&apos;repetition-type&apos;);
&gt; +        repetitionTypeSelect.onchange = () =&gt; this._repetitionType = repetitionTypeSelect.value;

Since this value is never used elsewhere, it&apos;s better to get it in startTesting()

&gt; Websites/perf.webkit.org/public/v3/components/test-group-form.js:73
&gt; +                &lt;option selected value=&quot;alternating&quot;&gt;alternative (ABAB)&lt;/option&gt;

in &quot;alterna*te*&quot;, not &quot;alterna*tive*&quot;

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:104
&gt; +    willExceedMaxRetryForCommitSetWithRetryCount(commitSet, retryCount, maxRetryFactor)

This is a very wordy function name.
Not being able to come up with a good function name is usually an indication that we have a bad abstraction.
Here, I think it would be better to compute the product of maxRetryFactor and this.initialRepetitionCount()
in the script script side and simply pass in retryCountLimit as an argument to other functions.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:109
&gt; +    retryToAddForCommitSet(commitSet)

I would call this something like additionalRepetitionNeededToReachInitialRepetitionCount

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:116
&gt; +    scheduledRetryCountForCommitSet(commitSet)

This is rather confusing name given BuildRequest has a statue value of &quot;scheduled&quot;.
This is really retryCountForCommitSet.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:121
&gt; +    scheduledRetryCountsAreIdentical()

Same issue here. Also, it&apos;s unclear they&apos;re identical across what.
Maybe retryCountsAreSameForAllCommitSets?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:127
&gt; +    async scheduleRetriesIfNecessary(maxRetryFactor)

Please add these functions right beneath create* functions.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:135
&gt; +        if (!this.mayNeedMoreRequests())
&gt; +            return 0;
&gt; +
&gt; +        if (this.isHidden()) {
&gt; +            await this.clearMayNeedMoreBuildRequests();
&gt; +            return 0;
&gt; +        }

This doesn&apos;t seem like something related to scheduling retries.
We probably shouldn&apos;t put them here.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:150
&gt; +            hasCompletedBuildRequestForEachCommitSet = hasCompletedBuildRequestForEachCommitSet &amp;&amp; !!buildRequests.filter((request) =&gt; request.hasCompleted()).length;
&gt; +            hasUnfinishedBuildRequest = hasUnfinishedBuildRequest || !!buildRequests.filter((request) =&gt; !request.hasFinished()).length;

It&apos;s very confusing / hard-to-follow to have stateful variables like these which get updated over loop iterations.
It&apos;s better to repeat the loop instead:
const eachCommitSetHasCompletedAtLeastOneTest = this.requestedCommitSets().every((set) =&gt; this.requestsForCommitSet(set).some((request) =&gt; request.isTest() &amp;&amp; request.hasCompleted()));
const hasUnfinishedTestRequests = this.requestedCommitSets().some((set) =&gt; this.requestsForCommitSet(set).some((request) =&gt; request.isTest() &amp;&amp; !request.hasFinished()));

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:152
&gt; +            maxRetryCount = Math.max(maxRetryCount, this.retryToAddForCommitSet(commitSet));

My goodness, I got totally fooled by the fact this variable is called maxRetryCount,
thinking that this is the pre-existing retry count.

This should really be called additionalRepetitionNeeded

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:155
&gt; +        const willExceedMaxRetry = this.requestedCommitSets().some(commitSet =&gt;
&gt; +            this.willExceedMaxRetryForCommitSetWithRetryCount(commitSet, maxRetryCount, maxRetryFactor));

Maybe call this willExceedRetryLimit?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:157
&gt; +        console.assert(maxRetryCount &lt;= this.initialRepetitionCount());

We&apos;d assume that maxRetryFactor &lt; 2?
This seems rather arbitrary thing to assert in TestGroup.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:161
&gt; +        if (maxRetryCount &amp;&amp; !willExceedMaxRetry &amp;&amp; hasUnfinishedBuildRequest &amp;&amp; !hasCompletedBuildRequestForEachCommitSet)
&gt; +            return 0;
&gt; +
&gt; +        if (maxRetryCount &amp;&amp; !willExceedMaxRetry &amp;&amp; hasCompletedBuildRequestForEachCommitSet)

It seems like these two if&apos;s share the same condition: maxRetryCount &amp;&amp; !willExceedMaxRetry
We should probably nest if&apos;s here.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:163
&gt; +        await this.clearMayNeedMoreBuildRequests();

Again, I don&apos;t think this is a side effect that&apos;s clear from the function name. 
It probably shouldn&apos;t be a part of this function.
Maybe we can use NaN to indicate we&apos;ve exceeded the maximum limit?
Alternatively we can return a dictionary but that might be an over engineering.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:172
&gt; +        console.assert(commitSets.every((currentSet, index, setList) =&gt;
&gt; +            !index || lastItem(this.requestsForCommitSet(setList[index - 1])).order() &lt; this.requestsForCommitSet(currentSet)[0].order()));

We can just use commitSets[index - 1] instead of setList since we&apos;ve defined it as a separate variable.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:174
&gt; +        const failedAllForOneCommitSet = commitSets.some(commitSet =&gt;

Rename this to something like: allTestRequestsHaveFailedForSomeCommitSet

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:178
&gt; +        if (failedAllForOneCommitSet) {
&gt; +            await this.cancelPendingRequests();

Again, this seems like something the syncing script should have a distinct step,
not something this function should be doing as a part of creating more retires if needed.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:184
&gt; +                request.isTest() &amp;&amp; request.hasCompleted()).length;

This value appears so frequently that we should have a helper function like testGroup.successfulTestRequestCount

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:192
&gt; +            const retryCount = this.retryToAddForCommitSet(commitSet);
&gt; +            return !this.willExceedMaxRetryForCommitSetWithRetryCount(commitSet, retryCount, maxRetryFactor);
&gt; +        });
&gt; +
&gt; +        if (firstCommitSetWithRetryAllowed &amp;&amp; this.retryToAddForCommitSet(firstCommitSetWithRetryAllowed)) {
&gt; +            const retryCount = this.retryToAddForCommitSet(firstCommitSetWithRetryAllowed);

We&apos;re calling this.retryToAddForCommitSet three times here!
Why can&apos;t we just do this:
for (const currentCommitSet of commitSets) {
    if (testGroup.successfulTestRequestCount(currentCommitSet) &gt;= this.initialRepetitionCount())
        continue;
    const retryCount = this.additionalRepetitionNeededToReachInitialRepetitionCount(currentCommitSet);
    if (retryCount + this.initialRepetitionCount() &gt; retryCountLimit)
        continue;
    return this.addMoreBuildRequests(retryCount, currentCommitSet);
}

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:340
&gt; +    async addMoreBuildRequests(addCount, commitSet = null)

We should take commitSet object, not ID.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:342
&gt; +        console.assert(!commitSet || this.repetitionType() == &apos;sequential&apos;);

Assert that commitSet instanceof CommitSet

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:371
&gt; +        let retrySummary = null;

This variable is assigned once and never used. Remove?

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:372
&gt; +        let requestSummary = null;

This variable seems unnecessary.
We can just call this.content(&apos;request-summary&apos;) inside the call to renderReplace.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:373
&gt; +        let hideButton = null;

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:374
&gt; +        let pendingRequestCancelWarning = null;

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:395
&gt; +                pendingRequestCancelWarning = this.content(&apos;pending-request-cancel-warning&apos;);
&gt; +                this.renderReplace(pendingRequestCancelWarning, &apos;(cancels pending requests)&apos;);

We need to clear the warning when it doesn&apos;t have a pending requests:
this.renderReplace(this.content(&apos;pending-request-cancel-warning&apos;), currentGroup.hasPending() ? &apos;(cancels pending requests)&apos; : []);

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:411
&gt; +            retryCountByLabel.set(testGroup.labelForCommitSet(commitSet),
&gt; +                testGroup.repetitionCountForCommitSet(commitSet) - testGroup.initialRepetitionCount());

This is just testGroup.retryCountForCommitSet(commitSet).
We should just get rid of this code entirely.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:424
&gt; +        const retrySummary = retrySummaryParts.length === 1 ? retrySummaryParts[0] :
&gt; +            `${retrySummaryParts.slice(0, -1).join(&apos;, &apos;)} and ${retrySummaryParts[retrySummaryParts.length - 1]}`;

Again, use Intl.ListFormat

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:934
&gt; +            const testGroups = TestGroup.createAndRefetchTestGroups(this._task, testGroupName, repetitionCount, repetitionType, commitSets, notifyOnCompletion);

Don&apos;t we need to await here???

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:952
&gt; +            this._didFetchAnalysisResults(testGroups)

Missing semicolon at the end.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:128
&gt; +            repetitionType.disabled = shouldDisable;

Huh, this is really wrong. We should be scheduling a render call and then updating these states there instead.
I guess we&apos;d fix it in a separate patch since this patch is getting really big now.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:599
&gt; +                                &lt;option value=&quot;alternating&quot; selected&gt;alternative (ABAB)&lt;/option&gt;

In *alternate*, not *alternative*

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:207
&gt; +        let group = testGroups[0];

const?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:217
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 2]);

Nice!

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1342
&gt; +    it(&apos;should create a sequential test group with an analysis task&apos;, async () =&gt; {

We need another test to create a test group for an existing analysis task.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1382
&gt; +    it(&apos;should reject with &quot;InvalidMode&quot; if test mode is not &quot;alternating&quot; or &quot;sequential&quot;&apos;, async () =&gt; {

The error code here should be updated per my comment above.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:280
&gt; +    it(&apos;should be able to cancel an alternating test group and the &quot;may need more requests&quot; flag&apos;, async () =&gt; {

and *clear* the &quot;may need more requests&quot; flag

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:321
&gt; +    it(&apos;should be able to cancel a sequential test group and the &quot;may need more requests&quot; flag&apos;, async () =&gt; {

Ditto.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1500
&gt; +        it(&apos;should not scheduling build request from another test group on a builder if a alternating test group with all existing build requests finished still needs retry&apos;, async () =&gt; {

if *an* alternating test group

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1626
&gt; +        it(&apos;should not reuse the root when a build request with same commit set is available but the build request has been scheduled&apos;, async () =&gt; {

I guess we should add another test which is that when all requests for the first commit set fails in a sequential test group, we&apos;d cancel the rest.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:171
&gt; +            if (latestActiveBuildRequest.testGroupId() === newRequest.testGroupId())

Just use ==.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:175
&gt; +            if (!testGroup)
&gt; +                continue;

When does this happen?
It seems like unsafe to assume the worker is not used just because we couldn&apos;t find the test group?
In fact, if this happens when there is a build request not associated with a test group known to us,
we probably must assume that request needs to be processed or we need to sync up with the dashboard
before we can go ahead &amp; schedule a new job.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:176
&gt; +            if (testGroup.hasFinished() &amp;&amp; !testGroup.mayNeedMoreRequests())

Hm... can we add a helper function to TestGroup for this?
Also, it&apos;s confusing that testGroup.mayNeedMoreRequests() can return true even when testGroup.hasFinished() is false.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:161
&gt; +        const orderedBuildRequests = testGroup.orderedBuildRequests();
&gt; +        const buildRequestIndex = orderedBuildRequests.indexOf(buildRequest);
&gt; +        if (!buildRequestIndex)
&gt; +            return false;
&gt; +
&gt; +        const buildRequestBeforeCurrent = orderedBuildRequests[buildRequestIndex - 1];
&gt; +        if (buildRequestBeforeCurrent.isBuild())
&gt; +            return false;
&gt; +
&gt; +        const previousCommitSet = buildRequestBeforeCurrent.commitSet()
&gt; +        if (previousCommitSet === buildRequest.commitSet())
&gt; +            return false;

I think we should add two helper functions to TestGroup instead.
1. testGroup.isFirstTestRequest(buildRequest). This could alternatively be a method on buildRequest as well.
2. testGroup.precedingBuildRequest(buildRequest)

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:163
&gt; +        if (testGroup.willExceedMaxRetryForCommitSetWithRetryCount(previousCommitSet, 0, this._maxRetryFactor))

I think it&apos;s better if we passed in the retry count limit as opposed to a factor
since the factor is more of a syncing script concept.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:167
&gt; +        return testGroup.initialRepetitionCount() &gt; testGroup.requestsForCommitSet(buildRequestBeforeCurrent.commitSet())
&gt; +            .filter(request =&gt; request.isTest() &amp;&amp; request.hasCompleted()).length;

This too should probably be a helper function on TestGroup.
e.g. testGroup.successfulTestCount(commitSet)

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:625
&gt; +    describe(&apos;createAdditionalBuildRequestsForTestGroupsWithFailedRequests&apos;, () =&gt; {

should be renamed to scheduleRetriesIfNecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756133</commentid>
    <comment_count>24</comment_count>
      <attachid>427546</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-03 02:52:41 -0700</bug_when>
    <thetext>Created attachment 427546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756316</commentid>
    <comment_count>25</comment_count>
      <attachid>427601</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-03 13:55:22 -0700</bug_when>
    <thetext>Created attachment 427601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758862</commentid>
    <comment_count>26</comment_count>
      <attachid>427601</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-11 03:26:52 -0700</bug_when>
    <thetext>Comment on attachment 427601
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        Add support to schedule &apos;sequential&apos; A/B testing which runs all A runs before B runs, whereas previously we only

Nit: schedule *a* &quot;sequential&quot; A/B testing
Nit: probably say run all the iterations for A configuration then all the iterations for B configuration
to be consistent with the next line.
Nit: no comma is needed before whereas. Also, we previously only support*ed*

There is also a subject mismatch here.

How about this:
Add support to schedule &apos;sequential&apos; A/B testing which schedules all iterations for
the first configuration (A) before the iterations for the second configuration (B).
Before this patch, all A/B testing alternated between two different configurations for each iteration.

&gt; Websites/perf.webkit.org/ChangeLog:10
&gt; +        support alternating A and B configurations between runs.

Nit: alternating between A &amp; B configurations.

&gt; Websites/perf.webkit.org/ChangeLog:13
&gt; +        Update syncing script to not proceed with next configuration until current configuration meets initial requested

Hm... this reads awkwardly. How about this:
... until the current configuration successfully completed
more iterations than the initially requested or retries exceeded the list.

&gt; Websites/perf.webkit.org/public/include/commit-sets-helpers.php:12
&gt;      $group_id = $db-&gt;insert_row(&apos;analysis_test_groups&apos;, &apos;testgroup&apos;,

We should probably add an assertion here that $repetition_type is either sequential or alternating.
I know we&apos;re checking in this function&apos;s call sites already but it&apos;s good to assert that
so that if someone adds a new repetition type or adds a new code without a check, we&apos;d catch it here.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:16
&gt; +    $additional_build_request_count = array_get($arguments, &apos;addCount&apos;);

Why not just $arguments[&apos;addCount&apos;] since we&apos;ve forced that addCount exists above.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:17
&gt; +    $test_group_id = array_get($arguments, &apos;group&apos;);

Ditto.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:18
&gt; +    $commit_set_id = array_get($arguments, &apos;commitSet&apos;, NULL);

No need to specify NULL here. That&apos;s the default value.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:44
&gt; +        add_build_request_for_alternating_test_group($db, $existing_test_type_build_requests, $additional_build_request_count, $current_order);

Hm... how about just add_alternating_build_requests?
It&apos;s pretty clear that adding alternating build requests must happen for alternating test group, right?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:47
&gt; +            add_build_requests_for_specific_commit_set_in_sequential_test_group($db, $existing_test_type_build_requests, $additional_build_request_count, $commit_set_id);

How about add_sequential_build_requests_for_commit_set?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:49
&gt; +            add_build_requests_for_all_commit_sets_in_sequential_test_group($db, $existing_build_requests, $additional_build_request_count, $test_group_id);

And add_sequential_build_requests_for_all_commit_sets?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:57
&gt; +    $target_commit_sets = array();

I don&apos;t think it makes sense to rename this to target_commit_sets since we&apos;d be adding new build requests for all commit sets.
It also makes diff needlessly larger. We should stick with the original variable name.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:80
&gt; +    $target_commit_sets = array();

I don&apos;t think we need this separate array of commit sets.
We can just use array_keys($build_request_by_commit_set) instead.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:85
&gt; +        $build_request_by_commit_set[$commit_set_for_current_request] = $current_build_request;

We should call this $last_build_request_for_commit_set.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:96
&gt; +        $db-&gt;query(&apos;UPDATE build_requests SET request_order = request_order + $1

Did you check that this query is efficient? e.g. does it use the index for build_request_order_must_be_unique_in_group?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:101
&gt; +        $current_build_request = $build_request_by_commit_set[$commit_set];

It&apos;s very confusing to call this *current* build request since this function adds more build requests.
And it&apos;s unclear what *current* means in this context.
How about $last_existing_build_request?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:103
&gt; +        $request_order_incremental = array_get($order_increment_by_commit_set, $commit_set, 0);

Hm... it might be more appropriate to call this $order_diff or $order_shift.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:105
&gt; +        for ($i = 0; $i &lt; $additional_build_request_count; $i++)
&gt; +            duplicate_build_request_with_new_order($db, $current_build_request, ++$request_order + $request_order_incremental);

It&apos;s very confusing that both $i and $request_order are getting incremented.
I think it would be more clear to do: $last_existing_order + $order_shift + $i

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:129
&gt; +        }
&gt; +        else {

Nit: should be: } else {

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:134
&gt; +    $db-&gt;commit_transaction();

Very nice! This code is so much easier to understand!

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:107
&gt; +    willExceedRetryLimitWithRetryCount(commitSet, retryCount, retryLimit)
&gt; +    {
&gt; +        return retryCount + this.repetitionCountForCommitSet(commitSet) &gt; retryLimit;
&gt; +    }

Hm... I don&apos;t think this function is necessary. We can just do this math where it&apos;s called.
It&apos;s better that we can see this arithmetic in its call site so we know exactly what we&apos;re checking.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:116
&gt; +    successfulTestRequestCount(commitSet)

I think we can just call this: successfulTestCount

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:123
&gt; +        return !this._orderedBuildRequests().filter((request) =&gt; request.isTest()).indexOf(buildRequest);

This will search the entire array for every build request.
We can just do this instead since filter will always return an array and [][0] is undefined:
this._orderedBuildRequests().filter((request) =&gt; request.isTest())[0] == buildRequest;

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:132
&gt; +        if (buildRequestIndex &lt; 1)
&gt; +            return null;
&gt; +        return orderedBuildRequests[buildRequestIndex - 1];

There is no need to check whether buildRequestIndex is 0 or -1
since [][-1] and [][-2] are both undefined.
If we really wanted to return null instead of undefined, we can just do this:
orderedBuildRequests[buildRequestIndex - 1] || null.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:137
&gt; +        return this.repetitionCountForCommitSet(commitSet) - this.initialRepetitionCount();

Let&apos;s assert that this number is greater than or equal to 0.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:151
&gt; +        const additionalRepetitionNeeded = Math.max(...this.requestedCommitSets().map(
&gt; +            this.additionalRepetitionNeededToReachInitialRepetitionCount.bind(this)));

Hm... this is kind of hard to read and it creates a temporary array. How about this?
const additionalRepetitionNeeded = this.requestedCommitSets().reduce((commitSet, current) =&gt;
    Math.max(current, this.additionalRepetitionNeededToReachInitialRepetitionCount(commitSet)), 0);

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:165
&gt; +        if (hasUnfinishedBuildRequest &amp;&amp; !eachCommitSetHasCompletedAtLeastOneTest)
&gt; +            return doNotClearMayNeedMoreRequestsFlag;

Hm... now that I&apos;m looking at this code, it&apos;s very much mysterious that we&apos;re returning NaN here.
Maybe we should return a dictionary instead: {retryCount: ~, mayNeedMoreRequests: ~}

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:183
&gt; +        const allTestRequestsHaveFailedForSomeCommitSet = commitSets.some(commitSet =&gt;
&gt; +            this.requestsForCommitSet(commitSet).filter(request =&gt; request.isTest()).every(request =&gt; request.hasFailed()));

Why not just: this.requestsForCommitSet(commitSet).every((request) =&gt; !request.isTest() || request.hasFailed())

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:196
&gt; +            await this.clearMayNeedMoreBuildRequests();

I don&apos;t think we should be calling this.clearMayNeedMoreBuildRequests here?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:200
&gt; +        return 0;

Looks like we&apos;re missing the case where this function will return NaN?
I don&apos;t think it&apos;s correct that we&apos;d always clear may-need-more-build-requests flag?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:-105
&gt; -        const commitSetLabelMap = new Map;

lol.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:327
&gt; -    async didSendNotification()
&gt; +    async cancelPendingRequests()

Can we re-order functions so that didSendNotification will be left intact?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:337
&gt; +        return this._updateBuildRequest({

Why the change (remove await)?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:357
&gt; -        return await this._updateBuildRequest({
&gt; +        return this._updateBuildRequest({

I&apos;m so confused about all these changes to remove await.
There is no harm in awaiting another async function.
Why don&apos;t we revert that since this patch is already so massive?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:369
&gt; +            taskName, name: groupName, platform: platform.id(), test: test.id(), repetitionCount, revisionSets,
&gt; +            repetitionType, needsNotification: !!notifyOnCompletion});

Can we put repetitionCount and repetitionType next to each other?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:370
&gt; +        const task = await AnalysisTask.fetchById(data[&apos;taskId&apos;], true);

Please either add comment like /* ignoreCache */ or define a local variable to indicate what &quot;true&quot; means here.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:381
&gt; +            task: task.id(), name: groupName, platform: platform.id(), test: test.id(), repetitionCount,
&gt; +            revisionSets, repetitionType, needsNotification: !!notifyOnCompletion});

Ditto about putting repetitionCount and repetitionType putting next to each other.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:382
&gt; +        await this.fetchById(data[&apos;testGroupId&apos;], true);

Ditto about &quot;true&quot;.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:391
&gt; +            task: task.id(), name, repetitionCount, revisionSets, repetitionType,

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:394
&gt; +        await this.fetchById(data[&apos;testGroupId&apos;], true);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:398
&gt; +    async scheduleRetriesIfNecessary(maxRetryFactor)

I don&apos;t think there is much value in having this function being separate from resolveMayNeedMoreRequestsFlag.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:402
&gt; +        return this.repetitionType() == &apos;alternating&apos; ? this._createAlternatingRetriesForTestGroup(maxRetryFactor)
&gt; +            : this._createSequentialRetriesForTestGroup(maxRetryFactor);

Hm... I think this code will be easier to read with if like this:
if (this.repetitionType() == &apos;sequential&apos;)
    return this._createSequentialRetriesForTestGroup(maxRetryFactor);
return this._createAlternatingRetriesForTestGroup(maxRetryFactor);

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:405
&gt; +    async resolveMayNeedMoreRequestsFlag(maxRetryFactor)

I don&apos;t think this function name is descriptive.
I&apos;d much rather call this function scheduleRetriesIfNecessary.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:415
&gt; +        const retryCount = await this.scheduleRetriesIfNecessary(maxRetryFactor);

If we made _createAlternatingRetriesForTestGroup and _createSequentialRetriesForTestGroup return a dictionary
as I suggested above, we can do something like this:
const {retryCount, mayNeedMoreRequests} = await this. _createAlternatingRetriesForTestGroup(maxRetryFactor);

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:422
&gt; +            console.log(`Added ${retryCount} build request(s) to &quot;${testGroup.name()}&quot; of analysis task: ${analysisTask.id()} - &quot;${analysisTask.name()}&quot;`);

I don&apos;t think we should be logging in this public API of TestGroup
since logging is really a concept of syncing scripts.
We should do this in the call site (processTestGroupMayNeedMoreRequests) instead.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:433
&gt; +        const data = await this.cachedFetch(`/api/test-groups/${testGroupId}`, {}, ignoreCache);

Nit: { } instead of {}.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:377
&gt; +            const authoredBy = currentGroup.author() ? `by &quot;${currentGroup.author()}&quot; ` : &apos;&apos;;

Nit: there is no need to have a trailing space here.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:397
&gt; +        for (const commitSet of testGroup.requestedCommitSets())
&gt; +            retryCountByLabel.set(testGroup.labelForCommitSet(commitSet), testGroup.retryCountForCommitSet(commitSet));

I don&apos;t think this upfront collection of labels &amp; retry count is necessary.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:400
&gt; +            return `${testGroup.initialRepetitionCount()} requested, ${retryCountByLabel.get(&apos;A&apos;)} added due to failures.`;

We can just do this here:
const retryCount = testGroup.retryCountForCommitSet(testGroup.requestedCommitSets()[0]);

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:407
&gt; +        for (const [label, count] of retryCountByLabel.entries()) {
&gt; +            if (!count)
&gt; +                continue;
&gt; +            retrySummaryParts.push(`${count} added to ${label} configuration`);
&gt; +        }

Then here, we can just do this:
retrySummaryParts = testGroup.requestedCommitSets()
    .map((commitSet) =&gt; ({commitSet, retryCount: testGroup.retryCountForCommitSet(commitSet)))
    .filter((item) =&gt; item.retryCount)
    .map((item) =&gt; `${item.retryCount} added to ${testGroup.labelForCommitSet(item.commitSet)} configuration`)

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:408
&gt; +        const retrySummary = new Intl.ListFormat(&apos;en&apos;, {style:&apos;long&apos;, type:&apos;conjunction&apos;}).format(retrySummaryParts);

Nit: Need a space after :

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:125
&gt; +            // FixMe: should invoke render code instead.

Nit: should be FIXME.
Also, should call enqueueToRender

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:204
&gt; +        const noCache = true;

Nor that it&apos;s a big deal or it&apos;s an issue with your patch in particular
but we should be consistent with noCache vs ignoreCache...

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:218
&gt; +        const firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 2]);
&gt; +        const secondCommitSet = testGroups[0].requestedCommitSets()[1];

Looks like we can just use `group` here?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:249
&gt; +        let firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 1]);
&gt; +        let secondCommitSet = testGroups[0].requestedCommitSets()[1];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:289
&gt; +        let firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 1]);
&gt; +        let secondCommitSet = testGroups[0].requestedCommitSets()[1];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:332
&gt; +        let firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 1]);
&gt; +        let secondCommitSet = testGroups[0].requestedCommitSets()[1];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(secondCommitSet), [2, 3]);
&gt; +        let thirdCommitSet = testGroups[0].requestedCommitSets()[2];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:377
&gt; +        let firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 1]);
&gt; +        let secondCommitSet = testGroups[0].requestedCommitSets()[1];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(secondCommitSet), [2, 3]);
&gt; +        let thirdCommitSet = testGroups[0].requestedCommitSets()[2];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:421
&gt; +        const firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 1]);
&gt; +        const secondCommitSet = testGroups[0].requestedCommitSets()[1];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:454
&gt; +        const firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 1]);
&gt; +        const secondCommitSet = testGroups[0].requestedCommitSets()[1];

Ditto.
We probably don&apos;t need to check / assert request orders here though since that&apos;s not the point of this test.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:487
&gt; +        const firstCommitSet = testGroups[0].requestedCommitSets()[0];
&gt; +        assertOrderOfRequests(group.requestsForCommitSet(firstCommitSet), [0, 2]);
&gt; +        const secondCommitSet = testGroups[0].requestedCommitSets()[1];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1382
&gt; +    it(&apos;should create a sequential test group with an analysis task&apos;, async () =&gt; {

Is this a duplicate test case?? It has the same description as the preceding test case, and I can&apos;t spot a difference.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1434
&gt; +        assert.strictEqual(testGroups.length, 1);

Can we check that this was 0 before calling PrivilegedAPI.sendRequest above?
Just to make sure this test doesn&apos;t get broken in the future when someone decides to modify addTriggerableAndCreateTask.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1462
&gt; +    it(&apos;should reject with &quot;InvalidRepetitionType&quot; if test mode is not &quot;alternating&quot; or &quot;sequential&quot;&apos;, async () =&gt; {

Can we add another test case where we try to do the same with an existing analysis task?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:280
&gt; +    it(&apos;should be able to cancel an alternating test group and clear the &quot;may need more requests&quot; flag&apos;, async () =&gt; {

We should add another test case to make sure mayNeedMoreRequests doesn&apos;t get cleared as well.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:321
&gt; +    it(&apos;should be able to cancel a sequential test group and clear the &quot;may need more requests&quot; flag&apos;, async () =&gt; {

Ditto especially since this patch seems to have a bug there.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1363
&gt; +        it(&apos;should schedule a build request on a builder the last build request of which is not fetched yet&apos;, async () =&gt; {

This sentence isn&apos;t grammatically correct. Did you mean to say something along the line of:
should schedule a build request on a builder when its recent builds had not been fetched yet

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1399
&gt; +            await MockRemoteAPI.waitForRequest();

What is this MockRemoteAPI.waitForRequest for??

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1466
&gt; +            assert.equal(BuildRequest.findById(701).status(), &apos;failed&apos;);
&gt; +            assert.equal(BuildRequest.findById(701).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

I&apos;m a bit confused here. Don&apos;t we need to be checking the status of 702 &amp; 703 that they&apos;re not getting scheduled??

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1474
&gt; +            assert.equal(BuildRequest.findById(701).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1477
&gt; +        it(&apos;should not scheduling other build request on a builder if a sequential test group is scheduled on it and waiting for retry&apos;, async () =&gt; {

NutL should not *schedule* another build request

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1483
&gt; +            await Promise.all([MockData.addMockData(db, [&apos;failed&apos;, &apos;completed&apos;, &apos;pending&apos;, &apos;pending&apos;], true,
&gt; +                [&apos;http://build.webkit.org/#/builders/2/builds/123&apos;, &apos;http://build.webkit.org/#/builders/2/builds/124&apos;, null, null],
&gt; +                [401, 401, 402, 402], &apos;sequential&apos;, true),
&gt; +                MockData.addAnotherMockTestGroup(db),
&gt; +            ]);

Indention here is super confusing. Since the perf isn&apos;t all that important, why don&apos;t we just serialize them?
await MockData.addMockData(~);
await MockData.addAnotherMockTestGroup(db);

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1528
&gt; +            assert.equal(BuildRequest.findById(701).status(), &apos;completed&apos;);
&gt; +            assert.equal(BuildRequest.findById(701).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Again, I think what we should be checking is the status of 710-713.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1536
&gt; +            assert.equal(BuildRequest.findById(701).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1539
&gt; +        it(&apos;should not scheduling build request from another test group on a builder if an alternating test group with all existing build requests finished still needs retry&apos;, async () =&gt; {

Nit: This sentence isn&apos;t well formed. How about this:
should not schedule a build request from another test group on a builder which is used by an alternating test group needing more retries.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1591
&gt; +            assert.equal(BuildRequest.findById(703).status(), &apos;completed&apos;);
&gt; +            assert.equal(BuildRequest.findById(703).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Ditto about checking the status of 710-713.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1599
&gt; +            assert.equal(BuildRequest.findById(703).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1602
&gt; +        it(&apos;should not scheduling build request from another test group on a builder if a sequential test group with all existing build requests finished still needs retry&apos;, async () =&gt; {

I&apos;d suggest the same rephrasing.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1654
&gt; +            assert.equal(BuildRequest.findById(703).status(), &apos;completed&apos;);
&gt; +            assert.equal(BuildRequest.findById(703).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1662
&gt; +            assert.equal(BuildRequest.findById(703).status(), &apos;completed&apos;);
&gt; +            assert.equal(BuildRequest.findById(703).statusUrl(), &apos;http://build.webkit.org/#/builders/2/builds/124&apos;);

Ditto.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:146
&gt; +        const latestActiveEntryByWorkerName = new Map;

latestEntryByWorkerName would suffice.
Introducing a new term like &quot;active&quot; is rather confusing.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:159
&gt; +            if (entry.hasFinished() || entry.isInProgress()) {

Isn&apos;t this just !entry.isPending()?

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:175
&gt; +            if (!testGroup)
&gt; +                continue;

We should add a comment as to when this `continue` would run
since it looks as if this condition should never be reached at glance.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:89
&gt; +        let rootReuseUpdates = {};

Nit: { } instead of {}

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:93
&gt; +        await Promise.all([...buildRequestsByGroup.keys()].map(testGroupId =&gt; TestGroup.fetchById(testGroupId, true)));

Why not Array.from(buildRequestsByGroup.keys())?

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:141
&gt; +    _shouldDeferSequentialTestingRequestWithNewCommitSet(buildRequest)

Nit: Call it TestRequest for consistency.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:161
&gt; +        if (testGroup.willExceedRetryLimitWithRetryCount(previousCommitSet, 0, retryLimit))

This is an example of code which will read a lot better if the function was inlined:
if (this.repetitionCountForCommitSet(previousCommitSet) &gt;= retryLimit)
    return false;
Do we have a test for this?? It seems like the condition here is slightly off.
We need to return false even when repetition count is identically equal to the retry limit.

&gt; Websites/perf.webkit.org/tools/run-analysis.js:71
&gt; +async function processTestGroupMayNeedMoreRequests(maxRetryFactor)

Can we merge this into analysisLoop?
I don&apos;t think it&apos;s helpful to split this logic into a separate function
since it&apos;s basically single for loop.

&gt; Websites/perf.webkit.org/tools/sync-buildbot.js:15
&gt; +        {name: &apos;--max-retry-factor&apos;, type: parseFloat, default: 3},

Huh, it is concerning that run-analysis.js and run-analysis.js
in theory can get different values for --max-retry-factor.
Not in this patch but we should figure out a way to not duplicate this value in two different syncing scripts&apos; configurations.
This is a timing time bomb.

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:626
&gt; +        let requests = MockRemoteAPI.inject(null, NodePrivilegedAPI);

const?

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:649
&gt; +        it(&apos;should add 2 more build requests when 2 failed build request found for a commit set&apos;, async () =&gt; {

For consistency, we should spell out 2 as two.

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:675
&gt; +        it(&apos;should not schedule more build requests when build request is hidden&apos;, async () =&gt; {

when the build requests are hidden?
But this is about the test group, right?

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:702
&gt; +        it(&apos;should not schedule more build request when we\&apos;ve already hit the maximum retry count&apos;, async () =&gt; {

Nit: should not schedule more build requests when doing so will exceed the retry limit

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:716
&gt; +        it(&apos;should not schedule more when additional build requests are still pending&apos;, async () =&gt; {

schedule more *build requests* when there are still pending build requests

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:739
&gt; +        it(&apos;should add two more build request on A config and clear &quot;may need more requests&quot; afterwards when one A config request failed for test group in sequential mode&apos;, async () =&gt; {

Nit: should *schedule* retry build request*s* and clear &quot;may need more requests&quot; flag when all requests for a configuration had failed

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:765
&gt; +        it(&apos;should retry B config if A config exhausted retry and had at least one successful run but less than user requested for test group in sequential mode&apos;, async () =&gt; {

Nit: should retry the second configuration (B) if the first configuration (A) reached the retry limit but had at least one successful iteration for a sequential test group.
There is no need to say it&apos;s less than initially requested repetition count since that&apos;s implied by the fact we&apos;ve reached the retry limit.

&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:781
&gt; +        it(&apos;should clear test group &quot;may need more requests&quot; flag in sequential mode if all user initially scheduled A runs failed&apos;, async () =&gt; {

I don&apos;t think &quot;user&quot; here adds any valuable information so we should just get rid of it.
Also, let&apos;s stick with repetitions or iterations since that&apos;s the term we use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761436</commentid>
    <comment_count>27</comment_count>
      <attachid>427601</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-18 19:02:26 -0700</bug_when>
    <thetext>Comment on attachment 427601
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:96
&gt;&gt; +        $db-&gt;query(&apos;UPDATE build_requests SET request_order = request_order + $1
&gt; 
&gt; Did you check that this query is efficient? e.g. does it use the index for build_request_order_must_be_unique_in_group?

Yes, I think I have a unit test for this. It will fail if array_reverse is not used.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:196
&gt;&gt; +            await this.clearMayNeedMoreBuildRequests();
&gt; 
&gt; I don&apos;t think we should be calling this.clearMayNeedMoreBuildRequests here?

Sure.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:200
&gt;&gt; +        return 0;
&gt; 
&gt; Looks like we&apos;re missing the case where this function will return NaN?
&gt; I don&apos;t think it&apos;s correct that we&apos;d always clear may-need-more-build-requests flag?

The retry logic will only retry the first commitSet that needs retry. And the syncing script ensures we don&apos;t schedule test group for next commitSet until current commitSet is done.
These two condition will ensure the commitSet to retry is the only commitSet that need retry. So we can always clear the flag once retry is scheduled.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:337
&gt;&gt; +        return this._updateBuildRequest({
&gt; 
&gt; Why the change (remove await)?

&apos;await&apos; after return in async function is redundant. But as you mentioned below, let&apos;s not do it in this massive patch. Will revert this change.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:357
&gt;&gt; +        return this._updateBuildRequest({
&gt; 
&gt; I&apos;m so confused about all these changes to remove await.
&gt; There is no harm in awaiting another async function.
&gt; Why don&apos;t we revert that since this patch is already so massive?

Sure.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:405
&gt;&gt; +    async resolveMayNeedMoreRequestsFlag(maxRetryFactor)
&gt; 
&gt; I don&apos;t think this function name is descriptive.
&gt; I&apos;d much rather call this function scheduleRetriesIfNecessary.

I think previous review, you suggested `scheduleRetriesIfNecessary` does not reveal the fact that it clears `mayNeedMoreRequests` flag.

&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-add-build-requests-tests.js:204
&gt;&gt; +        const noCache = true;
&gt; 
&gt; Nor that it&apos;s a big deal or it&apos;s an issue with your patch in particular
&gt; but we should be consistent with noCache vs ignoreCache...

Sure, will use &apos;ignoreCache&apos; for consistency.

&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1382
&gt;&gt; +    it(&apos;should create a sequential test group with an analysis task&apos;, async () =&gt; {
&gt; 
&gt; Is this a duplicate test case?? It has the same description as the preceding test case, and I can&apos;t spot a difference.

Nice catch! I meant to test creating an alternating test group.

&gt;&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:280
&gt;&gt; +    it(&apos;should be able to cancel an alternating test group and clear the &quot;may need more requests&quot; flag&apos;, async () =&gt; {
&gt; 
&gt; We should add another test case to make sure mayNeedMoreRequests doesn&apos;t get cleared as well.

This is testing adding an API to allow canceling pending requests under a test group. The corresponding tests for clearing/not clearing &quot;may need more requests&quot; flag is under `test-groups-tests.js`

&gt;&gt; Websites/perf.webkit.org/server-tests/tools-buildbot-triggerable-tests.js:1399
&gt;&gt; +            await MockRemoteAPI.waitForRequest();
&gt; 
&gt; What is this MockRemoteAPI.waitForRequest for??

Will remove this.

&gt;&gt; Websites/perf.webkit.org/tools/sync-buildbot.js:15
&gt;&gt; +        {name: &apos;--max-retry-factor&apos;, type: parseFloat, default: 3},
&gt; 
&gt; Huh, it is concerning that run-analysis.js and run-analysis.js
&gt; in theory can get different values for --max-retry-factor.
&gt; Not in this patch but we should figure out a way to not duplicate this value in two different syncing scripts&apos; configurations.
&gt; This is a timing time bomb.

As we discussed, I plan to have a patch which will allow `fetchAllThatMayNeedMoreRequests` by triggerable, so that we can move the retry logic into syncing script. In this way, the retry-factor will be unified.

&gt;&gt; Websites/perf.webkit.org/unit-tests/test-groups-tests.js:675
&gt;&gt; +        it(&apos;should not schedule more build requests when build request is hidden&apos;, async () =&gt; {
&gt; 
&gt; when the build requests are hidden?
&gt; But this is about the test group, right?

I meant to say `should not schedule more build requests when *test group* is hidden`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761445</commentid>
    <comment_count>28</comment_count>
      <attachid>429024</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-18 19:22:31 -0700</bug_when>
    <thetext>Created attachment 429024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761462</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-18 20:51:03 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #27)
&gt; Comment on attachment 427601 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427601&amp;action=review
&gt; 
&gt; &gt;&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:96
&gt; &gt;&gt; +        $db-&gt;query(&apos;UPDATE build_requests SET request_order = request_order + $1
&gt; &gt; 
&gt; &gt; Did you check that this query is efficient? e.g. does it use the index for build_request_order_must_be_unique_in_group?
&gt; 
&gt; Yes, I think I have a unit test for this. It will fail if array_reverse is
&gt; not used.

No, I mean that does the SQL query itself update build_requests using the database index instead of doing a sequential search? Could you tell me what EXPLAIN ANALYZE will tell us with a sample query?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761464</commentid>
    <comment_count>30</comment_count>
      <attachid>429024</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-18 21:32:13 -0700</bug_when>
    <thetext>Comment on attachment 429024
Patch

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

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:80
&gt; +    $build_request_by_commit_set = array();

We should probably call this $last_build_request_by_commit_set or $commit_set_to_last_build_request

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:81
&gt; +    foreach ($existing_build_requests as $last_existing_build_request) {

I don&apos;t think it&apos;s appropriate to call this last_existing_build_request since we&apos;re iterating over every build request here.
Why not just $current_build_request as you used to call it?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:87
&gt; +        if ($is_existing_commit_set)
&gt; +            continue;
&gt; +        $order_shift_by_commit_set[$commit_set_for_current_request] = (count($build_request_by_commit_set) - 1) * $additional_build_request_count;

Huh, now that this whole thing is one line maybe it&apos;s simpler to write it as:
$is_first_build_request = !array_key_exists($commit_set_for_current_request, $build_request_by_commit_set);
...
if (!array_key_exists($commit_set_for_current_request, $build_request_by_commit_set))
    $order_shift_by_commit_set[$commit_set_for_current_request] = count($build_request_by_commit_set) * $additional_build_request_count;
$build_request_by_commit_set[$commit_set_for_current_request] = $last_existing_build_request;

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:91
&gt; +    foreach (array_reverse($order_shift_by_commit_set, true) as $commit_set =&gt; $increment) {

Call this $shift for consistency?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:99
&gt; +        $last_existing_build_request = $build_request_by_commit_set[$commit_set];

Whereas here, it&apos;s appropriate to call it last_existing_build_request since it *IS* the last build request for the commit set.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:101
&gt; +        $order_shift = array_get($order_shift_by_commit_set, $commit_set, 0);

There should be no need to use array_get here. $order_shift_by_commit_set[$commit_set] should work.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:103
&gt; +            duplicate_build_request_with_new_order($db, $last_existing_build_request, $last_existing_order + $i + $order_shift);

I think it would be better to order them as:
$last_existing_order + $order_shift + $i
maybe we should store the sum of the first two terms as $starting_order:
for ($i = 1, $starting_order = $last_existing_order + $order_shift; $i &lt;= $additional_build_request_count; $i++)
      duplicate_build_request_with_new_order($db, $last_existing_build_request, $starting_order + $i);
Alternatively, we could have computed last_existing_prder as follows:
$last_existing_order = $last_existing_build_request[&apos;request_order&apos;] + $order_shift_by_commit_set[$commit_set];

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:113
&gt; +        return this.requestsForCommitSet(commitSet).filter((request) =&gt; request.isTest() &amp;&amp; request.hasCompleted()).length

Nit: missing a semicolon at the end.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:124
&gt; +        const buildRequestIndex = orderedBuildRequests.indexOf(buildRequest);

Let&apos;s make sure buildRequestIndex is greater than 0 by asserting it (i.e. buildRequest is in orderedBuildRequests)?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:141
&gt; +    async _createAlternatingRetriesForTestGroup(maxRetryFactor)

We should define this below scheduleRetriesIfNecessary so that it&apos;s easier to follow.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:143
&gt; +        const retryLimit = maxRetryFactor * this.initialRepetitionCount();

Since this is the only place where maxRetryFactor is used and we compute this product in
both _createAlternatingRetriesForTestGroup and _createSequentialRetriesForTestGroup,
we should probably just compute that in the caller instead.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:144
&gt; +        const additionalRepetitionNeeded = this.requestedCommitSets().reduce(

Maybe we should call this retryCount since that&apos;s what we&apos;re returning.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:152
&gt; +            return {retryCount: 0, mayNeedMoreRequests: false};

Hm... I&apos;ve started to think maybe a better variable name might be retryCount &amp; stopFutureRetries.
It&apos;s rather counterintuitive that the caller does something special when mayNeedMoreRequests is false.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:189
&gt; +            const additionalRepetition = this.additionalRepetitionNeededToReachInitialRepetitionCount(commitSet);
&gt; +
&gt; +            if (additionalRepetition + this.repetitionCountForCommitSet(commitSet) &gt; retryLimit)
&gt; +                continue;

Wait a minute. Doesn&apos;t this stop retry earlier than necessary?
e.g. if this.repetitionCountForCommitSet(commitSet) is 4 and retryLimit is at 7,
even if additionalRepetitionNeededToReachInitialRepetitionCount returns 4,
we probably still want to add 3 more retries?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:401
&gt; +    async resolveMayNeedMoreRequestsFlag(maxRetryFactor)

&gt; I think previous review, you suggested `scheduleRetriesIfNecessary` does not reveal the fact that it clears `mayNeedMoreRequests` flag.

Yes, but I don&apos;t think that means we want to unnecessarily split the functions.
Also, resolveMayNeedMoreRequestsFlag now doesn&apos;t convey the fact we&apos;re scheduling new retries.

We should probably call this scheduleMoreRequestsOrClearFlag.
&quot;IfNeeded&quot; is the term of art if we wanted to suffix but I don&apos;t think that&apos;s necessary.
By saying that schedule X or clear flag, we&apos;re implicitly communicating that conditionality.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:400
&gt; +        const retrySummaryParts = testGroup.requestedCommitSets()

Nice! So much cleaner!

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:403
&gt; +            .map((item) =&gt; `${item.retryCount} added to ${testGroup.labelForCommitSet(item.commitSet)} configuration`);

Maybe we don&apos;t have to say &quot;configuration&quot; here.
If we say &quot;6 added to A due to failures&quot; that should be sufficient, right?
No need to make it wordy.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1468
&gt; +    it(&apos;should reject with &quot;InvalidRepetitionType&quot; if test mode is not &quot;alternating&quot; or &quot;sequential&quot;&apos;, async () =&gt; {

Nit: repetition type

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:1480
&gt; +    it(&apos;should reject with &quot;InvalidRepetitionType&quot; while creating test group from existing analysis task with repetition type is not &quot;alternating&quot; or &quot;sequential&quot;&apos;, async () =&gt; {

Nit: should reject with &quot;InvalidRepetitionType&quot; when creating a test group with a bad repetition type for an existing analysis task

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:175
&gt; +                // Unlikely to hit this condition, just in case some build requests are created without test group fetched.

I think I&apos;d rephrase this as something like this:
// The request might be for a very old test group we didn&apos;t fetch.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:93
&gt; +        await Promise.all(Array.from(buildRequestsByGroup.keys()).map(testGroupId =&gt; TestGroup.fetchById(testGroupId, true)));

Nit: (testGroupId) =&gt; for consistency?
Also, we should add /* ignoreCache */ commit here too.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:99
&gt; +            const shouldDefer = this._shouldDeferSequentialTestRequestWithNewCommitSet(request);

This should probably be renamed to _shouldDeferSequentialTestRequestForNewCommitSet instead.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:161
&gt; +        if (testGroup.repetitionCountForCommitSet(previousCommitSet) &gt; retryLimit)

Surely, you meant to say testGroup.repetitionCountForCommitSet(~) &gt;= retryLimit?

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:164
&gt; +        return testGroup.initialRepetitionCount() &gt; testGroup.successfulTestCount(previousCommitSet);

So this could condition would &amp; what I had pointed out above would mean
that this function can forever return true &amp; sort of dead-lock the whole thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762121</commentid>
    <comment_count>31</comment_count>
      <attachid>429216</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-20 13:59:04 -0700</bug_when>
    <thetext>Created attachment 429216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762343</commentid>
    <comment_count>32</comment_count>
      <attachid>429216</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-21 03:00:49 -0700</bug_when>
    <thetext>Comment on attachment 429216
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:26
&gt; +        * public/include/commit-sets-helpers.php: Added code to create build requests based on test mode.

Nit: test mode -&gt; repetition type.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:337
&gt; +    async resolveMayNeedMoreRequestsFlag(maxRetryFactor)

Again, we should merge scheduleRetriesIfNecessary into this function and call this scheduleMoreRequestsOrClearFlag

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:374
&gt; +        const willExceedRetryLimit = this.requestedCommitSets().some(commitSet =&gt;
&gt; +            additionalRepetitionNeeded + this.repetitionCountForCommitSet(commitSet) &gt; retryLimit);
&gt; +
&gt; +        if (!additionalRepetitionNeeded || willExceedRetryLimit)
&gt; +            return {retryCount: 0, stopFutureRetries: true};

I don&apos;t think it&apos;s right that we stop adding retries just because adding `willExceedRetryLimit` will go over the limit.
We should be adding the maximum retry count that won&apos;t exceed the retry limit instead.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:388
&gt; +        await this.addMoreBuildRequests(additionalRepetitionNeeded);
&gt; +        return {retryCount: additionalRepetitionNeeded, stopFutureRetries: true};

This isn&apos;t right. Build requests we added may fail in which case we may need to add even more retries.
stopFutureRetries should be false for that reason.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:410
&gt; +            if (additionalRepetition + this.repetitionCountForCommitSet(commitSet) &gt; retryLimit)
&gt; +                continue;

Ditto about the limit here being wrong.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:413
&gt; +            return {retryCount: additionalRepetition, stopFutureRetries: true};

Surely, we don&apos;t want to stop future retries for the entire test group!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762985</commentid>
    <comment_count>33</comment_count>
      <attachid>429490</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-23 17:18:45 -0700</bug_when>
    <thetext>Created attachment 429490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763360</commentid>
    <comment_count>34</comment_count>
      <attachid>429490</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-24 17:56:56 -0700</bug_when>
    <thetext>Comment on attachment 429490
Patch

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

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:348
&gt; +        const retryLimit = maxRetryFactor * this.initialRepetitionCount();

Now I notice that this isn&apos;t really retryLimit but more like repetitionLimit so we maybe we wanna do that rename.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:365
&gt; +        const retryCount = this.requestedCommitSets().reduce(
&gt; +            (currentMin, commitSet) =&gt; Math.min(Math.max(Math.floor(retryLimit - this.repetitionCountForCommitSet(commitSet)), 0), currentMin), additionalRepetitionNeeded);

I guess this is more defensive code but shouldn&apos;t repetition count for all commit sets same in alternating group?
If so, maybe we can just do this math with the first commit set and assert that
the repetition counts for all commit sets are same separately.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:374
&gt; +            return {retryCount: 0, stopFutureRetries: !hasUnfinishedBuildRequest};

Oh nice! This is a lot cleaner.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:400
&gt; +            const retryCount = Math.min(Math.max(Math.floor(retryLimit - this.repetitionCountForCommitSet(commitSet)), 0), additionalRepetition);
&gt; +            if (!retryCount)

Maybe we can get rid of Math.max and just check retryCount &lt;= 0 here?
It&apos;s hard to read the nested min/max/floor right now.
I guess the same comment applies to the math in _createAlternatingRetriesForTestGroup as well.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:10
&gt; -    constructor(config, remote, buildbotRemote, workerInfo, logger)
&gt; +    constructor(config, remote, buildbotRemote, workerInfo, maxRetryFactor, logger)

Why not maxRetryFactor make be a part of config instead of an argument to sync-buildbot.js?
We probably want to store this retry factor thing in the server side in the future though.

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:161
&gt; +        const allRequestsFailedForPreviousCommitSet = testGroup.requestsForCommitSet(previousCommitSet).every(request =&gt; !request.isTest() || request.hasFailed());
&gt; +        if (allRequestsFailedForPreviousCommitSet)

Maybe allTestsFailedForPreviousCommitSet instead?
Since we&apos;re all talking about requests, the fact we want to know tests might be more relevant than &quot;request&quot; part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763799</commentid>
    <comment_count>35</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-25 18:25:02 -0700</bug_when>
    <thetext>Landed in r278072.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424552</attachid>
            <date>2021-03-29 11:21:01 -0700</date>
            <delta_ts>2021-04-05 23:18:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210329112100.patch</filename>
            <type>text/plain</type>
            <size>101862</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAyZTQ4MWI2MTIzNDI1YWM2YzJkOTVmZTUwYjkxOGNhMGRjYzc4YmI0Li40ZjIzMmRlOGU1
OTJmNTc1NGNhNWNlYTFiMTE0NzY1MWZkOTUyNWY2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAyMS0wMy0yOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBbcGVyZiBkYXNoYm9hcmRdIEFkZCBzZXF1ZW50aWFsIG1v
ZGUgZm9yIHBlcmYgZGFzaGJvYXJkIEEvQiB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1o
ZWxwZXJzLnBocDogQWRkZWQgY29kZSB0byBjcmVhdGUgYnVpbGQgcmVxdWVzdHMgYmFzZWQgb24g
dGVzdCBtb2RlLgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVx
dWVzdHMucGhwOiBBZGRlZCBzdXBwb3J0IHRvIG9ubHkgYWRkIGJ1aWxkIHJlcXVlc3RzIHRvIG9u
ZSBjb21taXQgc2V0LgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5h
bHlzaXMtdGFzay5waHA6IEFkZGVkICd0ZXN0TW9kZScgc3VwcG9ydC4KKyAgICAgICAgKiBwdWJs
aWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwOiBBZGRlZCAndGVzdE1vZGUn
IHN1cHBvcnQuCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3Vy
YXRpb24tdGVzdC1ncm91cC1mb3JtLmpzOiBBZGRlZCAndGVzdE1vZGUnIHN1cHBvcnQuCisgICAg
ICAgIChDdXN0b21Db25maWd1cmF0aW9uVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0
aW5nKToKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanM6
IEFkZGVkIHRlc3QgbW9kZSBkcm9wZG93biBhbmQgZXhwbGFuYXRpb24gbGFiZWwuCisgICAgICAg
IChUZXN0R3JvdXBGb3JtKToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLmRpZENv
bnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3Rh
cnRUZXN0aW5nKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanM6
CisgICAgICAgIChBbmFseXNpc1Rhc2suYXN5bmMgY3JlYXRlKToKKyAgICAgICAgKEFuYWx5c2lz
VGFzayk6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzOgorICAgICAg
ICAoVGVzdEdyb3VwKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUudXBkYXRlU2luZ2xl
dG9uKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmVwZXRpdGlvbkNvdW50Rm9yQ29t
bWl0U2V0KTogUmVmYWN0b3JlZCBgcmVwZXRpdGlvbkNvdW50YCBzaW5jZSByZXBldGl0aW9uIG1h
eSBiZSBkaWZmZXJlbnQKKyAgICAgICAgYmV0d2VlbiBjb25maWd1cmF0aW9ucy4KKyAgICAgICAg
KFRlc3RHcm91cC5wcm90b3R5cGUudGVzdE1vZGUpOiBBZGRlZCBjb2RlIHRvIGRlcml2ZSB0ZXN0
IG1vZGUgZnJvbSBidWlsZCByZXF1ZXN0cy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
aGFzUmV0cnkpOiBBIGhlbHBlciBmdW5jdGlvbiB0byB0ZWxsIGlmIGEgdGVzdCBncm91cCBoYXMg
cmV0cnkgcnVucy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuYXN5bmMgYWRkTW9yZUJ1
aWxkUmVxdWVzdHMpOiBBZGRlZCBzdXBwb3J0IHRvIHNwZWNpZnkgY29tbWl0U2V0LgorICAgICAg
ICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhUYXNrKTogQWRkZWQgJ3Rlc3RNb2RlJyBzdXBw
b3J0LgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0
aW9uKTogQWRkZWQgJ3Rlc3RNb2RlJyBzdXBwb3J0LgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5j
IGNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKTogQWRkZWQgJ3Rlc3RNb2RlJyBzdXBwb3J0Lgor
ICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6IEFkZGVkICd0
ZXN0TW9kZScgc3VwcG9ydC4KKyAgICAgICAgKEFuYWx5c2lzVGFza0NoYXJ0UGFuZS5wcm90b3R5
cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tSZXN1bHRz
UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChBbmFseXNp
c1Rhc2tDb25maWd1cmF0b3JQYW5lLnByb3RvdHlwZS5zZXRUZXN0R3JvdXBzKToKKyAgICAgICAg
KEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVz
dEdyb3VwUGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChB
bmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3RvdHlwZS5fcmVuZGVyQ3VycmVudFRlc3RHcm91
cCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3RvdHlwZS5fc3VtbWFy
aXplZFRlc3RHcm91cCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5kaWRD
b25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBl
LmFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFn
ZS5wcm90b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5h
bHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29t
bWl0U2V0TGlzdC5zZXQgY29uc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5
cGUuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCk6CisgICAgICAg
IChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQ3VzdG9tVGVzdEdyb3Vw
KToKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczogQWRkZWQgJ3Rlc3RN
b2RlJyBzdXBwb3J0LgorICAgICAgICAoQ2hhcnRQYW5lLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RT
aGFkb3dUcmVlKToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuYXN5bmMgX2FuYWx5emVS
YW5nZSk6CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBh
Z2UuanM6CisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBf
Y3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJp
dmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBVcGRhdGVkIGFuZCBhZGRl
ZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVh
dGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4K
KyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAt
dGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVy
LXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzOiBBZGRlZCB1
bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJh
dGlvbnMuanM6CisgICAgICAgIChhc3luYyBhc3NlcnRUaHJvd3MpOgorICAgICAgICAqIHRvb2xz
L2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qczogQWRkZWQgcmV0cnkgY29kZSBmb3Ig
c2VxdWVudGlhbCBBL0IgdGVzdGluZyB3aGljaCB3aWxsIHJldHJ5IGNvbmZpZ3VyYXRpb24KKyAg
ICAgICAgYnkgY29uZmlndXJhdGlvbiBhbmQgd2lsbCBub3QgcHJvY2VlZCB3aXRoIG5leHQgY29u
ZmlndXJhdGlvbiB1bnRpbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gbWVldHMgdXNlciBzcGVjaWZp
ZWQKKyAgICAgICAgaXRlcmF0aW9uIG9yIGV4Y2VlZCByZXRyeS4KKyAgICAgICAgKGFzeW5jIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyk6CisgICAgICAgIChhc3luYyBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0Rm9yVGVzdEdy
b3VwSW5BbHRlcm5hdGVNb2RlKToKKyAgICAgICAgKGFzeW5jIGNyZWF0ZUFkZGl0aW9uYWxCdWls
ZFJlcXVlc3RGb3JUZXN0R3JvdXBJblNlcXVlbnRpYWxNb2RlKToKKyAgICAgICAgKiB1bml0LXRl
c3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanM6IFVwZGF0ZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAg
KiB1bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qczogVXBkYXRlZCB1
bml0IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVl
c3RzLXRlc3RzLmpzOiBBZGRlZCB0ZXN0cyBmb3Igc2VxdWVudGlhbCBBL0IgdGVzdGluZy4KKyAg
ICAgICAgKiB1bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVz
dHMuCisKIDIwMjEtMDMtMjIgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW3BlcmYgZGFzaGJvYXJkXSBSZW1vdmUgdjEgYW5kIHYyIGNvZGUuCmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVs
cGVycy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0
LXNldHMtaGVscGVycy5waHAKaW5kZXggZTg1MzBhNmJiNzFlNDJjZmYyOGNlMzE5YzhiNTg1ZTYy
ZGQyM2YxYy4uNThkYzM5M2UzNTYwZGM1MWIyMTZiNzI5OWY3OWNiZTA1Y2ZmNWI2YyAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRz
LWhlbHBlcnMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocApAQCAtNCw3ICs0LDcgQEAgcmVxdWlyZV9vbmNlKCdy
ZXBvc2l0b3J5LWdyb3VwLWZpbmRlci5waHAnKTsKIHJlcXVpcmVfb25jZSgnY29tbWl0LWxvZy1m
ZXRjaGVyLnBocCcpOwogCiAjIEZJWE1FOiBTaG91bGQgY3JlYXRlIGEgaGVscGVyIGNsYXNzIGZv
ciBiZWxvdyAzIGhlbHBlciBmdW5jdGlvbnMgdG8gYXZvaWQgcGFzc2luZyBsb25nIGFyZ3VtZW50
IGxpc3QuCi1mdW5jdGlvbiBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRi
LCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lk
LCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25vdGlm
aWNhdGlvbikgeworZnVuY3Rpb24gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3Rz
KCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJs
ZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICR0ZXN0X21v
ZGUsICRuZWVkc19ub3RpZmljYXRpb24pIHsKIAogICAgIGxpc3QgKCRidWlsZF9jb25maWd1cmF0
aW9uX2xpc3QsICR0ZXN0X2NvbmZpZ3VyYXRpb25fbGlzdCkgPSBpbnNlcnRfY29tbWl0X3NldHNf
YW5kX2NvbnN0cnVjdF9jb25maWd1cmF0aW9uX2xpc3QoJGRiLCAkY29tbWl0X3NldHMpOwogCkBA
IC0xNiw5ICsxNiwxNiBAQCBmdW5jdGlvbiBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVx
dWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZQogICAgIGZvcmVhY2goJGJ1
aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRfY29uZmlndXJhdGlvbikKICAgICAgICAg
aW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkYnVpbGRfY29uZmln
dXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCBOVUxMLCAk
Z3JvdXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRpb25fY291bnQ7ICRp
KyspIHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRlc3Rf
Y29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25m
aWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJs
ZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICBpZiAoJHRlc3Rf
bW9kZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAgICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJh
dGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgIGZvciAoJGkg
PSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKQorICAgICAgICAgICAgICAgIGluc2Vy
dF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlv
biwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdy
b3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoJGkgPSAwOyAk
aSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKSB7CisgICAgICAgICAgICBmb3JlYWNoICgkdGVz
dF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKKyAgICAgICAgICAg
ICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdF9mb3JfY29uZmlndXJhdGlvbigkZGIsICR0ZXN0X2Nv
bmZpZ3VyYXRpb24sICRvcmRlcisrLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRl
c3RfaWQsICRncm91cF9pZCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuICRncm91cF9p
ZDsKIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmls
ZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocAppbmRleCA1NzBl
OTAyZjVkMmUxZGYzZmMyYjZiNmFmYTIzM2FiZmI1MDAzNjQ3Li43YjdmMzU4YmJmNzk5NDY0NDgx
NTY1NTc0ODk4YzIyYTI3NWI5NzRiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVx
dWVzdHMucGhwCkBAIC03LDE0ICs3LDIyIEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgJGRiID0g
Y29ubmVjdCgpOwogICAgICRkYXRhID0gZW5zdXJlX3ByaXZpbGVnZWRfYXBpX2RhdGFfYW5kX3Rv
a2VuX29yX3dvcmtlcigkZGIpOwogCi0gICAgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3Vu
dCA9IGFycmF5X2dldCgkZGF0YSwgJ2FkZENvdW50Jyk7CisgICAgJGFyZ3VtZW50cyA9IHZhbGlk
YXRlX2FyZ3VtZW50cygkZGF0YSwgYXJyYXkoCisgICAgICAgICdhZGRDb3VudCcgPT4gJ2ludCcs
CisgICAgICAgICdncm91cCcgPT4gJ2ludCcsCisgICAgICAgICdjb21taXRTZXQnID0+ICdpbnQ/
JywKKyAgICApKTsKKworICAgICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQgPSBhcnJh
eV9nZXQoJGFyZ3VtZW50cywgJ2FkZENvdW50Jyk7CiAgICAgaWYgKCEkYWRkaXRpb25hbF9idWls
ZF9yZXF1ZXN0X2NvdW50KQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1JlcXVlc3RDb3VudE5v
dFNwZWNpZmllZCcpOwogCi0gICAgJHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGRhdGEsICdn
cm91cCcpOworICAgICR0ZXN0X2dyb3VwX2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdncm91
cCcpOwogICAgIGlmICghJHRlc3RfZ3JvdXBfaWQpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcign
VGVzdEdyb3VwTm90U3BlY2lmaWVkJyk7CiAKKyAgICAkY29tbWl0X3NldCA9IGFycmF5X2dldCgk
YXJndW1lbnRzLCAnY29tbWl0U2V0JywgTlVMTCk7CisKICAgICAkdGVzdF9ncm91cCA9ICRkYi0+
c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJy
YXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCkpOwogICAgIGlmICghJHRlc3RfZ3JvdXApCiAgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFRlc3RHcm91cCcpOwpAQCAtMzYsMTAgKzQ0LDE1
IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgICAgICRyZXF1ZXN0ZWRfY29tbWl0X3NldCA9ICRi
dWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXTsKICAgICAgICAgaWYgKGFycmF5X2tl
eV9leGlzdHMoJHJlcXVlc3RlZF9jb21taXRfc2V0LCAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRf
c2V0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWlzX251bGwoJGNvbW1p
dF9zZXQpICYmICRyZXF1ZXN0ZWRfY29tbWl0X3NldCAhPSAkY29tbWl0X3NldCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0WyRyZXF1
ZXN0ZWRfY29tbWl0X3NldF0gPSAkYnVpbGRfcmVxdWVzdDsKICAgICAgICAgYXJyYXlfcHVzaCgk
Y29tbWl0X3NldHMsICRyZXF1ZXN0ZWRfY29tbWl0X3NldCk7CiAgICAgfQogCisgICAgaWYgKCFp
c19udWxsKCRjb21taXRfc2V0KSAmJiAhY291bnQoJGNvbW1pdF9zZXRzKSkKKyAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdDb21taXRTZXROb3RJblRlc3RHcm91cCcsIGFycmF5KCdjb21taXRTZXQn
ID0+ICRjb21taXRfc2V0KSk7CisKICAgICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CiAgICAg
Zm9yICgkaSA9IDA7ICRpIDwgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudDsgJGkrKykg
ewogICAgICAgICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLWFuYWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggMjhhMTYxMzAwODRl
OGM0ZGFlMTRiZDI5ZjUwZmZlOGJjZGU4YWM5NC4uYjY0YWQyZmNmNTJlMzFlM2I0NmQzMGJhZDhm
ZDI4ZmZmOGUxY2RiOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFz
ay5waHAKQEAgLTEwLDYgKzEwLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkYXV0aG9yID0g
cmVtb3RlX3VzZXJfbmFtZSgkZGF0YSk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRhdGEsICdu
YW1lJyk7CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0
aW9uQ291bnQnKTsKKyAgICAkdGVzdF9tb2RlID0gYXJyYXlfZ2V0KCRkYXRhLCAndGVzdE1vZGUn
LCAnYWx0ZXJuYXRlJyk7CiAgICAgJG5lZWRzX25vdGlmaWNhdGlvbiA9IGFycmF5X2dldCgkZGF0
YSwgJ25lZWRzTm90aWZpY2F0aW9uJywgRmFsc2UpOwogICAgICR0ZXN0X2dyb3VwX25hbWUgPSBh
cnJheV9nZXQoJGRhdGEsICd0ZXN0R3JvdXBOYW1lJyk7CiAgICAgJHJldmlzaW9uX3NldF9saXN0
ID0gYXJyYXlfZ2V0KCRkYXRhLCAncmV2aXNpb25TZXRzJyk7CkBAIC0yMCw2ICsyMSw5IEBAIGZ1
bmN0aW9uIG1haW4oKSB7CiAgICAgaWYgKCEkbmFtZSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdNaXNzaW5nTmFtZScsIGFycmF5KCduYW1lJyA9PiAkbmFtZSkpOwogCisgICAgaWYgKCFpbl9h
cnJheSgkdGVzdF9tb2RlLCBhcnJheSgnYWx0ZXJuYXRlJywgJ3NlcXVlbnRpYWwnKSkpCisgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZE1vZGUnLCBhcnJheSgnbW9kZScgPT4gJHRlc3Rf
bW9kZSkpOworCiAgICAgJHJhbmdlID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRhLCBhcnJheSgn
c3RhcnRSdW4nID0+ICdpbnQnLCAnZW5kUnVuJyA9PiAnaW50JykpOwogCiAgICAgJHN0YXJ0X3J1
biA9IGVuc3VyZV9yb3dfYnlfaWQoJGRiLCAndGVzdF9ydW5zJywgJ3J1bicsICRyYW5nZVsnc3Rh
cnRSdW4nXSwgJ0ludmFsaWRTdGFydFJ1bicsICRyYW5nZSk7CkBAIC04NSw3ICs4OSw3IEBAIGZ1
bmN0aW9uIG1haW4oKSB7CiAgICAgICAgICR0cmlnZ2VyYWJsZV9pZCA9ICR0cmlnZ2VyYWJsZVsn
aWQnXTsKICAgICAgICAgJHRlc3RfaWQgPSAkdHJpZ2dlcmFibGVbJ3Rlc3QnXTsKICAgICAgICAg
JGNvbW1pdF9zZXRzID0gY29tbWl0X3NldHNfZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdn
ZXJhYmxlX2lkLCAkcmV2aXNpb25fc2V0X2xpc3QpOwotICAgICAgICBjcmVhdGVfdGVzdF9ncm91
cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkdGVzdF9n
cm91cF9uYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRjb25maWdbJ2NvbmZpZ19wbGF0
Zm9ybSddLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24p
OworICAgICAgICBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29t
bWl0X3NldHMsICR0YXNrX2lkLCAkdGVzdF9ncm91cF9uYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFi
bGVfaWQsICRjb25maWdbJ2NvbmZpZ19wbGF0Zm9ybSddLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25f
Y291bnQsICR0ZXN0X21vZGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogICAgIH0KIAogICAgICRk
Yi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3Jv
dXAucGhwCmluZGV4IDc0MjUzZmJlNzg2NTliYTJmNmUwOTk5MzMxMDFiYjhhMjlmMzExZGUuLmI1
NmY0NGE5NGQ5YzJhZjhhYzNiMTI0OTQ3MTZjNzNjNGY3NzQyM2UgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3Jv
dXAucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCkBAIC0xOCw2ICsxOCw3IEBAIGZ1bmN0aW9uIG1haW4o
KQogICAgICR0YXNrX2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICd0YXNrJyk7CiAgICAgJHRh
c2tfbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rhc2tOYW1lJyk7CiAgICAgJHJlcGV0aXRpb25f
Y291bnQgPSAkYXJndW1lbnRzWydyZXBldGl0aW9uQ291bnQnXTsKKyAgICAkdGVzdF9tb2RlID0g
YXJyYXlfZ2V0KCRkYXRhLCAndGVzdE1vZGUnLCAnYWx0ZXJuYXRlJyk7CiAgICAgJG5lZWRzX25v
dGlmaWNhdGlvbiA9IGFycmF5X2dldCgkZGF0YSwgJ25lZWRzTm90aWZpY2F0aW9uJywgRmFsc2Up
OwogICAgICRwbGF0Zm9ybV9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ3BsYXRmb3JtJyk7CiAgICAg
JHRlc3RfaWQgPSBhcnJheV9nZXQoJGRhdGEsICd0ZXN0Jyk7CkBAIC00Miw2ICs0Myw5IEBAIGZ1
bmN0aW9uIG1haW4oKQogICAgIGVsc2UgaWYgKCRyZXBldGl0aW9uX2NvdW50IDwgMSkKICAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwZXRpdGlvbkNvdW50JywgYXJyYXkoJ3JlcGV0
aXRpb25Db3VudCcgPT4gJHJlcGV0aXRpb25fY291bnQpKTsKIAorICAgIGlmICghaW5fYXJyYXko
JHRlc3RfbW9kZSwgYXJyYXkoJ2FsdGVybmF0ZScsICdzZXF1ZW50aWFsJykpKQorICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRNb2RlJywgYXJyYXkoJ21vZGUnID0+ICR0ZXN0X21vZGUp
KTsKKwogICAgICR0cmlnZ2VyYWJsZV9pZCA9IE5VTEw7CiAgICAgaWYgKCR0YXNrX2lkKSB7CiAg
ICAgICAgICR0YXNrID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190YXNrcycsICd0
YXNrJywgYXJyYXkoJ2lkJyA9PiAkdGFza19pZCkpOwpAQCAtODYsNyArOTAsNyBAQCBmdW5jdGlv
biBtYWluKCkKICAgICBpZiAoJHRhc2tfbmFtZSkKICAgICAgICAgJHRhc2tfaWQgPSAkZGItPmlu
c2VydF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnbmFtZScgPT4gJHRhc2tf
bmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvcikpOwogCi0gICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rl
c3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwg
JG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwg
JHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pOworICAgICRncm91cF9pZCA9
IGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywg
JHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwg
JHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkdGVzdF9tb2RlLCAkbmVlZHNfbm90aWZpY2F0
aW9uKTsKIAogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmln
dXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpz
CmluZGV4IDg3YjE3YzE0NmQ0NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4ZTRjNjkuLjkwZWU3Zjg4
YzkzYTBiZjNjODc2NzM4MjVhZDRkNTEzMTBiMWY0MzMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10
ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcwpAQCAt
NDAsOSArNDAsOSBAQCBjbGFzcyBDdXN0b21Db25maWd1cmF0aW9uVGVzdEdyb3VwRm9ybSBleHRl
bmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICBjb25zdCB0ZXN0ID0gY29uZmlndXJhdG9yLnRl
c3RzKClbMF07IC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgbXVsdGlw
bGUgdGVzdHMuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5faGFzVGFzayA9PT0gIXRh
c2tOYW1lKTsKICAgICAgICAgaWYgKCF0aGlzLl9oYXNUYXNrKQotICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0ZXN0
R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIHRoaXMuX25v
dGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFy
dFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNl
dHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uLCB0
aGlzLl90ZXN0TW9kZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFt
ZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9y
ZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0
LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24sIHRoaXMuX3Rlc3RNb2RlKTsKICAgICB9CiAKICAg
ICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpz
CmluZGV4IGE0M2VkZjM1MDhiY2YwNzQ2MjVkYjk5NjRmNjA0ZGUxODA4Mjk2NGYuLjg2YzliOWMx
MzRhZTM1MjkzMmQ2MzQ4NjQ0ODIzOGFiZTBmYTgzMWMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3Jv
dXAtZm9ybS5qcwpAQCAtNiw2ICs2LDcgQEAgY2xhc3MgVGVzdEdyb3VwRm9ybSBleHRlbmRzIENv
bXBvbmVudEJhc2UgewogICAgICAgICBzdXBlcihuYW1lIHx8ICd0ZXN0LWdyb3VwLWZvcm0nKTsK
ICAgICAgICAgdGhpcy5fcmVwZXRpdGlvbkNvdW50ID0gNDsKICAgICAgICAgdGhpcy5fbm90aWZ5
T25Db21wbGV0aW9uID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fdGVzdE1vZGUgPSAnYWx0ZXJuYXRl
JzsKICAgICB9CiAKICAgICBzZXRSZXBldGl0aW9uQ291bnQoY291bnQpCkBAIC0yMiwxMiArMjMs
MTkgQEAgY2xhc3MgVGVzdEdyb3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAg
ICB9OwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb25DaGVja0JveCA9IHRoaXMuY29u
dGVudCgnbm90aWZ5LW9uLWNvbXBsZXRpb24tY2hlY2tib3gnKTsKICAgICAgICAgbm90aWZ5T25D
b21wbGV0aW9uQ2hlY2tCb3gub25jaGFuZ2UgPSAoKSA9PiB0aGlzLl9ub3RpZnlPbkNvbXBsZXRp
b24gPSBub3RpZnlPbkNvbXBsZXRpb25DaGVja0JveC5jaGVja2VkOworICAgICAgICBjb25zdCBt
b2RlRXhwbGFuYXRpb24gPSB0aGlzLmNvbnRlbnQoJ21vZGUtZXhwbGFuYXRpb24nKTsKKyAgICAg
ICAgY29uc3QgdGVzdE1vZGVTZWxlY3QgPSB0aGlzLmNvbnRlbnQoJ3Rlc3QtbW9kZScpOworICAg
ICAgICB0ZXN0TW9kZVNlbGVjdC5vbmNoYW5nZSA9ICgpID0+IHsKKyAgICAgICAgICAgIHRoaXMu
X3Rlc3RNb2RlID0gdGVzdE1vZGVTZWxlY3QudmFsdWU7CisgICAgICAgICAgICBtb2RlRXhwbGFu
YXRpb24udGV4dENvbnRlbnQgPSB0ZXN0TW9kZVNlbGVjdC52YWx1ZSA9PSAnYWx0ZXJuYXRlJyA/
CisgICAgICAgICAgICAgICAgJyhBbHRlcm5hdGUgQSAmIEIgYmV0d2VlbiBpdGVyYXRpb25zKScg
OiAnKENvbXBsZXRlIGFsbCBBIGl0ZXJhdGlvbnMgYmVmb3JlIEIpJzsKKyAgICAgICAgfTsKICAg
ICAgICAgdGhpcy5jb250ZW50KCdmb3JtJykub25zdWJtaXQgPSB0aGlzLmNyZWF0ZUV2ZW50SGFu
ZGxlcigoKSA9PiB0aGlzLnN0YXJ0VGVzdGluZygpKTsKICAgICB9CiAKICAgICBzdGFydFRlc3Rp
bmcoKQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywg
dGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAg
ICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291
bnQsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbiwgdGhpcy5fdGVzdE1vZGUpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBodG1sVGVtcGxhdGUoKQpAQCAtNjUsNyArNzMsMTMgQEAgY2xhc3MgVGVzdEdy
b3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgICAgIDxvcHRpb24+
OTwvb3B0aW9uPgogICAgICAgICAgICAgICAgIDxvcHRpb24+MTA8L29wdGlvbj4KICAgICAgICAg
ICAgIDwvc2VsZWN0PgotICAgICAgICAgICAgaXRlcmF0aW9ucyBwZXIgc2V0CisgICAgICAgICAg
ICA8bGFiZWw+aXRlcmF0aW9ucyBwZXIgc2V0IGluPC9sYWJlbD4KKyAgICAgICAgICAgIDxzZWxl
Y3QgaWQ9InRlc3QtbW9kZSI+CisgICAgICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5hbHRl
cm5hdGU8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uPnNlcXVlbnRpYWw8L29wdGlv
bj4KKyAgICAgICAgICAgIDwvc2VsZWN0PgorICAgICAgICAgICAgPGxhYmVsPm1vZGU8L2xhYmVs
PgorICAgICAgICAgICAgPGxhYmVsIGlkPSJtb2RlLWV4cGxhbmF0aW9uIj4oQWx0ZXJuYXRlIEEg
JiBCIGJldHdlZW4gaXRlcmF0aW9ucyk8L2xhYmVsPgogICAgICAgICAgICAgPGlucHV0IGlkPSJu
b3RpZnktb24tY29tcGxldGlvbi1jaGVja2JveCIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQvPk5v
dGlmeSBvbiBjb21wbGV0aW9uCiAgICAgICAgIGA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMK
aW5kZXggMTc3NmE4MTdiYzMxOTk2OTI5NzJhNDBhYTRlZDY4YzFhOTVjZGVlZS4uNzdhYjdlOTgz
OTgwYTg5YmUwNjI0YjkzZjNmMTU0NzE1ZDQyZmFlNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCkBA
IC0zMjQsNyArMzI0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrIGV4dGVuZHMgTGFiZWxlZE9iamVj
dCB7CiAgICAgICAgIHJldHVybiByZXN1bHRzOwogICAgIH0KIAotICAgIHN0YXRpYyBhc3luYyBj
cmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRlc3RHcm91cE5hbWU9bnVsbCwgcmVw
ZXRpdGlvbkNvdW50PTAsIG5vdGlmeU9uQ29tcGxldGlvbj1mYWxzZSkKKyAgICBzdGF0aWMgYXN5
bmMgY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCB0ZXN0R3JvdXBOYW1lPW51bGws
IHJlcGV0aXRpb25Db3VudD0wLCBub3RpZnlPbkNvbXBsZXRpb249ZmFsc2UsIHRlc3RNb2RlPSdh
bHRlcm5hdGUnKQogICAgIHsKICAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHtuYW1lLCBzdGFy
dFJ1bjogc3RhcnRQb2ludC5pZCwgZW5kUnVuOiBlbmRQb2ludC5pZH07CiAgICAgICAgIGlmICh0
ZXN0R3JvdXBOYW1lKSB7CkBAIC0zMzMsNiArMzMzLDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrIGV4
dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzWydyZXBldGl0aW9u
Q291bnQnXSA9IHJlcGV0aXRpb25Db3VudDsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3Rlc3RH
cm91cE5hbWUnXSA9IHRlc3RHcm91cE5hbWU7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzWyduZWVk
c05vdGlmaWNhdGlvbiddID0gbm90aWZ5T25Db21wbGV0aW9uOworICAgICAgICAgICAgcGFyYW1l
dGVyc1sndGVzdE1vZGUnXSA9IHRlc3RNb2RlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IHJl
c3BvbnNlID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lz
LXRhc2snLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5
SWQocmVzcG9uc2UudGFza0lkLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCmluZGV4IDk3ZThiYzhlZTNj
ZGE5YTZmNjQxNjIzNTM0ZTY3ZmI4MDAzOTk4MmIuLmY2NmE1YzE2Y2IzZjJlY2EzN2Q0NmM4ZWYz
MWMyMGI0YzBhZjVhZWIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwpAQCAtMTEsNyArMTEsNyBAQCBjbGFzcyBU
ZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5faXNIaWRkZW4g
PSBvYmplY3QuaGlkZGVuOwogICAgICAgICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVj
dC5uZWVkc05vdGlmaWNhdGlvbjsKICAgICAgICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9
IG9iamVjdC5tYXlOZWVkTW9yZVJlcXVlc3RzOwotICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRp
dGlvbkNvdW50ID0gb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMu
X2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSBwYXJzZUludChvYmplY3QuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCk7CiAgICAgICAgIHRoaXMuX2J1aWxkUmVxdWVzdHMgPSBbXTsKICAgICAgICAgdGhp
cy5fb3JkZXJCdWlsZFJlcXVlc3RzTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KCguLi5idWlsZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRSZXF1ZXN0
cy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyKCkgLSBiLm9yZGVyKCkpOwpAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5f
bmVlZHNOb3RpZmljYXRpb24gPSBvYmplY3QubmVlZHNOb3RpZmljYXRpb247CiAgICAgICAgIHRo
aXMuX25vdGlmaWNhdGlvblNlbnRBdCA9IG9iamVjdC5ub3RpZmljYXRpb25TZW50QXQgPyBuZXcg
RGF0ZShvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0KSA6IG51bGw7CiAgICAgICAgIHRoaXMuX21h
eU5lZWRNb3JlUmVxdWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0czsKLSAgICAgICAg
dGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9IG9iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50OworICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gcGFyc2VJbnQob2Jq
ZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQpOwogICAgIH0KIAogICAgIHRhc2soKSB7IHJldHVy
biBBbmFseXNpc1Rhc2suZmluZEJ5SWQodGhpcy5fdGFza0lkKTsgfQpAQCAtODEsMTEgKzgxLDEw
IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1
cm4gdGhpcy5fb3JkZXJCdWlsZFJlcXVlc3RzTGF6aWx5LmV2YWx1YXRlKC4uLnRoaXMuX2J1aWxk
UmVxdWVzdHMpOwogICAgIH0KIAotICAgIHJlcGV0aXRpb25Db3VudCgpCisgICAgcmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
YnVpbGRSZXF1ZXN0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY29u
c3QgY29tbWl0U2V0ID0gdGhpcy5fYnVpbGRSZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKICAgICAg
ICAgbGV0IGNvdW50ID0gMDsKICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHRoaXMuX2J1
aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVl
c3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KQpAQCAtOTQsNiArOTMsMjAgQEAgY2xhc3MgVGVz
dEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBjb3VudDsKICAg
ICB9CiAKKyAgICB0ZXN0TW9kZSgpCisgICAgeworICAgICAgICBjb25zdCBmaXJzdFR3b0J1aWxk
UmVxdWVzdHMgPSB0aGlzLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpLmZpbHRlcihidWlsZFJlcXVl
c3QgPT4gYnVpbGRSZXF1ZXN0Lm9yZGVyKCkgPiAwKS5zbGljZSgwLCAyKTsKKyAgICAgICAgaWYg
KGZpcnN0VHdvQnVpbGRSZXF1ZXN0cy5sZW5ndGggPCAyKQorICAgICAgICAgICAgcmV0dXJuICdh
bHRlcm5hdGUnOworICAgICAgICBjb25zdCBbZmlyc3QsIHNlY29uZF0gPSBmaXJzdFR3b0J1aWxk
UmVxdWVzdHM7CisgICAgICAgIHJldHVybiBmaXJzdC5jb21taXRTZXQoKSA9PSBzZWNvbmQuY29t
bWl0U2V0KCkgPyAnc2VxdWVudGlhbCcgOiAnYWx0ZXJuYXRlJzsKKyAgICB9CisKKyAgICBoYXNS
ZXRyeSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCku
c29tZShjb21taXRTZXQgPT4gdGhpcy5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0
U2V0KSA+IHRoaXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKKyAgICB9CisKICAgICByZXF1
ZXN0ZWRDb21taXRTZXRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlUmVx
dWVzdGVkQ29tbWl0U2V0c0xhemlseS5ldmFsdWF0ZSguLi50aGlzLl9vcmRlcmVkQnVpbGRSZXF1
ZXN0cygpKTsKQEAgLTEwMiw3ICsxMTUsNiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0IHsKICAgICBzdGF0aWMgX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzKC4uLm9y
ZGVyZWRCdWlsZFJlcXVlc3RzKQogICAgIHsKICAgICAgICAgY29uc3QgcmVxdWVzdGVkQ29tbWl0
U2V0cyA9IFtdOwotICAgICAgICBjb25zdCBjb21taXRTZXRMYWJlbE1hcCA9IG5ldyBNYXA7CiAg
ICAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiBvcmRlcmVkQnVpbGRSZXF1ZXN0cykgewogICAg
ICAgICAgICAgY29uc3Qgc2V0ID0gcmVxdWVzdC5jb21taXRTZXQoKTsKICAgICAgICAgICAgIGlm
ICghcmVxdWVzdGVkQ29tbWl0U2V0cy5pbmNsdWRlcyhzZXQpKQpAQCAtMjI4LDExICsyNDAsMTIg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIGFzeW5jIGFkZE1vcmVCdWlsZFJlcXVlc3RzKGFkZENvdW50KQorICAgIGFz
eW5jIGFkZE1vcmVCdWlsZFJlcXVlc3RzKGFkZENvdW50LCBjb21taXRTZXQ9bnVsbCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoewogICAgICAg
ICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKICAgICAgICAgICAgIGFkZENvdW50LAorICAgICAgICAg
ICAgY29tbWl0U2V0LAogICAgICAgICB9LCAnYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CiAgICAgfQog
CkBAIC0yNDQsMzkgKzI1NywzNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZVdpdGhUYXNrKHRh
c2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1p
dFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlV2l0aFRh
c2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
Y29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9kZSkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25zdCBy
ZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0
U2V0cyk7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNrTmFtZSwgbmFtZTogZ3JvdXBOYW1l
LCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291
bnQsIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9u
fTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0
LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gQW5h
bHlzaXNUYXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7Ci0gICAgICAgIH0pLnRo
ZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoRm9yVGFzayh0YXNr
LmlkKCkpLnRoZW4oKCkgPT4gdGFzayk7Ci0gICAgICAgIH0pOworICAgICAgICBjb25zdCBwYXJh
bXMgPSB7dGFza05hbWUsIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCks
IHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LAorICAgICAgICAgICAgcmV2aXNpb25T
ZXRzLCB0ZXN0TW9kZSwgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9ufTsK
KyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKTsKKyAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFu
YWx5c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhd2Fp
dCB0aGlzLmZldGNoRm9yVGFzayh0YXNrLmlkKCkpOworICAgICAgICByZXR1cm4gdGFzazsKICAg
ICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGFzaywgcGxh
dGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3Rp
ZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1
cmF0aW9uKHRhc2ssIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
Y29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9kZSkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25zdCBy
ZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0
U2V0cyk7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNrOiB0YXNrLmlkKCksIG5hbWU6IGdy
b3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRp
dGlvbkNvdW50LCByZXZpc2lvblNldHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29t
cGxldGlvbn07Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtdGVzdC1ncm91cCcsIHBhcmFtcykudGhlbigoZGF0YSkgPT4gewotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKLSAgICAgICAgfSk7
CisgICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNrOiB0YXNrLmlkKCksIG5hbWU6IGdyb3VwTmFt
ZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNv
dW50LAorICAgICAgICAgICAgcmV2aXNpb25TZXRzLCB0ZXN0TW9kZSwgbmVlZHNOb3RpZmljYXRp
b246ICEhbm90aWZ5T25Db21wbGV0aW9ufTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKTsKKyAg
ICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCddLCB0cnVl
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywg
bmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisg
ICAgc3RhdGljIGFzeW5jIGNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJl
cGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9kZSkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwog
ICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNv
bW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKLSAgICAgICAgICAgIHRhc2s6IHRhc2suaWQo
KSwKLSAgICAgICAgICAgIG5hbWU6IG5hbWUsCi0gICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6
IHJlcGV0aXRpb25Db3VudCwKLSAgICAgICAgICAgIHJldmlzaW9uU2V0czogcmV2aXNpb25TZXRz
LAotICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9uLAot
ICAgICAgICB9KS50aGVuKChkYXRhKSA9PiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQn
XSwgdHJ1ZSkpOworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlk
KCksIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCB0ZXN0TW9kZSwKKyAgICAg
ICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbgorICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCdd
LCB0cnVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgZmluZEFsbEJ5VGFzayh0YXNrSWQpCmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lz
LXRhc2stcGFnZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMv
YW5hbHlzaXMtdGFzay1wYWdlLmpzCmluZGV4IDNmNGZlZmZmMjdhNDM4MzY0MzA1YmJiODNkN2Ix
NmIzMjQwNWVjNzEuLjMwZjZjZDA1ZmQ1ODYyZjQ2MDNjZTAzNjU0OWE0YWQyMzlmNDE3YTYgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlz
aXMtdGFzay1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
cGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCkBAIC0yNCw4ICsyNCw4IEBAIGNsYXNzIEFuYWx5
c2lzVGFza0NoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogCiAgICAgZGlkQ29uc3Ry
dWN0U2hhZG93VHJlZSgpCiAgICAgewotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5U
b0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0
TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFw
LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5U
b0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0
TWFwLCBub3RpZnlPbkNvbXBsZXRpb24sIHRlc3RNb2RlKSA9PiB7CisgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9kZSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIApAQCAtMTA2LDggKzEwNiw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Jlc3VsdHNQYW5l
IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJlcG9zaXRvcnlQaWNrZXIuYWRkRXZl
bnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKSk7CiAgICAg
ICAgIHRoaXMucGFydCgnY29tbWl0LXZpZXdlcicpLnNldFNob3dSZXBvc2l0b3J5TmFtZShmYWxz
ZSk7CiAKLSAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVz
dGluZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21w
bGV0aW9uKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3Jv
dXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0
aW9uKTsKKyAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVz
dGluZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21w
bGV0aW9uLCB0ZXN0TW9kZSkgPT4geworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbign
bmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5vdGlm
eU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTIyMSw3
ICsyMjEsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lIGV4dGVuZHMgQ29t
cG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9IGN1cnJlbnRHcm91cDsK
ICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMucGFydCgnZm9ybScpOwogICAgICAgICBpZiAoIWZv
cm0uaGFzQ29tbWl0U2V0cygpICYmIGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAgIGZvcm0uc2V0
Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3VycmVudEdyb3VwLnBsYXRmb3Jt
KCksIGN1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSwgY3VycmVudEdyb3VwLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKSk7CisgICAgICAgICAgICBmb3JtLnNldENvbmZpZ3VyYXRpb25zKGN1cnJl
bnRHcm91cC50ZXN0KCksIGN1cnJlbnRHcm91cC5wbGF0Zm9ybSgpLCBjdXJyZW50R3JvdXAuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
KTsKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9CiAKQEAgLTI0Myw3ICsy
NDMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIGA7CiAgICAgfQotfTsKK30KIAogQ29t
cG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdhbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci1wYW5l
JywgQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSk7CiAKQEAgLTI2NywxNCArMjY3LDE0IEBA
IGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsK
ICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7CiAgICAgICAgIHRoaXMuY29udGVu
dCgnaGlkZS1idXR0b24nKS5vbmNsaWNrID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigndG9n
Z2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwotICAgICAg
ICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywg
KHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7Ci0gICAgICAgICAgICB0
aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsIHRoaXMuX2N1cnJlbnRUZXN0R3Jv
dXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgdGhpcy5w
YXJ0KCdyZXRyeS1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpID0+IHsKKyAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RH
cm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHRlc3RNb2RlKTsKICAg
ICAgICAgfSk7Ci0gICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0nKS5saXN0ZW5Ub0FjdGlv
bignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9
PiB7CisgICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3Rh
cnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9k
ZSkgPT4gewogICAgICAgICAgICAgY29uc3QgYmlzZWN0aW5nQ29tbWl0U2V0ID0gdGhpcy5fYmlz
ZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAuZ2V0KHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwog
ICAgICAgICAgICAgY29uc3QgW29uZUNvbW1pdFNldCwgYW5vdGhlckNvbW1pdFNldF0gPSB0aGlz
Ll9jdXJyZW50VGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKTsKICAgICAgICAgICAgIGNv
bnN0IGNvbW1pdFNldHMgPSBbb25lQ29tbWl0U2V0LCBiaXNlY3RpbmdDb21taXRTZXQsIGFub3Ro
ZXJDb21taXRTZXRdOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVz
dEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNv
dW50LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlv
bignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91cCwgY29tbWl0U2V0cywg
cmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHRlc3RNb2RlKTsKICAgICAgICAg
fSk7CiAgICAgfQogCkBAIC0zNzEsMTUgKzM3MSwxMyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0
R3JvdXBQYW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGlmIChjdXJyZW50R3Jv
dXApIHsKICAgICAgICAgICAgIHRoaXMucGFydCgncmV0cnktZm9ybScpLnNldFJlcGV0aXRpb25D
b3VudChjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKICAgICAgICAgICAg
IHRoaXMucGFydCgnYmlzZWN0LWZvcm0nKS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVudEdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7Ci0gICAgICAgICAgICBjb25zdCBzdGF0dXNTdW1t
YXJ5ID0gYCR7Y3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVxdWVzdGVk
LCAke2N1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSAtIGN1cnJlbnRHcm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCl9IGFkZGVkIGR1ZSB0byBmYWlsdXJlcy5gOwotICAgICAgICAgICAg
dGhpcy5jb250ZW50KCdzdGF0dXMtc3VtbWFyeScpLmlubmVySFRNTCA9IHN0YXR1c1N1bW1hcnk7
Ci0KKyAgICAgICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1bW1hcnknKS50ZXh0Q29udGVu
dCA9IHRoaXMuX3N1bW1hcml6ZWRUZXN0R3JvdXAoY3VycmVudEdyb3VwKTsKICAgICAgICAgICAg
IGNvbnN0IGF1dGhvcmVkQnkgPSBjdXJyZW50R3JvdXAuYXV0aG9yKCkgPyBgYnkgIiR7Y3VycmVu
dEdyb3VwLmF1dGhvcigpfSJgIDogJyc7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVl
c3Qtc3VtbWFyeScpLmlubmVySFRNTCA9IGBTY2hlZHVsZWQgJHthdXRob3JlZEJ5fSBhdCAke2N1
cnJlbnRHcm91cC5jcmVhdGVkQXQoKX1gCisgICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVl
c3Qtc3VtbWFyeScpLnRleHRDb250ZW50ID0gYFNjaGVkdWxlZCAke2F1dGhvcmVkQnl9IGF0ICR7
Y3VycmVudEdyb3VwLmNyZWF0ZWRBdCgpfWAKICAgICAgICAgfQogICAgICAgICB0aGlzLmNvbnRl
bnQoJ3JldHJ5LWZvcm0nKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6ICdu
b25lJzsKICAgICAgICAgdGhpcy5jb250ZW50KCdiaXNlY3QtZm9ybScpLnN0eWxlLmRpc3BsYXkg
PSBjdXJyZW50R3JvdXAgJiYgdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAuZ2V0
KGN1cnJlbnRHcm91cCkgPyBudWxsIDogJ25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQoJ3N0
YXR1cy1zdW1tYXJ5Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiBjdXJyZW50R3Jv
dXAucmVwZXRpdGlvbkNvdW50KCkgPiBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAgdGhpcy5jb250ZW50KCdzdGF0dXMtc3VtbWFy
eScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdyb3VwLmhhc1JldHJ5
KCkgPyBudWxsIDogJ25vbmUnOwogICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFy
eScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOwogCiAgICAg
ICAgIGNvbnN0IGhpZGVCdXR0b24gPSB0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJyk7CkBAIC0z
ODksNiArMzg3LDQyIEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBD
b21wb25lbnRCYXNlIHsKICAgICAgICAgdGhpcy5jb250ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2Fu
Y2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91
cC5oYXNQZW5kaW5nKCkgPyBudWxsIDogJ25vbmUnOwogICAgIH0KIAorICAgIF9zdW1tYXJpemVk
VGVzdEdyb3VwKHRlc3RHcm91cCkKKyAgICB7CisgICAgICAgIGlmICghdGVzdEdyb3VwLmhhc1Jl
dHJ5KCkpCisgICAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAgIGNvbnN0IHJldHJ5Q291bnRC
eUNvbW1pdFNldCA9IG5ldyBNYXA7CisgICAgICAgIGxldCBjb25maWd1cmF0aW9uTGFiZWwgPSAn
QSc7CisgICAgICAgIGxldCBhZGRlZFJlcGV0aXRpb25Gb3JQcmV2aW91c0NvbmZpZ3VyYXRpb24g
PSAtMTsKKyAgICAgICAgbGV0IHNhbWVSZXRyeUNvdW50ID0gdHJ1ZTsKKyAgICAgICAgdGVzdEdy
b3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5mb3JFYWNoKGNvbW1pdFNldCA9PiB7CisgICAgICAg
ICAgICBjb25zdCBhZGRlZFJlcGV0aXRpb25Gb3JDdXJyZW50Q29uZmlndXJhdGlvbiA9IHRlc3RH
cm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSAtIHRlc3RHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCk7CisgICAgICAgICAgICByZXRyeUNvdW50QnlDb21taXRT
ZXQuc2V0KGNvbmZpZ3VyYXRpb25MYWJlbCwgYWRkZWRSZXBldGl0aW9uRm9yQ3VycmVudENvbmZp
Z3VyYXRpb24pCisgICAgICAgICAgICBjb25maWd1cmF0aW9uTGFiZWwgPSBTdHJpbmcuZnJvbUNo
YXJDb2RlKGNvbmZpZ3VyYXRpb25MYWJlbC5jaGFyQ29kZUF0KDApICsgMSk7CisgICAgICAgICAg
ICBpZiAoYWRkZWRSZXBldGl0aW9uRm9yUHJldmlvdXNDb25maWd1cmF0aW9uID49IDAgJiYgYWRk
ZWRSZXBldGl0aW9uRm9yQ3VycmVudENvbmZpZ3VyYXRpb24gIT09IGFkZGVkUmVwZXRpdGlvbkZv
clByZXZpb3VzQ29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICBzYW1lUmV0cnlDb3VudCA9
IGZhbHNlOworICAgICAgICAgICAgYWRkZWRSZXBldGl0aW9uRm9yUHJldmlvdXNDb25maWd1cmF0
aW9uID0gYWRkZWRSZXBldGl0aW9uRm9yQ3VycmVudENvbmZpZ3VyYXRpb247CisgICAgICAgIH0p
OworCisgICAgICAgIGNvbnN0IHN0YXR1c1N1bW1hcnlQYXJ0cyA9IFtgJHt0ZXN0R3JvdXAuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpfSByZXF1ZXN0ZWQsYF07CisgICAgICAgIGlmIChzYW1lUmV0
cnlDb3VudCkKKyAgICAgICAgICAgIHN0YXR1c1N1bW1hcnlQYXJ0cy5wdXNoKGAke2FkZGVkUmVw
ZXRpdGlvbkZvclByZXZpb3VzQ29uZmlndXJhdGlvbn0gYWRkZWRgKQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGNvbnN0IHJldHJ5U3VtbWFyeVBhcnRzID0gW107CisgICAgICAgICAgICBm
b3IgKGNvbnN0IFtsYWJlbCwgY291bnRdIG9mIHJldHJ5Q291bnRCeUNvbW1pdFNldC5lbnRyaWVz
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICByZXRyeVN1bW1hcnlQYXJ0cy5wdXNoKGAke2NvdW50
fSBhZGRlZCB0byAke2xhYmVsfSBjb25maWd1cmF0aW9uYCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAocmV0cnlTdW1tYXJ5UGFydHMubGVuZ3RoID4gMSkKKyAgICAgICAgICAgICAg
ICBzdGF0dXNTdW1tYXJ5UGFydHMucHVzaChgJHtyZXRyeVN1bW1hcnlQYXJ0cy5zbGljZSgwLCAt
MSkuam9pbignLCAnKX0gYW5kICR7cmV0cnlTdW1tYXJ5UGFydHNbcmV0cnlTdW1tYXJ5UGFydHMu
bGVuZ3RoIC0gMV19YCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RhdHVz
U3VtbWFyeVBhcnRzLnB1c2gocmV0cnlTdW1tYXJ5UGFydHNbMF0pOworICAgICAgICB9CisgICAg
ICAgIHN0YXR1c1N1bW1hcnlQYXJ0cy5wdXNoKCdkdWUgdG8gZmFpbHVyZXMuJykKKyAgICAgICAg
cmV0dXJuIHN0YXR1c1N1bW1hcnlQYXJ0cy5qb2luKCcgJyk7CisgICAgfQorCiAgICAgc3RhdGlj
IGh0bWxUZW1wbGF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYApAQCAtNTU2LDggKzU5MCw4
IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAg
ICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ3Nob3dIaWRkZW5UZXN0R3JvdXBzJywgKCkg
PT4gdGhpcy5fc2hvd0FsbFRlc3RHcm91cHMoKSk7CiAgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5U
b0FjdGlvbigncmVuYW1lVGVzdEdyb3VwJywgKHRlc3RHcm91cCwgbmV3TmFtZSkgPT4gdGhpcy5f
dXBkYXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3JvdXAsIG5ld05hbWUpKTsKICAgICAgICAgZ3JvdXBQ
YW5lLmxpc3RlblRvQWN0aW9uKCd0b2dnbGVUZXN0R3JvdXBWaXNpYmlsaXR5JywgKHRlc3RHcm91
cCkgPT4gdGhpcy5faGlkZUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwKSk7Ci0gICAgICAgIGdy
b3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmV0cnlUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCByZXBl
dGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gdGhpcy5fcmV0cnlDdXJyZW50VGVz
dEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pKTsK
LSAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCAodGVz
dEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikg
PT4gdGhpcy5fYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJl
cGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSk7CisgICAgICAgIGdyb3VwUGFuZS5s
aXN0ZW5Ub0FjdGlvbigncmV0cnlUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291
bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpID0+IHRoaXMuX3JldHJ5Q3VycmVudFRl
c3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uLCB0
ZXN0TW9kZSkpOworICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RH
cm91cCcsICh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25D
b21wbGV0aW9uLCB0ZXN0TW9kZSkgPT4gdGhpcy5fYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0
R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uLCB0
ZXN0TW9kZSkpOwogCiAgICAgICAgIHRoaXMucGFydCgnY2F1c2UtbGlzdCcpLmxpc3RlblRvQWN0
aW9uKCdhZGRJdGVtJywgKHJlcG9zaXRvcnksIHJldmlzaW9uKSA9PiB7CiAgICAgICAgICAgICB0
aGlzLl9hc3NvY2lhdGVDb21taXQoJ2NhdXNlJywgcmVwb3NpdG9yeSwgcmV2aXNpb24pOwpAQCAt
ODMyLDE5ICs4NjYsMjIgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRo
SGVhZGluZyB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIF9yZXRyeUN1cnJlbnRUZXN0R3Jv
dXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBh
c3luYyBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBu
b3RpZnlPbkNvbXBsZXRpb24sIHRlc3RNb2RlKQogICAgIHsKICAgICAgICAgY29uc3QgZXhpc3Rp
bmdOYW1lcyA9ICh0aGlzLl90ZXN0R3JvdXBzIHx8IFtdKS5tYXAoKGdyb3VwKSA9PiBncm91cC5u
YW1lKCkpOwogICAgICAgICBjb25zdCBuZXdOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVXaXRo
b3V0Q29sbGlzaW9uKHRlc3RHcm91cC5uYW1lKCksIG5ldyBTZXQoZXhpc3RpbmdOYW1lcykpOwog
ICAgICAgICBjb25zdCBjb21taXRTZXRMaXN0ID0gdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKTsKICAgICAgICAgY29uc3QgcGxhdGZvcm0gPSB0aGlzLl90YXNrLnBsYXRmb3JtKCkgfHwg
dGVzdEdyb3VwLnBsYXRmb3JtKCk7Ci0gICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0
aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3RHcm91cC50ZXN0
KCksIG5ld05hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25Db21w
bGV0aW9uKQotICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJpbmQo
dGhpcyksIGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29u
c3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJh
dGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVzdEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwKKyAg
ICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldExpc3QsIG5vdGlmeU9uQ29t
cGxldGlvbiwgdGVzdE1vZGUpOworICAgICAgICAgICAgdGhpcy5fZGlkRmV0Y2hBbmFseXNpc1Jl
c3VsdHModGVzdEdyb3Vwcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAg
ICBhbGVydCgnRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwot
ICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGFzeW5jIF9iaXNlY3RDdXJyZW50
VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlP
bkNvbXBsZXRpb24pCisgICAgYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3Vw
LCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1v
ZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXN0R3JvdXAudGFzaygpKTsKICAg
ICAgICAgY29uc3QgZXhpc3RpbmdUZXN0R3JvdXBOYW1lcyA9IG5ldyBTZXQoKHRoaXMuX3Rlc3RH
cm91cHMgfHwgW10pLm1hcCgodGVzdEdyb3VwKSA9PiB0ZXN0R3JvdXAubmFtZSgpKSk7CkBAIC04
NTQsNyArODkxLDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVh
ZGluZyB7CiAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29tbWl0U2V0ID0gY29tbWl0U2V0c1tp
XTsKICAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cE5hbWUgPSBDb21taXRTZXQuY3JlYXRlTmFt
ZVdpdGhvdXRDb2xsaXNpb24oQ29tbWl0U2V0LmRpZmYocHJldmlvdXNDb21taXRTZXQsIGN1cnJl
bnRDb21taXRTZXQpLCBleGlzdGluZ1Rlc3RHcm91cE5hbWVzKTsKICAgICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVh
dGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXAudGFzaygpLCB0ZXN0R3JvdXBOYW1lLCBy
ZXBldGl0aW9uQ291bnQsIFtwcmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldF0sIG5v
dGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3
YWl0IFRlc3RHcm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXAudGFzaygp
LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIFtwcmV2aW91c0NvbW1pdFNldCwgY3Vy
cmVudENvbW1pdFNldF0sIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpOwogICAgICAgICAg
ICAgICAgIGF3YWl0IHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKICAgICAg
ICAgICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRv
IGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwpAQCAtODYzLDcgKzkwMCw3IEBA
IGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAg
ICB9CiAgICAgfQogCi0gICAgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0
TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5
T25Db21wbGV0aW9uKQorICAgIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNl
dExpc3QodGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5vdGlm
eU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFzRHVw
bGljYXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3JvdXBOYW1lKSkgewogICAgICAgICAgICAgYWxlcnQo
YFRoZXJlIGlzIGFscmVhZHkgYSB0ZXN0IGdyb3VwIG5hbWVkICIke3Rlc3RHcm91cE5hbWV9ImAp
OwpAQCAtODg5LDEzICs5MjYsMTMgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBh
Z2VXaXRoSGVhZGluZyB7CiAgICAgICAgIGZvciAobGV0IGxhYmVsIGluIGNvbW1pdFNldE1hcCkK
ICAgICAgICAgICAgIGNvbW1pdFNldHMucHVzaChjb21taXRTZXRNYXBbbGFiZWxdKTsKIAotICAg
ICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRoaXMuX3Rh
c2ssIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25D
b21wbGV0aW9uKQorICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0
R3JvdXBzKHRoaXMuX3Rhc2ssIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0
U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9kZSkKICAgICAgICAgICAgIC50aGVuKHRo
aXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsKICAg
ICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBl
cnJvcik7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIF9jcmVhdGVDdXN0b21UZXN0R3JvdXAo
cmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVz
dCwgbm90aWZ5T25Db21wbGV0aW9uKQorICAgIGFzeW5jIF9jcmVhdGVDdXN0b21UZXN0R3JvdXAo
cmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVz
dCwgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3Rhc2suaXNDdXN0b20oKSk7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBs
aWNhdGVUZXN0R3JvdXBOYW1lKHRlc3RHcm91cE5hbWUpKSB7CkBAIC05MDMsMTAgKzk0MCwxMiBA
QCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRlc3RHcm91cC5jcmVhdGVXaXRo
Q3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVzdCwgdGVzdEdyb3Vw
TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCi0g
ICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHMuYmluZCh0aGlzKSwgZnVu
Y3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMu
X3Rhc2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpOworICAgICAgICAgICAgdGhp
cy5fZGlkRmV0Y2hBbmFseXNpc1Jlc3VsdHModGVzdEdyb3VwcykKKyAgICAgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3Qg
Z3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAg
X2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcwppbmRleCBkMGFmMTcz
ZGFhZDMyYjQ1YjIyZDhiYTk1M2ExNmVjMTk2MjZhYzNkLi42ZDcyZmY4N2ZhNzM5MWJkMmVlYzNl
ZTM3Mjk2NGQ2YmU0ZmY0MDg4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCkBAIC0xMjAsMTEgKzEyMCwxOSBAQCBj
bGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgY29uc3QgY3Jl
YXRlV2l0aFRlc3RHcm91cENoZWNrYm94ID0gdGhpcy5jb250ZW50KCdjcmVhdGUtd2l0aC10ZXN0
LWdyb3VwJyk7CiAgICAgICAgIGNvbnN0IHJlcGV0aXRpb25Db3VudCA9IHRoaXMuY29udGVudCgn
Y29uZmlybS1yZXBldGl0aW9uJyk7CiAgICAgICAgIGNvbnN0IG5vdGlmeU9uQ29tcGxldGlvbiA9
IHRoaXMuY29udGVudCgnbm90aWZ5LW9uLWNvbXBsZXRpb24nKTsKKyAgICAgICAgY29uc3QgdGVz
dE1vZGUgPSB0aGlzLmNvbnRlbnQoJ3Rlc3QtbW9kZScpOworICAgICAgICBjb25zdCBtb2RlRXhw
bGFuYXRpb24gPSB0aGlzLmNvbnRlbnQoJ21vZGUtZXhwbGFuYXRpb24nKTsKICAgICAgICAgY3Jl
YXRlV2l0aFRlc3RHcm91cENoZWNrYm94Lm9uY2hhbmdlID0gKCkgPT4gewogICAgICAgICAgICAg
Y29uc3Qgc2hvdWxkRGlzYWJsZSA9ICFjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3guY2hlY2tl
ZDsKICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudC5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7
CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb24uZGlzYWJsZWQgPSBzaG91bGREaXNhYmxl
OwotICAgICAgICB9CisgICAgICAgICAgICB0ZXN0TW9kZS5kaXNhYmxlZCA9IHNob3VsZERpc2Fi
bGU7CisgICAgICAgICAgICBtb2RlRXhwbGFuYXRpb24uZGlzcGxheSA9IHNob3VsZERpc2FibGUg
PyAnbm9uZScgOiBudWxsOworICAgICAgICB9OworICAgICAgICB0ZXN0TW9kZS5vbmNoYW5nZSA9
ICgpID0+IHsKKyAgICAgICAgICAgIG1vZGVFeHBsYW5hdGlvbi50ZXh0Q29udGVudCA9IHRlc3RN
b2RlLnZhbHVlID09ICdhbHRlcm5hdGUnID8KKyAgICAgICAgICAgICAgICAnKEFsdGVybmF0ZSBB
ICYgQiBiZXR3ZWVuIGl0ZXJhdGlvbnMpJyA6ICcoQ29tcGxldGUgYWxsIEEgaXRlcmF0aW9ucyBi
ZWZvcmUgQiknOworICAgICAgICB9OwogICAgIH0KIAogICAgIHNlcmlhbGl6ZVN0YXRlKCkKQEAg
LTI0MywxMCArMjUxLDExIEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2Ug
ewogICAgICAgICBjb25zdCBjcmVhdGVXaXRoVGVzdEdyb3VwID0gdGhpcy5jb250ZW50KCdjcmVh
dGUtd2l0aC10ZXN0LWdyb3VwJykuY2hlY2tlZDsKICAgICAgICAgY29uc3QgcmVwZXRpdGlvbkNv
dW50ID0gdGhpcy5jb250ZW50KCdjb25maXJtLXJlcGV0aXRpb24nKS52YWx1ZTsKICAgICAgICAg
Y29uc3Qgbm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5jb250ZW50KCdub3RpZnktb24tY29tcGxl
dGlvbicpLmNoZWNrZWQ7CisgICAgICAgIGNvbnN0IHRlc3RNb2RlID0gdGhpcy5jb250ZW50KCd0
ZXN0LW1vZGUnKS5jaGVja2VkOwogCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBjb25zdCBh
bmFseXNpc1Rhc2sgPSBhd2FpdCAoY3JlYXRlV2l0aFRlc3RHcm91cCA/Ci0gICAgICAgICAgICAg
ICAgQW5hbHlzaXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZp
cm0nLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgOiBBbmFseXNpc1Rhc2su
Y3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7CisgICAgICAgICAgICAgICAgQW5h
bHlzaXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCBy
ZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpIDogQW5hbHlzaXNU
YXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCkpOwogICAgICAgICAgICAgbmV3
V2luZG93LmxvY2F0aW9uLmhyZWYgPSByb3V0ZXIudXJsKCdhbmFseXNpcy90YXNrLycgKyBhbmFs
eXNpc1Rhc2suaWQoKSk7CiAgICAgICAgICAgICB0aGlzLmZldGNoQW5hbHlzaXNUYXNrcyh0cnVl
KTsKICAgICAgICAgfSBjYXRjaChlcnJvcikgewpAQCAtNTg5LDYgKzU5OCwxNyBAQCBjbGFzcyBD
aGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxvcHRpb24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPml0
ZXJhdGlvbnM8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+
SW48L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InRlc3Qt
bW9kZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+
YWx0ZXJuYXRlPC9vcHRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRp
b24+c2VxdWVudGlhbDwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2Vs
ZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5tb2RlPC9sYWJlbD4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9Im1vZGUtZXhwbGFuYXRpb24iPihB
bHRlcm5hdGUgQSAmIEIgYmV0d2VlbiBpdGVyYXRpb25zKTwvbGFiZWw+CisgICAgICAgICAgICAg
ICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJub3Rp
Znktb24tY29tcGxldGlvbiIgY2hlY2tlZD4gTm90aWZ5IG9uIGNvbXBsZXRpb248L2xhYmVsPgog
ICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgPC9mb3Jt
PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9j
cmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCmluZGV4IDMwMWZkMmEy
OTA2NTFkNTEyOGMzNTIzYWY0OTgyMGYyMDNiYzY2YTMuLmFlN2Y4ZTdjNGUxNmIxYjBhMDRhMmZl
MTAzMmNmMDg1Yjk3NmU5NDUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBh
Z2UuanMKQEAgLTIyLDE0ICsyMiwxNCBAQCBjbGFzcyBDcmVhdGVBbmFseXNpc1Rhc2tQYWdlIGV4
dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVu
VG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91
cC5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBfY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3Vw
KHJlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRl
c3QsIHRhc2tOYW1lLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUFuYWx5
c2lzVGFza1dpdGhHcm91cChyZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNl
dHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgbm90aWZ5T25Db21wbGV0aW9uLCB0ZXN0TW9k
ZSkKICAgICB7Ci0gICAgICAgIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxh
dGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywg
bm90aWZ5T25Db21wbGV0aW9uKS50aGVuKCh0YXNrKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCB1
cmwgPSB0aGlzLnJvdXRlcigpLnVybChgYW5hbHlzaXMvdGFzay8ke3Rhc2suaWQoKX1gKTsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBUZXN0R3JvdXAuY3Jl
YXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbiwgdGVzdE1vZGUpOwog
ICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90
YXNrLyR7dGFzay5pZCgpfWApOwotICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3
IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQog
CiAgICAgcmVuZGVyKCkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVp
bGQtcmVxdWVzdHMtdGVzdHMuanMKaW5kZXggZGNlMDljYmFiMzUwYTIyYTgzMWQ1YmY5OTIxN2Fl
NzA5OTcyNjk4Mi4uZjFkOGRmYTVmODkxMzRmZGNhMDg3ODEwYTZjMDZkN2IzYThiZTk1YyAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2Vk
LWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVz
dHMuanMKQEAgLTEzNCw3ICsxMzQsOCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1i
dWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBv
c2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0g
J1dlYktpdCcpWzBdOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5
MTYyMyd9fV07CiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCi0gICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0
YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQo
KSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2Us
IHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgICAgICB7bmFtZTog
J3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBs
YXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAg
IG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNl
dHMsIGNvbW1pdFNldDogbnVsbH0pOwogICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSBy
ZXN1bHRbJ3Rlc3RHcm91cElkJ107CiAKICAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBt
YXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CkBAIC0xNDQsMTQgKzE0NSwxNiBAQCBkZXNjcmli
ZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwogICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKLSAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAg
ICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkK
KyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOwogICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CiAKICAg
ICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3Rz
Jywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSk7CiAKICAgICAgICAgY29u
c3QgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0
YXNrSWQnXSwgdHJ1ZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBz
Lmxlbmd0aCwgMSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVk
R3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpKSwgNCk7CisgICAgICAgIGZvciAoY29uc3QgY29t
bWl0U2V0IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0ucmVwZXRp
dGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkpLCA0KTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpKSwgMik7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJl
cXVlc3RzKCksIHRydWUpOwogICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB1cGRhdGVk
R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKSkgewpAQCAtMTc0LDEwICsxNzcsOTMgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigp
IHsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOwotICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAy
KTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJl
cGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpKSwgMik7CiAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAy
KTsKICAgICAgICAgYXdhaXQgZ3JvdXAudXBkYXRlSGlkZGVuRmxhZyh0cnVlKTsKIAogICAgICAg
ICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0Nhbm5vdEFkZFRvSGlkZGVuVGVzdEdyb3VwJywgYXN5bmMg
KCkgPT4gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3Rz
Jywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSkpCiAgICAgfSk7CisKKyAg
ICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gYWRkIGJ1aWxkIHJlcXVlc3RzIHRvIHRlc3QgZ3JvdXAg
Zm9yIGEgc3BlY2lmaWMgY29tbWl0IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQg
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qg
d2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0g
W3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25h
bWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmlj
YXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pOworICAgICAg
ICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAg
ICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7
J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisK
KyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2so
cmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCks
IHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9m
IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChwYXJzZUludChncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0
KSksIDIpOworCisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVz
dGVkQ29tbWl0U2V0cygpWzFdLmlkKCk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQs
IGFkZENvdW50OiAyLCBjb21taXRTZXR9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBjb25zdCBmaXJzdENvbW1p
dFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAg
ICBjb25zdCBidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBd
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNGb3JGaXJzdENvbW1pdFNldC5sZW5ndGgsIDIpOworCisg
ICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVk
Q29tbWl0U2V0cygpWzFdOworICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29t
bWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21t
aXRTZXQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29u
ZENvbW1pdFNldC5sZW5ndGgsIDQpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qg
d2l0aCAiQ29tbWl0U2V0Tm90SW5UZXN0R3JvdXAiIGlmIGNvbW1pdCBzZXQgaXMgbm90IGluIHRl
c3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5k
Q3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRv
cnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2Vi
S2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXTog
e3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIz
J319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tO
YW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0
ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVw
ZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRH
cm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVk
R3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRl
c3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10s
IHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSksIDIpOworCisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVz
dGVkQ29tbWl0U2V0cygpWzBdLmlkKCkgKyB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVsxXS5pZCgpICsgMTsKKworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0NvbW1pdFNl
dE5vdEluVGVzdEdyb3VwJywgKCkgPT4KKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRD
b3VudDogMiwgY29tbWl0U2V0fSkpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qg
d2l0aCAiSW52YWxpZENvbW1pdFNldCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdl
cicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVU
YXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwo
KS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVsw
XTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdv
dGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1v
Y2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9u
Q291bnQ6IDIsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQg
PSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElk
LCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3Vw
cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7
CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gJ2ludmFsaWQnOworCisgICAgICAgIGF3YWl0
IGFzc2VydFRocm93cygnSW52YWxpZENvbW1pdFNldCcsICgpID0+CisgICAgICAgICAgICBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2Vy
dGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pKTsKKyAgICB9KTsKIH0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVz
dHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQt
YXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDJiMjc1MGFhN2EyZGQzYmM3
OTVhNzY3Mjc2NGJhYWEzZWI4NGQxYjYuLjhhZDRmNjZjN2I1OWEyMmRlNTc3YTIxMGYzNGExMDhl
ZWRjZGJhMjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUt
YW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtNjgyLDQgKzY4MiwxMDcgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzayB3aXRoIG5vZGUgcHJpdmlsZWdlZCBh
cGknLCBmdW5jdGkKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNv
bW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicp
OwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJl
cG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOwogICAgIH0p
OworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW4gYW5hbHlzaXMgdGFzayB3aXRoIHRlc3QgZ3Jv
dXAgd2l0aCAic2VxdWVudGlhbCIgbW9kZSB3aGVuIHNwZWNpZmllZCcsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgY29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0g
MTsKKyAgICAgICAgY29uc3QgdGVzdDFJZCA9IDI7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxl
SWQgPSAxMjM0OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwor
ICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU3VpdGUnfSk7
CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IHRlc3QxSWQsIG5hbWU6ICd0
ZXN0MScsIHBhcmVudDogMX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmll
cycsIHtpZDogd2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmlu
c2VydCgncGxhdGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9
KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEy
MzQsIG5hbWU6ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQo
J3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0
LW9ubHknLCB0cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5p
bnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwg
Z3JvdXA6IDIzNDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25m
aWd1cmF0aW9ucycsIHt0ZXN0OiB0ZXN0MUlkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dl
cmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9y
dChyZXBvcnRXaXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7Cisg
ICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0
LycsIGFub3RoZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5m
ZXRjaCgpOworCisgICAgICAgIGxldCB0ZXN0MSA9IFRlc3QuZmluZEJ5SWQodGVzdDFJZCk7Cisg
ICAgICAgIGxldCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsK
KyAgICAgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3Rf
Y29uZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0MS5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZv
cm06IHNvbWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQg
ZGIuc2VsZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAg
IGNvbnN0IG9uZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9
fTsKKyAgICAgICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZp
c2lvbjogJzE5MTYyMyd9fTsKKworICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2NvbmZp
cm0nLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29u
ZmlybScsIHJldmlzaW9uU2V0czogW29uZVJldmlzaW9uU2V0LCBhbm90aGVyUmV2aXNpb25TZXRd
LAorICAgICAgICAgICAgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLCBlbmRSdW46IHRlc3RS
dW5zWzFdWydpZCddLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdGVzdE1vZGU6ICdzZXF1ZW50
aWFsJ30pOworCisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBBbmFseXNpc1Rhc2suZmV0Y2hC
eUlkKGNvbnRlbnRbJ3Rhc2tJZCddKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRhc2su
bmFtZSgpLCAnY29uZmlybScpOworICAgICAgICBhc3NlcnQoIXRhc2suaGFzUmVzdWx0cygpKTsK
KyAgICAgICAgYXNzZXJ0KHRhc2suaGFzUGVuZGluZ1JlcXVlc3RzKCkpOworICAgICAgICBhc3Nl
cnQuZGVlcFN0cmljdEVxdWFsKHRhc2suYnVncygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwodGFzay5jYXVzZXMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKHRhc2suZml4ZXMoKSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFz
ay5jaGFuZ2VUeXBlKCksIG51bGwpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5w
bGF0Zm9ybSgpLmxhYmVsKCksICdzb21lIHBsYXRmb3JtJyk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0YXNrLm1ldHJpYygpLnRlc3QoKS5sYWJlbCgpLCAndGVzdDEnKTsKKworICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrLmlk
KCkpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwor
ICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGVzdEdyb3VwLm5hbWUoKSwgJ0NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0
Lm9rKHRlc3RHcm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgYnVpbGRS
ZXF1ZXN0cyA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0
KGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVzdHNbMV0uY29t
bWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCku
ZXF1YWxzKGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBm
aXJzdENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNv
bnN0IHNlY29uZENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAg
ICAgIGNvbnN0IHdlYmtpdFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKHdlYmtpdElk
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJl
cG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnko
d2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOworICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZE1vZGUiIHdoZW4gdGVzdCBtb2RlIGlzIG5l
aXRoZXIgImFsdGVybmF0ZSIgbm9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgY29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gMTsKKyAg
ICAgICAgY29uc3QgdGVzdDFJZCA9IDI7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAx
MjM0OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAg
ICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU3VpdGUnfSk7CisgICAg
ICAgIGF3YWl0IGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IHRlc3QxSWQsIG5hbWU6ICd0ZXN0MScs
IHBhcmVudDogMX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtp
ZDogd2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgn
cGxhdGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsKKyAg
ICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQsIG5h
bWU6ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdn
ZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9ubHkn
LCB0cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQo
J3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3JvdXA6
IDIzNDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0
aW9ucycsIHt0ZXN0OiB0ZXN0MUlkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dlcmFibGU6
IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChyZXBv
cnRXaXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAg
IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIGFu
b3RoZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgp
OworCisgICAgICAgIGxldCB0ZXN0MSA9IFRlc3QuZmluZEJ5SWQodGVzdDFJZCk7CisgICAgICAg
IGxldCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAg
ICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmln
dXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0MS5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06IHNv
bWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2Vs
ZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0
IG9uZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsKKyAg
ICAgICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjog
JzE5MTYyMyd9fTsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkTW9kZScsICgp
ID0+CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlz
aXMtdGFzaycsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogMiwKKyAgICAgICAg
ICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHJldmlzaW9uU2V0czogW29uZVJldmlz
aW9uU2V0LCBhbm90aGVyUmV2aXNpb25TZXRdLCB0ZXN0TW9kZTogJ2ludmFsaWQtbW9kZScsCisg
ICAgICAgICAgICAgICAgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLCBlbmRSdW46IHRlc3RS
dW5zWzFdWydpZCddLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZX0pKTsKKyAgICB9KTsKIH0pOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxl
Z2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMu
anMKaW5kZXggNjdkODRhZGFmNTk2YTE3MGJkZGZlYWYyMjQyMGYyYzI1MDVlMTNkNi4uZTRmZjUx
YmMzMWE2ZDgzYmQ1NGE0NjY2NTkyNGI0Y2U5YmIyZDA5NSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1n
cm91cC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC03LDYgKzcsOCBA
QCBjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMn
KTsKIGNvbnN0IFRlbXBvcmFyeUZpbGUgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZW1wb3Jhcnkt
ZmlsZS5qcycpLlRlbXBvcmFyeUZpbGU7CiBjb25zdCBhZGRXb3JrZXJGb3JSZXBvcnQgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFdvcmtlckZvclJlcG9y
dDsKIGNvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9u
LW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKK2NvbnN0IGFzc2VydFRocm93cyA9
IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYXNzZXJ0VGhyb3dz
OworCiAKIGZ1bmN0aW9uIGNyZWF0ZUFuYWx5c2lzVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMg
PSBbIjE5MTYyMiIsICIxOTE2MjMiXSkKIHsKQEAgLTQwMCw3ICs0MDIsNyBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5pZCgpLCBncm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAg
IGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBjb25z
dCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNDQ3LDcgKzQ0OSw3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAg
ICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAg
IGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00ODUsNyArNDg3LDcgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgs
IDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElk
KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNv
dW50KCksIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMg
PSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC01MjQsNyArNTI2LDcgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAg
ICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCksIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3Rp
ZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWls
ZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMik7CkBAIC01NTYsNyArNTU4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNv
bnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7
CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7
CkBAIC02MDMsNyArNjA1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02NDUsNyAr
NjQ3LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0
ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVw
ZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
cmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02OTQsNyArNjk2LDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsK
LSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAu
bmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBn
cm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC03NDMsNyArNzQ1LDcgQEAgZGVzY3JpYmUoJy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBj
b25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAg
ICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNv
bWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRm
b3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAg
LTgwOCw3ICs4MTAsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdy
b3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50
ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtODgzLDcgKzg4NSw3IEBAIGRlc2NyaWJl
KCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2Nr
RGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSk7CkBAIC05NjYsNyArOTY4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
dGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZp
bmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTEwNjAsNyArMTA2Miw3IEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSwgMik7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0
LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxh
dGZvcm1JZCgpKSk7CkBAIC0xMTU3LDcgKzExNTksNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNz
ZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJ
ZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwg
UGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTIzNSw3
ICsxMjM3LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVu
Z3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAg
ICAgICAgIGFzc2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29u
c3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtMTI2NCw3ICsxMjY2LDcgQEAgZGVzY3Jp
YmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5vaygh
Z3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3Jv
dXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAyKTsKQEAgLTEzMDgsNyArMTMxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBUZXN0R3Jv
dXAuc29ydEJ5TmFtZSh0ZXN0R3JvdXBzKTsKIAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRlc3RHcm91cHNbMF0ubmFtZSgpLCAndGVzdDEnKTsKLSAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMSk7CiAgICAgICAgICAgICBsZXQgcmVxdWVzdHMgPSB0ZXN0R3JvdXBzWzBdLmJ1aWxk
UmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDIpOwogICAgICAgICAgICAgbGV0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsK
QEAgLTEzMjEsNyArMTMyMyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRl
c3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
c2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOwogCiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5uYW1lKCksICd0ZXN0MicpOwot
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0ucmVwZXRpdGlvbkNv
dW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0u
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIHJlcXVlc3RzID0gdGVz
dEdyb3Vwc1sxXS5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKICAgICAgICAgICAgIHNldDAgPSByZXF1ZXN0c1swXS5j
b21taXRTZXQoKTsKQEAgLTEzMzYsNCArMTMzOCw1MyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYn
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRlc3Qg
Z3JvdXAgd2l0aCBhbiBhbmFseXNpcyB0YXNrIHdpdGggInNlcXVlbnRpYWwiIG1vZGUnLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29t
ZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVy
KChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAg
ICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0
LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFz
aycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJl
dmlzaW9uU2V0cywgdGVzdE1vZGU6ICdzZXF1ZW50aWFsJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7
CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsK
KworICAgICAgICBjb25zdCBbYW5hbHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21p
c2UuYWxsKFtBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3Jv
dXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChhbmFseXNpc1Rhc2submFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNv
bnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQub2soZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAu
YnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVu
Z3RoLCA0KTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMF0ub3JkZXIo
KSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sxXS5vcmRlcigpLCAx
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzJdLm9yZGVyKCksIDIpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAg
ICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1ZXN0c1sxXS5j
b21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQocmVxdWVzdHNbMl0uY29tbWl0U2V0KCkuZXF1
YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29uc3Qgc2V0MCA9IHJl
cXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBzZXQxID0gcmVxdWVzdHNbMl0u
Y29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MC5yZXBvc2l0
b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDAu
Y3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDEu
cmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNl
dDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2
MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkludmFsaWRNb2Rl
IiBpZiB0ZXN0IG1vZGUgaXMgbmVpdGhlciAiYWx0ZXJuYXRlIiBub3IgInNlcXVlbnRpYWwiJywg
YXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2so
J3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZp
bHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOwor
ICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjog
JzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisKKyAg
ICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkTW9kZScsICgpID0+CisgICAgICAgICAg
ICBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAn
dGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsCisgICAgICAgICAgICAgICAgcGxhdGZvcm06
IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwK
KyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdGVzdE1vZGU6ICdpbnZh
bGlkLW1vZGUnLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pKTsKKyAgICB9KTsK
IH0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9w
cml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAt
dGVzdHMuanMKaW5kZXggNDUwNmMzYjI3ZjA1ZjIzMmFiNDBjNWU2YWM3NGU3YWQ1ZjQyZDU5OC4u
M2ZkNjdjZmM0Yjg0ZGQzOTU3MmFmNmI5YjBjNGNmODBlNTMzY2Y0NiAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUt
dGVzdC1ncm91cC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xNjgs
NyArMTY4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcs
IGZ1bmN0aW9uKCl7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0
aCwgMSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7
CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBAIC0x
OTMsNyArMTkzLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91
cCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwog
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgZmFs
c2UpOwogICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJj
ZXMvY29tbW9uLW9wZXJhdGlvbnMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcwppbmRleCBlY2ZlYzhkMTZlOTM0
ZDU3ZDMyNzE4ODhlYzU2M2IzNDQ2ZWFiNGJhLi5hMDgwMzViODhhYjMwMDQxNmJiM2EzM2IxOGQw
ZDNlMzUzZjVlNjBiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcwpA
QCAtNTMsNyArNTMsNyBAQCBhc3luYyBmdW5jdGlvbiBhc3NlcnRUaHJvd3MoZXhwZWN0ZWRFcnJv
ciwgdGVzdEZ1bmN0aW9uKQogewogICAgIGxldCB0aHJvd25FeGNlcHRpb24gPSBmYWxzZTsKICAg
ICB0cnkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCkKKyAgICAgICAgICAgIGF3
YWl0IHRlc3RGdW5jdGlvbigpOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgICAgdGhyb3du
RXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVycm9yLCBleHBl
Y3RlZEVycm9yKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9q
cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzCmluZGV4IDkwNWJhMjI0
NWNiMDJhZTRlOTMzMTI2Yjc4OTZhNmIyOGEzMjFlNDUuLmUzZjA3ZDFkMTM0ZDQ0YjMwMmIzZjFi
MDc2Yzk4YTM1Mzg3NzA1MTAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcwpAQCAt
OSwzOCArOSw3NCBAQCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0
c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdAogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
ID0gMDsKLSAgICAgICAgbGV0IGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRT
ZXQgPSB0cnVlOwotICAgICAgICBsZXQgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNl
OwotICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29t
bWl0U2V0cygpKSB7Ci0gICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+
IGJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEJ1
aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4g
YnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAoIWNv
bXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50KQotICAgICAgICAgICAgICAgIGhhc0NvbXBsZXRlZEJ1
aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSBmYWxzZTsKLQotICAgICAgICAgICAgaGFzQ29t
cGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCAmPSAoY29tcGxldGVkQnVpbGRSZXF1
ZXN0Q291bnQgPiAwKTsKLSAgICAgICAgICAgIGNvbnN0IHVuZmluaXNoZWRCdWlsZFJlcXVlc3RD
b3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+ICFidWlsZFJlcXVl
c3QuaGFzRmluaXNoZWQoKSkubGVuZ3RoOwotICAgICAgICAgICAgLy8gInBvdGVudGlhbGx5U3Vj
Y2Vzc2Z1bENvdW50IiBtaWdodCBiZSBsYXJnZXIgdGhhbiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpIGFzIHVzZXIgbWF5IGFkZCBidWlsZCByZXF1ZXN0cyBtYW51YWxseS4KLSAg
ICAgICAgICAgIGNvbnN0IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVp
bGRSZXF1ZXN0Q291bnQgKyB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7Ci0gICAgICAgICAg
ICBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQsIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRp
YWxseVN1Y2Nlc3NmdWxDb3VudCk7Ci0KLSAgICAgICAgICAgIGlmICh1bmZpbmlzaGVkQnVpbGRS
ZXF1ZXN0Q291bnQpCi0gICAgICAgICAgICAgICAgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgd2lsbEV4Y2VlZE1heGltdW1SZXRyeSA9
IHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnQoKSArIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3Vu
dCA+IG1heGltdW1SZXRyeUZhY3RvciAqIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCk7CisgICAgICAgIGlmICh0ZXN0R3JvdXAudGVzdE1vZGUoKSA9PT0gJ2FsdGVybmF0ZScpCisg
ICAgICAgICAgICBhd2FpdCBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0Rm9yVGVzdEdyb3Vw
SW5BbHRlcm5hdGVNb2RlKHRlc3RHcm91cCwgbWF4aW11bVJldHJ5RmFjdG9yKTsKKyAgICAgICAg
ZWxzZSBpZiAodGVzdEdyb3VwLnRlc3RNb2RlKCkgPT09ICdzZXF1ZW50aWFsJykKKyAgICAgICAg
ICAgIGF3YWl0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RGb3JUZXN0R3JvdXBJblNlcXVl
bnRpYWxNb2RlKHRlc3RHcm91cCwgbWF4aW11bVJldHJ5RmFjdG9yKTsKKyAgICB9Cit9CiAKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50IDw9IHRlc3RH
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwotICAgICAgICBpZiAobWF4TWlzc2luZ0J1
aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc1VuZmluaXNo
ZWRCdWlsZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRT
ZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKK2FzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RGb3JUZXN0R3JvdXBJbkFsdGVybmF0ZU1vZGUodGVzdEdyb3VwLCBtYXhp
bXVtUmV0cnlGYWN0b3IpIHsKKyAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0g
MDsKKyAgICBsZXQgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IHRy
dWU7CisgICAgbGV0IGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgPSBmYWxzZTsKKyAgICBmb3Ig
KGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7Cisg
ICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRT
ZXQoY29tbWl0U2V0KS5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0LmlzVGVz
dCgpKTsKIAotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxs
RXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21t
aXRTZXQpIHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRNb3JlQnVpbGRSZXF1ZXN0
cyhtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOwotICAgICAgICAgICAgY29uc3QgYW5hbHlz
aXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOwotICAgICAgICAgICAgY29uc29s
ZS5sb2coYEFkZGVkICR7bWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50fSBidWlsZCByZXF1ZXN0
KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lz
VGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOwotICAgICAgICB9Ci0gICAg
ICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworICAg
ICAgICBjb25zdCBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmls
dGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3Ro
OworICAgICAgICBpZiAoIWNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50KQorICAgICAgICAgICAg
aGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IGZhbHNlOworCisgICAg
ICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgJj0gKGNvbXBsZXRl
ZEJ1aWxkUmVxdWVzdENvdW50ID4gMCk7CisgICAgICAgIGNvbnN0IHVuZmluaXNoZWRCdWlsZFJl
cXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+ICFidWls
ZFJlcXVlc3QuaGFzRmluaXNoZWQoKSkubGVuZ3RoOworICAgICAgICAvLyAicG90ZW50aWFsbHlT
dWNjZXNzZnVsQ291bnQiIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRlc3RHcm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCkgYXMgdXNlciBtYXkgYWRkIGJ1aWxkIHJlcXVlc3RzIG1hbnVhbGx5Lgor
ICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9IGNvbXBsZXRlZEJ1aWxk
UmVxdWVzdENvdW50ICsgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50OworICAgICAgICBtYXhN
aXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0
Q291bnQsIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRpYWxseVN1
Y2Nlc3NmdWxDb3VudCk7CisKKyAgICAgICAgaWYgKHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3Vu
dCkKKyAgICAgICAgICAgIGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgPSB0cnVlOwogICAgIH0K
KyAgICBjb25zdCB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gdGVzdEdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKS5zb21lKGNvbW1pdFNldCA9PgorICAgICAgICB0ZXN0R3JvdXAucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgKyBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291
bnQgPiBtYXhpbXVtUmV0cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpKTsKKworICAgIGNvbnNvbGUuYXNzZXJ0KG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA8
PSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKKyAgICBpZiAobWF4TWlzc2lu
Z0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc1VuZmlu
aXNoZWRCdWlsZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21t
aXRTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0
Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzQ29tcGxldGVkQnVpbGRSZXF1
ZXN0Rm9yRWFjaENvbW1pdFNldCkgeworICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuYWRkTW9yZUJ1
aWxkUmVxdWVzdHMobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50KTsKKyAgICAgICAgY29uc3Qg
YW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOworICAgICAgICBjb25z
b2xlLmxvZyhgQWRkZWQgJHttYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnR9IGJ1aWxkIHJlcXVl
c3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlz
aXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7CisgICAgfQorICAgIGF3
YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworfQorCithc3lu
YyBmdW5jdGlvbiBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0Rm9yVGVzdEdyb3VwSW5TZXF1
ZW50aWFsTW9kZSh0ZXN0R3JvdXAsIG1heGltdW1SZXRyeUZhY3RvcikgeworICAgIGxldCBtaXNz
aW5nQnVpbGRSZXF1ZXN0Q291bnQgPSAwOworICAgIGxldCB3aWxsRXhjZWVkTWF4aW11bVJldHJ5
ID0gZmFsc2U7CisKKyAgICAvLyBSZWxpZXMgb24gYFRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzYCByZXR1cm5zIGNvbW1pdCBzZXRzIHNvcnRlZCBieSBidWlsZCByZXF1ZXN0IG9yZGVyLgor
ICAgIGNvbnN0IGZpcnN0Q29tbWl0U2V0VG9SZXRyeSA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21t
aXRTZXRzKCkuZmluZChjb21taXRTZXQgPT4geworICAgICAgICBjb25zdCBidWlsZFJlcXVlc3Rz
ID0gdGVzdEdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKChidWls
ZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgIGNvbnN0IGNvbXBs
ZXRlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVz
dCkgPT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7CisgICAgICAgIGlmIChj
b21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA+PSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IHVuZmlu
aXNoZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVl
c3QpID0+ICFidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSkubGVuZ3RoOworICAgICAgICBjb25z
dCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50
ICsgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50OworICAgICAgICBtaXNzaW5nQnVpbGRSZXF1
ZXN0Q291bnQgPSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIC0gcG90ZW50aWFs
bHlTdWNjZXNzZnVsQ291bnQ7CisgICAgICAgIHdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgPSBNYXRo
Lm1heCgwLCBtaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpICsgcG90ZW50aWFsbHlTdWNjZXNzZnVs
Q291bnQgPiBtYXhpbXVtUmV0cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKworICAgIGlmICghd2lsbEV4
Y2VlZE1heGltdW1SZXRyeSAmJiBmaXJzdENvbW1pdFNldFRvUmV0cnkgJiYgbWlzc2luZ0J1aWxk
UmVxdWVzdENvdW50ID4gMCkgeworICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuYWRkTW9yZUJ1aWxk
UmVxdWVzdHMobWlzc2luZ0J1aWxkUmVxdWVzdENvdW50LCBmaXJzdENvbW1pdFNldFRvUmV0cnku
aWQoKSk7CisgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IHRlc3RHcm91cC5mZXRj
aFRhc2soKTsKKyAgICAgICAgY29uc29sZS5sb2coYEFkZGVkICR7bWF4TWlzc2luZ0J1aWxkUmVx
dWVzdENvdW50fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBh
bmFseXNpcyB0YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1l
KCl9ImApOworICAgIH0KKworICAgIGlmICh3aWxsRXhjZWVkTWF4aW11bVJldHJ5IHx8ICFmaXJz
dENvbW1pdFNldFRvUmV0cnkpCisgICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRN
b3JlQnVpbGRSZXF1ZXN0cygpOwogfQogCiBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5l
ZCcpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFs
eXNpcy10YXNrLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
YW5hbHlzaXMtdGFzay10ZXN0cy5qcwppbmRleCA5ODMxMTBhZGIwYjhmYzU3Y2Y3MThjYWYzNGVh
OTQwNDFjYTZjNDk3Li5hZTQ0MTVmZmYyM2JhOGUyYTA5MzE5ODVhODQ0ODJmOTgzZjk4YTRlIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10
YXNrLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2Fu
YWx5c2lzLXRhc2stdGVzdHMuanMKQEAgLTMxNSw3ICszMTUsNyBAQCBkZXNjcmliZSgnQW5hbHlz
aXNUYXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwg
bmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVl
ZHNOb3RpZmljYXRpb246IHRydWUsIHRlc3RNb2RlOiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAg
ICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRv
a2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7
cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNo
OiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1y
ZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTMzNyw3
ICszMzcsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogICAgICAgICAgICAg
YXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMt
dGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0g
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29u
ZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLAorICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZp
cm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgdGVzdE1v
ZGU6ICdhbHRlcm5hdGUnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIs
IHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsK
ICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0x
Jywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAg
ICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBu
dWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzU5LDcgKzM1OSw3IEBAIGRlc2NyaWJlKCdBbmFseXNp
c1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JS
ZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
cmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBu
ZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVk
c05vdGlmaWNhdGlvbjogdHJ1ZSwgdGVzdE1vZGU6ICdhbHRlcm5hdGUnLAogICAgICAgICAgICAg
ICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9r
ZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHty
ZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6
IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJl
dmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtNDIwLDcg
KzQyMCw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBh
d2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10
YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25m
aXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJt
JywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdGVzdE1vZGU6
ICdhbHRlcm5hdGUnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRl
c3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAg
ICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywg
b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAg
ICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxs
LCBwYXRjaDogbnVsbH19LApAQCAtNDU0LDExICs0NTQsMTEgQEAgZGVzY3JpYmUoJ0FuYWx5c2lz
VGFzaycsICgpID0+IHsKIAogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbmFseXNpcyB0YXNr
IHdpdGggY29uZmlybWluZyByZXBldGl0aW9uIGNvdW50IHNwZWNpZmllZCcsICgpID0+IHsKICAg
ICAgICAgICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQ
b2ludHMoKTsKLSAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFy
dFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIEFuYWx5
c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0n
LCA0LCB0cnVlLCAnYWx0ZXJuYXRlJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRp
dGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBz
dGFydFJ1bjogMSwgZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2VyJywgd29ya2VyUGFzc3dv
cmQ6ICdwYXNzd29yZCcsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwg
d29ya2VyTmFtZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCB0ZXN0TW9k
ZTogJ2FsdGVybmF0ZScsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0n
LCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjog
J3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAog
ICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEn
LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRl
c3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQt
c2V0LWFuYWx5emVyLXRlc3RzLmpzCmluZGV4IDA3ZmNiM2RiM2RlNmIxMmU2Yjk0N2NjNjMwY2Qw
N2JiNmEwNGZiYmEuLmRjMmE4MzcyYjNmZTQ1ZjkzMTQzZDViNzliMWVlN2RmMDRhYTI4MTQgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50
LXNldC1hbmFseXplci10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMKQEAgLTIzNSw2ICsyMzUs
NyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAg
ICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFt
ZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAor
ICAgICAgICAgICAgICAgIHRlc3RNb2RlOiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgICAgICBy
ZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAzNSwgb3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogNDQs
IG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAgICAgICB9KTsKQEAg
LTI5NCw2ICsyOTUsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+
IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAg
dGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHRlc3RNb2RlOiAnYWx0ZXJuYXRlJywKICAgICAg
ICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAzNSwgb3duZXJSZXZp
c2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHty
ZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAg
ICAgICB9KTsKQEAgLTUyNiw2ICs1MjgsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFs
eXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAg
ICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5l
ZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHRlc3RNb2RlOiAnYWx0ZXJu
YXRlJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiA0
MCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAg
ICAgeycxMSc6IHtyZXZpc2lvbjogNDksIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fX1dCiAgICAgICAgICAgICB9KTsKQEAgLTYxOCw2ICs2MjEsNyBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291
bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHRlc3RN
b2RlOiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzog
e3JldmlzaW9uOiAzLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAg
ICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA4LCBvd25lclJldmlzaW9uOiBudWxsLCBw
YXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVp
bGQtcmVxdWVzdHMtdGVzdHMuanMKaW5kZXggMDgyZDgwZGNhNWVmOGYwODM1ODljNjU0MWJhMjQ1
NmFmZDEyODYyOC4uNmU3Y2UzOTI1MjBhMGE2NDNmNzYyYzNiYmVkZTYwZTUxYWFjZDUyMSAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMTQsNiAr
MTQsNyBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgY29uc3QgbWF5
TmVlZE1vcmVSZXF1ZXN0cyA9IGNvbmZpZy5tYXlOZWVkTW9yZVJlcXVlc3RzOwogICAgIGNvbnN0
IGhpZGRlbiA9IGNvbmZpZy5oaWRkZW47CiAgICAgY29uc3Qgc3RhdHVzTGlzdCA9IGNvbmZpZy5z
dGF0dXNMaXN0OworICAgIGNvbnN0IGNvbW1pdFNldExpc3QgPSBjb25maWcuY29tbWl0U2V0TGlz
dCB8fCBbJzQyNTUnLCAnNDI1NicsICc0MjU1JywgJzQyNTYnLCAnNDI1NScsICc0MjU2J107CiAK
ICAgICByZXR1cm4gewogICAgICAgICAidGVzdEdyb3VwcyI6IFt7CkBAIC0zOCw3ICszOSw3IEBA
IGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAg
Im9yZGVyIjogIjAiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAgICAgICAg
ICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzBdLAogICAgICAgICAgICAgInN0YXR1cyI6
IHN0YXR1c0xpc3RbMF0sCiAgICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJi
dWlsZCI6IG51bGwsCkBAIC01MCw3ICs1MSw3IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChj
b25maWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVz
dEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjEiLAotICAgICAgICAgICAg
ImNvbW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRM
aXN0WzFdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMV0sCiAgICAgICAgICAg
ICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC02Miw3ICs2Myw3
IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJwbGF0
Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAg
ICAgIm9yZGVyIjogIjIiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAgICAg
ICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzJdLAogICAgICAgICAgICAgInN0YXR1
cyI6IHN0YXR1c0xpc3RbMl0sCiAgICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAg
ICJidWlsZCI6IG51bGwsCkBAIC03NCw3ICs3NSw3IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91
cChjb25maWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAi
dGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAg
ICAgImNvbW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRT
ZXRMaXN0WzNdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10sCiAgICAgICAg
ICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC04Niw3ICs4
Nyw3IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJw
bGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAg
ICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAg
ICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzRdLAogICAgICAgICAgICAgInN0
YXR1cyI6IHN0YXR1c0xpc3RbNF0sCiAgICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAg
ICAgICJidWlsZCI6IG51bGwsCkBAIC05OCw3ICs5OSw3IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RH
cm91cChjb25maWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAg
ICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjMiLAotICAgICAg
ICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21t
aXRTZXRMaXN0WzVdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNV0sCiAgICAg
ICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC0xNTUs
NyArMTU2LDcgQEAgZGVzY3JpYmUoJ2NyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVz
dEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cycsICgpID0+IHsKICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAKICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKLSAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1l
Jywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAx
fSk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5h
bWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIx
MjgnLCBhZGRDb3VudDogMSwgY29tbWl0U2V0OiBudWxsfSk7CiAgICAgICAgIHJlcXVlc3RzWzBd
LnJlc29sdmUoKTsKIAogICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CkBAIC0xNzIsNyArMTczLDcgQEAgZGVzY3JpYmUoJ2NyZWF0ZUFkZGl0aW9uYWxCdWlsZFJl
cXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cycsICgpID0+IHsKICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAKICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsK
LSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTog
J3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcs
IGFkZENvdW50OiAyfSk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0
YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQn
LCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBudWxsfSk7CiAgICAgICAg
IHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKIAogICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CkBAIC0yNDksNCArMjUwLDExMCBAQCBkZXNjcmliZSgnY3JlYXRlQWRk
aXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywgKCkg
PT4gewogICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNX
aXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7CiAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDApOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1v
cmUgYnVpbGQgcmVxdWVzdCBvbiBBIGNvbmZpZyB3aGVuIG9uZSBBIGNvbmZpZyByZXF1ZXN0IGZh
aWxlZCBmb3IgdGVzdCBncm91cCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2Us
IGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhp
ZGRlbjogZmFsc2UsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21w
bGV0ZWQiLCAiZmFpbGVkIiwgInJ1bm5pbmciLCAic2NoZWR1bGVkIiwgInBlbmRpbmciXSwKKyAg
ICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1Nics
ICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91
cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3Vw
Ll9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0
ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0
ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0
c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdw
YXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6ICc0MjU1J30p
OworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgYXdhaXQgTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkv
dGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1v
cmUgYnVpbGQgcmVxdWVzdCBvbiBBIGNvbmZpZyB3aGVuIG9uZSBBIGNvbmZpZyByZXF1ZXN0IGZh
aWxlZCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRl
c3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0
aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisg
ICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVk
IiwgInJ1bm5pbmciLCAic2NoZWR1bGVkIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgIGNvbW1p
dFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYn
XX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25m
aWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNG
cm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWls
ZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsK
KyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVx
dWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29y
a2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3Vw
OiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6ICc0MjU1J30pOworICAgICAgICByZXF1
ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEy
OCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXRyeSBBIGNvbmZpZyBmaXJzdCBldmVu
IGlmIEIgY29uZmlnIGhhcyBmYWlsZWQgYnVpbGQgaW4gc2VxdWVudGlhbCBtb2RlJywgYXN5bmMg
KCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0
ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgInJ1bm5p
bmciXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUn
LCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBs
ZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0g
VGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAg
ICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRS
ZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2
aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFz
c3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6
ICc0MjU1J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgYXdh
aXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVy
bCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBh
ZGQgb25lIG1vcmUgYnVpbGQgcmVxdWVzdCBvbiBCIGNvbmZpZyBhbmQgY2xlYXIgbWF5TmVlZE1v
cmVSZXF1ZXN0IHdoZW4gb25lIEIgY29uZmlnIHJlcXVlc3QgZmFpbGVkIGluIHNlcXVlbnRpYWwg
bW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25l
ZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVl
ZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgIHN0YXR1c0xp
c3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJmYWlsZWQiXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1
NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAg
Y29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RH
cm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVz
dEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtl
cl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENv
dW50OiAxLCBjb21taXRTZXQ6ICc0MjU2J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZl
KCk7CisKKyAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCBjbGVhciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyBpZiByZXRyeSB3
aWxsIGV4Y2VlZCBtYXhpbXVtIHJldHJ5IGluIHNlcXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1
ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiXSwK
KyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1
NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RH
cm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdy
b3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyh0ZXN0R3JvdXBzLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
MSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2Vk
LWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVl
c3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDog
J3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsK
KyAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgIH0pOworCisgICAgaXQoJ3Nob3Vs
ZCBjbGVhciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyB3aGVuIGluaXRpYWwgcmVxdWVzdGVkIHJl
cGV0aXRpb24gaXMgc2F0aXNmaWVkIGluIHNlcXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxz
ZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwg
aGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiXSwK
KyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1
NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RH
cm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdy
b3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
MSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2Vk
LWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVl
c3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDog
J3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsK
KyAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgIH0pOwogfSk7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3Rz
LmpzCmluZGV4IDVhYTkxZThhYTAyZTExYTY2NDUxZDMxZDk2MzY5NmNlZDhkNDk4M2UuLjdiN2Ez
NTg3OWI1ODE4NjgyZDU5MTk3NWFmZjNiMWI5MWVmNDRkYTYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCkBA
IC0yNDksNyArMjQ5LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5pc0hpZGRlbigpLCBmYWxzZSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoK2dyb3VwLmNyZWF0ZWRBdCgpLCAxNDU4Njg4NTE0MDAwKTsK
LSAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgc2FtcGxl
VGVzdEdyb3VwKClbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGggLyAyKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIHNhbXBsZVRlc3RHcm91
cCgpWydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoIC8gMik7CiAgICAgICAgICAgICBhc3NlcnQub2so
Z3JvdXAuaGFzUGVuZGluZygpKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAuaGFzRmlu
aXNoZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLmhhc1N0YXJ0ZWQoKSk7CkBA
IC00NjIsNyArNDYyLDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Via2l0
LCAnMTkxNjIzJyk7CiAgICAgICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShN
b2NrTW9kZWxzLnNoYXJlZFJlcG9zaXRvcnksICc4MDIyOScpOwogCi0gICAgICAgICAgICBjb25z
dCBwcm9taXNlID0gVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdzb21lLXRhc2snLCBNb2NrTW9k
ZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVscy5zb21lVGVzdCwgJ3NvbWUtZ3JvdXAnLCA0LCBb
c2V0MSwgc2V0Ml0sIHRydWUpOworICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IFRlc3RHcm91
cC5jcmVhdGVXaXRoVGFzaygnc29tZS10YXNrJywgTW9ja01vZGVscy5zb21lUGxhdGZvcm0sIE1v
Y2tNb2RlbHMuc29tZVRlc3QsICdzb21lLWdyb3VwJywgNCwgW3NldDEsIHNldDJdLCB0cnVlLCAn
YWx0ZXJuYXRlJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAy
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdl
ZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVz
b2x2ZSh7CkBAIC00NzUsNyArNDc1LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0YSwge3Rh
c2tOYW1lOiAnc29tZS10YXNrJywgbmFtZTogJ3NvbWUtZ3JvdXAnLCBwbGF0Zm9ybTogNjUsIHRl
c3Q6IDEsCiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LCByZXZpc2lvblNldHM6
IFt7JzExJzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5
MTYyMiJ9LAogICAgICAgICAgICAgICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiODAyMjkifX0sIHsnMTEnOiB7b3duZXJSZXZpc2lvbjog
bnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiMTkxNjIzIn0sCi0gICAgICAgICAgICAgICAg
ICAgICcxNic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICI4
MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCB0b2tlbjogJ2FiYyd9KTsKKyAgICAg
ICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCBy
ZXZpc2lvbjogIjgwMjI5In19XSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHRlc3RNb2RlOiAn
YWx0ZXJuYXRlJywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJyk7CiAgICAg
ICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAgICAgICAgICB0YXNrSWQ6IDEy
MywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425244</attachid>
            <date>2021-04-05 23:18:33 -0700</date>
            <delta_ts>2021-04-16 05:04:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210405231832.patch</filename>
            <type>text/plain</type>
            <size>111228</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi5iYzY2N2E1YTlj
M2E3NzlmYzYyN2UyMDQyNTU3YWJkZGMyYzNiODRkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAyMS0wMy0yOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBbcGVyZiBkYXNoYm9hcmRdIEFkZCBzZXF1ZW50aWFsIG1v
ZGUgZm9yIHBlcmYgZGFzaGJvYXJkIEEvQiB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkICd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBl
JyB0byAnYW5hbHlzaXNfdGVzdF9ncm91cHMnIHRhYmxlIHRvIHN0b3JlIHJlcGV0aXRpb24gdHlw
ZSB3aGljaCBkZWZhdWx0cyB0byAnYWx0ZXJuYXRpbmcnLgorICAgICAgICBBZGQgc3VwcG9ydCB0
byBzY2hlZHVsZSAnc2VxdWVudGlhbCcgQS9CIHRlc3Rpbmcgd2hpY2ggcnVucyBhbGwgQSBydW5z
IGJlZm9yZSBCIHJ1bnMsIHdoZXJlYXMgcHJldmlvdXNseSB3ZSBvbmx5CisgICAgICAgIHN1cHBv
cnQgYWx0ZXJuYXRpbmcgQSBhbmQgQiBjb25maWd1cmF0aW9ucyBiZXR3ZWVuIHJ1bnMuCisgICAg
ICAgIEFkZCByZXRyeSBsb2dpYyBmb3IgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nLgorCisgICAg
ICAgICogaW5pdC1kYXRhYmFzZS5zcWw6IEFkZGVkICd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBl
JyBmaWVsZCB0byAnYW5hbHlzaXNfdGVzdF9ncm91cHMnIHRhYmxlLgorICAgICAgICAqIG1pZ3Jh
dGUtZGF0YWJhc2Uuc3FsOiBVcGRhdGVkIG1pZ3JhdGlvbiBzY3JpcHQgdG8gY29uZGl0aW9uYWxs
eSBhZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZpZWxkLgorICAgICAgICAqIHB1Ymxp
Yy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwOiBBZGRlZCBjb2RlIHRvIGNyZWF0ZSBi
dWlsZCByZXF1ZXN0cyBiYXNlZCBvbiB0ZXN0IG1vZGUuCisgICAgICAgICogcHVibGljL3ByaXZp
bGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHA6IEFkZGVkIHN1cHBvcnQgdG8gb25seSBh
ZGQgYnVpbGQgcmVxdWVzdHMgdG8gb25lIGNvbW1pdCBzZXQuCisgICAgICAgICogcHVibGljL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocDogQWRkZWQgJ3JlcGV0aXRpb25U
eXBlJyBzdXBwb3J0LgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cC5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAgKiBw
dWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0u
anM6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAgKEN1c3RvbUNvbmZp
Z3VyYXRpb25UZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAq
IHB1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qczogQWRkZWQgdGVzdCBtb2Rl
IGRyb3Bkb3duIGFuZCBleHBsYW5hdGlvbiBsYWJlbC4KKyAgICAgICAgKFRlc3RHcm91cEZvcm0p
OgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJl
ZSk6CisgICAgICAgIChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAg
ICAgICAqIHB1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5
c2lzVGFzay5hc3luYyBjcmVhdGUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrKToKKyAgICAgICAg
KiBwdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanM6CisgICAgICAgIChUZXN0R3JvdXApOgor
ICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOgorICAgICAgICAo
VGVzdEdyb3VwLnByb3RvdHlwZS5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQpOiBSZWZhY3Rv
cmVkIGByZXBldGl0aW9uQ291bnRgIHNpbmNlIHJlcGV0aXRpb24gbWF5IGJlIGRpZmZlcmVudAor
ICAgICAgICBiZXR3ZWVuIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAoVGVzdEdyb3VwLnByb3Rv
dHlwZS5yZXBldGl0aW9uVHlwZSk6IEFkZGVkIGNvZGUgdG8gcmV0dXJuIHRoZSByZXBldGl0aW9u
IHR5cGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmhhc1JldHJ5KTogQSBoZWxwZXIg
ZnVuY3Rpb24gdG8gdGVsbCBpZiBhIHRlc3QgZ3JvdXAgaGFzIHJldHJ5IHJ1bnMuCisgICAgICAg
IChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIGFkZE1vcmVCdWlsZFJlcXVlc3RzKTogQWRkZWQg
c3VwcG9ydCB0byBzcGVjaWZ5IGNvbW1pdFNldC4KKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBj
cmVhdGVXaXRoVGFzayk6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAg
KFRlc3RHcm91cC5hc3luYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbik6IEFkZGVkICdy
ZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVB
bmRSZWZldGNoVGVzdEdyb3Vwcyk6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAg
ICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzOiBBZGRlZCAncmVw
ZXRpdGlvblR5cGUnIHN1cHBvcnQuCisgICAgICAgIChBbmFseXNpc1Rhc2tDaGFydFBhbmUucHJv
dG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUmVz
dWx0c1BhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZS5wcm90b3R5cGUuc2V0VGVzdEdyb3Vwcyk6CisgICAg
ICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKToKKyAgICAgICAgKEFuYWx5c2lzVGFz
a1Rlc3RHcm91cFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3JlbmRlckN1cnJlbnRUZXN0
R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3N1
bW1hcml6ZWRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUu
ZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3Rv
dHlwZS5hc3luYyBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAgKEFuYWx5c2lzVGFz
a1BhZ2UucHJvdG90eXBlLmFzeW5jIF9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAg
KEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWlu
Z0NvbW1pdFNldExpc3Quc2V0IGNvbnN0KToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJv
dG90eXBlLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QpOgorICAg
ICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RH
cm91cCk6CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanM6IEFkZGVkICdy
ZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuZGlk
Q29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLmFzeW5j
IF9hbmFseXplUmFuZ2UpOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlz
aXMtdGFzay1wYWdlLmpzOgorICAgICAgICAoQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5
cGUuYXN5bmMgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cCk6CisgICAgICAgICogc2VydmVy
LXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogVXBkYXRl
ZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVu
aXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10
ZXN0LWdyb3VwLXRlc3RzLmpzOiBVcGRhdGVkIGFuZCBhZGRlZCB1bml0IHRlc3RzLgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5q
czogQWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL2Nv
bW1vbi1vcGVyYXRpb25zLmpzOgorICAgICAgICAoYXN5bmMgYXNzZXJ0VGhyb3dzKToKKyAgICAg
ICAgKiB0b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanM6IEFkZGVkIHJldHJ5
IGNvZGUgZm9yIHNlcXVlbnRpYWwgQS9CIHRlc3Rpbmcgd2hpY2ggd2lsbCByZXRyeSBjb25maWd1
cmF0aW9uCisgICAgICAgIGJ5IGNvbmZpZ3VyYXRpb24gYW5kIHdpbGwgbm90IHByb2NlZWQgd2l0
aCBuZXh0IGNvbmZpZ3VyYXRpb24gdW50aWwgY3VycmVudCBjb25maWd1cmF0aW9uIG1lZXRzIHVz
ZXIgc3BlY2lmaWVkCisgICAgICAgIGl0ZXJhdGlvbiBvciBleGNlZWQgcmV0cnkuCisgICAgICAg
IChhc3luYyBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFp
bGVkUmVxdWVzdHMpOgorICAgICAgICAoYXN5bmMgY3JlYXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9y
VGVzdEdyb3VwKToKKyAgICAgICAgKGFzeW5jIGNyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVz
dEdyb3VwKToKKyAgICAgICAgKiB1bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanM6IFVw
ZGF0ZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiB1bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC1h
bmFseXplci10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVz
dHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBBZGRlZCB0ZXN0cyBmb3Ig
c2VxdWVudGlhbCBBL0IgdGVzdGluZy4KKyAgICAgICAgKiB1bml0LXRlc3RzL3Rlc3QtZ3JvdXBz
LXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5n
ICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24g
bGFiZWwgc3VwcG9ydApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQt
ZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3Fs
CmluZGV4IGY2OGI1ZjBjMDMzYTIyNjQzMDdjMmY4M2YzZDRmYjc0YmRiMTUzZWQuLmUyMzFlNjFk
ZjUyOTc5ZmE3MWI4NWJjMWQzZTJiZDg1YTBkYTM5NzMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTI5Miw2ICsyOTIsNyBAQCBDUkVBVEUgVEFCTEUg
YW5hbHlzaXNfdGVzdF9ncm91cHMgKAogICAgIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24g
Ym9vbGVhbiBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9ub3RpZmljYXRp
b25fc2VudF9hdCB0aW1lc3RhbXAgREVGQVVMVCBOVUxMLAogICAgIHRlc3Rncm91cF9pbml0aWFs
X3JlcGV0aXRpb25fY291bnQgaW50ZWdlciBOT1QgTlVMTCwKKyAgICB0ZXN0Z3JvdXBfcmVwZXRp
dGlvbl90eXBlIHZhcmNoYXIoMzIpIERFRkFVTFQgJ2FsdGVybmF0aW5nJywKICAgICB0ZXN0Z3Jv
dXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyBib29sZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09O
U1RSQUlOVCB0ZXN0Z3JvdXBfbmFtZV9tdXN0X2JlX3VuaXF1ZV9mb3JfZWFjaF90YXNrIFVOSVFV
RSh0ZXN0Z3JvdXBfdGFzaywgdGVzdGdyb3VwX25hbWUpKTsKIENSRUFURSBJTkRFWCB0ZXN0Z3Jv
dXBfdGFza19pbmRleCBPTiBhbmFseXNpc190ZXN0X2dyb3Vwcyh0ZXN0Z3JvdXBfdGFzayk7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwKaW5kZXggMGVh
OTEzM2RhNmVkZTMyNWRkZjZjMjFkOGI5MzdmYjczNTY0MjU5YS4uZmE1NWQ4NmQ2NzExM2ZlMmNl
NDMzMzUwMTNkNzk5ZDYxMTc2MTRmOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9t
aWdyYXRlLWRhdGFiYXNlLnNxbApAQCAtNCw2ICs0LDcgQEAgQkVHSU4KIEFMVEVSIFRBQkxFIGJ1
aWxkX3JlcXVlc3RzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyByZXF1ZXN0X3N0YXR1c19kZXNj
cmlwdGlvbiB2YXJjaGFyKDEwMjQpIERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIHBsYXRmb3Jt
cyBBREQgQ09MVU1OICBJRiBOT1QgRVhJU1RTIHBsYXRmb3JtX2dyb3VwIGludGVnZXIgUkVGRVJF
TkNFUyBwbGF0Zm9ybV9ncm91cHMgREVGQVVMVCBOVUxMOwogQUxURVIgVEFCTEUgY29tbWl0cyBB
REQgQ09MVU1OIElGIE5PVCBFWElTVFMgY29tbWl0X3JldmlzaW9uX2lkZW50aWZpZXIgdmFyY2hh
cig2NCkgREVGQVVMVCBOVUxMOworQUxURVIgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgQURE
IENPTFVNTiBJRiBOT1QgRVhJU1RTIHRlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUgdmFyY2hhcigz
MikgREVGQVVMVCAnYWx0ZXJuYXRpbmcnOwogQUxURVIgVEFCTEUgY29tbWl0cyBEUk9QIENPTlNU
UkFJTlQgY29tbWl0X3N0cmluZ19pZGVudGlmaWVyX2luX3JlcG9zaXRvcnlfbXVzdF9iZV91bmlx
dWU7CiBBTFRFUiBUQUJMRSBjb21taXRzIEFERCBDT05TVFJBSU5UIGNvbW1pdF9zdHJpbmdfaWRl
bnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlIFVOSVFVRShjb21taXRfcmVwb3Np
dG9yeSwgY29tbWl0X3JldmlzaW9uX2lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKaW5kZXggMDMxYTVjNGFi
OTg3Yjc5MzI2YzgxMjIwMzBmZGRlOWRjYjQ5NzYyMC4uNjg0N2Y0ODc0MjhmNTM4ZTVhMzQ4YTE5
OWRlMjc5NWQ1ZDc3ZDZlOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocApAQCAtOTQsNiArOTQsNyBAQCBmdW5jdGlvbiBmb3Jt
YXRfdGVzdF9ncm91cCgkZ3JvdXBfcm93KSB7CiAgICAgICAgICduZWVkc05vdGlmaWNhdGlvbicg
PT4gRGF0YWJhc2U6OmlzX3RydWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX25lZWRzX25vdGlmaWNh
dGlvbiddKSwKICAgICAgICAgJ21heU5lZWRNb3JlUmVxdWVzdHMnID0+IERhdGFiYXNlOjppc190
cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10pLAogICAg
ICAgICAnaW5pdGlhbFJlcGV0aXRpb25Db3VudCcgPT4gJGdyb3VwX3Jvd1sndGVzdGdyb3VwX2lu
aXRpYWxfcmVwZXRpdGlvbl9jb3VudCddLAorICAgICAgICAncmVwZXRpdGlvblR5cGUnID0+ICRn
cm91cF9yb3dbJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnXSwKICAgICAgICAgJ2J1aWxkUmVx
dWVzdHMnID0+IGFycmF5KCksCiAgICAgICAgICdjb21taXRTZXRzJyA9PiBhcnJheSgpLAogICAg
ICk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUv
Y29tbWl0LXNldHMtaGVscGVycy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKaW5kZXggZTg1MzBhNmJiNzFlNDJjZmYy
OGNlMzE5YzhiNTg1ZTYyZGQyM2YxYy4uMWY0YjMyY2NmMmNjMWMxM2I4N2QwY2RhNWFjZGQ1ZGRh
ZGRiNTExNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocApAQCAtNCw3ICs0LDcgQEAg
cmVxdWlyZV9vbmNlKCdyZXBvc2l0b3J5LWdyb3VwLWZpbmRlci5waHAnKTsKIHJlcXVpcmVfb25j
ZSgnY29tbWl0LWxvZy1mZXRjaGVyLnBocCcpOwogCiAjIEZJWE1FOiBTaG91bGQgY3JlYXRlIGEg
aGVscGVyIGNsYXNzIGZvciBiZWxvdyAzIGhlbHBlciBmdW5jdGlvbnMgdG8gYXZvaWQgcGFzc2lu
ZyBsb25nIGFyZ3VtZW50IGxpc3QuCi1mdW5jdGlvbiBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVp
bGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwg
JHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3Vu
dCwgJG5lZWRzX25vdGlmaWNhdGlvbikgeworZnVuY3Rpb24gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5k
X2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRo
b3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25f
Y291bnQsICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pIHsKIAogICAgIGxp
c3QgKCRidWlsZF9jb25maWd1cmF0aW9uX2xpc3QsICR0ZXN0X2NvbmZpZ3VyYXRpb25fbGlzdCkg
PSBpbnNlcnRfY29tbWl0X3NldHNfYW5kX2NvbnN0cnVjdF9jb25maWd1cmF0aW9uX2xpc3QoJGRi
LCAkY29tbWl0X3NldHMpOwogCkBAIC0xNiw5ICsxNiwxNiBAQCBmdW5jdGlvbiBjcmVhdGVfdGVz
dF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAk
bmFtZQogICAgIGZvcmVhY2goJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRfY29u
ZmlndXJhdGlvbikKICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRp
b24oJGRiLCAkYnVpbGRfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwg
JHBsYXRmb3JtX2lkLCBOVUxMLCAkZ3JvdXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRpIDwg
JHJlcGV0aXRpb25fY291bnQ7ICRpKyspIHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25maWd1
cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2VydF9i
dWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwg
JG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3Vw
X2lkKTsKKyAgICBpZiAoJHJlcGV0aXRpb25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAgICAg
ICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRp
b24pIHsKKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAk
aSsrKQorICAgICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0
aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwg
JHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKSB7
CisgICAgICAgICAgICBmb3JlYWNoICgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRlc3Rf
Y29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdF9mb3Jf
Y29uZmlndXJhdGlvbigkZGIsICR0ZXN0X2NvbmZpZ3VyYXRpb24sICRvcmRlcisrLCAkdHJpZ2dl
cmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQsICRncm91cF9pZCk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuICRncm91cF9pZDsKIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBo
cCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1
aWxkLXJlcXVlc3RzLnBocAppbmRleCA1NzBlOTAyZjVkMmUxZGYzZmMyYjZiNmFmYTIzM2FiZmI1
MDAzNjQ3Li43MjZkZmNhMjQxN2U1ZjQxNDUyYThmMTg3NTYwZGU2YTk2NzQ3MDZlIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1i
dWlsZC1yZXF1ZXN0cy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9w
cml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCkBAIC03LDEzICs3LDE2IEBAIGZ1
bmN0aW9uIG1haW4oKSB7CiAgICAgJGRiID0gY29ubmVjdCgpOwogICAgICRkYXRhID0gZW5zdXJl
X3ByaXZpbGVnZWRfYXBpX2RhdGFfYW5kX3Rva2VuX29yX3dvcmtlcigkZGIpOwogCi0gICAgJGFk
ZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCA9IGFycmF5X2dldCgkZGF0YSwgJ2FkZENvdW50
Jyk7Ci0gICAgaWYgKCEkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50KQotICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ1JlcXVlc3RDb3VudE5vdFNwZWNpZmllZCcpOworICAgICRhcmd1bWVu
dHMgPSB2YWxpZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5KAorICAgICAgICAnYWRkQ291bnQn
ID0+ICdpbnQnLAorICAgICAgICAnZ3JvdXAnID0+ICdpbnQnLAorICAgICAgICAnY29tbWl0U2V0
JyA9PiAnaW50PycsCisgICAgKSk7CiAKLSAgICAkdGVzdF9ncm91cF9pZCA9IGFycmF5X2dldCgk
ZGF0YSwgJ2dyb3VwJyk7Ci0gICAgaWYgKCEkdGVzdF9ncm91cF9pZCkKLSAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdUZXN0R3JvdXBOb3RTcGVjaWZpZWQnKTsKKyAgICAkYWRkaXRpb25hbF9idWls
ZF9yZXF1ZXN0X2NvdW50ID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdhZGRDb3VudCcpOworICAg
ICR0ZXN0X2dyb3VwX2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdncm91cCcpOworCisgICAg
JGNvbW1pdF9zZXRfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2NvbW1pdFNldCcsIE5VTEwp
OwogCiAgICAgJHRlc3RfZ3JvdXAgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2FuYWx5c2lzX3Rl
c3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gJHRlc3RfZ3JvdXBfaWQpKTsK
ICAgICBpZiAoISR0ZXN0X2dyb3VwKQpAQCAtMzYsMTAgKzM5LDE1IEBAIGZ1bmN0aW9uIG1haW4o
KSB7CiAgICAgICAgICRyZXF1ZXN0ZWRfY29tbWl0X3NldCA9ICRidWlsZF9yZXF1ZXN0WydyZXF1
ZXN0X2NvbW1pdF9zZXQnXTsKICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHJlcXVlc3Rl
ZF9jb21taXRfc2V0LCAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAoIWlzX251bGwoJGNvbW1pdF9zZXRfaWQpICYmICRyZXF1
ZXN0ZWRfY29tbWl0X3NldCAhPSAkY29tbWl0X3NldF9pZCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0ZWRfY29tbWl0
X3NldF0gPSAkYnVpbGRfcmVxdWVzdDsKICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldHMs
ICRyZXF1ZXN0ZWRfY29tbWl0X3NldCk7CiAgICAgfQogCisgICAgaWYgKCFpc19udWxsKCRjb21t
aXRfc2V0X2lkKSAmJiAhY291bnQoJGNvbW1pdF9zZXRzKSkKKyAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdDb21taXRTZXROb3RJblRlc3RHcm91cCcsIGFycmF5KCdjb21taXRTZXQnID0+ICRjb21t
aXRfc2V0X2lkKSk7CisKICAgICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CiAgICAgZm9yICgk
aSA9IDA7ICRpIDwgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudDsgJGkrKykgewogICAg
ICAgICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFu
YWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggMjhhMTYxMzAwODRlOGM0ZGFl
MTRiZDI5ZjUwZmZlOGJjZGU4YWM5NC4uNWQ5MTkzMGFjNjM1MWVkZWI1NGRiMzk0MGRiNDA2NDZj
MTUzNWE4NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAK
QEAgLTEwLDYgKzEwLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkYXV0aG9yID0gcmVtb3Rl
X3VzZXJfbmFtZSgkZGF0YSk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRhdGEsICduYW1lJyk7
CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uQ291
bnQnKTsKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gYXJyYXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlv
blR5cGUnLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAkbmVlZHNfbm90aWZpY2F0aW9uID0gYXJyYXlf
Z2V0KCRkYXRhLCAnbmVlZHNOb3RpZmljYXRpb24nLCBGYWxzZSk7CiAgICAgJHRlc3RfZ3JvdXBf
bmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3RHcm91cE5hbWUnKTsKICAgICAkcmV2aXNpb25f
c2V0X2xpc3QgPSBhcnJheV9nZXQoJGRhdGEsICdyZXZpc2lvblNldHMnKTsKQEAgLTIwLDYgKzIx
LDkgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBpZiAoISRuYW1lKQogICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ01pc3NpbmdOYW1lJywgYXJyYXkoJ25hbWUnID0+ICRuYW1lKSk7CiAKKyAgICBp
ZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1
ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlw
ZScsIGFycmF5KCdtb2RlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2
YWxpZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5KCdzdGFydFJ1bicgPT4gJ2ludCcsICdlbmRS
dW4nID0+ICdpbnQnKSk7CiAKICAgICAkc3RhcnRfcnVuID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIs
ICd0ZXN0X3J1bnMnLCAncnVuJywgJHJhbmdlWydzdGFydFJ1biddLCAnSW52YWxpZFN0YXJ0UnVu
JywgJHJhbmdlKTsKQEAgLTg1LDcgKzg5LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAg
JHRyaWdnZXJhYmxlX2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwogICAgICAgICAkdGVzdF9pZCA9
ICR0cmlnZ2VyYWJsZVsndGVzdCddOwogICAgICAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0
c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRf
bGlzdCk7Ci0gICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIs
ICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmln
Z2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRp
dGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dy
b3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0
X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3Bs
YXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwg
JG5lZWRzX25vdGlmaWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rp
b24oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzQyNTNm
YmU3ODY1OWJhMmY2ZTA5OTkzMzEwMWJiOGEyOWYzMTFkZS4uMzU0YTcxMmQwMjA4ZDAyYTc2ZDE5
NTA5MjllMGNlYzAwYjliZTMzOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91
cC5waHAKQEAgLTE4LDYgKzE4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRhc2tfaWQgPSBh
cnJheV9nZXQoJGFyZ3VtZW50cywgJ3Rhc2snKTsKICAgICAkdGFza19uYW1lID0gYXJyYXlfZ2V0
KCRkYXRhLCAndGFza05hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3VudCA9ICRhcmd1bWVudHNb
J3JlcGV0aXRpb25Db3VudCddOworICAgICRyZXBldGl0aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRh
dGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGluZycpOwogICAgICRuZWVkc19ub3RpZmlj
YXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05vdGlmaWNhdGlvbicsIEZhbHNlKTsKICAg
ICAkcGxhdGZvcm1faWQgPSBhcnJheV9nZXQoJGRhdGEsICdwbGF0Zm9ybScpOwogICAgICR0ZXN0
X2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGVzdCcpOwpAQCAtNDIsNiArNDMsOSBAQCBmdW5jdGlv
biBtYWluKCkKICAgICBlbHNlIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdyZXBldGl0aW9u
Q291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBl
dGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRNb2RlJywgYXJyYXkoJ21vZGUnID0+ICRyZXBldGl0
aW9uX3R5cGUpKTsKKwogICAgICR0cmlnZ2VyYWJsZV9pZCA9IE5VTEw7CiAgICAgaWYgKCR0YXNr
X2lkKSB7CiAgICAgICAgICR0YXNrID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190
YXNrcycsICd0YXNrJywgYXJyYXkoJ2lkJyA9PiAkdGFza19pZCkpOwpAQCAtODYsNyArOTAsNyBA
QCBmdW5jdGlvbiBtYWluKCkKICAgICBpZiAoJHRhc2tfbmFtZSkKICAgICAgICAgJHRhc2tfaWQg
PSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnbmFtZScg
PT4gJHRhc2tfbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvcikpOwogCi0gICAgJGdyb3VwX2lkID0g
Y3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAk
dGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAk
dGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pOworICAgICRn
cm91cF9pZCA9IGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21t
aXRfc2V0cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0
Zm9ybV9pZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAk
bmVlZHNfbm90aWZpY2F0aW9uKTsKIAogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiAK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL2NvbW1v
bi1jb21wb25lbnQtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hh
cmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcwppbmRleCBjNTZlMmIwMDkxNzE4YzA5MDcyNzcx
NjI0NDVmN2M5ZWU3YTQ4OTJkLi5iZDcxNzE3ZDI4ZjUxNmY5MDk3NmRhOTlmMWIzMzQ3YjhhYTYz
OGM5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9j
b21tb24tY29tcG9uZW50LWJhc2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCkBAIC0xMzUsMTIgKzEzNSwxMiBA
QCBjbGFzcyBDb21tb25Db21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5k
Q2hpbGQoQ29tbW9uQ29tcG9uZW50QmFzZS5fY29udGV4dC5jcmVhdGVUZXh0Tm9kZShjb250ZW50
KSk7CiAgICAgfQogCi0gICAgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNh
bGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQorICAgIGNyZWF0ZUxpbmsoY29udGVu
dCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXggPSBudWxs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIENvbW1vbkNvbXBvbmVudEJhc2UuY3JlYXRlTGluayhj
b250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleCk7
CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNr
LCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXg9bnVsbCkKKyAgICBzdGF0aWMgY3JlYXRl
TGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJ
bmRleCA9IG51bGwpCiAgICAgewogICAgICAgICB2YXIgdGl0bGUgPSB0aXRsZU9yQ2FsbGJhY2s7
CiAgICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3Vy
YXRpb24tdGVzdC1ncm91cC1mb3JtLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcwpp
bmRleCA4N2IxN2MxNDZkNDUzZTAyYTMwM2RmMmE5MjQyMjM0ZTRhOGU0YzY5Li5lNGY2NzQ0ZmNk
OWM2ZDQwYjgxM2FlZmU3YzQ1MWNjNmM4MTZhOTNmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVz
dC1ncm91cC1mb3JtLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMKQEAgLTQw
LDkgKzQwLDkgQEAgY2xhc3MgQ3VzdG9tQ29uZmlndXJhdGlvblRlc3RHcm91cEZvcm0gZXh0ZW5k
cyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgY29uc3QgdGVzdCA9IGNvbmZpZ3VyYXRvci50ZXN0
cygpWzBdOyAvLyBGSVhNRTogQWRkIHRoZSBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIG11bHRpcGxl
IHRlc3RzLgogICAgICAgICBjb25zb2xlLmFzc2VydCghIXRoaXMuX2hhc1Rhc2sgPT09ICF0YXNr
TmFtZSk7CiAgICAgICAgIGlmICghdGhpcy5faGFzVGFzaykKLSAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVzdEdy
b3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCB0aGlzLl9ub3Rp
ZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRU
ZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRz
LCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbiwgdGhp
cy5fcmVwZXRpdGlvblR5cGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91
cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRp
b24pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhp
cy5fcmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwg
dGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uLCB0aGlzLl9yZXBldGl0aW9uVHlwZSk7CiAg
ICAgfQogCiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3Jv
dXAtZm9ybS5qcwppbmRleCBhNDNlZGYzNTA4YmNmMDc0NjI1ZGI5OTY0ZjYwNGRlMTgwODI5NjRm
Li4yMzExZjE3YmM3NDY2OTliZmFhMDNhMzA3ZDBlMjE5N2U1MTE4NGY4IDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1m
b3JtLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50
cy90ZXN0LWdyb3VwLWZvcm0uanMKQEAgLTYsNiArNiw4IEBAIGNsYXNzIFRlc3RHcm91cEZvcm0g
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgc3VwZXIobmFtZSB8fCAndGVzdC1ncm91
cC1mb3JtJyk7CiAgICAgICAgIHRoaXMuX3JlcGV0aXRpb25Db3VudCA9IDQ7CiAgICAgICAgIHRo
aXMuX25vdGlmeU9uQ29tcGxldGlvbiA9IHRydWU7CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25U
eXBlID0gJ2FsdGVybmF0aW5nJzsKKyAgICAgICAgdGhpcy5fcmVuZGVyUmVwZXRpdGlvblR5cGVF
eHBsYW5hdGlvbkxhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLnJlbmRl
clJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb24uYmluZCh0aGlzKSk7CiAgICAgfQogCiAgICAgc2V0
UmVwZXRpdGlvbkNvdW50KGNvdW50KQpAQCAtMjIsMTIgKzI0LDI4IEBAIGNsYXNzIFRlc3RHcm91
cEZvcm0gZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgfTsKICAgICAgICAgY29uc3Qg
bm90aWZ5T25Db21wbGV0aW9uQ2hlY2tCb3ggPSB0aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21w
bGV0aW9uLWNoZWNrYm94Jyk7CiAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrQm94Lm9u
Y2hhbmdlID0gKCkgPT4gdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uID0gbm90aWZ5T25Db21wbGV0
aW9uQ2hlY2tCb3guY2hlY2tlZDsKKyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGVTZWxlY3Qg
PSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpOworICAgICAgICByZXBldGl0aW9uVHlw
ZVNlbGVjdC5vbmNoYW5nZSA9ICgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3JlcGV0aXRpb25U
eXBlID0gcmVwZXRpdGlvblR5cGVTZWxlY3QudmFsdWU7CisgICAgICAgICAgICB0aGlzLmVucXVl
dWVUb1JlbmRlcigpOworICAgICAgICB9OwogICAgICAgICB0aGlzLmNvbnRlbnQoJ2Zvcm0nKS5v
bnN1Ym1pdCA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHRoaXMuc3RhcnRUZXN0aW5n
KCkpOwogICAgIH0KIAorICAgIHJlbmRlcigpCisgICAgeworICAgICAgICB0aGlzLl9yZW5kZXJS
ZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uTGF6aWx5LmV2YWx1YXRlKHRoaXMuX3JlcGV0aXRpb25U
eXBlKTsKKyAgICB9CisKKyAgICByZW5kZXJSZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uKHJlcGV0
aXRpb25UeXBlKQorICAgIHsKKyAgICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSByZXBldGl0aW9u
VHlwZSA9PT0gJ2FsdGVybmF0aW5nJyA/ICcoZS5nLiBBQkFCQUIpJyA6ICcoZS5nLiBBQUFCQkIp
JzsKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10
eXBlLWV4cGxhbmF0aW9uJyksIGV4cGxhbmF0aW9uKTsKKyAgICB9CisKICAgICBzdGFydFRlc3Rp
bmcoKQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywg
dGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAg
ICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291
bnQsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbiwgdGhpcy5fcmVwZXRpdGlvblR5cGUpOwogICAg
IH0KIAogICAgIHN0YXRpYyBodG1sVGVtcGxhdGUoKQpAQCAtNjUsNyArODMsMTMgQEAgY2xhc3Mg
VGVzdEdyb3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgICAgIDxv
cHRpb24+OTwvb3B0aW9uPgogICAgICAgICAgICAgICAgIDxvcHRpb24+MTA8L29wdGlvbj4KICAg
ICAgICAgICAgIDwvc2VsZWN0PgotICAgICAgICAgICAgaXRlcmF0aW9ucyBwZXIgc2V0CisgICAg
ICAgICAgICA8bGFiZWw+aXRlcmF0aW9ucyBwZXIgc2V0IGluPC9sYWJlbD4KKyAgICAgICAgICAg
IDxzZWxlY3QgaWQ9InJlcGV0aXRpb24tdHlwZSI+CisgICAgICAgICAgICAgICAgPG9wdGlvbiBz
ZWxlY3RlZD5hbHRlcm5hdGluZzwvb3B0aW9uPgorICAgICAgICAgICAgICAgIDxvcHRpb24+c2Vx
dWVudGlhbDwvb3B0aW9uPgorICAgICAgICAgICAgPC9zZWxlY3Q+CisgICAgICAgICAgICA8bGFi
ZWw+bW9kZTwvbGFiZWw+CisgICAgICAgICAgICA8bGFiZWwgaWQ9InJlcGV0aXRpb24tdHlwZS1l
eHBsYW5hdGlvbiI+KGUuZy4gQUJBQkFCKTwvbGFiZWw+CiAgICAgICAgICAgICA8aW5wdXQgaWQ9
Im5vdGlmeS1vbi1jb21wbGV0aW9uLWNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZC8+
Tm90aWZ5IG9uIGNvbXBsZXRpb24KICAgICAgICAgYDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5q
cwppbmRleCAxNzc2YTgxN2JjMzE5OTY5Mjk3MmE0MGFhNGVkNjhjMWE5NWNkZWVlLi4wYWY0YTE5
MzM3ZmVjMTY4OTFlNDY0ZTcwZTI2ZTY4YmJlYjM3NDJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMK
QEAgLTMyNCw3ICszMjQsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgfQogCi0gICAgc3RhdGljIGFzeW5j
IGNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdyb3VwTmFtZT1udWxsLCBy
ZXBldGl0aW9uQ291bnQ9MCwgbm90aWZ5T25Db21wbGV0aW9uPWZhbHNlKQorICAgIHN0YXRpYyBh
c3luYyBjcmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRlc3RHcm91cE5hbWUgPSBu
dWxsLCByZXBldGl0aW9uQ291bnQgPSAwLCBub3RpZnlPbkNvbXBsZXRpb24gPSBmYWxzZSwgcmVw
ZXRpdGlvblR5cGUgPSAnYWx0ZXJuYXRpbmcnKQogICAgIHsKICAgICAgICAgY29uc3QgcGFyYW1l
dGVycyA9IHtuYW1lLCBzdGFydFJ1bjogc3RhcnRQb2ludC5pZCwgZW5kUnVuOiBlbmRQb2ludC5p
ZH07CiAgICAgICAgIGlmICh0ZXN0R3JvdXBOYW1lKSB7CkBAIC0zMzMsNiArMzMzLDcgQEAgY2xh
c3MgQW5hbHlzaXNUYXNrIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgICAgICBwYXJh
bWV0ZXJzWydyZXBldGl0aW9uQ291bnQnXSA9IHJlcGV0aXRpb25Db3VudDsKICAgICAgICAgICAg
IHBhcmFtZXRlcnNbJ3Rlc3RHcm91cE5hbWUnXSA9IHRlc3RHcm91cE5hbWU7CiAgICAgICAgICAg
ICBwYXJhbWV0ZXJzWyduZWVkc05vdGlmaWNhdGlvbiddID0gbm90aWZ5T25Db21wbGV0aW9uOwor
ICAgICAgICAgICAgcGFyYW1ldGVyc1sncmVwZXRpdGlvblR5cGUnXSA9IHJlcGV0aXRpb25UeXBl
OwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCBwYXJhbWV0ZXJzKTsKICAgICAg
ICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzcG9uc2UudGFza0lkLCB0cnVlKTsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rl
c3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzCmluZGV4IDk3ZThiYzhlZTNjZGE5YTZmNjQxNjIzNTM0ZTY3ZmI4MDAzOTk4
MmIuLmQwYTkyNDdmM2FlMTMxNmFjOWU4ZTVjYmJiOWU1ZjI3OGM1MjkxMDkgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91
cC5qcwpAQCAtMTEsNyArMTEsOCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKICAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBvYmplY3QuaGlkZGVuOwogICAgICAgICB0
aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5uZWVkc05vdGlmaWNhdGlvbjsKICAgICAg
ICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IG9iamVjdC5tYXlOZWVkTW9yZVJlcXVlc3Rz
OwotICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gb2JqZWN0LmluaXRpYWxS
ZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSAr
b2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25U
eXBlID0gb2JqZWN0LnJlcGV0aXRpb25UeXBlOwogICAgICAgICB0aGlzLl9idWlsZFJlcXVlc3Rz
ID0gW107CiAgICAgICAgIHRoaXMuX29yZGVyQnVpbGRSZXF1ZXN0c0xhemlseSA9IG5ldyBMYXpp
bHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYnVpbGRSZXF1ZXN0cykgPT4gewogICAgICAgICAgICAg
cmV0dXJuIGJ1aWxkUmVxdWVzdHMuc29ydCgoYSwgYikgPT4gYS5vcmRlcigpIC0gYi5vcmRlcigp
KTsKQEAgLTM2LDcgKzM3LDggQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVj
dCB7CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZp
Y2F0aW9uOwogICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZW50QXQgPSBvYmplY3Qubm90aWZp
Y2F0aW9uU2VudEF0ID8gbmV3IERhdGUob2JqZWN0Lm5vdGlmaWNhdGlvblNlbnRBdCkgOiBudWxs
OwogICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzID0gb2JqZWN0Lm1heU5lZWRNb3Jl
UmVxdWVzdHM7Ci0gICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSBvYmplY3Qu
aW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAgdGhpcy5faW5pdGlhbFJlcGV0aXRpb25D
b3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAgdGhpcy5fcmVw
ZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5cGU7CiAgICAgfQogCiAgICAgdGFzaygp
IHsgcmV0dXJuIEFuYWx5c2lzVGFzay5maW5kQnlJZCh0aGlzLl90YXNrSWQpOyB9CkBAIC00Niw2
ICs0OCw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgIG5l
ZWRzTm90aWZpY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5fbmVlZHNOb3RpZmljYXRpb247IH0KICAg
ICBtYXlOZWVkTW9yZVJlcXVlc3RzKCkgeyByZXR1cm4gdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0
czsgfQogICAgIGluaXRpYWxSZXBldGl0aW9uQ291bnQoKSB7IHJldHVybiB0aGlzLl9pbml0aWFs
UmVwZXRpdGlvbkNvdW50OyB9CisgICAgcmVwZXRpdGlvblR5cGUoKSB7IHJldHVybiB0aGlzLl9y
ZXBldGl0aW9uVHlwZTsgfQogICAgIG5vdGlmaWNhdGlvblNlbnRBdCgpIHsgcmV0dXJuIHRoaXMu
X25vdGlmaWNhdGlvblNlbnRBdDsgfQogICAgIGF1dGhvcigpIHsgcmV0dXJuIHRoaXMuX2F1dGhv
ck5hbWU7IH0KICAgICBhZGRCdWlsZFJlcXVlc3QocmVxdWVzdCkKQEAgLTgxLDExICs4NCwxMCBA
QCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX29yZGVyQnVpbGRSZXF1ZXN0c0xhemlseS5ldmFsdWF0ZSguLi50aGlzLl9idWlsZFJl
cXVlc3RzKTsKICAgICB9CiAKLSAgICByZXBldGl0aW9uQ291bnQoKQorICAgIHJlcGV0aXRpb25D
b3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2J1
aWxkUmVxdWVzdHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGNvbnN0
IGNvbW1pdFNldCA9IHRoaXMuX2J1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CiAgICAgICAg
IGxldCBjb3VudCA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiB0aGlzLl9idWls
ZFJlcXVlc3RzKSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC5pc1Rlc3QoKSAmJiByZXF1ZXN0
LmNvbW1pdFNldCgpID09IGNvbW1pdFNldCkKQEAgLTk0LDYgKzk2LDExIEBAIGNsYXNzIFRlc3RH
cm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gY291bnQ7CiAgICAg
fQogCisgICAgaGFzUmV0cnkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVk
Q29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29t
bWl0U2V0KGNvbW1pdFNldCkgPiB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAg
fQorCiAgICAgcmVxdWVzdGVkQ29tbWl0U2V0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHNMYXppbHkuZXZhbHVhdGUoLi4udGhpcy5fb3Jk
ZXJlZEJ1aWxkUmVxdWVzdHMoKSk7CkBAIC0xMDIsNyArMTA5LDYgQEAgY2xhc3MgVGVzdEdyb3Vw
IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgc3RhdGljIF9jb21wdXRlUmVxdWVzdGVkQ29t
bWl0U2V0cyguLi5vcmRlcmVkQnVpbGRSZXF1ZXN0cykKICAgICB7CiAgICAgICAgIGNvbnN0IHJl
cXVlc3RlZENvbW1pdFNldHMgPSBbXTsKLSAgICAgICAgY29uc3QgY29tbWl0U2V0TGFiZWxNYXAg
PSBuZXcgTWFwOwogICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2Ygb3JkZXJlZEJ1aWxkUmVx
dWVzdHMpIHsKICAgICAgICAgICAgIGNvbnN0IHNldCA9IHJlcXVlc3QuY29tbWl0U2V0KCk7CiAg
ICAgICAgICAgICBpZiAoIXJlcXVlc3RlZENvbW1pdFNldHMuaW5jbHVkZXMoc2V0KSkKQEAgLTIy
OCwxMSArMjM0LDEyIEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRD
b3VudCkKKyAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRDb3VudCwgY29tbWl0U2V0
ID0gbnVsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJl
cXVlc3QoewogICAgICAgICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKICAgICAgICAgICAgIGFkZENv
dW50LAorICAgICAgICAgICAgY29tbWl0U2V0LAogICAgICAgICB9LCAnYWRkLWJ1aWxkLXJlcXVl
c3RzJyk7CiAgICAgfQogCkBAIC0yNDQsMzkgKzI1MSwzNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0
ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNy
ZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0
aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBzdGF0aWMgYXN5
bmMgY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJl
cGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9u
VHlwZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09
IDIpOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRz
RnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNr
TmFtZSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVz
dC5pZCgpLCByZXBldGl0aW9uQ291bnQsIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmljYXRpb246
ICEhbm90aWZ5T25Db21wbGV0aW9ufTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9PiB7Ci0g
ICAgICAgICAgICByZXR1cm4gQW5hbHlzaXNUYXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSwg
dHJ1ZSk7Ci0gICAgICAgIH0pLnRoZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAgIHJldHVybiB0
aGlzLmZldGNoRm9yVGFzayh0YXNrLmlkKCkpLnRoZW4oKCkgPT4gdGFzayk7Ci0gICAgICAgIH0p
OworICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFza05hbWUsIG5hbWU6IGdyb3VwTmFtZSwgcGxh
dGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LAor
ICAgICAgICAgICAgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlwZSwgbmVlZHNOb3RpZmljYXRp
b246ICEhbm90aWZ5T25Db21wbGV0aW9ufTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKTsKKyAg
ICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsndGFz
a0lkJ10sIHRydWUpOworICAgICAgICBhd2FpdCB0aGlzLmZldGNoRm9yVGFzayh0YXNrLmlkKCkp
OworICAgICAgICByZXR1cm4gdGFzazsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0aEN1
c3RvbUNvbmZpZ3VyYXRpb24odGFzaywgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRp
dGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFz
eW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRhc2ssIHBsYXRmb3JtLCB0ZXN0LCBn
cm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9u
LCByZXBldGl0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNl
dHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQu
cmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAgICAgIGNvbnN0IHBh
cmFtcyA9IHt0YXNrOiB0YXNrLmlkKCksIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRm
b3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMs
IG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFtcyku
dGhlbigoZGF0YSkgPT4gewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKGRh
dGFbJ3Rhc2tJZCddLCB0cnVlKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IHBhcmFtcyA9
IHt0YXNrOiB0YXNrLmlkKCksIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlk
KCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LAorICAgICAgICAgICAgcmV2aXNp
b25TZXRzLCByZXBldGl0aW9uVHlwZSwgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21w
bGV0aW9ufTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIGF3YWl0
IHRoaXMuZmV0Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFtZSwgcmVwZXRpdGlvbkNv
dW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNy
ZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29t
bWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25z
dCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29t
bWl0U2V0cyk7Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtdGVzdC1ncm91cCcsIHsKLSAgICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwKLSAgICAgICAg
ICAgIG5hbWU6IG5hbWUsCi0gICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IHJlcGV0aXRpb25D
b3VudCwKLSAgICAgICAgICAgIHJldmlzaW9uU2V0czogcmV2aXNpb25TZXRzLAotICAgICAgICAg
ICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9uLAotICAgICAgICB9KS50
aGVuKChkYXRhKSA9PiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSkpOwor
ICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCksIG5hbWUsIHJl
cGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlwZSwKKyAgICAgICAgICAg
IG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbgorICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCddLCB0cnVl
KTsKICAgICB9CiAKICAgICBzdGF0aWMgZmluZEFsbEJ5VGFzayh0YXNrSWQpCmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2st
cGFnZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlz
aXMtdGFzay1wYWdlLmpzCmluZGV4IDNmNGZlZmZmMjdhNDM4MzY0MzA1YmJiODNkN2IxNmIzMjQw
NWVjNzEuLmQ3M2QwMmY1ZmFiNTUxYWFjYjY3MzBhMjNkNWQ4ZjZjZDQ3NWQwYjggMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFz
ay1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMv
YW5hbHlzaXMtdGFzay1wYWdlLmpzCkBAIC0yNCw4ICsyNCw4IEBAIGNsYXNzIEFuYWx5c2lzVGFz
a0NoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogCiAgICAgZGlkQ29uc3RydWN0U2hh
ZG93VHJlZSgpCiAgICAgewotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlv
bignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBu
b3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24o
J25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3Rp
ZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlv
bignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBu
b3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKSA9PiB7CisgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAg
IH0pOwogICAgIH0KIApAQCAtMTA2LDggKzEwNiw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Jlc3Vs
dHNQYW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJlcG9zaXRvcnlQaWNrZXIu
YWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKSk7
CiAgICAgICAgIHRoaXMucGFydCgnY29tbWl0LXZpZXdlcicpLnNldFNob3dSZXBvc2l0b3J5TmFt
ZShmYWxzZSk7CiAKLSAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0
YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5
T25Db21wbGV0aW9uKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdU
ZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25D
b21wbGV0aW9uKTsKKyAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0
YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4geworICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRT
ZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICB9KTsK
ICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0
b3JQYW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRHcm91
cCA9IGN1cnJlbnRHcm91cDsKICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMucGFydCgnZm9ybScp
OwogICAgICAgICBpZiAoIWZvcm0uaGFzQ29tbWl0U2V0cygpICYmIGN1cnJlbnRHcm91cCkKLSAg
ICAgICAgICAgIGZvcm0uc2V0Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3Vy
cmVudEdyb3VwLnBsYXRmb3JtKCksIGN1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSwgY3Vy
cmVudEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSk7CisgICAgICAgICAgICBmb3JtLnNldENv
bmZpZ3VyYXRpb25zKGN1cnJlbnRHcm91cC50ZXN0KCksIGN1cnJlbnRHcm91cC5wbGF0Zm9ybSgp
LCBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVx
dWVzdGVkQ29tbWl0U2V0cygpKTsKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAg
ICB9CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQ
YW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIGA7CiAg
ICAgfQotfTsKK30KIAogQ29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdhbmFseXNpcy10YXNr
LWNvbmZpZ3VyYXRvci1wYW5lJywgQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSk7CiAKQEAg
LTI2NywxNCArMjY3LDE0IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5k
cyBDb21wb25lbnRCYXNlIHsKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuY29udGVudCgnaGlkZS1idXR0b24nKS5vbmNsaWNrID0gKCkgPT4gdGhpcy5k
aXNwYXRjaEFjdGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsIHRoaXMuX2N1cnJlbnRU
ZXN0R3JvdXApOwotICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlv
bignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9
PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsIHRo
aXMuX2N1cnJlbnRUZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9u
KTsKKyAgICAgICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0
VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlv
blR5cGUpID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdy
b3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNv
bXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMucGFy
dCgnYmlzZWN0LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRp
b25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgIHRoaXMucGFydCgnYmlz
ZWN0LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3Vu
dCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gewogICAgICAgICAgICAg
Y29uc3QgYmlzZWN0aW5nQ29tbWl0U2V0ID0gdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0
R3JvdXAuZ2V0KHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwogICAgICAgICAgICAgY29uc3QgW29u
ZUNvbW1pdFNldCwgYW5vdGhlckNvbW1pdFNldF0gPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKTsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSBbb25l
Q29tbWl0U2V0LCBiaXNlY3RpbmdDb21taXRTZXQsIGFub3RoZXJDb21taXRTZXRdOwotICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3VycmVu
dFRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRp
b24pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywg
dGhpcy5fY3VycmVudFRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3Rp
ZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBA
IC0zNjUsMjggKzM2NSw3NiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVu
ZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb250ZW50
KCd0ZXN0LWdyb3VwLWxpc3QnKS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTsKICAgICAgICAg
aWYgKHNlbGVjdGVkKQogICAgICAgICAgICAgc2VsZWN0ZWQuY2xhc3NMaXN0LnJlbW92ZSgnc2Vs
ZWN0ZWQnKTsKLSAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAgIHRoaXMuX3Rl
c3RHcm91cE1hcC5nZXQoY3VycmVudEdyb3VwKS5saXN0SXRlbS5jbGFzc0xpc3QuYWRkKCdzZWxl
Y3RlZCcpOworCisgICAgICAgIGNvbnN0IHJldHJ5Rm9ybSA9IHRoaXMuY29udGVudCgncmV0cnkt
Zm9ybScpOworICAgICAgICBjb25zdCBiaXNlY3RGb3JtID0gdGhpcy5jb250ZW50KCdiaXNlY3Qt
Zm9ybScpOworICAgICAgICBsZXQgc3RhdHVzU3VtbWFyeSA9IG51bGw7CisgICAgICAgIGxldCBy
ZXF1ZXN0U3VtbWFyeSA9IG51bGw7CisgICAgICAgIGxldCBoaWRlQnV0dG9uID0gbnVsbDsKKyAg
ICAgICAgbGV0IHBlbmRpbmdSZXF1ZXN0Q2FuY2VsV2FybmluZyA9IG51bGw7CiAKICAgICAgICAg
aWYgKGN1cnJlbnRHcm91cCkgeworICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFwLmdldChj
dXJyZW50R3JvdXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICAgICAg
ICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVudEdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CiAgICAgICAgICAgICB0aGlzLnBhcnQoJ2Jp
c2VjdC1mb3JtJykuc2V0UmVwZXRpdGlvbkNvdW50KGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCkpOwotICAgICAgICAgICAgY29uc3Qgc3RhdHVzU3VtbWFyeSA9IGAke2N1cnJl
bnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJlcXVlc3RlZCwgJHtjdXJyZW50R3Jv
dXAucmVwZXRpdGlvbkNvdW50KCkgLSBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpfSBhZGRlZCBkdWUgdG8gZmFpbHVyZXMuYDsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgn
c3RhdHVzLXN1bW1hcnknKS5pbm5lckhUTUwgPSBzdGF0dXNTdW1tYXJ5OwogCi0gICAgICAgICAg
ICBjb25zdCBhdXRob3JlZEJ5ID0gY3VycmVudEdyb3VwLmF1dGhvcigpID8gYGJ5ICIke2N1cnJl
bnRHcm91cC5hdXRob3IoKX0iYCA6ICcnOwotICAgICAgICAgICAgdGhpcy5jb250ZW50KCdyZXF1
ZXN0LXN1bW1hcnknKS5pbm5lckhUTUwgPSBgU2NoZWR1bGVkICR7YXV0aG9yZWRCeX0gYXQgJHtj
dXJyZW50R3JvdXAuY3JlYXRlZEF0KCl9YAorICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5o
YXNSZXRyeSgpKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzU3VtbWFyeSA9IHRoaXMuY3JlYXRl
RWxlbWVudCgnZGl2Jywge2lkOiAnc3RhdHVzLXN1bW1hcnknLCBjbGFzczogJ3N1bW1hcnknfSwK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3VtbWFyaXplZFRlc3RHcm91cChjdXJyZW50R3Jv
dXApKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgYXV0aG9yZWRCeSA9IGN1
cnJlbnRHcm91cC5hdXRob3IoKSA/IGBieSAiJHtjdXJyZW50R3JvdXAuYXV0aG9yKCl9IiBgIDog
Jyc7CisgICAgICAgICAgICByZXF1ZXN0U3VtbWFyeSA9IHRoaXMuY3JlYXRlRWxlbWVudCgnZGl2
Jywge2lkOiAncmVxdWVzdC1zdW1tYXJ5JywgY2xhc3M6ICdzdW1tYXJ5J30sCisgICAgICAgICAg
ICAgICAgYFNjaGVkdWxlZCAke2F1dGhvcmVkQnl9YXQgJHtjdXJyZW50R3JvdXAuY3JlYXRlZEF0
KCl9YCk7CisKKyAgICAgICAgICAgIGhpZGVCdXR0b24gPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ2J1
dHRvbicsIHsnaWQnOiAnaGlkZS1idXR0b24nfSwKKyAgICAgICAgICAgICAgICBjdXJyZW50R3Jv
dXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnKTsKKyAgICAgICAgICAgIGhpZGVCdXR0
b24ub25jbGljayA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3RvZ2dsZVRlc3RHcm91cFZp
c2liaWxpdHknLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKKworICAgICAgICAgICAgaWYgKGN1
cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVz
dENhbmNlbFdhcm5pbmcgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nLAorICAgICAgICAgICAg
ICAgICAgICB7aWQ6ICdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnfSwgJyhjYW5jZWxz
IHBlbmRpbmcgcmVxdWVzdHMpJyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
dGhpcy5jb250ZW50KCdyZXRyeS1mb3JtJykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/
IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgnYmlzZWN0LWZvcm0nKS5zdHls
ZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwICYmIHRoaXMuX2Jpc2VjdGluZ0NvbW1pdFNldEJ5VGVz
dEdyb3VwLmdldChjdXJyZW50R3JvdXApID8gbnVsbCA6ICdub25lJzsKLSAgICAgICAgdGhpcy5j
b250ZW50KCdzdGF0dXMtc3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYg
Y3VycmVudEdyb3VwLnJlcGV0aXRpb25Db3VudCgpID4gY3VycmVudEdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSA/IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgncmVx
dWVzdC1zdW1tYXJ5Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9u
ZSc7CiAKLSAgICAgICAgY29uc3QgaGlkZUJ1dHRvbiA9IHRoaXMuY29udGVudCgnaGlkZS1idXR0
b24nKTsKLSAgICAgICAgaGlkZUJ1dHRvbi50ZXh0Q29udGVudCA9IGN1cnJlbnRHcm91cCAmJiBj
dXJyZW50R3JvdXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnOwotICAgICAgICBoaWRl
QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOworICAg
ICAgICByZXRyeUZvcm0uc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9u
ZSc7CisgICAgICAgIGJpc2VjdEZvcm0uc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiB0
aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQoY3VycmVudEdyb3VwKSA/IG51
bGwgOiAnbm9uZSc7CisKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgn
dGVzdC1ncm91cC1kZXRhaWxzJyksIFsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCgncmVzdWx0
cy12aWV3ZXInKSwgdGhpcy5jb250ZW50KCdyZXZpc2lvbi10YWJsZScpLCBzdGF0dXNTdW1tYXJ5
LCByZXF1ZXN0U3VtbWFyeSwKKyAgICAgICAgICAgIHJldHJ5Rm9ybSwgYmlzZWN0Rm9ybSwgaGlk
ZUJ1dHRvbiwgcGVuZGluZ1JlcXVlc3RDYW5jZWxXYXJuaW5nCisgICAgICAgIF0uZmlsdGVyKGVs
ZW1lbnQgPT4gISFlbGVtZW50KSk7CisgICAgfQorCisgICAgX3N1bW1hcml6ZWRUZXN0R3JvdXAo
dGVzdEdyb3VwKQorICAgIHsKKyAgICAgICAgaWYgKCF0ZXN0R3JvdXAuaGFzUmV0cnkoKSkKKyAg
ICAgICAgICAgIHJldHVybiAnJzsKKworICAgICAgICBjb25zdCByZXRyeUNvdW50QnlMYWJlbCA9
IG5ldyBNYXA7CisgICAgICAgIGxldCBjdXJyZW50TGFiZWwgPSAnQSc7CisgICAgICAgIGZvciAo
Y29uc3QgY29tbWl0U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKKyAg
ICAgICAgICAgIHJldHJ5Q291bnRCeUxhYmVsLnNldChjdXJyZW50TGFiZWwsCisgICAgICAgICAg
ICAgICAgdGVzdEdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpIC0g
dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgICAgICAgICBjdXJyZW50
TGFiZWwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGN1cnJlbnRMYWJlbC5jaGFyQ29kZUF0KDApICsg
MSk7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlDb3VudHNBcmVJZGVudGljYWwgPSB0
ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmV2ZXJ5KChjb21taXRTZXQpID0+CisgICAg
ICAgICAgICByZXRyeUNvdW50QnlMYWJlbC5nZXQoY29tbWl0U2V0KSA9PT0gcmV0cnlDb3VudEJ5
TGFiZWwuZ2V0KGN1cnJlbnRMYWJlbCkpOworCisgICAgICAgIGlmIChyZXRyeUNvdW50c0FyZUlk
ZW50aWNhbCkKKyAgICAgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpfSByZXF1ZXN0ZWQsCisgICAgICAgICAgICAgICAgJHtyZXRyeUNvdW50QnlMYWJl
bC5nZXQoY3VycmVudExhYmVsKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7CisKKyAgICAgICAg
Y29uc3QgcmV0cnlTdW1tYXJ5UGFydHMgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBbbGFiZWws
IGNvdW50XSBvZiByZXRyeUNvdW50QnlMYWJlbC5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGlm
ICghY291bnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXRyeVN1
bW1hcnlQYXJ0cy5wdXNoKGAke2NvdW50fSBhZGRlZCB0byAke2xhYmVsfSBjb25maWd1cmF0aW9u
YCk7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlTdW1tYXJ5ID0gcmV0cnlTdW1tYXJ5
UGFydHMubGVuZ3RoID09PSAxID8gcmV0cnlTdW1tYXJ5UGFydHNbMF0gOgorICAgICAgICAgICAg
YCR7cmV0cnlTdW1tYXJ5UGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJywgJyl9IGFuZCAke3JldHJ5
U3VtbWFyeVBhcnRzW3JldHJ5U3VtbWFyeVBhcnRzLmxlbmd0aCAtIDFdfWA7CiAKLSAgICAgICAg
dGhpcy5jb250ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNw
bGF5ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyBudWxsIDog
J25vbmUnOworICAgICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKX0gcmVxdWVzdGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAg
fQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC01NTYsOCArNjA0LDggQEAgY2xhc3Mg
QW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIGdyb3Vw
UGFuZS5saXN0ZW5Ub0FjdGlvbignc2hvd0hpZGRlblRlc3RHcm91cHMnLCAoKSA9PiB0aGlzLl9z
aG93QWxsVGVzdEdyb3VwcygpKTsKICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdy
ZW5hbWVUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBuZXdOYW1lKSA9PiB0aGlzLl91cGRhdGVUZXN0
R3JvdXBOYW1lKHRlc3RHcm91cCwgbmV3TmFtZSkpOwogICAgICAgICBncm91cFBhbmUubGlzdGVu
VG9BY3Rpb24oJ3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHknLCAodGVzdEdyb3VwKSA9PiB0aGlz
Ll9oaWRlQ3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXApKTsKLSAgICAgICAgZ3JvdXBQYW5lLmxp
c3RlblRvQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3Vu
dCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVz
dEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOwotICAgICAgICBn
cm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIGNv
bW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9i
aXNlY3RDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNv
dW50LCBub3RpZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0
aW9uKCdyZXRyeVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gdGhpcy5fcmV0cnlDdXJyZW50VGVzdEdy
b3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0
aXRpb25UeXBlKSk7CisgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVz
dEdyb3VwJywgKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlP
bkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKSA9PiB0aGlzLl9iaXNlY3RDdXJyZW50VGVzdEdy
b3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKSk7CiAKICAgICAgICAgdGhpcy5wYXJ0KCdjYXVzZS1saXN0
JykubGlzdGVuVG9BY3Rpb24oJ2FkZEl0ZW0nLCAocmVwb3NpdG9yeSwgcmV2aXNpb24pID0+IHsK
ICAgICAgICAgICAgIHRoaXMuX2Fzc29jaWF0ZUNvbW1pdCgnY2F1c2UnLCByZXBvc2l0b3J5LCBy
ZXZpc2lvbik7CkBAIC04MzIsMTkgKzg4MCwyMiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4
dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX3JldHJ5
Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21w
bGV0aW9uKQorICAgIGFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBl
dGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpCiAgICAgewog
ICAgICAgICBjb25zdCBleGlzdGluZ05hbWVzID0gKHRoaXMuX3Rlc3RHcm91cHMgfHwgW10pLm1h
cCgoZ3JvdXApID0+IGdyb3VwLm5hbWUoKSk7CiAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBDb21t
aXRTZXQuY3JlYXRlTmFtZVdpdGhvdXRDb2xsaXNpb24odGVzdEdyb3VwLm5hbWUoKSwgbmV3IFNl
dChleGlzdGluZ05hbWVzKSk7CiAgICAgICAgIGNvbnN0IGNvbW1pdFNldExpc3QgPSB0ZXN0R3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpOwogICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IHRoaXMu
X3Rhc2sucGxhdGZvcm0oKSB8fCB0ZXN0R3JvdXAucGxhdGZvcm0oKTsKLSAgICAgICAgcmV0dXJu
IFRlc3RHcm91cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0
Zm9ybSwgdGVzdEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRT
ZXRMaXN0LCBub3RpZnlPbkNvbXBsZXRpb24pCi0gICAgICAgICAgICAudGhlbih0aGlzLl9kaWRG
ZXRjaFRlc3RHcm91cHMuYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0
ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAu
dGVzdCgpLCBuZXdOYW1lLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudCwgY29tbWl0
U2V0TGlzdCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAg
ICB0aGlzLl9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3
IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQog
Ci0gICAgYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRz
LCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfYmlzZWN0
Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwg
bm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRlc3RHcm91cC50YXNrKCkpOwogICAgICAgICBjb25zdCBleGlzdGluZ1Rlc3RH
cm91cE5hbWVzID0gbmV3IFNldCgodGhpcy5fdGVzdEdyb3VwcyB8fCBbXSkubWFwKCh0ZXN0R3Jv
dXApID0+IHRlc3RHcm91cC5uYW1lKCkpKTsKQEAgLTg1NCw3ICs5MDUsNyBAQCBjbGFzcyBBbmFs
eXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIGNvbnN0
IGN1cnJlbnRDb21taXRTZXQgPSBjb21taXRTZXRzW2ldOwogICAgICAgICAgICAgY29uc3QgdGVz
dEdyb3VwTmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbihDb21taXRT
ZXQuZGlmZihwcmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldCksIGV4aXN0aW5nVGVz
dEdyb3VwTmFtZXMpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRl
c3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgW3ByZXZpb3Vz
Q29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJl
ZmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRp
b25Db3VudCwgW3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25D
b21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5f
ZGlkRmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cHMpOwogICAgICAgICAgICAgfSBjYXRjaChlcnJv
cikgewogICAgICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3Qg
Z3JvdXA6ICcgKyBlcnJvcik7CkBAIC04NjMsNyArOTE0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNr
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBf
Y3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5hbWUs
IHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAg
X2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBOYW1l
LCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBl
dGl0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBsaWNhdGVUZXN0R3Jv
dXBOYW1lKHRlc3RHcm91cE5hbWUpKSB7CiAgICAgICAgICAgICBhbGVydChgVGhlcmUgaXMgYWxy
ZWFkeSBhIHRlc3QgZ3JvdXAgbmFtZWQgIiR7dGVzdEdyb3VwTmFtZX0iYCk7CkBAIC04ODksMTMg
Kzk0MCwxMyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5n
IHsKICAgICAgICAgZm9yIChsZXQgbGFiZWwgaW4gY29tbWl0U2V0TWFwKQogICAgICAgICAgICAg
Y29tbWl0U2V0cy5wdXNoKGNvbW1pdFNldE1hcFtsYWJlbF0pOwogCi0gICAgICAgIHJldHVybiBU
ZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVzdEdyb3Vw
TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisg
ICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5f
dGFzaywgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlP
bkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlk
RmV0Y2hUZXN0R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAg
ICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0
aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3Rp
ZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0
aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3Rp
ZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fdGFzay5pc0N1c3RvbSgpKTsKICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxp
Y2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwTmFtZSkpIHsKQEAgLTkwMywxMCArOTU0LDEyIEBA
IGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhD
dXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBO
YW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAg
ICAgICAgICAgIC50aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5j
dGlvbiAoZXJyb3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5f
dGFzaywgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29t
bWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAg
ICB0aGlzLl9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKQorICAgICAgICB9IGNh
dGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcg
dGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBfaGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCmluZGV4IGQw
YWYxNzNkYWFkMzJiNDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLjI2YTI2NzdjM2I5ZTE2OWJm
MTAyMDAxZTAyY2IzZmI3YWRiZTFiNGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTEwOCw2ICsxMDgsOCBA
QCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgdGhpcy5f
dHJlbmRMaW5lUGFyYW1ldGVycyA9IFtdOwogICAgICAgICB0aGlzLl90cmVuZExpbmVWZXJzaW9u
ID0gMDsKICAgICAgICAgdGhpcy5fcmVuZGVyZWRUcmVuZExpbmVPcHRpb25zID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX3JlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJzsKKyAgICAgICAgdGhp
cy5fcmVuZGVyUmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbkxhemlseSA9IG5ldyBMYXppbHlFdmFs
dWF0ZWRGdW5jdGlvbih0aGlzLnJlbmRlclJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb24uYmluZCh0
aGlzKSk7CiAKICAgICAgICAgdGhpcy5jb25maWd1cmUocGxhdGZvcm1JZCwgbWV0cmljSWQpOwog
ICAgIH0KQEAgLTEyMCwxMCArMTIyLDE4IEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0
UGFuZUJhc2UgewogICAgICAgICBjb25zdCBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3ggPSB0
aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKTsKICAgICAgICAgY29uc3QgcmVw
ZXRpdGlvbkNvdW50ID0gdGhpcy5jb250ZW50KCdjb25maXJtLXJlcGV0aXRpb24nKTsKICAgICAg
ICAgY29uc3Qgbm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5jb250ZW50KCdub3RpZnktb24tY29t
cGxldGlvbicpOworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29udGVudCgn
cmVwZXRpdGlvbi10eXBlJyk7CisgICAgICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlRXhwbGFuYXRp
b24gPSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZS1leHBsYW5hdGlvbicpOwogICAgICAg
ICBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3gub25jaGFuZ2UgPSAoKSA9PiB7CiAgICAgICAg
ICAgICBjb25zdCBzaG91bGREaXNhYmxlID0gIWNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5j
aGVja2VkOwogICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LmRpc2FibGVkID0gc2hvdWxkRGlz
YWJsZTsKICAgICAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbi5kaXNhYmxlZCA9IHNob3VsZERp
c2FibGU7CisgICAgICAgICAgICByZXBldGl0aW9uVHlwZS5kaXNhYmxlZCA9IHNob3VsZERpc2Fi
bGU7CisgICAgICAgICAgICByZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uLmRpc3BsYXkgPSBzaG91
bGREaXNhYmxlID8gJ25vbmUnIDogbnVsbDsKKyAgICAgICAgfTsKKyAgICAgICAgcmVwZXRpdGlv
blR5cGUub25jaGFuZ2UgPSAoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlw
ZSA9IHJlcGV0aXRpb25UeXBlLnZhbHVlOworICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5k
ZXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjQzLDEwICsyNTMsMTEgQEAgY2xhc3MgQ2hh
cnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGNvbnN0IGNyZWF0ZVdpdGhU
ZXN0R3JvdXAgPSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKS5jaGVja2Vk
OwogICAgICAgICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlzLmNvbnRlbnQoJ2NvbmZpcm0t
cmVwZXRpdGlvbicpLnZhbHVlOwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb24gPSB0
aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJykuY2hlY2tlZDsKKyAgICAgICAgY29u
c3QgcmVwZXRpdGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpLmNoZWNr
ZWQ7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3
YWl0IChjcmVhdGVXaXRoVGVzdEdyb3VwID8KLSAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2su
Y3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25D
b3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA6IEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwgc3Rh
cnRQb2ludCwgZW5kUG9pbnQpKTsKKyAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRl
KG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwg
bm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgOiBBbmFseXNpc1Rhc2suY3JlYXRl
KG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7CiAgICAgICAgICAgICBuZXdXaW5kb3cubG9j
YXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svJyArIGFuYWx5c2lzVGFzay5p
ZCgpKTsKICAgICAgICAgICAgIHRoaXMuZmV0Y2hBbmFseXNpc1Rhc2tzKHRydWUpOwogICAgICAg
ICB9IGNhdGNoKGVycm9yKSB7CkBAIC0yNjksOCArMjgwLDggQEAgY2xhc3MgQ2hhcnRQYW5lIGV4
dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9wbGF0Zm9ybSAmJiB0aGlzLl9tZXRyaWMpIHsKLSAgICAgICAgICAgIHZhciBtZXRyaWMg
PSB0aGlzLl9tZXRyaWM7Ci0gICAgICAgICAgICB2YXIgcGxhdGZvcm0gPSB0aGlzLl9wbGF0Zm9y
bTsKKyAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IHRoaXMuX21ldHJpYzsKKyAgICAgICAgICAg
IGNvbnN0IHBsYXRmb3JtID0gdGhpcy5fcGxhdGZvcm07CiAKICAgICAgICAgICAgIHRoaXMucmVu
ZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFuZS10aXRs
ZScpLAogICAgICAgICAgICAgICAgIG1ldHJpYy5mdWxsTmFtZSgpICsgJyBvbiAnICsgcGxhdGZv
cm0ubmFtZSgpKTsKQEAgLTI3OSw5ICsyOTAsMTcgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMg
Q2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGlmICh0aGlzLl9tYWluQ2hhcnRTdGF0dXMpCiAgICAg
ICAgICAgICB0aGlzLl9yZW5kZXJBY3Rpb25Ub29sYmFyKCk7CiAKKyAgICAgICAgdGhpcy5fcmVu
ZGVyUmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbkxhemlseS5ldmFsdWF0ZSh0aGlzLl9yZXBldGl0
aW9uVHlwZSk7CisKICAgICAgICAgc3VwZXIucmVuZGVyKCk7CiAgICAgfQogCisgICAgcmVuZGVy
UmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbihyZXBldGl0aW9uVHlwZSkKKyAgICB7CisgICAgICAg
IGNvbnN0IGV4cGxhbmF0aW9uID0gcmVwZXRpdGlvblR5cGUgPT09ICdhbHRlcm5hdGluZycgPyAn
KGUuZy4gQUJBQkFCKScgOiAnKGUuZy4gQUFBQkJCKSc7CisgICAgICAgIHRoaXMucmVuZGVyUmVw
bGFjZSh0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZS1leHBsYW5hdGlvbicpLCBleHBsYW5h
dGlvbikKKyAgICB9CisKICAgICBfcmVuZGVyQWN0aW9uVG9vbGJhcigpCiAgICAgewogICAgICAg
ICB2YXIgYWN0aW9ucyA9IFtdOwpAQCAtNTg5LDcgKzYwOCwxOCBAQCBjbGFzcyBDaGFydFBhbmUg
ZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxvcHRpb24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPml0ZXJhdGlvbnM8
L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0i
Y2hlY2tib3giIGlkPSJub3RpZnktb24tY29tcGxldGlvbiIgY2hlY2tlZD4gTm90aWZ5IG9uIGNv
bXBsZXRpb248L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+
SW48L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InJlcGV0
aXRpb24tdHlwZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2Vs
ZWN0ZWQ+YWx0ZXJuYXRpbmc8L29wdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPG9wdGlvbj5zZXF1ZW50aWFsPC9vcHRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9zZWxlY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPm1vZGU8L2xh
YmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0icmVwZXRpdGlvbi10
eXBlLWV4cGxhbmF0aW9uIj4oZS5nLiBBQkFCQUIpPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Im5vdGlmeS1v
bi1jb21wbGV0aW9uIiBjaGVja2VkPk5vdGlmeSBvbiBjb21wbGV0aW9uPC9sYWJlbD4KICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAg
ICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjaGFydC1wYW5lLWZpbHRlcmluZy1vcHRpb25z
IHBvcG92ZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlz
aXMtdGFzay1wYWdlLmpzCmluZGV4IDMwMWZkMmEyOTA2NTFkNTEyOGMzNTIzYWY0OTgyMGYyMDNi
YzY2YTMuLjY3ZWQxMWM1NTc1ZGQ2ZjBmMWViZmUwZDNjMWI1ZGQwNjY4ZDA5ZjQgMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5
c2lzLXRhc2stcGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAgLTIyLDE0ICsyMiwxNCBAQCBj
bGFzcyBDcmVhdGVBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAg
ICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRo
aXMuX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cC5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAg
ICBfY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwKHJlcGV0aXRpb25Db3VudCwgdGVzdEdyb3Vw
TmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCBub3RpZnlPbkNvbXBs
ZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cChyZXBldGl0aW9u
Q291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFt
ZSwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIFRl
c3RHcm91cC5jcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91
cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKS50
aGVuKCh0YXNrKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlcigpLnVy
bChgYW5hbHlzaXMvdGFzay8ke3Rhc2suaWQoKX1gKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2sodGFza05hbWUs
IHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNl
dHMsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICAgICAgbG9j
YXRpb24uaHJlZiA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgp
fWApOwotICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsK
ICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcg
KyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmVuZGVyKCkK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmls
ZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVz
dHMuanMKaW5kZXggZGNlMDljYmFiMzUwYTIyYTgzMWQ1YmY5OTIxN2FlNzA5OTcyNjk4Mi4uZjFk
OGRmYTVmODkxMzRmZGNhMDg3ODEwYTZjMDZkN2IzYThiZTk1YyAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKQEAgLTEzNCw3
ICsxMzQsOCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycs
IGZ1bmN0aW9uKCkgewogICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZp
bHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOwog
ICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjog
JzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CiAgICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUt
dGVzdC1ncm91cCcsCi0gICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVy
IHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0Rh
dGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25Db3Vu
dDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFt
ZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVz
dDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHMsIGNvbW1pdFNldDog
bnVsbH0pOwogICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91
cElkJ107CiAKICAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRl
LXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVl
c3RzOiB0cnVlfSk7CkBAIC0xNDQsMTQgKzE0NSwxNiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL2FkZC1idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBpbnNlcnRlZEdyb3VwSWQpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5
TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBh
cnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAgIGZvciAoY29uc3Qg
Y29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRT
ZXQoY29tbWl0U2V0KSksIDIpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQo
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CiAKICAgICAgICAgYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNl
cnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSk7CiAKICAgICAgICAgY29uc3QgdXBkYXRlZEdyb3Vw
cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7Ci0g
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLnJlcGV0
aXRpb25Db3VudCgpKSwgNCk7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHVwZGF0
ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0ucmVwZXRpdGlvbkNvdW50Rm9yQ29t
bWl0U2V0KGNvbW1pdFNldCkpLCA0KTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNl
SW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CiAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUp
OwogICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB1cGRhdGVkR3JvdXBzWzBdLnJlcXVl
c3RlZENvbW1pdFNldHMoKSkgewpAQCAtMTc0LDEwICsxNzcsOTMgQEAgZGVzY3JpYmUoJy9wcml2
aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigpIHsKICAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOwotICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAgICAgZm9y
IChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudEZv
ckNvbW1pdFNldChjb21taXRTZXQpKSwgMik7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChw
YXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKICAgICAgICAgYXdh
aXQgZ3JvdXAudXBkYXRlSGlkZGVuRmxhZyh0cnVlKTsKIAogICAgICAgICBhd2FpdCBhc3NlcnRU
aHJvd3MoJ0Nhbm5vdEFkZFRvSGlkZGVuVGVzdEdyb3VwJywgYXN5bmMgKCkgPT4gYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNl
cnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSkpCiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJl
IGFibGUgdG8gYWRkIGJ1aWxkIHJlcXVlc3RzIHRvIHRlc3QgZ3JvdXAgZm9yIGEgc3BlY2lmaWMg
Y29tbWl0IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2
MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFz
a05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCks
IHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBy
ZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRl
ZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0
ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgY29uc3Qg
dGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQn
XSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpKSwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChn
cm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOworCisgICAg
ICAgIGNvbnN0IGNvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygp
WzFdLmlkKCk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRk
LWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBj
b21taXRTZXR9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdy
b3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJl
cXVlc3RzKCksIHRydWUpOworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHVwZGF0ZWRH
cm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBjb25zdCBidWlsZFJl
cXVlc3RzRm9yRmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KGZpcnN0Q29tbWl0U2V0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdHNGb3JGaXJzdENvbW1pdFNldC5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0IHNl
Y29uZENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFd
OworICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRl
ZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1pdFNldC5sZW5n
dGgsIDQpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiQ29tbWl0U2V0
Tm90SW5UZXN0R3JvdXAiIGlmIGNvbW1pdCBzZXQgaXMgbm90IGluIHRlc3QgZ3JvdXAnLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29t
ZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVy
KChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAg
ICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0
LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFz
aycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAy
LCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0
Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVl
ZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2Fp
dCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworCisgICAg
ICAgIGNvbnN0IGNvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygp
WzBdLmlkKCkgKyB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXS5pZCgpICsg
MTsKKworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0NvbW1pdFNldE5vdEluVGVzdEdyb3Vw
JywgKCkgPT4KKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWls
ZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0
U2V0fSkpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZENv
bW1pdFNldCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdlcicsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2sn
KTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29u
c3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0s
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVz
dWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlz
aW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RH
cm91cElkJ107CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBk
YXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJl
cXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3Vw
ID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCks
IGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlO
ZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFy
c2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CisKKyAgICAgICAgY29u
c3QgY29tbWl0U2V0ID0gJ2ludmFsaWQnOworCisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygn
SW52YWxpZENvbW1pdFNldCcsICgpID0+CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRk
Q291bnQ6IDIsIGNvbW1pdFNldH0pKTsKKyAgICB9KTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFs
eXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDJiMjc1MGFhN2EyZGQzYmM3OTVhNzY3Mjc2NGJhYWEz
ZWI4NGQxYjYuLmNhNWE5ZGMyNDhkOGUzMDY0Y2U4NjgzYzI5ZmMzMjJjMjQyN2Y1OTcgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1h
cGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlzaXMtdGFzay10
ZXN0cy5qcwpAQCAtNjgyLDQgKzY4MiwxMDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtYW5hbHlzaXMtdGFzayB3aXRoIG5vZGUgcHJpdmlsZWdlZCBhcGknLCBmdW5jdGkKICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRv
cnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOwogICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0
UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOwogICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCBjcmVhdGUgYW4gYW5hbHlzaXMgdGFzayB3aXRoIHRlc3QgZ3JvdXAgd2l0aCAic2VxdWVu
dGlhbCIgbW9kZSB3aGVuIHNwZWNpZmllZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3Qg
d2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gMTsKKyAgICAgICAgY29u
c3QgdGVzdDFJZCA9IDI7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0OworCisg
ICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhd2FpdCBk
Yi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGF3YWl0
IGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IHRlc3QxSWQsIG5hbWU6ICd0ZXN0MScsIHBhcmVudDog
MX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogd2Via2l0
SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncGxhdGZvcm1z
Jywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsKKyAgICAgICAgYXdh
aXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQsIG5hbWU6ICd0ZXN0
LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3Jl
cG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9ubHknLCB0cmlnZ2Vy
YWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJh
YmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3JvdXA6IDIzNDV9KTsK
KyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucycsIHt0
ZXN0OiB0ZXN0MUlkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dlcmFibGU6IHRyaWdnZXJh
YmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoUmV2
aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAgIGF3YWl0IFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIGFub3RoZXJSZXBv
cnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAg
ICAgIGxldCB0ZXN0MSA9IFRlc3QuZmluZEJ5SWQodGVzdDFJZCk7CisgICAgICAgIGxldCBzb21l
UGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAgY29uc3Qg
Y29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJhdGlvbnMn
LCB7bWV0cmljOiB0ZXN0MS5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06IHNvbWVQbGF0Zm9y
bS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0Um93cygn
dGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0IG9uZVJldmlz
aW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsKKyAgICAgICAgY29u
c3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMyd9
fTsKKworICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9u
Q291bnQ6IDIsCisgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHJldmlzaW9u
U2V0czogW29uZVJldmlzaW9uU2V0LCBhbm90aGVyUmV2aXNpb25TZXRdLAorICAgICAgICAgICAg
c3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLCBlbmRSdW46IHRlc3RSdW5zWzFdWydpZCddLCBu
ZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJ30pOwor
CisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKGNvbnRl
bnRbJ3Rhc2tJZCddKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRhc2submFtZSgpLCAn
Y29uZmlybScpOworICAgICAgICBhc3NlcnQoIXRhc2suaGFzUmVzdWx0cygpKTsKKyAgICAgICAg
YXNzZXJ0KHRhc2suaGFzUGVuZGluZ1JlcXVlc3RzKCkpOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHRhc2suYnVncygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwodGFzay5jYXVzZXMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRh
c2suZml4ZXMoKSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5jaGFuZ2VU
eXBlKCksIG51bGwpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5wbGF0Zm9ybSgp
LmxhYmVsKCksICdzb21lIHBsYXRmb3JtJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
YXNrLm1ldHJpYygpLnRlc3QoKS5sYWJlbCgpLCAndGVzdDEnKTsKKworICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrLmlkKCkpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBj
b25zdCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwodGVzdEdyb3VwLm5hbWUoKSwgJ0NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0Lm9rKHRlc3RH
cm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9
IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChi
dWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1
aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChi
dWlsZFJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
YnVpbGRSZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVx
dWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVzdHNbMV0uY29tbWl0U2V0KCkp
KTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1
aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBmaXJzdENvbW1p
dFNldCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHNlY29u
ZENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0
IHdlYmtpdFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKHdlYmtpdElkKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnko
d2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVw
b3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOworICAgIH0pOworCisgICAgaXQoJ3Nob3Vs
ZCByZWplY3Qgd2l0aCAiSW52YWxpZFJlcGV0aXRpb25UeXBlIiB3aGVuIHRlc3QgbW9kZSBpcyBu
ZWl0aGVyICJhbHRlcm5hdGluZyIgbm9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgY29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gMTsK
KyAgICAgICAgY29uc3QgdGVzdDFJZCA9IDI7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQg
PSAxMjM0OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAg
ICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU3VpdGUnfSk7Cisg
ICAgICAgIGF3YWl0IGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IHRlc3QxSWQsIG5hbWU6ICd0ZXN0
MScsIHBhcmVudDogMX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycs
IHtpZDogd2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2Vy
dCgncGxhdGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsK
KyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQs
IG5hbWU6ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Ry
aWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9u
bHknLCB0cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3Jv
dXA6IDIzNDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1
cmF0aW9ucycsIHt0ZXN0OiB0ZXN0MUlkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dlcmFi
bGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnRXaXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAg
ICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0Lycs
IGFub3RoZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRj
aCgpOworCisgICAgICAgIGxldCB0ZXN0MSA9IFRlc3QuZmluZEJ5SWQodGVzdDFJZCk7CisgICAg
ICAgIGxldCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAg
ICAgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29u
ZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0MS5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06
IHNvbWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIu
c2VsZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNv
bnN0IG9uZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsK
KyAgICAgICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lv
bjogJzE5MTYyMyd9fTsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRp
dGlvblR5cGUnLCAoKSA9PgorICAgICAgICAgICAgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6
IDIsCisgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCByZXZpc2lvblNl
dHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlzaW9uU2V0XSwgcmVwZXRpdGlvblR5cGU6
ICdpbnZhbGlkLW1vZGUnLAorICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsn
aWQnXSwgZW5kUnVuOiB0ZXN0UnVuc1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWV9
KSk7CisgICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0
ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCmluZGV4IDY3ZDg0YWRhZjU5NmExNzBiZGRmZWFmMjI0MjBm
MmMyNTA1ZTEzZDYuLjYzMmJhZGZhYWNiNTI5MGEzNTM0ODI5MGIyZTRmYTM2MTEzMGUyYTYgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0
cy5qcwpAQCAtNyw2ICs3LDggQEAgY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3Vy
Y2VzL3Rlc3Qtc2VydmVyLmpzJyk7CiBjb25zdCBUZW1wb3JhcnlGaWxlID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvdGVtcG9yYXJ5LWZpbGUuanMnKS5UZW1wb3JhcnlGaWxlOwogY29uc3QgYWRkV29y
a2VyRm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMn
KS5hZGRXb3JrZXJGb3JSZXBvcnQ7CiBjb25zdCBwcmVwYXJlU2VydmVyVGVzdCA9IHJlcXVpcmUo
Jy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykucHJlcGFyZVNlcnZlclRlc3Q7Citj
b25zdCBhc3NlcnRUaHJvd3MgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9u
cy5qcycpLmFzc2VydFRocm93czsKKwogCiBmdW5jdGlvbiBjcmVhdGVBbmFseXNpc1Rhc2sobmFt
ZSwgd2Via2l0UmV2aXNpb25zID0gWyIxOTE2MjIiLCAiMTkxNjIzIl0pCiB7CkBAIC00MDAsNyAr
NDAyLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgZ3JvdXBJZCk7Ci0gICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSwgMSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkp
OwogICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTQ0
Nyw3ICs0NDksNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3Vw
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBncm91cElkKTsKLSAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7
CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CiAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMo
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpA
QCAtNDg1LDcgKzQ4Nyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3Qt
Z3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRl
c3RHcm91cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAg
ICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtNTI0LDcgKzUy
Niw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVk
R3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0
aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
b2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IHJl
cXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtNTU2LDcgKzU1OCw3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgp
LCAyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5l
ZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3Jv
dXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNjAzLDcgKzYwNSw3IEBAIGRlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0
aW9uKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1
ZXN0cygpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDQpOwpAQCAtNjQ1LDcgKzY0Nyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBn
cm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAt
Njk0LDcgKzY5Niw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3Jv
dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCks
IGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAg
IGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNzQzLDcgKzc0NSw3
IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgs
IDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOwor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9u
KCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5m
aW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpKSk7CkBAIC04MDgsNyArODEwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBn
cm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFz
c2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCks
IFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTg4Myw3
ICs4ODUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgp
LCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlm
aWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCks
IFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtOTY2LDcgKzk2OCw3IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAg
ICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5z
b21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0
Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBA
IC0xMDYwLDcgKzEwNjIsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRp
b25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAg
ICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTE1Nyw3ICsxMTU5LDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAg
ICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAy
KTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlk
KE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9y
bUlkKCkpKTsKQEAgLTEyMzUsNyArMTIzNyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdy
b3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVk
R3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291
bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CiAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwog
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTEyNjQs
NyArMTI2Niw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwog
ICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICBj
b25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC0xMzA4LDcgKzEzMTAsNyBAQCBkZXNj
cmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgVGVzdEdyb3VwLnNvcnRCeU5hbWUodGVzdEdyb3Vwcyk7CiAKICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzBdLm5hbWUoKSwgJ3Rlc3QxJyk7Ci0g
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5yZXBldGl0aW9uQ291
bnQoKSwgMSk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgbGV0IHJlcXVlc3RzID0g
dGVzdEdyb3Vwc1swXS5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGxldCBzZXQwID0gcmVxdWVz
dHNbMF0uY29tbWl0U2V0KCk7CkBAIC0xMzIxLDcgKzEzMjMsNyBAQCBkZXNjcmliZSgnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcx
OTE2MjMnKTsKIAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0u
bmFtZSgpLCAndGVzdDInKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3Jv
dXBzWzFdLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzWzFdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAg
ICAgICByZXF1ZXN0cyA9IHRlc3RHcm91cHNbMV0uYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICBz
ZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CkBAIC0xMzM2LDQgKzEzMzgsNTMgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9y
eSh3ZWJraXQpLCAnMTkyNzM2Jyk7CiAgICAgICAgIH0pOwogICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCBjcmVhdGUgYSB0ZXN0IGdyb3VwIHdpdGggYW4gYW5hbHlzaXMgdGFzayB3aXRoICJzZXF1
ZW50aWFsIiBtb2RlJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJs
ZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBv
c2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0g
J1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5
MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0
YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQo
KSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAgIG5lZWRzTm90
aWZpY2F0aW9uOiB0cnVlLCByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlh
bCcsIHJlcGV0aXRpb25Db3VudDogMn0pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQg
PSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgW2FuYWx5c2lzVGFzaywg
dGVzdEdyb3Vwc10gPSBhd2FpdCBQcm9taXNlLmFsbChbQW5hbHlzaXNUYXNrLmZldGNoQnlJZChy
ZXN1bHRbJ3Rhc2tJZCddKSwgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCdd
LCB0cnVlKV0pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYW5hbHlzaXNUYXNrLm5hbWUo
KSwgJ290aGVyIHRhc2snKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAy
KTsKKyAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAgICAg
ICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVxdWVzdHNbMV0ub3JkZXIoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVl
c3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2VydChyZXF1ZXN0c1swXS5jb21taXRT
ZXQoKS5lcXVhbHMocmVxdWVzdHNbMV0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJl
cXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1ZXN0c1szXS5jb21taXRTZXQoKSkpOwor
CisgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAg
Y29uc3Qgc2V0MSA9IHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7CisgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCAnMTkxNjIyJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxk
IHJlamVjdCB3aXRoICJJbnZhbGlkTW9kZSIgaWYgdGVzdCBtb2RlIGlzIG5laXRoZXIgImFsdGVy
bmF0aW5nIiBub3IgInNlcXVlbnRpYWwiJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBh
ZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3
ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9y
eS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBb
e1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMyd9fV07CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZh
bGlkTW9kZScsICgpID0+CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdj
cmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycs
CisgICAgICAgICAgICAgICAgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRl
c3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNh
dGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdpbnZhbGlkLW1vZGUnLCByZXBldGl0aW9uQ291
bnQ6IDIsIHJldmlzaW9uU2V0c30pKTsKKyAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVz
dC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
cHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXggNDUwNmMzYjI3
ZjA1ZjIzMmFiNDBjNWU2YWM3NGU3YWQ1ZjQyZDU5OC4uM2ZkNjdjZmM0Yjg0ZGQzOTU3MmFmNmI5
YjBjNGNmODBlNTMzY2Y0NiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVw
ZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xNjgsNyArMTY4LDcgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7CiAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uKCl7CiAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgIGNvbnN0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgZmFsc2UpOwogICAgICAgICBhc3NlcnQub2so
IWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qcwppbmRleCBlY2ZlYzhkMTZlOTM0ZDU3ZDMyNzE4ODhlYzU2M2IzNDQ2ZWFi
NGJhLi5mMjRmNDMzMWEwYjQxMGM3MGJjZGI4OWIwMDhkYzk2NWQxOWI0MGEzIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcwpAQCAtNTMsNyArNTMsNyBAQCBhc3luYyBm
dW5jdGlvbiBhc3NlcnRUaHJvd3MoZXhwZWN0ZWRFcnJvciwgdGVzdEZ1bmN0aW9uKQogewogICAg
IGxldCB0aHJvd25FeGNlcHRpb24gPSBmYWxzZTsKICAgICB0cnkgewotICAgICAgICAgICAgYXdh
aXQgdGVzdEZ1bmN0aW9uKCkKKyAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCk7CiAgICAgfSBj
YXRjaChlcnJvcikgewogICAgICAgICB0aHJvd25FeGNlcHRpb24gPSB0cnVlOwogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZXJyb3IsIGV4cGVjdGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0
cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVp
bGQtcmVxdWVzdHMuanMKaW5kZXggOTA1YmEyMjQ1Y2IwMmFlNGU5MzMxMjZiNzg5NmE2YjI4YTMy
MWU0NS4uODY2OGI1ZjZlMGJmYWZhYmUxNjBmOTdiMjc3NWIwZjBlZmVhYjY0NyAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1y
ZXF1ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzCkBAIC05LDM4ICs5LDg3IEBAIGFzeW5jIGZ1bmN0aW9u
IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1
ZXN0cyh0ZXN0CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGxl
dCBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSAwOwotICAgICAgICBsZXQgaGFzQ29tcGxl
dGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IHRydWU7Ci0gICAgICAgIGxldCBoYXNV
bmZpbmlzaGVkQnVpbGRSZXF1ZXN0ID0gZmFsc2U7Ci0gICAgICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKLSAgICAgICAgICAgIGNv
bnN0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0
U2V0KS5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKLQot
ICAgICAgICAgICAgY29uc3QgY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVl
c3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaGFzQ29tcGxldGVkKCkp
Lmxlbmd0aDsKLSAgICAgICAgICAgIGlmICghY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQpCi0g
ICAgICAgICAgICAgICAgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9
IGZhbHNlOwotCi0gICAgICAgICAgICBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29t
bWl0U2V0ICY9IChjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA+IDApOwotICAgICAgICAgICAg
Y29uc3QgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIo
KGJ1aWxkUmVxdWVzdCkgPT4gIWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7Ci0g
ICAgICAgICAgICAvLyAicG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQiIG1pZ2h0IGJlIGxhcmdl
ciB0aGFuIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgYXMgdXNlciBtYXkgYWRk
IGJ1aWxkIHJlcXVlc3RzIG1hbnVhbGx5LgotICAgICAgICAgICAgY29uc3QgcG90ZW50aWFsbHlT
dWNjZXNzZnVsQ291bnQgPSBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCArIHVuZmluaXNoZWRC
dWlsZFJlcXVlc3RDb3VudDsKLSAgICAgICAgICAgIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3Vu
dCA9IE1hdGgubWF4KG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCwgdGVzdEdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50KTsKLQotICAg
ICAgICAgICAgaWYgKHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCkKLSAgICAgICAgICAgICAg
ICBoYXNVbmZpbmlzaGVkQnVpbGRSZXF1ZXN0ID0gdHJ1ZTsKKyAgICAgICAgc3dpdGNoKHRlc3RH
cm91cC5yZXBldGl0aW9uVHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlICdhbHRlcm5hdGluZyc6
CisgICAgICAgICAgICAgICAgYXdhaXQgY3JlYXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdy
b3VwKHRlc3RHcm91cCwgbWF4aW11bVJldHJ5RmFjdG9yKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOgorICAgICAgICAgICAgICAgIGF3YWl0
IGNyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4aW11bVJl
dHJ5RmFjdG9yKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICdJbnZhbGlkUmVwZXRpdGlv
blR5cGUnKQogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHdpbGxFeGNlZWRNYXhpbXVtUmV0cnkg
PSB0ZXN0R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgKyBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291
bnQgPiBtYXhpbXVtUmV0cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpOworICAgIH0KK30KIAotICAgICAgICBjb25zb2xlLmFzc2VydChtYXhNaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQgPD0gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7Ci0gICAg
ICAgIGlmIChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVt
UmV0cnkgJiYgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCAmJiAhaGFzQ29tcGxldGVkQnVpbGRS
ZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOworYXN5bmMgZnVu
Y3Rpb24gY3JlYXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4
aW11bVJldHJ5RmFjdG9yKQoreworICAgIGxldCBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQg
PSAwOworICAgIGxldCBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0g
dHJ1ZTsKKyAgICBsZXQgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOworICAgIGZv
ciAoY29uc3QgY29tbWl0U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsK
KyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1p
dFNldChjb21taXRTZXQpLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaXNU
ZXN0KCkpOwogCi0gICAgICAgIGlmIChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdp
bGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENv
bW1pdFNldCkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmFkZE1vcmVCdWlsZFJlcXVl
c3RzKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCk7Ci0gICAgICAgICAgICBjb25zdCBhbmFs
eXNpc1Rhc2sgPSBhd2FpdCB0ZXN0R3JvdXAuZmV0Y2hUYXNrKCk7Ci0gICAgICAgICAgICBjb25z
b2xlLmxvZyhgQWRkZWQgJHttYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnR9IGJ1aWxkIHJlcXVl
c3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlz
aXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgYXdhaXQgdGVzdEdyb3VwLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7Cisg
ICAgICAgIGNvbnN0IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5m
aWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5n
dGg7CisgICAgICAgIGlmICghY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQpCisgICAgICAgICAg
ICBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gZmFsc2U7CisKKyAg
ICAgICAgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCAmPSAoY29tcGxl
dGVkQnVpbGRSZXF1ZXN0Q291bnQgPiAwKTsKKyAgICAgICAgY29uc3QgdW5maW5pc2hlZEJ1aWxk
UmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gIWJ1
aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7CisgICAgICAgIC8vICJwb3RlbnRpYWxs
eVN1Y2Nlc3NmdWxDb3VudCIgbWlnaHQgYmUgbGFyZ2VyIHRoYW4gdGVzdEdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSBhcyB1c2VyIG1heSBhZGQgYnVpbGQgcmVxdWVzdHMgbWFudWFsbHku
CisgICAgICAgIGNvbnN0IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVp
bGRSZXF1ZXN0Q291bnQgKyB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7CisgICAgICAgIG1h
eE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA9IE1hdGgubWF4KG1heE1pc3NpbmdCdWlsZFJlcXVl
c3RDb3VudCwgdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlhbGx5
U3VjY2Vzc2Z1bENvdW50KTsKKworICAgICAgICBpZiAodW5maW5pc2hlZEJ1aWxkUmVxdWVzdENv
dW50KQorICAgICAgICAgICAgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRydWU7CisgICAg
fQorICAgIGNvbnN0IHdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgPSB0ZXN0R3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAgIHRlc3RHcm91cC5yZXBldGl0
aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSArIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RD
b3VudCA+IG1heGltdW1SZXRyeUZhY3RvciAqIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCkpOworCisgICAgY29uc29sZS5hc3NlcnQobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
IDw9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOworICAgIGlmIChtYXhNaXNz
aW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzVW5m
aW5pc2hlZEJ1aWxkUmVxdWVzdCAmJiAhaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENv
bW1pdFNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1heE1pc3NpbmdCdWlsZFJlcXVl
c3RDb3VudCAmJiAhd2lsbEV4Y2VlZE1heGltdW1SZXRyeSAmJiBoYXNDb21wbGV0ZWRCdWlsZFJl
cXVlc3RGb3JFYWNoQ29tbWl0U2V0KSB7CisgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRNb3Jl
QnVpbGRSZXF1ZXN0cyhtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOworICAgICAgICBjb25z
dCBhbmFseXNpc1Rhc2sgPSBhd2FpdCB0ZXN0R3JvdXAuZmV0Y2hUYXNrKCk7CisgICAgICAgIGNv
bnNvbGUubG9nKGBBZGRlZCAke21heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudH0gYnVpbGQgcmVx
dWVzdChzKSB0byAiJHt0ZXN0R3JvdXAubmFtZSgpfSIgb2YgYW5hbHlzaXMgdGFzazogJHthbmFs
eXNpc1Rhc2suaWQoKX0gLSAiJHthbmFseXNpc1Rhc2submFtZSgpfSJgKTsKKyAgICB9CisgICAg
YXdhaXQgdGVzdEdyb3VwLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIGNyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91
cCwgbWF4aW11bVJldHJ5RmFjdG9yKQoreworICAgIGxldCBtaXNzaW5nQnVpbGRSZXF1ZXN0Q291
bnQgPSAwOworICAgIGxldCB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gZmFsc2U7CisKKyAgICBj
b25zb2xlLmFzc2VydChBcnJheS5mcm9tKHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkp
LmV2ZXJ5KChjb21taXRTZXQsIGluZGV4LCBsaXN0KSA9PiB7CisgICAgICAgIGlmICghaW5kZXgp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIE1hdGgubWluKC4uLih0
ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQobGlzdFtpbmRleCAtIDFdKS5tYXAoYnVpbGRS
ZXF1ZXN0ID0+IGJ1aWxkUmVxdWVzdC5vcmRlcigpKSkpIDwKKyAgICAgICAgICAgIE1hdGgubWlu
KC4uLih0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5tYXAoYnVpbGRS
ZXF1ZXN0ID0+IGJ1aWxkUmVxdWVzdC5vcmRlcigpKSkpOworICAgIH0pKTsKKyAgICBjb25zdCBm
aXJzdENvbW1pdFNldFRvUmV0cnkgPSB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmZp
bmQoY29tbWl0U2V0ID0+IHsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91
cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9
PiBidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICBjb25zdCBjb21wbGV0ZWRCdWlsZFJl
cXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxk
UmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoOworICAgICAgICBpZiAoY29tcGxldGVkQnVp
bGRSZXF1ZXN0Q291bnQgPj0gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCB1bmZpbmlzaGVkQnVpbGRS
ZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiAhYnVp
bGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpLmxlbmd0aDsKKyAgICAgICAgY29uc3QgcG90ZW50aWFs
bHlTdWNjZXNzZnVsQ291bnQgPSBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCArIHVuZmluaXNo
ZWRCdWlsZFJlcXVlc3RDb3VudDsKKyAgICAgICAgbWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0g
dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlhbGx5U3VjY2Vzc2Z1
bENvdW50OworICAgICAgICB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gTWF0aC5tYXgoMCwgbWlz
c2luZ0J1aWxkUmVxdWVzdENvdW50KSArIHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSA+IG1heGltdW1SZXRyeUZhY3RvciAqIHRlc3RHcm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworCisgICAg
aWYgKCF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGZpcnN0Q29tbWl0U2V0VG9SZXRyeSAmJiBt
aXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPiAwKSB7CisgICAgICAgIGF3YWl0IHRlc3RHcm91cC5h
ZGRNb3JlQnVpbGRSZXF1ZXN0cyhtaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQsIGZpcnN0Q29tbWl0
U2V0VG9SZXRyeS5pZCgpKTsKKyAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVz
dEdyb3VwLmZldGNoVGFzaygpOworICAgICAgICBjb25zb2xlLmxvZyhgQWRkZWQgJHttYXhNaXNz
aW5nQnVpbGRSZXF1ZXN0Q291bnR9IGJ1aWxkIHJlcXVlc3QocykgdG8gIiR7dGVzdEdyb3VwLm5h
bWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlzaXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlz
aXNUYXNrLm5hbWUoKX0iYCk7CiAgICAgfQorCisgICAgaWYgKHdpbGxFeGNlZWRNYXhpbXVtUmV0
cnkgfHwgIWZpcnN0Q29tbWl0U2V0VG9SZXRyeSkKKyAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmNs
ZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CiB9CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9
PSAndW5kZWZpbmVkJykKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDk4MzExMGFkYjBiOGZjNTdj
ZjcxOGNhZjM0ZWE5NDA0MWNhNmM0OTcuLjFkNDJhNWUyNjMzMmU2NmJkZjMwNzRkZjk5NzkzYzY5
YTU0NzNmYjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L2FuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Vu
aXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtMzE1LDcgKzMxNSw3IEBAIGRlc2Ny
aWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
MV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlv
bkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNv
dW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5h
dGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVzdEdyb3Vw
TmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAgICAgICAg
ICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJl
dmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjIn
OiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNo
OiBudWxsfX0sCkBAIC0zMzcsNyArMzM3LDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgp
ID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sx
XS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0u
ZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNh
dGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAg
ICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9r
ZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHty
ZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6
IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJl
dmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzU5LDcg
KzM1OSw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBh
d2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10
YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25m
aXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJt
JywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlv
blR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1
bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0
czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlz
aW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBAIC00MjAsNyArNDIwLDcgQEAgZGVzY3JpYmUoJ0Fu
YWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2Fp
dEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmws
ICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6
IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQs
IG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywK
ICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAn
Q29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAg
ICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZp
c2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9
fSwKQEAgLTQ1NCwxMSArNDU0LDExIEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7
CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayB3aXRoIGNvbmZpcm1p
bmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAg
ICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9p
bnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRl
KCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSwgJ2Fs
dGVybmF0aW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVxdWVzdHNbMF0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0
LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwg
ZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2VyJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29y
ZCcsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgd29ya2VyTmFtZTog
J3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCByZXBldGl0aW9uVHlwZTogJ2Fs
dGVybmF0aW5nJywKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHJl
dmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Vi
a2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93
bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQt
YW5hbHl6ZXItdGVzdHMuanMKaW5kZXggMDdmY2IzZGIzZGU2YjEyZTZiOTQ3Y2M2MzBjZDA3YmI2
YTA0ZmJiYS4uMDkwN2EwYjAxNmEwNTE0ODM0N2RjYjNmNDc3ZTJhOTI1OThhYWZiYiAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0
LWFuYWx5emVyLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcwpAQCAtMjM1LDYgKzIzNSw3IEBA
IGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAg
ICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAn
Q29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAg
ICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAg
ICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMzUsIG93bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246
IDQ0LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7
CkBAIC0yOTQsNiArMjk1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAo
KSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAg
ICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlm
aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAz
NSwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAg
ICAgeycxMSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fX1dCiAgICAgICAgICAgICB9KTsKQEAgLTUyNiw2ICs1MjgsNyBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291
bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czog
W3snMTEnOiB7cmV2aXNpb246IDQwLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19
LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA0OSwgb3duZXJSZXZpc2lv
bjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpAQCAtNjE4LDYgKzYyMSw3
IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAg
ICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1l
OiAnQ29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisg
ICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAg
ICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMywgb3duZXJSZXZpc2lvbjog
bnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lv
bjogOCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmluZGV4IDA4
MmQ4MGRjYTVlZjhmMDgzNTg5YzY1NDFiYTI0NTZhZmQxMjg2MjguLmY2MWJiOGYwZjA2MWY2Y2Uw
YjMwZmE1OWE3N2ZkYTI4OTMyZTg0MjIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMKQEAgLTE0LDYgKzE0LDggQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdy
b3VwKGNvbmZpZykgewogICAgIGNvbnN0IG1heU5lZWRNb3JlUmVxdWVzdHMgPSBjb25maWcubWF5
TmVlZE1vcmVSZXF1ZXN0czsKICAgICBjb25zdCBoaWRkZW4gPSBjb25maWcuaGlkZGVuOwogICAg
IGNvbnN0IHN0YXR1c0xpc3QgPSBjb25maWcuc3RhdHVzTGlzdDsKKyAgICBjb25zdCBjb21taXRT
ZXRMaXN0ID0gY29uZmlnLmNvbW1pdFNldExpc3QgfHwgWyc0MjU1JywgJzQyNTYnLCAnNDI1NScs
ICc0MjU2JywgJzQyNTUnLCAnNDI1NiddOworICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlID0gY29u
ZmlnLnJlcGV0aXRpb25UeXBlIHx8ICdhbHRlcm5hdGluZyc7CiAKICAgICByZXR1cm4gewogICAg
ICAgICAidGVzdEdyb3VwcyI6IFt7CkBAIC0yOSw3ICszMSw4IEBAIGZ1bmN0aW9uIHNhbXBsZVRl
c3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQy
NTYiXSwKICAgICAgICAgICAgICJub3RpZmljYXRpb25TZW50QXQiOiBudWxsLAogICAgICAgICAg
ICAgaW5pdGlhbFJlcGV0aXRpb25Db3VudCwKLSAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVz
dHMKKyAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMsCisgICAgICAgICAgICByZXBldGl0
aW9uVHlwZQogICAgICAgICB9XSwKICAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbewogICAgICAg
ICAgICAgImlkIjogIjE2OTg1IiwKQEAgLTM4LDcgKzQxLDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVz
dEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAg
ICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAgICAgICAib3JkZXIiOiAiMCIsCi0gICAg
ICAgICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNv
bW1pdFNldExpc3RbMF0sCiAgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFswXSwKICAg
ICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTUw
LDcgKzUzLDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewogICAgICAgICAg
ICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAg
ICAgICAgICAgICAib3JkZXIiOiAiMSIsCi0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYi
LAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbMV0sCiAgICAgICAgICAg
ICAic3RhdHVzIjogc3RhdHVzTGlzdFsxXSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAg
ICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTYyLDcgKzY1LDcgQEAgZnVuY3Rpb24gc2FtcGxl
VGVzdEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAg
ICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAgICAgICAib3JkZXIiOiAiMiIsCi0g
ICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6
IGNvbW1pdFNldExpc3RbMl0sCiAgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsyXSwK
ICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAg
LTc0LDcgKzc3LDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewogICAgICAg
ICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIs
CiAgICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQy
NTYiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbM10sCiAgICAgICAg
ICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFszXSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAog
ICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTg1LDggKzg4LDggQEAgZnVuY3Rpb24gc2Ft
cGxlVGVzdEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKICAgICAg
ICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgi
LAotICAgICAgICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0
MjU1IiwKKyAgICAgICAgICAgICJvcmRlciI6ICI0IiwKKyAgICAgICAgICAgICJjb21taXRTZXQi
OiBjb21taXRTZXRMaXN0WzRdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNF0s
CiAgICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBA
IC05Nyw4ICsxMDAsOCBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAg
ICAgICAgICAidGVzdCI6ICI4NDQiLAogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAg
ICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIs
Ci0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAorICAgICAgICAgICAgIm9yZGVyIjog
IjUiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbNV0sCiAgICAgICAg
ICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAog
ICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTE1NSw3ICsxNTgsNyBAQCBkZXNjcmliZSgn
Y3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVl
c3RzJywgKCkgPT4gewogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsK
IAogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBp
L2FkZC1idWlsZC1yZXF1ZXN0cycpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bh
c3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDF9KTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29y
a2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21t
aXRTZXQ6IG51bGx9KTsKICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwogCiAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKQEAgLTE3Miw3ICsxNzUsNyBA
QCBkZXNjcmliZSgnY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0
aEZhaWxlZFJlcXVlc3RzJywgKCkgPT4gewogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAxKTsKIAogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOwotICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQ
YXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDJ9KTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtl
cl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENv
dW50OiAyLCBjb21taXRTZXQ6IG51bGx9KTsKICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgp
OwogCiAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKQEAgLTI0
OSw0ICsyNTIsMTE2IEBAIGRlc2NyaWJlKCdjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7CiAgICAgICAgIGNyZWF0ZUFk
ZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0
R3JvdXBzLCAzKTsKICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMCk7CiAg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGFkZCBvbmUgbW9yZSBidWlsZCByZXF1ZXN0IG9uIEEg
Y29uZmlnIHdoZW4gb25lIEEgY29uZmlnIHJlcXVlc3QgZmFpbGVkIGZvciB0ZXN0IGdyb3VwIGlu
IHNlcXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3Vw
Q29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgIGhpZGRlbjogZmFs
c2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICBzdGF0dXNMaXN0
OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgInJ1bm5pbmciLCAic2NoZWR1
bGVkIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0
MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMo
ZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vw
c1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1l
Jywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAx
LCBjb21taXRTZXQ6ICc0MjU1J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisK
KyAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCBhZGQgb25lIG1vcmUgYnVpbGQgcmVxdWVzdCBvbiBBIGNvbmZpZyB3aGVuIG9u
ZSBBIGNvbmZpZyByZXF1ZXN0IGZhaWxlZCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRy
dWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRp
YWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImZhaWxlZCIsICJydW5uaW5nIiwgInNjaGVkdWxlZCIsICJwZW5kaW5nIl0sCisgICAgICAgICAg
ICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1Nics
ICc0MjU2J119OworCisgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdy
b3VwQ29uZmlnKTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRl
TW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlv
bmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3Vw
cywgMyk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1
aWxkLXJlcXVlc3RzJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0
YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQn
LCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMSwgY29tbWl0U2V0OiAnNDI1NSd9KTsKKyAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3Jv
dXBzLzIxMjgnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0cnkgQSBjb25maWcgZmly
c3QgZXZlbiBpZiBCIGNvbmZpZyBoYXMgZmFpbGVkIGJ1aWxkIGluIHNlcXVlbnRpYWwgbW9kZScs
IGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90
aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBl
OiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJj
b21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAicnVubmluZyJdLAor
ICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0MjU2
JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdy
b3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3Jv
dXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3Jl
YXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3Rz
KHRlc3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
KTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQt
YXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVl
c3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDog
J3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogJzQyNTUn
fSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2Fw
aS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGFkZCBvbmUg
bW9yZSBidWlsZCByZXF1ZXN0IG9uIEIgY29uZmlnIGFuZCBjbGVhciBtYXlOZWVkTW9yZVJlcXVl
c3Qgd2hlbiBvbmUgQiBjb25maWcgcmVxdWVzdCBmYWlsZWQgaW4gc2VxdWVudGlhbCBtb2RlJywg
YXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3Rp
ZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJl
cXVlc3RzOiB0cnVlLAorICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6
ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQi
XSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAn
NDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRl
c3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVz
dEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAg
IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1
ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxl
Z2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChy
ZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dv
cmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6ICc0
MjU2J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgYXdhaXQg
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwg
Jy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjbGVh
ciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyBpZiByZXRyeSB3aWxsIGV4Y2VlZCBtYXhpbXVtIHJl
dHJ5IGluIHNlcXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVz
dEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRp
b25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgIGhpZGRl
bjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICBzdGF0
dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIs
ICJmYWlsZWQiLCAiZmFpbGVkIl0sCisgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUn
LCAnNDI1NScsICc0MjU2JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgIGNv
bnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgY29u
c3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3Jv
dXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RH
cm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMik7CisgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9u
YW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0IGZsYWcgd2hl
biBpbml0aWFsIHJlcXVlc3RlZCByZXBldGl0aW9uIGlzIHNhdGlzZmllZCBpbiBzZXF1ZW50aWFs
IG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0
aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0
ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBs
ZXRlZCJdLAorICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1
NicsICc0MjU2JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2Ft
cGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAg
ICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxl
ZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAxKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBh
c3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBm
YWxzZX0pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgfSk7CiB9KTsKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBz
LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91
cHMtdGVzdHMuanMKaW5kZXggNWFhOTFlOGFhMDJlMTFhNjY0NTFkMzFkOTYzNjk2Y2VkOGQ0OTgz
ZS4uNDgwNzZlNWE4ZDRlMjcwYjVmZmNhNWQ0OWY2MTYyMzAwNWRkYjdhNyAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVz
dHMuanMKQEAgLTI0OSw3ICsyNDksNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlzSGlkZGVuKCksIGZhbHNlKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVl
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrZ3JvdXAuY3JlYXRlZEF0KCksIDE0NTg2ODg1
MTQwMDApOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgp
LCBzYW1wbGVUZXN0R3JvdXAoKVsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCAvIDIpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgc2FtcGxl
VGVzdEdyb3VwKClbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGggLyAyKTsKICAgICAgICAgICAgIGFz
c2VydC5vayhncm91cC5oYXNQZW5kaW5nKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91
cC5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAuaGFzU3RhcnRl
ZCgpKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVs
cy53ZWJraXQsICcxOTE2MjMnKTsKICAgICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBv
c2l0b3J5KE1vY2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeSwgJzgwMjI5Jyk7CiAKLSAgICAgICAg
ICAgIGNvbnN0IHByb21pc2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUtdGFzaycs
IE1vY2tNb2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29tZS1ncm91
cCcsIDQsIFtzZXQxLCBzZXQyXSwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0g
VGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdzb21lLXRhc2snLCBNb2NrTW9kZWxzLnNvbWVQbGF0
Zm9ybSwgTW9ja01vZGVscy5zb21lVGVzdCwgJ3NvbWUtZ3JvdXAnLCA0LCBbc2V0MSwgc2V0Ml0s
IHRydWUsICdhbHRlcm5hdGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAn
L3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVl
c3RzWzFdLnJlc29sdmUoewpAQCAtNDc1LDcgKzQ3NSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJd
LmRhdGEsIHt0YXNrTmFtZTogJ3NvbWUtdGFzaycsIG5hbWU6ICdzb21lLWdyb3VwJywgcGxhdGZv
cm06IDY1LCB0ZXN0OiAxLAogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwgcmV2
aXNpb25TZXRzOiBbeycxMSc6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2
aXNpb246ICIxOTE2MjIifSwKICAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19LCB7JzExJzoge293bmVy
UmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMyJ9LAotICAgICAg
ICAgICAgICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJl
dmlzaW9uOiAiODAyMjkifX1dLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdG9rZW46ICdhYmMn
fSk7CisgICAgICAgICAgICAgICAgICAgICcxNic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRj
aDogbnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCBy
ZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10
ZXN0LWdyb3VwJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAg
ICAgICAgICB0YXNrSWQ6IDEyMywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426210</attachid>
            <date>2021-04-16 05:04:10 -0700</date>
            <delta_ts>2021-04-16 15:53:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210416050409.patch</filename>
            <type>text/plain</type>
            <size>168678</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDE0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjN2ZiYmEwY2Q4NDg2MWQ2MTkwOWE5YmFlYzgwOGM1ZDM0ZWQ1NjYwLi44MjUxZGNmNGQ4
MGNmY2JjYjYxN2M1OGYwNmFhZjViYWMxY2E4YjgwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTUgQEAKKzIwMjEtMDQtMTUgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlw
ZScgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJyB0YWJsZSB0byBzdG9yZSByZXBldGl0aW9uIHR5
cGUgd2hpY2ggZGVmYXVsdHMgdG8gJ2FsdGVybmF0aW5nJy4KKyAgICAgICAgQWRkIHN1cHBvcnQg
dG8gc2NoZWR1bGUgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nIHdoaWNoIHJ1bnMgYWxsIEEgcnVu
cyBiZWZvcmUgQiBydW5zLCB3aGVyZWFzIHByZXZpb3VzbHkgd2Ugb25seQorICAgICAgICBzdXBw
b3J0IGFsdGVybmF0aW5nIEEgYW5kIEIgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBydW5zLgorICAg
ICAgICBBZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKyAgICAg
ICAgVXBkYXRlIHN5bmNpbmcgc2NyaXB0IHRvIG5vdCBwcm9jZWVkIHdpdGggbmV4dCBjb25maWd1
cmF0aW9uIHVudGlsIGN1cnJlbnQgY29uZmlndXJhdGlvbiBtZWV0cyBpbml0aWFsIHJlcXVlc3Rl
ZAorICAgICAgICByZXBldGl0aW9uIGNvdW50IG9yIGV4Y2VlZCByZXRyeS4KKyAgICAgICAgRml4
IGEgcG90ZW50aWFsIHJhY2UgaW4gc3luY2luZyBzY3JpcHQgdGhhdCAnUHJvbWlzZS5hbGwnIG1h
eSBjYXVzZSB0ZXN0IGdyb3VwIG5vdCBzY2hlZHVsZWQgaW4gb3JkZXIgLgorICAgICAgICBGaXgg
YSBidWcgaW4gc3luY2luZyBzY3JpcHQgdGhhdCB3b3JrZXIgbWlnaHQgYmUgdGFrZW4gYXdheSBi
ZWZvcmUgc2NoZWR1bGluZyByZXRyeSBmb3IgbGFzdCBidWlsZCByZXF1ZXN0LgorCisgICAgICAg
ICogaW5pdC1kYXRhYmFzZS5zcWw6IEFkZGVkICd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJyBm
aWVsZCB0byAnYW5hbHlzaXNfdGVzdF9ncm91cHMnIHRhYmxlLgorICAgICAgICAqIG1pZ3JhdGUt
ZGF0YWJhc2Uuc3FsOiBVcGRhdGVkIG1pZ3JhdGlvbiBzY3JpcHQgdG8gY29uZGl0aW9uYWxseSBh
ZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZpZWxkLgorICAgICAgICAqIHB1YmxpYy9h
cGkvdGVzdC1ncm91cHMucGhwOiBBZGRlZCAncmVwZXRpdGlvblR5cGUnIGZpZWxkIGluIGFwaSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgICogcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0
Y2hlci5waHA6IEZldGNoaW5nIGJ1aWxkIHJlcXVlc3RzIHVuZGVyIGEgdHJpZ2dlcmFibGUgc2hv
dWxkIGluY2x1ZGUgdGVzdAorICAgICAgICBncm91cCB3aXRoIGFsbCB0ZXN0IGdyb3VwcyBmaW5p
c2hlZCBidXQgc3RpbGwgbmVlZCByZXRyeS4gVGhpcyB3aWxsIGFsbG93IHN5bmNpbmcgc2NyaXB0
IHRvIHJlc29sdmUgdGhlIGJ1aWxkCisgICAgICAgIHJlcXVlc3QgYnkgSUQgYW5kIGJsb2NrIG90
aGVyIHJlcXVlc3QgdG8gYmUgc2NoZWR1bGVkIG9uIHRoZSBidWlsZGVyLgorICAgICAgICAqIHB1
YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwOiBBZGRlZCBjb2RlIHRvIGNyZWF0
ZSBidWlsZCByZXF1ZXN0cyBiYXNlZCBvbiB0ZXN0IG1vZGUuCisgICAgICAgICogcHVibGljL3By
aXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHA6IEFkZGVkIHN1cHBvcnQgdG8gb25s
eSBhZGQgYnVpbGQgcmVxdWVzdHMgdG8gb25lIGNvbW1pdCBzZXQuCisgICAgICAgICogcHVibGlj
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocDogQWRkZWQgJ3JlcGV0aXRp
b25UeXBlJyBzdXBwb3J0LgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
dGVzdC1ncm91cC5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAg
KiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwOgorICAgICAgICAq
IHB1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzOgorICAgICAgICAqIHB1Ymxp
Yy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qczog
QWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAoQ3VzdG9tQ29uZmlndXJh
dGlvblRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0VGVzdGluZyk6CisgICAgICAgICogcHVi
bGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzOgorICAgICAgICAoVGVzdEdyb3Vw
Rm9ybSk6CisgICAgICAgIChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFk
b3dUcmVlKToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnJlbmRlcik6CisgICAg
ICAgIChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5yZW5kZXJSZXBldGl0aW9uVHlwZUV4cGxhbmF0
aW9uKToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0VGVzdGluZyk6Cisg
ICAgICAgICogcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzOgorICAgICAgICAoQW5h
bHlzaXNUYXNrLmFzeW5jIGNyZWF0ZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2spOgorICAgICAg
ICAqIHB1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qczoKKyAgICAgICAgKEJ1aWxkUmVx
dWVzdC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKTogQWxsb3cgYnVpbGQgcmVxdWVzdCBvcmRl
ciB0byBiZSB1cGRhdGVkLgorICAgICAgICAoQnVpbGRSZXF1ZXN0LmNvbnN0cnVjdEJ1aWxkUmVx
dWVzdHNGcm9tRGF0YSk6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAgICAgKFRlc3RHcm91cCk6CisgICAgICAg
IChUZXN0R3JvdXAucHJvdG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAgICAgIChUZXN0R3Jv
dXAucHJvdG90eXBlLnJlcGV0aXRpb25UeXBlKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5
cGUuX2xhc3RSZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KTogUmVmYWN0b3JlZCBgcmVwZXRpdGlvbkNvdW50YCBzaW5jZSBy
ZXBldGl0aW9uIG1heSBiZSBkaWZmZXJlbnQKKyAgICAgICAgYmV0d2VlbiBjb25maWd1cmF0aW9u
cy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaGFzUmV0cnkpOiBBIGhlbHBlciBmdW5j
dGlvbiB0byB0ZWxsIGlmIGEgdGVzdCBncm91cCBoYXMgcmV0cnkgcnVucy4KKyAgICAgICAgKFRl
c3RHcm91cC5wcm90b3R5cGUucmVxdWVzdGVkQ29tbWl0U2V0cyk6CisgICAgICAgIChUZXN0R3Jv
dXAuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzLnNldCByZXR1cm4pOgorICAgICAgICAoVGVz
dEdyb3VwLl9jb21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0cy5zZXQgcmVxdWVzdGVkQ29tbWl0U2V0
cyk6CisgICAgICAgIChUZXN0R3JvdXAuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzLmNvbnN0
LnNldCByZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5fY29tcHV0ZVJlcXVlc3RlZENvbW1p
dFNldHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBjYW5jZWxQZW5kaW5n
UmVxdWVzdHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBhZGRNb3JlQnVp
bGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgY3JlYXRlV2l0aFRhc2spOgor
ICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKToK
KyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6Cisg
ICAgICAgIChUZXN0R3JvdXAuYXN5bmMgZmV0Y2hCeUlkKTogQWRkZWQgc3VwcG9ydCB0byBmZXRj
aCB0ZXN0IGdyb3VwIGJ5IElELgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5fb3JkZXJl
ZEJ1aWxkUmVxdWVzdHMpOiBSZW5hbWVkIHRvIGBvcmRlcmVkQnVpbGRSZXF1ZXN0c2AuCisgICAg
ICAgICogcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qczoKKyAgICAgICAgKEFu
YWx5c2lzVGFza0NoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6Cisg
ICAgICAgIChBbmFseXNpc1Rhc2tSZXN1bHRzUGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hh
ZG93VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lLnByb3RvdHlw
ZS5zZXRUZXN0R3JvdXBzKToKKyAgICAgICAgKEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUp
OgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuZGlkQ29uc3Ry
dWN0U2hhZG93VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3Rv
dHlwZS5fcmVuZGVyQ3VycmVudFRlc3RHcm91cC4pOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVz
dEdyb3VwUGFuZS5wcm90b3R5cGUuX3JlbmRlckN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAo
QW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3N1bW1hcml6ZWRUZXN0R3JvdXAp
OgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93
VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfcmV0cnlD
dXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLmFz
eW5jIF9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3Quc2V0
IGNvbnN0KToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVUZXN0
R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNr
UGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cCk6CisgICAgICAgICog
cHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanM6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3Vw
cG9ydC4KKyAgICAgICAgKENoYXJ0UGFuZSk6CisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBl
LmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQ2hhcnRQYW5lLnByb3RvdHlwZS5h
c3luYyBfYW5hbHl6ZVJhbmdlKToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUucmVuZGVy
KToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUucmVuZGVyUmVwZXRpdGlvblR5cGVFeHBs
YW5hdGlvbik6CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNr
LXBhZ2UuanM6CisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3lu
YyBfY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMv
YXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAq
IHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6
IEFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5q
czogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMv
cmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzOgorICAgICAgICAoYXN5bmMgYXNzZXJ0VGhy
b3dzKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qczoKKyAg
ICAgICAgKE1vY2tEYXRhLnNldCBhZGRBbm90aGVyTW9ja1Rlc3RHcm91cCk6CisgICAgICAgICog
c2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzOgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpz
OgorICAgICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzOgorICAgICAgICAo
QnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5bmMgc3luY09uY2UpOgorICAgICAgICAo
QnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5bmMgX3NjaGVkdWxlUmVxdWVzdCk6Cisg
ICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBfc2hvdWxkRGVmZXJG
b3JUZXN0R3JvdXApOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5
bmMgX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUpOgorICAgICAgICAqIHRvb2xz
L2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qczogQWRkZWQgcmV0cnkgY29kZSBmb3Ig
c2VxdWVudGlhbCBBL0IgdGVzdGluZyB3aGljaCB3aWxsIHJldHJ5CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24gYnkgY29uZmlndXJhdGlvbiBhbmQgd2lsbCBub3QgcHJvY2VlZCB3aXRoIG5leHQgY29u
ZmlndXJhdGlvbiB1bnRpbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gbWVldHMKKyAgICAgICAgdXNl
ciBzcGVjaWZpZWQgaXRlcmF0aW9uIG9yIGV4Y2VlZCByZXRyeS4KKyAgICAgICAgKGFzeW5jIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyk6CisgICAgICAgIChhc3luYyBjcmVhdGVBbHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3JvdXAp
OgorICAgICAgICAoYXN5bmMgY3JlYXRlU2VxdWVudGlhbFJldHJpZXNGb3JUZXN0R3JvdXApOgor
ICAgICAgICAqIHVuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qczogVXBkYXRlZCB1bml0
IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRl
c3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogdW5pdC10ZXN0cy9yZXRyeS1m
YWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IEFkZGVkIHRlc3RzIGZvciBzZXF1ZW50aWFs
IEEvQiB0ZXN0aW5nLgorICAgICAgICAqIHVuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanM6
IFVwZGF0ZWQgdW5pdCB0ZXN0cy4KKwogMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBDb21taXQgcmV2aXNpb24gaWRlbnRp
ZmllciBpbiB0aGUgQ2hhcnQKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9p
bml0LWRhdGFiYXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNl
LnNxbAppbmRleCBmNjhiNWYwYzAzM2EyMjY0MzA3YzJmODNmM2Q0ZmI3NGJkYjE1M2VkLi5lMjMx
ZTYxZGY1Mjk3OWZhNzFiODViYzFkM2UyYmQ4NWEwZGEzOTczIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCkBAIC0yOTIsNiArMjkyLDcgQEAgQ1JFQVRFIFRB
QkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBfbmVlZHNfbm90aWZpY2F0
aW9uIGJvb2xlYW4gTk9UIE5VTEwgREVGQVVMVCBGQUxTRSwKICAgICB0ZXN0Z3JvdXBfbm90aWZp
Y2F0aW9uX3NlbnRfYXQgdGltZXN0YW1wIERFRkFVTFQgTlVMTCwKICAgICB0ZXN0Z3JvdXBfaW5p
dGlhbF9yZXBldGl0aW9uX2NvdW50IGludGVnZXIgTk9UIE5VTEwsCisgICAgdGVzdGdyb3VwX3Jl
cGV0aXRpb25fdHlwZSB2YXJjaGFyKDMyKSBERUZBVUxUICdhbHRlcm5hdGluZycsCiAgICAgdGVz
dGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMgYm9vbGVhbiBERUZBVUxUIEZBTFNFLAogICAg
IENPTlNUUkFJTlQgdGVzdGdyb3VwX25hbWVfbXVzdF9iZV91bmlxdWVfZm9yX2VhY2hfdGFzayBV
TklRVUUodGVzdGdyb3VwX3Rhc2ssIHRlc3Rncm91cF9uYW1lKSk7CiBDUkVBVEUgSU5ERVggdGVz
dGdyb3VwX3Rhc2tfaW5kZXggT04gYW5hbHlzaXNfdGVzdF9ncm91cHModGVzdGdyb3VwX3Rhc2sp
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uu
c3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCmluZGV4
IDBlYTkxMzNkYTZlZGUzMjVkZGY2YzIxZDhiOTM3ZmI3MzU2NDI1OWEuLmZhNTVkODZkNjcxMTNm
ZTJjZTQzMzM1MDEzZDc5OWQ2MTE3NjE0ZjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwKQEAgLTQsNiArNCw3IEBAIEJFR0lOCiBBTFRFUiBUQUJM
RSBidWlsZF9yZXF1ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVxdWVzdF9zdGF0dXNf
ZGVzY3JpcHRpb24gdmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRFUiBUQUJMRSBwbGF0
Zm9ybXMgQUREIENPTFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91cCBpbnRlZ2VyIFJF
RkVSRU5DRVMgcGxhdGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIGNvbW1p
dHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyIHZh
cmNoYXIoNjQpIERFRkFVTFQgTlVMTDsKK0FMVEVSIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBz
IEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlIHZhcmNo
YXIoMzIpIERFRkFVTFQgJ2FsdGVybmF0aW5nJzsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBD
T05TVFJBSU5UIGNvbW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVf
dW5pcXVlOwogQUxURVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21taXRfc3RyaW5n
X2lkZW50aWZpZXJfaW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUoY29tbWl0X3Jl
cG9zaXRvcnksIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1
YzRhYjk4N2I3OTMyNmM4MTIyMDMwZmRkZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0
OGExOTlkZTI3OTVkNWQ3N2Q2ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24g
Zm9ybWF0X3Rlc3RfZ3JvdXAoJGdyb3VwX3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRp
b24nID0+IERhdGFiYXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3Rp
ZmljYXRpb24nXSksCiAgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6
aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwK
ICAgICAgICAgJ2luaXRpYWxSZXBldGl0aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91
cF9pbml0aWFsX3JlcGV0aXRpb25fY291bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9
PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWls
ZFJlcXVlc3RzJyA9PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwK
ICAgICApOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdi
MjUyMDk3ZjExNWZmZGJjNDFhMTFjM2U0YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkw
YTNjMmIyMDkxZGU1YmU2YTUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAg
ICAgKFNFTEVDVCB0ZXN0Z3JvdXBfaWQsIHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rn
cm91cF9hdXRob3IgaXMgbm90IG51bGwgdGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRl
ciwgdGVzdGdyb3VwX2NyZWF0ZWRfYXQKICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rl
c3RfZ3JvdXBzIFdIRVJFIEVYSVNUUwogICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJP
TSBidWlsZF9yZXF1ZXN0cyBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCBy
ZXF1ZXN0X3N0YXR1cwotICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBc
J3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAg
ICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykp
IE9SIHRlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91
cHMKICAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVz
dF9ncm91cCA9IHRlc3RfZ3JvdXBzLnRlc3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkg
YXV0aG9yX29yZGVyLCB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5
KCR0cmlnZ2VyYWJsZV9pZCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocApp
bmRleCBlODUzMGE2YmI3MWU0MmNmZjI4Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi45MDlkYjcyZDkx
NWRmNmRkMTkzZDdjYjUwNjQ1ZmYxZTZmYThmNGNlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBl
cnMucGhwCkBAIC00LDIxICs0LDI5IEBAIHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1m
aW5kZXIucGhwJyk7CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAog
IyBGSVhNRTogU2hvdWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIg
ZnVuY3Rpb25zIHRvIGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24g
Y3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAk
dGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAk
dGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKK2Z1bmN0
aW9uIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0
cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9p
ZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNf
bm90aWZpY2F0aW9uKSB7CiAKICAgICBsaXN0ICgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0LCAk
dGVzdF9jb25maWd1cmF0aW9uX2xpc3QpID0gaW5zZXJ0X2NvbW1pdF9zZXRzX2FuZF9jb25zdHJ1
Y3RfY29uZmlndXJhdGlvbl9saXN0KCRkYiwgJGNvbW1pdF9zZXRzKTsKIAogICAgICRncm91cF9p
ZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywK
LSAgICAgICAgYXJyYXkoJ3Rhc2snID0+ICR0YXNrX2lkLCAnbmFtZScgPT4gJG5hbWUsICdhdXRo
b3InID0+ICRhdXRob3IsICduZWVkc19ub3RpZmljYXRpb24nID0+ICRuZWVkc19ub3RpZmljYXRp
b24sICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7Cisg
ICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9y
JyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAkbmVlZHNfbm90aWZpY2F0aW9u
LAorICAgICAgICAgICAgJ2luaXRpYWxfcmVwZXRpdGlvbl9jb3VudCcgPT4gJHJlcGV0aXRpb25f
Y291bnQsICdyZXBldGl0aW9uX3R5cGUnID0+ICRyZXBldGl0aW9uX3R5cGUpKTsKIAogICAgICRi
dWlsZF9jb3VudCA9IGNvdW50KCRidWlsZF9jb25maWd1cmF0aW9uX2xpc3QpOwogICAgICRvcmRl
ciA9IC0kYnVpbGRfY291bnQ7CiAgICAgZm9yZWFjaCgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0
IGFzICRidWlsZF9jb25maWd1cmF0aW9uKQogICAgICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdF9m
b3JfY29uZmlndXJhdGlvbigkZGIsICRidWlsZF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRy
aWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsIE5VTEwsICRncm91cF9pZCk7CiAKLSAgICBmb3Ig
KCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgewotICAgICAgICBmb3JlYWNo
KCR0ZXN0X2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkdGVzdF9jb25maWd1cmF0aW9uKQotICAgICAg
ICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9j
b25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0
ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgIGlmICgkcmVwZXRpdGlvbl90eXBlID09ICdzZXF1ZW50
aWFsJykgeworICAgICAgICBmb3JlYWNoICgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRl
c3RfY29uZmlndXJhdGlvbikgeworICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0
aXRpb25fY291bnQ7ICRpKyspCisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3Rf
Zm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRy
aWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRpb25f
Y291bnQ7ICRpKyspIHsKKyAgICAgICAgICAgIGZvcmVhY2ggKCR0ZXN0X2NvbmZpZ3VyYXRpb25f
bGlzdCBhcyAkdGVzdF9jb25maWd1cmF0aW9uKQorICAgICAgICAgICAgICAgIGluc2VydF9idWls
ZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9y
ZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lk
KTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gJGdyb3VwX2lkOwogfQpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCmluZGV4IDU3MGU5MDJmNWQyZTFkZjNmYzJi
NmI2YWZhMjMzYWJmYjUwMDM2NDcuLjE0NTMxZGE0MzA5NTYyZTk3MGJjYTFjYWNjNzE3NmM3OTRj
MzNmYzEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmls
ZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKQEAgLTcs
MTMgKzcsMTUgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkZGIgPSBjb25uZWN0KCk7CiAgICAg
JGRhdGEgPSBlbnN1cmVfcHJpdmlsZWdlZF9hcGlfZGF0YV9hbmRfdG9rZW5fb3Jfd29ya2VyKCRk
Yik7CiAKLSAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50ID0gYXJyYXlfZ2V0KCRk
YXRhLCAnYWRkQ291bnQnKTsKLSAgICBpZiAoISRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291
bnQpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmVxdWVzdENvdW50Tm90U3BlY2lmaWVkJyk7
CisgICAgJGFyZ3VtZW50cyA9IHZhbGlkYXRlX2FyZ3VtZW50cygkZGF0YSwgYXJyYXkoCisgICAg
ICAgICdhZGRDb3VudCcgPT4gJ2ludCcsCisgICAgICAgICdncm91cCcgPT4gJ2ludCcsCisgICAg
ICAgICdjb21taXRTZXQnID0+ICdpbnQ/JywKKyAgICApKTsKIAotICAgICR0ZXN0X2dyb3VwX2lk
ID0gYXJyYXlfZ2V0KCRkYXRhLCAnZ3JvdXAnKTsKLSAgICBpZiAoISR0ZXN0X2dyb3VwX2lkKQot
ICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Rlc3RHcm91cE5vdFNwZWNpZmllZCcpOworICAgICRh
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2Fk
ZENvdW50Jyk7CisgICAgJHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2dy
b3VwJyk7CisgICAgJGNvbW1pdF9zZXRfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2NvbW1p
dFNldCcsIE5VTEwpOwogCiAgICAgJHRlc3RfZ3JvdXAgPSAkZGItPnNlbGVjdF9maXJzdF9yb3co
J2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gJHRlc3Rf
Z3JvdXBfaWQpKTsKICAgICBpZiAoISR0ZXN0X2dyb3VwKQpAQCAtMjgsMzcgKzMwLDc0IEBAIGZ1
bmN0aW9uIG1haW4oKSB7CiAgICAgaWYgKCRjdXJyZW50X29yZGVyIDwgMCkKICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdOb1Rlc3RpbmdCdWlsZFJlcXVlc3RzJyk7CiAKKyAgICAkaXNfc2VxdWVu
dGlhbF90eXBlID0gJHRlc3RfZ3JvdXBbJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnXSA9PSAn
c2VxdWVudGlhbCc7CisgICAgJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQgPSBhcnJh
eSgpOworICAgICRjdXJyZW50X29yZGVyX2luY3JlbWVudGFsID0gMDsKICAgICAkY29tbWl0X3Nl
dHMgPSBhcnJheSgpOwogICAgICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQgPSBhcnJheSgp
OwogICAgIGZvcmVhY2ggKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkYnVpbGRfcmVxdWVz
dCkgewogICAgICAgICBpZiAoJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3JkZXInXSA8IDApCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgJHJlcXVlc3RlZF9jb21taXRfc2V0ID0gJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddOwotICAgICAgICBpZiAoYXJyYXlfa2V5
X2V4aXN0cygkcmVxdWVzdGVkX2NvbW1pdF9zZXQsICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9z
ZXQpKQorICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkcmVxdWVzdGVkX2NvbW1pdF9zZXQs
ICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQpKSB7CisgICAgICAgICAgICAkYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0ZWRfY29tbWl0X3NldF0gPSAkYnVpbGRfcmVxdWVz
dDsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpc19udWxs
KCRjb21taXRfc2V0X2lkKSB8fCAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPT0gJGNvbW1pdF9zZXRf
aWQpCisgICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0cywgJHJlcXVlc3RlZF9jb21t
aXRfc2V0KTsKKwogICAgICAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0
ZWRfY29tbWl0X3NldF0gPSAkYnVpbGRfcmVxdWVzdDsKLSAgICAgICAgYXJyYXlfcHVzaCgkY29t
bWl0X3NldHMsICRyZXF1ZXN0ZWRfY29tbWl0X3NldCk7CisKKyAgICAgICAgaWYgIChjb3VudCgk
Y29tbWl0X3NldHMpICYmICRpc19zZXF1ZW50aWFsX3R5cGUpIHsKKyAgICAgICAgICAgICRvcmRl
cl9pbmNyZW1lbnRhbF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0ZWRfY29tbWl0X3NldF0gPSAkY3Vy
cmVudF9vcmRlcl9pbmNyZW1lbnRhbDsKKyAgICAgICAgICAgICRjdXJyZW50X29yZGVyX2luY3Jl
bWVudGFsICs9ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7CisgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpZiAoIWlzX251bGwoJGNvbW1pdF9zZXRfaWQpICYmICFjb3VudCgkY29tbWl0
X3NldHMpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0NvbW1pdFNldE5vdEluVGVzdEdyb3Vw
JywgYXJyYXkoJ2NvbW1pdFNldCcgPT4gJGNvbW1pdF9zZXRfaWQpKTsKKwogICAgICRkYi0+YmVn
aW5fdHJhbnNhY3Rpb24oKTsKLSAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWls
ZF9yZXF1ZXN0X2NvdW50OyAkaSsrKSB7CisgICAgaWYgKCRpc19zZXF1ZW50aWFsX3R5cGUpIHsK
KyAgICAgICAgZm9yZWFjaCAoJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQgYXMgJGNv
bW1pdF9zZXQgPT4gJGluY3JlbWVudGFsKSB7CisgICAgICAgICAgICBpZiAoISRpbmNyZW1lbnRh
bCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICRkYi0+cXVlcnkoJ1VQ
REFURSBidWlsZF9yZXF1ZXN0cyBTRVQgcmVxdWVzdF9vcmRlciA9IHJlcXVlc3Rfb3JkZXIgKyAn
IC4gJGluY3JlbWVudGFsCisgICAgICAgICAgICAgICAgLiAnIFdIRVJFIHJlcXVlc3RfY29tbWl0
X3NldCA9ICQxJywgYXJyYXkoJGNvbW1pdF9zZXQpKTsKKyAgICAgICAgfQogICAgICAgICBmb3Jl
YWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKICAgICAgICAgICAgICRidWlsZF9y
ZXF1ZXN0ID0gJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF07Ci0gICAg
ICAgICAgICAkZGItPmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJh
eSgKLSAgICAgICAgICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1
ZXN0X3RyaWdnZXJhYmxlJ10sCi0gICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnlfZ3JvdXAnID0+
ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXSwKLSAgICAgICAgICAg
ICAgICAncGxhdGZvcm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3JtJ10sCi0g
ICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwK
LSAgICAgICAgICAgICAgICAnZ3JvdXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2dyb3Vw
J10sCi0gICAgICAgICAgICAgICAgJ29yZGVyJyA9PiArKyRjdXJyZW50X29yZGVyLAotICAgICAg
ICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J10pKTsKKyAgICAgICAgICAgICRyZXF1ZXN0X29yZGVyID0gJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3Rfb3JkZXInXTsKKyAgICAgICAgICAgICRyZXF1ZXN0X29yZGVyX2luY3JlbWVudGFsID0g
YXJyYXlfZ2V0KCRvcmRlcl9pbmNyZW1lbnRhbF9ieV9jb21taXRfc2V0LCAkY29tbWl0X3NldCwg
MCk7CisgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWlsZF9yZXF1
ZXN0X2NvdW50OyAkaSsrKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3Rz
KCRkYiwgJGJ1aWxkX3JlcXVlc3QsICsrJHJlcXVlc3Rfb3JkZXIgKyAkcmVxdWVzdF9vcmRlcl9p
bmNyZW1lbnRhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50OyAk
aSsrKSB7CisgICAgICAgICAgICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQp
IHsKKyAgICAgICAgICAgICAgICAkYnVpbGRfcmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5X2Nv
bW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAgICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1
ZXN0cygkZGIsICRidWlsZF9yZXF1ZXN0LCArKyRjdXJyZW50X29yZGVyKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KKwogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiAK
ICAgICBleGl0X3dpdGhfc3VjY2VzcygpOwogfQogCitmdW5jdGlvbiBpbnNlcnRfYnVpbGRfcmVx
dWVzdHMoJGRiLCAkYnVpbGRfcmVxdWVzdCwgJG9yZGVyX292ZXJ3cml0ZSkgeworICAgICRkYi0+
aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KAorICAgICAgICAn
dHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3RyaWdnZXJhYmxlJ10sCisg
ICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9yZXBv
c2l0b3J5X2dyb3VwJ10sCisgICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3RfcGxhdGZvcm0nXSwKKyAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1
ZXN0X3Rlc3QnXSwKKyAgICAgICAgJ2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9n
cm91cCddLAorICAgICAgICAnb3JkZXInID0+ICRvcmRlcl9vdmVyd3JpdGUsCisgICAgICAgICdj
b21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J10pKTsKK30K
KwogbWFpbigpOwogCiA/PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFu
YWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggMjhhMTYxMzAwODRlOGM0ZGFl
MTRiZDI5ZjUwZmZlOGJjZGU4YWM5NC4uNWQ5MTkzMGFjNjM1MWVkZWI1NGRiMzk0MGRiNDA2NDZj
MTUzNWE4NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAK
QEAgLTEwLDYgKzEwLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkYXV0aG9yID0gcmVtb3Rl
X3VzZXJfbmFtZSgkZGF0YSk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRhdGEsICduYW1lJyk7
CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uQ291
bnQnKTsKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gYXJyYXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlv
blR5cGUnLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAkbmVlZHNfbm90aWZpY2F0aW9uID0gYXJyYXlf
Z2V0KCRkYXRhLCAnbmVlZHNOb3RpZmljYXRpb24nLCBGYWxzZSk7CiAgICAgJHRlc3RfZ3JvdXBf
bmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3RHcm91cE5hbWUnKTsKICAgICAkcmV2aXNpb25f
c2V0X2xpc3QgPSBhcnJheV9nZXQoJGRhdGEsICdyZXZpc2lvblNldHMnKTsKQEAgLTIwLDYgKzIx
LDkgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBpZiAoISRuYW1lKQogICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ01pc3NpbmdOYW1lJywgYXJyYXkoJ25hbWUnID0+ICRuYW1lKSk7CiAKKyAgICBp
ZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1
ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlw
ZScsIGFycmF5KCdtb2RlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2
YWxpZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5KCdzdGFydFJ1bicgPT4gJ2ludCcsICdlbmRS
dW4nID0+ICdpbnQnKSk7CiAKICAgICAkc3RhcnRfcnVuID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIs
ICd0ZXN0X3J1bnMnLCAncnVuJywgJHJhbmdlWydzdGFydFJ1biddLCAnSW52YWxpZFN0YXJ0UnVu
JywgJHJhbmdlKTsKQEAgLTg1LDcgKzg5LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAg
JHRyaWdnZXJhYmxlX2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwogICAgICAgICAkdGVzdF9pZCA9
ICR0cmlnZ2VyYWJsZVsndGVzdCddOwogICAgICAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0
c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRf
bGlzdCk7Ci0gICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIs
ICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmln
Z2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRp
dGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dy
b3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0
X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3Bs
YXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwg
JG5lZWRzX25vdGlmaWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rp
b24oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzQyNTNm
YmU3ODY1OWJhMmY2ZTA5OTkzMzEwMWJiOGEyOWYzMTFkZS4uZDIzYjJmZjk2NjgxYzhmYTg4ZWMw
Zjk3M2QxMGViZmYzNzI4ODg1MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91
cC5waHAKQEAgLTE4LDYgKzE4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRhc2tfaWQgPSBh
cnJheV9nZXQoJGFyZ3VtZW50cywgJ3Rhc2snKTsKICAgICAkdGFza19uYW1lID0gYXJyYXlfZ2V0
KCRkYXRhLCAndGFza05hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3VudCA9ICRhcmd1bWVudHNb
J3JlcGV0aXRpb25Db3VudCddOworICAgICRyZXBldGl0aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRh
dGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGluZycpOwogICAgICRuZWVkc19ub3RpZmlj
YXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05vdGlmaWNhdGlvbicsIEZhbHNlKTsKICAg
ICAkcGxhdGZvcm1faWQgPSBhcnJheV9nZXQoJGRhdGEsICdwbGF0Zm9ybScpOwogICAgICR0ZXN0
X2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGVzdCcpOwpAQCAtNDIsNiArNDMsOSBAQCBmdW5jdGlv
biBtYWluKCkKICAgICBlbHNlIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdyZXBldGl0aW9u
Q291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBl
dGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdyZXBldGl0
aW9uVHlwZScgPT4gJHJlcGV0aXRpb25fdHlwZSkpOworCiAgICAgJHRyaWdnZXJhYmxlX2lkID0g
TlVMTDsKICAgICBpZiAoJHRhc2tfaWQpIHsKICAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9m
aXJzdF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lk
KSk7CkBAIC04Niw3ICs5MCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgIGlmICgkdGFza19uYW1l
KQogICAgICAgICAkdGFza19pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGFza3MnLCAn
dGFzaycsIGFycmF5KCduYW1lJyA9PiAkdGFza19uYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7
CiAKLSAgICAkZ3JvdXBfaWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMo
JGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxl
X2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25v
dGlmaWNhdGlvbik7CisgICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxk
X3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0
cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQs
ICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogCiAgICAgJGRiLT5jb21t
aXRfdHJhbnNhY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBo
cAppbmRleCAzNTVlNmM4NWYxMjNiMmMzNTQ0NzExYmZiNjE3NDAwMDc5Mzc2OWFjLi4zMTc1ZDcx
MGE3YzdjNjQ1NGJmYjc5NjE2ZWRlZDY4MzI5MzlmOTQ0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBo
cAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwLnBocApAQCAtMjAsNiArMjAsOSBAQCBmdW5jdGlvbiBtYWluKCkgewog
ICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKICAgICB9
CiAKKyAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnY2FuY2VsJywgJGRhdGEpKQorICAgICAgICAk
dmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKKwogICAgIGlmIChhcnJh
eV9rZXlfZXhpc3RzKCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgJGRhdGEpKQogICAgICAgICAgJHZh
bHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gJGRhdGFbJ21heU5lZWRNb3JlUmVxdWVz
dHMnXTsKIApAQCAtNDQsNyArNDcsNyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICBleGl0
X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvVXBkYXRlVGVzdEdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVz
dF9ncm91cF9pZCwgJ3ZhbHVlcycgPT4gJHZhbHVlcykpOwogICAgIH0KIAotICAgIGlmIChhcnJh
eV9nZXQoJGRhdGEsICdoaWRkZW4nKSkgeworICAgIGlmIChhcnJheV9nZXQoJGRhdGEsICdoaWRk
ZW4nKSB8fCBhcnJheV9nZXQoJGRhdGEsICdjYW5jZWwnKSkgewogICAgICAgICAkZGItPnF1ZXJ5
X2FuZF9nZXRfYWZmZWN0ZWRfcm93cygnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0
X3N0YXR1cyA9ICQxCiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2dyb3VwID0gJDIgQU5EIHJl
cXVlc3Rfc3RhdHVzID0gJDMnLCBhcnJheSgnY2FuY2VsZWQnLCAkdGVzdF9ncm91cF9pZCwgJ3Bl
bmRpbmcnKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCmluZGV4IGM1NmUy
YjAwOTE3MThjMDkwNzI3NzE2MjQ0NWY3YzllZTdhNDg5MmQuLmJkNzE3MTdkMjhmNTE2ZjkwOTc2
ZGE5OWYxYjMzNDdiOGFhNjM4YzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKQEAg
LTEzNSwxMiArMTM1LDEyIEBAIGNsYXNzIENvbW1vbkNvbXBvbmVudEJhc2UgewogICAgICAgICAg
ICAgZWxlbWVudC5hcHBlbmRDaGlsZChDb21tb25Db21wb25lbnRCYXNlLl9jb250ZXh0LmNyZWF0
ZVRleHROb2RlKGNvbnRlbnQpKTsKICAgICB9CiAKLSAgICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRp
dGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCisgICAg
Y3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFs
LCB0YWJJbmRleCA9IG51bGwpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbW9uQ29tcG9uZW50
QmFzZS5jcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0
ZXJuYWwsIHRhYkluZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50
LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQor
ICAgIHN0YXRpYyBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ss
IGlzRXh0ZXJuYWwsIHRhYkluZGV4ID0gbnVsbCkKICAgICB7CiAgICAgICAgIHZhciB0aXRsZSA9
IHRpdGxlT3JDYWxsYmFjazsKICAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50
cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVz
dC1ncm91cC1mb3JtLmpzCmluZGV4IDg3YjE3YzE0NmQ0NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4
ZTRjNjkuLmU0ZjY3NDRmY2Q5YzZkNDBiODEzYWVmZTdjNDUxY2M2YzgxNmE5M2YgMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20t
Y29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3Jv
dXAtZm9ybS5qcwpAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDdXN0b21Db25maWd1cmF0aW9uVGVz
dEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICBjb25zdCB0ZXN0ID0g
Y29uZmlndXJhdG9yLnRlc3RzKClbMF07IC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNw
ZWNpZnlpbmcgbXVsdGlwbGUgdGVzdHMuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5f
aGFzVGFzayA9PT0gIXRhc2tOYW1lKTsKICAgICAgICAgaWYgKCF0aGlzLl9oYXNUYXNrKQotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRp
dGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFz
a05hbWUsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91
cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgdGhpcy5fbm90aWZ5
T25Db21wbGV0aW9uLCB0aGlzLl9yZXBldGl0aW9uVHlwZSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRp
b25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMu
X25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1p
dFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24sIHRoaXMuX3Jl
cGV0aXRpb25UeXBlKTsKICAgICB9CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90
ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IGE0M2VkZjM1MDhiY2YwNzQ2MjVkYjk5
NjRmNjA0ZGUxODA4Mjk2NGYuLjIzMTFmMTdiYzc0NjY5OWJmYWEwM2EzMDdkMGUyMTk3ZTUxMTg0
ZjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcwpAQCAtNiw2ICs2LDggQEAgY2xh
c3MgVGVzdEdyb3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBzdXBlcihu
YW1lIHx8ICd0ZXN0LWdyb3VwLWZvcm0nKTsKICAgICAgICAgdGhpcy5fcmVwZXRpdGlvbkNvdW50
ID0gNDsKICAgICAgICAgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fcmVwZXRpdGlvblR5cGUgPSAnYWx0ZXJuYXRpbmcnOworICAgICAgICB0aGlzLl9yZW5k
ZXJSZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1
bmN0aW9uKHRoaXMucmVuZGVyUmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbi5iaW5kKHRoaXMpKTsK
ICAgICB9CiAKICAgICBzZXRSZXBldGl0aW9uQ291bnQoY291bnQpCkBAIC0yMiwxMiArMjQsMjgg
QEAgY2xhc3MgVGVzdEdyb3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB9
OwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb25DaGVja0JveCA9IHRoaXMuY29udGVu
dCgnbm90aWZ5LW9uLWNvbXBsZXRpb24tY2hlY2tib3gnKTsKICAgICAgICAgbm90aWZ5T25Db21w
bGV0aW9uQ2hlY2tCb3gub25jaGFuZ2UgPSAoKSA9PiB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24g
PSBub3RpZnlPbkNvbXBsZXRpb25DaGVja0JveC5jaGVja2VkOworICAgICAgICBjb25zdCByZXBl
dGl0aW9uVHlwZVNlbGVjdCA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7CisgICAg
ICAgIHJlcGV0aXRpb25UeXBlU2VsZWN0Lm9uY2hhbmdlID0gKCkgPT4geworICAgICAgICAgICAg
dGhpcy5fcmVwZXRpdGlvblR5cGUgPSByZXBldGl0aW9uVHlwZVNlbGVjdC52YWx1ZTsKKyAgICAg
ICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH07CiAgICAgICAgIHRoaXMu
Y29udGVudCgnZm9ybScpLm9uc3VibWl0ID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4g
dGhpcy5zdGFydFRlc3RpbmcoKSk7CiAgICAgfQogCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3JlbmRlclJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb25MYXppbHkuZXZhbHVhdGUo
dGhpcy5fcmVwZXRpdGlvblR5cGUpOworICAgIH0KKworICAgIHJlbmRlclJlcGV0aXRpb25UeXBl
RXhwbGFuYXRpb24ocmVwZXRpdGlvblR5cGUpCisgICAgeworICAgICAgICBjb25zdCBleHBsYW5h
dGlvbiA9IHJlcGV0aXRpb25UeXBlID09PSAnYWx0ZXJuYXRpbmcnID8gJyhlLmcuIEFCQUJBQikn
IDogJyhlLmcuIEFBQUJCQiknOworICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250
ZW50KCdyZXBldGl0aW9uLXR5cGUtZXhwbGFuYXRpb24nKSwgZXhwbGFuYXRpb24pOworICAgIH0K
KwogICAgIHN0YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX25vdGlmeU9uQ29t
cGxldGlvbik7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRo
aXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uLCB0aGlzLl9yZXBl
dGl0aW9uVHlwZSk7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC02NSw3
ICs4MywxMyBAQCBjbGFzcyBUZXN0R3JvdXBGb3JtIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAg
ICAgICAgICAgICAgICAgPG9wdGlvbj45PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgPG9wdGlv
bj4xMDwvb3B0aW9uPgogICAgICAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICBpdGVyYXRp
b25zIHBlciBzZXQKKyAgICAgICAgICAgIDxsYWJlbD5pdGVyYXRpb25zIHBlciBzZXQgaW48L2xh
YmVsPgorICAgICAgICAgICAgPHNlbGVjdCBpZD0icmVwZXRpdGlvbi10eXBlIj4KKyAgICAgICAg
ICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPmFsdGVybmF0aW5nPC9vcHRpb24+CisgICAgICAgICAg
ICAgICAgPG9wdGlvbj5zZXF1ZW50aWFsPC9vcHRpb24+CisgICAgICAgICAgICA8L3NlbGVjdD4K
KyAgICAgICAgICAgIDxsYWJlbD5tb2RlPC9sYWJlbD4KKyAgICAgICAgICAgIDxsYWJlbCBpZD0i
cmVwZXRpdGlvbi10eXBlLWV4cGxhbmF0aW9uIj4oZS5nLiBBQkFCQUIpPC9sYWJlbD4KICAgICAg
ICAgICAgIDxpbnB1dCBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24tY2hlY2tib3giIHR5cGU9ImNo
ZWNrYm94IiBjaGVja2VkLz5Ob3RpZnkgb24gY29tcGxldGlvbgogICAgICAgICBgOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2Fu
YWx5c2lzLXRhc2suanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9hbmFseXNpcy10YXNrLmpzCmluZGV4IDE3NzZhODE3YmMzMTk5NjkyOTcyYTQwYWE0ZWQ2OGMx
YTk1Y2RlZWUuLjBhZjRhMTkzMzdmZWMxNjg5MWU0NjRlNzBlMjZlNjhiYmViMzc0MmIgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lz
LXRhc2suanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
YW5hbHlzaXMtdGFzay5qcwpAQCAtMzI0LDcgKzMyNCw3IEBAIGNsYXNzIEFuYWx5c2lzVGFzayBl
eHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICB9CiAK
LSAgICBzdGF0aWMgYXN5bmMgY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCB0ZXN0
R3JvdXBOYW1lPW51bGwsIHJlcGV0aXRpb25Db3VudD0wLCBub3RpZnlPbkNvbXBsZXRpb249ZmFs
c2UpCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwg
dGVzdEdyb3VwTmFtZSA9IG51bGwsIHJlcGV0aXRpb25Db3VudCA9IDAsIG5vdGlmeU9uQ29tcGxl
dGlvbiA9IGZhbHNlLCByZXBldGl0aW9uVHlwZSA9ICdhbHRlcm5hdGluZycpCiAgICAgewogICAg
ICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge25hbWUsIHN0YXJ0UnVuOiBzdGFydFBvaW50LmlkLCBl
bmRSdW46IGVuZFBvaW50LmlkfTsKICAgICAgICAgaWYgKHRlc3RHcm91cE5hbWUpIHsKQEAgLTMz
Myw2ICszMzMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsK
ICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlcGV0aXRpb25Db3VudCddID0gcmVwZXRpdGlvbkNv
dW50OwogICAgICAgICAgICAgcGFyYW1ldGVyc1sndGVzdEdyb3VwTmFtZSddID0gdGVzdEdyb3Vw
TmFtZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ25lZWRzTm90aWZpY2F0aW9uJ10gPSBub3Rp
ZnlPbkNvbXBsZXRpb247CisgICAgICAgICAgICBwYXJhbWV0ZXJzWydyZXBldGl0aW9uVHlwZSdd
ID0gcmVwZXRpdGlvblR5cGU7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHBh
cmFtZXRlcnMpOwogICAgICAgICByZXR1cm4gQW5hbHlzaXNUYXNrLmZldGNoQnlJZChyZXNwb25z
ZS50YXNrSWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggZjA5NWUwZDdhYmU4NmEw
MjY1MjE1MTYxMjc4NGQyMWQxMDNhNTYxNi4uOTM2MjA5MGFiMzAzYTM1ZjFiNDU4NmZmNGQ5MDQ5
ZmEwM2ZjOGQ4ZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0zMSw3ICszMSw2IEBAIGNsYXNz
IEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAKICAgICB1cGRhdGVTaW5n
bGV0b24ob2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fb3JkZXIg
PT0gb2JqZWN0Lm9yZGVyKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29tbWl0U2V0
ID09IG9iamVjdC5jb21taXRTZXQpOwogCiAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IG9iamVj
dC50ZXN0R3JvdXA7CkBAIC00NCw2ICs0Myw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRz
IERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3N0YXR1c1VybCA9IG9iamVjdC51cmw7
CiAgICAgICAgIHRoaXMuX2J1aWxkSWQgPSBvYmplY3QuYnVpbGQ7CiAgICAgICAgIHRoaXMuX3N0
YXR1c0Rlc2NyaXB0aW9uID0gb2JqZWN0LnN0YXR1c0Rlc2NyaXB0aW9uOworICAgICAgICB0aGlz
Ll9vcmRlciA9ICtvYmplY3Qub3JkZXI7CiAgICAgfQogCiAgICAgdHJpZ2dlcmFibGUoKSB7IHJl
dHVybiB0aGlzLl90cmlnZ2VyYWJsZTsgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKaW5kZXggOTdlOGJjOGVlM2Nk
YTlhNmY2NDE2MjM1MzRlNjdmYjgwMDM5OTgyYi4uOWQzZTA1NDk4MmY1NmU1YzcxZGRhYWE5Yzgz
YjY3NjlhMjdiYzFiZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvdGVzdC1ncm91cC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCkBAIC0xMSw3ICsxMSw4IEBAIGNsYXNzIFRl
c3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlzLl9pc0hpZGRlbiA9
IG9iamVjdC5oaWRkZW47CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uID0gb2JqZWN0
Lm5lZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzID0g
b2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7Ci0gICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0
aW9uQ291bnQgPSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAgdGhpcy5f
aW5pdGlhbFJlcGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsK
KyAgICAgICAgdGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5cGU7CiAg
ICAgICAgIHRoaXMuX2J1aWxkUmVxdWVzdHMgPSBbXTsKICAgICAgICAgdGhpcy5fb3JkZXJCdWls
ZFJlcXVlc3RzTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKCguLi5idWlsZFJl
cXVlc3RzKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRSZXF1ZXN0cy5zb3J0KChhLCBi
KSA9PiBhLm9yZGVyKCkgLSBiLm9yZGVyKCkpOwpAQCAtMzYsNyArMzcsOCBAQCBjbGFzcyBUZXN0
R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5fbmVlZHNOb3RpZmlj
YXRpb24gPSBvYmplY3QubmVlZHNOb3RpZmljYXRpb247CiAgICAgICAgIHRoaXMuX25vdGlmaWNh
dGlvblNlbnRBdCA9IG9iamVjdC5ub3RpZmljYXRpb25TZW50QXQgPyBuZXcgRGF0ZShvYmplY3Qu
bm90aWZpY2F0aW9uU2VudEF0KSA6IG51bGw7CiAgICAgICAgIHRoaXMuX21heU5lZWRNb3JlUmVx
dWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0czsKLSAgICAgICAgdGhpcy5faW5pdGlh
bFJlcGV0aXRpb25Db3VudCA9IG9iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAg
ICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gK29iamVjdC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50OworICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlwZSA9IG9iamVjdC5yZXBldGl0aW9u
VHlwZTsKICAgICB9CiAKICAgICB0YXNrKCkgeyByZXR1cm4gQW5hbHlzaXNUYXNrLmZpbmRCeUlk
KHRoaXMuX3Rhc2tJZCk7IH0KQEAgLTQ2LDYgKzQ4LDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgbmVlZHNOb3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlz
Ll9uZWVkc05vdGlmaWNhdGlvbjsgfQogICAgIG1heU5lZWRNb3JlUmVxdWVzdHMoKSB7IHJldHVy
biB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzOyB9CiAgICAgaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpIHsgcmV0dXJuIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQ7IH0KKyAgICByZXBldGl0
aW9uVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3JlcGV0aXRpb25UeXBlOyB9CiAgICAgbm90aWZpY2F0
aW9uU2VudEF0KCkgeyByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VudEF0OyB9CiAgICAgYXV0
aG9yKCkgeyByZXR1cm4gdGhpcy5fYXV0aG9yTmFtZTsgfQogICAgIGFkZEJ1aWxkUmVxdWVzdChy
ZXF1ZXN0KQpAQCAtNzIsMjAgKzc1LDE5IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVs
ZWRPYmplY3QgewogCiAgICAgX2xhc3RSZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHJl
cXVlc3RzID0gdGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29uc3QgcmVx
dWVzdHMgPSB0aGlzLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIHJldHVybiByZXF1
ZXN0cy5sZW5ndGggPyByZXF1ZXN0c1tyZXF1ZXN0cy5sZW5ndGggLSAxXSA6IG51bGw7CiAgICAg
fQogCi0gICAgX29yZGVyZWRCdWlsZFJlcXVlc3RzKCkKKyAgICBvcmRlcmVkQnVpbGRSZXF1ZXN0
cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3JkZXJCdWlsZFJlcXVlc3RzTGF6aWx5
LmV2YWx1YXRlKC4uLnRoaXMuX2J1aWxkUmVxdWVzdHMpOwogICAgIH0KIAotICAgIHJlcGV0aXRp
b25Db3VudCgpCisgICAgcmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fYnVpbGRSZXF1ZXN0cy5sZW5ndGgpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gdGhpcy5fYnVpbGRSZXF1ZXN0
c1swXS5jb21taXRTZXQoKTsKICAgICAgICAgbGV0IGNvdW50ID0gMDsKICAgICAgICAgZm9yIChj
b25zdCByZXF1ZXN0IG9mIHRoaXMuX2J1aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGlmIChy
ZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KQpAQCAt
OTQsMTUgKzk2LDE5IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgfQogCisgICAgaGFzUmV0cnkoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+
IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiB0aGlzLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgfQorCiAgICAgcmVxdWVzdGVkQ29tbWl0U2V0cygp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHNM
YXppbHkuZXZhbHVhdGUoLi4udGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKSk7CisgICAgICAg
IHJldHVybiB0aGlzLl9jb21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0c0xhemlseS5ldmFsdWF0ZSgu
Li50aGlzLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBfY29t
cHV0ZVJlcXVlc3RlZENvbW1pdFNldHMoLi4ub3JkZXJlZEJ1aWxkUmVxdWVzdHMpCiAgICAgewog
ICAgICAgICBjb25zdCByZXF1ZXN0ZWRDb21taXRTZXRzID0gW107Ci0gICAgICAgIGNvbnN0IGNv
bW1pdFNldExhYmVsTWFwID0gbmV3IE1hcDsKICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9m
IG9yZGVyZWRCdWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAgICBjb25zdCBzZXQgPSByZXF1ZXN0
LmNvbW1pdFNldCgpOwogICAgICAgICAgICAgaWYgKCFyZXF1ZXN0ZWRDb21taXRTZXRzLmluY2x1
ZGVzKHNldCkpCkBAIC0xMTMsNyArMTE5LDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFi
ZWxlZE9iamVjdCB7CiAKICAgICByZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKS5maWx0ZXIoKHJl
cXVlc3QpID0+IHJlcXVlc3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KTsKKyAgICAgICAgcmV0
dXJuIHRoaXMub3JkZXJlZEJ1aWxkUmVxdWVzdHMoKS5maWx0ZXIoKHJlcXVlc3QpID0+IHJlcXVl
c3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KTsKICAgICB9CiAKICAgICBsYWJlbEZvckNvbW1p
dFNldChjb21taXRTZXQpCkBAIC0yMTksNiArMjI1LDE0IEBAIGNsYXNzIFRlc3RHcm91cCBleHRl
bmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBhc3luYyBjYW5j
ZWxQZW5kaW5nUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3Vw
ZGF0ZUJ1aWxkUmVxdWVzdCh7CisgICAgICAgICAgICBncm91cDogdGhpcy5pZCgpLAorICAgICAg
ICAgICAgY2FuY2VsOiB0cnVlLAorICAgICAgICB9KTsKKyAgICB9CisKICAgICBhc3luYyBkaWRT
ZW5kTm90aWZpY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRh
dGVCdWlsZFJlcXVlc3QoewpAQCAtMjI4LDExICsyNDIsMTIgQEAgY2xhc3MgVGVzdEdyb3VwIGV4
dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGFzeW5jIGFk
ZE1vcmVCdWlsZFJlcXVlc3RzKGFkZENvdW50KQorICAgIGFzeW5jIGFkZE1vcmVCdWlsZFJlcXVl
c3RzKGFkZENvdW50LCBjb21taXRTZXQgPSBudWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGF3
YWl0IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CiAgICAgICAgICAgICBncm91cDogdGhpcy5p
ZCgpLAogICAgICAgICAgICAgYWRkQ291bnQsCisgICAgICAgICAgICBjb21taXRTZXQsCiAgICAg
ICAgIH0sICdhZGQtYnVpbGQtcmVxdWVzdHMnKTsKICAgICB9CiAKQEAgLTI0NCwzOSArMjU5LDM3
IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0
ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21w
bGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZv
cm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlP
bkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoY29tbWl0U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9
IENvbW1pdFNldC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAg
ICAgY29uc3QgcGFyYW1zID0ge3Rhc2tOYW1lLCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBw
bGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25T
ZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OwotICAgICAgICBy
ZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJh
bXMpLnRoZW4oKGRhdGEpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBBbmFseXNpc1Rhc2suZmV0
Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKLSAgICAgICAgfSkudGhlbigodGFzaykgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSkudGhlbigo
KSA9PiB0YXNrKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNrTmFt
ZSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5p
ZCgpLCByZXBldGl0aW9uQ291bnQsCisgICAgICAgICAgICByZXZpc2lvblNldHMsIHJlcGV0aXRp
b25UeXBlLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OworICAgICAg
ICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRl
c3QtZ3JvdXAnLCBwYXJhbXMpOworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlzaXNU
YXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGF3YWl0IHRoaXMu
ZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSk7CisgICAgICAgIHJldHVybiB0YXNrOwogICAgIH0KIAot
ICAgIHN0YXRpYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0YXNrLCBwbGF0Zm9ybSwg
dGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29t
cGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24o
dGFzaywgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRT
ZXRzLCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJl
dmlzaW9uU2V0cyA9IENvbW1pdFNldC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRT
ZXRzKTsKLSAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2s6IHRhc2suaWQoKSwgbmFtZTogZ3Jv
dXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0
aW9uQ291bnQsIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21w
bGV0aW9ufTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9PiB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5mZXRjaEZvclRhc2soZGF0YVsndGFza0lkJ10sIHRydWUpOwotICAgICAgICB9KTsK
KyAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2s6IHRhc2suaWQoKSwgbmFtZTogZ3JvdXBOYW1l
LCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291
bnQsCisgICAgICAgICAgICByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlLCBuZWVkc05vdGlm
aWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OworICAgICAgICBjb25zdCBkYXRhID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMp
OworICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaEZvclRhc2soZGF0YVsndGFza0lkJ10s
IHRydWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0
YXNrLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlv
bikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFt
ZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0
aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5sZW5n
dGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IENvbW1pdFNldC5yZXZpc2lv
blNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgewotICAgICAgICAgICAgdGFz
azogdGFzay5pZCgpLAotICAgICAgICAgICAgbmFtZTogbmFtZSwKLSAgICAgICAgICAgIHJlcGV0
aXRpb25Db3VudDogcmVwZXRpdGlvbkNvdW50LAotICAgICAgICAgICAgcmV2aXNpb25TZXRzOiBy
ZXZpc2lvblNldHMsCi0gICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNv
bXBsZXRpb24sCi0gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHRoaXMuZmV0Y2hGb3JUYXNrKGRh
dGFbJ3Rhc2tJZCddLCB0cnVlKSk7CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAgICAgIHRh
c2s6IHRhc2suaWQoKSwgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMsIHJlcGV0
aXRpb25UeXBlLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21w
bGV0aW9uCisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaEZvclRh
c2soZGF0YVsndGFza0lkJ10sIHRydWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBmaW5kQWxsQnlU
YXNrKHRhc2tJZCkKQEAgLTI4NCw2ICsyOTcsMTIgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMg
TGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuYWxsKCkuZmlsdGVyKCh0
ZXN0R3JvdXApID0+IHRlc3RHcm91cC5fdGFza0lkID09IHRhc2tJZCk7CiAgICAgfQogCisgICAg
c3RhdGljIGFzeW5jIGZldGNoQnlJZCh0ZXN0R3JvdXBJZCwgaWdub3JlQ2FjaGU9ZmFsc2UpCisg
ICAgeworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jYWNoZWRGZXRjaChgL2FwaS90
ZXN0LWdyb3Vwcy8ke3Rlc3RHcm91cElkfWAsIHt9LCBpZ25vcmVDYWNoZSk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSlbMF07Cisg
ICAgfQorCiAgICAgc3RhdGljIGZldGNoRm9yVGFzayh0YXNrSWQsIGlnbm9yZUNhY2hlID0gZmFs
c2UpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnL2FwaS90ZXN0LWdy
b3VwcycsIHt0YXNrOiB0YXNrSWR9LCBpZ25vcmVDYWNoZSkudGhlbih0aGlzLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1w
YWdlLmpzCmluZGV4IDNmNGZlZmZmMjdhNDM4MzY0MzA1YmJiODNkN2IxNmIzMjQwNWVjNzEuLmQ3
M2QwMmY1ZmFiNTUxYWFjYjY3MzBhMjNkNWQ4ZjZjZDQ3NWQwYjggMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMt
dGFzay1wYWdlLmpzCkBAIC0yNCw4ICsyNCw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza0NoYXJ0UGFu
ZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogCiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgp
CiAgICAgewotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNv
bXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RH
cm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBs
ZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNv
bXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
QWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1h
cCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIApAQCAtMTA2LDggKzEwNiw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Jlc3VsdHNQYW5lIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJlcG9zaXRvcnlQaWNrZXIuYWRkRXZlbnRM
aXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKSk7CiAgICAgICAg
IHRoaXMucGFydCgnY29tbWl0LXZpZXdlcicpLnNldFNob3dSZXBvc2l0b3J5TmFtZShmYWxzZSk7
CiAKLSAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0
aW9uKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAn
LCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9u
KTsKKyAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0
aW9uLCByZXBldGl0aW9uVHlwZSkgPT4geworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlv
bignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5v
dGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICB9KTsKICAgICB9CiAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9IGN1cnJl
bnRHcm91cDsKICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMucGFydCgnZm9ybScpOwogICAgICAg
ICBpZiAoIWZvcm0uaGFzQ29tbWl0U2V0cygpICYmIGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAg
IGZvcm0uc2V0Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3VycmVudEdyb3Vw
LnBsYXRmb3JtKCksIGN1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSwgY3VycmVudEdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKSk7CisgICAgICAgICAgICBmb3JtLnNldENvbmZpZ3VyYXRp
b25zKGN1cnJlbnRHcm91cC50ZXN0KCksIGN1cnJlbnRHcm91cC5wbGF0Zm9ybSgpLCBjdXJyZW50
R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVxdWVzdGVkQ29t
bWl0U2V0cygpKTsKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9CiAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lIGV4dGVu
ZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIGA7CiAgICAgfQotfTsK
K30KIAogQ29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdhbmFseXNpcy10YXNrLWNvbmZpZ3Vy
YXRvci1wYW5lJywgQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSk7CiAKQEAgLTI2NywxNCAr
MjY3LDE0IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7CiAgICAgICAgIHRo
aXMuY29udGVudCgnaGlkZS1idXR0b24nKS5vbmNsaWNrID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFj
dGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAp
OwotICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsIHRoaXMuX2N1cnJl
bnRUZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAg
ICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycs
IChyZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpID0+
IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgdGhp
cy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24s
IHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMucGFydCgnYmlzZWN0
LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwg
bm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0n
KS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gewogICAgICAgICAgICAgY29uc3QgYmlz
ZWN0aW5nQ29tbWl0U2V0ID0gdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAuZ2V0
KHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwogICAgICAgICAgICAgY29uc3QgW29uZUNvbW1pdFNl
dCwgYW5vdGhlckNvbW1pdFNldF0gPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKTsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSBbb25lQ29tbWl0U2V0
LCBiaXNlY3RpbmdDb21taXRTZXQsIGFub3RoZXJDb21taXRTZXRdOwotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91
cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3Vy
cmVudFRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zNjUsMjgg
KzM2NSw3NiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb250ZW50KCd0ZXN0LWdy
b3VwLWxpc3QnKS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTsKICAgICAgICAgaWYgKHNlbGVj
dGVkKQogICAgICAgICAgICAgc2VsZWN0ZWQuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTsK
LSAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAgIHRoaXMuX3Rlc3RHcm91cE1h
cC5nZXQoY3VycmVudEdyb3VwKS5saXN0SXRlbS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpOwor
CisgICAgICAgIGNvbnN0IHJldHJ5Rm9ybSA9IHRoaXMuY29udGVudCgncmV0cnktZm9ybScpOwor
ICAgICAgICBjb25zdCBiaXNlY3RGb3JtID0gdGhpcy5jb250ZW50KCdiaXNlY3QtZm9ybScpOwor
ICAgICAgICBsZXQgc3RhdHVzU3VtbWFyeSA9IG51bGw7CisgICAgICAgIGxldCByZXF1ZXN0U3Vt
bWFyeSA9IG51bGw7CisgICAgICAgIGxldCBoaWRlQnV0dG9uID0gbnVsbDsKKyAgICAgICAgbGV0
IHBlbmRpbmdSZXF1ZXN0Q2FuY2VsV2FybmluZyA9IG51bGw7CiAKICAgICAgICAgaWYgKGN1cnJl
bnRHcm91cCkgeworICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3Jv
dXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICAgICAgICAgICB0aGlz
LnBhcnQoJ3JldHJ5LWZvcm0nKS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVudEdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CiAgICAgICAgICAgICB0aGlzLnBhcnQoJ2Jpc2VjdC1mb3Jt
Jykuc2V0UmVwZXRpdGlvbkNvdW50KGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCkpOwotICAgICAgICAgICAgY29uc3Qgc3RhdHVzU3VtbWFyeSA9IGAke2N1cnJlbnRHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJlcXVlc3RlZCwgJHtjdXJyZW50R3JvdXAucmVwZXRp
dGlvbkNvdW50KCkgLSBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpfSBhZGRl
ZCBkdWUgdG8gZmFpbHVyZXMuYDsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1
bW1hcnknKS5pbm5lckhUTUwgPSBzdGF0dXNTdW1tYXJ5OwogCi0gICAgICAgICAgICBjb25zdCBh
dXRob3JlZEJ5ID0gY3VycmVudEdyb3VwLmF1dGhvcigpID8gYGJ5ICIke2N1cnJlbnRHcm91cC5h
dXRob3IoKX0iYCA6ICcnOwotICAgICAgICAgICAgdGhpcy5jb250ZW50KCdyZXF1ZXN0LXN1bW1h
cnknKS5pbm5lckhUTUwgPSBgU2NoZWR1bGVkICR7YXV0aG9yZWRCeX0gYXQgJHtjdXJyZW50R3Jv
dXAuY3JlYXRlZEF0KCl9YAorICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5oYXNSZXRyeSgp
KSB7CisgICAgICAgICAgICAgICAgc3RhdHVzU3VtbWFyeSA9IHRoaXMuY3JlYXRlRWxlbWVudCgn
ZGl2Jywge2lkOiAnc3RhdHVzLXN1bW1hcnknLCBjbGFzczogJ3N1bW1hcnknfSwKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fc3VtbWFyaXplZFRlc3RHcm91cChjdXJyZW50R3JvdXApKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgYXV0aG9yZWRCeSA9IGN1cnJlbnRHcm91
cC5hdXRob3IoKSA/IGBieSAiJHtjdXJyZW50R3JvdXAuYXV0aG9yKCl9IiBgIDogJyc7CisgICAg
ICAgICAgICByZXF1ZXN0U3VtbWFyeSA9IHRoaXMuY3JlYXRlRWxlbWVudCgnZGl2Jywge2lkOiAn
cmVxdWVzdC1zdW1tYXJ5JywgY2xhc3M6ICdzdW1tYXJ5J30sCisgICAgICAgICAgICAgICAgYFNj
aGVkdWxlZCAke2F1dGhvcmVkQnl9YXQgJHtjdXJyZW50R3JvdXAuY3JlYXRlZEF0KCl9YCk7CisK
KyAgICAgICAgICAgIGhpZGVCdXR0b24gPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicsIHsn
aWQnOiAnaGlkZS1idXR0b24nfSwKKyAgICAgICAgICAgICAgICBjdXJyZW50R3JvdXAuaXNIaWRk
ZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnKTsKKyAgICAgICAgICAgIGhpZGVCdXR0b24ub25jbGlj
ayA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHkn
LCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91
cC5oYXNQZW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdENhbmNlbFdh
cm5pbmcgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nLAorICAgICAgICAgICAgICAgICAgICB7
aWQ6ICdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnfSwgJyhjYW5jZWxzIHBlbmRpbmcg
cmVxdWVzdHMpJyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5jb250
ZW50KCdyZXRyeS1mb3JtJykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAn
bm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgnYmlzZWN0LWZvcm0nKS5zdHlsZS5kaXNwbGF5
ID0gY3VycmVudEdyb3VwICYmIHRoaXMuX2Jpc2VjdGluZ0NvbW1pdFNldEJ5VGVzdEdyb3VwLmdl
dChjdXJyZW50R3JvdXApID8gbnVsbCA6ICdub25lJzsKLSAgICAgICAgdGhpcy5jb250ZW50KCdz
dGF0dXMtc3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdy
b3VwLnJlcGV0aXRpb25Db3VudCgpID4gY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSA/IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgncmVxdWVzdC1zdW1t
YXJ5Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CiAKLSAg
ICAgICAgY29uc3QgaGlkZUJ1dHRvbiA9IHRoaXMuY29udGVudCgnaGlkZS1idXR0b24nKTsKLSAg
ICAgICAgaGlkZUJ1dHRvbi50ZXh0Q29udGVudCA9IGN1cnJlbnRHcm91cCAmJiBjdXJyZW50R3Jv
dXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnOwotICAgICAgICBoaWRlQnV0dG9uLnN0
eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOworICAgICAgICByZXRy
eUZvcm0uc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CisgICAg
ICAgIGJpc2VjdEZvcm0uc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiB0aGlzLl9iaXNl
Y3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQoY3VycmVudEdyb3VwKSA/IG51bGwgOiAnbm9u
ZSc7CisKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgndGVzdC1ncm91
cC1kZXRhaWxzJyksIFsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCgncmVzdWx0cy12aWV3ZXIn
KSwgdGhpcy5jb250ZW50KCdyZXZpc2lvbi10YWJsZScpLCBzdGF0dXNTdW1tYXJ5LCByZXF1ZXN0
U3VtbWFyeSwKKyAgICAgICAgICAgIHJldHJ5Rm9ybSwgYmlzZWN0Rm9ybSwgaGlkZUJ1dHRvbiwg
cGVuZGluZ1JlcXVlc3RDYW5jZWxXYXJuaW5nCisgICAgICAgIF0uZmlsdGVyKGVsZW1lbnQgPT4g
ISFlbGVtZW50KSk7CisgICAgfQorCisgICAgX3N1bW1hcml6ZWRUZXN0R3JvdXAodGVzdEdyb3Vw
KQorICAgIHsKKyAgICAgICAgaWYgKCF0ZXN0R3JvdXAuaGFzUmV0cnkoKSkKKyAgICAgICAgICAg
IHJldHVybiAnJzsKKworICAgICAgICBjb25zdCByZXRyeUNvdW50QnlMYWJlbCA9IG5ldyBNYXA7
CisgICAgICAgIGxldCBjdXJyZW50TGFiZWwgPSAnQSc7CisgICAgICAgIGZvciAoY29uc3QgY29t
bWl0U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKKyAgICAgICAgICAg
IHJldHJ5Q291bnRCeUxhYmVsLnNldChjdXJyZW50TGFiZWwsCisgICAgICAgICAgICAgICAgdGVz
dEdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpIC0gdGVzdEdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgICAgICAgICBjdXJyZW50TGFiZWwgPSBT
dHJpbmcuZnJvbUNoYXJDb2RlKGN1cnJlbnRMYWJlbC5jaGFyQ29kZUF0KDApICsgMSk7CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlDb3VudHNBcmVJZGVudGljYWwgPSB0ZXN0R3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpLmV2ZXJ5KChjb21taXRTZXQpID0+CisgICAgICAgICAgICBy
ZXRyeUNvdW50QnlMYWJlbC5nZXQoY29tbWl0U2V0KSA9PT0gcmV0cnlDb3VudEJ5TGFiZWwuZ2V0
KGN1cnJlbnRMYWJlbCkpOworCisgICAgICAgIGlmIChyZXRyeUNvdW50c0FyZUlkZW50aWNhbCkK
KyAgICAgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
fSByZXF1ZXN0ZWQsCisgICAgICAgICAgICAgICAgJHtyZXRyeUNvdW50QnlMYWJlbC5nZXQoY3Vy
cmVudExhYmVsKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7CisKKyAgICAgICAgY29uc3QgcmV0
cnlTdW1tYXJ5UGFydHMgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBbbGFiZWwsIGNvdW50XSBv
ZiByZXRyeUNvdW50QnlMYWJlbC5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGlmICghY291bnQp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXRyeVN1bW1hcnlQYXJ0
cy5wdXNoKGAke2NvdW50fSBhZGRlZCB0byAke2xhYmVsfSBjb25maWd1cmF0aW9uYCk7CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlTdW1tYXJ5ID0gcmV0cnlTdW1tYXJ5UGFydHMubGVu
Z3RoID09PSAxID8gcmV0cnlTdW1tYXJ5UGFydHNbMF0gOgorICAgICAgICAgICAgYCR7cmV0cnlT
dW1tYXJ5UGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJywgJyl9IGFuZCAke3JldHJ5U3VtbWFyeVBh
cnRzW3JldHJ5U3VtbWFyeVBhcnRzLmxlbmd0aCAtIDFdfWA7CiAKLSAgICAgICAgdGhpcy5jb250
ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNwbGF5ID0gY3Vy
cmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyBudWxsIDogJ25vbmUnOwor
ICAgICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVx
dWVzdGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAgICAg
c3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC01NTYsOCArNjA0LDggQEAgY2xhc3MgQW5hbHlzaXNU
YXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIGdyb3VwUGFuZS5saXN0
ZW5Ub0FjdGlvbignc2hvd0hpZGRlblRlc3RHcm91cHMnLCAoKSA9PiB0aGlzLl9zaG93QWxsVGVz
dEdyb3VwcygpKTsKICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdyZW5hbWVUZXN0
R3JvdXAnLCAodGVzdEdyb3VwLCBuZXdOYW1lKSA9PiB0aGlzLl91cGRhdGVUZXN0R3JvdXBOYW1l
KHRlc3RHcm91cCwgbmV3TmFtZSkpOwogICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24o
J3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHknLCAodGVzdEdyb3VwKSA9PiB0aGlzLl9oaWRlQ3Vy
cmVudFRlc3RHcm91cCh0ZXN0R3JvdXApKTsKLSAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0
aW9uKCdyZXRyeVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5
T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBy
ZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOwotICAgICAgICBncm91cFBhbmUu
bGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIGNvbW1pdFNldHMs
IHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9iaXNlY3RDdXJy
ZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3Rp
ZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdyZXRy
eVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0
aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gdGhpcy5fcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RH
cm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBl
KSk7CisgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3VwJywg
KHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRp
b24sIHJlcGV0aXRpb25UeXBlKSA9PiB0aGlzLl9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKHRlc3RH
cm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHJl
cGV0aXRpb25UeXBlKSk7CiAKICAgICAgICAgdGhpcy5wYXJ0KCdjYXVzZS1saXN0JykubGlzdGVu
VG9BY3Rpb24oJ2FkZEl0ZW0nLCAocmVwb3NpdG9yeSwgcmV2aXNpb24pID0+IHsKICAgICAgICAg
ICAgIHRoaXMuX2Fzc29jaWF0ZUNvbW1pdCgnY2F1c2UnLCByZXBvc2l0b3J5LCByZXZpc2lvbik7
CkBAIC04MzIsMTkgKzg4MCwyMiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFn
ZVdpdGhIZWFkaW5nIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX3JldHJ5Q3VycmVudFRl
c3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKQor
ICAgIGFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291
bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpCiAgICAgewogICAgICAgICBj
b25zdCBleGlzdGluZ05hbWVzID0gKHRoaXMuX3Rlc3RHcm91cHMgfHwgW10pLm1hcCgoZ3JvdXAp
ID0+IGdyb3VwLm5hbWUoKSk7CiAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBDb21taXRTZXQuY3Jl
YXRlTmFtZVdpdGhvdXRDb2xsaXNpb24odGVzdEdyb3VwLm5hbWUoKSwgbmV3IFNldChleGlzdGlu
Z05hbWVzKSk7CiAgICAgICAgIGNvbnN0IGNvbW1pdFNldExpc3QgPSB0ZXN0R3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpOwogICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IHRoaXMuX3Rhc2sucGxh
dGZvcm0oKSB8fCB0ZXN0R3JvdXAucGxhdGZvcm0oKTsKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91
cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVz
dEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRMaXN0LCBu
b3RpZnlPbkNvbXBsZXRpb24pCi0gICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RH
cm91cHMuYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0
b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBu
ZXdOYW1lLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TGlzdCwg
bm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAgICB0aGlzLl9k
aWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3Jv
dXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAgYXN5
bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfYmlzZWN0Q3VycmVudFRl
c3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25D
b21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRlc3RHcm91cC50YXNrKCkpOwogICAgICAgICBjb25zdCBleGlzdGluZ1Rlc3RHcm91cE5hbWVz
ID0gbmV3IFNldCgodGhpcy5fdGVzdEdyb3VwcyB8fCBbXSkubWFwKCh0ZXN0R3JvdXApID0+IHRl
c3RHcm91cC5uYW1lKCkpKTsKQEAgLTg1NCw3ICs5MDUsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRD
b21taXRTZXQgPSBjb21taXRTZXRzW2ldOwogICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwTmFt
ZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbihDb21taXRTZXQuZGlmZihw
cmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldCksIGV4aXN0aW5nVGVzdEdyb3VwTmFt
ZXMpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cC50
YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgW3ByZXZpb3VzQ29tbWl0U2V0
LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0
R3JvdXBzKHRlc3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
W3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9u
LCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlkRmV0Y2hU
ZXN0R3JvdXBzKHRlc3RHcm91cHMpOwogICAgICAgICAgICAgfSBjYXRjaChlcnJvcikgewogICAg
ICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcg
KyBlcnJvcik7CkBAIC04NjMsNyArOTE0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfY3JlYXRlVGVz
dEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0aXRp
b25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgX2NyZWF0ZVRl
c3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0
aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlw
ZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1lKHRl
c3RHcm91cE5hbWUpKSB7CiAgICAgICAgICAgICBhbGVydChgVGhlcmUgaXMgYWxyZWFkeSBhIHRl
c3QgZ3JvdXAgbmFtZWQgIiR7dGVzdEdyb3VwTmFtZX0iYCk7CkBAIC04ODksMTMgKzk0MCwxMyBA
QCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAg
ICAgZm9yIChsZXQgbGFiZWwgaW4gY29tbWl0U2V0TWFwKQogICAgICAgICAgICAgY29tbWl0U2V0
cy5wdXNoKGNvbW1pdFNldE1hcFtsYWJlbF0pOwogCi0gICAgICAgIHJldHVybiBUZXN0R3JvdXAu
Y3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVzdEdyb3VwTmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgICAgIHJl
dHVybiBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVz
dEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRp
b24sIHJlcGV0aXRpb25UeXBlKQogICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0
R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQo
J0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291bnQs
IHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBs
ZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291bnQs
IHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fdGFzay5pc0N1c3RvbSgpKTsKICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RH
cm91cE5hbWUodGVzdEdyb3VwTmFtZSkpIHsKQEAgLTkwMywxMCArOTU0LDEyIEBAIGNsYXNzIEFu
YWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25m
aWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAg
IC50aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJy
b3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2Fp
dCBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxh
dGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywg
bm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAgICB0aGlzLl9k
aWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKQorICAgICAgICB9IGNhdGNoIChlcnJv
cikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91
cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFz
RHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCmluZGV4IGQwYWYxNzNkYWFk
MzJiNDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLjI2YTI2NzdjM2I5ZTE2OWJmMTAyMDAxZTAy
Y2IzZmI3YWRiZTFiNGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTEwOCw2ICsxMDgsOCBAQCBjbGFzcyBD
aGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgdGhpcy5fdHJlbmRMaW5l
UGFyYW1ldGVycyA9IFtdOwogICAgICAgICB0aGlzLl90cmVuZExpbmVWZXJzaW9uID0gMDsKICAg
ICAgICAgdGhpcy5fcmVuZGVyZWRUcmVuZExpbmVPcHRpb25zID0gZmFsc2U7CisgICAgICAgIHRo
aXMuX3JlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJzsKKyAgICAgICAgdGhpcy5fcmVuZGVy
UmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbkxhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5j
dGlvbih0aGlzLnJlbmRlclJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb24uYmluZCh0aGlzKSk7CiAK
ICAgICAgICAgdGhpcy5jb25maWd1cmUocGxhdGZvcm1JZCwgbWV0cmljSWQpOwogICAgIH0KQEAg
LTEyMCwxMCArMTIyLDE4IEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2Ug
ewogICAgICAgICBjb25zdCBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3ggPSB0aGlzLmNvbnRl
bnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKTsKICAgICAgICAgY29uc3QgcmVwZXRpdGlvbkNv
dW50ID0gdGhpcy5jb250ZW50KCdjb25maXJtLXJlcGV0aXRpb24nKTsKICAgICAgICAgY29uc3Qg
bm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5jb250ZW50KCdub3RpZnktb24tY29tcGxldGlvbicp
OworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29udGVudCgncmVwZXRpdGlv
bi10eXBlJyk7CisgICAgICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb24gPSB0aGlz
LmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZS1leHBsYW5hdGlvbicpOwogICAgICAgICBjcmVhdGVX
aXRoVGVzdEdyb3VwQ2hlY2tib3gub25jaGFuZ2UgPSAoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBzaG91bGREaXNhYmxlID0gIWNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5jaGVja2VkOwog
ICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LmRpc2FibGVkID0gc2hvdWxkRGlzYWJsZTsKICAg
ICAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbi5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7Cisg
ICAgICAgICAgICByZXBldGl0aW9uVHlwZS5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CisgICAg
ICAgICAgICByZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uLmRpc3BsYXkgPSBzaG91bGREaXNhYmxl
ID8gJ25vbmUnIDogbnVsbDsKKyAgICAgICAgfTsKKyAgICAgICAgcmVwZXRpdGlvblR5cGUub25j
aGFuZ2UgPSAoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlwZSA9IHJlcGV0
aXRpb25UeXBlLnZhbHVlOworICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMjQzLDEwICsyNTMsMTEgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4
dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGNvbnN0IGNyZWF0ZVdpdGhUZXN0R3JvdXAg
PSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKS5jaGVja2VkOwogICAgICAg
ICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlzLmNvbnRlbnQoJ2NvbmZpcm0tcmVwZXRpdGlv
bicpLnZhbHVlOwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb24gPSB0aGlzLmNvbnRl
bnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJykuY2hlY2tlZDsKKyAgICAgICAgY29uc3QgcmVwZXRp
dGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpLmNoZWNrZWQ7CiAKICAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IChjcmVh
dGVXaXRoVGVzdEdyb3VwID8KLSAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5h
bWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgbm90
aWZ5T25Db21wbGV0aW9uKSA6IEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwgc3RhcnRQb2ludCwg
ZW5kUG9pbnQpKTsKKyAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0
YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25D
b21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgOiBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0
YXJ0UG9pbnQsIGVuZFBvaW50KSk7CiAgICAgICAgICAgICBuZXdXaW5kb3cubG9jYXRpb24uaHJl
ZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svJyArIGFuYWx5c2lzVGFzay5pZCgpKTsKICAg
ICAgICAgICAgIHRoaXMuZmV0Y2hBbmFseXNpc1Rhc2tzKHRydWUpOwogICAgICAgICB9IGNhdGNo
KGVycm9yKSB7CkBAIC0yNjksOCArMjgwLDggQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hh
cnRQYW5lQmFzZSB7CiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wbGF0
Zm9ybSAmJiB0aGlzLl9tZXRyaWMpIHsKLSAgICAgICAgICAgIHZhciBtZXRyaWMgPSB0aGlzLl9t
ZXRyaWM7Ci0gICAgICAgICAgICB2YXIgcGxhdGZvcm0gPSB0aGlzLl9wbGF0Zm9ybTsKKyAgICAg
ICAgICAgIGNvbnN0IG1ldHJpYyA9IHRoaXMuX21ldHJpYzsKKyAgICAgICAgICAgIGNvbnN0IHBs
YXRmb3JtID0gdGhpcy5fcGxhdGZvcm07CiAKICAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFj
ZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFuZS10aXRsZScpLAogICAg
ICAgICAgICAgICAgIG1ldHJpYy5mdWxsTmFtZSgpICsgJyBvbiAnICsgcGxhdGZvcm0ubmFtZSgp
KTsKQEAgLTI3OSw5ICsyOTAsMTcgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5l
QmFzZSB7CiAgICAgICAgIGlmICh0aGlzLl9tYWluQ2hhcnRTdGF0dXMpCiAgICAgICAgICAgICB0
aGlzLl9yZW5kZXJBY3Rpb25Ub29sYmFyKCk7CiAKKyAgICAgICAgdGhpcy5fcmVuZGVyUmVwZXRp
dGlvblR5cGVFeHBsYW5hdGlvbkxhemlseS5ldmFsdWF0ZSh0aGlzLl9yZXBldGl0aW9uVHlwZSk7
CisKICAgICAgICAgc3VwZXIucmVuZGVyKCk7CiAgICAgfQogCisgICAgcmVuZGVyUmVwZXRpdGlv
blR5cGVFeHBsYW5hdGlvbihyZXBldGl0aW9uVHlwZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGV4
cGxhbmF0aW9uID0gcmVwZXRpdGlvblR5cGUgPT09ICdhbHRlcm5hdGluZycgPyAnKGUuZy4gQUJB
QkFCKScgOiAnKGUuZy4gQUFBQkJCKSc7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlz
LmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZS1leHBsYW5hdGlvbicpLCBleHBsYW5hdGlvbikKKyAg
ICB9CisKICAgICBfcmVuZGVyQWN0aW9uVG9vbGJhcigpCiAgICAgewogICAgICAgICB2YXIgYWN0
aW9ucyA9IFtdOwpAQCAtNTg5LDcgKzYwOCwxOCBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBD
aGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRp
b24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPml0ZXJhdGlvbnM8L2xhYmVsPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3gi
IGlkPSJub3RpZnktb24tY29tcGxldGlvbiIgY2hlY2tlZD4gTm90aWZ5IG9uIGNvbXBsZXRpb248
L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+SW48L2xhYmVs
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InJlcGV0aXRpb24tdHlw
ZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+YWx0
ZXJuYXRpbmc8L29wdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlv
bj5zZXF1ZW50aWFsPC9vcHRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxl
Y3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPm1vZGU8L2xhYmVsPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0icmVwZXRpdGlvbi10eXBlLWV4cGxh
bmF0aW9uIj4oZS5nLiBBQkFCQUIpPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwv
bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Im5vdGlmeS1vbi1jb21wbGV0
aW9uIiBjaGVja2VkPk5vdGlmeSBvbiBjb21wbGV0aW9uPC9sYWJlbD4KICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAg
ICAgICAgICAgPHVsIGNsYXNzPSJjaGFydC1wYW5lLWZpbHRlcmluZy1vcHRpb25zIHBvcG92ZXIi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1w
YWdlLmpzCmluZGV4IDMwMWZkMmEyOTA2NTFkNTEyOGMzNTIzYWY0OTgyMGYyMDNiYzY2YTMuLjY3
ZWQxMWM1NTc1ZGQ2ZjBmMWViZmUwZDNjMWI1ZGQwNjY4ZDA5ZjQgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2st
cGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2Ny
ZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAgLTIyLDE0ICsyMiwxNCBAQCBjbGFzcyBDcmVh
dGVBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgdGhp
cy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX2NyZWF0
ZUFuYWx5c2lzVGFza1dpdGhHcm91cC5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBfY3JlYXRl
QW5hbHlzaXNUYXNrV2l0aEdyb3VwKHJlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29t
bWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCBub3RpZnlPbkNvbXBsZXRpb24pCisg
ICAgYXN5bmMgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cChyZXBldGl0aW9uQ291bnQsIHRl
c3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIFRlc3RHcm91cC5j
cmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJl
cGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKS50aGVuKCh0YXNr
KSA9PiB7Ci0gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlcigpLnVybChgYW5hbHlz
aXMvdGFzay8ke3Rhc2suaWQoKX1gKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0
IHRhc2sgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3Jt
LCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlm
eU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICAgICAgbG9jYXRpb24uaHJl
ZiA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgpfWApOwotICAg
ICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAg
ICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7
Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmVuZGVyKCkKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVl
c3RzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKaW5kZXggZmQ0MDQzNDQyMzcwZjQ1M2YxZmQzZWU3Yjdh
YTVhNTFmZmFjMWIyMS4uYTJjZWFlNDA3YzI5YjBmMmFmNjRmODE4MTk3ZDkxOGU1ZWZiMDE0NCAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVp
bGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKQEAgLTU2Niw2ICs1NjYsNjIgQEAg
ZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0p
OwogICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCBzdGlsbCByZXR1cm4gYnVpbGQgcmVxdWVzdHMg
YXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2hlbiB0ZXN0IGdyb3VwIGhhcyBh
bGwgYnVpbGQgcmVxdWVzdHMgZmluaXNoZWQgd2l0aCAibWF5TmVlZE1vcmVSZXF1ZXN0IiBmbGFn
IHRvIGJlIHRydWVzJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29t
cGxldGVkJywgJ2ZhaWxlZCddLCB0cnVlLCBudWxsLCBudWxsLCAnYWx0ZXJuYXRpbmcnLCB0cnVl
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwor
ICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywg
J2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5n
dGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRb
J2NvbW1pdFNldHMnXVswXS5pZCksIDQwMSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLAorICAgICAgICAg
ICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGws
IHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNics
IGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJv
b3RGaWxlOiBudWxsfV0pOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50
KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCksIDQwMik7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5yZXZpc2lvbkl0ZW1zLAor
ICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0
Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6
ICc5NjMzNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDog
ZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoY29udGVudFsnY29tbWl0cyddLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzBdLmlkKSwgODc4MzIpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5yZXBvc2l0
b3J5LCAnOScpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1p
dHMnXVswXS5yZXZpc2lvbiwgJzEwLjExIDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5pZCksIDkzMTE2KTsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmVwb3Np
dG9yeSwgJzExJyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29t
bWl0cyddWzFdLnJldmlzaW9uLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzJdLmlkKSwgOTYzMzYpOworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXBvc2l0b3J5
LCAnMTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRz
J11bMl0ucmV2aXNpb24sICcxOTI3MzYnKTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0u
aWQpLCA3MDApOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0ub3JkZXIpLCAwKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAn
NjUnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzBdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5zdGF0dXMsICdj
b21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsn
YnVpbGRSZXF1ZXN0cyddWzBdLnRlc3QsICcyMDAnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uaWQpLCA3
MDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0ub3JkZXIpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnBsYXRmb3JtLCAnNjUnKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzFdLmNvbW1pdFNldCksIDQwMik7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5zdGF0dXMsICdjb21wbGV0
ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzFdLnRlc3QsICcyMDAnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJp
Y3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uaWQpLCA3MDIpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMl0ub3JkZXIpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzJdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5zdGF0dXMsICdjb21wbGV0ZWQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddWzJdLnRlc3QsICcyMDAnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQpLCA3MDMpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bM10ub3JkZXIpLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzNdLmNvbW1pdFNldCksIDQwMik7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5zdGF0dXMsICdmYWlsZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRl
c3QsICcyMDAnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIHN1cHBv
cnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbicsICgpID0+IHsKICAgICAgICAgcmV0dXJu
IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0
YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0
aW9uPXRydWUnKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMKaW5kZXggZGNlMDljYmFiMzUwYTIyYTgzMWQ1YmY5OTIxN2FlNzA5
OTcyNjk4Mi4uNWQyMTBlMzYwZjgxMjc1MjgwYzc1ZDQ3MGJkMmFhMWQ5MjZiMGRkMiAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMu
anMKQEAgLTEzNCw3ICsxMzQsOCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWls
ZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0
b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dl
YktpdCcpWzBdOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Myd9fV07CiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCi0gICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNr
TmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwg
dGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJl
cGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgICAgICB7bmFtZTogJ3Rl
c3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAgIG5l
ZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHMs
IGNvbW1pdFNldDogbnVsbH0pOwogICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CiAKICAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlO
ZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CkBAIC0xNDQsMTQgKzE0NSwxNiBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKLSAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAg
IGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBldGl0aW9uQ291
bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CiAKICAgICAg
ICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywg
e2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSk7CiAKICAgICAgICAgY29uc3Qg
dXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNr
SWQnXSwgdHJ1ZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxl
bmd0aCwgMSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3Jv
dXBzWzBdLnJlcGV0aXRpb25Db3VudCgpKSwgNCk7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0ucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkpLCA0KTsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
KSwgMik7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVl
c3RzKCksIHRydWUpOwogICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB1cGRhdGVkR3Jv
dXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKSkgewpAQCAtMTc0LDEwICsxNzcsMTY3IEBAIGRl
c2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7
CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKLSAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7
CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBl
dGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7
CiAgICAgICAgIGF3YWl0IGdyb3VwLnVwZGF0ZUhpZGRlbkZsYWcodHJ1ZSk7CiAKICAgICAgICAg
YXdhaXQgYXNzZXJ0VGhyb3dzKCdDYW5ub3RBZGRUb0hpZGRlblRlc3RHcm91cCcsIGFzeW5jICgp
ID0+IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycs
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pKQogICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGFkZCBidWlsZCByZXF1ZXN0cyB0byB0ZXN0IGdyb3VwIGZv
ciBhIHNwZWNpZmljIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFk
ZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdl
YmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5
Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
Y29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAg
IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydn
cm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdy
b3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkp
LCAyKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVsxXS5pZCgpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBh
ZGRDb3VudDogMiwgY29tbWl0U2V0fSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
bWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRT
ZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAg
Y29uc3QgYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5y
ZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRTZXQubGVuZ3RoLCAyKTsKKworICAg
ICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENv
bW1pdFNldHMoKVsxXTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0
U2V0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNGb3JTZWNvbmRD
b21taXRTZXQubGVuZ3RoLCA0KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgYWRkIGJ1aWxk
IHJlcXVlc3RzIHJpZ2h0IGFmdGVyIHJlcXVlc3RzIHdpdGggc2FtZSBjb21taXQgc2V0IGZvciBz
ZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRy
aWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAn
dGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxh
dGZvcm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICAgICAgdGVzdDogTW9j
a0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25U
eXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRl
ZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAg
ICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
KQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRp
b25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpKSwgMik7CisKKyAgICAgICAgY29uc3QgY29t
bWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF0uaWQoKTsKKwor
ICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVz
dHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pOwor
CisgICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JU
YXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFy
c2VJbnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAg
ICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENv
bW1pdFNldHMoKVswXTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0
U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNl
dCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21t
aXRTZXQubGVuZ3RoLCA0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVz
dHNGb3JGaXJzdENvbW1pdFNldFszXS5vcmRlcigpLCAzKQorCisgICAgICAgIGNvbnN0IHNlY29u
ZENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOwor
ICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdy
b3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1pdFNldC5sZW5ndGgs
IDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENv
bW1pdFNldFswXS5vcmRlcigpLCA0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdHNGb3JTZWNvbmRDb21taXRTZXRbMV0ub3JkZXIoKSwgNSk7CisgICAgfSk7CisKKyAg
ICBpdCgnc2hvdWxkIG5vdCBzaGlmdCByZXF1ZXN0IG9yZGVyIGlmIGFkZGluZyBidWlsZCByZXF1
ZXN0IHRvIGNvbW1pdCBzZXQgcmVwcmVzZW50aW5nIGxhc3QgY29uZmlndXJhdGlvbiBpbiBzZXF1
ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdn
ZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUo
KSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtp
dC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVz
dCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICAgICAgdGVzdDogTW9ja0Rh
dGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBl
OiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdy
b3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3Vw
cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAg
ICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25D
b3VudEZvckNvbW1pdFNldChjb21taXRTZXQpKSwgMik7CisKKyAgICAgICAgY29uc3QgY29tbWl0
U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV0uaWQoKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMn
LCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pOworCisg
ICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBk
YXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJ
bnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAg
ICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1p
dFNldHMoKVswXTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0U2V0
ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRT
ZXQubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNG
b3JGaXJzdENvbW1pdFNldFsxXS5vcmRlcigpLCAxKQorCisgICAgICAgIGNvbnN0IHNlY29uZENv
bW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAg
ICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vw
c1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1pdFNldC5sZW5ndGgsIDQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldFswXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVx
dWVzdHNGb3JTZWNvbmRDb21taXRTZXRbMV0ub3JkZXIoKSwgMyk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0WzJdLm9yZGVyKCksIDQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldFszXS5vcmRlcigpLCA1KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdp
dGggIkNvbW1pdFNldE5vdEluVGVzdEdyb3VwIiBpZiBjb21taXQgc2V0IGlzIG5vdCBpbiB0ZXN0
IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENy
ZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5
LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktp
dCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9
fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFt
ZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVz
dDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0
aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3Jv
dXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdy
b3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0ZXN0
R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkp
LCAyKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVswXS5pZCgpICsgdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRz
KClbMV0uaWQoKSArIDE7CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdDb21taXRTZXRO
b3RJblRlc3RHcm91cCcsICgpID0+CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291
bnQ6IDIsIGNvbW1pdFNldH0pKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdp
dGggIkludmFsaWRDb21taXRTZXQiIGlmIGNvbW1pdCBzZXQgaWQgaXMgbm90IGFuIGludGVnZXIn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFz
aygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCku
ZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07
CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3Ro
ZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNv
dW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0g
cmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwg
bWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOwor
CisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9ICdpbnZhbGlkJzsKKworICAgICAgICBhd2FpdCBh
c3NlcnRUaHJvd3MoJ0ludmFsaWRDb21taXRTZXQnLCAoKSA9PgorICAgICAgICAgICAgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRl
ZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXR9KSk7CisgICAgfSk7CiB9KTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3Rz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcwppbmRleCAyYjI3NTBhYTdhMmRkM2JjNzk1
YTc2NzI3NjRiYWFhM2ViODRkMWI2Li5jYTVhOWRjMjQ4ZDhlMzA2NGNlODY4M2MyOWZjMzIyYzI0
MjdmNTk3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFu
YWx5c2lzLXRhc2stdGVzdHMuanMKQEAgLTY4Miw0ICs2ODIsMTA3IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sgd2l0aCBub2RlIHByaXZpbGVnZWQgYXBp
JywgZnVuY3RpCiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21t
aXRGb3JSZXBvc2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsK
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBv
c2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKICAgICB9KTsK
KworICAgIGl0KCdzaG91bGQgY3JlYXRlIGFuIGFuYWx5c2lzIHRhc2sgd2l0aCB0ZXN0IGdyb3Vw
IHdpdGggInNlcXVlbnRpYWwiIG1vZGUgd2hlbiBzcGVjaWZpZWQnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IDE7
CisgICAgICAgIGNvbnN0IHRlc3QxSWQgPSAyOworICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZUlk
ID0gMTIzNDsKKworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTogJ1N1aXRlJ30pOwor
ICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiB0ZXN0MUlkLCBuYW1lOiAndGVz
dDEnLCBwYXJlbnQ6IDF9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3NvbWUgcGxhdGZvcm0nfSk7
CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywge2lkOiAxMjM0
LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0
cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwgbmFtZTogJ3dlYmtpdC1v
bmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5z
ZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogd2Via2l0SWQsIGdy
b3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmln
dXJhdGlvbnMnLCB7dGVzdDogdGVzdDFJZCwgcGxhdGZvcm06IHBsYXRmb3JtSWQsIHRyaWdnZXJh
YmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxkZXJGb3JSZXBvcnQo
cmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOworICAg
ICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8n
LCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0
Y2goKTsKKworICAgICAgICBsZXQgdGVzdDEgPSBUZXN0LmZpbmRCeUlkKHRlc3QxSWQpOworICAg
ICAgICBsZXQgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxhdGZvcm1JZCk7Cisg
ICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2Nv
bmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlkKCksIHBsYXRmb3Jt
OiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0UnVucyA9IGF3YWl0IGRi
LnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1snaWQnXX0pOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsKKworICAgICAgICBj
b25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNpb246ICcxOTE2MjInfX07
CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNp
b246ICcxOTE2MjMnfX07CisKKyAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdjb25maXJt
JywgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZp
cm0nLCByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlzaW9uU2V0XSwK
KyAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwgZW5kUnVuOiB0ZXN0UnVu
c1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnc2Vx
dWVudGlhbCd9KTsKKworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZl
dGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
YXNrLm5hbWUoKSwgJ2NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0KCF0YXNrLmhhc1Jlc3VsdHMo
KSk7CisgICAgICAgIGFzc2VydCh0YXNrLmhhc1BlbmRpbmdSZXF1ZXN0cygpKTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmJ1Z3MoKSwgW10pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHRhc2suY2F1c2VzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbCh0YXNrLmZpeGVzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRhc2suY2hhbmdlVHlwZSgpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRh
c2sucGxhdGZvcm0oKS5sYWJlbCgpLCAnc29tZSBwbGF0Zm9ybScpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGFzay5tZXRyaWMoKS50ZXN0KCkubGFiZWwoKSwgJ3Rlc3QxJyk7CisKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFz
ay5pZCgpKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5uYW1lKCksICdDb25maXJtJyk7CisgICAgICAgIGFz
c2VydC5vayh0ZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGNvbnN0IGJ1
aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFz
c2VydChidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzFd
LmNvbW1pdFNldCgpKSk7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNl
dCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29u
c3QgZmlyc3RDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAg
ICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOwor
ICAgICAgICBjb25zdCB3ZWJraXRSZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZCh3ZWJr
aXRJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21taXRG
b3JSZXBvc2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0
b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKKyAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgd2hlbiB0
ZXN0IG1vZGUgaXMgbmVpdGhlciAiYWx0ZXJuYXRpbmciIG5vciAic2VxdWVudGlhbCInLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxh
dGZvcm1JZCA9IDE7CisgICAgICAgIGNvbnN0IHRlc3QxSWQgPSAyOworICAgICAgICBjb25zdCB0
cmlnZ2VyYWJsZUlkID0gMTIzNDsKKworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTog
J1N1aXRlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiB0ZXN0MUlk
LCBuYW1lOiAndGVzdDEnLCBwYXJlbnQ6IDF9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdy
ZXBvc2l0b3JpZXMnLCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBh
d2FpdCBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3NvbWUg
cGxhdGZvcm0nfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVz
Jywge2lkOiAxMjM0LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdhaXQg
ZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwgbmFt
ZTogJ3dlYmtpdC1vbmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAg
YXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTog
d2Via2l0SWQsIGdyb3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dl
cmFibGVfY29uZmlndXJhdGlvbnMnLCB7dGVzdDogdGVzdDFJZCwgcGxhdGZvcm06IHBsYXRmb3Jt
SWQsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxk
ZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2
aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcv
YXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQg
TWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICBsZXQgdGVzdDEgPSBUZXN0LmZpbmRCeUlkKHRl
c3QxSWQpOworICAgICAgICBsZXQgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxh
dGZvcm1JZCk7CisgICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0
Um93KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlk
KCksIHBsYXRmb3JtOiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0UnVu
cyA9IGF3YWl0IGRiLnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1sn
aWQnXX0pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsK
KworICAgICAgICBjb25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNpb246
ICcxOTE2MjInfX07CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Via2l0
SWRdOiB7cmV2aXNpb246ICcxOTE2MjMnfX07CisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygn
SW52YWxpZFJlcGV0aXRpb25UeXBlJywgKCkgPT4KKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdjb25maXJtJywgcmVw
ZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJt
JywgcmV2aXNpb25TZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sIHJl
cGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywKKyAgICAgICAgICAgICAgICBzdGFydFJ1bjog
dGVzdFJ1bnNbMF1bJ2lkJ10sIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sIG5lZWRzTm90aWZp
Y2F0aW9uOiB0cnVlfSkpOworICAgIH0pOwogfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3Vw
LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxl
Z2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwppbmRleCA2N2Q4NGFkYWY1OTZhMTcw
YmRkZmVhZjIyNDIwZjJjMjUwNWUxM2Q2Li5kMTkxYjVkNjNjMDgxMDkzZTRjNGZjNWU1NWNiYzE4
ZTZlYjkyNjE3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRl
c3QtZ3JvdXAtdGVzdHMuanMKQEAgLTcsNiArNyw4IEBAIGNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwogY29uc3QgVGVtcG9yYXJ5RmlsZSA9
IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBvcmFyeS1maWxlLmpzJykuVGVtcG9yYXJ5RmlsZTsK
IGNvbnN0IGFkZFdvcmtlckZvclJlcG9ydCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1v
cGVyYXRpb25zLmpzJykuYWRkV29ya2VyRm9yUmVwb3J0OwogY29uc3QgcHJlcGFyZVNlcnZlclRl
c3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVT
ZXJ2ZXJUZXN0OworY29uc3QgYXNzZXJ0VGhyb3dzID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29t
bW9uLW9wZXJhdGlvbnMuanMnKS5hc3NlcnRUaHJvd3M7CisKIAogZnVuY3Rpb24gY3JlYXRlQW5h
bHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlzaW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQog
ewpAQCAtNDAwLDcgKzQwMiw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRl
c3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGdyb3Vw
SWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3Vu
dCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05v
dGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRS
ZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNCk7CkBAIC00NDcsNyArNDQ5LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRl
c3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
Z3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
bkNvdW50KCksIDEpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5l
ZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5i
dWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCA0KTsKQEAgLTQ4NSw3ICs0ODcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsK
ICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsK
QEAgLTUyNCw3ICs1MjYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
ZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTU1Niw3ICs1
NTgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBd
OwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCBy
ZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTYwMyw3ICs2MDUsNyBAQCBkZXNj
cmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwot
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5u
ZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdy
b3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY0NSw3ICs2NDcsNyBAQCBkZXNjcmliZSgnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNh
dGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVx
dWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVu
Z3RoLCA0KTsKQEAgLTY5NCw3ICs2OTYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAg
ICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAg
LTc0Myw3ICs3NDUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdy
b3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50
ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtODA4LDcgKzgxMCw3IEBAIGRlc2NyaWJl
KCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2Nr
RGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSk7CkBAIC04ODMsNyArODg1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
dGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZp
bmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTk2Niw3ICs5NjgsNyBAQCBk
ZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSkpOwpAQCAtMTA2MCw3ICsxMDYyLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRl
c3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9u
KCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBs
YXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTExNTcsNyAr
MTE1OSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7
Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCks
IDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZp
Y2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwg
VGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC0xMjM1LDcgKzEyMzcsNyBAQCBkZXNjcmliZSgnL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25zdCBn
cm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
ZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5l
ZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxk
UmVxdWVzdHMoKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7CkBAIC0xMjY0LDcgKzEyNjYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0
ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNb
MF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3Vw
SWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCks
IDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigp
KTsKICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtMTMwOCw3ICsx
MzEwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIFRlc3RHcm91cC5zb3J0QnlOYW1lKHRlc3RHcm91cHMp
OwogCiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5uYW1lKCks
ICd0ZXN0MScpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0u
cmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGxl
dCByZXF1ZXN0cyA9IHRlc3RHcm91cHNbMF0uYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBsZXQg
c2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwpAQCAtMTMyMSw3ICsxMzIzLDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9y
eSh3ZWJraXQpLCAnMTkxNjIzJyk7CiAKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
ZXN0R3JvdXBzWzFdLm5hbWUoKSwgJ3Rlc3QyJyk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGVzdEdyb3Vwc1sxXS5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICAgICAgcmVxdWVzdHMgPSB0ZXN0R3JvdXBzWzFdLmJ1aWxkUmVxdWVzdHMo
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwog
ICAgICAgICAgICAgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwpAQCAtMTMzNiw0ICsx
MzM4LDUzIEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOwogICAgICAgICB9KTsKICAgICB9KTsK
KworICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCB3aXRoIGFuIGFuYWx5c2lzIHRh
c2sgd2l0aCAic2VxdWVudGlhbCIgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQg
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qg
d2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0g
W3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25h
bWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAg
ICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlw
ZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsKKyAgICAgICAgY29uc3QgaW5z
ZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IFth
bmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW0FuYWx5c2lzVGFz
ay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVz
dWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFuYWx5
c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlv
bigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1swXS5vcmRlcigpLCAwKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigpLCAzKTsKKworICAgICAgICBhc3NlcnQocmVxdWVz
dHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzFdLmNvbW1pdFNldCgpKSk7CisgICAg
ICAgIGFzc2VydChyZXF1ZXN0c1syXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbM10uY29t
bWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0
KCk7CisgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1syXS5jb21taXRTZXQoKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5yZXBvc2l0b3JpZXMoKSwgW3dl
YmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDEuY3VzdG9tUm9vdHMo
KSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0
MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOworICAgIH0pOworCisg
ICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZE1vZGUiIGlmIHRlc3QgbW9kZSBpcyBu
ZWl0aGVyICJhbHRlcm5hdGluZyIgbm9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkp
ID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworCisgICAgICAgIGF3YWl0IGFzc2Vy
dFRocm93cygnSW52YWxpZFJlcGV0aXRpb25UeXBlJywgKCkgPT4KKyAgICAgICAgICAgIFByaXZp
bGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0Jywg
dGFza05hbWU6ICdvdGhlciB0YXNrJywKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2ludmFs
aWQtbW9kZScsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSkpOworICAgIH0pOwog
fSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10
ZXN0cy5qcwppbmRleCA0NTA2YzNiMjdmMDVmMjMyYWI0MGM1ZTZhYzc0ZTdhZDVmNDJkNTk4Li4x
NjA3NzFiY2ZiNWQ0ZjI3ZmQxMzRiNTg2NDg3MmIyYTI1YjdmNzVhIDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10
ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTE2OCw3
ICsxNjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJywg
ZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsK
ICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQoKSk7CiAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3Vw
JywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVu
Z3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCBmYWxz
ZSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBA
IC0yNzYsNCArMjc2LDQzIEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAnLCBmdW5jdGlvbigpewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdy
b3Vwc1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0uaXNIaWRkZW4oKSwgdHJ1ZSk7CiAgICAgfSk7CisK
KyAgICBpdCgnc2hvdWxkIGNhbmNlbCBhIHRlc3QgZ3JvdXAgd2l0aCAibWF5X25lZWRfbW9yZV9y
ZXF1ZXN0cyIgZmxhZyBjbGVhcmVkJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRU
cmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5u
YW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZp
c2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJ
ZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0g
YXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworCisgICAgICAgIGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNl
cnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBsZXQg
dXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNr
SWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxl
bmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1h
eU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCB0ZXN0R3JvdXAgPSB1cGRh
dGVkR3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5l
ZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3RzID0gdGVz
dEdyb3VwLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChidWlsZFJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3Rz
WzBdLmlzUGVuZGluZygpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMV0uaXNQZW5k
aW5nKCkpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0
ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGNhbmNlbDogdHJ1ZX0pOwor
CisgICAgICAgIHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRl
ZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBd
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVz
dHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkpOwor
ICAgICAgICBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBdLnN0YXR1cygpLCAnY2Fu
Y2VsZWQnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0uc3Rh
dHVzKCksICdjYW5jZWxlZCcpOworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9y
ZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcwppbmRleCBlY2ZlYzhk
MTZlOTM0ZDU3ZDMyNzE4ODhlYzU2M2IzNDQ2ZWFiNGJhLi5mMjRmNDMzMWEwYjQxMGM3MGJjZGI4
OWIwMDhkYzk2NWQxOWI0MGEzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9u
cy5qcwpAQCAtNTMsNyArNTMsNyBAQCBhc3luYyBmdW5jdGlvbiBhc3NlcnRUaHJvd3MoZXhwZWN0
ZWRFcnJvciwgdGVzdEZ1bmN0aW9uKQogewogICAgIGxldCB0aHJvd25FeGNlcHRpb24gPSBmYWxz
ZTsKICAgICB0cnkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCkKKyAgICAgICAg
YXdhaXQgdGVzdEZ1bmN0aW9uKCk7CiAgICAgfSBjYXRjaChlcnJvcikgewogICAgICAgICB0aHJv
d25FeGNlcHRpb24gPSB0cnVlOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXJyb3IsIGV4
cGVjdGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IDY4MWFmY2M0Y2Y2YWQw
ZTU5MmVjYjYwMTFhNjFjYjFjZjk0Y2VkMWIuLjQ5ZWQ0ZjkzOTBhMDdkNjNmNTFkMjkxNjM4YmEy
ZDg1MjhiY2NlYTAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTY0LDEyICs2NCwxNCBA
QCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9ydW5zJywge2lkOiA4
MDEsIGNvbmZpZzogMzAxLCBidWlsZDogOTAxLCBtZWFuX2NhY2hlOiAxMDB9KSwKICAgICAgICAg
XSk7CiAgICAgfSwKLSAgICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0LCBu
ZWVkc05vdGlmaWNhdGlvbj10cnVlLCB1cmxMaXN0PVtdKQorICAgIGFkZE1vY2tEYXRhOiBmdW5j
dGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwgdXJsTGlzdCA9
IG51bGwsIGNvbW1pdFNldExpc3QgPSBudWxsLCByZXBldGl0aW9uVHlwZT0nYWx0ZXJuYXRpbmcn
LCBtYXlOZWVkTW9yZVJlcXVlc3RzPWZhbHNlKQogICAgIHsKICAgICAgICAgaWYgKCFzdGF0dXNM
aXN0KQogICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnLCAncGVuZGluZyddOwogICAgICAgICBpZiAoIXVybExpc3QpCiAgICAgICAgICAgICB1
cmxMaXN0ID0gW251bGwsIG51bGwsIG51bGwsIG51bGxdOworICAgICAgICBpZiAoIWNvbW1pdFNl
dExpc3QpCisgICAgICAgICAgICBjb21taXRTZXRMaXN0ID0gWzQwMSwgNDAyLCA0MDEsIDQwMl07
CiAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICB0aGlzLmFkZE1vY2tD
b25maWd1cmF0aW9uKGRiKSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7
aWQ6IDQwMX0pLApAQCAtODEsMTQgKzgzLDE1IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdhbmFseXNpc190YXNrcycsIHtpZDogNTAwLCBwbGF0Zm9ybTogNjUsIG1ldHJp
YzogMzAwLCBuYW1lOiAnc29tZSB0YXNrJywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgw
MSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAgICAg
ICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVon
fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2
MDAsIHRhc2s6IDUwMCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlv
bl9jb3VudDogNCwgbmVlZHNfbm90aWZpY2F0aW9uOiBuZWVkc05vdGlmaWNhdGlvbn0pLAotICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0
YXR1c0xpc3RbMF0sIHVybDogdXJsTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRv
cnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRl
cjogMCwgY29tbWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3Jl
cXVlc3RzJywge2lkOiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFd
LCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1
LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBz
dGF0dXNMaXN0WzJdLCB1cmw6IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0
b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3Jk
ZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9y
ZXF1ZXN0cycsIHtpZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHVybDogdXJsTGlzdFsz
XSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2
NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRh
c2s6IDUwMCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3Vu
dDogMiwKKyAgICAgICAgICAgICAgICBuZWVkc19ub3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0
aW9uLCByZXBldGl0aW9uX3R5cGU6IHJlcGV0aXRpb25UeXBlLCBtYXlfbmVlZF9tb3JlX3JlcXVl
c3RzOiBtYXlOZWVkTW9yZVJlcXVlc3RzfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdXJsOiB1cmxMaXN0
WzBdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06
IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiBjb21taXRT
ZXRMaXN0WzBdfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lk
OiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFdLCB0cmlnZ2VyYWJs
ZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAs
IGdyb3VwOiA2MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzFdfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czog
c3RhdHVzTGlzdFsyXSwgdXJsOiB1cmxMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3Np
dG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9y
ZGVyOiAyLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzJdfSksCisgICAgICAgICAgICBkYi5p
bnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwg
dXJsOiB1cmxMaXN0WzNdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAw
MSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRf
c2V0OiBjb21taXRTZXRMaXN0WzNdfSksCiAgICAgICAgIF0pOwogICAgIH0sCi0gICAgYWRkTW9j
a0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9u
PXRydWUsIGFkZE1vY2tDb25maWd1cmF0aW9uPXRydWUpCisgICAgYWRkTW9ja0J1aWxkUmVxdWVz
dHNXaXRoUm9vdHMoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwgYWRk
TW9ja0NvbmZpZ3VyYXRpb24gPSB0cnVlKQogICAgIHsKICAgICAgICAgY29uc3Qgc2V0dXBTdGVw
cyA9IGFkZE1vY2tDb25maWd1cmF0aW9uID8gW3RoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIp
XSA6IFtdOwogICAgICAgICBpZiAoIXN0YXR1c0xpc3QpCkBAIC0yMDEsMTAgKzIwNCwxMCBAQCBN
b2NrRGF0YSA9IHsKICAgICAgICAgY29uc3QgcmVwb3NpdG9yeV9ncm91cCA9IDIwMDE7CiAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lz
X3Rlc3RfZ3JvdXBzJywge2lkOiA2MDEsIHRhc2s6IDUwMCwgbmFtZTogJ2Fub3RoZXIgdGVzdCBn
cm91cCcsIGF1dGhvciwgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0fSksCi0gICAgICAgICAg
ICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlz
dFszXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91
cDogNjAxLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJp
Z2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBv
cmRlcjogMCwgY29tbWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MTIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUs
IHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwg
Y29tbWl0X3NldDogNDAxfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3Rz
Jywge2lkOiA3MTEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRv
cnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMSwgY29tbWl0X3Nl
dDogNDAyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3
MTIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAs
IHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAxfSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1
czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3Jt
LCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAg
IF0pOwogICAgIH0sCiAgICAgYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyhkYiwgc3RhdHVz
TGlzdCkKQEAgLTQ4NCw3ICs0ODcsNiBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAi
c2NoZWR1bGVyIjogWyJBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVs
ZXIiLCAiU2NoZWR1bGVyIl0sCiAgICAgICAgICAgICAgICAgIndrIjogW29wdGlvbnMud2Via2l0
UmV2aXNpb24gfHwgJzE5MTYyMicsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgIm9zIjog
W29wdGlvbnMub3N4UmV2aXNpb24gfHwgJzEwLjExIDE1QTI4NCcsICJVbmtub3duIl0sCi0gICAg
ICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIi
LCAiV29ya2VyIChkZXByZWNhdGVkKSJdLAogICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjog
W29wdGlvbnMud29ya2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciJdCiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CkBAIC01MTksNyArNTIxLDYgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAg
ICAgICAgInByb2plY3QiOiBbJycsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJlcG9z
aXRvcnkiOiBbJycsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogWycn
LCAiVW5rbm93biJdLAotICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29y
a2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciAoZGVwcmVjYXRlZCkiXSwKICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3Jr
ZXIiXQogICAgICAgICAgICAgfQogICAgICAgICB9OyAgIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVp
bGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMKaW5kZXggYjQ4NzBiYjJiMDg2YzQ5YjgyNzE1NDg1
NmUxNWY2ZjY0ZTAwN2QyYS4uMTM4NmU2OTFmMjJlOTUwYmM0NDczZjhkOWQ4ZGZkMWQyY2JkNDcx
NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29s
cy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCkBA
IC02ODksMTIgKzY4OSwxNSBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29s
dmUoTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWlsZGVySWQ6IE1vY2tEYXRhLmJ1aWxkZXJJREZv
ck5hbWUoJ3NvbWUgYnVpbGRlciAyJyksIGJ1aWxkUmVxdWVzdElkOiA3MDB9KSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA1KTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRo
b2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2FwaS92Mi9mb3JjZXNjaGVkdWxlcnMvZm9yY2Utc29t
ZS1idWlsZGVyLTInKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNF0uZGF0YSwgeydpZCc6ICc3MDEnLCAnanNvbnJwYyc6ICcy
LjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFtcyc6CiAgICAgICAgICAgICAgICAgICAgIHsn
d2snOiAnMTkyNzM2JywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzog
JzcwMScsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMid9fSk7CiAgICAg
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKCdPSycpOworICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ1BPU1Qn
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s1XS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXIt
MScpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s1XS5kYXRhLCB7J2lkJzogJzcxMScsICdqc29ucnBjJzogJzIuMCcsICdtZXRo
b2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKQEAgLTgzMyw3ICs4MzYsNyBAQCBkZXNjcmliZSgnQnVp
bGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdy
b3VwcyBydW5uaW5nIHNpbXVsdGVub3VzbHknLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQg
cmVjb3ZlciBmcm9tIG11bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHkn
LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
ICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKIApA
QCAtMTA2NCw2ICsxMDY3LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzJdLmRhdGEsIHsnaWQnOiAnNzEwJywgJ2pzb25ycGMnOiAnMi4wJywg
J21ldGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgogICAgICAgICAgICAgICAgICAgICB7J3drJzog
JzE5MTYyMicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MTAn
LCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Utc29tZS1idWlsZGVyLTEnfX0pOwogICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwogCkBAIC0xMzU2LDcgKzEzNjAsMjcwIEBAIGRlc2NyaWJlKCdC
dWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICdidWls
ZC1yZXF1ZXN0LWlkJzogJzkwMCcsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxk
ZXItMid9fSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgbm90IHJldXNlIHRo
ZSByb290IHdoZW4gYSBidWlsZCByZXF1ZXN0IHdpdGggc2FtZSBjb21taXQgc2V0IGlzIGF2YWlh
bGJsZSBidXQgdGhlIGJ1aWxkIHJlcXVlc3QgaGFzIGJlZW4gc2NoZWR1bGVkJywgYXN5bmMgKCkg
PT4geworICAgICAgICBpdCgnc2hvdWxkIGRlZmVyIHNjaGVkdWxpbmcgcmVxdWVzdHMgZnJvbSBu
ZXh0IGNvbmZpZ3VyYXRpb24gaW4gc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHVudGlsIHRoZSBjdXJy
ZW50IGNvbmZpZ3VyYXRpb24gbWVldHMgdGhlIGluaXRpYWwgcmVxdWVzdGVkIGl0ZXJhdGlvbiBj
b3VudCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
Y29tcGxldGVkJywgJ2ZhaWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSwgdHJ1ZSwKKyAgICAg
ICAgICAgICAgICBbJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTIzJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jywg
bnVsbCwgbnVsbF0sCisgICAgICAgICAgICAgICAgWzQwMSwgNDAxLCA0MDIsIDQwMl0sICdzZXF1
ZW50aWFsJywgdHJ1ZSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisg
ICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRo
VHdvQnVpbGRlcnMoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBw
YXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNP
bmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwg
TW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21l
LWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVz
b2x2ZSh7fSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZSBidWls
ZGVyIDInKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUo
e30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0
aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sy
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7
J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEo
e3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAg
ICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRS
ZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJl
Y2VudEJ1aWxkc1VybCgnc29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsIE1vY2tEYXRhLnBlbmRp
bmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s0XS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVp
bGRzVXJsKCdzb21lIGJ1aWxkZXIgMicpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbNV0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHMubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzZdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNV
cmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s2XS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICAgICAgTW9ja0Rh
dGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1
aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWls
ZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLm1l
dGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbN10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJywg
MikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5yZXNvbHZlKHt9KTsK
KworICAgICAgICAgICAgYXdhaXQgc3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1Vy
bCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0
dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDEpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy8yL2J1aWxkcy8xMjQnKTsKKworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZl
dGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxk
ZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyNCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hl
ZHVsaW5nIG90aGVyIGJ1aWxkIHJlcXVlc3Qgb24gYSBidWlsZGVyIGlmIGEgc2VxdWVudGlhbCB0
ZXN0IGdyb3VwIGlzIHNjaGVkdWxlZCBvbiBpdCBhbmQgd2FpdGluZyBmb3IgcmV0cnknLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwg
WydmYWlsZWQnLCAnY29tcGxldGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZyddLCB0cnVlLAorICAg
ICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQn
LCBudWxsLCBudWxsXSwKKyAgICAgICAgICAgICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3Nl
cXVlbnRpYWwnLCB0cnVlKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9j
a1Rlc3RHcm91cChkYiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlm
ZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tU
ZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAgICBjb25zdCBsb2dn
ZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFt
ZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgY29u
c3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAg
ICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigo
KSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RB
bmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWls
ZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRp
bmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWls
ZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICAgICAgTW9j
a0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDAs
IGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRC
dWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9
KV19KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3Ro
LCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJd
Lm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7fSk7
CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCkK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikp
OworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHsnYnVpbGRz
JyA6IFsKKyAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jl
c3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxk
UmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAgICAgYXdhaXQg
c3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCku
bGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1c1Vy
bCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsK
KworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9j
a0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1l
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgs
IDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDAp
LnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3Qg
ZnJvbSBhbm90aGVyIHRlc3QgZ3JvdXAgb24gYSBidWlsZGVyIGlmIGEgYWx0ZXJuYXRpbmcgdGVz
dCBncm91cCB3aXRoIGFsbCBleGlzdGluZyBidWlsZCByZXF1ZXN0cyBmaW5pc2hlZCBzdGlsbCBu
ZWVkcyByZXRyeScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNl
cnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW01vY2tEYXRh
LmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ2Nv
bXBsZXRlZCddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9i
dWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAgICAgICAgICAgICAgICAgICAnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLF0sCisgICAgICAgICAgICAgICAgWzQwMSwg
NDAyLCA0MDEsIDQwMl0sICdhbHRlcm5hdGluZycsIHRydWUpLAorICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwKKyAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAg
ICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29u
c3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3Jk
J307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJh
YmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2Vy
SW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFibGUu
aW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAg
ICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwg
J0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxk
Ym90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisKKyAg
ICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
LnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworCisgICAgICAg
ICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmws
IE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAg
ICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwg
YnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6
IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWls
ZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgn
c29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5m
aW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRU
YWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0
YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOwor
CisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCks
ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygp
LCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxk
ZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0
Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRl
cnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdjb21w
bGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9i
dWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVk
dWxpbmcgYnVpbGQgcmVxdWVzdCBmcm9tIGFub3RoZXIgdGVzdCBncm91cCBvbiBhIGJ1aWxkZXIg
aWYgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgd2l0aCBhbGwgZXhpc3RpbmcgYnVpbGQgcmVxdWVz
dHMgZmluaXNoZWQgc3RpbGwgbmVlZHMgcmV0cnknLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGF3YWl0IFBy
b21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAnY29tcGxl
dGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0ZWQnXSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICBbJ2h0
dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIxJywgJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIyJywKKyAgICAgICAgICAgICAg
ICAgICAgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJywg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0JyxdLAorICAg
ICAgICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpLAor
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwKKyAg
ICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAg
ICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNp
bmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBw
YXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNP
bmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwg
TW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1i
dWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29s
dmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5n
dGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVy
LTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUo
eydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxk
RGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAor
ICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czog
MCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAg
ICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1v
Y2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdh
aXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRh
LnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1
ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVp
bGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDMpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2Fp
dCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5z
dGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
Mykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQu
b3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgbm90IHJldXNlIHRoZSByb290IHdoZW4gYSBidWlsZCByZXF1ZXN0IHdpdGggc2Ft
ZSBjb21taXQgc2V0IGlzIGF2YWlsYWJsZSBidXQgdGhlIGJ1aWxkIHJlcXVlc3QgaGFzIGJlZW4g
c2NoZWR1bGVkJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRk
TW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoVGVzdFNlcnZlci5kYXRhYmFzZSgpKTsKICAgICAg
ICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CiAgICAgICAgICAgICBjb25zdCBjb25maWcg
PSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoUGF0Y2hBY2NlcHRpbmdCdWlsZGVyKCk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xz
LXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMu
anMKaW5kZXggNmZjN2E3YWM1YmMzN2E0MTA0NzJmZTgyYjJjOWI1NDEwZWE4ZjRkMy4uZTA2N2I4
ZGU4MmRiYTRiMTZhMWRiMDE4YmU2NWVkMjM5MTdhYTZiYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0
aW9uLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
dG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcwpAQCAtMTQwOSw3ICsxNDA5
LDcgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRib3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CiAgICAgICAgICAgICBhc3NlcnQoIWJ1
aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVp
bGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMS9idWlsZHMvMTIzJyk7CiAgICAgICAgICAgICBh
c3NlcnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CiAKICAgICAgICAg
ICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsx
XTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJv
dC1zeW5jZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qt
c3luY2VyLmpzCmluZGV4IDg4MjJhZmI4YzBlZDIyMzgxZjc0MjM3NmFmYTMwNmRhMjljYzU4MjAu
LmVlZWEzMjQxMWI1ZTc5NzM0M2RmYTA2N2EwODY3NWYzZmRiMzcyMWQgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwpAQCAt
MTQzLDYgKzE0Myw3IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKIAogICAgICAgICBsZXQgaGFz
UGVuZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJOYW1lU3BlY2lmaWVkID0gZmFsc2U7CiAgICAgICAg
IGxldCB1c2VkV29ya2VycyA9IG5ldyBTZXQ7CisgICAgICAgIGNvbnN0IGxhdGVzdEFjdGl2ZUVu
dHJ5QnlXb3JrZXJOYW1lID0gbmV3IE1hcDsKICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdGhp
cy5fZW50cnlMaXN0KSB7CiAgICAgICAgICAgICBsZXQgZW50cnlQcmV2ZW50c05ld1JlcXVlc3Qg
PSBlbnRyeS5pc1BlbmRpbmcoKTsKICAgICAgICAgICAgIGlmIChlbnRyeS5pc0luUHJvZ3Jlc3Mo
KSkgewpAQCAtMTU1LDYgKzE1NiwyNiBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAg
ICAgICAgICAgICAgIGhhc1BlbmRpbmdCdWlsZHNXaXRob3V0V29ya2VyTmFtZVNwZWNpZmllZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgdXNlZFdvcmtlcnMuYWRkKGVudHJ5Lndvcmtlck5hbWUo
KSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW50cnkuaGFzRmluaXNoZWQoKSB8
fCBlbnRyeS5pc0luUHJvZ3Jlc3MoKSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGVudHJ5Lndvcmtlck5hbWUoKSwgJ0ZpbmlzaGVkIGVudHJ5IG11c3QgaGF2ZSBhIHdvcmtlciBu
YW1lJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFzdEZpbmlzaGVkRW50cnkgPSBsYXRlc3RB
Y3RpdmVFbnRyeUJ5V29ya2VyTmFtZS5nZXQoZW50cnkud29ya2VyTmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWxhc3RGaW5pc2hlZEVudHJ5IHx8ICtsYXN0RmluaXNoZWRFbnRyeS5idWls
ZFRhZygpIDwgK2VudHJ5LmJ1aWxkVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIGxhdGVzdEFj
dGl2ZUVudHJ5QnlXb3JrZXJOYW1lLnNldChlbnRyeS53b3JrZXJOYW1lKCksIGVudHJ5KQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgW25hbWUsIGVudHJ5XSBv
ZiBsYXRlc3RBY3RpdmVFbnRyeUJ5V29ya2VyTmFtZS5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IGZpbmlzaGVkQnVpbGRSZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKGVudHJ5
LmJ1aWxkUmVxdWVzdElkKCkpOworICAgICAgICAgICAgaWYgKCFmaW5pc2hlZEJ1aWxkUmVxdWVz
dCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChmaW5pc2hlZEJ1
aWxkUmVxdWVzdC50ZXN0R3JvdXBJZCgpID09PSBuZXdSZXF1ZXN0LnRlc3RHcm91cElkKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBGb3JG
aW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZpbmlzaGVkQnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpOwor
ICAgICAgICAgICAgaWYgKCF0ZXN0R3JvdXBGb3JGaW5pc2hlZEJ1aWxkUmVxdWVzdCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICh0ZXN0R3JvdXBGb3JGaW5pc2hl
ZEJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpICYmICF0ZXN0R3JvdXBGb3JGaW5pc2hlZEJ1aWxk
UmVxdWVzdC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB1c2VkV29ya2Vycy5hZGQobmFtZSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIXRoaXMuX3dvcmtlckxpc3QgfHwgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJO
YW1lU3BlY2lmaWVkKSB7CkBAIC0xOTIsNyArMjEzLDcgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoKCF0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQgfHwg
dGhpcy5fbGFzdENvbXBsZXRlZEJ1aWxkLmJ1aWxkVGFnKCkgPCBlbnRyeS5idWlsZFRhZygpKSAm
JiBlbnRyeS5oYXNGaW5pc2hlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFz
dENvbXBsZXRlZEJ1aWxkID0gZW50cnk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxldCBlbnRyeUxpc3QgPSBbXTsKICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpZCBpbiBlbnRyeUJ5UmVxdWVzdCkKICAgICAgICAgICAgICAgICAg
ICAgZW50cnlMaXN0LnB1c2goZW50cnlCeVJlcXVlc3RbaWRdKTsKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcwpp
bmRleCBkNjJjZGUwMjljMTc3OTE3M2M1ZjIxZWQ4NmFhZjFhMWMwM2RhOGEyLi45N2U4ODgwYjlh
N2NkNDJjMjk4NmIxODg5ZmI5YzhjMmQwMmViZDVjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCkBAIC04
NSwxMyArODUsMjIgQEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgIGNvbnN0
IHZhbGlkUmVxdWVzdHMgPSB0aGlzLl92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpOwog
ICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzQnlHcm91cCA9IEJ1aWxkYm90VHJpZ2dlcmFibGUu
X3Rlc3RHcm91cE1hcEZvckJ1aWxkUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAgICAgICAgIGxl
dCB1cGRhdGVzID0gYXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVx
dWVzdHNCeUdyb3VwKTsKLSAgICAgICAgbGV0IHJvb3RSZXVzZVVwZGF0ZXMgPSB7fQorICAgICAg
ICBsZXQgcm9vdFJldXNlVXBkYXRlcyA9IHt9OwogICAgICAgICB0aGlzLl9sb2dnZXIubG9nKCdT
Y2hlZHVsaW5nIGJ1aWxkcycpOwogICAgICAgICBjb25zdCB0ZXN0R3JvdXBMaXN0ID0gQXJyYXku
ZnJvbShidWlsZFJlcXVlc3RzQnlHcm91cC52YWx1ZXMoKSkuc29ydChmdW5jdGlvbiAoYSwgYikg
eyByZXR1cm4gYS5ncm91cE9yZGVyIC0gYi5ncm91cE9yZGVyOyB9KTsKIAotICAgICAgICBhd2Fp
dCBQcm9taXNlLmFsbCh0ZXN0R3JvdXBMaXN0Lm1hcCgoZ3JvdXApID0+IFtncm91cCwgdGhpcy5f
bmV4dFJlcXVlc3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKV0pCi0gICAgICAgICAgICAuZmlsdGVy
KChbZ3JvdXAsIHJlcXVlc3RdKSA9PiB2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0KSkKLSAgICAg
ICAgICAgIC5tYXAoKFtncm91cCwgcmVxdWVzdF0pID0+IHRoaXMuX3NjaGVkdWxlUmVxdWVzdChn
cm91cCwgcmVxdWVzdCwgcm9vdFJldXNlVXBkYXRlcykpKTsKKyAgICAgICAgYXdhaXQgUHJvbWlz
ZS5hbGwoWy4uLmJ1aWxkUmVxdWVzdHNCeUdyb3VwLmtleXMoKV0ubWFwKHRlc3RHcm91cElkID0+
IFRlc3RHcm91cC5mZXRjaEJ5SWQodGVzdEdyb3VwSWQsIHRydWUpKSk7CisgICAgICAgIGZvciAo
Y29uc3QgZ3JvdXAgb2YgdGVzdEdyb3VwTGlzdCkgeworICAgICAgICAgICAgY29uc3QgcmVxdWVz
dCA9IHRoaXMuX25leHRSZXF1ZXN0SW5Hcm91cChncm91cCwgdXBkYXRlcyk7CisgICAgICAgICAg
ICBpZiAoIXZhbGlkUmVxdWVzdHMuaGFzKHJlcXVlc3QpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBjb25zdCBzaG91bGREZWZlciA9IHRoaXMuX2RlZmVyU2NoZWR1
bGluZ1JlcXVlc3QocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoc2hvdWxkRGVmZXIpCisgICAg
ICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmxvZyhgRGVmZXIgc2NoZWR1bGluZyBidWlsZCByZXF1
ZXN0ICIke3JlcXVlc3QuaWQoKX0iIHVudGlsIGNvbXBsZXRlZCBidWlsZCByZXF1ZXN0cyBmb3Ig
cHJldmlvdXMgY29uZmlndXJhdGlvbiBtZWV0IHRoZSBleHBlY3RhdGlvbiBvciBleGhhdXN0IHJl
dHJ5LmApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Nj
aGVkdWxlUmVxdWVzdChncm91cCwgcmVxdWVzdCwgcm9vdFJldXNlVXBkYXRlcyk7CisgICAgICAg
IH0KIAogICAgICAgICAvLyBQdWxsIGFsbCBidWlsZGJvdHMgZm9yIHRoZSBzZWNvbmQgdGltZSBz
aW5jZSB0aGUgcHJldmlvdXMgc3RlcCBtYXkgaGF2ZSBzY2hlZHVsZWQgbW9yZSBidWlsZHMKICAg
ICAgICAgdXBkYXRlcyA9IGF3YWl0IHRoaXMuX3B1bGxCdWlsZGJvdE9uQWxsU3luY2VycyhidWls
ZFJlcXVlc3RzQnlHcm91cCk7CkBAIC0xMjMsMTEgKzEzMiwzNiBAQCBjbGFzcyBCdWlsZGJvdFRy
aWdnZXJhYmxlIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBhd2FpdCB0aGlzLl9zY2hlZHVsZVJlcXVlc3RJZldvcmtlcklzQXZhaWxhYmxlKGJ1aWxk
UmVxdWVzdCwgdGVzdEdyb3VwLnJlcXVlc3RzLAorICAgICAgICByZXR1cm4gdGhpcy5fc2NoZWR1
bGVSZXF1ZXN0SWZXb3JrZXJJc0F2YWlsYWJsZShidWlsZFJlcXVlc3QsIHRlc3RHcm91cC5yZXF1
ZXN0cywKICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkgPyB0ZXN0R3JvdXAuYnVp
bGRTeW5jZXIgOiB0ZXN0R3JvdXAudGVzdFN5bmNlciwKICAgICAgICAgICAgIGJ1aWxkUmVxdWVz
dC5pc0J1aWxkKCkgPyB0ZXN0R3JvdXAuYnVpbGRXb3JrZXJOYW1lIDogdGVzdEdyb3VwLnRlc3RX
b3JrZXJOYW1lKTsKICAgICB9CiAKKyAgICBfZGVmZXJTY2hlZHVsaW5nUmVxdWVzdChidWlsZFJl
cXVlc3QpCisgICAgeworICAgICAgICBpZiAoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBidWlsZFJl
cXVlc3QudGVzdEdyb3VwKCk7CisgICAgICAgIGlmICh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUo
KSAhPT0gJ3NlcXVlbnRpYWwnKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGNvbnN0IG9yZGVyZWRCdWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLm9yZGVyZWRCdWlsZFJlcXVl
c3RzKCk7CisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdEluZGV4ID0gb3JkZXJlZEJ1aWxkUmVx
dWVzdHMuaW5kZXhPZihidWlsZFJlcXVlc3QpOworICAgICAgICBpZiAoYnVpbGRSZXF1ZXN0SW5k
ZXggPD0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBidWls
ZFJlcXVlc3RCZWZvcmVDdXJyZW50ID0gb3JkZXJlZEJ1aWxkUmVxdWVzdHNbYnVpbGRSZXF1ZXN0
SW5kZXggLSAxXTsKKyAgICAgICAgaWYgKGJ1aWxkUmVxdWVzdEJlZm9yZUN1cnJlbnQuaXNCdWls
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChidWlsZFJlcXVl
c3RCZWZvcmVDdXJyZW50LmNvbW1pdFNldCgpID09PSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRlc3RHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkgPiB0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQo
YnVpbGRSZXF1ZXN0QmVmb3JlQ3VycmVudC5jb21taXRTZXQoKSkKKyAgICAgICAgICAgIC5maWx0
ZXIocmVxdWVzdCA9PiByZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuaGFzQ29tcGxldGVkKCkp
Lmxlbmd0aDsKKyAgICB9CisKICAgICBfdmFsaWRhdGVSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKQog
ICAgIHsKICAgICAgICAgY29uc3QgdGVzdFBsYXRmb3JtUGFpcnMgPSB7fTsKQEAgLTIyMCw3ICsy
NTQsNiBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAgICByZXR1cm4gdXBkYXRlczsKICAgICB9
CiAKQEAgLTIzNyw3ICsyNzAsNyBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNB
dmFpbGFibGUobmV4dFJlcXVlc3QsIHJlcXVlc3RzSW5Hcm91cCwgc3luY2VyLCB3b3JrZXJOYW1l
KQorICAgIGFzeW5jIF9zY2hlZHVsZVJlcXVlc3RJZldvcmtlcklzQXZhaWxhYmxlKG5leHRSZXF1
ZXN0LCByZXF1ZXN0c0luR3JvdXAsIHN5bmNlciwgd29ya2VyTmFtZSkKICAgICB7CiAgICAgICAg
IGlmICghbmV4dFJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVx
dWVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzLmpzCmluZGV4IDkwNWJhMjI0NWNiMDJhZTRlOTMzMTI2Yjc4OTZhNmIy
OGEzMjFlNDUuLjgzOTNmMTUwYmUwYWQ4ZTZkYzc0MmUzYjgzM2M1OWJiN2NiNjBmMjcgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVp
bGQtcmVxdWVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3Jl
dHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcwpAQCAtOSwzOCArOSw4NyBAQCBhc3luYyBmdW5j
dGlvbiBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVk
UmVxdWVzdHModGVzdAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0gMDsKLSAgICAgICAgbGV0IGhhc0Nv
bXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSB0cnVlOwotICAgICAgICBsZXQg
aGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOwotICAgICAgICBmb3IgKGNvbnN0IGNv
bW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNv
bW1pdFNldCkuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7
Ci0KLSAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRS
ZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRl
ZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAoIWNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50
KQotICAgICAgICAgICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRT
ZXQgPSBmYWxzZTsKLQotICAgICAgICAgICAgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFj
aENvbW1pdFNldCAmPSAoY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPiAwKTsKLSAgICAgICAg
ICAgIGNvbnN0IHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmls
dGVyKChidWlsZFJlcXVlc3QpID0+ICFidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSkubGVuZ3Ro
OwotICAgICAgICAgICAgLy8gInBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50IiBtaWdodCBiZSBs
YXJnZXIgdGhhbiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIGFzIHVzZXIgbWF5
IGFkZCBidWlsZCByZXF1ZXN0cyBtYW51YWxseS4KLSAgICAgICAgICAgIGNvbnN0IHBvdGVudGlh
bGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgKyB1bmZpbmlz
aGVkQnVpbGRSZXF1ZXN0Q291bnQ7Ci0gICAgICAgICAgICBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0
Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQsIHRlc3RHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCk7Ci0K
LSAgICAgICAgICAgIGlmICh1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQpCi0gICAgICAgICAg
ICAgICAgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRydWU7CisgICAgICAgIHN3aXRjaCh0
ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSAnYWx0ZXJuYXRp
bmcnOgorICAgICAgICAgICAgICAgIGF3YWl0IGNyZWF0ZUFsdGVybmF0aW5nUmV0cmllc0ZvclRl
c3RHcm91cCh0ZXN0R3JvdXAsIG1heGltdW1SZXRyeUZhY3Rvcik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzoKKyAgICAgICAgICAgICAgICBh
d2FpdCBjcmVhdGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91cCh0ZXN0R3JvdXAsIG1heGlt
dW1SZXRyeUZhY3Rvcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAnSW52YWxpZFJlcGV0
aXRpb25UeXBlJykKICAgICAgICAgfQotICAgICAgICBjb25zdCB3aWxsRXhjZWVkTWF4aW11bVJl
dHJ5ID0gdGVzdEdyb3VwLnJlcGV0aXRpb25Db3VudCgpICsgbWF4TWlzc2luZ0J1aWxkUmVxdWVz
dENvdW50ID4gbWF4aW11bVJldHJ5RmFjdG9yICogdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKTsKKyAgICB9Cit9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQobWF4TWlzc2luZ0J1
aWxkUmVxdWVzdENvdW50IDw9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwot
ICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4
aW11bVJldHJ5ICYmIGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1
aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKK2FzeW5j
IGZ1bmN0aW9uIGNyZWF0ZUFsdGVybmF0aW5nUmV0cmllc0ZvclRlc3RHcm91cCh0ZXN0R3JvdXAs
IG1heGltdW1SZXRyeUZhY3RvcikKK3sKKyAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENv
dW50ID0gMDsKKyAgICBsZXQgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNl
dCA9IHRydWU7CisgICAgbGV0IGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgPSBmYWxzZTsKKyAg
ICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
KSB7CisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAucmVxdWVzdHNGb3JD
b21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0
LmlzVGVzdCgpKTsKIAotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYm
ICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVh
Y2hDb21taXRTZXQpIHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRNb3JlQnVpbGRS
ZXF1ZXN0cyhtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOwotICAgICAgICAgICAgY29uc3Qg
YW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOwotICAgICAgICAgICAg
Y29uc29sZS5sb2coYEFkZGVkICR7bWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50fSBidWlsZCBy
ZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0YXNrOiAke2Fu
YWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOwotICAgICAgICB9
Ci0gICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygp
OworICAgICAgICBjb25zdCBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVz
dHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5oYXNDb21wbGV0ZWQoKSku
bGVuZ3RoOworICAgICAgICBpZiAoIWNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50KQorICAgICAg
ICAgICAgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IGZhbHNlOwor
CisgICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgJj0gKGNv
bXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID4gMCk7CisgICAgICAgIGNvbnN0IHVuZmluaXNoZWRC
dWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+
ICFidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSkubGVuZ3RoOworICAgICAgICAvLyAicG90ZW50
aWFsbHlTdWNjZXNzZnVsQ291bnQiIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRlc3RHcm91cC5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCkgYXMgdXNlciBtYXkgYWRkIGJ1aWxkIHJlcXVlc3RzIG1hbnVh
bGx5LgorICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9IGNvbXBsZXRl
ZEJ1aWxkUmVxdWVzdENvdW50ICsgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50OworICAgICAg
ICBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQsIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRp
YWxseVN1Y2Nlc3NmdWxDb3VudCk7CisKKyAgICAgICAgaWYgKHVuZmluaXNoZWRCdWlsZFJlcXVl
c3RDb3VudCkKKyAgICAgICAgICAgIGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgPSB0cnVlOwor
ICAgIH0KKyAgICBjb25zdCB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gdGVzdEdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKS5zb21lKGNvbW1pdFNldCA9PgorICAgICAgICB0ZXN0R3JvdXAucmVw
ZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgKyBtYXhNaXNzaW5nQnVpbGRSZXF1
ZXN0Q291bnQgPiBtYXhpbXVtUmV0cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpKTsKKworICAgIGNvbnNvbGUuYXNzZXJ0KG1heE1pc3NpbmdCdWlsZFJlcXVlc3RD
b3VudCA8PSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKKyAgICBpZiAobWF4
TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhh
c1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVh
Y2hDb21taXRTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtYXhNaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzQ29tcGxldGVkQnVp
bGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCkgeworICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuYWRk
TW9yZUJ1aWxkUmVxdWVzdHMobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50KTsKKyAgICAgICAg
Y29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOworICAgICAg
ICBjb25zb2xlLmxvZyhgQWRkZWQgJHttYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnR9IGJ1aWxk
IHJlcXVlc3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7
YW5hbHlzaXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7CisgICAgfQor
ICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworfQor
Cithc3luYyBmdW5jdGlvbiBjcmVhdGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91cCh0ZXN0
R3JvdXAsIG1heGltdW1SZXRyeUZhY3RvcikKK3sKKyAgICBsZXQgbWlzc2luZ0J1aWxkUmVxdWVz
dENvdW50ID0gMDsKKyAgICBsZXQgd2lsbEV4Y2VlZE1heGltdW1SZXRyeSA9IGZhbHNlOworCisg
ICAgY29uc29sZS5hc3NlcnQoQXJyYXkuZnJvbSh0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpKS5ldmVyeSgoY29tbWl0U2V0LCBpbmRleCwgbGlzdCkgPT4KKyAgICAgICAgIWluZGV4IHx8
IE1hdGgubWluKC4uLih0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQobGlzdFtpbmRleCAt
IDFdKS5tYXAoYnVpbGRSZXF1ZXN0ID0+IGJ1aWxkUmVxdWVzdC5vcmRlcigpKSkpCisgICAgICAg
IDwgTWF0aC5taW4oLi4uKHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQp
Lm1hcChidWlsZFJlcXVlc3QgPT4gYnVpbGRSZXF1ZXN0Lm9yZGVyKCkpKSkKKyAgICApKTsKKyAg
ICBjb25zdCBmaXJzdENvbW1pdFNldFRvUmV0cnkgPSB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpLmZpbmQoY29tbWl0U2V0ID0+IHsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9
IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigoYnVpbGRS
ZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICBjb25zdCBjb21wbGV0
ZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3Qp
ID0+IGJ1aWxkUmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoOworICAgICAgICBpZiAoY29t
cGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPj0gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCB1bmZpbmlz
aGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0
KSA9PiAhYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpLmxlbmd0aDsKKyAgICAgICAgY29uc3Qg
cG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQgPSBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCAr
IHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudDsKKyAgICAgICAgbWlzc2luZ0J1aWxkUmVxdWVz
dENvdW50ID0gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlhbGx5
U3VjY2Vzc2Z1bENvdW50OworICAgICAgICB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gTWF0aC5t
YXgoMCwgbWlzc2luZ0J1aWxkUmVxdWVzdENvdW50KSArIHRlc3RHcm91cC5yZXBldGl0aW9uQ291
bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSA+IG1heGltdW1SZXRyeUZhY3RvciAqIHRlc3RHcm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0p
OworCisgICAgaWYgKCF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGZpcnN0Q29tbWl0U2V0VG9S
ZXRyeSAmJiBtaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPiAwKSB7CisgICAgICAgIGF3YWl0IHRl
c3RHcm91cC5hZGRNb3JlQnVpbGRSZXF1ZXN0cyhtaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQsIGZp
cnN0Q29tbWl0U2V0VG9SZXRyeS5pZCgpKTsKKyAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0g
YXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOworICAgICAgICBjb25zb2xlLmxvZyhgQWRkZWQg
JHttYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnR9IGJ1aWxkIHJlcXVlc3QocykgdG8gIiR7dGVz
dEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlzaXNUYXNrLmlkKCl9IC0g
IiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7CiAgICAgfQorCisgICAgaWYgKHdpbGxFeGNlZWRN
YXhpbXVtUmV0cnkpCisgICAgICAgIGF3YWl0IHRlc3RHcm91cC5jYW5jZWxQZW5kaW5nUmVxdWVz
dHMoKTsKKyAgICBlbHNlIGlmKCFmaXJzdENvbW1pdFNldFRvUmV0cnkpCisgICAgICAgIGF3YWl0
IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOwogfQogCiBpZiAodHlw
ZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwppbmRleCA4ZDI4
YWM0ZmFmYzQ4ZWFhMTc4MmM1ZGYxZWFiNzc3MDkyZDg3ZjE0Li4yMzcyOGIzOGM3MTQ1ZWUwY2Ri
MjQ2MzgxNzY5NzUwNjVlMmNlMDViIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMKQEAgLTMxOCw3ICsz
MTgsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdh
aXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFz
aycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmly
bScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScs
IHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25U
eXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46
IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6
IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lv
bi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9u
OiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzQwLDcgKzM0MCw3IEBAIGRlc2NyaWJlKCdBbmFs
eXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0
LCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwg
bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywK
ICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAn
Q29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAg
ICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZp
c2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9
fSwKQEAgLTM2Miw3ICszNjIsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewog
ICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtYW5hbHlzaXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEs
IHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246
IHRydWUsCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtu
YW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRy
dWUsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0
UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMn
LCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjog
J3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAog
ICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEn
LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtNDIzLDcgKzQyMyw3IEBA
IGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVw
ZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRp
dGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdh
bHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVz
dEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAg
ICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBv
d25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGws
IHBhdGNoOiBudWxsfX0sCkBAIC00NTcsMTEgKzQ1NywxMSBAQCBkZXNjcmliZSgnQW5hbHlzaXNU
YXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIGFuYWx5c2lzIHRhc2sg
d2l0aCBjb25maXJtaW5nIHJlcGV0aXRpb24gY291bnQgc3BlY2lmaWVkJywgKCkgPT4gewogICAg
ICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IG1vY2tTdGFydEFuZEVuZFBv
aW50cygpOwotICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0
UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsIHRydWUpOworICAgICAgICAgICAgQW5hbHlz
aXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScs
IDQsIHRydWUsICdhbHRlcm5hdGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0
aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCi0gICAgICAgICAgICAgICAg
c3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgd29ya2VyTmFtZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3
b3JkOiAncGFzc3dvcmQnLAorICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIs
IHdvcmtlck5hbWU6ICd3b3JrZXInLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgcmVwZXRp
dGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTog
J0NvbmZpcm0nLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHty
ZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6
IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJl
dmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFu
YWx5emVyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVh
c3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzCmluZGV4IDA3ZmNiM2RiM2RlNmIxMmU2Yjk0
N2NjNjMwY2QwN2JiNmEwNGZiYmEuLjA5MDdhMGIwMTZhMDUxNDgzNDdkY2IzZjQ3N2UyYTkyNTk4
YWFmYmIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21l
YXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMKQEAgLTIz
NSw2ICsyMzUsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsK
ICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVz
dEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAog
ICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2aXNpb246IDM1LCBvd25l
clJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAgICAgICAgICAgICB7JzEx
Jzoge3JldmlzaW9uOiA0NCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAg
ICAgICAgICAgIH0pOwpAQCAtMjk0LDYgKzI5NSw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNl
dEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwK
ICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCiAgICAgICAgICAgICAg
ICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5
cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6
IHtyZXZpc2lvbjogMzUsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAg
ICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246IDQ0LCBvd25lclJldmlzaW9uOiBudWxs
LCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7CkBAIC01MjYsNiArNTI4LDcgQEAgZGVz
Y3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAg
cmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25m
aXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICBy
ZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiA0MCwgb3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogNDks
IG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAgICAgICB9KTsKQEAg
LTYxOCw2ICs2MjEsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+
IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAg
dGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcn
LAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2aXNpb246IDMsIG93
bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsn
MTEnOiB7cmV2aXNpb246IDgsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAg
ICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcwppbmRleCAwODJkODBkY2E1ZWY4ZjA4MzU4OWM2NTQxYmEyNDU2YWZkMTI4NjI4Li42Mjgz
NDUyZTMwMWQwZGI3MTJkMDM5YTMzNDM3MzcwMDc4N2NiZWFhIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMt
dGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCkBAIC0xNCw2ICsxNCw4IEBAIGZ1bmN0aW9u
IHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICBjb25zdCBtYXlOZWVkTW9yZVJlcXVlc3Rz
ID0gY29uZmlnLm1heU5lZWRNb3JlUmVxdWVzdHM7CiAgICAgY29uc3QgaGlkZGVuID0gY29uZmln
LmhpZGRlbjsKICAgICBjb25zdCBzdGF0dXNMaXN0ID0gY29uZmlnLnN0YXR1c0xpc3Q7CisgICAg
Y29uc3QgY29tbWl0U2V0TGlzdCA9IGNvbmZpZy5jb21taXRTZXRMaXN0IHx8IFsnNDI1NScsICc0
MjU2JywgJzQyNTUnLCAnNDI1NicsICc0MjU1JywgJzQyNTYnXTsKKyAgICBjb25zdCByZXBldGl0
aW9uVHlwZSA9IGNvbmZpZy5yZXBldGl0aW9uVHlwZSB8fCAnYWx0ZXJuYXRpbmcnOwogCiAgICAg
cmV0dXJuIHsKICAgICAgICAgInRlc3RHcm91cHMiOiBbewpAQCAtMjksNyArMzEsOCBAQCBmdW5j
dGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgICAgICAgICAiY29tbWl0U2V0cyI6
IFsiNDI1NSIsICI0MjU2Il0sCiAgICAgICAgICAgICAibm90aWZpY2F0aW9uU2VudEF0IjogbnVs
bCwKICAgICAgICAgICAgIGluaXRpYWxSZXBldGl0aW9uQ291bnQsCi0gICAgICAgICAgICBtYXlO
ZWVkTW9yZVJlcXVlc3RzCisgICAgICAgICAgICBtYXlOZWVkTW9yZVJlcXVlc3RzLAorICAgICAg
ICAgICAgcmVwZXRpdGlvblR5cGUKICAgICAgICAgfV0sCiAgICAgICAgICJidWlsZFJlcXVlc3Rz
IjogW3sKICAgICAgICAgICAgICJpZCI6ICIxNjk4NSIsCkBAIC0zOCw3ICs0MSw3IEBAIGZ1bmN0
aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIz
MSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVy
IjogIjAiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAgICAgICAgICAgICJj
b21taXRTZXQiOiBjb21taXRTZXRMaXN0WzBdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1
c0xpc3RbMF0sCiAgICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6
IG51bGwsCkBAIC01MCw3ICs1Myw3IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcp
IHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3Vw
IjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjEiLAotICAgICAgICAgICAgImNvbW1p
dFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzFd
LAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMV0sCiAgICAgICAgICAgICAidXJs
IjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC02Miw3ICs2NSw3IEBAIGZ1
bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9y
ZGVyIjogIjIiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAgICAgICAgICAg
ICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzJdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0
YXR1c0xpc3RbMl0sCiAgICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWls
ZCI6IG51bGwsCkBAIC03NCw3ICs3Nyw3IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25m
aWcpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdy
b3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNv
bW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0
WzNdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10sCiAgICAgICAgICAgICAi
dXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC04NSw4ICs4OCw4IEBA
IGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKICAgICAgICAgICAgICJ0ZXN0Ijog
Ijg0NCIsCiAgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAogICAgICAgICAgICAgInRlc3RH
cm91cCI6ICIyMTI4IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJj
b21taXRTZXQiOiAiNDI1NSIsCisgICAgICAgICAgICAib3JkZXIiOiAiNCIsCisgICAgICAgICAg
ICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFs0XSwKICAgICAgICAgICAgICJzdGF0dXMiOiBz
dGF0dXNMaXN0WzRdLAogICAgICAgICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVp
bGQiOiBudWxsLApAQCAtOTcsOCArMTAwLDggQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNv
bmZpZykgewogICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKICAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAg
Im9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAg
ICAgICJvcmRlciI6ICI1IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0
WzVdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNV0sCiAgICAgICAgICAgICAi
dXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC0xNTUsNyArMTU4LDcg
QEAgZGVzY3JpYmUoJ2NyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dp
dGhGYWlsZWRSZXF1ZXN0cycsICgpID0+IHsKICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CiAKICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9w
cml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2Vy
UGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxfSk7CisgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3Jr
ZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRD
b3VudDogMSwgY29tbWl0U2V0OiBudWxsfSk7CiAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
KTsKIAogICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CkBAIC0x
NzIsNyArMTc1LDcgQEAgZGVzY3JpYmUoJ2NyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9y
VGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cycsICgpID0+IHsKICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAKICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKLSAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9u
YW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50
OiAyfSk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtl
ck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDog
JzIxMjgnLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBudWxsfSk7CiAgICAgICAgIHJlcXVlc3Rz
WzBdLnJlc29sdmUoKTsKIAogICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1
ZXN0KCk7CkBAIC0yNDksNCArMjUyLDExNiBAQCBkZXNjcmliZSgnY3JlYXRlQWRkaXRpb25hbEJ1
aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywgKCkgPT4gewogICAg
ICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVk
UmVxdWVzdHModGVzdEdyb3VwcywgMyk7CiAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDApOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1vcmUgYnVpbGQg
cmVxdWVzdCBvbiBBIGNvbmZpZyB3aGVuIG9uZSBBIGNvbmZpZyByZXF1ZXN0IGZhaWxlZCBmb3Ig
dGVzdCBncm91cCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNv
bnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxS
ZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAg
ICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAg
ICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJydW5u
aW5nIiwgInNjaGVkdWxlZCIsICJwZW5kaW5nIl0sCisgICAgICAgICAgICBjb21taXRTZXRMaXN0
OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119OworCisg
ICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNo
ZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0
c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7CisgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7
CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6
ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgn
LCBhZGRDb3VudDogMSwgY29tbWl0U2V0OiAnNDI1NSd9KTsKKyAgICAgICAgcmVxdWVzdHNbMF0u
cmVzb2x2ZSgpOworCisgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgYWRkIG9uZSBtb3JlIGJ1aWxkIHJlcXVlc3Qgb24gQSBj
b25maWcgd2hlbiBvbmUgQSBjb25maWcgcmVxdWVzdCBmYWlsZWQgaW4gc2VxdWVudGlhbCBtb2Rl
JywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNO
b3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9y
ZVJlcXVlc3RzOiB0cnVlLAorICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlvblR5
cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJmYWlsZWQiLCAicnVubmluZyIsICJzY2hlZHVsZWQiLCAicGVuZGluZyJd
LAorICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0
MjU2JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVz
dEdyb3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0
R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAg
Y3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVl
c3RzKHRlc3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29y
ZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogJzQy
NTUnfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAn
L2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHJ5
IEEgY29uZmlnIGZpcnN0IGV2ZW4gaWYgQiBjb25maWcgaGFzIGZhaWxlZCBidWlsZCBpbiBzZXF1
ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZp
ZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCBy
ZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJj
b21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwg
InJ1bm5pbmciXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1Jywg
JzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9
IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7
CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhG
YWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29y
a2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21t
aXRTZXQ6ICc0MjU1J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCBhZGQgb25lIG1vcmUgYnVpbGQgcmVxdWVzdCBvbiBCIGNvbmZpZyBhbmQgY2xlYXIgbWF5
TmVlZE1vcmVSZXF1ZXN0IHdoZW4gb25lIEIgY29uZmlnIHJlcXVlc3QgZmFpbGVkIGluIHNlcXVl
bnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmln
ID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywg
bWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJl
cGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0
ZWQiLCAiZmFpbGVkIl0sCisgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1
NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgIGNvbnN0IGRh
dGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgY29uc3QgdGVz
dEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRh
dGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNX
aXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7CisgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScs
IHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMSwg
Y29tbWl0U2V0OiAnNDI1Nid9KTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisg
ICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICB9KTsKKworICAgIGl0
KCdzaG91bGQgY2FuY2VsIGFueSBwZW5kaW5nIGJ1aWxkcyBpZiB0ZXN0IGdyb3VwIHdpbGwgZXhj
ZWVkIG1heGltdW0gcmV0cnkgaW4gc2VxdWVudGlhbCBtb2RlJywgYXN5bmMgKCkgPT4geworICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBp
bml0aWFsUmVwZXRpdGlvbkNvdW50OiAyLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAg
ICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywKKyAg
ICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAicGVu
ZGluZyIsICJwZW5kaW5nIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6
IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0MjU2JywgJzQyNTYnXX07CisKKyAg
ICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hl
ZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3Rz
Rm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAyKTsKKyAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwor
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAn
d29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4Jywg
Y2FuY2VsOiB0cnVlfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICB9KTsK
KworICAgIGl0KCdzaG91bGQgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0IGZsYWcgd2hlbiBpbml0
aWFsIHJlcXVlc3RlZCByZXBldGl0aW9uIGlzIHNhdGlzZmllZCBpbiBzZXF1ZW50aWFsIG1vZGUn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05v
dGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3Jl
UmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlw
ZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAi
Y29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCJd
LAorICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0
MjU2JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVz
dEdyb3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0
R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAg
Y3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVl
c3RzKHRlc3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3Jk
OiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0p
OworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgfSk7CiB9KTsKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3Rz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVz
dHMuanMKaW5kZXggNWFhOTFlOGFhMDJlMTFhNjY0NTFkMzFkOTYzNjk2Y2VkOGQ0OTgzZS4uNDgw
NzZlNWE4ZDRlMjcwYjVmZmNhNWQ0OWY2MTYyMzAwNWRkYjdhNyAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMK
QEAgLTI0OSw3ICsyNDksNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlzSGlkZGVuKCksIGZhbHNlKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCgrZ3JvdXAuY3JlYXRlZEF0KCksIDE0NTg2ODg1MTQwMDAp
OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBzYW1w
bGVUZXN0R3JvdXAoKVsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCAvIDIpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgc2FtcGxlVGVzdEdy
b3VwKClbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGggLyAyKTsKICAgICAgICAgICAgIGFzc2VydC5v
ayhncm91cC5oYXNQZW5kaW5nKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5oYXNG
aW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAuaGFzU3RhcnRlZCgpKTsK
QEAgLTQ2Miw3ICs0NjIsNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJr
aXQsICcxOTE2MjMnKTsKICAgICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5
KE1vY2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeSwgJzgwMjI5Jyk7CiAKLSAgICAgICAgICAgIGNv
bnN0IHByb21pc2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUtdGFzaycsIE1vY2tN
b2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29tZS1ncm91cCcsIDQs
IFtzZXQxLCBzZXQyXSwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gVGVzdEdy
b3VwLmNyZWF0ZVdpdGhUYXNrKCdzb21lLXRhc2snLCBNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwg
TW9ja01vZGVscy5zb21lVGVzdCwgJ3NvbWUtZ3JvdXAnLCA0LCBbc2V0MSwgc2V0Ml0sIHRydWUs
ICdhbHRlcm5hdGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzFd
LnJlc29sdmUoewpAQCAtNDc1LDcgKzQ3NSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJdLmRhdGEs
IHt0YXNrTmFtZTogJ3NvbWUtdGFzaycsIG5hbWU6ICdzb21lLWdyb3VwJywgcGxhdGZvcm06IDY1
LCB0ZXN0OiAxLAogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwgcmV2aXNpb25T
ZXRzOiBbeycxMSc6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246
ICIxOTE2MjIifSwKICAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19LCB7JzExJzoge293bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMyJ9LAotICAgICAgICAgICAg
ICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9u
OiAiODAyMjkifX1dLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdG9rZW46ICdhYmMnfSk7Cisg
ICAgICAgICAgICAgICAgICAgICcxNic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVs
bCwgcmV2aXNpb246ICI4MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0
aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAgICAgICAg
ICB0YXNrSWQ6IDEyMywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426287</attachid>
            <date>2021-04-16 15:53:53 -0700</date>
            <delta_ts>2021-04-19 05:42:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210416155352.patch</filename>
            <type>text/plain</type>
            <size>168602</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTMzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjN2ZiYmEwY2Q4NDg2MWQ2MTkwOWE5YmFlYzgwOGM1ZDM0ZWQ1NjYwLi44MjUxZGNmNGQ4
MGNmY2JjYjYxN2M1OGYwNmFhZjViYWMxY2E4YjgwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTUgQEAKKzIwMjEtMDQtMTUgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlw
ZScgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJyB0YWJsZSB0byBzdG9yZSByZXBldGl0aW9uIHR5
cGUgd2hpY2ggZGVmYXVsdHMgdG8gJ2FsdGVybmF0aW5nJy4KKyAgICAgICAgQWRkIHN1cHBvcnQg
dG8gc2NoZWR1bGUgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nIHdoaWNoIHJ1bnMgYWxsIEEgcnVu
cyBiZWZvcmUgQiBydW5zLCB3aGVyZWFzIHByZXZpb3VzbHkgd2Ugb25seQorICAgICAgICBzdXBw
b3J0IGFsdGVybmF0aW5nIEEgYW5kIEIgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBydW5zLgorICAg
ICAgICBBZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKyAgICAg
ICAgVXBkYXRlIHN5bmNpbmcgc2NyaXB0IHRvIG5vdCBwcm9jZWVkIHdpdGggbmV4dCBjb25maWd1
cmF0aW9uIHVudGlsIGN1cnJlbnQgY29uZmlndXJhdGlvbiBtZWV0cyBpbml0aWFsIHJlcXVlc3Rl
ZAorICAgICAgICByZXBldGl0aW9uIGNvdW50IG9yIGV4Y2VlZCByZXRyeS4KKyAgICAgICAgRml4
IGEgcG90ZW50aWFsIHJhY2UgaW4gc3luY2luZyBzY3JpcHQgdGhhdCAnUHJvbWlzZS5hbGwnIG1h
eSBjYXVzZSB0ZXN0IGdyb3VwIG5vdCBzY2hlZHVsZWQgaW4gb3JkZXIgLgorICAgICAgICBGaXgg
YSBidWcgaW4gc3luY2luZyBzY3JpcHQgdGhhdCB3b3JrZXIgbWlnaHQgYmUgdGFrZW4gYXdheSBi
ZWZvcmUgc2NoZWR1bGluZyByZXRyeSBmb3IgbGFzdCBidWlsZCByZXF1ZXN0LgorCisgICAgICAg
ICogaW5pdC1kYXRhYmFzZS5zcWw6IEFkZGVkICd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJyBm
aWVsZCB0byAnYW5hbHlzaXNfdGVzdF9ncm91cHMnIHRhYmxlLgorICAgICAgICAqIG1pZ3JhdGUt
ZGF0YWJhc2Uuc3FsOiBVcGRhdGVkIG1pZ3JhdGlvbiBzY3JpcHQgdG8gY29uZGl0aW9uYWxseSBh
ZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZpZWxkLgorICAgICAgICAqIHB1YmxpYy9h
cGkvdGVzdC1ncm91cHMucGhwOiBBZGRlZCAncmVwZXRpdGlvblR5cGUnIGZpZWxkIGluIGFwaSBy
ZXR1cm4gdmFsdWUuCisgICAgICAgICogcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0
Y2hlci5waHA6IEZldGNoaW5nIGJ1aWxkIHJlcXVlc3RzIHVuZGVyIGEgdHJpZ2dlcmFibGUgc2hv
dWxkIGluY2x1ZGUgdGVzdAorICAgICAgICBncm91cCB3aXRoIGFsbCB0ZXN0IGdyb3VwcyBmaW5p
c2hlZCBidXQgc3RpbGwgbmVlZCByZXRyeS4gVGhpcyB3aWxsIGFsbG93IHN5bmNpbmcgc2NyaXB0
IHRvIHJlc29sdmUgdGhlIGJ1aWxkCisgICAgICAgIHJlcXVlc3QgYnkgSUQgYW5kIGJsb2NrIG90
aGVyIHJlcXVlc3QgdG8gYmUgc2NoZWR1bGVkIG9uIHRoZSBidWlsZGVyLgorICAgICAgICAqIHB1
YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwOiBBZGRlZCBjb2RlIHRvIGNyZWF0
ZSBidWlsZCByZXF1ZXN0cyBiYXNlZCBvbiB0ZXN0IG1vZGUuCisgICAgICAgICogcHVibGljL3By
aXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHA6IEFkZGVkIHN1cHBvcnQgdG8gb25s
eSBhZGQgYnVpbGQgcmVxdWVzdHMgdG8gb25lIGNvbW1pdCBzZXQuCisgICAgICAgICogcHVibGlj
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocDogQWRkZWQgJ3JlcGV0aXRp
b25UeXBlJyBzdXBwb3J0LgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
dGVzdC1ncm91cC5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAg
KiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwOgorICAgICAgICAq
IHB1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzOgorICAgICAgICAqIHB1Ymxp
Yy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qczog
QWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAoQ3VzdG9tQ29uZmlndXJh
dGlvblRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0VGVzdGluZyk6CisgICAgICAgICogcHVi
bGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzOgorICAgICAgICAoVGVzdEdyb3Vw
Rm9ybSk6CisgICAgICAgIChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFk
b3dUcmVlKToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnJlbmRlcik6CisgICAg
ICAgIChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5yZW5kZXJSZXBldGl0aW9uVHlwZUV4cGxhbmF0
aW9uKToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0VGVzdGluZyk6Cisg
ICAgICAgICogcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzOgorICAgICAgICAoQW5h
bHlzaXNUYXNrLmFzeW5jIGNyZWF0ZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2spOgorICAgICAg
ICAqIHB1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qczoKKyAgICAgICAgKEJ1aWxkUmVx
dWVzdC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKTogQWxsb3cgYnVpbGQgcmVxdWVzdCBvcmRl
ciB0byBiZSB1cGRhdGVkLgorICAgICAgICAoQnVpbGRSZXF1ZXN0LmNvbnN0cnVjdEJ1aWxkUmVx
dWVzdHNGcm9tRGF0YSk6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAgICAgKFRlc3RHcm91cCk6CisgICAgICAg
IChUZXN0R3JvdXAucHJvdG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAgICAgIChUZXN0R3Jv
dXAucHJvdG90eXBlLnJlcGV0aXRpb25UeXBlKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5
cGUuX2xhc3RSZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KTogUmVmYWN0b3JlZCBgcmVwZXRpdGlvbkNvdW50YCBzaW5jZSBy
ZXBldGl0aW9uIG1heSBiZSBkaWZmZXJlbnQKKyAgICAgICAgYmV0d2VlbiBjb25maWd1cmF0aW9u
cy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaGFzUmV0cnkpOiBBIGhlbHBlciBmdW5j
dGlvbiB0byB0ZWxsIGlmIGEgdGVzdCBncm91cCBoYXMgcmV0cnkgcnVucy4KKyAgICAgICAgKFRl
c3RHcm91cC5wcm90b3R5cGUucmVxdWVzdGVkQ29tbWl0U2V0cyk6CisgICAgICAgIChUZXN0R3Jv
dXAuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzLnNldCByZXR1cm4pOgorICAgICAgICAoVGVz
dEdyb3VwLl9jb21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0cy5zZXQgcmVxdWVzdGVkQ29tbWl0U2V0
cyk6CisgICAgICAgIChUZXN0R3JvdXAuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzLmNvbnN0
LnNldCByZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5fY29tcHV0ZVJlcXVlc3RlZENvbW1p
dFNldHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBjYW5jZWxQZW5kaW5n
UmVxdWVzdHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBhZGRNb3JlQnVp
bGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgY3JlYXRlV2l0aFRhc2spOgor
ICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKToK
KyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6Cisg
ICAgICAgIChUZXN0R3JvdXAuYXN5bmMgZmV0Y2hCeUlkKTogQWRkZWQgc3VwcG9ydCB0byBmZXRj
aCB0ZXN0IGdyb3VwIGJ5IElELgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5fb3JkZXJl
ZEJ1aWxkUmVxdWVzdHMpOiBSZW5hbWVkIHRvIGBvcmRlcmVkQnVpbGRSZXF1ZXN0c2AuCisgICAg
ICAgICogcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qczoKKyAgICAgICAgKEFu
YWx5c2lzVGFza0NoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6Cisg
ICAgICAgIChBbmFseXNpc1Rhc2tSZXN1bHRzUGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hh
ZG93VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lLnByb3RvdHlw
ZS5zZXRUZXN0R3JvdXBzKToKKyAgICAgICAgKEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUp
OgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuZGlkQ29uc3Ry
dWN0U2hhZG93VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3Rv
dHlwZS5fcmVuZGVyQ3VycmVudFRlc3RHcm91cC4pOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVz
dEdyb3VwUGFuZS5wcm90b3R5cGUuX3JlbmRlckN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAo
QW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3N1bW1hcml6ZWRUZXN0R3JvdXAp
OgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93
VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfcmV0cnlD
dXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLmFz
eW5jIF9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3Quc2V0
IGNvbnN0KToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVUZXN0
R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNr
UGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cCk6CisgICAgICAgICog
cHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanM6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3Vw
cG9ydC4KKyAgICAgICAgKENoYXJ0UGFuZSk6CisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBl
LmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQ2hhcnRQYW5lLnByb3RvdHlwZS5h
c3luYyBfYW5hbHl6ZVJhbmdlKToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUucmVuZGVy
KToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUucmVuZGVyUmVwZXRpdGlvblR5cGVFeHBs
YW5hdGlvbik6CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNr
LXBhZ2UuanM6CisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3lu
YyBfY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMv
YXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAq
IHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6
IEFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5q
czogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMv
cmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzOgorICAgICAgICAoYXN5bmMgYXNzZXJ0VGhy
b3dzKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qczoKKyAg
ICAgICAgKE1vY2tEYXRhLnNldCBhZGRBbm90aGVyTW9ja1Rlc3RHcm91cCk6CisgICAgICAgICog
c2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzOgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpz
OgorICAgICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzOgorICAgICAgICAo
QnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5bmMgc3luY09uY2UpOgorICAgICAgICAo
QnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5bmMgX3NjaGVkdWxlUmVxdWVzdCk6Cisg
ICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBfc2hvdWxkRGVmZXJG
b3JUZXN0R3JvdXApOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5
bmMgX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUpOgorICAgICAgICAqIHRvb2xz
L2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qczogQWRkZWQgcmV0cnkgY29kZSBmb3Ig
c2VxdWVudGlhbCBBL0IgdGVzdGluZyB3aGljaCB3aWxsIHJldHJ5CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24gYnkgY29uZmlndXJhdGlvbiBhbmQgd2lsbCBub3QgcHJvY2VlZCB3aXRoIG5leHQgY29u
ZmlndXJhdGlvbiB1bnRpbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gbWVldHMKKyAgICAgICAgdXNl
ciBzcGVjaWZpZWQgaXRlcmF0aW9uIG9yIGV4Y2VlZCByZXRyeS4KKyAgICAgICAgKGFzeW5jIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyk6CisgICAgICAgIChhc3luYyBjcmVhdGVBbHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3JvdXAp
OgorICAgICAgICAoYXN5bmMgY3JlYXRlU2VxdWVudGlhbFJldHJpZXNGb3JUZXN0R3JvdXApOgor
ICAgICAgICAqIHVuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qczogVXBkYXRlZCB1bml0
IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRl
c3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogdW5pdC10ZXN0cy9yZXRyeS1m
YWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IEFkZGVkIHRlc3RzIGZvciBzZXF1ZW50aWFs
IEEvQiB0ZXN0aW5nLgorICAgICAgICAqIHVuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanM6
IFVwZGF0ZWQgdW5pdCB0ZXN0cy4KKwogMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBDb21taXQgcmV2aXNpb24gaWRlbnRp
ZmllciBpbiB0aGUgQ2hhcnQKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9p
bml0LWRhdGFiYXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNl
LnNxbAppbmRleCBmNjhiNWYwYzAzM2EyMjY0MzA3YzJmODNmM2Q0ZmI3NGJkYjE1M2VkLi5lMjMx
ZTYxZGY1Mjk3OWZhNzFiODViYzFkM2UyYmQ4NWEwZGEzOTczIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCkBAIC0yOTIsNiArMjkyLDcgQEAgQ1JFQVRFIFRB
QkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBfbmVlZHNfbm90aWZpY2F0
aW9uIGJvb2xlYW4gTk9UIE5VTEwgREVGQVVMVCBGQUxTRSwKICAgICB0ZXN0Z3JvdXBfbm90aWZp
Y2F0aW9uX3NlbnRfYXQgdGltZXN0YW1wIERFRkFVTFQgTlVMTCwKICAgICB0ZXN0Z3JvdXBfaW5p
dGlhbF9yZXBldGl0aW9uX2NvdW50IGludGVnZXIgTk9UIE5VTEwsCisgICAgdGVzdGdyb3VwX3Jl
cGV0aXRpb25fdHlwZSB2YXJjaGFyKDMyKSBERUZBVUxUICdhbHRlcm5hdGluZycsCiAgICAgdGVz
dGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMgYm9vbGVhbiBERUZBVUxUIEZBTFNFLAogICAg
IENPTlNUUkFJTlQgdGVzdGdyb3VwX25hbWVfbXVzdF9iZV91bmlxdWVfZm9yX2VhY2hfdGFzayBV
TklRVUUodGVzdGdyb3VwX3Rhc2ssIHRlc3Rncm91cF9uYW1lKSk7CiBDUkVBVEUgSU5ERVggdGVz
dGdyb3VwX3Rhc2tfaW5kZXggT04gYW5hbHlzaXNfdGVzdF9ncm91cHModGVzdGdyb3VwX3Rhc2sp
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uu
c3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCmluZGV4
IDBlYTkxMzNkYTZlZGUzMjVkZGY2YzIxZDhiOTM3ZmI3MzU2NDI1OWEuLmZhNTVkODZkNjcxMTNm
ZTJjZTQzMzM1MDEzZDc5OWQ2MTE3NjE0ZjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwKQEAgLTQsNiArNCw3IEBAIEJFR0lOCiBBTFRFUiBUQUJM
RSBidWlsZF9yZXF1ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVxdWVzdF9zdGF0dXNf
ZGVzY3JpcHRpb24gdmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRFUiBUQUJMRSBwbGF0
Zm9ybXMgQUREIENPTFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91cCBpbnRlZ2VyIFJF
RkVSRU5DRVMgcGxhdGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIGNvbW1p
dHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyIHZh
cmNoYXIoNjQpIERFRkFVTFQgTlVMTDsKK0FMVEVSIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBz
IEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlIHZhcmNo
YXIoMzIpIERFRkFVTFQgJ2FsdGVybmF0aW5nJzsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBD
T05TVFJBSU5UIGNvbW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVf
dW5pcXVlOwogQUxURVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21taXRfc3RyaW5n
X2lkZW50aWZpZXJfaW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUoY29tbWl0X3Jl
cG9zaXRvcnksIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1
YzRhYjk4N2I3OTMyNmM4MTIyMDMwZmRkZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0
OGExOTlkZTI3OTVkNWQ3N2Q2ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24g
Zm9ybWF0X3Rlc3RfZ3JvdXAoJGdyb3VwX3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRp
b24nID0+IERhdGFiYXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3Rp
ZmljYXRpb24nXSksCiAgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6
aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwK
ICAgICAgICAgJ2luaXRpYWxSZXBldGl0aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91
cF9pbml0aWFsX3JlcGV0aXRpb25fY291bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9
PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWls
ZFJlcXVlc3RzJyA9PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwK
ICAgICApOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdi
MjUyMDk3ZjExNWZmZGJjNDFhMTFjM2U0YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkw
YTNjMmIyMDkxZGU1YmU2YTUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAg
ICAgKFNFTEVDVCB0ZXN0Z3JvdXBfaWQsIHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rn
cm91cF9hdXRob3IgaXMgbm90IG51bGwgdGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRl
ciwgdGVzdGdyb3VwX2NyZWF0ZWRfYXQKICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rl
c3RfZ3JvdXBzIFdIRVJFIEVYSVNUUwogICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJP
TSBidWlsZF9yZXF1ZXN0cyBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCBy
ZXF1ZXN0X3N0YXR1cwotICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBc
J3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAg
ICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykp
IE9SIHRlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91
cHMKICAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVz
dF9ncm91cCA9IHRlc3RfZ3JvdXBzLnRlc3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkg
YXV0aG9yX29yZGVyLCB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5
KCR0cmlnZ2VyYWJsZV9pZCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocApp
bmRleCBlODUzMGE2YmI3MWU0MmNmZjI4Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi45MDlkYjcyZDkx
NWRmNmRkMTkzZDdjYjUwNjQ1ZmYxZTZmYThmNGNlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBl
cnMucGhwCkBAIC00LDIxICs0LDI5IEBAIHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1m
aW5kZXIucGhwJyk7CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAog
IyBGSVhNRTogU2hvdWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIg
ZnVuY3Rpb25zIHRvIGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24g
Y3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAk
dGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAk
dGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKK2Z1bmN0
aW9uIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0
cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9p
ZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNf
bm90aWZpY2F0aW9uKSB7CiAKICAgICBsaXN0ICgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0LCAk
dGVzdF9jb25maWd1cmF0aW9uX2xpc3QpID0gaW5zZXJ0X2NvbW1pdF9zZXRzX2FuZF9jb25zdHJ1
Y3RfY29uZmlndXJhdGlvbl9saXN0KCRkYiwgJGNvbW1pdF9zZXRzKTsKIAogICAgICRncm91cF9p
ZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywK
LSAgICAgICAgYXJyYXkoJ3Rhc2snID0+ICR0YXNrX2lkLCAnbmFtZScgPT4gJG5hbWUsICdhdXRo
b3InID0+ICRhdXRob3IsICduZWVkc19ub3RpZmljYXRpb24nID0+ICRuZWVkc19ub3RpZmljYXRp
b24sICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7Cisg
ICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9y
JyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAkbmVlZHNfbm90aWZpY2F0aW9u
LAorICAgICAgICAgICAgJ2luaXRpYWxfcmVwZXRpdGlvbl9jb3VudCcgPT4gJHJlcGV0aXRpb25f
Y291bnQsICdyZXBldGl0aW9uX3R5cGUnID0+ICRyZXBldGl0aW9uX3R5cGUpKTsKIAogICAgICRi
dWlsZF9jb3VudCA9IGNvdW50KCRidWlsZF9jb25maWd1cmF0aW9uX2xpc3QpOwogICAgICRvcmRl
ciA9IC0kYnVpbGRfY291bnQ7CiAgICAgZm9yZWFjaCgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0
IGFzICRidWlsZF9jb25maWd1cmF0aW9uKQogICAgICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdF9m
b3JfY29uZmlndXJhdGlvbigkZGIsICRidWlsZF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRy
aWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsIE5VTEwsICRncm91cF9pZCk7CiAKLSAgICBmb3Ig
KCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgewotICAgICAgICBmb3JlYWNo
KCR0ZXN0X2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkdGVzdF9jb25maWd1cmF0aW9uKQotICAgICAg
ICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9j
b25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0
ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgIGlmICgkcmVwZXRpdGlvbl90eXBlID09ICdzZXF1ZW50
aWFsJykgeworICAgICAgICBmb3JlYWNoICgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRl
c3RfY29uZmlndXJhdGlvbikgeworICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0
aXRpb25fY291bnQ7ICRpKyspCisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3Rf
Zm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRy
aWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRpb25f
Y291bnQ7ICRpKyspIHsKKyAgICAgICAgICAgIGZvcmVhY2ggKCR0ZXN0X2NvbmZpZ3VyYXRpb25f
bGlzdCBhcyAkdGVzdF9jb25maWd1cmF0aW9uKQorICAgICAgICAgICAgICAgIGluc2VydF9idWls
ZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9y
ZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lk
KTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gJGdyb3VwX2lkOwogfQpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCmluZGV4IDU3MGU5MDJmNWQyZTFkZjNmYzJi
NmI2YWZhMjMzYWJmYjUwMDM2NDcuLjE0NTMxZGE0MzA5NTYyZTk3MGJjYTFjYWNjNzE3NmM3OTRj
MzNmYzEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmls
ZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKQEAgLTcs
MTMgKzcsMTUgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkZGIgPSBjb25uZWN0KCk7CiAgICAg
JGRhdGEgPSBlbnN1cmVfcHJpdmlsZWdlZF9hcGlfZGF0YV9hbmRfdG9rZW5fb3Jfd29ya2VyKCRk
Yik7CiAKLSAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50ID0gYXJyYXlfZ2V0KCRk
YXRhLCAnYWRkQ291bnQnKTsKLSAgICBpZiAoISRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291
bnQpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmVxdWVzdENvdW50Tm90U3BlY2lmaWVkJyk7
CisgICAgJGFyZ3VtZW50cyA9IHZhbGlkYXRlX2FyZ3VtZW50cygkZGF0YSwgYXJyYXkoCisgICAg
ICAgICdhZGRDb3VudCcgPT4gJ2ludCcsCisgICAgICAgICdncm91cCcgPT4gJ2ludCcsCisgICAg
ICAgICdjb21taXRTZXQnID0+ICdpbnQ/JywKKyAgICApKTsKIAotICAgICR0ZXN0X2dyb3VwX2lk
ID0gYXJyYXlfZ2V0KCRkYXRhLCAnZ3JvdXAnKTsKLSAgICBpZiAoISR0ZXN0X2dyb3VwX2lkKQot
ICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Rlc3RHcm91cE5vdFNwZWNpZmllZCcpOworICAgICRh
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2Fk
ZENvdW50Jyk7CisgICAgJHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2dy
b3VwJyk7CisgICAgJGNvbW1pdF9zZXRfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2NvbW1p
dFNldCcsIE5VTEwpOwogCiAgICAgJHRlc3RfZ3JvdXAgPSAkZGItPnNlbGVjdF9maXJzdF9yb3co
J2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gJHRlc3Rf
Z3JvdXBfaWQpKTsKICAgICBpZiAoISR0ZXN0X2dyb3VwKQpAQCAtMjgsMzcgKzMwLDc0IEBAIGZ1
bmN0aW9uIG1haW4oKSB7CiAgICAgaWYgKCRjdXJyZW50X29yZGVyIDwgMCkKICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdOb1Rlc3RpbmdCdWlsZFJlcXVlc3RzJyk7CiAKKyAgICAkaXNfc2VxdWVu
dGlhbF90eXBlID0gJHRlc3RfZ3JvdXBbJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnXSA9PSAn
c2VxdWVudGlhbCc7CisgICAgJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQgPSBhcnJh
eSgpOworICAgICRjdXJyZW50X29yZGVyX2luY3JlbWVudGFsID0gMDsKICAgICAkY29tbWl0X3Nl
dHMgPSBhcnJheSgpOwogICAgICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQgPSBhcnJheSgp
OwogICAgIGZvcmVhY2ggKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkYnVpbGRfcmVxdWVz
dCkgewogICAgICAgICBpZiAoJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3JkZXInXSA8IDApCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgJHJlcXVlc3RlZF9jb21taXRfc2V0ID0gJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddOwotICAgICAgICBpZiAoYXJyYXlfa2V5
X2V4aXN0cygkcmVxdWVzdGVkX2NvbW1pdF9zZXQsICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9z
ZXQpKQorICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkcmVxdWVzdGVkX2NvbW1pdF9zZXQs
ICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQpKSB7CisgICAgICAgICAgICAkYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0ZWRfY29tbWl0X3NldF0gPSAkYnVpbGRfcmVxdWVz
dDsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpc19udWxs
KCRjb21taXRfc2V0X2lkKSB8fCAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPT0gJGNvbW1pdF9zZXRf
aWQpCisgICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0cywgJHJlcXVlc3RlZF9jb21t
aXRfc2V0KTsKKwogICAgICAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0
ZWRfY29tbWl0X3NldF0gPSAkYnVpbGRfcmVxdWVzdDsKLSAgICAgICAgYXJyYXlfcHVzaCgkY29t
bWl0X3NldHMsICRyZXF1ZXN0ZWRfY29tbWl0X3NldCk7CisKKyAgICAgICAgaWYgIChjb3VudCgk
Y29tbWl0X3NldHMpICYmICRpc19zZXF1ZW50aWFsX3R5cGUpIHsKKyAgICAgICAgICAgICRvcmRl
cl9pbmNyZW1lbnRhbF9ieV9jb21taXRfc2V0WyRyZXF1ZXN0ZWRfY29tbWl0X3NldF0gPSAkY3Vy
cmVudF9vcmRlcl9pbmNyZW1lbnRhbDsKKyAgICAgICAgICAgICRjdXJyZW50X29yZGVyX2luY3Jl
bWVudGFsICs9ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7CisgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpZiAoIWlzX251bGwoJGNvbW1pdF9zZXRfaWQpICYmICFjb3VudCgkY29tbWl0
X3NldHMpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0NvbW1pdFNldE5vdEluVGVzdEdyb3Vw
JywgYXJyYXkoJ2NvbW1pdFNldCcgPT4gJGNvbW1pdF9zZXRfaWQpKTsKKwogICAgICRkYi0+YmVn
aW5fdHJhbnNhY3Rpb24oKTsKLSAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWls
ZF9yZXF1ZXN0X2NvdW50OyAkaSsrKSB7CisgICAgaWYgKCRpc19zZXF1ZW50aWFsX3R5cGUpIHsK
KyAgICAgICAgZm9yZWFjaCAoJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQgYXMgJGNv
bW1pdF9zZXQgPT4gJGluY3JlbWVudGFsKSB7CisgICAgICAgICAgICBpZiAoISRpbmNyZW1lbnRh
bCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICRkYi0+cXVlcnkoJ1VQ
REFURSBidWlsZF9yZXF1ZXN0cyBTRVQgcmVxdWVzdF9vcmRlciA9IHJlcXVlc3Rfb3JkZXIgKyAn
IC4gJGluY3JlbWVudGFsCisgICAgICAgICAgICAgICAgLiAnIFdIRVJFIHJlcXVlc3RfY29tbWl0
X3NldCA9ICQxJywgYXJyYXkoJGNvbW1pdF9zZXQpKTsKKyAgICAgICAgfQogICAgICAgICBmb3Jl
YWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKICAgICAgICAgICAgICRidWlsZF9y
ZXF1ZXN0ID0gJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF07Ci0gICAg
ICAgICAgICAkZGItPmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJh
eSgKLSAgICAgICAgICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1
ZXN0X3RyaWdnZXJhYmxlJ10sCi0gICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnlfZ3JvdXAnID0+
ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXSwKLSAgICAgICAgICAg
ICAgICAncGxhdGZvcm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3JtJ10sCi0g
ICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwK
LSAgICAgICAgICAgICAgICAnZ3JvdXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2dyb3Vw
J10sCi0gICAgICAgICAgICAgICAgJ29yZGVyJyA9PiArKyRjdXJyZW50X29yZGVyLAotICAgICAg
ICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J10pKTsKKyAgICAgICAgICAgICRyZXF1ZXN0X29yZGVyID0gJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3Rfb3JkZXInXTsKKyAgICAgICAgICAgICRyZXF1ZXN0X29yZGVyX2luY3JlbWVudGFsID0g
YXJyYXlfZ2V0KCRvcmRlcl9pbmNyZW1lbnRhbF9ieV9jb21taXRfc2V0LCAkY29tbWl0X3NldCwg
MCk7CisgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWlsZF9yZXF1
ZXN0X2NvdW50OyAkaSsrKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3Rz
KCRkYiwgJGJ1aWxkX3JlcXVlc3QsICsrJHJlcXVlc3Rfb3JkZXIgKyAkcmVxdWVzdF9vcmRlcl9p
bmNyZW1lbnRhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50OyAk
aSsrKSB7CisgICAgICAgICAgICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQp
IHsKKyAgICAgICAgICAgICAgICAkYnVpbGRfcmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5X2Nv
bW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAgICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1
ZXN0cygkZGIsICRidWlsZF9yZXF1ZXN0LCArKyRjdXJyZW50X29yZGVyKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KKwogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiAK
ICAgICBleGl0X3dpdGhfc3VjY2VzcygpOwogfQogCitmdW5jdGlvbiBpbnNlcnRfYnVpbGRfcmVx
dWVzdHMoJGRiLCAkYnVpbGRfcmVxdWVzdCwgJG9yZGVyX292ZXJ3cml0ZSkgeworICAgICRkYi0+
aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KAorICAgICAgICAn
dHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3RyaWdnZXJhYmxlJ10sCisg
ICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9yZXBv
c2l0b3J5X2dyb3VwJ10sCisgICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3RfcGxhdGZvcm0nXSwKKyAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1
ZXN0X3Rlc3QnXSwKKyAgICAgICAgJ2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9n
cm91cCddLAorICAgICAgICAnb3JkZXInID0+ICRvcmRlcl9vdmVyd3JpdGUsCisgICAgICAgICdj
b21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J10pKTsKK30K
KwogbWFpbigpOwogCiA/PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFu
YWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggMjhhMTYxMzAwODRlOGM0ZGFl
MTRiZDI5ZjUwZmZlOGJjZGU4YWM5NC4uNWQ5MTkzMGFjNjM1MWVkZWI1NGRiMzk0MGRiNDA2NDZj
MTUzNWE4NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAK
QEAgLTEwLDYgKzEwLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkYXV0aG9yID0gcmVtb3Rl
X3VzZXJfbmFtZSgkZGF0YSk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRhdGEsICduYW1lJyk7
CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uQ291
bnQnKTsKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gYXJyYXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlv
blR5cGUnLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAkbmVlZHNfbm90aWZpY2F0aW9uID0gYXJyYXlf
Z2V0KCRkYXRhLCAnbmVlZHNOb3RpZmljYXRpb24nLCBGYWxzZSk7CiAgICAgJHRlc3RfZ3JvdXBf
bmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3RHcm91cE5hbWUnKTsKICAgICAkcmV2aXNpb25f
c2V0X2xpc3QgPSBhcnJheV9nZXQoJGRhdGEsICdyZXZpc2lvblNldHMnKTsKQEAgLTIwLDYgKzIx
LDkgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBpZiAoISRuYW1lKQogICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ01pc3NpbmdOYW1lJywgYXJyYXkoJ25hbWUnID0+ICRuYW1lKSk7CiAKKyAgICBp
ZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1
ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlw
ZScsIGFycmF5KCdtb2RlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2
YWxpZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5KCdzdGFydFJ1bicgPT4gJ2ludCcsICdlbmRS
dW4nID0+ICdpbnQnKSk7CiAKICAgICAkc3RhcnRfcnVuID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIs
ICd0ZXN0X3J1bnMnLCAncnVuJywgJHJhbmdlWydzdGFydFJ1biddLCAnSW52YWxpZFN0YXJ0UnVu
JywgJHJhbmdlKTsKQEAgLTg1LDcgKzg5LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAg
JHRyaWdnZXJhYmxlX2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwogICAgICAgICAkdGVzdF9pZCA9
ICR0cmlnZ2VyYWJsZVsndGVzdCddOwogICAgICAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0
c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRf
bGlzdCk7Ci0gICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIs
ICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmln
Z2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRp
dGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dy
b3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0
X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3Bs
YXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwg
JG5lZWRzX25vdGlmaWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rp
b24oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzQyNTNm
YmU3ODY1OWJhMmY2ZTA5OTkzMzEwMWJiOGEyOWYzMTFkZS4uZDIzYjJmZjk2NjgxYzhmYTg4ZWMw
Zjk3M2QxMGViZmYzNzI4ODg1MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91
cC5waHAKQEAgLTE4LDYgKzE4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRhc2tfaWQgPSBh
cnJheV9nZXQoJGFyZ3VtZW50cywgJ3Rhc2snKTsKICAgICAkdGFza19uYW1lID0gYXJyYXlfZ2V0
KCRkYXRhLCAndGFza05hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3VudCA9ICRhcmd1bWVudHNb
J3JlcGV0aXRpb25Db3VudCddOworICAgICRyZXBldGl0aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRh
dGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGluZycpOwogICAgICRuZWVkc19ub3RpZmlj
YXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05vdGlmaWNhdGlvbicsIEZhbHNlKTsKICAg
ICAkcGxhdGZvcm1faWQgPSBhcnJheV9nZXQoJGRhdGEsICdwbGF0Zm9ybScpOwogICAgICR0ZXN0
X2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGVzdCcpOwpAQCAtNDIsNiArNDMsOSBAQCBmdW5jdGlv
biBtYWluKCkKICAgICBlbHNlIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdyZXBldGl0aW9u
Q291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBl
dGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdyZXBldGl0
aW9uVHlwZScgPT4gJHJlcGV0aXRpb25fdHlwZSkpOworCiAgICAgJHRyaWdnZXJhYmxlX2lkID0g
TlVMTDsKICAgICBpZiAoJHRhc2tfaWQpIHsKICAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9m
aXJzdF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lk
KSk7CkBAIC04Niw3ICs5MCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgIGlmICgkdGFza19uYW1l
KQogICAgICAgICAkdGFza19pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGFza3MnLCAn
dGFzaycsIGFycmF5KCduYW1lJyA9PiAkdGFza19uYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7
CiAKLSAgICAkZ3JvdXBfaWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMo
JGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxl
X2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25v
dGlmaWNhdGlvbik7CisgICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxk
X3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0
cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQs
ICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogCiAgICAgJGRiLT5jb21t
aXRfdHJhbnNhY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBo
cAppbmRleCAzNTVlNmM4NWYxMjNiMmMzNTQ0NzExYmZiNjE3NDAwMDc5Mzc2OWFjLi4zMTc1ZDcx
MGE3YzdjNjQ1NGJmYjc5NjE2ZWRlZDY4MzI5MzlmOTQ0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBo
cAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwLnBocApAQCAtMjAsNiArMjAsOSBAQCBmdW5jdGlvbiBtYWluKCkgewog
ICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKICAgICB9
CiAKKyAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnY2FuY2VsJywgJGRhdGEpKQorICAgICAgICAk
dmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKKwogICAgIGlmIChhcnJh
eV9rZXlfZXhpc3RzKCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgJGRhdGEpKQogICAgICAgICAgJHZh
bHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gJGRhdGFbJ21heU5lZWRNb3JlUmVxdWVz
dHMnXTsKIApAQCAtNDQsNyArNDcsNyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICBleGl0
X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvVXBkYXRlVGVzdEdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVz
dF9ncm91cF9pZCwgJ3ZhbHVlcycgPT4gJHZhbHVlcykpOwogICAgIH0KIAotICAgIGlmIChhcnJh
eV9nZXQoJGRhdGEsICdoaWRkZW4nKSkgeworICAgIGlmIChhcnJheV9nZXQoJGRhdGEsICdoaWRk
ZW4nKSB8fCBhcnJheV9nZXQoJGRhdGEsICdjYW5jZWwnKSkgewogICAgICAgICAkZGItPnF1ZXJ5
X2FuZF9nZXRfYWZmZWN0ZWRfcm93cygnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0
X3N0YXR1cyA9ICQxCiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2dyb3VwID0gJDIgQU5EIHJl
cXVlc3Rfc3RhdHVzID0gJDMnLCBhcnJheSgnY2FuY2VsZWQnLCAkdGVzdF9ncm91cF9pZCwgJ3Bl
bmRpbmcnKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCmluZGV4IGM1NmUy
YjAwOTE3MThjMDkwNzI3NzE2MjQ0NWY3YzllZTdhNDg5MmQuLmJkNzE3MTdkMjhmNTE2ZjkwOTc2
ZGE5OWYxYjMzNDdiOGFhNjM4YzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKQEAg
LTEzNSwxMiArMTM1LDEyIEBAIGNsYXNzIENvbW1vbkNvbXBvbmVudEJhc2UgewogICAgICAgICAg
ICAgZWxlbWVudC5hcHBlbmRDaGlsZChDb21tb25Db21wb25lbnRCYXNlLl9jb250ZXh0LmNyZWF0
ZVRleHROb2RlKGNvbnRlbnQpKTsKICAgICB9CiAKLSAgICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRp
dGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCisgICAg
Y3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFs
LCB0YWJJbmRleCA9IG51bGwpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbW9uQ29tcG9uZW50
QmFzZS5jcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0
ZXJuYWwsIHRhYkluZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50
LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQor
ICAgIHN0YXRpYyBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ss
IGlzRXh0ZXJuYWwsIHRhYkluZGV4ID0gbnVsbCkKICAgICB7CiAgICAgICAgIHZhciB0aXRsZSA9
IHRpdGxlT3JDYWxsYmFjazsKICAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50
cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVz
dC1ncm91cC1mb3JtLmpzCmluZGV4IDg3YjE3YzE0NmQ0NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4
ZTRjNjkuLmU0ZjY3NDRmY2Q5YzZkNDBiODEzYWVmZTdjNDUxY2M2YzgxNmE5M2YgMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20t
Y29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3Jv
dXAtZm9ybS5qcwpAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDdXN0b21Db25maWd1cmF0aW9uVGVz
dEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICBjb25zdCB0ZXN0ID0g
Y29uZmlndXJhdG9yLnRlc3RzKClbMF07IC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNw
ZWNpZnlpbmcgbXVsdGlwbGUgdGVzdHMuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5f
aGFzVGFzayA9PT0gIXRhc2tOYW1lKTsKICAgICAgICAgaWYgKCF0aGlzLl9oYXNUYXNrKQotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRp
dGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFz
a05hbWUsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91
cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgdGhpcy5fbm90aWZ5
T25Db21wbGV0aW9uLCB0aGlzLl9yZXBldGl0aW9uVHlwZSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRp
b25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMu
X25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1p
dFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24sIHRoaXMuX3Jl
cGV0aXRpb25UeXBlKTsKICAgICB9CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90
ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IGE0M2VkZjM1MDhiY2YwNzQ2MjVkYjk5
NjRmNjA0ZGUxODA4Mjk2NGYuLjIzMTFmMTdiYzc0NjY5OWJmYWEwM2EzMDdkMGUyMTk3ZTUxMTg0
ZjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcwpAQCAtNiw2ICs2LDggQEAgY2xh
c3MgVGVzdEdyb3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBzdXBlcihu
YW1lIHx8ICd0ZXN0LWdyb3VwLWZvcm0nKTsKICAgICAgICAgdGhpcy5fcmVwZXRpdGlvbkNvdW50
ID0gNDsKICAgICAgICAgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fcmVwZXRpdGlvblR5cGUgPSAnYWx0ZXJuYXRpbmcnOworICAgICAgICB0aGlzLl9yZW5k
ZXJSZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1
bmN0aW9uKHRoaXMucmVuZGVyUmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbi5iaW5kKHRoaXMpKTsK
ICAgICB9CiAKICAgICBzZXRSZXBldGl0aW9uQ291bnQoY291bnQpCkBAIC0yMiwxMiArMjQsMjgg
QEAgY2xhc3MgVGVzdEdyb3VwRm9ybSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB9
OwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb25DaGVja0JveCA9IHRoaXMuY29udGVu
dCgnbm90aWZ5LW9uLWNvbXBsZXRpb24tY2hlY2tib3gnKTsKICAgICAgICAgbm90aWZ5T25Db21w
bGV0aW9uQ2hlY2tCb3gub25jaGFuZ2UgPSAoKSA9PiB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24g
PSBub3RpZnlPbkNvbXBsZXRpb25DaGVja0JveC5jaGVja2VkOworICAgICAgICBjb25zdCByZXBl
dGl0aW9uVHlwZVNlbGVjdCA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7CisgICAg
ICAgIHJlcGV0aXRpb25UeXBlU2VsZWN0Lm9uY2hhbmdlID0gKCkgPT4geworICAgICAgICAgICAg
dGhpcy5fcmVwZXRpdGlvblR5cGUgPSByZXBldGl0aW9uVHlwZVNlbGVjdC52YWx1ZTsKKyAgICAg
ICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH07CiAgICAgICAgIHRoaXMu
Y29udGVudCgnZm9ybScpLm9uc3VibWl0ID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4g
dGhpcy5zdGFydFRlc3RpbmcoKSk7CiAgICAgfQogCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3JlbmRlclJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb25MYXppbHkuZXZhbHVhdGUo
dGhpcy5fcmVwZXRpdGlvblR5cGUpOworICAgIH0KKworICAgIHJlbmRlclJlcGV0aXRpb25UeXBl
RXhwbGFuYXRpb24ocmVwZXRpdGlvblR5cGUpCisgICAgeworICAgICAgICBjb25zdCBleHBsYW5h
dGlvbiA9IHJlcGV0aXRpb25UeXBlID09PSAnYWx0ZXJuYXRpbmcnID8gJyhlLmcuIEFCQUJBQikn
IDogJyhlLmcuIEFBQUJCQiknOworICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250
ZW50KCdyZXBldGl0aW9uLXR5cGUtZXhwbGFuYXRpb24nKSwgZXhwbGFuYXRpb24pOworICAgIH0K
KwogICAgIHN0YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX25vdGlmeU9uQ29t
cGxldGlvbik7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRo
aXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uLCB0aGlzLl9yZXBl
dGl0aW9uVHlwZSk7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC02NSw3
ICs4MywxMyBAQCBjbGFzcyBUZXN0R3JvdXBGb3JtIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAg
ICAgICAgICAgICAgICAgPG9wdGlvbj45PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgPG9wdGlv
bj4xMDwvb3B0aW9uPgogICAgICAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICBpdGVyYXRp
b25zIHBlciBzZXQKKyAgICAgICAgICAgIDxsYWJlbD5pdGVyYXRpb25zIHBlciBzZXQgaW48L2xh
YmVsPgorICAgICAgICAgICAgPHNlbGVjdCBpZD0icmVwZXRpdGlvbi10eXBlIj4KKyAgICAgICAg
ICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPmFsdGVybmF0aW5nPC9vcHRpb24+CisgICAgICAgICAg
ICAgICAgPG9wdGlvbj5zZXF1ZW50aWFsPC9vcHRpb24+CisgICAgICAgICAgICA8L3NlbGVjdD4K
KyAgICAgICAgICAgIDxsYWJlbD5tb2RlPC9sYWJlbD4KKyAgICAgICAgICAgIDxsYWJlbCBpZD0i
cmVwZXRpdGlvbi10eXBlLWV4cGxhbmF0aW9uIj4oZS5nLiBBQkFCQUIpPC9sYWJlbD4KICAgICAg
ICAgICAgIDxpbnB1dCBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24tY2hlY2tib3giIHR5cGU9ImNo
ZWNrYm94IiBjaGVja2VkLz5Ob3RpZnkgb24gY29tcGxldGlvbgogICAgICAgICBgOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2Fu
YWx5c2lzLXRhc2suanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9hbmFseXNpcy10YXNrLmpzCmluZGV4IDE3NzZhODE3YmMzMTk5NjkyOTcyYTQwYWE0ZWQ2OGMx
YTk1Y2RlZWUuLjBhZjRhMTkzMzdmZWMxNjg5MWU0NjRlNzBlMjZlNjhiYmViMzc0MmIgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lz
LXRhc2suanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
YW5hbHlzaXMtdGFzay5qcwpAQCAtMzI0LDcgKzMyNCw3IEBAIGNsYXNzIEFuYWx5c2lzVGFzayBl
eHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICB9CiAK
LSAgICBzdGF0aWMgYXN5bmMgY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCB0ZXN0
R3JvdXBOYW1lPW51bGwsIHJlcGV0aXRpb25Db3VudD0wLCBub3RpZnlPbkNvbXBsZXRpb249ZmFs
c2UpCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwg
dGVzdEdyb3VwTmFtZSA9IG51bGwsIHJlcGV0aXRpb25Db3VudCA9IDAsIG5vdGlmeU9uQ29tcGxl
dGlvbiA9IGZhbHNlLCByZXBldGl0aW9uVHlwZSA9ICdhbHRlcm5hdGluZycpCiAgICAgewogICAg
ICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge25hbWUsIHN0YXJ0UnVuOiBzdGFydFBvaW50LmlkLCBl
bmRSdW46IGVuZFBvaW50LmlkfTsKICAgICAgICAgaWYgKHRlc3RHcm91cE5hbWUpIHsKQEAgLTMz
Myw2ICszMzMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsK
ICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlcGV0aXRpb25Db3VudCddID0gcmVwZXRpdGlvbkNv
dW50OwogICAgICAgICAgICAgcGFyYW1ldGVyc1sndGVzdEdyb3VwTmFtZSddID0gdGVzdEdyb3Vw
TmFtZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ25lZWRzTm90aWZpY2F0aW9uJ10gPSBub3Rp
ZnlPbkNvbXBsZXRpb247CisgICAgICAgICAgICBwYXJhbWV0ZXJzWydyZXBldGl0aW9uVHlwZSdd
ID0gcmVwZXRpdGlvblR5cGU7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHBh
cmFtZXRlcnMpOwogICAgICAgICByZXR1cm4gQW5hbHlzaXNUYXNrLmZldGNoQnlJZChyZXNwb25z
ZS50YXNrSWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggZjA5NWUwZDdhYmU4NmEw
MjY1MjE1MTYxMjc4NGQyMWQxMDNhNTYxNi4uOTM2MjA5MGFiMzAzYTM1ZjFiNDU4NmZmNGQ5MDQ5
ZmEwM2ZjOGQ4ZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0zMSw3ICszMSw2IEBAIGNsYXNz
IEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAKICAgICB1cGRhdGVTaW5n
bGV0b24ob2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fb3JkZXIg
PT0gb2JqZWN0Lm9yZGVyKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29tbWl0U2V0
ID09IG9iamVjdC5jb21taXRTZXQpOwogCiAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IG9iamVj
dC50ZXN0R3JvdXA7CkBAIC00NCw2ICs0Myw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRz
IERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3N0YXR1c1VybCA9IG9iamVjdC51cmw7
CiAgICAgICAgIHRoaXMuX2J1aWxkSWQgPSBvYmplY3QuYnVpbGQ7CiAgICAgICAgIHRoaXMuX3N0
YXR1c0Rlc2NyaXB0aW9uID0gb2JqZWN0LnN0YXR1c0Rlc2NyaXB0aW9uOworICAgICAgICB0aGlz
Ll9vcmRlciA9ICtvYmplY3Qub3JkZXI7CiAgICAgfQogCiAgICAgdHJpZ2dlcmFibGUoKSB7IHJl
dHVybiB0aGlzLl90cmlnZ2VyYWJsZTsgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKaW5kZXggOTdlOGJjOGVlM2Nk
YTlhNmY2NDE2MjM1MzRlNjdmYjgwMDM5OTgyYi4uOWQzZTA1NDk4MmY1NmU1YzcxZGRhYWE5Yzgz
YjY3NjlhMjdiYzFiZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvdGVzdC1ncm91cC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCkBAIC0xMSw3ICsxMSw4IEBAIGNsYXNzIFRl
c3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlzLl9pc0hpZGRlbiA9
IG9iamVjdC5oaWRkZW47CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uID0gb2JqZWN0
Lm5lZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzID0g
b2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7Ci0gICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0
aW9uQ291bnQgPSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAgdGhpcy5f
aW5pdGlhbFJlcGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsK
KyAgICAgICAgdGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5cGU7CiAg
ICAgICAgIHRoaXMuX2J1aWxkUmVxdWVzdHMgPSBbXTsKICAgICAgICAgdGhpcy5fb3JkZXJCdWls
ZFJlcXVlc3RzTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKCguLi5idWlsZFJl
cXVlc3RzKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRSZXF1ZXN0cy5zb3J0KChhLCBi
KSA9PiBhLm9yZGVyKCkgLSBiLm9yZGVyKCkpOwpAQCAtMzYsNyArMzcsOCBAQCBjbGFzcyBUZXN0
R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5fbmVlZHNOb3RpZmlj
YXRpb24gPSBvYmplY3QubmVlZHNOb3RpZmljYXRpb247CiAgICAgICAgIHRoaXMuX25vdGlmaWNh
dGlvblNlbnRBdCA9IG9iamVjdC5ub3RpZmljYXRpb25TZW50QXQgPyBuZXcgRGF0ZShvYmplY3Qu
bm90aWZpY2F0aW9uU2VudEF0KSA6IG51bGw7CiAgICAgICAgIHRoaXMuX21heU5lZWRNb3JlUmVx
dWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0czsKLSAgICAgICAgdGhpcy5faW5pdGlh
bFJlcGV0aXRpb25Db3VudCA9IG9iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAg
ICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gK29iamVjdC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50OworICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlwZSA9IG9iamVjdC5yZXBldGl0aW9u
VHlwZTsKICAgICB9CiAKICAgICB0YXNrKCkgeyByZXR1cm4gQW5hbHlzaXNUYXNrLmZpbmRCeUlk
KHRoaXMuX3Rhc2tJZCk7IH0KQEAgLTQ2LDYgKzQ4LDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgbmVlZHNOb3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlz
Ll9uZWVkc05vdGlmaWNhdGlvbjsgfQogICAgIG1heU5lZWRNb3JlUmVxdWVzdHMoKSB7IHJldHVy
biB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzOyB9CiAgICAgaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpIHsgcmV0dXJuIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQ7IH0KKyAgICByZXBldGl0
aW9uVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3JlcGV0aXRpb25UeXBlOyB9CiAgICAgbm90aWZpY2F0
aW9uU2VudEF0KCkgeyByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VudEF0OyB9CiAgICAgYXV0
aG9yKCkgeyByZXR1cm4gdGhpcy5fYXV0aG9yTmFtZTsgfQogICAgIGFkZEJ1aWxkUmVxdWVzdChy
ZXF1ZXN0KQpAQCAtNzIsMjAgKzc1LDE5IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVs
ZWRPYmplY3QgewogCiAgICAgX2xhc3RSZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHJl
cXVlc3RzID0gdGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29uc3QgcmVx
dWVzdHMgPSB0aGlzLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIHJldHVybiByZXF1
ZXN0cy5sZW5ndGggPyByZXF1ZXN0c1tyZXF1ZXN0cy5sZW5ndGggLSAxXSA6IG51bGw7CiAgICAg
fQogCi0gICAgX29yZGVyZWRCdWlsZFJlcXVlc3RzKCkKKyAgICBvcmRlcmVkQnVpbGRSZXF1ZXN0
cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb3JkZXJCdWlsZFJlcXVlc3RzTGF6aWx5
LmV2YWx1YXRlKC4uLnRoaXMuX2J1aWxkUmVxdWVzdHMpOwogICAgIH0KIAotICAgIHJlcGV0aXRp
b25Db3VudCgpCisgICAgcmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fYnVpbGRSZXF1ZXN0cy5sZW5ndGgpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gdGhpcy5fYnVpbGRSZXF1ZXN0
c1swXS5jb21taXRTZXQoKTsKICAgICAgICAgbGV0IGNvdW50ID0gMDsKICAgICAgICAgZm9yIChj
b25zdCByZXF1ZXN0IG9mIHRoaXMuX2J1aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGlmIChy
ZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KQpAQCAt
OTQsMTUgKzk2LDE5IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgfQogCisgICAgaGFzUmV0cnkoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+
IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiB0aGlzLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgfQorCiAgICAgcmVxdWVzdGVkQ29tbWl0U2V0cygp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHNM
YXppbHkuZXZhbHVhdGUoLi4udGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKSk7CisgICAgICAg
IHJldHVybiB0aGlzLl9jb21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0c0xhemlseS5ldmFsdWF0ZSgu
Li50aGlzLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBfY29t
cHV0ZVJlcXVlc3RlZENvbW1pdFNldHMoLi4ub3JkZXJlZEJ1aWxkUmVxdWVzdHMpCiAgICAgewog
ICAgICAgICBjb25zdCByZXF1ZXN0ZWRDb21taXRTZXRzID0gW107Ci0gICAgICAgIGNvbnN0IGNv
bW1pdFNldExhYmVsTWFwID0gbmV3IE1hcDsKICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9m
IG9yZGVyZWRCdWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAgICBjb25zdCBzZXQgPSByZXF1ZXN0
LmNvbW1pdFNldCgpOwogICAgICAgICAgICAgaWYgKCFyZXF1ZXN0ZWRDb21taXRTZXRzLmluY2x1
ZGVzKHNldCkpCkBAIC0xMTMsNyArMTE5LDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFi
ZWxlZE9iamVjdCB7CiAKICAgICByZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKS5maWx0ZXIoKHJl
cXVlc3QpID0+IHJlcXVlc3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KTsKKyAgICAgICAgcmV0
dXJuIHRoaXMub3JkZXJlZEJ1aWxkUmVxdWVzdHMoKS5maWx0ZXIoKHJlcXVlc3QpID0+IHJlcXVl
c3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KTsKICAgICB9CiAKICAgICBsYWJlbEZvckNvbW1p
dFNldChjb21taXRTZXQpCkBAIC0yMTksNiArMjI1LDE0IEBAIGNsYXNzIFRlc3RHcm91cCBleHRl
bmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBhc3luYyBjYW5j
ZWxQZW5kaW5nUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3Vw
ZGF0ZUJ1aWxkUmVxdWVzdCh7CisgICAgICAgICAgICBncm91cDogdGhpcy5pZCgpLAorICAgICAg
ICAgICAgY2FuY2VsOiB0cnVlLAorICAgICAgICB9KTsKKyAgICB9CisKICAgICBhc3luYyBkaWRT
ZW5kTm90aWZpY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRh
dGVCdWlsZFJlcXVlc3QoewpAQCAtMjI4LDExICsyNDIsMTIgQEAgY2xhc3MgVGVzdEdyb3VwIGV4
dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGFzeW5jIGFk
ZE1vcmVCdWlsZFJlcXVlc3RzKGFkZENvdW50KQorICAgIGFzeW5jIGFkZE1vcmVCdWlsZFJlcXVl
c3RzKGFkZENvdW50LCBjb21taXRTZXQgPSBudWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGF3
YWl0IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CiAgICAgICAgICAgICBncm91cDogdGhpcy5p
ZCgpLAogICAgICAgICAgICAgYWRkQ291bnQsCisgICAgICAgICAgICBjb21taXRTZXQsCiAgICAg
ICAgIH0sICdhZGQtYnVpbGQtcmVxdWVzdHMnKTsKICAgICB9CiAKQEAgLTI0NCwzOSArMjU5LDM3
IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0
ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21w
bGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZv
cm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlP
bkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoY29tbWl0U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9
IENvbW1pdFNldC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAg
ICAgY29uc3QgcGFyYW1zID0ge3Rhc2tOYW1lLCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBw
bGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25T
ZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OwotICAgICAgICBy
ZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJh
bXMpLnRoZW4oKGRhdGEpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBBbmFseXNpc1Rhc2suZmV0
Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKLSAgICAgICAgfSkudGhlbigodGFzaykgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSkudGhlbigo
KSA9PiB0YXNrKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNrTmFt
ZSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5p
ZCgpLCByZXBldGl0aW9uQ291bnQsCisgICAgICAgICAgICByZXZpc2lvblNldHMsIHJlcGV0aXRp
b25UeXBlLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OworICAgICAg
ICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRl
c3QtZ3JvdXAnLCBwYXJhbXMpOworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlzaXNU
YXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGF3YWl0IHRoaXMu
ZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSk7CisgICAgICAgIHJldHVybiB0YXNrOwogICAgIH0KIAot
ICAgIHN0YXRpYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0YXNrLCBwbGF0Zm9ybSwg
dGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29t
cGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24o
dGFzaywgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRT
ZXRzLCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJl
dmlzaW9uU2V0cyA9IENvbW1pdFNldC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRT
ZXRzKTsKLSAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2s6IHRhc2suaWQoKSwgbmFtZTogZ3Jv
dXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0
aW9uQ291bnQsIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21w
bGV0aW9ufTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9PiB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5mZXRjaEZvclRhc2soZGF0YVsndGFza0lkJ10sIHRydWUpOwotICAgICAgICB9KTsK
KyAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2s6IHRhc2suaWQoKSwgbmFtZTogZ3JvdXBOYW1l
LCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291
bnQsCisgICAgICAgICAgICByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlLCBuZWVkc05vdGlm
aWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OworICAgICAgICBjb25zdCBkYXRhID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMp
OworICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaEZvclRhc2soZGF0YVsndGFza0lkJ10s
IHRydWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0
YXNrLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlv
bikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFt
ZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0
aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5sZW5n
dGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IENvbW1pdFNldC5yZXZpc2lv
blNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgewotICAgICAgICAgICAgdGFz
azogdGFzay5pZCgpLAotICAgICAgICAgICAgbmFtZTogbmFtZSwKLSAgICAgICAgICAgIHJlcGV0
aXRpb25Db3VudDogcmVwZXRpdGlvbkNvdW50LAotICAgICAgICAgICAgcmV2aXNpb25TZXRzOiBy
ZXZpc2lvblNldHMsCi0gICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNv
bXBsZXRpb24sCi0gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHRoaXMuZmV0Y2hGb3JUYXNrKGRh
dGFbJ3Rhc2tJZCddLCB0cnVlKSk7CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAgICAgIHRh
c2s6IHRhc2suaWQoKSwgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMsIHJlcGV0
aXRpb25UeXBlLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21w
bGV0aW9uCisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaEZvclRh
c2soZGF0YVsndGFza0lkJ10sIHRydWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBmaW5kQWxsQnlU
YXNrKHRhc2tJZCkKQEAgLTI4NCw2ICsyOTcsMTIgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMg
TGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuYWxsKCkuZmlsdGVyKCh0
ZXN0R3JvdXApID0+IHRlc3RHcm91cC5fdGFza0lkID09IHRhc2tJZCk7CiAgICAgfQogCisgICAg
c3RhdGljIGFzeW5jIGZldGNoQnlJZCh0ZXN0R3JvdXBJZCwgaWdub3JlQ2FjaGU9ZmFsc2UpCisg
ICAgeworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jYWNoZWRGZXRjaChgL2FwaS90
ZXN0LWdyb3Vwcy8ke3Rlc3RHcm91cElkfWAsIHt9LCBpZ25vcmVDYWNoZSk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSlbMF07Cisg
ICAgfQorCiAgICAgc3RhdGljIGZldGNoRm9yVGFzayh0YXNrSWQsIGlnbm9yZUNhY2hlID0gZmFs
c2UpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnL2FwaS90ZXN0LWdy
b3VwcycsIHt0YXNrOiB0YXNrSWR9LCBpZ25vcmVDYWNoZSkudGhlbih0aGlzLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1w
YWdlLmpzCmluZGV4IDNmNGZlZmZmMjdhNDM4MzY0MzA1YmJiODNkN2IxNmIzMjQwNWVjNzEuLmQ3
M2QwMmY1ZmFiNTUxYWFjYjY3MzBhMjNkNWQ4ZjZjZDQ3NWQwYjggMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMt
dGFzay1wYWdlLmpzCkBAIC0yNCw4ICsyNCw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza0NoYXJ0UGFu
ZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogCiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgp
CiAgICAgewotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNv
bXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RH
cm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBs
ZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNv
bXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
QWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1h
cCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIApAQCAtMTA2LDggKzEwNiw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Jlc3VsdHNQYW5lIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJlcG9zaXRvcnlQaWNrZXIuYWRkRXZlbnRM
aXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKSk7CiAgICAgICAg
IHRoaXMucGFydCgnY29tbWl0LXZpZXdlcicpLnNldFNob3dSZXBvc2l0b3J5TmFtZShmYWxzZSk7
CiAKLSAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0
aW9uKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAn
LCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9u
KTsKKyAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0
aW9uLCByZXBldGl0aW9uVHlwZSkgPT4geworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlv
bignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5v
dGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICB9KTsKICAgICB9CiAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9IGN1cnJl
bnRHcm91cDsKICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMucGFydCgnZm9ybScpOwogICAgICAg
ICBpZiAoIWZvcm0uaGFzQ29tbWl0U2V0cygpICYmIGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAg
IGZvcm0uc2V0Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3VycmVudEdyb3Vw
LnBsYXRmb3JtKCksIGN1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSwgY3VycmVudEdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKSk7CisgICAgICAgICAgICBmb3JtLnNldENvbmZpZ3VyYXRp
b25zKGN1cnJlbnRHcm91cC50ZXN0KCksIGN1cnJlbnRHcm91cC5wbGF0Zm9ybSgpLCBjdXJyZW50
R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVxdWVzdGVkQ29t
bWl0U2V0cygpKTsKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9CiAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lIGV4dGVu
ZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIGA7CiAgICAgfQotfTsK
K30KIAogQ29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdhbmFseXNpcy10YXNrLWNvbmZpZ3Vy
YXRvci1wYW5lJywgQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSk7CiAKQEAgLTI2NywxNCAr
MjY3LDE0IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7CiAgICAgICAgIHRo
aXMuY29udGVudCgnaGlkZS1idXR0b24nKS5vbmNsaWNrID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFj
dGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAp
OwotICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsIHRoaXMuX2N1cnJl
bnRUZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAg
ICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycs
IChyZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpID0+
IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgdGhp
cy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24s
IHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMucGFydCgnYmlzZWN0
LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwg
bm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0n
KS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gewogICAgICAgICAgICAgY29uc3QgYmlz
ZWN0aW5nQ29tbWl0U2V0ID0gdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAuZ2V0
KHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwogICAgICAgICAgICAgY29uc3QgW29uZUNvbW1pdFNl
dCwgYW5vdGhlckNvbW1pdFNldF0gPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKTsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSBbb25lQ29tbWl0U2V0
LCBiaXNlY3RpbmdDb21taXRTZXQsIGFub3RoZXJDb21taXRTZXRdOwotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91
cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3Vy
cmVudFRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zNjUsMjgg
KzM2NSw3NiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb250ZW50KCd0ZXN0LWdy
b3VwLWxpc3QnKS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTsKICAgICAgICAgaWYgKHNlbGVj
dGVkKQogICAgICAgICAgICAgc2VsZWN0ZWQuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTsK
LSAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAgIHRoaXMuX3Rlc3RHcm91cE1h
cC5nZXQoY3VycmVudEdyb3VwKS5saXN0SXRlbS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpOwor
CisgICAgICAgIGNvbnN0IHJldHJ5Rm9ybSA9IHRoaXMuY29udGVudCgncmV0cnktZm9ybScpOwor
ICAgICAgICBjb25zdCBiaXNlY3RGb3JtID0gdGhpcy5jb250ZW50KCdiaXNlY3QtZm9ybScpOwor
ICAgICAgICBsZXQgc3RhdHVzU3VtbWFyeSA9IG51bGw7CisgICAgICAgIGxldCByZXF1ZXN0U3Vt
bWFyeSA9IG51bGw7CisgICAgICAgIGxldCBoaWRlQnV0dG9uID0gbnVsbDsKKyAgICAgICAgbGV0
IHBlbmRpbmdSZXF1ZXN0Q2FuY2VsV2FybmluZyA9IG51bGw7CiAKICAgICAgICAgaWYgKGN1cnJl
bnRHcm91cCkgeworICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3Jv
dXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICAgICAgICAgICB0aGlz
LnBhcnQoJ3JldHJ5LWZvcm0nKS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVudEdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CiAgICAgICAgICAgICB0aGlzLnBhcnQoJ2Jpc2VjdC1mb3Jt
Jykuc2V0UmVwZXRpdGlvbkNvdW50KGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCkpOwotICAgICAgICAgICAgY29uc3Qgc3RhdHVzU3VtbWFyeSA9IGAke2N1cnJlbnRHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJlcXVlc3RlZCwgJHtjdXJyZW50R3JvdXAucmVwZXRp
dGlvbkNvdW50KCkgLSBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpfSBhZGRl
ZCBkdWUgdG8gZmFpbHVyZXMuYDsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1
bW1hcnknKS5pbm5lckhUTUwgPSBzdGF0dXNTdW1tYXJ5OwogCi0gICAgICAgICAgICBjb25zdCBh
dXRob3JlZEJ5ID0gY3VycmVudEdyb3VwLmF1dGhvcigpID8gYGJ5ICIke2N1cnJlbnRHcm91cC5h
dXRob3IoKX0iYCA6ICcnOwotICAgICAgICAgICAgdGhpcy5jb250ZW50KCdyZXF1ZXN0LXN1bW1h
cnknKS5pbm5lckhUTUwgPSBgU2NoZWR1bGVkICR7YXV0aG9yZWRCeX0gYXQgJHtjdXJyZW50R3Jv
dXAuY3JlYXRlZEF0KCl9YAorICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5oYXNSZXRyeSgp
KSB7CisgICAgICAgICAgICAgICAgc3RhdHVzU3VtbWFyeSA9IHRoaXMuY3JlYXRlRWxlbWVudCgn
ZGl2Jywge2lkOiAnc3RhdHVzLXN1bW1hcnknLCBjbGFzczogJ3N1bW1hcnknfSwKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fc3VtbWFyaXplZFRlc3RHcm91cChjdXJyZW50R3JvdXApKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgYXV0aG9yZWRCeSA9IGN1cnJlbnRHcm91
cC5hdXRob3IoKSA/IGBieSAiJHtjdXJyZW50R3JvdXAuYXV0aG9yKCl9IiBgIDogJyc7CisgICAg
ICAgICAgICByZXF1ZXN0U3VtbWFyeSA9IHRoaXMuY3JlYXRlRWxlbWVudCgnZGl2Jywge2lkOiAn
cmVxdWVzdC1zdW1tYXJ5JywgY2xhc3M6ICdzdW1tYXJ5J30sCisgICAgICAgICAgICAgICAgYFNj
aGVkdWxlZCAke2F1dGhvcmVkQnl9YXQgJHtjdXJyZW50R3JvdXAuY3JlYXRlZEF0KCl9YCk7CisK
KyAgICAgICAgICAgIGhpZGVCdXR0b24gPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicsIHsn
aWQnOiAnaGlkZS1idXR0b24nfSwKKyAgICAgICAgICAgICAgICBjdXJyZW50R3JvdXAuaXNIaWRk
ZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnKTsKKyAgICAgICAgICAgIGhpZGVCdXR0b24ub25jbGlj
ayA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHkn
LCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91
cC5oYXNQZW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdENhbmNlbFdh
cm5pbmcgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nLAorICAgICAgICAgICAgICAgICAgICB7
aWQ6ICdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnfSwgJyhjYW5jZWxzIHBlbmRpbmcg
cmVxdWVzdHMpJyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5jb250
ZW50KCdyZXRyeS1mb3JtJykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAn
bm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgnYmlzZWN0LWZvcm0nKS5zdHlsZS5kaXNwbGF5
ID0gY3VycmVudEdyb3VwICYmIHRoaXMuX2Jpc2VjdGluZ0NvbW1pdFNldEJ5VGVzdEdyb3VwLmdl
dChjdXJyZW50R3JvdXApID8gbnVsbCA6ICdub25lJzsKLSAgICAgICAgdGhpcy5jb250ZW50KCdz
dGF0dXMtc3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdy
b3VwLnJlcGV0aXRpb25Db3VudCgpID4gY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSA/IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgncmVxdWVzdC1zdW1t
YXJ5Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CiAKLSAg
ICAgICAgY29uc3QgaGlkZUJ1dHRvbiA9IHRoaXMuY29udGVudCgnaGlkZS1idXR0b24nKTsKLSAg
ICAgICAgaGlkZUJ1dHRvbi50ZXh0Q29udGVudCA9IGN1cnJlbnRHcm91cCAmJiBjdXJyZW50R3Jv
dXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnOwotICAgICAgICBoaWRlQnV0dG9uLnN0
eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOworICAgICAgICByZXRy
eUZvcm0uc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CisgICAg
ICAgIGJpc2VjdEZvcm0uc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiB0aGlzLl9iaXNl
Y3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQoY3VycmVudEdyb3VwKSA/IG51bGwgOiAnbm9u
ZSc7CisKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgndGVzdC1ncm91
cC1kZXRhaWxzJyksIFsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCgncmVzdWx0cy12aWV3ZXIn
KSwgdGhpcy5jb250ZW50KCdyZXZpc2lvbi10YWJsZScpLCBzdGF0dXNTdW1tYXJ5LCByZXF1ZXN0
U3VtbWFyeSwKKyAgICAgICAgICAgIHJldHJ5Rm9ybSwgYmlzZWN0Rm9ybSwgaGlkZUJ1dHRvbiwg
cGVuZGluZ1JlcXVlc3RDYW5jZWxXYXJuaW5nCisgICAgICAgIF0uZmlsdGVyKGVsZW1lbnQgPT4g
ISFlbGVtZW50KSk7CisgICAgfQorCisgICAgX3N1bW1hcml6ZWRUZXN0R3JvdXAodGVzdEdyb3Vw
KQorICAgIHsKKyAgICAgICAgaWYgKCF0ZXN0R3JvdXAuaGFzUmV0cnkoKSkKKyAgICAgICAgICAg
IHJldHVybiAnJzsKKworICAgICAgICBjb25zdCByZXRyeUNvdW50QnlMYWJlbCA9IG5ldyBNYXA7
CisgICAgICAgIGxldCBjdXJyZW50TGFiZWwgPSAnQSc7CisgICAgICAgIGZvciAoY29uc3QgY29t
bWl0U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKKyAgICAgICAgICAg
IHJldHJ5Q291bnRCeUxhYmVsLnNldChjdXJyZW50TGFiZWwsCisgICAgICAgICAgICAgICAgdGVz
dEdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpIC0gdGVzdEdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgICAgICAgICBjdXJyZW50TGFiZWwgPSBT
dHJpbmcuZnJvbUNoYXJDb2RlKGN1cnJlbnRMYWJlbC5jaGFyQ29kZUF0KDApICsgMSk7CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlDb3VudHNBcmVJZGVudGljYWwgPSB0ZXN0R3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpLmV2ZXJ5KChjb21taXRTZXQpID0+CisgICAgICAgICAgICBy
ZXRyeUNvdW50QnlMYWJlbC5nZXQoY29tbWl0U2V0KSA9PT0gcmV0cnlDb3VudEJ5TGFiZWwuZ2V0
KGN1cnJlbnRMYWJlbCkpOworCisgICAgICAgIGlmIChyZXRyeUNvdW50c0FyZUlkZW50aWNhbCkK
KyAgICAgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
fSByZXF1ZXN0ZWQsCisgICAgICAgICAgICAgICAgJHtyZXRyeUNvdW50QnlMYWJlbC5nZXQoY3Vy
cmVudExhYmVsKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7CisKKyAgICAgICAgY29uc3QgcmV0
cnlTdW1tYXJ5UGFydHMgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBbbGFiZWwsIGNvdW50XSBv
ZiByZXRyeUNvdW50QnlMYWJlbC5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGlmICghY291bnQp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXRyeVN1bW1hcnlQYXJ0
cy5wdXNoKGAke2NvdW50fSBhZGRlZCB0byAke2xhYmVsfSBjb25maWd1cmF0aW9uYCk7CisgICAg
ICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlTdW1tYXJ5ID0gcmV0cnlTdW1tYXJ5UGFydHMubGVu
Z3RoID09PSAxID8gcmV0cnlTdW1tYXJ5UGFydHNbMF0gOgorICAgICAgICAgICAgYCR7cmV0cnlT
dW1tYXJ5UGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJywgJyl9IGFuZCAke3JldHJ5U3VtbWFyeVBh
cnRzW3JldHJ5U3VtbWFyeVBhcnRzLmxlbmd0aCAtIDFdfWA7CiAKLSAgICAgICAgdGhpcy5jb250
ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNwbGF5ID0gY3Vy
cmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyBudWxsIDogJ25vbmUnOwor
ICAgICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVx
dWVzdGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAgICAg
c3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC01NTYsOCArNjA0LDggQEAgY2xhc3MgQW5hbHlzaXNU
YXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIGdyb3VwUGFuZS5saXN0
ZW5Ub0FjdGlvbignc2hvd0hpZGRlblRlc3RHcm91cHMnLCAoKSA9PiB0aGlzLl9zaG93QWxsVGVz
dEdyb3VwcygpKTsKICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdyZW5hbWVUZXN0
R3JvdXAnLCAodGVzdEdyb3VwLCBuZXdOYW1lKSA9PiB0aGlzLl91cGRhdGVUZXN0R3JvdXBOYW1l
KHRlc3RHcm91cCwgbmV3TmFtZSkpOwogICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24o
J3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHknLCAodGVzdEdyb3VwKSA9PiB0aGlzLl9oaWRlQ3Vy
cmVudFRlc3RHcm91cCh0ZXN0R3JvdXApKTsKLSAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0
aW9uKCdyZXRyeVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5
T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBy
ZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOwotICAgICAgICBncm91cFBhbmUu
bGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIGNvbW1pdFNldHMs
IHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9iaXNlY3RDdXJy
ZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3Rp
ZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdyZXRy
eVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0
aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gdGhpcy5fcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RH
cm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBl
KSk7CisgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3VwJywg
KHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRp
b24sIHJlcGV0aXRpb25UeXBlKSA9PiB0aGlzLl9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKHRlc3RH
cm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHJl
cGV0aXRpb25UeXBlKSk7CiAKICAgICAgICAgdGhpcy5wYXJ0KCdjYXVzZS1saXN0JykubGlzdGVu
VG9BY3Rpb24oJ2FkZEl0ZW0nLCAocmVwb3NpdG9yeSwgcmV2aXNpb24pID0+IHsKICAgICAgICAg
ICAgIHRoaXMuX2Fzc29jaWF0ZUNvbW1pdCgnY2F1c2UnLCByZXBvc2l0b3J5LCByZXZpc2lvbik7
CkBAIC04MzIsMTkgKzg4MCwyMiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFn
ZVdpdGhIZWFkaW5nIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX3JldHJ5Q3VycmVudFRl
c3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKQor
ICAgIGFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291
bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpCiAgICAgewogICAgICAgICBj
b25zdCBleGlzdGluZ05hbWVzID0gKHRoaXMuX3Rlc3RHcm91cHMgfHwgW10pLm1hcCgoZ3JvdXAp
ID0+IGdyb3VwLm5hbWUoKSk7CiAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBDb21taXRTZXQuY3Jl
YXRlTmFtZVdpdGhvdXRDb2xsaXNpb24odGVzdEdyb3VwLm5hbWUoKSwgbmV3IFNldChleGlzdGlu
Z05hbWVzKSk7CiAgICAgICAgIGNvbnN0IGNvbW1pdFNldExpc3QgPSB0ZXN0R3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpOwogICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IHRoaXMuX3Rhc2sucGxh
dGZvcm0oKSB8fCB0ZXN0R3JvdXAucGxhdGZvcm0oKTsKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91
cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVz
dEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRMaXN0LCBu
b3RpZnlPbkNvbXBsZXRpb24pCi0gICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RH
cm91cHMuYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0
b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBu
ZXdOYW1lLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TGlzdCwg
bm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAgICB0aGlzLl9k
aWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3Jv
dXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAgYXN5
bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfYmlzZWN0Q3VycmVudFRl
c3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25D
b21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRlc3RHcm91cC50YXNrKCkpOwogICAgICAgICBjb25zdCBleGlzdGluZ1Rlc3RHcm91cE5hbWVz
ID0gbmV3IFNldCgodGhpcy5fdGVzdEdyb3VwcyB8fCBbXSkubWFwKCh0ZXN0R3JvdXApID0+IHRl
c3RHcm91cC5uYW1lKCkpKTsKQEAgLTg1NCw3ICs5MDUsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRD
b21taXRTZXQgPSBjb21taXRTZXRzW2ldOwogICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwTmFt
ZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbihDb21taXRTZXQuZGlmZihw
cmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldCksIGV4aXN0aW5nVGVzdEdyb3VwTmFt
ZXMpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cC50
YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgW3ByZXZpb3VzQ29tbWl0U2V0
LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0
R3JvdXBzKHRlc3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
W3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9u
LCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlkRmV0Y2hU
ZXN0R3JvdXBzKHRlc3RHcm91cHMpOwogICAgICAgICAgICAgfSBjYXRjaChlcnJvcikgewogICAg
ICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcg
KyBlcnJvcik7CkBAIC04NjMsNyArOTE0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfY3JlYXRlVGVz
dEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0aXRp
b25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgX2NyZWF0ZVRl
c3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0
aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlw
ZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1lKHRl
c3RHcm91cE5hbWUpKSB7CiAgICAgICAgICAgICBhbGVydChgVGhlcmUgaXMgYWxyZWFkeSBhIHRl
c3QgZ3JvdXAgbmFtZWQgIiR7dGVzdEdyb3VwTmFtZX0iYCk7CkBAIC04ODksMTMgKzk0MCwxMyBA
QCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAg
ICAgZm9yIChsZXQgbGFiZWwgaW4gY29tbWl0U2V0TWFwKQogICAgICAgICAgICAgY29tbWl0U2V0
cy5wdXNoKGNvbW1pdFNldE1hcFtsYWJlbF0pOwogCi0gICAgICAgIHJldHVybiBUZXN0R3JvdXAu
Y3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVzdEdyb3VwTmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgICAgIHJl
dHVybiBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVz
dEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRp
b24sIHJlcGV0aXRpb25UeXBlKQogICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0
R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQo
J0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291bnQs
IHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBs
ZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291bnQs
IHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fdGFzay5pc0N1c3RvbSgpKTsKICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RH
cm91cE5hbWUodGVzdEdyb3VwTmFtZSkpIHsKQEAgLTkwMywxMCArOTU0LDEyIEBAIGNsYXNzIEFu
YWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25m
aWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAg
IC50aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJy
b3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2Fp
dCBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxh
dGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywg
bm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAgICB0aGlzLl9k
aWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKQorICAgICAgICB9IGNhdGNoIChlcnJv
cikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91
cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFz
RHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCmluZGV4IGQwYWYxNzNkYWFk
MzJiNDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLjI2YTI2NzdjM2I5ZTE2OWJmMTAyMDAxZTAy
Y2IzZmI3YWRiZTFiNGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTEwOCw2ICsxMDgsOCBAQCBjbGFzcyBD
aGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgdGhpcy5fdHJlbmRMaW5l
UGFyYW1ldGVycyA9IFtdOwogICAgICAgICB0aGlzLl90cmVuZExpbmVWZXJzaW9uID0gMDsKICAg
ICAgICAgdGhpcy5fcmVuZGVyZWRUcmVuZExpbmVPcHRpb25zID0gZmFsc2U7CisgICAgICAgIHRo
aXMuX3JlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJzsKKyAgICAgICAgdGhpcy5fcmVuZGVy
UmVwZXRpdGlvblR5cGVFeHBsYW5hdGlvbkxhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5j
dGlvbih0aGlzLnJlbmRlclJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb24uYmluZCh0aGlzKSk7CiAK
ICAgICAgICAgdGhpcy5jb25maWd1cmUocGxhdGZvcm1JZCwgbWV0cmljSWQpOwogICAgIH0KQEAg
LTEyMCwxMCArMTIyLDE4IEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2Ug
ewogICAgICAgICBjb25zdCBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3ggPSB0aGlzLmNvbnRl
bnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKTsKICAgICAgICAgY29uc3QgcmVwZXRpdGlvbkNv
dW50ID0gdGhpcy5jb250ZW50KCdjb25maXJtLXJlcGV0aXRpb24nKTsKICAgICAgICAgY29uc3Qg
bm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5jb250ZW50KCdub3RpZnktb24tY29tcGxldGlvbicp
OworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29udGVudCgncmVwZXRpdGlv
bi10eXBlJyk7CisgICAgICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlRXhwbGFuYXRpb24gPSB0aGlz
LmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZS1leHBsYW5hdGlvbicpOwogICAgICAgICBjcmVhdGVX
aXRoVGVzdEdyb3VwQ2hlY2tib3gub25jaGFuZ2UgPSAoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBzaG91bGREaXNhYmxlID0gIWNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5jaGVja2VkOwog
ICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LmRpc2FibGVkID0gc2hvdWxkRGlzYWJsZTsKICAg
ICAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbi5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7Cisg
ICAgICAgICAgICByZXBldGl0aW9uVHlwZS5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CisgICAg
ICAgICAgICByZXBldGl0aW9uVHlwZUV4cGxhbmF0aW9uLmRpc3BsYXkgPSBzaG91bGREaXNhYmxl
ID8gJ25vbmUnIDogbnVsbDsKKyAgICAgICAgfTsKKyAgICAgICAgcmVwZXRpdGlvblR5cGUub25j
aGFuZ2UgPSAoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlwZSA9IHJlcGV0
aXRpb25UeXBlLnZhbHVlOworICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMjQzLDEwICsyNTMsMTEgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4
dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGNvbnN0IGNyZWF0ZVdpdGhUZXN0R3JvdXAg
PSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKS5jaGVja2VkOwogICAgICAg
ICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlzLmNvbnRlbnQoJ2NvbmZpcm0tcmVwZXRpdGlv
bicpLnZhbHVlOwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb24gPSB0aGlzLmNvbnRl
bnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJykuY2hlY2tlZDsKKyAgICAgICAgY29uc3QgcmVwZXRp
dGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpLmNoZWNrZWQ7CiAKICAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IChjcmVh
dGVXaXRoVGVzdEdyb3VwID8KLSAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5h
bWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgbm90
aWZ5T25Db21wbGV0aW9uKSA6IEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwgc3RhcnRQb2ludCwg
ZW5kUG9pbnQpKTsKKyAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0
YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25D
b21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgOiBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0
YXJ0UG9pbnQsIGVuZFBvaW50KSk7CiAgICAgICAgICAgICBuZXdXaW5kb3cubG9jYXRpb24uaHJl
ZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svJyArIGFuYWx5c2lzVGFzay5pZCgpKTsKICAg
ICAgICAgICAgIHRoaXMuZmV0Y2hBbmFseXNpc1Rhc2tzKHRydWUpOwogICAgICAgICB9IGNhdGNo
KGVycm9yKSB7CkBAIC0yNjksOCArMjgwLDggQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hh
cnRQYW5lQmFzZSB7CiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wbGF0
Zm9ybSAmJiB0aGlzLl9tZXRyaWMpIHsKLSAgICAgICAgICAgIHZhciBtZXRyaWMgPSB0aGlzLl9t
ZXRyaWM7Ci0gICAgICAgICAgICB2YXIgcGxhdGZvcm0gPSB0aGlzLl9wbGF0Zm9ybTsKKyAgICAg
ICAgICAgIGNvbnN0IG1ldHJpYyA9IHRoaXMuX21ldHJpYzsKKyAgICAgICAgICAgIGNvbnN0IHBs
YXRmb3JtID0gdGhpcy5fcGxhdGZvcm07CiAKICAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFj
ZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFuZS10aXRsZScpLAogICAg
ICAgICAgICAgICAgIG1ldHJpYy5mdWxsTmFtZSgpICsgJyBvbiAnICsgcGxhdGZvcm0ubmFtZSgp
KTsKQEAgLTI3OSw5ICsyOTAsMTcgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5l
QmFzZSB7CiAgICAgICAgIGlmICh0aGlzLl9tYWluQ2hhcnRTdGF0dXMpCiAgICAgICAgICAgICB0
aGlzLl9yZW5kZXJBY3Rpb25Ub29sYmFyKCk7CiAKKyAgICAgICAgdGhpcy5fcmVuZGVyUmVwZXRp
dGlvblR5cGVFeHBsYW5hdGlvbkxhemlseS5ldmFsdWF0ZSh0aGlzLl9yZXBldGl0aW9uVHlwZSk7
CisKICAgICAgICAgc3VwZXIucmVuZGVyKCk7CiAgICAgfQogCisgICAgcmVuZGVyUmVwZXRpdGlv
blR5cGVFeHBsYW5hdGlvbihyZXBldGl0aW9uVHlwZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGV4
cGxhbmF0aW9uID0gcmVwZXRpdGlvblR5cGUgPT09ICdhbHRlcm5hdGluZycgPyAnKGUuZy4gQUJB
QkFCKScgOiAnKGUuZy4gQUFBQkJCKSc7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlz
LmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZS1leHBsYW5hdGlvbicpLCBleHBsYW5hdGlvbikKKyAg
ICB9CisKICAgICBfcmVuZGVyQWN0aW9uVG9vbGJhcigpCiAgICAgewogICAgICAgICB2YXIgYWN0
aW9ucyA9IFtdOwpAQCAtNTg5LDcgKzYwOCwxOCBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBD
aGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRp
b24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPml0ZXJhdGlvbnM8L2xhYmVsPgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3gi
IGlkPSJub3RpZnktb24tY29tcGxldGlvbiIgY2hlY2tlZD4gTm90aWZ5IG9uIGNvbXBsZXRpb248
L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+SW48L2xhYmVs
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InJlcGV0aXRpb24tdHlw
ZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+YWx0
ZXJuYXRpbmc8L29wdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlv
bj5zZXF1ZW50aWFsPC9vcHRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxl
Y3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPm1vZGU8L2xhYmVsPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0icmVwZXRpdGlvbi10eXBlLWV4cGxh
bmF0aW9uIj4oZS5nLiBBQkFCQUIpPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwv
bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Im5vdGlmeS1vbi1jb21wbGV0
aW9uIiBjaGVja2VkPk5vdGlmeSBvbiBjb21wbGV0aW9uPC9sYWJlbD4KICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAg
ICAgICAgICAgPHVsIGNsYXNzPSJjaGFydC1wYW5lLWZpbHRlcmluZy1vcHRpb25zIHBvcG92ZXIi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1w
YWdlLmpzCmluZGV4IDMwMWZkMmEyOTA2NTFkNTEyOGMzNTIzYWY0OTgyMGYyMDNiYzY2YTMuLjY3
ZWQxMWM1NTc1ZGQ2ZjBmMWViZmUwZDNjMWI1ZGQwNjY4ZDA5ZjQgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2st
cGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2Ny
ZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAgLTIyLDE0ICsyMiwxNCBAQCBjbGFzcyBDcmVh
dGVBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgdGhp
cy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX2NyZWF0
ZUFuYWx5c2lzVGFza1dpdGhHcm91cC5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBfY3JlYXRl
QW5hbHlzaXNUYXNrV2l0aEdyb3VwKHJlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29t
bWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCBub3RpZnlPbkNvbXBsZXRpb24pCisg
ICAgYXN5bmMgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cChyZXBldGl0aW9uQ291bnQsIHRl
c3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIFRlc3RHcm91cC5j
cmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJl
cGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKS50aGVuKCh0YXNr
KSA9PiB7Ci0gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlcigpLnVybChgYW5hbHlz
aXMvdGFzay8ke3Rhc2suaWQoKX1gKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0
IHRhc2sgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3Jt
LCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlm
eU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICAgICAgbG9jYXRpb24uaHJl
ZiA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgpfWApOwotICAg
ICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAg
ICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7
Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmVuZGVyKCkKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVl
c3RzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKaW5kZXggZmQ0MDQzNDQyMzcwZjQ1M2YxZmQzZWU3Yjdh
YTVhNTFmZmFjMWIyMS4uYTJjZWFlNDA3YzI5YjBmMmFmNjRmODE4MTk3ZDkxOGU1ZWZiMDE0NCAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVp
bGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKQEAgLTU2Niw2ICs1NjYsNjIgQEAg
ZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0p
OwogICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCBzdGlsbCByZXR1cm4gYnVpbGQgcmVxdWVzdHMg
YXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2hlbiB0ZXN0IGdyb3VwIGhhcyBh
bGwgYnVpbGQgcmVxdWVzdHMgZmluaXNoZWQgd2l0aCAibWF5TmVlZE1vcmVSZXF1ZXN0IiBmbGFn
IHRvIGJlIHRydWVzJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29t
cGxldGVkJywgJ2ZhaWxlZCddLCB0cnVlLCBudWxsLCBudWxsLCAnYWx0ZXJuYXRpbmcnLCB0cnVl
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwor
ICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywg
J2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5n
dGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRb
J2NvbW1pdFNldHMnXVswXS5pZCksIDQwMSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLAorICAgICAgICAg
ICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGws
IHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNics
IGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJv
b3RGaWxlOiBudWxsfV0pOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50
KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCksIDQwMik7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5yZXZpc2lvbkl0ZW1zLAor
ICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0
Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6
ICc5NjMzNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDog
ZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoY29udGVudFsnY29tbWl0cyddLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzBdLmlkKSwgODc4MzIpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5yZXBvc2l0
b3J5LCAnOScpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1p
dHMnXVswXS5yZXZpc2lvbiwgJzEwLjExIDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5pZCksIDkzMTE2KTsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmVwb3Np
dG9yeSwgJzExJyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29t
bWl0cyddWzFdLnJldmlzaW9uLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzJdLmlkKSwgOTYzMzYpOworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXBvc2l0b3J5
LCAnMTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRz
J11bMl0ucmV2aXNpb24sICcxOTI3MzYnKTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0u
aWQpLCA3MDApOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0ub3JkZXIpLCAwKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAn
NjUnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzBdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5zdGF0dXMsICdj
b21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsn
YnVpbGRSZXF1ZXN0cyddWzBdLnRlc3QsICcyMDAnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uaWQpLCA3
MDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0ub3JkZXIpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnBsYXRmb3JtLCAnNjUnKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzFdLmNvbW1pdFNldCksIDQwMik7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5zdGF0dXMsICdjb21wbGV0
ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzFdLnRlc3QsICcyMDAnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJp
Y3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uaWQpLCA3MDIpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMl0ub3JkZXIpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzJdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5zdGF0dXMsICdjb21wbGV0ZWQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddWzJdLnRlc3QsICcyMDAnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQpLCA3MDMpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bM10ub3JkZXIpLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzNdLmNvbW1pdFNldCksIDQwMik7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5zdGF0dXMsICdmYWlsZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRl
c3QsICcyMDAnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIHN1cHBv
cnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbicsICgpID0+IHsKICAgICAgICAgcmV0dXJu
IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0
YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0
aW9uPXRydWUnKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMKaW5kZXggZGNlMDljYmFiMzUwYTIyYTgzMWQ1YmY5OTIxN2FlNzA5
OTcyNjk4Mi4uNWQyMTBlMzYwZjgxMjc1MjgwYzc1ZDQ3MGJkMmFhMWQ5MjZiMGRkMiAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMu
anMKQEAgLTEzNCw3ICsxMzQsOCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWls
ZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0
b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dl
YktpdCcpWzBdOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Myd9fV07CiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCi0gICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNr
TmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwg
dGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJl
cGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgICAgICB7bmFtZTogJ3Rl
c3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAgIG5l
ZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHMs
IGNvbW1pdFNldDogbnVsbH0pOwogICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CiAKICAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlO
ZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CkBAIC0xNDQsMTQgKzE0NSwxNiBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKLSAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAg
IGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBldGl0aW9uQ291
bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CiAKICAgICAg
ICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywg
e2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSk7CiAKICAgICAgICAgY29uc3Qg
dXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNr
SWQnXSwgdHJ1ZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxl
bmd0aCwgMSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3Jv
dXBzWzBdLnJlcGV0aXRpb25Db3VudCgpKSwgNCk7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0ucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkpLCA0KTsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
KSwgMik7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVl
c3RzKCksIHRydWUpOwogICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB1cGRhdGVkR3Jv
dXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKSkgewpAQCAtMTc0LDEwICsxNzcsMTY3IEBAIGRl
c2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7
CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKLSAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7
CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBl
dGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7
CiAgICAgICAgIGF3YWl0IGdyb3VwLnVwZGF0ZUhpZGRlbkZsYWcodHJ1ZSk7CiAKICAgICAgICAg
YXdhaXQgYXNzZXJ0VGhyb3dzKCdDYW5ub3RBZGRUb0hpZGRlblRlc3RHcm91cCcsIGFzeW5jICgp
ID0+IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycs
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pKQogICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGFkZCBidWlsZCByZXF1ZXN0cyB0byB0ZXN0IGdyb3VwIGZv
ciBhIHNwZWNpZmljIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFk
ZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdl
YmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5
Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
Y29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAg
IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydn
cm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdy
b3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkp
LCAyKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVsxXS5pZCgpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBh
ZGRDb3VudDogMiwgY29tbWl0U2V0fSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
bWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRT
ZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAg
Y29uc3QgYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5y
ZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRTZXQubGVuZ3RoLCAyKTsKKworICAg
ICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENv
bW1pdFNldHMoKVsxXTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0
U2V0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNGb3JTZWNvbmRD
b21taXRTZXQubGVuZ3RoLCA0KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgYWRkIGJ1aWxk
IHJlcXVlc3RzIHJpZ2h0IGFmdGVyIHJlcXVlc3RzIHdpdGggc2FtZSBjb21taXQgc2V0IGZvciBz
ZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRy
aWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAn
dGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxh
dGZvcm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICAgICAgdGVzdDogTW9j
a0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25U
eXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRl
ZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAg
ICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
KQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRp
b25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpKSwgMik7CisKKyAgICAgICAgY29uc3QgY29t
bWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF0uaWQoKTsKKwor
ICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVz
dHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pOwor
CisgICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JU
YXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFy
c2VJbnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAg
ICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENv
bW1pdFNldHMoKVswXTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0
U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNl
dCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21t
aXRTZXQubGVuZ3RoLCA0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVz
dHNGb3JGaXJzdENvbW1pdFNldFszXS5vcmRlcigpLCAzKQorCisgICAgICAgIGNvbnN0IHNlY29u
ZENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOwor
ICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdy
b3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1pdFNldC5sZW5ndGgs
IDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENv
bW1pdFNldFswXS5vcmRlcigpLCA0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdHNGb3JTZWNvbmRDb21taXRTZXRbMV0ub3JkZXIoKSwgNSk7CisgICAgfSk7CisKKyAg
ICBpdCgnc2hvdWxkIG5vdCBzaGlmdCByZXF1ZXN0IG9yZGVyIGlmIGFkZGluZyBidWlsZCByZXF1
ZXN0IHRvIGNvbW1pdCBzZXQgcmVwcmVzZW50aW5nIGxhc3QgY29uZmlndXJhdGlvbiBpbiBzZXF1
ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdn
ZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUo
KSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtp
dC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVz
dCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICAgICAgdGVzdDogTW9ja0Rh
dGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBl
OiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdy
b3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3Vw
cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAg
ICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25D
b3VudEZvckNvbW1pdFNldChjb21taXRTZXQpKSwgMik7CisKKyAgICAgICAgY29uc3QgY29tbWl0
U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV0uaWQoKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMn
LCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pOworCisg
ICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBk
YXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJ
bnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAg
ICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1p
dFNldHMoKVswXTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0U2V0
ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRT
ZXQubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNG
b3JGaXJzdENvbW1pdFNldFsxXS5vcmRlcigpLCAxKQorCisgICAgICAgIGNvbnN0IHNlY29uZENv
bW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAg
ICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vw
c1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1pdFNldC5sZW5ndGgsIDQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldFswXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVx
dWVzdHNGb3JTZWNvbmRDb21taXRTZXRbMV0ub3JkZXIoKSwgMyk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0WzJdLm9yZGVyKCksIDQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldFszXS5vcmRlcigpLCA1KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdp
dGggIkNvbW1pdFNldE5vdEluVGVzdEdyb3VwIiBpZiBjb21taXQgc2V0IGlzIG5vdCBpbiB0ZXN0
IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENy
ZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5
LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktp
dCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9
fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFt
ZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVz
dDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0
aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3Jv
dXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdy
b3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0ZXN0
R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkp
LCAyKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVswXS5pZCgpICsgdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRz
KClbMV0uaWQoKSArIDE7CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdDb21taXRTZXRO
b3RJblRlc3RHcm91cCcsICgpID0+CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291
bnQ6IDIsIGNvbW1pdFNldH0pKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdp
dGggIkludmFsaWRDb21taXRTZXQiIGlmIGNvbW1pdCBzZXQgaWQgaXMgbm90IGFuIGludGVnZXIn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFz
aygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCku
ZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07
CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3Ro
ZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNv
dW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0g
cmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwg
bWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOwor
CisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9ICdpbnZhbGlkJzsKKworICAgICAgICBhd2FpdCBh
c3NlcnRUaHJvd3MoJ0ludmFsaWRDb21taXRTZXQnLCAoKSA9PgorICAgICAgICAgICAgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRl
ZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXR9KSk7CisgICAgfSk7CiB9KTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3Rz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcwppbmRleCAyYjI3NTBhYTdhMmRkM2JjNzk1
YTc2NzI3NjRiYWFhM2ViODRkMWI2Li5jYTVhOWRjMjQ4ZDhlMzA2NGNlODY4M2MyOWZjMzIyYzI0
MjdmNTk3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFu
YWx5c2lzLXRhc2stdGVzdHMuanMKQEAgLTY4Miw0ICs2ODIsMTA3IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sgd2l0aCBub2RlIHByaXZpbGVnZWQgYXBp
JywgZnVuY3RpCiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21t
aXRGb3JSZXBvc2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsK
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBv
c2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKICAgICB9KTsK
KworICAgIGl0KCdzaG91bGQgY3JlYXRlIGFuIGFuYWx5c2lzIHRhc2sgd2l0aCB0ZXN0IGdyb3Vw
IHdpdGggInNlcXVlbnRpYWwiIG1vZGUgd2hlbiBzcGVjaWZpZWQnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IDE7
CisgICAgICAgIGNvbnN0IHRlc3QxSWQgPSAyOworICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZUlk
ID0gMTIzNDsKKworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTogJ1N1aXRlJ30pOwor
ICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiB0ZXN0MUlkLCBuYW1lOiAndGVz
dDEnLCBwYXJlbnQ6IDF9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3NvbWUgcGxhdGZvcm0nfSk7
CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywge2lkOiAxMjM0
LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0
cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwgbmFtZTogJ3dlYmtpdC1v
bmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5z
ZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogd2Via2l0SWQsIGdy
b3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmln
dXJhdGlvbnMnLCB7dGVzdDogdGVzdDFJZCwgcGxhdGZvcm06IHBsYXRmb3JtSWQsIHRyaWdnZXJh
YmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxkZXJGb3JSZXBvcnQo
cmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOworICAg
ICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8n
LCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0
Y2goKTsKKworICAgICAgICBsZXQgdGVzdDEgPSBUZXN0LmZpbmRCeUlkKHRlc3QxSWQpOworICAg
ICAgICBsZXQgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxhdGZvcm1JZCk7Cisg
ICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2Nv
bmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlkKCksIHBsYXRmb3Jt
OiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0UnVucyA9IGF3YWl0IGRi
LnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1snaWQnXX0pOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsKKworICAgICAgICBj
b25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNpb246ICcxOTE2MjInfX07
CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNp
b246ICcxOTE2MjMnfX07CisKKyAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdjb25maXJt
JywgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZp
cm0nLCByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlzaW9uU2V0XSwK
KyAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwgZW5kUnVuOiB0ZXN0UnVu
c1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnc2Vx
dWVudGlhbCd9KTsKKworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZl
dGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
YXNrLm5hbWUoKSwgJ2NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0KCF0YXNrLmhhc1Jlc3VsdHMo
KSk7CisgICAgICAgIGFzc2VydCh0YXNrLmhhc1BlbmRpbmdSZXF1ZXN0cygpKTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmJ1Z3MoKSwgW10pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHRhc2suY2F1c2VzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbCh0YXNrLmZpeGVzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRhc2suY2hhbmdlVHlwZSgpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRh
c2sucGxhdGZvcm0oKS5sYWJlbCgpLCAnc29tZSBwbGF0Zm9ybScpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGFzay5tZXRyaWMoKS50ZXN0KCkubGFiZWwoKSwgJ3Rlc3QxJyk7CisKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFz
ay5pZCgpKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5uYW1lKCksICdDb25maXJtJyk7CisgICAgICAgIGFz
c2VydC5vayh0ZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGNvbnN0IGJ1
aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFz
c2VydChidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzFd
LmNvbW1pdFNldCgpKSk7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNl
dCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29u
c3QgZmlyc3RDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAg
ICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOwor
ICAgICAgICBjb25zdCB3ZWJraXRSZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZCh3ZWJr
aXRJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21taXRG
b3JSZXBvc2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0
b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKKyAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgd2hlbiB0
ZXN0IG1vZGUgaXMgbmVpdGhlciAiYWx0ZXJuYXRpbmciIG5vciAic2VxdWVudGlhbCInLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxh
dGZvcm1JZCA9IDE7CisgICAgICAgIGNvbnN0IHRlc3QxSWQgPSAyOworICAgICAgICBjb25zdCB0
cmlnZ2VyYWJsZUlkID0gMTIzNDsKKworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTog
J1N1aXRlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiB0ZXN0MUlk
LCBuYW1lOiAndGVzdDEnLCBwYXJlbnQ6IDF9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdy
ZXBvc2l0b3JpZXMnLCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBh
d2FpdCBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3NvbWUg
cGxhdGZvcm0nfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVz
Jywge2lkOiAxMjM0LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdhaXQg
ZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwgbmFt
ZTogJ3dlYmtpdC1vbmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAg
YXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTog
d2Via2l0SWQsIGdyb3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dl
cmFibGVfY29uZmlndXJhdGlvbnMnLCB7dGVzdDogdGVzdDFJZCwgcGxhdGZvcm06IHBsYXRmb3Jt
SWQsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxk
ZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2
aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcv
YXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQg
TWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICBsZXQgdGVzdDEgPSBUZXN0LmZpbmRCeUlkKHRl
c3QxSWQpOworICAgICAgICBsZXQgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxh
dGZvcm1JZCk7CisgICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0
Um93KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlk
KCksIHBsYXRmb3JtOiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0UnVu
cyA9IGF3YWl0IGRiLnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1sn
aWQnXX0pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsK
KworICAgICAgICBjb25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNpb246
ICcxOTE2MjInfX07CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Via2l0
SWRdOiB7cmV2aXNpb246ICcxOTE2MjMnfX07CisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygn
SW52YWxpZFJlcGV0aXRpb25UeXBlJywgKCkgPT4KKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdjb25maXJtJywgcmVw
ZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJt
JywgcmV2aXNpb25TZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sIHJl
cGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywKKyAgICAgICAgICAgICAgICBzdGFydFJ1bjog
dGVzdFJ1bnNbMF1bJ2lkJ10sIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sIG5lZWRzTm90aWZp
Y2F0aW9uOiB0cnVlfSkpOworICAgIH0pOwogfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3Vw
LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxl
Z2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwppbmRleCA2N2Q4NGFkYWY1OTZhMTcw
YmRkZmVhZjIyNDIwZjJjMjUwNWUxM2Q2Li5kMTkxYjVkNjNjMDgxMDkzZTRjNGZjNWU1NWNiYzE4
ZTZlYjkyNjE3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRl
c3QtZ3JvdXAtdGVzdHMuanMKQEAgLTcsNiArNyw4IEBAIGNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwogY29uc3QgVGVtcG9yYXJ5RmlsZSA9
IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBvcmFyeS1maWxlLmpzJykuVGVtcG9yYXJ5RmlsZTsK
IGNvbnN0IGFkZFdvcmtlckZvclJlcG9ydCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1v
cGVyYXRpb25zLmpzJykuYWRkV29ya2VyRm9yUmVwb3J0OwogY29uc3QgcHJlcGFyZVNlcnZlclRl
c3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVT
ZXJ2ZXJUZXN0OworY29uc3QgYXNzZXJ0VGhyb3dzID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29t
bW9uLW9wZXJhdGlvbnMuanMnKS5hc3NlcnRUaHJvd3M7CisKIAogZnVuY3Rpb24gY3JlYXRlQW5h
bHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlzaW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQog
ewpAQCAtNDAwLDcgKzQwMiw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRl
c3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGdyb3Vw
SWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3Vu
dCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05v
dGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRS
ZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNCk7CkBAIC00NDcsNyArNDQ5LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRl
c3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
Z3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
bkNvdW50KCksIDEpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5l
ZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5i
dWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCA0KTsKQEAgLTQ4NSw3ICs0ODcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsK
ICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsK
QEAgLTUyNCw3ICs1MjYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
ZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTU1Niw3ICs1
NTgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBd
OwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCBy
ZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTYwMyw3ICs2MDUsNyBAQCBkZXNj
cmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwot
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5u
ZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdy
b3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY0NSw3ICs2NDcsNyBAQCBkZXNjcmliZSgnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNh
dGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVx
dWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVu
Z3RoLCA0KTsKQEAgLTY5NCw3ICs2OTYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAg
ICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAg
LTc0Myw3ICs3NDUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdy
b3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50
ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtODA4LDcgKzgxMCw3IEBAIGRlc2NyaWJl
KCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2Nr
RGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSk7CkBAIC04ODMsNyArODg1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
dGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZp
bmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTk2Niw3ICs5NjgsNyBAQCBk
ZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSkpOwpAQCAtMTA2MCw3ICsxMDYyLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRl
c3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9u
KCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBs
YXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTExNTcsNyAr
MTE1OSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7
Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCks
IDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZp
Y2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwg
VGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC0xMjM1LDcgKzEyMzcsNyBAQCBkZXNjcmliZSgnL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25zdCBn
cm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
ZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5l
ZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxk
UmVxdWVzdHMoKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7CkBAIC0xMjY0LDcgKzEyNjYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0
ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNb
MF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3Vw
SWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCks
IDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigp
KTsKICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtMTMwOCw3ICsx
MzEwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIFRlc3RHcm91cC5zb3J0QnlOYW1lKHRlc3RHcm91cHMp
OwogCiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5uYW1lKCks
ICd0ZXN0MScpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0u
cmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGxl
dCByZXF1ZXN0cyA9IHRlc3RHcm91cHNbMF0uYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBsZXQg
c2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwpAQCAtMTMyMSw3ICsxMzIzLDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9y
eSh3ZWJraXQpLCAnMTkxNjIzJyk7CiAKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
ZXN0R3JvdXBzWzFdLm5hbWUoKSwgJ3Rlc3QyJyk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGVzdEdyb3Vwc1sxXS5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICAgICAgcmVxdWVzdHMgPSB0ZXN0R3JvdXBzWzFdLmJ1aWxkUmVxdWVzdHMo
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwog
ICAgICAgICAgICAgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwpAQCAtMTMzNiw0ICsx
MzM4LDUzIEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOwogICAgICAgICB9KTsKICAgICB9KTsK
KworICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCB3aXRoIGFuIGFuYWx5c2lzIHRh
c2sgd2l0aCAic2VxdWVudGlhbCIgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQg
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qg
d2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0g
W3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25h
bWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAg
ICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlw
ZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsKKyAgICAgICAgY29uc3QgaW5z
ZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IFth
bmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW0FuYWx5c2lzVGFz
ay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVz
dWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFuYWx5
c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlv
bigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1swXS5vcmRlcigpLCAwKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigpLCAzKTsKKworICAgICAgICBhc3NlcnQocmVxdWVz
dHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzFdLmNvbW1pdFNldCgpKSk7CisgICAg
ICAgIGFzc2VydChyZXF1ZXN0c1syXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbM10uY29t
bWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0
KCk7CisgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1syXS5jb21taXRTZXQoKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5yZXBvc2l0b3JpZXMoKSwgW3dl
YmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDEuY3VzdG9tUm9vdHMo
KSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0
MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOworICAgIH0pOworCisg
ICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZE1vZGUiIGlmIHRlc3QgbW9kZSBpcyBu
ZWl0aGVyICJhbHRlcm5hdGluZyIgbm9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkp
ID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworCisgICAgICAgIGF3YWl0IGFzc2Vy
dFRocm93cygnSW52YWxpZFJlcGV0aXRpb25UeXBlJywgKCkgPT4KKyAgICAgICAgICAgIFByaXZp
bGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0Jywg
dGFza05hbWU6ICdvdGhlciB0YXNrJywKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2ludmFs
aWQtbW9kZScsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSkpOworICAgIH0pOwog
fSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10
ZXN0cy5qcwppbmRleCA0NTA2YzNiMjdmMDVmMjMyYWI0MGM1ZTZhYzc0ZTdhZDVmNDJkNTk4Li4x
NjA3NzFiY2ZiNWQ0ZjI3ZmQxMzRiNTg2NDg3MmIyYTI1YjdmNzVhIDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10
ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTE2OCw3
ICsxNjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJywg
ZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsK
ICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQoKSk7CiAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3Vw
JywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVu
Z3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCBmYWxz
ZSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBA
IC0yNzYsNCArMjc2LDQzIEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAnLCBmdW5jdGlvbigpewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdy
b3Vwc1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0uaXNIaWRkZW4oKSwgdHJ1ZSk7CiAgICAgfSk7CisK
KyAgICBpdCgnc2hvdWxkIGNhbmNlbCBhIHRlc3QgZ3JvdXAgd2l0aCAibWF5X25lZWRfbW9yZV9y
ZXF1ZXN0cyIgZmxhZyBjbGVhcmVkJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRU
cmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5u
YW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZp
c2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJ
ZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0g
YXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworCisgICAgICAgIGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNl
cnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBsZXQg
dXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNr
SWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxl
bmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1h
eU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCB0ZXN0R3JvdXAgPSB1cGRh
dGVkR3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5l
ZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3RzID0gdGVz
dEdyb3VwLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChidWlsZFJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3Rz
WzBdLmlzUGVuZGluZygpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMV0uaXNQZW5k
aW5nKCkpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0
ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGNhbmNlbDogdHJ1ZX0pOwor
CisgICAgICAgIHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRl
ZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBd
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVz
dHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkpOwor
ICAgICAgICBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBdLnN0YXR1cygpLCAnY2Fu
Y2VsZWQnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0uc3Rh
dHVzKCksICdjYW5jZWxlZCcpOworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9y
ZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcwppbmRleCBlY2ZlYzhk
MTZlOTM0ZDU3ZDMyNzE4ODhlYzU2M2IzNDQ2ZWFiNGJhLi5mMjRmNDMzMWEwYjQxMGM3MGJjZGI4
OWIwMDhkYzk2NWQxOWI0MGEzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9u
cy5qcwpAQCAtNTMsNyArNTMsNyBAQCBhc3luYyBmdW5jdGlvbiBhc3NlcnRUaHJvd3MoZXhwZWN0
ZWRFcnJvciwgdGVzdEZ1bmN0aW9uKQogewogICAgIGxldCB0aHJvd25FeGNlcHRpb24gPSBmYWxz
ZTsKICAgICB0cnkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCkKKyAgICAgICAg
YXdhaXQgdGVzdEZ1bmN0aW9uKCk7CiAgICAgfSBjYXRjaChlcnJvcikgewogICAgICAgICB0aHJv
d25FeGNlcHRpb24gPSB0cnVlOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXJyb3IsIGV4
cGVjdGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IDY4MWFmY2M0Y2Y2YWQw
ZTU5MmVjYjYwMTFhNjFjYjFjZjk0Y2VkMWIuLjQ5ZWQ0ZjkzOTBhMDdkNjNmNTFkMjkxNjM4YmEy
ZDg1MjhiY2NlYTAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTY0LDEyICs2NCwxNCBA
QCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9ydW5zJywge2lkOiA4
MDEsIGNvbmZpZzogMzAxLCBidWlsZDogOTAxLCBtZWFuX2NhY2hlOiAxMDB9KSwKICAgICAgICAg
XSk7CiAgICAgfSwKLSAgICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0LCBu
ZWVkc05vdGlmaWNhdGlvbj10cnVlLCB1cmxMaXN0PVtdKQorICAgIGFkZE1vY2tEYXRhOiBmdW5j
dGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwgdXJsTGlzdCA9
IG51bGwsIGNvbW1pdFNldExpc3QgPSBudWxsLCByZXBldGl0aW9uVHlwZT0nYWx0ZXJuYXRpbmcn
LCBtYXlOZWVkTW9yZVJlcXVlc3RzPWZhbHNlKQogICAgIHsKICAgICAgICAgaWYgKCFzdGF0dXNM
aXN0KQogICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnLCAncGVuZGluZyddOwogICAgICAgICBpZiAoIXVybExpc3QpCiAgICAgICAgICAgICB1
cmxMaXN0ID0gW251bGwsIG51bGwsIG51bGwsIG51bGxdOworICAgICAgICBpZiAoIWNvbW1pdFNl
dExpc3QpCisgICAgICAgICAgICBjb21taXRTZXRMaXN0ID0gWzQwMSwgNDAyLCA0MDEsIDQwMl07
CiAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICB0aGlzLmFkZE1vY2tD
b25maWd1cmF0aW9uKGRiKSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7
aWQ6IDQwMX0pLApAQCAtODEsMTQgKzgzLDE1IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdhbmFseXNpc190YXNrcycsIHtpZDogNTAwLCBwbGF0Zm9ybTogNjUsIG1ldHJp
YzogMzAwLCBuYW1lOiAnc29tZSB0YXNrJywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgw
MSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAgICAg
ICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVon
fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2
MDAsIHRhc2s6IDUwMCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlv
bl9jb3VudDogNCwgbmVlZHNfbm90aWZpY2F0aW9uOiBuZWVkc05vdGlmaWNhdGlvbn0pLAotICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0
YXR1c0xpc3RbMF0sIHVybDogdXJsTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRv
cnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRl
cjogMCwgY29tbWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3Jl
cXVlc3RzJywge2lkOiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFd
LCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1
LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBz
dGF0dXNMaXN0WzJdLCB1cmw6IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0
b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3Jk
ZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9y
ZXF1ZXN0cycsIHtpZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHVybDogdXJsTGlzdFsz
XSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2
NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRh
c2s6IDUwMCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3Vu
dDogMiwKKyAgICAgICAgICAgICAgICBuZWVkc19ub3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0
aW9uLCByZXBldGl0aW9uX3R5cGU6IHJlcGV0aXRpb25UeXBlLCBtYXlfbmVlZF9tb3JlX3JlcXVl
c3RzOiBtYXlOZWVkTW9yZVJlcXVlc3RzfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdXJsOiB1cmxMaXN0
WzBdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06
IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiBjb21taXRT
ZXRMaXN0WzBdfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lk
OiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFdLCB0cmlnZ2VyYWJs
ZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAs
IGdyb3VwOiA2MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzFdfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czog
c3RhdHVzTGlzdFsyXSwgdXJsOiB1cmxMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3Np
dG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9y
ZGVyOiAyLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzJdfSksCisgICAgICAgICAgICBkYi5p
bnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwg
dXJsOiB1cmxMaXN0WzNdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAw
MSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRf
c2V0OiBjb21taXRTZXRMaXN0WzNdfSksCiAgICAgICAgIF0pOwogICAgIH0sCi0gICAgYWRkTW9j
a0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9u
PXRydWUsIGFkZE1vY2tDb25maWd1cmF0aW9uPXRydWUpCisgICAgYWRkTW9ja0J1aWxkUmVxdWVz
dHNXaXRoUm9vdHMoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwgYWRk
TW9ja0NvbmZpZ3VyYXRpb24gPSB0cnVlKQogICAgIHsKICAgICAgICAgY29uc3Qgc2V0dXBTdGVw
cyA9IGFkZE1vY2tDb25maWd1cmF0aW9uID8gW3RoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIp
XSA6IFtdOwogICAgICAgICBpZiAoIXN0YXR1c0xpc3QpCkBAIC0yMDEsMTAgKzIwNCwxMCBAQCBN
b2NrRGF0YSA9IHsKICAgICAgICAgY29uc3QgcmVwb3NpdG9yeV9ncm91cCA9IDIwMDE7CiAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lz
X3Rlc3RfZ3JvdXBzJywge2lkOiA2MDEsIHRhc2s6IDUwMCwgbmFtZTogJ2Fub3RoZXIgdGVzdCBn
cm91cCcsIGF1dGhvciwgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0fSksCi0gICAgICAgICAg
ICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlz
dFszXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91
cDogNjAxLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJp
Z2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBv
cmRlcjogMCwgY29tbWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MTIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUs
IHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwg
Y29tbWl0X3NldDogNDAxfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3Rz
Jywge2lkOiA3MTEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRv
cnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMSwgY29tbWl0X3Nl
dDogNDAyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3
MTIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAs
IHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAxfSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1
czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3Jt
LCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAg
IF0pOwogICAgIH0sCiAgICAgYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyhkYiwgc3RhdHVz
TGlzdCkKQEAgLTQ4NCw3ICs0ODcsNiBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAi
c2NoZWR1bGVyIjogWyJBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVs
ZXIiLCAiU2NoZWR1bGVyIl0sCiAgICAgICAgICAgICAgICAgIndrIjogW29wdGlvbnMud2Via2l0
UmV2aXNpb24gfHwgJzE5MTYyMicsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgIm9zIjog
W29wdGlvbnMub3N4UmV2aXNpb24gfHwgJzEwLjExIDE1QTI4NCcsICJVbmtub3duIl0sCi0gICAg
ICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIi
LCAiV29ya2VyIChkZXByZWNhdGVkKSJdLAogICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjog
W29wdGlvbnMud29ya2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciJdCiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CkBAIC01MTksNyArNTIxLDYgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAg
ICAgICAgInByb2plY3QiOiBbJycsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJlcG9z
aXRvcnkiOiBbJycsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogWycn
LCAiVW5rbm93biJdLAotICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29y
a2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciAoZGVwcmVjYXRlZCkiXSwKICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3Jr
ZXIiXQogICAgICAgICAgICAgfQogICAgICAgICB9OyAgIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVp
bGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMKaW5kZXggYjQ4NzBiYjJiMDg2YzQ5YjgyNzE1NDg1
NmUxNWY2ZjY0ZTAwN2QyYS4uMTM4NmU2OTFmMjJlOTUwYmM0NDczZjhkOWQ4ZGZkMWQyY2JkNDcx
NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29s
cy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCkBA
IC02ODksMTIgKzY4OSwxNSBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29s
dmUoTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWlsZGVySWQ6IE1vY2tEYXRhLmJ1aWxkZXJJREZv
ck5hbWUoJ3NvbWUgYnVpbGRlciAyJyksIGJ1aWxkUmVxdWVzdElkOiA3MDB9KSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA1KTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRo
b2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2FwaS92Mi9mb3JjZXNjaGVkdWxlcnMvZm9yY2Utc29t
ZS1idWlsZGVyLTInKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNF0uZGF0YSwgeydpZCc6ICc3MDEnLCAnanNvbnJwYyc6ICcy
LjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFtcyc6CiAgICAgICAgICAgICAgICAgICAgIHsn
d2snOiAnMTkyNzM2JywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzog
JzcwMScsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMid9fSk7CiAgICAg
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKCdPSycpOworICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ1BPU1Qn
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s1XS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXIt
MScpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s1XS5kYXRhLCB7J2lkJzogJzcxMScsICdqc29ucnBjJzogJzIuMCcsICdtZXRo
b2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKQEAgLTgzMyw3ICs4MzYsNyBAQCBkZXNjcmliZSgnQnVp
bGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdy
b3VwcyBydW5uaW5nIHNpbXVsdGVub3VzbHknLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQg
cmVjb3ZlciBmcm9tIG11bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHkn
LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
ICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKIApA
QCAtMTA2NCw2ICsxMDY3LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzJdLmRhdGEsIHsnaWQnOiAnNzEwJywgJ2pzb25ycGMnOiAnMi4wJywg
J21ldGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgogICAgICAgICAgICAgICAgICAgICB7J3drJzog
JzE5MTYyMicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MTAn
LCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Utc29tZS1idWlsZGVyLTEnfX0pOwogICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwogCkBAIC0xMzU2LDcgKzEzNjAsMjcwIEBAIGRlc2NyaWJlKCdC
dWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICdidWls
ZC1yZXF1ZXN0LWlkJzogJzkwMCcsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxk
ZXItMid9fSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgbm90IHJldXNlIHRo
ZSByb290IHdoZW4gYSBidWlsZCByZXF1ZXN0IHdpdGggc2FtZSBjb21taXQgc2V0IGlzIGF2YWlh
bGJsZSBidXQgdGhlIGJ1aWxkIHJlcXVlc3QgaGFzIGJlZW4gc2NoZWR1bGVkJywgYXN5bmMgKCkg
PT4geworICAgICAgICBpdCgnc2hvdWxkIGRlZmVyIHNjaGVkdWxpbmcgcmVxdWVzdHMgZnJvbSBu
ZXh0IGNvbmZpZ3VyYXRpb24gaW4gc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHVudGlsIHRoZSBjdXJy
ZW50IGNvbmZpZ3VyYXRpb24gbWVldHMgdGhlIGluaXRpYWwgcmVxdWVzdGVkIGl0ZXJhdGlvbiBj
b3VudCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
Y29tcGxldGVkJywgJ2ZhaWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSwgdHJ1ZSwKKyAgICAg
ICAgICAgICAgICBbJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTIzJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jywg
bnVsbCwgbnVsbF0sCisgICAgICAgICAgICAgICAgWzQwMSwgNDAxLCA0MDIsIDQwMl0sICdzZXF1
ZW50aWFsJywgdHJ1ZSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisg
ICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRo
VHdvQnVpbGRlcnMoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBw
YXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNP
bmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwg
TW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21l
LWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVz
b2x2ZSh7fSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZSBidWls
ZGVyIDInKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUo
e30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0
aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sy
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7
J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEo
e3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAg
ICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRS
ZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJl
Y2VudEJ1aWxkc1VybCgnc29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsIE1vY2tEYXRhLnBlbmRp
bmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s0XS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVp
bGRzVXJsKCdzb21lIGJ1aWxkZXIgMicpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbNV0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHMubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzZdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNV
cmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s2XS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICAgICAgTW9ja0Rh
dGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1
aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWls
ZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLm1l
dGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbN10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJywg
MikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5yZXNvbHZlKHt9KTsK
KworICAgICAgICAgICAgYXdhaXQgc3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1Vy
bCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0
dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDEpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy8yL2J1aWxkcy8xMjQnKTsKKworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZl
dGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxk
ZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyNCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hl
ZHVsaW5nIG90aGVyIGJ1aWxkIHJlcXVlc3Qgb24gYSBidWlsZGVyIGlmIGEgc2VxdWVudGlhbCB0
ZXN0IGdyb3VwIGlzIHNjaGVkdWxlZCBvbiBpdCBhbmQgd2FpdGluZyBmb3IgcmV0cnknLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwg
WydmYWlsZWQnLCAnY29tcGxldGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZyddLCB0cnVlLAorICAg
ICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQn
LCBudWxsLCBudWxsXSwKKyAgICAgICAgICAgICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3Nl
cXVlbnRpYWwnLCB0cnVlKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9j
a1Rlc3RHcm91cChkYiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlm
ZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tU
ZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAgICBjb25zdCBsb2dn
ZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFt
ZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgY29u
c3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAg
ICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigo
KSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RB
bmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWls
ZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRp
bmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWls
ZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICAgICAgTW9j
a0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDAs
IGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRC
dWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9
KV19KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3Ro
LCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJd
Lm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7fSk7
CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCkK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikp
OworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHsnYnVpbGRz
JyA6IFsKKyAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jl
c3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxk
UmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAgICAgYXdhaXQg
c3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCku
bGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1c1Vy
bCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsK
KworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9j
a0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1l
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgs
IDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDAp
LnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3Qg
ZnJvbSBhbm90aGVyIHRlc3QgZ3JvdXAgb24gYSBidWlsZGVyIGlmIGEgYWx0ZXJuYXRpbmcgdGVz
dCBncm91cCB3aXRoIGFsbCBleGlzdGluZyBidWlsZCByZXF1ZXN0cyBmaW5pc2hlZCBzdGlsbCBu
ZWVkcyByZXRyeScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNl
cnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW01vY2tEYXRh
LmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ2Nv
bXBsZXRlZCddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9i
dWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAgICAgICAgICAgICAgICAgICAnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLF0sCisgICAgICAgICAgICAgICAgWzQwMSwg
NDAyLCA0MDEsIDQwMl0sICdhbHRlcm5hdGluZycsIHRydWUpLAorICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwKKyAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAg
ICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29u
c3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3Jk
J307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJh
YmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2Vy
SW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFibGUu
aW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAg
ICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwg
J0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxk
Ym90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisKKyAg
ICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
LnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworCisgICAgICAg
ICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmws
IE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAg
ICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwg
YnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6
IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWls
ZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgn
c29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5m
aW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRU
YWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0
YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOwor
CisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCks
ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygp
LCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxk
ZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0
Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRl
cnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdjb21w
bGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9i
dWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVk
dWxpbmcgYnVpbGQgcmVxdWVzdCBmcm9tIGFub3RoZXIgdGVzdCBncm91cCBvbiBhIGJ1aWxkZXIg
aWYgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgd2l0aCBhbGwgZXhpc3RpbmcgYnVpbGQgcmVxdWVz
dHMgZmluaXNoZWQgc3RpbGwgbmVlZHMgcmV0cnknLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGF3YWl0IFBy
b21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAnY29tcGxl
dGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0ZWQnXSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICBbJ2h0
dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIxJywgJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIyJywKKyAgICAgICAgICAgICAg
ICAgICAgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJywg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0JyxdLAorICAg
ICAgICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpLAor
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwKKyAg
ICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAg
ICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNp
bmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBw
YXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNP
bmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwg
TW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1i
dWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29s
dmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5n
dGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVy
LTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUo
eydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxk
RGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAor
ICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czog
MCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAg
ICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1v
Y2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdh
aXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRh
LnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1
ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVp
bGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDMpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2Fp
dCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5z
dGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
Mykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQu
b3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgbm90IHJldXNlIHRoZSByb290IHdoZW4gYSBidWlsZCByZXF1ZXN0IHdpdGggc2Ft
ZSBjb21taXQgc2V0IGlzIGF2YWlsYWJsZSBidXQgdGhlIGJ1aWxkIHJlcXVlc3QgaGFzIGJlZW4g
c2NoZWR1bGVkJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRk
TW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoVGVzdFNlcnZlci5kYXRhYmFzZSgpKTsKICAgICAg
ICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CiAgICAgICAgICAgICBjb25zdCBjb25maWcg
PSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoUGF0Y2hBY2NlcHRpbmdCdWlsZGVyKCk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xz
LXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMu
anMKaW5kZXggNmZjN2E3YWM1YmMzN2E0MTA0NzJmZTgyYjJjOWI1NDEwZWE4ZjRkMy4uZTA2N2I4
ZGU4MmRiYTRiMTZhMWRiMDE4YmU2NWVkMjM5MTdhYTZiYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0
aW9uLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
dG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcwpAQCAtMTQwOSw3ICsxNDA5
LDcgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRib3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CiAgICAgICAgICAgICBhc3NlcnQoIWJ1
aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVp
bGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMS9idWlsZHMvMTIzJyk7CiAgICAgICAgICAgICBh
c3NlcnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CiAKICAgICAgICAg
ICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsx
XTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJv
dC1zeW5jZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qt
c3luY2VyLmpzCmluZGV4IDg4MjJhZmI4YzBlZDIyMzgxZjc0MjM3NmFmYTMwNmRhMjljYzU4MjAu
LjQ1NGYzZTYwMzg2ZmZmNWRjZDlkNWRiMjZmMWVmYWFiMTI4NDhjODggMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwpAQCAt
MTQzLDYgKzE0Myw3IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKIAogICAgICAgICBsZXQgaGFz
UGVuZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJOYW1lU3BlY2lmaWVkID0gZmFsc2U7CiAgICAgICAg
IGxldCB1c2VkV29ya2VycyA9IG5ldyBTZXQ7CisgICAgICAgIGNvbnN0IGxhdGVzdEFjdGl2ZUVu
dHJ5QnlXb3JrZXJOYW1lID0gbmV3IE1hcDsKICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdGhp
cy5fZW50cnlMaXN0KSB7CiAgICAgICAgICAgICBsZXQgZW50cnlQcmV2ZW50c05ld1JlcXVlc3Qg
PSBlbnRyeS5pc1BlbmRpbmcoKTsKICAgICAgICAgICAgIGlmIChlbnRyeS5pc0luUHJvZ3Jlc3Mo
KSkgewpAQCAtMTU1LDYgKzE1NiwyNiBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAg
ICAgICAgICAgICAgIGhhc1BlbmRpbmdCdWlsZHNXaXRob3V0V29ya2VyTmFtZVNwZWNpZmllZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgdXNlZFdvcmtlcnMuYWRkKGVudHJ5Lndvcmtlck5hbWUo
KSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW50cnkuaGFzRmluaXNoZWQoKSB8
fCBlbnRyeS5pc0luUHJvZ3Jlc3MoKSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGVudHJ5Lndvcmtlck5hbWUoKSwgJ0ZpbmlzaGVkIGVudHJ5IG11c3QgaGF2ZSBhIHdvcmtlciBu
YW1lJyk7CisgICAgICAgICAgICAgICAgY29uc3QgbGFzdEZpbmlzaGVkRW50cnkgPSBsYXRlc3RB
Y3RpdmVFbnRyeUJ5V29ya2VyTmFtZS5nZXQoZW50cnkud29ya2VyTmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWxhc3RGaW5pc2hlZEVudHJ5IHx8ICtsYXN0RmluaXNoZWRFbnRyeS5idWls
ZFRhZygpIDwgK2VudHJ5LmJ1aWxkVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIGxhdGVzdEFj
dGl2ZUVudHJ5QnlXb3JrZXJOYW1lLnNldChlbnRyeS53b3JrZXJOYW1lKCksIGVudHJ5KQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgW25hbWUsIGVudHJ5XSBv
ZiBsYXRlc3RBY3RpdmVFbnRyeUJ5V29ya2VyTmFtZS5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IGxhdGVzdEFjdGl2ZUJ1aWxkUmVxdWVzdCA9IEJ1aWxkUmVxdWVzdC5maW5kQnlJZChl
bnRyeS5idWlsZFJlcXVlc3RJZCgpKTsKKyAgICAgICAgICAgIGlmICghbGF0ZXN0QWN0aXZlQnVp
bGRSZXF1ZXN0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGxh
dGVzdEFjdGl2ZUJ1aWxkUmVxdWVzdC50ZXN0R3JvdXBJZCgpID09PSBuZXdSZXF1ZXN0LnRlc3RH
cm91cElkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXAgPSBsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QudGVzdEdyb3VwKCk7CisgICAgICAg
ICAgICBpZiAoIXRlc3RHcm91cCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGlmICh0ZXN0R3JvdXAuaGFzRmluaXNoZWQoKSAmJiAhdGVzdEdyb3VwLm1heU5lZWRNb3Jl
UmVxdWVzdHMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHVzZWRX
b3JrZXJzLmFkZChuYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghdGhpcy5fd29ya2Vy
TGlzdCB8fCBoYXNQZW5kaW5nQnVpbGRzV2l0aG91dFdvcmtlck5hbWVTcGVjaWZpZWQpIHsKQEAg
LTE5Miw3ICsyMTMsNyBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICgoIXRoaXMuX2xhc3RDb21wbGV0ZWRCdWlsZCB8fCB0aGlzLl9sYXN0Q29tcGxldGVk
QnVpbGQuYnVpbGRUYWcoKSA8IGVudHJ5LmJ1aWxkVGFnKCkpICYmIGVudHJ5Lmhhc0ZpbmlzaGVk
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQgPSBl
bnRyeTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICAgICAgbGV0IGVudHJ5TGlzdCA9IFtdOwogICAgICAgICAgICAgICAgIGZvciAobGV0IGlk
IGluIGVudHJ5QnlSZXF1ZXN0KQogICAgICAgICAgICAgICAgICAgICBlbnRyeUxpc3QucHVzaChl
bnRyeUJ5UmVxdWVzdFtpZF0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCmluZGV4IGQ2MmNkZTAyOWMxNzc5
MTczYzVmMjFlZDg2YWFmMWExYzAzZGE4YTIuLjk3ZTg4ODBiOWE3Y2Q0MmMyOTg2YjE4ODlmYjlj
OGMyZDAyZWJkNWMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9q
cy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKQEAgLTg1LDEzICs4NSwyMiBAQCBjbGFz
cyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgY29uc3QgdmFsaWRSZXF1ZXN0cyA9IHRo
aXMuX3ZhbGlkYXRlUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAgICAgICAgIGNvbnN0IGJ1aWxk
UmVxdWVzdHNCeUdyb3VwID0gQnVpbGRib3RUcmlnZ2VyYWJsZS5fdGVzdEdyb3VwTWFwRm9yQnVp
bGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKICAgICAgICAgbGV0IHVwZGF0ZXMgPSBhd2FpdCB0
aGlzLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXF1ZXN0c0J5R3JvdXApOwotICAg
ICAgICBsZXQgcm9vdFJldXNlVXBkYXRlcyA9IHt9CisgICAgICAgIGxldCByb290UmV1c2VVcGRh
dGVzID0ge307CiAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coJ1NjaGVkdWxpbmcgYnVpbGRzJyk7
CiAgICAgICAgIGNvbnN0IHRlc3RHcm91cExpc3QgPSBBcnJheS5mcm9tKGJ1aWxkUmVxdWVzdHNC
eUdyb3VwLnZhbHVlcygpKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmdyb3VwT3Jk
ZXIgLSBiLmdyb3VwT3JkZXI7IH0pOwogCi0gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRlc3RH
cm91cExpc3QubWFwKChncm91cCkgPT4gW2dyb3VwLCB0aGlzLl9uZXh0UmVxdWVzdEluR3JvdXAo
Z3JvdXAsIHVwZGF0ZXMpXSkKLSAgICAgICAgICAgIC5maWx0ZXIoKFtncm91cCwgcmVxdWVzdF0p
ID0+IHZhbGlkUmVxdWVzdHMuaGFzKHJlcXVlc3QpKQotICAgICAgICAgICAgLm1hcCgoW2dyb3Vw
LCByZXF1ZXN0XSkgPT4gdGhpcy5fc2NoZWR1bGVSZXF1ZXN0KGdyb3VwLCByZXF1ZXN0LCByb290
UmV1c2VVcGRhdGVzKSkpOworICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbLi4uYnVpbGRSZXF1
ZXN0c0J5R3JvdXAua2V5cygpXS5tYXAodGVzdEdyb3VwSWQgPT4gVGVzdEdyb3VwLmZldGNoQnlJ
ZCh0ZXN0R3JvdXBJZCwgdHJ1ZSkpKTsKKyAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0ZXN0
R3JvdXBMaXN0KSB7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5fbmV4dFJlcXVl
c3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKTsKKyAgICAgICAgICAgIGlmICghdmFsaWRSZXF1ZXN0
cy5oYXMocmVxdWVzdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IGNvbnN0IHNob3VsZERlZmVyID0gdGhpcy5fZGVmZXJTY2hlZHVsaW5nUmVxdWVzdChyZXF1ZXN0
KTsKKyAgICAgICAgICAgIGlmIChzaG91bGREZWZlcikKKyAgICAgICAgICAgICAgICB0aGlzLl9s
b2dnZXIubG9nKGBEZWZlciBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3QgIiR7cmVxdWVzdC5pZCgp
fSIgdW50aWwgY29tcGxldGVkIGJ1aWxkIHJlcXVlc3RzIGZvciBwcmV2aW91cyBjb25maWd1cmF0
aW9uIG1lZXQgdGhlIGV4cGVjdGF0aW9uIG9yIGV4aGF1c3QgcmV0cnkuYCk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2NoZWR1bGVSZXF1ZXN0KGdyb3Vw
LCByZXF1ZXN0LCByb290UmV1c2VVcGRhdGVzKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFB1
bGwgYWxsIGJ1aWxkYm90cyBmb3IgdGhlIHNlY29uZCB0aW1lIHNpbmNlIHRoZSBwcmV2aW91cyBz
dGVwIG1heSBoYXZlIHNjaGVkdWxlZCBtb3JlIGJ1aWxkcwogICAgICAgICB1cGRhdGVzID0gYXdh
aXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVzdHNCeUdyb3VwKTsK
QEAgLTEyMywxMSArMTMyLDM2IEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3Nj
aGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUoYnVpbGRSZXF1ZXN0LCB0ZXN0R3JvdXAu
cmVxdWVzdHMsCisgICAgICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZVJlcXVlc3RJZldvcmtlcklz
QXZhaWxhYmxlKGJ1aWxkUmVxdWVzdCwgdGVzdEdyb3VwLnJlcXVlc3RzLAogICAgICAgICAgICAg
YnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRlc3RHcm91cC5idWlsZFN5bmNlciA6IHRlc3RHcm91
cC50ZXN0U3luY2VyLAogICAgICAgICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRlc3RH
cm91cC5idWlsZFdvcmtlck5hbWUgOiB0ZXN0R3JvdXAudGVzdFdvcmtlck5hbWUpOwogICAgIH0K
IAorICAgIF9kZWZlclNjaGVkdWxpbmdSZXF1ZXN0KGJ1aWxkUmVxdWVzdCkKKyAgICB7CisgICAg
ICAgIGlmIChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IGJ1aWxkUmVxdWVzdC50ZXN0R3JvdXAoKTsK
KyAgICAgICAgaWYgKHRlc3RHcm91cC5yZXBldGl0aW9uVHlwZSgpICE9PSAnc2VxdWVudGlhbCcp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3Qgb3JkZXJlZEJ1aWxk
UmVxdWVzdHMgPSB0ZXN0R3JvdXAub3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29u
c3QgYnVpbGRSZXF1ZXN0SW5kZXggPSBvcmRlcmVkQnVpbGRSZXF1ZXN0cy5pbmRleE9mKGJ1aWxk
UmVxdWVzdCk7CisgICAgICAgIGlmIChidWlsZFJlcXVlc3RJbmRleCA8PSAwKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdEJlZm9yZUN1cnJl
bnQgPSBvcmRlcmVkQnVpbGRSZXF1ZXN0c1tidWlsZFJlcXVlc3RJbmRleCAtIDFdOworICAgICAg
ICBpZiAoYnVpbGRSZXF1ZXN0QmVmb3JlQ3VycmVudC5pc0J1aWxkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGJ1aWxkUmVxdWVzdEJlZm9yZUN1cnJlbnQuY29t
bWl0U2V0KCkgPT09IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICByZXR1cm4gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSA+IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChidWlsZFJlcXVlc3RCZWZvcmVD
dXJyZW50LmNvbW1pdFNldCgpKQorICAgICAgICAgICAgLmZpbHRlcihyZXF1ZXN0ID0+IHJlcXVl
c3QuaXNUZXN0KCkgJiYgcmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoOworICAgIH0KKwog
ICAgIF92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpCiAgICAgewogICAgICAgICBjb25z
dCB0ZXN0UGxhdGZvcm1QYWlycyA9IHt9OwpAQCAtMjIwLDcgKzI1NCw2IEBAIGNsYXNzIEJ1aWxk
Ym90VHJpZ2dlcmFibGUgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotCiAgICAgICAgIHJldHVybiB1cGRhdGVzOwogICAgIH0KIApAQCAtMjM3LDcgKzI3MCw3
IEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewogICAgICAgICByZXR1cm4gbnVsbDsKICAg
ICB9CiAKLSAgICBfc2NoZWR1bGVSZXF1ZXN0SWZXb3JrZXJJc0F2YWlsYWJsZShuZXh0UmVxdWVz
dCwgcmVxdWVzdHNJbkdyb3VwLCBzeW5jZXIsIHdvcmtlck5hbWUpCisgICAgYXN5bmMgX3NjaGVk
dWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUobmV4dFJlcXVlc3QsIHJlcXVlc3RzSW5Hcm91
cCwgc3luY2VyLCB3b3JrZXJOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFuZXh0UmVxdWVzdCkK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMK
aW5kZXggOTA1YmEyMjQ1Y2IwMmFlNGU5MzMxMjZiNzg5NmE2YjI4YTMyMWU0NS4uODM5M2YxNTBi
ZTBhZDhlNmRjNzQyZTNiODMzYzU5YmI3Y2I2MGYyNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJl
cXVlc3RzLmpzCkBAIC05LDM4ICs5LDg3IEBAIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBtYXhNaXNzaW5nQnVp
bGRSZXF1ZXN0Q291bnQgPSAwOwotICAgICAgICBsZXQgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0
Rm9yRWFjaENvbW1pdFNldCA9IHRydWU7Ci0gICAgICAgIGxldCBoYXNVbmZpbmlzaGVkQnVpbGRS
ZXF1ZXN0ID0gZmFsc2U7Ci0gICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHRlc3RHcm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVz
dHMgPSB0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoKGJ1
aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKLQotICAgICAgICAgICAgY29u
c3QgY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVp
bGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaGFzQ29tcGxldGVkKCkpLmxlbmd0aDsKLSAgICAg
ICAgICAgIGlmICghY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQpCi0gICAgICAgICAgICAgICAg
aGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IGZhbHNlOwotCi0gICAg
ICAgICAgICBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ICY9IChjb21w
bGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA+IDApOwotICAgICAgICAgICAgY29uc3QgdW5maW5pc2hl
ZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkg
PT4gIWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICAvLyAi
cG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQiIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRlc3RHcm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgYXMgdXNlciBtYXkgYWRkIGJ1aWxkIHJlcXVlc3Rz
IG1hbnVhbGx5LgotICAgICAgICAgICAgY29uc3QgcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQg
PSBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCArIHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3Vu
dDsKLSAgICAgICAgICAgIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA9IE1hdGgubWF4KG1h
eE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCwgdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSAtIHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50KTsKLQotICAgICAgICAgICAgaWYgKHVu
ZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCkKLSAgICAgICAgICAgICAgICBoYXNVbmZpbmlzaGVk
QnVpbGRSZXF1ZXN0ID0gdHJ1ZTsKKyAgICAgICAgc3dpdGNoKHRlc3RHcm91cC5yZXBldGl0aW9u
VHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlICdhbHRlcm5hdGluZyc6CisgICAgICAgICAgICAg
ICAgYXdhaXQgY3JlYXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwg
bWF4aW11bVJldHJ5RmFjdG9yKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgJ3NlcXVlbnRpYWwnOgorICAgICAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVNlcXVlbnRp
YWxSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4aW11bVJldHJ5RmFjdG9yKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICdJbnZhbGlkUmVwZXRpdGlvblR5cGUnKQogICAgICAg
ICB9Ci0gICAgICAgIGNvbnN0IHdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgPSB0ZXN0R3JvdXAucmVw
ZXRpdGlvbkNvdW50KCkgKyBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPiBtYXhpbXVtUmV0
cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpOworICAgIH0KK30K
IAotICAgICAgICBjb25zb2xlLmFzc2VydChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPD0g
dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7Ci0gICAgICAgIGlmIChtYXhNaXNz
aW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzVW5m
aW5pc2hlZEJ1aWxkUmVxdWVzdCAmJiAhaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENv
bW1pdFNldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOworYXN5bmMgZnVuY3Rpb24gY3JlYXRlQWx0
ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4aW11bVJldHJ5RmFjdG9y
KQoreworICAgIGxldCBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSAwOworICAgIGxldCBo
YXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gdHJ1ZTsKKyAgICBsZXQg
aGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOworICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKKyAgICAgICAgY29uc3Qg
YnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQp
LmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaXNUZXN0KCkpOwogCi0gICAg
ICAgIGlmIChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVt
UmV0cnkgJiYgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCkgewotICAg
ICAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmFkZE1vcmVCdWlsZFJlcXVlc3RzKG1heE1pc3NpbmdC
dWlsZFJlcXVlc3RDb3VudCk7Ci0gICAgICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sgPSBhd2Fp
dCB0ZXN0R3JvdXAuZmV0Y2hUYXNrKCk7Ci0gICAgICAgICAgICBjb25zb2xlLmxvZyhgQWRkZWQg
JHttYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnR9IGJ1aWxkIHJlcXVlc3QocykgdG8gIiR7dGVz
dEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlzaXNUYXNrLmlkKCl9IC0g
IiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7Ci0gICAgICAgIH0KLSAgICAgICAgYXdhaXQgdGVz
dEdyb3VwLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGNvbnN0IGNv
bXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVx
dWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7CisgICAgICAgIGlm
ICghY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQpCisgICAgICAgICAgICBoYXNDb21wbGV0ZWRC
dWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gZmFsc2U7CisKKyAgICAgICAgaGFzQ29tcGxl
dGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCAmPSAoY29tcGxldGVkQnVpbGRSZXF1ZXN0
Q291bnQgPiAwKTsKKyAgICAgICAgY29uc3QgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50ID0g
YnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gIWJ1aWxkUmVxdWVzdC5oYXNG
aW5pc2hlZCgpKS5sZW5ndGg7CisgICAgICAgIC8vICJwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3Vu
dCIgbWlnaHQgYmUgbGFyZ2VyIHRoYW4gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSBhcyB1c2VyIG1heSBhZGQgYnVpbGQgcmVxdWVzdHMgbWFudWFsbHkuCisgICAgICAgIGNvbnN0
IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQg
KyB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7CisgICAgICAgIG1heE1pc3NpbmdCdWlsZFJl
cXVlc3RDb3VudCA9IE1hdGgubWF4KG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCwgdGVzdEdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50
KTsKKworICAgICAgICBpZiAodW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50KQorICAgICAgICAg
ICAgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRydWU7CisgICAgfQorICAgIGNvbnN0IHdp
bGxFeGNlZWRNYXhpbXVtUmV0cnkgPSB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNv
bWUoY29tbWl0U2V0ID0+CisgICAgICAgIHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSArIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA+IG1heGltdW1S
ZXRyeUZhY3RvciAqIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOworCisgICAg
Y29uc29sZS5hc3NlcnQobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50IDw9IHRlc3RHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOworICAgIGlmIChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0
Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzVW5maW5pc2hlZEJ1aWxkUmVx
dWVzdCAmJiAhaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCAmJiAhd2ls
bEV4Y2VlZE1heGltdW1SZXRyeSAmJiBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29t
bWl0U2V0KSB7CisgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRNb3JlQnVpbGRSZXF1ZXN0cyht
YXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOworICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sg
PSBhd2FpdCB0ZXN0R3JvdXAuZmV0Y2hUYXNrKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGBBZGRl
ZCAke21heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudH0gYnVpbGQgcmVxdWVzdChzKSB0byAiJHt0
ZXN0R3JvdXAubmFtZSgpfSIgb2YgYW5hbHlzaXMgdGFzazogJHthbmFseXNpc1Rhc2suaWQoKX0g
LSAiJHthbmFseXNpc1Rhc2submFtZSgpfSJgKTsKKyAgICB9CisgICAgYXdhaXQgdGVzdEdyb3Vw
LmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGNy
ZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4aW11bVJldHJ5
RmFjdG9yKQoreworICAgIGxldCBtaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSAwOworICAgIGxl
dCB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gZmFsc2U7CisKKyAgICBjb25zb2xlLmFzc2VydChB
cnJheS5mcm9tKHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpLmV2ZXJ5KChjb21taXRT
ZXQsIGluZGV4LCBsaXN0KSA9PgorICAgICAgICAhaW5kZXggfHwgTWF0aC5taW4oLi4uKHRlc3RH
cm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChsaXN0W2luZGV4IC0gMV0pLm1hcChidWlsZFJlcXVl
c3QgPT4gYnVpbGRSZXF1ZXN0Lm9yZGVyKCkpKSkKKyAgICAgICAgPCBNYXRoLm1pbiguLi4odGVz
dEdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkubWFwKGJ1aWxkUmVxdWVzdCA9
PiBidWlsZFJlcXVlc3Qub3JkZXIoKSkpKQorICAgICkpOworICAgIGNvbnN0IGZpcnN0Q29tbWl0
U2V0VG9SZXRyeSA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkuZmluZChjb21taXRT
ZXQgPT4geworICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLnJlcXVlc3Rz
Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVx
dWVzdC5pc1Rlc3QoKSk7CisgICAgICAgIGNvbnN0IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50
ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhh
c0NvbXBsZXRlZCgpKS5sZW5ndGg7CisgICAgICAgIGlmIChjb21wbGV0ZWRCdWlsZFJlcXVlc3RD
b3VudCA+PSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3Vu
dCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+ICFidWlsZFJlcXVlc3Qu
aGFzRmluaXNoZWQoKSkubGVuZ3RoOworICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3Nm
dWxDb3VudCA9IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ICsgdW5maW5pc2hlZEJ1aWxkUmVx
dWVzdENvdW50OworICAgICAgICBtaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSB0ZXN0R3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIC0gcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQ7Cisg
ICAgICAgIHdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgPSBNYXRoLm1heCgwLCBtaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQpICsgdGVzdEdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21t
aXRTZXQpID4gbWF4aW11bVJldHJ5RmFjdG9yICogdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisKKyAgICBpZiAoIXdpbGxF
eGNlZWRNYXhpbXVtUmV0cnkgJiYgZmlyc3RDb21taXRTZXRUb1JldHJ5ICYmIG1pc3NpbmdCdWls
ZFJlcXVlc3RDb3VudCA+IDApIHsKKyAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmFkZE1vcmVCdWls
ZFJlcXVlc3RzKG1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCwgZmlyc3RDb21taXRTZXRUb1JldHJ5
LmlkKCkpOworICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sgPSBhd2FpdCB0ZXN0R3JvdXAuZmV0
Y2hUYXNrKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGBBZGRlZCAke21heE1pc3NpbmdCdWlsZFJl
cXVlc3RDb3VudH0gYnVpbGQgcmVxdWVzdChzKSB0byAiJHt0ZXN0R3JvdXAubmFtZSgpfSIgb2Yg
YW5hbHlzaXMgdGFzazogJHthbmFseXNpc1Rhc2suaWQoKX0gLSAiJHthbmFseXNpc1Rhc2submFt
ZSgpfSJgKTsKICAgICB9CisKKyAgICBpZiAod2lsbEV4Y2VlZE1heGltdW1SZXRyeSkKKyAgICAg
ICAgYXdhaXQgdGVzdEdyb3VwLmNhbmNlbFBlbmRpbmdSZXF1ZXN0cygpOworICAgIGVsc2UgaWYo
IWZpcnN0Q29tbWl0U2V0VG9SZXRyeSkKKyAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmNsZWFyTWF5
TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CiB9CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5k
ZWZpbmVkJykKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L2FuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDhkMjhhYzRmYWZjNDhlYWExNzgyYzVk
ZjFlYWI3NzcwOTJkODdmMTQuLjIzNzI4YjM4YzcxNDVlZTBjZGIyNDYzODE3Njk3NTA2NWUyY2Uw
NWIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5
c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVz
dHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtMzE4LDcgKzMxOCw3IEBAIGRlc2NyaWJlKCdB
bmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50
OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0
LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycs
CiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTog
J0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAg
ICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9u
OiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2
aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fX0sCkBAIC0zNDAsNyArMzQwLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsK
ICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRh
LCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9u
OiBmYWxzZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwg
e25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0
YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdh
YmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lv
bjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9
LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9u
LTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzYyLDcgKzM2Miw3
IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywg
cmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVw
ZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6
ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwg
dGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwog
ICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEn
LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsfX0sCkBAIC00MjMsNyArNDIzLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lz
VGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChy
ZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5l
ZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1
ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRz
Tm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAg
ICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmly
bScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsn
MTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGws
IHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjog
J2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAg
LTQ1NywxMSArNDU3LDExIEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAg
ICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayB3aXRoIGNvbmZpcm1pbmcgcmVw
ZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3Rh
cnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAg
ICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdD
b25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25m
aXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSwgJ2FsdGVybmF0
aW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMF0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVk
c05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVu
OiAyLCB3b3JrZXJOYW1lOiAnd29ya2VyJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsCisg
ICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgd29ya2VyTmFtZTogJ3dvcmtl
cicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHJldmlzaW9u
U2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJl
dmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2
aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6
ZXItdGVzdHMuanMKaW5kZXggMDdmY2IzZGIzZGU2YjEyZTZiOTQ3Y2M2MzBjZDA3YmI2YTA0ZmJi
YS4uMDkwN2EwYjAxNmEwNTE0ODM0N2RjYjNmNDc3ZTJhOTI1OThhYWZiYiAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5
emVyLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21l
YXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcwpAQCAtMjM1LDYgKzIzNSw3IEBAIGRlc2Ny
aWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAgICAgIHJl
cGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmly
bScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAg
ICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgcmV2
aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMzUsIG93bmVyUmV2aXNpb246IG51bGwsIHBh
dGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246IDQ0LCBv
d25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7CkBAIC0y
OTQsNiArMjk1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7
CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAgICAgIHRl
c3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlv
bjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywK
ICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAzNSwgb3du
ZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycx
MSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAg
ICAgICAgICAgICB9KTsKQEAgLTUyNiw2ICs1MjgsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRT
ZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQs
CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAg
ICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25U
eXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEn
OiB7cmV2aXNpb246IDQwLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAg
ICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA0OSwgb3duZXJSZXZpc2lvbjogbnVs
bCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpAQCAtNjE4LDYgKzYyMSw3IEBAIGRl
c2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAgICAg
IHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29u
ZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAg
ICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAg
cmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMywgb3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogOCwg
b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQt
dGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmluZGV4IDA4MmQ4MGRj
YTVlZjhmMDgzNTg5YzY1NDFiYTI0NTZhZmQxMjg2MjguLjYyODM0NTJlMzAxZDBkYjcxMmQwMzlh
MzM0MzczNzAwNzg3Y2JlYWEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanMKQEAgLTE0LDYgKzE0LDggQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNv
bmZpZykgewogICAgIGNvbnN0IG1heU5lZWRNb3JlUmVxdWVzdHMgPSBjb25maWcubWF5TmVlZE1v
cmVSZXF1ZXN0czsKICAgICBjb25zdCBoaWRkZW4gPSBjb25maWcuaGlkZGVuOwogICAgIGNvbnN0
IHN0YXR1c0xpc3QgPSBjb25maWcuc3RhdHVzTGlzdDsKKyAgICBjb25zdCBjb21taXRTZXRMaXN0
ID0gY29uZmlnLmNvbW1pdFNldExpc3QgfHwgWyc0MjU1JywgJzQyNTYnLCAnNDI1NScsICc0MjU2
JywgJzQyNTUnLCAnNDI1NiddOworICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlID0gY29uZmlnLnJl
cGV0aXRpb25UeXBlIHx8ICdhbHRlcm5hdGluZyc7CiAKICAgICByZXR1cm4gewogICAgICAgICAi
dGVzdEdyb3VwcyI6IFt7CkBAIC0yOSw3ICszMSw4IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91
cChjb25maWcpIHsKICAgICAgICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYiXSwK
ICAgICAgICAgICAgICJub3RpZmljYXRpb25TZW50QXQiOiBudWxsLAogICAgICAgICAgICAgaW5p
dGlhbFJlcGV0aXRpb25Db3VudCwKLSAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMKKyAg
ICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMsCisgICAgICAgICAgICByZXBldGl0aW9uVHlw
ZQogICAgICAgICB9XSwKICAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbewogICAgICAgICAgICAg
ImlkIjogIjE2OTg1IiwKQEAgLTM4LDcgKzQxLDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3Vw
KGNvbmZpZykgewogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0
ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAgICAgICAib3JkZXIiOiAiMCIsCi0gICAgICAgICAg
ICAiY29tbWl0U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNl
dExpc3RbMF0sCiAgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFswXSwKICAgICAgICAg
ICAgICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTUwLDcgKzUz
LDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAgInBs
YXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAg
ICAgICAib3JkZXIiOiAiMSIsCi0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAorICAg
ICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbMV0sCiAgICAgICAgICAgICAic3Rh
dHVzIjogc3RhdHVzTGlzdFsxXSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAg
ICAgImJ1aWxkIjogbnVsbCwKQEAgLTYyLDcgKzY1LDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdy
b3VwKGNvbmZpZykgewogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAg
ICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAgICAgICAib3JkZXIiOiAiMiIsCi0gICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1p
dFNldExpc3RbMl0sCiAgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKICAgICAg
ICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTc0LDcg
Kzc3LDcgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAg
InBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAg
ICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAor
ICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbM10sCiAgICAgICAgICAgICAi
c3RhdHVzIjogc3RhdHVzTGlzdFszXSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAg
ICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTg1LDggKzg4LDggQEAgZnVuY3Rpb24gc2FtcGxlVGVz
dEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKICAgICAgICAgICAg
ICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAg
ICAgICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwK
KyAgICAgICAgICAgICJvcmRlciI6ICI0IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21t
aXRTZXRMaXN0WzRdLAogICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNF0sCiAgICAg
ICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC05Nyw4
ICsxMDAsOCBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgICAgICAg
ICAidGVzdCI6ICI4NDQiLAogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAg
ICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAg
ICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAorICAgICAgICAgICAgIm9yZGVyIjogIjUiLAor
ICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbNV0sCiAgICAgICAgICAgICAi
c3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAg
ICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTE1NSw3ICsxNTgsNyBAQCBkZXNjcmliZSgnY3JlYXRl
QWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywg
KCkgPT4gewogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKIAogICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1i
dWlsZC1yZXF1ZXN0cycpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRh
dGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3Jk
JywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDF9KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFz
c3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6
IG51bGx9KTsKICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwogCiAgICAgICAgIGF3YWl0
IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKQEAgLTE3Miw3ICsxNzUsNyBAQCBkZXNj
cmliZSgnY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxl
ZFJlcXVlc3RzJywgKCkgPT4gewogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKIAogICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29y
ZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDJ9KTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1l
Jywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAy
LCBjb21taXRTZXQ6IG51bGx9KTsKICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwogCiAg
ICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKQEAgLTI0OSw0ICsy
NTIsMTE2IEBAIGRlc2NyaWJlKCdjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RH
cm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7CiAgICAgICAgIGNyZWF0ZUFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBz
LCAzKTsKICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMCk7CiAgICAgfSk7
CisKKyAgICBpdCgnc2hvdWxkIGFkZCBvbmUgbW9yZSBidWlsZCByZXF1ZXN0IG9uIEEgY29uZmln
IHdoZW4gb25lIEEgY29uZmlnIHJlcXVlc3QgZmFpbGVkIGZvciB0ZXN0IGdyb3VwIGluIHNlcXVl
bnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmln
ID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywg
bWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJl
cGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgInJ1bm5pbmciLCAic2NoZWR1bGVkIiwg
InBlbmRpbmciXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1Jywg
JzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9
IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7
CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhG
YWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29y
a2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21t
aXRTZXQ6ICc0MjU1J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCBhZGQgb25lIG1vcmUgYnVpbGQgcmVxdWVzdCBvbiBBIGNvbmZpZyB3aGVuIG9uZSBBIGNv
bmZpZyByZXF1ZXN0IGZhaWxlZCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2Us
IGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisg
ICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAor
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJydW5uaW5nIiwgInNjaGVkdWxlZCIsICJwZW5kaW5nIl0sCisgICAgICAgICAgICBjb21t
aXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2
J119OworCisgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29u
ZmlnKTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVp
bGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7
CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJl
cXVlc3RzJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dv
cmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91
cDogJzIxMjgnLCBhZGRDb3VudDogMSwgY29tbWl0U2V0OiAnNDI1NSd9KTsKKyAgICAgICAgcmVx
dWVzdHNbMF0ucmVzb2x2ZSgpOworCisgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIx
MjgnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0cnkgQSBjb25maWcgZmlyc3QgZXZl
biBpZiBCIGNvbmZpZyBoYXMgZmFpbGVkIGJ1aWxkIGluIHNlcXVlbnRpYWwgbW9kZScsIGFzeW5j
ICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0
czogdHJ1ZSwKKyAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2Vx
dWVudGlhbCcsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0
ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAicnVubmluZyJdLAorICAgICAg
ICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0MjU2JywgJzQy
NTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRl
c3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2Ny
ZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRk
aXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RH
cm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKwor
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2Fk
ZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBd
LmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3
b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogJzQyNTUnfSk7Cisg
ICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0
LWdyb3Vwcy8yMTI4Jyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGFkZCBvbmUgbW9yZSBi
dWlsZCByZXF1ZXN0IG9uIEIgY29uZmlnIGFuZCBjbGVhciBtYXlOZWVkTW9yZVJlcXVlc3Qgd2hl
biBvbmUgQiBjb25maWcgcmVxdWVzdCBmYWlsZWQgaW4gc2VxdWVudGlhbCBtb2RlJywgYXN5bmMg
KCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiB0cnVlLAorICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1
ZW50aWFsJywKKyAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRl
ZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXSwKKyAg
ICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1Nics
ICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91
cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3Vw
Ll9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0
ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0
ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0
c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdw
YXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6ICc0MjU2J30p
OworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgYXdhaXQgTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkv
dGVzdC1ncm91cHMvMjEyOCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjYW5jZWwgYW55
IHBlbmRpbmcgYnVpbGRzIGlmIHRlc3QgZ3JvdXAgd2lsbCBleGNlZWQgbWF4aW11bSByZXRyeSBp
biBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91
cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291
bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZh
bHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlz
dDogWyJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAi
cGVuZGluZyJdLAorICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAn
NDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0g
c2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsK
KyAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZh
aWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAxKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAn
L3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtl
clBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBjYW5jZWw6IHRydWV9KTsKKyAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBj
bGVhciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyB3aGVuIGluaXRpYWwgcmVxdWVzdGVkIHJlcGV0
aXRpb24gaXMgc2F0aXNmaWVkIGluIHNlcXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwg
aW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAg
ICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisg
ICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxl
dGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIl0sCisgICAgICAgICAgICBjb21t
aXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU2JywgJzQyNTYnLCAnNDI1NicsICc0MjU2
J119OworCisgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29u
ZmlnKTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVp
bGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7
CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29y
a2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3Vw
OiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgIHJlcXVlc3Rz
WzBdLnJlc29sdmUoKTsKKyAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwppbmRleCA1YWE5MWU4
YWEwMmUxMWE2NjQ1MWQzMWQ5NjM2OTZjZWQ4ZDQ5ODNlLi40ODA3NmU1YThkNGUyNzBiNWZmY2E1
ZDQ5ZjYxNjIzMDA1ZGRiN2E3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwpAQCAtMjQ5LDcgKzI0OSw3IEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoZ3JvdXAuaXNIaWRkZW4oKSwgZmFsc2UpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCksIHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKCtncm91cC5jcmVhdGVkQXQoKSwgMTQ1ODY4ODUxNDAwMCk7Ci0gICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIHNhbXBsZVRlc3RHcm91cCgpWydidWls
ZFJlcXVlc3RzJ10ubGVuZ3RoIC8gMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCBzYW1wbGVUZXN0R3JvdXAoKVsnYnVpbGRSZXF1ZXN0
cyddLmxlbmd0aCAvIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLmhhc1BlbmRpbmco
KSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLmhhc0ZpbmlzaGVkKCkpOwogICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFncm91cC5oYXNTdGFydGVkKCkpOwpAQCAtNDYyLDcgKzQ2Miw3IEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBzZXQyLnNl
dFJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCwgJzE5MTYyMycpOwogICAg
ICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5zaGFyZWRS
ZXBvc2l0b3J5LCAnODAyMjknKTsKIAotICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IFRlc3RH
cm91cC5jcmVhdGVXaXRoVGFzaygnc29tZS10YXNrJywgTW9ja01vZGVscy5zb21lUGxhdGZvcm0s
IE1vY2tNb2RlbHMuc29tZVRlc3QsICdzb21lLWdyb3VwJywgNCwgW3NldDEsIHNldDJdLCB0cnVl
KTsKKyAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2so
J3NvbWUtdGFzaycsIE1vY2tNb2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0
LCAnc29tZS1ncm91cCcsIDQsIFtzZXQxLCBzZXQyXSwgdHJ1ZSwgJ2FsdGVybmF0aW5nJyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUt
Y3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7CkBAIC00NzUs
NyArNDc1LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0YSwge3Rhc2tOYW1lOiAnc29tZS10
YXNrJywgbmFtZTogJ3NvbWUtZ3JvdXAnLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDEsCiAgICAgICAg
ICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LCByZXZpc2lvblNldHM6IFt7JzExJzoge293bmVy
UmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMiJ9LAogICAgICAg
ICAgICAgICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJl
dmlzaW9uOiAiODAyMjkifX0sIHsnMTEnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51
bGwsIHJldmlzaW9uOiAiMTkxNjIzIn0sCi0gICAgICAgICAgICAgICAgICAgICcxNic6IHtvd25l
clJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9fV0sIG5lZWRz
Tm90aWZpY2F0aW9uOiB0cnVlLCB0b2tlbjogJ2FiYyd9KTsKKyAgICAgICAgICAgICAgICAgICAg
JzE2Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5
In19XSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRp
bmcnLCB0b2tlbjogJ2FiYyd9KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sy
XS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnKTsKICAgICAgICAgICAg
IHJlcXVlc3RzWzJdLnJlc29sdmUoewogICAgICAgICAgICAgICAgIHRhc2tJZDogMTIzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426409</attachid>
            <date>2021-04-19 05:42:10 -0700</date>
            <delta_ts>2021-04-25 05:15:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210419054209.patch</filename>
            <type>text/plain</type>
            <size>173742</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTMzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjN2ZiYmEwY2Q4NDg2MWQ2MTkwOWE5YmFlYzgwOGM1ZDM0ZWQ1NjYwLi5lZDgwZjI0ODk2
NTU0MzU4NzZkZWY1OWY4MTk5ZDBmOGVhNWZhYTJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMjEtMDQtMTkgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlw
ZScgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJyB0YWJsZSB0byBzdG9yZSByZXBldGl0aW9uIHR5
cGUgd2hpY2ggZGVmYXVsdHMgdG8gJ2FsdGVybmF0aW5nJy4KKyAgICAgICAgQWRkIHN1cHBvcnQg
dG8gc2NoZWR1bGUgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nIHdoaWNoIHJ1bnMgYWxsIEEgcnVu
cyBiZWZvcmUgQiBydW5zLCB3aGVyZWFzIHByZXZpb3VzbHkgd2Ugb25seQorICAgICAgICBzdXBw
b3J0IGFsdGVybmF0aW5nIEEgYW5kIEIgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBydW5zLgorCisg
ICAgICAgIFVwZGF0ZSBzeW5jaW5nIHNjcmlwdCB0byBub3QgcHJvY2VlZCB3aXRoIG5leHQgY29u
ZmlndXJhdGlvbiB1bnRpbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gbWVldHMgaW5pdGlhbCByZXF1
ZXN0ZWQKKyAgICAgICAgcmVwZXRpdGlvbiBjb3VudCBvciBleGNlZWQgcmV0cnkuCisKKyAgICAg
ICAgQWRkIHJldHJ5IGxvZ2ljIGZvciAnc2VxdWVudGlhbCcgQS9CIHRlc3RpbmcgYW5kIHZvdmUg
cmV0cnkgbG9naWMgaW50byBzeW5jaW5nIHNjcmlwdCBzbyB0aGF0IHJldHJ5IGNhbiBiZQorICAg
ICAgICB0aW1lbHkgc2NoZWR1bGVkLiBUaGlzIGlzIGltcG9ydGFudCBmb3Igc2VxdWVudGlhbCB0
ZXN0IGdyb3VwIGJlY2F1c2UgbWlzc2luZyByZXRyeSB3aWxsIGJsb2NrIHRlc3QgZ3JvdXAgZnJv
bQorICAgICAgICBtYWtpbmcgcHJvZ3Jlc3MuCisKKyAgICAgICAgRml4IGEgcG90ZW50aWFsIHJh
Y2UgaW4gc3luY2luZyBzY3JpcHQgdGhhdCAnUHJvbWlzZS5hbGwnIG1heSBjYXVzZSB0ZXN0IGdy
b3VwIG5vdCBzY2hlZHVsZWQgaW4gb3JkZXIgLgorICAgICAgICBGaXggYSBidWcgaW4gc3luY2lu
ZyBzY3JpcHQgdGhhdCB3b3JrZXIgbWlnaHQgYmUgdGFrZW4gYXdheSBiZWZvcmUgc2NoZWR1bGlu
ZyByZXRyeSBmb3IgbGFzdCBidWlsZCByZXF1ZXN0LgorCisgICAgICAgICogaW5pdC1kYXRhYmFz
ZS5zcWw6IEFkZGVkICd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJyBmaWVsZCB0byAnYW5hbHlz
aXNfdGVzdF9ncm91cHMnIHRhYmxlLgorICAgICAgICAqIG1pZ3JhdGUtZGF0YWJhc2Uuc3FsOiBV
cGRhdGVkIG1pZ3JhdGlvbiBzY3JpcHQgdG8gY29uZGl0aW9uYWxseSBhZGQgJ3Rlc3Rncm91cF9y
ZXBldGl0aW9uX3R5cGUnIGZpZWxkLgorICAgICAgICAqIHB1YmxpYy9hcGkvdGVzdC1ncm91cHMu
cGhwOiBBZGRlZCAncmVwZXRpdGlvblR5cGUnIGZpZWxkIGluIGFwaSByZXR1cm4gdmFsdWUuCisg
ICAgICAgICogcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHA6IEZldGNo
aW5nIGJ1aWxkIHJlcXVlc3RzIHVuZGVyIGEgdHJpZ2dlcmFibGUgc2hvdWxkIGluY2x1ZGUgdGVz
dAorICAgICAgICBncm91cCB3aXRoIGFsbCB0ZXN0IGdyb3VwcyBmaW5pc2hlZCBidXQgc3RpbGwg
bmVlZCByZXRyeS4gVGhpcyB3aWxsIGFsbG93IHN5bmNpbmcgc2NyaXB0IHRvIHJlc29sdmUgdGhl
IGJ1aWxkCisgICAgICAgIHJlcXVlc3QgYnkgSUQgYW5kIGJsb2NrIG90aGVyIHJlcXVlc3QgdG8g
YmUgc2NoZWR1bGVkIG9uIHRoZSBidWlsZGVyLgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2Nv
bW1pdC1zZXRzLWhlbHBlcnMucGhwOiBBZGRlZCBjb2RlIHRvIGNyZWF0ZSBidWlsZCByZXF1ZXN0
cyBiYXNlZCBvbiB0ZXN0IG1vZGUuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2Fk
ZC1idWlsZC1yZXF1ZXN0cy5waHA6IEFkZGVkIHN1cHBvcnQgdG8gb25seSBhZGQgYnVpbGQgcmVx
dWVzdHMgdG8gb25lIGNvbW1pdCBzZXQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBp
L2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocDogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0
LgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHA6
IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAgKiBwdWJsaWMvcHJpdmls
ZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwOgorICAgICAgICAqIHB1YmxpYy9zaGFyZWQv
Y29tbW9uLWNvbXBvbmVudC1iYXNlLmpzOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRz
L2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qczogQWRkZWQgJ3JlcGV0aXRp
b25UeXBlJyBzdXBwb3J0LgorICAgICAgICAoQ3VzdG9tQ29uZmlndXJhdGlvblRlc3RHcm91cEZv
cm0ucHJvdG90eXBlLnN0YXJ0VGVzdGluZyk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVu
dHMvdGVzdC1ncm91cC1mb3JtLmpzOgorICAgICAgICAoVGVzdEdyb3VwRm9ybSk6CisgICAgICAg
IChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAg
ICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0VGVzdGluZyk6CisgICAgICAgICogcHVi
bGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzOgorICAgICAgICAoQW5hbHlzaXNUYXNrLmFz
eW5jIGNyZWF0ZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2spOgorICAgICAgICAqIHB1YmxpYy92
My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qczoKKyAgICAgICAgKEJ1aWxkUmVxdWVzdC5wcm90b3R5
cGUudXBkYXRlU2luZ2xldG9uKTogQWxsb3cgYnVpbGQgcmVxdWVzdCBvcmRlciB0byBiZSB1cGRh
dGVkLgorICAgICAgICAoQnVpbGRSZXF1ZXN0KToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxz
L3Rlc3QtZ3JvdXAuanM6CisgICAgICAgIChUZXN0R3JvdXApOgorICAgICAgICAoVGVzdEdyb3Vw
LnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5yZXBldGl0aW9uVHlwZSk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLl9sYXN0UmVx
dWVzdCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJlcGV0aXRpb25Db3VudEZvckNv
bW1pdFNldCk6IFJlZmFjdG9yZWQgYHJlcGV0aXRpb25Db3VudGAgc2luY2UgcmVwZXRpdGlvbiBt
YXkgYmUgZGlmZmVyZW50CisgICAgICAgIGJldHdlZW4gY29uZmlndXJhdGlvbnMuCisgICAgICAg
IChUZXN0R3JvdXAucHJvdG90eXBlLmhhc1JldHJpZXMpOiBBIGhlbHBlciBmdW5jdGlvbiB0byB0
ZWxsIGlmIGEgdGVzdCBncm91cCBoYXMgcmV0cnkgcnVucy4KKyAgICAgICAgKFRlc3RHcm91cC5w
cm90b3R5cGUucmVxdWVzdGVkQ29tbWl0U2V0cyk6CisgICAgICAgIChUZXN0R3JvdXAuX2NvbXB1
dGVSZXF1ZXN0ZWRDb21taXRTZXRzLnNldCByZXR1cm4pOgorICAgICAgICAoVGVzdEdyb3VwLl9j
b21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0cy5zZXQgcmVxdWVzdGVkQ29tbWl0U2V0cyk6CisgICAg
ICAgIChUZXN0R3JvdXAuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzLmNvbnN0LnNldCByZXF1
ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5fY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHMpOgor
ICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBjYW5jZWxQZW5kaW5nUmVxdWVzdHMp
OgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0
cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgY3JlYXRlV2l0aFRhc2spOgorICAgICAgICAo
VGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKToKKyAgICAgICAg
KFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6CisgICAgICAgIChU
ZXN0R3JvdXAuYXN5bmMgZmV0Y2hCeUlkKTogQWRkZWQgc3VwcG9ydCB0byBmZXRjaCB0ZXN0IGdy
b3VwIGJ5IElELgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5fb3JkZXJlZEJ1aWxkUmVx
dWVzdHMpOiBSZW5hbWVkIHRvICdvcmRlcmVkQnVpbGRSZXF1ZXN0cycgdG8gYmVjb21lIHB1Ymxp
Yy4KKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAg
ICAgICAoQW5hbHlzaXNUYXNrQ2hhcnRQYW5lLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFkb3dU
cmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1Jlc3VsdHNQYW5lLnByb3RvdHlwZS5kaWRDb25z
dHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUu
cHJvdG90eXBlLnNldFRlc3RHcm91cHMpOgorICAgICAgICAoQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yUGFuZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3RvdHlwZS5k
aWRDb25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1Rlc3RHcm91cFBh
bmUucHJvdG90eXBlLl9yZW5kZXJDdXJyZW50VGVzdEdyb3VwLik6CisgICAgICAgIChBbmFseXNp
c1Rhc2tUZXN0R3JvdXBQYW5lLnByb3RvdHlwZS5fcmVuZGVyQ3VycmVudFRlc3RHcm91cCk6Cisg
ICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3RvdHlwZS5fc3VtbWFyaXplZFRl
c3RHcm91cCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5kaWRDb25zdHJ1
Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLmFzeW5j
IF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90
b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNU
YXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0
TGlzdC5zZXQgY29uc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2Ny
ZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCk6CisgICAgICAgIChBbmFs
eXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQ3VzdG9tVGVzdEdyb3VwKToKKyAg
ICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczogQWRkZWQgJ3JlcGV0aXRpb25U
eXBlJyBzdXBwb3J0LgorICAgICAgICAoQ2hhcnRQYW5lKToKKyAgICAgICAgKENoYXJ0UGFuZS5w
cm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChDaGFydFBhbmUucHJv
dG90eXBlLmFzeW5jIF9hbmFseXplUmFuZ2UpOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9j
cmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAgICAgICAoQ3JlYXRlQW5hbHlzaXNUYXNr
UGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cCk6CisgICAg
ICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogQWRkZWQgdW5p
dCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxk
LXJlcXVlc3RzLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10
ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qczogQWRkZWQg
dW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRl
LXRlc3QtZ3JvdXAtdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAg
ICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qczoKKyAgICAg
ICAgKGFzeW5jIGFzc2VydFRocm93cyk6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNl
cy9tb2NrLWRhdGEuanM6CisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkQW5vdGhlck1vY2tUZXN0
R3JvdXApOgorICAgICAgICAqIHNlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJs
ZS10ZXN0cy5qczoKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1p
bnRlZ3JhdGlvbi10ZXN0cy5qczoKKyAgICAgICAgKiB0b29scy9qcy9idWlsZGJvdC10cmlnZ2Vy
YWJsZS5qczoKKyAgICAgICAgKEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLmFzeW5jIHN5
bmNPbmNlKToKKyAgICAgICAgKEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLmFzeW5jIF9z
Y2hlZHVsZVJlcXVlc3QpOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUu
YXN5bmMgX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUpOgorICAgICAgICAoQnVp
bGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuYXN5bmMgX3Nob3VsZERlZmVyU2VxdWVudGlhbFRl
c3RpbmdSZXF1ZXN0V2l0aE5ld0NvbW1pdFNldCk6CisgICAgICAgICogdG9vbHMvanMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzOiBBZGRlZCByZXRyeSBjb2RlIGZvciBzZXF1ZW50aWFs
IEEvQiB0ZXN0aW5nIHdoaWNoIHdpbGwgcmV0cnkKKyAgICAgICAgY29uZmlndXJhdGlvbiBieSBj
b25maWd1cmF0aW9uIGFuZCB3aWxsIG5vdCBwcm9jZWVkIHdpdGggbmV4dCBjb25maWd1cmF0aW9u
IHVudGlsIGN1cnJlbnQgY29uZmlndXJhdGlvbiBtZWV0cworICAgICAgICB1c2VyIHNwZWNpZmll
ZCBpdGVyYXRpb24gb3IgZXhjZWVkIHJldHJ5LgorICAgICAgICAoYXN5bmMgY3JlYXRlQWRkaXRp
b25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKToKKyAgICAg
ICAgKGFzeW5jIGNyZWF0ZUFsdGVybmF0aW5nUmV0cmllc0ZvclRlc3RHcm91cCk6CisgICAgICAg
IChhc3luYyBjcmVhdGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91cCk6CisgICAgICAgICog
dG9vbHMvcnVuLWFuYWx5c2lzLmpzOiBNb3ZlIHJldHJ5IGxvZ2ljIG91dCBvZiB0aGlzIGZpbGUg
dG8gc3luYy1idWlsZGJvdC4KKyAgICAgICAgKiB0b29scy9zeW5jLWJ1aWxkYm90LmpzOiBSZWZh
Y3RvcmVkIGNvZGUgdG8gdXNlIGFzeW5jL2F3YWl0IGFuZCBhZGRlZCByZXRyeSBsb2dpYyBiZWZv
cmUgc2NoZWR1bGluZyB0ZXN0cy4KKyAgICAgICAgKiB1bml0LXRlc3RzL2FuYWx5c2lzLXRhc2st
dGVzdHMuanM6IFVwZGF0ZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiB1bml0LXRlc3RzL2J1aWxk
Ym90LXN5bmNlci10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHVuaXQt
dGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVz
dHMuCisgICAgICAgICogdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVz
dHMuanM6IEFkZGVkIHRlc3RzIGZvciBzZXF1ZW50aWFsIEEvQiB0ZXN0aW5nLgorICAgICAgICAq
IHVuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanM6IFVwZGF0ZWQgdW5pdCB0ZXN0cy4KKwog
MjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBDb21taXQgcmV2aXNpb24gaWRlbnRpZmllciBpbiB0aGUgQ2hhcnQKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbCBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAppbmRleCBmNjhiNWYwYzAzM2Ey
MjY0MzA3YzJmODNmM2Q0ZmI3NGJkYjE1M2VkLi5lMjMxZTYxZGY1Mjk3OWZhNzFiODViYzFkM2Uy
YmQ4NWEwZGEzOTczIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1k
YXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uu
c3FsCkBAIC0yOTIsNiArMjkyLDcgQEAgQ1JFQVRFIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBz
ICgKICAgICB0ZXN0Z3JvdXBfbmVlZHNfbm90aWZpY2F0aW9uIGJvb2xlYW4gTk9UIE5VTEwgREVG
QVVMVCBGQUxTRSwKICAgICB0ZXN0Z3JvdXBfbm90aWZpY2F0aW9uX3NlbnRfYXQgdGltZXN0YW1w
IERFRkFVTFQgTlVMTCwKICAgICB0ZXN0Z3JvdXBfaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50IGlu
dGVnZXIgTk9UIE5VTEwsCisgICAgdGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZSB2YXJjaGFyKDMy
KSBERUZBVUxUICdhbHRlcm5hdGluZycsCiAgICAgdGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVx
dWVzdHMgYm9vbGVhbiBERUZBVUxUIEZBTFNFLAogICAgIENPTlNUUkFJTlQgdGVzdGdyb3VwX25h
bWVfbXVzdF9iZV91bmlxdWVfZm9yX2VhY2hfdGFzayBVTklRVUUodGVzdGdyb3VwX3Rhc2ssIHRl
c3Rncm91cF9uYW1lKSk7CiBDUkVBVEUgSU5ERVggdGVzdGdyb3VwX3Rhc2tfaW5kZXggT04gYW5h
bHlzaXNfdGVzdF9ncm91cHModGVzdGdyb3VwX3Rhc2spOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCmluZGV4IDBlYTkxMzNkYTZlZGUzMjVkZGY2YzIx
ZDhiOTM3ZmI3MzU2NDI1OWEuLmZhNTVkODZkNjcxMTNmZTJjZTQzMzM1MDEzZDc5OWQ2MTE3NjE0
ZjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNl
LnNxbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwK
QEAgLTQsNiArNCw3IEBAIEJFR0lOCiBBTFRFUiBUQUJMRSBidWlsZF9yZXF1ZXN0cyBBREQgQ09M
VU1OIElGIE5PVCBFWElTVFMgcmVxdWVzdF9zdGF0dXNfZGVzY3JpcHRpb24gdmFyY2hhcigxMDI0
KSBERUZBVUxUIE5VTEw7CiBBTFRFUiBUQUJMRSBwbGF0Zm9ybXMgQUREIENPTFVNTiAgSUYgTk9U
IEVYSVNUUyBwbGF0Zm9ybV9ncm91cCBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxhdGZvcm1fZ3JvdXBz
IERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgQUREIENPTFVNTiBJRiBOT1QgRVhJ
U1RTIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyIHZhcmNoYXIoNjQpIERFRkFVTFQgTlVMTDsK
K0FMVEVSIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNU
UyB0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlIHZhcmNoYXIoMzIpIERFRkFVTFQgJ2FsdGVybmF0
aW5nJzsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBDT05TVFJBSU5UIGNvbW1pdF9zdHJpbmdf
aWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlOwogQUxURVIgVEFCTEUgY29t
bWl0cyBBREQgQ09OU1RSQUlOVCBjb21taXRfc3RyaW5nX2lkZW50aWZpZXJfaW5fcmVwb3NpdG9y
eV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUoY29tbWl0X3JlcG9zaXRvcnksIGNvbW1pdF9yZXZpc2lv
bl9pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1YzRhYjk4N2I3OTMyNmM4MTIyMDMwZmRk
ZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0OGExOTlkZTI3OTVkNWQ3N2Q2ZTggMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBz
LnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vw
cy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24gZm9ybWF0X3Rlc3RfZ3JvdXAoJGdyb3Vw
X3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFiYXNlOjppc190cnVl
KCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSksCiAgICAgICAgICdt
YXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0
Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwKICAgICAgICAgJ2luaXRpYWxSZXBldGl0
aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9pbml0aWFsX3JlcGV0aXRpb25fY291
bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBf
cmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWlsZFJlcXVlc3RzJyA9PiBhcnJheSgpLAog
ICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwKICAgICApOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNo
ZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJl
cXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdiMjUyMDk3ZjExNWZmZGJjNDFhMTFjM2U0
YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkwYTNjMmIyMDkxZGU1YmU2YTUgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1
ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2lu
Y2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
QnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgKFNFTEVDVCB0ZXN0Z3JvdXBfaWQs
IHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rncm91cF9hdXRob3IgaXMgbm90IG51bGwg
dGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRlciwgdGVzdGdyb3VwX2NyZWF0ZWRfYXQK
ICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFdIRVJFIEVYSVNUUwog
ICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBidWlsZF9yZXF1ZXN0cyBXSEVSRSB0
ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCByZXF1ZXN0X3N0YXR1cwotICAgICAgICAg
ICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdc
JykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGlu
Z1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpIE9SIHRlc3Rncm91cF9tYXlfbmVlZF9t
b3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91cHMKICAgICAgICAgICAgIFdIRVJFIHJl
cXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVzdF9ncm91cCA9IHRlc3RfZ3JvdXBzLnRl
c3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkgYXV0aG9yX29yZGVyLCB0ZXN0Z3JvdXBf
Y3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5KCR0cmlnZ2VyYWJsZV9pZCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9j
b21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
aW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAppbmRleCBlODUzMGE2YmI3MWU0MmNmZjI4
Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi41YTQ3M2ZiMzg4ODg2ZmMxNzg2MGUwMWFjZTUyZjZkMGVk
NGYxYzkzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1
ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCkBAIC00LDIxICs0LDMwIEBA
IHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1maW5kZXIucGhwJyk7CiByZXF1aXJlX29u
Y2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAogIyBGSVhNRTogU2hvdWxkIGNyZWF0ZSBh
IGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIgZnVuY3Rpb25zIHRvIGF2b2lkIHBhc3Np
bmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1
aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3Is
ICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291
bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKK2Z1bmN0aW9uIGNyZWF0ZV90ZXN0X2dyb3VwX2Fu
ZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0
aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQsICRyZXBldGl0aW9u
X2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9uKQorewogCiAgICAg
bGlzdCAoJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmlndXJhdGlvbl9saXN0
KSA9IGluc2VydF9jb21taXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3VyYXRpb25fbGlzdCgk
ZGIsICRjb21taXRfc2V0cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmluc2VydF9yb3coJ2Fu
YWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFycmF5KCd0YXNrJyA9
PiAkdGFza19pZCwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNf
bm90aWZpY2F0aW9uJyA9PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnaW5pdGlhbF9yZXBldGl0aW9u
X2NvdW50JyA9PiAkcmVwZXRpdGlvbl9jb3VudCkpOworICAgICAgICBhcnJheSgndGFzaycgPT4g
JHRhc2tfaWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvciwgJ25lZWRzX25v
dGlmaWNhdGlvbicgPT4gJG5lZWRzX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICdpbml0aWFs
X3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50LCAncmVwZXRpdGlvbl90eXBl
JyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CiAKICAgICAkYnVpbGRfY291bnQgPSBjb3VudCgkYnVp
bGRfY29uZmlndXJhdGlvbl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxkX2NvdW50OwogICAg
IGZvcmVhY2goJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRfY29uZmlndXJhdGlv
bikKICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAk
YnVpbGRfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3Jt
X2lkLCBOVUxMLCAkZ3JvdXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRp
b25fY291bnQ7ICRpKyspIHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25maWd1cmF0aW9uX2xp
c3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1
ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyss
ICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAg
ICBpZiAoJHJlcGV0aXRpb25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAgICAgICAgZm9yZWFj
aCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRpb24pIHsKKyAg
ICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKQorICAg
ICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwg
JHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3Jt
X2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKSB7CisgICAgICAg
ICAgICBmb3JlYWNoICgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJh
dGlvbikKKyAgICAgICAgICAgICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdF9mb3JfY29uZmlndXJh
dGlvbigkZGIsICR0ZXN0X2NvbmZpZ3VyYXRpb24sICRvcmRlcisrLCAkdHJpZ2dlcmFibGVfaWQs
ICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQsICRncm91cF9pZCk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuICRncm91cF9pZDsKIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocCBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVl
c3RzLnBocAppbmRleCA1NzBlOTAyZjVkMmUxZGYzZmMyYjZiNmFmYTIzM2FiZmI1MDAzNjQ3Li45
M2JhMmQ3YjVmMzJmN2RmODgzM2NiYTBiMjgxMjU0NDkwMTJhM2MzIDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1
ZXN0cy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2Vk
LWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCkBAIC03LDEzICs3LDE1IEBAIGZ1bmN0aW9uIG1h
aW4oKSB7CiAgICAgJGRiID0gY29ubmVjdCgpOwogICAgICRkYXRhID0gZW5zdXJlX3ByaXZpbGVn
ZWRfYXBpX2RhdGFfYW5kX3Rva2VuX29yX3dvcmtlcigkZGIpOwogCi0gICAgJGFkZGl0aW9uYWxf
YnVpbGRfcmVxdWVzdF9jb3VudCA9IGFycmF5X2dldCgkZGF0YSwgJ2FkZENvdW50Jyk7Ci0gICAg
aWYgKCEkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50KQotICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ1JlcXVlc3RDb3VudE5vdFNwZWNpZmllZCcpOworICAgICRhcmd1bWVudHMgPSB2YWxp
ZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5KAorICAgICAgICAnYWRkQ291bnQnID0+ICdpbnQn
LAorICAgICAgICAnZ3JvdXAnID0+ICdpbnQnLAorICAgICAgICAnY29tbWl0U2V0JyA9PiAnaW50
PycsCisgICAgKSk7CiAKLSAgICAkdGVzdF9ncm91cF9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ2dy
b3VwJyk7Ci0gICAgaWYgKCEkdGVzdF9ncm91cF9pZCkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdUZXN0R3JvdXBOb3RTcGVjaWZpZWQnKTsKKyAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0
X2NvdW50ID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdhZGRDb3VudCcpOworICAgICR0ZXN0X2dy
b3VwX2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdncm91cCcpOworICAgICRjb21taXRfc2V0
X2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdjb21taXRTZXQnLCBOVUxMKTsKIAogICAgICR0
ZXN0X2dyb3VwID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190ZXN0X2dyb3Vwcycs
ICd0ZXN0Z3JvdXAnLCBhcnJheSgnaWQnID0+ICR0ZXN0X2dyb3VwX2lkKSk7CiAgICAgaWYgKCEk
dGVzdF9ncm91cCkKQEAgLTI4LDM1ICszMCwxMDEgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBp
ZiAoJGN1cnJlbnRfb3JkZXIgPCAwKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ05vVGVzdGlu
Z0J1aWxkUmVxdWVzdHMnKTsKIAorICAgICRpc19zZXF1ZW50aWFsX3R5cGUgPSAkdGVzdF9ncm91
cFsndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZSddID09ICdzZXF1ZW50aWFsJzsKKyAgICBpZiAo
JGlzX3NlcXVlbnRpYWxfdHlwZSkKKyAgICAgICAgYWRkX2J1aWxkX3JlcXVlc3RfZm9yX3NlcXVl
bnRpYWxfdGVzdF9ncm91cCgkZGIsICRleGlzdGluZ19idWlsZF9yZXF1ZXN0cywgJGFkZGl0aW9u
YWxfYnVpbGRfcmVxdWVzdF9jb3VudCwgJGNvbW1pdF9zZXRfaWQpOworICAgIGVsc2UKKyAgICAg
ICAgYWRkX2J1aWxkX3JlcXVlc3RfZm9yX2FsdGVybmF0aW5nX3Rlc3RfZ3JvdXAoJGRiLCAkZXhp
c3RpbmdfYnVpbGRfcmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICRj
b21taXRfc2V0X2lkLCAkY3VycmVudF9vcmRlcik7CisKKyAgICBleGl0X3dpdGhfc3VjY2Vzcygp
OworfQorCitmdW5jdGlvbiBhZGRfYnVpbGRfcmVxdWVzdF9mb3Jfc2VxdWVudGlhbF90ZXN0X2dy
b3VwKCRkYiwgJGJ1aWxkX3JlcXVlc3RzLCAkYWRkX2NvdW50LCAkY29tbWl0X3NldF9pZCkKK3sK
KyAgICAkb3JkZXJfaW5jcmVtZW50YWxfYnlfY29tbWl0X3NldCA9IGFycmF5KCk7CisgICAgJGN1
cnJlbnRfb3JkZXJfaW5jcmVtZW50YWwgPSAwOwogICAgICRjb21taXRfc2V0cyA9IGFycmF5KCk7
CiAgICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCA9IGFycmF5KCk7Ci0gICAgZm9yZWFj
aCAoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzIGFzICRidWlsZF9yZXF1ZXN0KSB7CisgICAgZm9y
ZWFjaCAoJGJ1aWxkX3JlcXVlc3RzIGFzICRidWlsZF9yZXF1ZXN0KSB7CiAgICAgICAgIGlmICgk
YnVpbGRfcmVxdWVzdFsncmVxdWVzdF9vcmRlciddIDwgMCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPSAkYnVpbGRfcmVxdWVzdFsncmVxdWVz
dF9jb21taXRfc2V0J107Ci0gICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRyZXF1ZXN0ZWRf
Y29tbWl0X3NldCwgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCkpCisgICAgICAgIGlmIChh
cnJheV9rZXlfZXhpc3RzKCRyZXF1ZXN0ZWRfY29tbWl0X3NldCwgJGJ1aWxkX3JlcXVlc3RfYnlf
Y29tbWl0X3NldCkpIHsKKyAgICAgICAgICAgICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXRb
JHJlcXVlc3RlZF9jb21taXRfc2V0XSA9ICRidWlsZF9yZXF1ZXN0OwogICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX251bGwoJGNvbW1pdF9zZXRfaWQpIHx8
ICRyZXF1ZXN0ZWRfY29tbWl0X3NldCA9PSAkY29tbWl0X3NldF9pZCkKKyAgICAgICAgICAgIGFy
cmF5X3B1c2goJGNvbW1pdF9zZXRzLCAkcmVxdWVzdGVkX2NvbW1pdF9zZXQpOworCiAgICAgICAg
ICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXRbJHJlcXVlc3RlZF9jb21taXRfc2V0XSA9ICRi
dWlsZF9yZXF1ZXN0OworCisgICAgICAgIGlmIChjb3VudCgkY29tbWl0X3NldHMpKSB7CisgICAg
ICAgICAgICAkb3JkZXJfaW5jcmVtZW50YWxfYnlfY29tbWl0X3NldFskcmVxdWVzdGVkX2NvbW1p
dF9zZXRdID0gJGN1cnJlbnRfb3JkZXJfaW5jcmVtZW50YWw7CisgICAgICAgICAgICAkY3VycmVu
dF9vcmRlcl9pbmNyZW1lbnRhbCArPSAkYWRkX2NvdW50OworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFpc19udWxsKCRjb21taXRfc2V0X2lkKSAmJiAhY291bnQoJGNvbW1pdF9zZXRzKSkK
KyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdDb21taXRTZXROb3RJblRlc3RHcm91cCcsIGFycmF5
KCdjb21taXRTZXQnID0+ICRjb21taXRfc2V0X2lkKSk7CisKKyAgICAkZGItPmJlZ2luX3RyYW5z
YWN0aW9uKCk7CisgICAgZm9yZWFjaCAoJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQg
YXMgJGNvbW1pdF9zZXQgPT4gJGluY3JlbWVudGFsKSB7CisgICAgICAgIGlmICghJGluY3JlbWVu
dGFsKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICRkYi0+cXVlcnkoJ1VQREFURSBi
dWlsZF9yZXF1ZXN0cyBTRVQgcmVxdWVzdF9vcmRlciA9IHJlcXVlc3Rfb3JkZXIgKyAkMSBXSEVS
RSByZXF1ZXN0X2NvbW1pdF9zZXQgPSAkMicsCisgICAgICAgICAgICBhcnJheSgkaW5jcmVtZW50
YWwsICRjb21taXRfc2V0KSk7CisgICAgfQorICAgIGZvcmVhY2ggKCRjb21taXRfc2V0cyBhcyAk
Y29tbWl0X3NldCkgeworICAgICAgICAkYnVpbGRfcmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5
X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAgICAgICAkcmVxdWVzdF9vcmRlciA9ICRidWls
ZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ107CisgICAgICAgICRyZXF1ZXN0X29yZGVyX2luY3Jl
bWVudGFsID0gYXJyYXlfZ2V0KCRvcmRlcl9pbmNyZW1lbnRhbF9ieV9jb21taXRfc2V0LCAkY29t
bWl0X3NldCwgMCk7CisgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRhZGRfY291bnQ7ICRpKysp
CisgICAgICAgICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkYnVpbGRfcmVxdWVzdCwg
KyskcmVxdWVzdF9vcmRlciArICRyZXF1ZXN0X29yZGVyX2luY3JlbWVudGFsKTsKKyAgICB9Cisg
ICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKK30KKworZnVuY3Rpb24gYWRkX2J1aWxkX3Jl
cXVlc3RfZm9yX2FsdGVybmF0aW5nX3Rlc3RfZ3JvdXAoJGRiLCAkYnVpbGRfcmVxdWVzdHMsICRh
ZGRfY291bnQsICRjb21taXRfc2V0X2lkLCAkb3JkZXIpCit7CisgICAgJGNvbW1pdF9zZXRzID0g
YXJyYXkoKTsKKyAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0ID0gYXJyYXkoKTsKKyAg
ICBmb3JlYWNoICgkYnVpbGRfcmVxdWVzdHMgYXMgJGJ1aWxkX3JlcXVlc3QpIHsKKyAgICAgICAg
aWYgKCRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ10gPCAwKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICRyZXF1ZXN0ZWRfY29tbWl0X3NldCA9ICRidWlsZF9yZXF1ZXN0Wydy
ZXF1ZXN0X2NvbW1pdF9zZXQnXTsKKyAgICAgICAgaWYgKCFpc19udWxsKCRjb21taXRfc2V0X2lk
KSAmJiAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgIT0gJGNvbW1pdF9zZXRfaWQpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkcmVxdWVzdGVkX2Nv
bW1pdF9zZXQsICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQpKQorICAgICAgICAgICAgY29u
dGludWU7CisKICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldHMsICRyZXF1ZXN0ZWRfY29t
bWl0X3NldCk7CisgICAgICAgICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXRbJHJlcXVlc3Rl
ZF9jb21taXRfc2V0XSA9ICRidWlsZF9yZXF1ZXN0OwogICAgIH0KIAorICAgIGlmICghaXNfbnVs
bCgkY29tbWl0X3NldF9pZCkgJiYgIWNvdW50KCRjb21taXRfc2V0cykpCisgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignQ29tbWl0U2V0Tm90SW5UZXN0R3JvdXAnLCBhcnJheSgnY29tbWl0U2V0JyA9
PiAkY29tbWl0X3NldF9pZCkpOworCiAgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOwotICAg
IGZvciAoJGkgPSAwOyAkaSA8ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKysp
IHsKKyAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkX2NvdW50OyAkaSsrKSB7CiAgICAgICAgIGZv
cmVhY2ggKCRjb21taXRfc2V0cyBhcyAkY29tbWl0X3NldCkgewogICAgICAgICAgICAgJGJ1aWxk
X3JlcXVlc3QgPSAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0WyRjb21taXRfc2V0XTsKLSAg
ICAgICAgICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFy
cmF5KAotICAgICAgICAgICAgICAgICd0cmlnZ2VyYWJsZScgPT4gJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3RfdHJpZ2dlcmFibGUnXSwKLSAgICAgICAgICAgICAgICAncmVwb3NpdG9yeV9ncm91cCcg
PT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcmVwb3NpdG9yeV9ncm91cCddLAotICAgICAgICAg
ICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwK
LSAgICAgICAgICAgICAgICAndGVzdCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfdGVzdCdd
LAotICAgICAgICAgICAgICAgICdncm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfZ3Jv
dXAnXSwKLSAgICAgICAgICAgICAgICAnb3JkZXInID0+ICsrJGN1cnJlbnRfb3JkZXIsCi0gICAg
ICAgICAgICAgICAgJ2NvbW1pdF9zZXQnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1p
dF9zZXQnXSkpOworICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RzKCRkYiwgJGJ1aWxk
X3JlcXVlc3QsICsrJG9yZGVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAkZGItPmNvbW1pdF90
cmFuc2FjdGlvbigpOworfQogCi0gICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKK2Z1bmN0aW9uIGlu
c2VydF9idWlsZF9yZXF1ZXN0cygkZGIsICRidWlsZF9yZXF1ZXN0LCAkb3JkZXJfb3ZlcndyaXRl
KQoreworICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFy
cmF5KAorICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Ry
aWdnZXJhYmxlJ10sCisgICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVz
dFsncmVxdWVzdF9yZXBvc2l0b3J5X2dyb3VwJ10sCisgICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwKKyAgICAgICAgJ3Rlc3QnID0+ICRidWls
ZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwKKyAgICAgICAgJ2dyb3VwJyA9PiAkYnVpbGRfcmVx
dWVzdFsncmVxdWVzdF9ncm91cCddLAorICAgICAgICAnb3JkZXInID0+ICRvcmRlcl9vdmVyd3Jp
dGUsCisgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21t
aXRfc2V0J10pKTsKIH0KIAogbWFpbigpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFs
eXNpcy10YXNrLnBocAppbmRleCAyOGExNjEzMDA4NGU4YzRkYWUxNGJkMjlmNTBmZmU4YmNkZThh
Yzk0Li41ZDkxOTMwYWM2MzUxZWRlYjU0ZGIzOTQwZGI0MDY0NmMxNTM1YTg0IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1h
bmFseXNpcy10YXNrLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocApAQCAtMTAsNiArMTAsNyBAQCBm
dW5jdGlvbiBtYWluKCkgewogICAgICRhdXRob3IgPSByZW1vdGVfdXNlcl9uYW1lKCRkYXRhKTsK
ICAgICAkbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ25hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9j
b3VudCA9IGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25Db3VudCcpOworICAgICRyZXBldGl0
aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGlu
ZycpOwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05v
dGlmaWNhdGlvbicsIEZhbHNlKTsKICAgICAkdGVzdF9ncm91cF9uYW1lID0gYXJyYXlfZ2V0KCRk
YXRhLCAndGVzdEdyb3VwTmFtZScpOwogICAgICRyZXZpc2lvbl9zZXRfbGlzdCA9IGFycmF5X2dl
dCgkZGF0YSwgJ3JldmlzaW9uU2V0cycpOwpAQCAtMjAsNiArMjEsOSBAQCBmdW5jdGlvbiBtYWlu
KCkgewogICAgIGlmICghJG5hbWUpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ05h
bWUnLCBhcnJheSgnbmFtZScgPT4gJG5hbWUpKTsKIAorICAgIGlmICghaW5fYXJyYXkoJHJlcGV0
aXRpb25fdHlwZSwgYXJyYXkoJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnKSkpCisgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25UeXBlJywgYXJyYXkoJ21vZGUnID0+
ICRyZXBldGl0aW9uX3R5cGUpKTsKKwogICAgICRyYW5nZSA9IHZhbGlkYXRlX2FyZ3VtZW50cygk
ZGF0YSwgYXJyYXkoJ3N0YXJ0UnVuJyA9PiAnaW50JywgJ2VuZFJ1bicgPT4gJ2ludCcpKTsKIAog
ICAgICRzdGFydF9ydW4gPSBlbnN1cmVfcm93X2J5X2lkKCRkYiwgJ3Rlc3RfcnVucycsICdydW4n
LCAkcmFuZ2VbJ3N0YXJ0UnVuJ10sICdJbnZhbGlkU3RhcnRSdW4nLCAkcmFuZ2UpOwpAQCAtODUs
NyArODksNyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICAkdHJpZ2dlcmFibGVfaWQgPSAk
dHJpZ2dlcmFibGVbJ2lkJ107CiAgICAgICAgICR0ZXN0X2lkID0gJHRyaWdnZXJhYmxlWyd0ZXN0
J107CiAgICAgICAgICRjb21taXRfc2V0cyA9IGNvbW1pdF9zZXRzX2Zyb21fcmV2aXNpb25fc2V0
cygkZGIsICR0cmlnZ2VyYWJsZV9pZCwgJHJldmlzaW9uX3NldF9saXN0KTsKLSAgICAgICAgY3Jl
YXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFz
a19pZCwgJHRlc3RfZ3JvdXBfbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lkLCAkY29uZmln
Wydjb25maWdfcGxhdGZvcm0nXSwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkbmVlZHNf
bm90aWZpY2F0aW9uKTsKKyAgICAgICAgY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVl
c3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJHRlc3RfZ3JvdXBfbmFtZSwgJGF1dGhv
ciwgJHRyaWdnZXJhYmxlX2lkLCAkY29uZmlnWydjb25maWdfcGxhdGZvcm0nXSwgJHRlc3RfaWQs
ICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9u
KTsKICAgICB9CiAKICAgICAkZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocAppbmRleCA3NDI1M2ZiZTc4NjU5YmEyZjZlMDk5OTMz
MTAxYmI4YTI5ZjMxMWRlLi5kMjNiMmZmOTY2ODFjOGZhODhlYzBmOTczZDEwZWJmZjM3Mjg4ODUz
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocApAQCAtMTgsNiArMTgs
NyBAQCBmdW5jdGlvbiBtYWluKCkKICAgICAkdGFza19pZCA9IGFycmF5X2dldCgkYXJndW1lbnRz
LCAndGFzaycpOwogICAgICR0YXNrX25hbWUgPSBhcnJheV9nZXQoJGRhdGEsICd0YXNrTmFtZScp
OwogICAgICRyZXBldGl0aW9uX2NvdW50ID0gJGFyZ3VtZW50c1sncmVwZXRpdGlvbkNvdW50J107
CisgICAgJHJlcGV0aXRpb25fdHlwZSA9IGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25UeXBl
JywgJ2FsdGVybmF0aW5nJyk7CiAgICAgJG5lZWRzX25vdGlmaWNhdGlvbiA9IGFycmF5X2dldCgk
ZGF0YSwgJ25lZWRzTm90aWZpY2F0aW9uJywgRmFsc2UpOwogICAgICRwbGF0Zm9ybV9pZCA9IGFy
cmF5X2dldCgkZGF0YSwgJ3BsYXRmb3JtJyk7CiAgICAgJHRlc3RfaWQgPSBhcnJheV9nZXQoJGRh
dGEsICd0ZXN0Jyk7CkBAIC00Miw2ICs0Myw5IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgIGVsc2Ug
aWYgKCRyZXBldGl0aW9uX2NvdW50IDwgMSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZh
bGlkUmVwZXRpdGlvbkNvdW50JywgYXJyYXkoJ3JlcGV0aXRpb25Db3VudCcgPT4gJHJlcGV0aXRp
b25fY291bnQpKTsKIAorICAgIGlmICghaW5fYXJyYXkoJHJlcGV0aXRpb25fdHlwZSwgYXJyYXko
J2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnKSkpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcign
SW52YWxpZFJlcGV0aXRpb25UeXBlJywgYXJyYXkoJ3JlcGV0aXRpb25UeXBlJyA9PiAkcmVwZXRp
dGlvbl90eXBlKSk7CisKICAgICAkdHJpZ2dlcmFibGVfaWQgPSBOVUxMOwogICAgIGlmICgkdGFz
a19pZCkgewogICAgICAgICAkdGFzayA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNf
dGFza3MnLCAndGFzaycsIGFycmF5KCdpZCcgPT4gJHRhc2tfaWQpKTsKQEAgLTg2LDcgKzkwLDcg
QEAgZnVuY3Rpb24gbWFpbigpCiAgICAgaWYgKCR0YXNrX25hbWUpCiAgICAgICAgICR0YXNrX2lk
ID0gJGRiLT5pbnNlcnRfcm93KCdhbmFseXNpc190YXNrcycsICd0YXNrJywgYXJyYXkoJ25hbWUn
ID0+ICR0YXNrX25hbWUsICdhdXRob3InID0+ICRhdXRob3IpKTsKIAotICAgICRncm91cF9pZCA9
IGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywg
JHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwg
JHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkbmVlZHNfbm90aWZpY2F0aW9uKTsKKyAgICAk
Z3JvdXBfaWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29t
bWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lkLCAkcGxh
dGZvcm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwg
JG5lZWRzX25vdGlmaWNhdGlvbik7CiAKICAgICAkZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOwog
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwCmluZGV4IDM1NWU2Yzg1ZjEy
M2IyYzM1NDQ3MTFiZmI2MTc0MDAwNzkzNzY5YWMuLjMxNzVkNzEwYTdjN2M2NDU0YmZiNzk2MTZl
ZGVkNjgzMjkzOWY5NDQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhw
CkBAIC0yMCw2ICsyMCw5IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgICAgICR2YWx1ZXNbJ21h
eV9uZWVkX21vcmVfcmVxdWVzdHMnXSA9IEZBTFNFOwogICAgIH0KIAorICAgIGlmIChhcnJheV9r
ZXlfZXhpc3RzKCdjYW5jZWwnLCAkZGF0YSkpCisgICAgICAgICR2YWx1ZXNbJ21heV9uZWVkX21v
cmVfcmVxdWVzdHMnXSA9IEZBTFNFOworCiAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ21heU5l
ZWRNb3JlUmVxdWVzdHMnLCAkZGF0YSkpCiAgICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9tb3Jl
X3JlcXVlc3RzJ10gPSAkZGF0YVsnbWF5TmVlZE1vcmVSZXF1ZXN0cyddOwogCkBAIC00NCw3ICs0
Nyw3IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVk
VG9VcGRhdGVUZXN0R3JvdXAnLCBhcnJheSgnaWQnID0+ICR0ZXN0X2dyb3VwX2lkLCAndmFsdWVz
JyA9PiAkdmFsdWVzKSk7CiAgICAgfQogCi0gICAgaWYgKGFycmF5X2dldCgkZGF0YSwgJ2hpZGRl
bicpKSB7CisgICAgaWYgKGFycmF5X2dldCgkZGF0YSwgJ2hpZGRlbicpIHx8IGFycmF5X2dldCgk
ZGF0YSwgJ2NhbmNlbCcpKSB7CiAgICAgICAgICRkYi0+cXVlcnlfYW5kX2dldF9hZmZlY3RlZF9y
b3dzKCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfc3RhdHVzID0gJDEKICAgICAg
ICAgICAgIFdIRVJFIHJlcXVlc3RfZ3JvdXAgPSAkMiBBTkQgcmVxdWVzdF9zdGF0dXMgPSAkMycs
IGFycmF5KCdjYW5jZWxlZCcsICR0ZXN0X2dyb3VwX2lkLCAncGVuZGluZycpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9jb21tb24t
Y29tcG9uZW50LWJhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJl
ZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKaW5kZXggYzU2ZTJiMDA5MTcxOGMwOTA3Mjc3MTYy
NDQ1ZjdjOWVlN2E0ODkyZC4uYmQ3MTcxN2QyOGY1MTZmOTA5NzZkYTk5ZjFiMzM0N2I4YWE2Mzhj
OSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29t
bW9uLWNvbXBvbmVudC1iYXNlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcwpAQCAtMTM1LDEyICsxMzUsMTIgQEAg
Y2xhc3MgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENo
aWxkKENvbW1vbkNvbXBvbmVudEJhc2UuX2NvbnRleHQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkp
OwogICAgIH0KIAotICAgIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxs
YmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXg9bnVsbCkKKyAgICBjcmVhdGVMaW5rKGNvbnRlbnQs
IHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4ID0gbnVsbCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBDb21tb25Db21wb25lbnRCYXNlLmNyZWF0ZUxpbmsoY29u
dGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXgpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywg
Y2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCisgICAgc3RhdGljIGNyZWF0ZUxp
bmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5k
ZXggPSBudWxsKQogICAgIHsKICAgICAgICAgdmFyIHRpdGxlID0gdGl0bGVPckNhbGxiYWNrOwog
ICAgICAgICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkgewpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0
aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMKaW5k
ZXggODdiMTdjMTQ2ZDQ1M2UwMmEzMDNkZjJhOTI0MjIzNGU0YThlNGM2OS4uZTRmNjc0NGZjZDlj
NmQ0MGI4MTNhZWZlN2M0NTFjYzZjODE2YTkzZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3Qt
Z3JvdXAtZm9ybS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzCkBAIC00MCw5
ICs0MCw5IEBAIGNsYXNzIEN1c3RvbUNvbmZpZ3VyYXRpb25UZXN0R3JvdXBGb3JtIGV4dGVuZHMg
VGVzdEdyb3VwRm9ybSB7CiAgICAgICAgIGNvbnN0IHRlc3QgPSBjb25maWd1cmF0b3IudGVzdHMo
KVswXTsgLy8gRklYTUU6IEFkZCB0aGUgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBtdWx0aXBsZSB0
ZXN0cy4KICAgICAgICAgY29uc29sZS5hc3NlcnQoISF0aGlzLl9oYXNUYXNrID09PSAhdGFza05h
bWUpOwogICAgICAgICBpZiAoIXRoaXMuX2hhc1Rhc2spCi0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91
cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgdGhpcy5fbm90aWZ5
T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVz
dGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywg
cGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24sIHRoaXMu
X3JlcGV0aXRpb25UeXBlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBO
YW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9u
KTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMu
X3JlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRl
c3QsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbiwgdGhpcy5fcmVwZXRpdGlvblR5cGUpOwogICAg
IH0KIAogICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3Vw
LWZvcm0uanMKaW5kZXggYTQzZWRmMzUwOGJjZjA3NDYyNWRiOTk2NGY2MDRkZTE4MDgyOTY0Zi4u
OTUyMWZmMzcyNmQwNDAxYzAzYjFlZjZkMjc3Yzc0YWM4NjRmYTRiMSAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9y
bS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMv
dGVzdC1ncm91cC1mb3JtLmpzCkBAIC02LDYgKzYsNyBAQCBjbGFzcyBUZXN0R3JvdXBGb3JtIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHN1cGVyKG5hbWUgfHwgJ3Rlc3QtZ3JvdXAt
Zm9ybScpOwogICAgICAgICB0aGlzLl9yZXBldGl0aW9uQ291bnQgPSA0OwogICAgICAgICB0aGlz
Ll9ub3RpZnlPbkNvbXBsZXRpb24gPSB0cnVlOworICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlw
ZSA9ICdhbHRlcm5hdGluZyc7CiAgICAgfQogCiAgICAgc2V0UmVwZXRpdGlvbkNvdW50KGNvdW50
KQpAQCAtMjIsMTIgKzIzLDE0IEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICAgICAgfTsKICAgICAgICAgY29uc3Qgbm90aWZ5T25Db21wbGV0aW9uQ2hl
Y2tCb3ggPSB0aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uLWNoZWNrYm94Jyk7CiAg
ICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrQm94Lm9uY2hhbmdlID0gKCkgPT4gdGhpcy5f
bm90aWZ5T25Db21wbGV0aW9uID0gbm90aWZ5T25Db21wbGV0aW9uQ2hlY2tCb3guY2hlY2tlZDsK
KyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGVTZWxlY3QgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0
aXRpb24tdHlwZScpOworICAgICAgICByZXBldGl0aW9uVHlwZVNlbGVjdC5vbmNoYW5nZSA9ICgp
ID0+IHRoaXMuX3JlcGV0aXRpb25UeXBlID0gcmVwZXRpdGlvblR5cGVTZWxlY3QudmFsdWU7CiAg
ICAgICAgIHRoaXMuY29udGVudCgnZm9ybScpLm9uc3VibWl0ID0gdGhpcy5jcmVhdGVFdmVudEhh
bmRsZXIoKCkgPT4gdGhpcy5zdGFydFRlc3RpbmcoKSk7CiAgICAgfQogCiAgICAgc3RhcnRUZXN0
aW5nKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycs
IHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNv
dW50LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24sIHRoaXMuX3JlcGV0aXRpb25UeXBlKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKQEAgLTY1LDcgKzY4LDExIEBAIGNsYXNz
IFRlc3RHcm91cEZvcm0gZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICA8
b3B0aW9uPjk8L29wdGlvbj4KICAgICAgICAgICAgICAgICA8b3B0aW9uPjEwPC9vcHRpb24+CiAg
ICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgIGl0ZXJhdGlvbnMgcGVyIHNldAorICAg
ICAgICAgICAgPGxhYmVsPml0ZXJhdGlvbnMgcGVyIHNldCBpbjwvbGFiZWw+CisgICAgICAgICAg
ICA8c2VsZWN0IGlkPSJyZXBldGl0aW9uLXR5cGUiPgorICAgICAgICAgICAgICAgIDxvcHRpb24g
c2VsZWN0ZWQgdmFsdWU9ImFsdGVybmF0aW5nIj5hbHRlcm5hdGluZyAoQUJBQik8L29wdGlvbj4K
KyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzZXF1ZW50aWFsIj5zZXF1ZW50aWFsIChB
QUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICA8aW5wdXQg
aWQ9Im5vdGlmeS1vbi1jb21wbGV0aW9uLWNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgY2hlY2tl
ZC8+Tm90aWZ5IG9uIGNvbXBsZXRpb24KICAgICAgICAgYDsKICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFz
ay5qcwppbmRleCAxNzc2YTgxN2JjMzE5OTY5Mjk3MmE0MGFhNGVkNjhjMWE5NWNkZWVlLi4wYWY0
YTE5MzM3ZmVjMTY4OTFlNDY0ZTcwZTI2ZTY4YmJlYjM3NDJiIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2su
anMKQEAgLTMyNCw3ICszMjQsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0ZW5kcyBMYWJlbGVk
T2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgfQogCi0gICAgc3RhdGljIGFz
eW5jIGNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdyb3VwTmFtZT1udWxs
LCByZXBldGl0aW9uQ291bnQ9MCwgbm90aWZ5T25Db21wbGV0aW9uPWZhbHNlKQorICAgIHN0YXRp
YyBhc3luYyBjcmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRlc3RHcm91cE5hbWUg
PSBudWxsLCByZXBldGl0aW9uQ291bnQgPSAwLCBub3RpZnlPbkNvbXBsZXRpb24gPSBmYWxzZSwg
cmVwZXRpdGlvblR5cGUgPSAnYWx0ZXJuYXRpbmcnKQogICAgIHsKICAgICAgICAgY29uc3QgcGFy
YW1ldGVycyA9IHtuYW1lLCBzdGFydFJ1bjogc3RhcnRQb2ludC5pZCwgZW5kUnVuOiBlbmRQb2lu
dC5pZH07CiAgICAgICAgIGlmICh0ZXN0R3JvdXBOYW1lKSB7CkBAIC0zMzMsNiArMzMzLDcgQEAg
Y2xhc3MgQW5hbHlzaXNUYXNrIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgICAgICBw
YXJhbWV0ZXJzWydyZXBldGl0aW9uQ291bnQnXSA9IHJlcGV0aXRpb25Db3VudDsKICAgICAgICAg
ICAgIHBhcmFtZXRlcnNbJ3Rlc3RHcm91cE5hbWUnXSA9IHRlc3RHcm91cE5hbWU7CiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzWyduZWVkc05vdGlmaWNhdGlvbiddID0gbm90aWZ5T25Db21wbGV0aW9u
OworICAgICAgICAgICAgcGFyYW1ldGVyc1sncmVwZXRpdGlvblR5cGUnXSA9IHJlcGV0aXRpb25U
eXBlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCBwYXJhbWV0ZXJzKTsKICAg
ICAgICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzcG9uc2UudGFza0lkLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2J1aWxkLXJlcXVlc3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9idWlsZC1yZXF1ZXN0LmpzCmluZGV4IGYwOTVlMGQ3YWJlODZhMDI2NTIxNTE2MTI3ODRk
MjFkMTAzYTU2MTYuLjgyMzAyNjZhNjRkNjQxMDU3ZDlmZjBiNzRmYjhhOWMzZDMyMjNhN2IgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxk
LXJlcXVlc3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvYnVpbGQtcmVxdWVzdC5qcwpAQCAtMTgsNyArMTgsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3Qg
ZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9wbGF0Zm9ybSA9IG9iamVj
dC5wbGF0Zm9ybTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIW9iamVjdC50ZXN0IHx8IG9iamVj
dC50ZXN0IGluc3RhbmNlb2YgVGVzdCk7CiAgICAgICAgIHRoaXMuX3Rlc3QgPSBvYmplY3QudGVz
dDsKLSAgICAgICAgdGhpcy5fb3JkZXIgPSBvYmplY3Qub3JkZXI7CisgICAgICAgIHRoaXMuX29y
ZGVyID0gK29iamVjdC5vcmRlcjsKICAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0LmNvbW1p
dFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CiAgICAgICAgIHRoaXMuX2NvbW1pdFNldCA9IG9i
amVjdC5jb21taXRTZXQ7CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IG9iamVjdC5zdGF0dXM7CkBA
IC0zMSw3ICszMSw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVj
dCB7CiAKICAgICB1cGRhdGVTaW5nbGV0b24ob2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fb3JkZXIgPT0gb2JqZWN0Lm9yZGVyKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoK3RoaXMuX29yZGVyIDw9ICtvYmplY3Qub3JkZXIpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9jb21taXRTZXQgPT0gb2JqZWN0LmNvbW1pdFNldCk7CiAKICAgICAgICAgY29u
c3QgdGVzdEdyb3VwID0gb2JqZWN0LnRlc3RHcm91cDsKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
QnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgdGhpcy5fc3Rh
dHVzVXJsID0gb2JqZWN0LnVybDsKICAgICAgICAgdGhpcy5fYnVpbGRJZCA9IG9iamVjdC5idWls
ZDsKICAgICAgICAgdGhpcy5fc3RhdHVzRGVzY3JpcHRpb24gPSBvYmplY3Quc3RhdHVzRGVzY3Jp
cHRpb247CisgICAgICAgIHRoaXMuX29yZGVyID0gK29iamVjdC5vcmRlcjsKICAgICB9CiAKICAg
ICB0cmlnZ2VyYWJsZSgpIHsgcmV0dXJuIHRoaXMuX3RyaWdnZXJhYmxlOyB9CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5q
cwppbmRleCA5N2U4YmM4ZWUzY2RhOWE2ZjY0MTYyMzUzNGU2N2ZiODAwMzk5ODJiLi4zZDZmM2E0
MjNiZjc3ZTljMTY4ZDc5NmYwNjFkNGM4ODk2Njk3OTQ1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKQEAgLTEx
LDcgKzExLDggQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAg
ICAgIHRoaXMuX2lzSGlkZGVuID0gb2JqZWN0LmhpZGRlbjsKICAgICAgICAgdGhpcy5fbmVlZHNO
b3RpZmljYXRpb24gPSBvYmplY3QubmVlZHNOb3RpZmljYXRpb247CiAgICAgICAgIHRoaXMuX21h
eU5lZWRNb3JlUmVxdWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0czsKLSAgICAgICAg
dGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9IG9iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50OworICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gK29iamVjdC5pbml0
aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlwZSA9IG9iamVj
dC5yZXBldGl0aW9uVHlwZTsKICAgICAgICAgdGhpcy5fYnVpbGRSZXF1ZXN0cyA9IFtdOwogICAg
ICAgICB0aGlzLl9vcmRlckJ1aWxkUmVxdWVzdHNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVk
RnVuY3Rpb24oKC4uLmJ1aWxkUmVxdWVzdHMpID0+IHsKICAgICAgICAgICAgIHJldHVybiBidWls
ZFJlcXVlc3RzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIoKSAtIGIub3JkZXIoKSk7CkBAIC0zNiw3
ICszNyw4IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAg
ICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5uZWVkc05vdGlmaWNhdGlvbjsKICAg
ICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VudEF0ID0gb2JqZWN0Lm5vdGlmaWNhdGlvblNlbnRB
dCA/IG5ldyBEYXRlKG9iamVjdC5ub3RpZmljYXRpb25TZW50QXQpIDogbnVsbDsKICAgICAgICAg
dGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IG9iamVjdC5tYXlOZWVkTW9yZVJlcXVlc3RzOwot
ICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gb2JqZWN0LmluaXRpYWxSZXBl
dGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSArb2Jq
ZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25UeXBl
ID0gb2JqZWN0LnJlcGV0aXRpb25UeXBlOwogICAgIH0KIAogICAgIHRhc2soKSB7IHJldHVybiBB
bmFseXNpc1Rhc2suZmluZEJ5SWQodGhpcy5fdGFza0lkKTsgfQpAQCAtNDYsNiArNDgsNyBAQCBj
bGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICBuZWVkc05vdGlmaWNh
dGlvbigpIHsgcmV0dXJuIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uOyB9CiAgICAgbWF5TmVlZE1v
cmVSZXF1ZXN0cygpIHsgcmV0dXJuIHRoaXMuX21heU5lZWRNb3JlUmVxdWVzdHM7IH0KICAgICBp
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkgeyByZXR1cm4gdGhpcy5faW5pdGlhbFJlcGV0aXRpb25D
b3VudDsgfQorICAgIHJlcGV0aXRpb25UeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVwZXRpdGlvblR5
cGU7IH0KICAgICBub3RpZmljYXRpb25TZW50QXQoKSB7IHJldHVybiB0aGlzLl9ub3RpZmljYXRp
b25TZW50QXQ7IH0KICAgICBhdXRob3IoKSB7IHJldHVybiB0aGlzLl9hdXRob3JOYW1lOyB9CiAg
ICAgYWRkQnVpbGRSZXF1ZXN0KHJlcXVlc3QpCkBAIC03MiwyMCArNzUsMTkgQEAgY2xhc3MgVGVz
dEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAKICAgICBfbGFzdFJlcXVlc3QoKQogICAg
IHsKLSAgICAgICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygp
OworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXMub3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsK
ICAgICAgICAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA/IHJlcXVlc3RzW3JlcXVlc3RzLmxlbmd0
aCAtIDFdIDogbnVsbDsKICAgICB9CiAKLSAgICBfb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKQorICAg
IG9yZGVyZWRCdWlsZFJlcXVlc3RzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vcmRl
ckJ1aWxkUmVxdWVzdHNMYXppbHkuZXZhbHVhdGUoLi4udGhpcy5fYnVpbGRSZXF1ZXN0cyk7CiAg
ICAgfQogCi0gICAgcmVwZXRpdGlvbkNvdW50KCkKKyAgICByZXBldGl0aW9uQ291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9idWlsZFJlcXVlc3Rz
Lmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBjb25zdCBjb21taXRTZXQg
PSB0aGlzLl9idWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwogICAgICAgICBsZXQgY291bnQg
PSAwOwogICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgdGhpcy5fYnVpbGRSZXF1ZXN0cykg
ewogICAgICAgICAgICAgaWYgKHJlcXVlc3QuaXNUZXN0KCkgJiYgcmVxdWVzdC5jb21taXRTZXQo
KSA9PSBjb21taXRTZXQpCkBAIC05NCwxNSArOTYsMzMgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9CiAKKyAgICBo
YXNSZXRyaWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RlZENvbW1pdFNl
dHMoKS5zb21lKGNvbW1pdFNldCA9PiB0aGlzLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChj
b21taXRTZXQpID4gdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOworICAgIH0KKworICAg
IHdpbGxFeGNlZWRNYXhSZXRyeUZvckNvbW1pdFNldFdpdGhSZXRyeUNvdW50KGNvbW1pdFNldCwg
cmV0cnlDb3VudCwgbWF4UmV0cnlGYWN0b3IpCisgICAgeworICAgICAgICByZXR1cm4gbWF4UmV0
cnlGYWN0b3IgKiB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSA8IHJldHJ5Q291bnQgKyB0
aGlzLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpOworICAgIH0KKworICAg
IHJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KQorICAgIHsKKyAgICAgICAgY29uc3Qg
YnVpbGRSZXF1ZXN0cyA9IHRoaXMucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0
ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgY29u
c3QgY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVp
bGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaGFzQ29tcGxldGVkKCkpLmxlbmd0aDsKKyAgICAg
ICAgY29uc3QgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0
ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gIWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7
CisgICAgICAgIGNvbnN0IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVp
bGRSZXF1ZXN0Q291bnQgKyB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7CisgICAgICAgIHJl
dHVybiBNYXRoLm1heCgwLCB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlh
bGx5U3VjY2Vzc2Z1bENvdW50KTsKKyAgICB9CisKICAgICByZXF1ZXN0ZWRDb21taXRTZXRzKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0c0xh
emlseS5ldmFsdWF0ZSguLi50aGlzLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzTGF6aWx5LmV2YWx1YXRlKC4u
LnRoaXMub3JkZXJlZEJ1aWxkUmVxdWVzdHMoKSk7CiAgICAgfQogCiAgICAgc3RhdGljIF9jb21w
dXRlUmVxdWVzdGVkQ29tbWl0U2V0cyguLi5vcmRlcmVkQnVpbGRSZXF1ZXN0cykKICAgICB7CiAg
ICAgICAgIGNvbnN0IHJlcXVlc3RlZENvbW1pdFNldHMgPSBbXTsKLSAgICAgICAgY29uc3QgY29t
bWl0U2V0TGFiZWxNYXAgPSBuZXcgTWFwOwogICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2Yg
b3JkZXJlZEJ1aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGNvbnN0IHNldCA9IHJlcXVlc3Qu
Y29tbWl0U2V0KCk7CiAgICAgICAgICAgICBpZiAoIXJlcXVlc3RlZENvbW1pdFNldHMuaW5jbHVk
ZXMoc2V0KSkKQEAgLTExMyw3ICsxMzMsNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0IHsKIAogICAgIHJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpLmZpbHRlcigocmVx
dWVzdCkgPT4gcmVxdWVzdC5jb21taXRTZXQoKSA9PSBjb21taXRTZXQpOworICAgICAgICByZXR1
cm4gdGhpcy5vcmRlcmVkQnVpbGRSZXF1ZXN0cygpLmZpbHRlcigocmVxdWVzdCkgPT4gcmVxdWVz
dC5jb21taXRTZXQoKSA9PSBjb21taXRTZXQpOwogICAgIH0KIAogICAgIGxhYmVsRm9yQ29tbWl0
U2V0KGNvbW1pdFNldCkKQEAgLTIxOSw2ICsyMzksMTQgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIGFzeW5jIGNhbmNl
bFBlbmRpbmdSZXF1ZXN0cygpCisgICAgeworICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fdXBk
YXRlQnVpbGRSZXF1ZXN0KHsKKyAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCisgICAgICAg
ICAgICBjYW5jZWw6IHRydWUsCisgICAgICAgIH0pOworICAgIH0KKwogICAgIGFzeW5jIGRpZFNl
bmROb3RpZmljYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3VwZGF0
ZUJ1aWxkUmVxdWVzdCh7CkBAIC0yMjgsMTEgKzI1NiwxMiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0
ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXN5bmMgYWRk
TW9yZUJ1aWxkUmVxdWVzdHMoYWRkQ291bnQpCisgICAgYXN5bmMgYWRkTW9yZUJ1aWxkUmVxdWVz
dHMoYWRkQ291bnQsIGNvbW1pdFNldCA9IG51bGwpCiAgICAgewogICAgICAgICByZXR1cm4gYXdh
aXQgdGhpcy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlk
KCksCiAgICAgICAgICAgICBhZGRDb3VudCwKKyAgICAgICAgICAgIGNvbW1pdFNldCwKICAgICAg
ICAgfSwgJ2FkZC1idWlsZC1yZXF1ZXN0cycpOwogICAgIH0KIApAQCAtMjQ0LDM5ICsyNzMsMzcg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRl
c3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBs
ZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9y
bSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9u
Q29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsKICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0g
Q29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21Db21taXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAg
ICBjb25zdCBwYXJhbXMgPSB7dGFza05hbWUsIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBs
YXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNl
dHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJl
dHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFt
cykudGhlbigoZGF0YSkgPT4gewotICAgICAgICAgICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRj
aEJ5SWQoZGF0YVsndGFza0lkJ10sIHRydWUpOwotICAgICAgICB9KS50aGVuKCh0YXNrKSA9PiB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEZvclRhc2sodGFzay5pZCgpKS50aGVuKCgp
ID0+IHRhc2spOwotICAgICAgICB9KTsKKyAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2tOYW1l
LCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0Lmlk
KCksIHJlcGV0aXRpb25Db3VudCwKKyAgICAgICAgICAgIHJldmlzaW9uU2V0cywgcmVwZXRpdGlv
blR5cGUsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbn07CisgICAgICAg
IGNvbnN0IGRhdGEgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVz
dC1ncm91cCcsIHBhcmFtcyk7CisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBBbmFseXNpc1Rh
c2suZmV0Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXdhaXQgdGhpcy5m
ZXRjaEZvclRhc2sodGFzay5pZCgpKTsKKyAgICAgICAgcmV0dXJuIHRhc2s7CiAgICAgfQogCi0g
ICAgc3RhdGljIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRhc2ssIHBsYXRmb3JtLCB0
ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21w
bGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0
YXNrLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNl
dHMsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsKICAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21Db21taXRTZXRzKGNvbW1pdFNl
dHMpOwotICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFzazogdGFzay5pZCgpLCBuYW1lOiBncm91
cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRp
b25Db3VudCwgcmV2aXNpb25TZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBs
ZXRpb259OwotICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRl
LXRlc3QtZ3JvdXAnLCBwYXJhbXMpLnRoZW4oKGRhdGEpID0+IHsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7Ci0gICAgICAgIH0pOwor
ICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFzazogdGFzay5pZCgpLCBuYW1lOiBncm91cE5hbWUs
IHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3Vu
dCwKKyAgICAgICAgICAgIHJldmlzaW9uU2V0cywgcmVwZXRpdGlvblR5cGUsIG5lZWRzTm90aWZp
Y2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbn07CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2Fp
dCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFtcyk7
CisgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwg
dHJ1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRh
c2ssIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9u
KQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0YXNrLCBuYW1l
LCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRp
dGlvblR5cGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0
aCA9PSAyKTsKICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9u
U2V0c0Zyb21Db21taXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAgICByZXR1cm4gUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7Ci0gICAgICAgICAgICB0YXNr
OiB0YXNrLmlkKCksCi0gICAgICAgICAgICBuYW1lOiBuYW1lLAotICAgICAgICAgICAgcmVwZXRp
dGlvbkNvdW50OiByZXBldGl0aW9uQ291bnQsCi0gICAgICAgICAgICByZXZpc2lvblNldHM6IHJl
dmlzaW9uU2V0cywKLSAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29t
cGxldGlvbiwKLSAgICAgICAgfSkudGhlbigoZGF0YSkgPT4gdGhpcy5mZXRjaEZvclRhc2soZGF0
YVsndGFza0lkJ10sIHRydWUpKTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgeworICAgICAgICAgICAgdGFz
azogdGFzay5pZCgpLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIHJldmlzaW9uU2V0cywgcmVwZXRp
dGlvblR5cGUsCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBs
ZXRpb24KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoRm9yVGFz
ayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIGZpbmRBbGxCeVRh
c2sodGFza0lkKQpAQCAtMjg0LDYgKzMxMSwxMiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBM
YWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5hbGwoKS5maWx0ZXIoKHRl
c3RHcm91cCkgPT4gdGVzdEdyb3VwLl90YXNrSWQgPT0gdGFza0lkKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgYXN5bmMgZmV0Y2hCeUlkKHRlc3RHcm91cElkLCBpZ25vcmVDYWNoZT1mYWxzZSkKKyAg
ICB7CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNhY2hlZEZldGNoKGAvYXBpL3Rl
c3QtZ3JvdXBzLyR7dGVzdEdyb3VwSWR9YCwge30sIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKVswXTsKKyAg
ICB9CisKICAgICBzdGF0aWMgZmV0Y2hGb3JUYXNrKHRhc2tJZCwgaWdub3JlQ2FjaGUgPSBmYWxz
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3Jv
dXBzJywge3Rhc2s6IHRhc2tJZH0sIGlnbm9yZUNhY2hlKS50aGVuKHRoaXMuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3Vwcy5iaW5kKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBh
Z2UuanMKaW5kZXggM2Y0ZmVmZmYyN2E0MzgzNjQzMDViYmI4M2Q3YjE2YjMyNDA1ZWM3MS4uNGQw
YzNkZjgzMzliYjAxYTMyMTM1OGE4ZjhlZmVkMWZmN2NlODA1YyAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10
YXNrLXBhZ2UuanMKQEAgLTI0LDggKzI0LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrQ2hhcnRQYW5l
IGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRl
c3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBuYW1lLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29t
cGxldGlvbikgPT4gewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbmV3VGVzdEdy
b3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxl
dGlvbik7CisgICAgICAgIHRoaXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRl
c3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBuYW1lLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29t
cGxldGlvbiwgcmVwZXRpdGlvblR5cGUpID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFw
LCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKTsKICAgICAgICAgfSk7CiAgICAg
fQogCkBAIC0xMDYsOCArMTA2LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrUmVzdWx0c1BhbmUgZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgcmVwb3NpdG9yeVBpY2tlci5hZGRFdmVudExp
c3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLmVucXVldWVUb1JlbmRlcigpKTsKICAgICAgICAg
dGhpcy5wYXJ0KCdjb21taXQtdmlld2VyJykuc2V0U2hvd1JlcG9zaXRvcnlOYW1lKGZhbHNlKTsK
IAotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5n
JywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRp
b24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcs
IG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24p
OworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5n
JywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRp
b24sIHJlcGV0aXRpb25UeXBlKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90
aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgIH0pOwogICAgIH0KIApA
QCAtMjIxLDcgKzIyMSw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUgZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwID0gY3VycmVu
dEdyb3VwOwogICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5wYXJ0KCdmb3JtJyk7CiAgICAgICAg
IGlmICghZm9ybS5oYXNDb21taXRTZXRzKCkgJiYgY3VycmVudEdyb3VwKQotICAgICAgICAgICAg
Zm9ybS5zZXRDb25maWd1cmF0aW9ucyhjdXJyZW50R3JvdXAudGVzdCgpLCBjdXJyZW50R3JvdXAu
cGxhdGZvcm0oKSwgY3VycmVudEdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpKTsKKyAgICAgICAgICAgIGZvcm0uc2V0Q29uZmlndXJhdGlv
bnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3VycmVudEdyb3VwLnBsYXRmb3JtKCksIGN1cnJlbnRH
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIGN1cnJlbnRHcm91cC5yZXF1ZXN0ZWRDb21t
aXRTZXRzKCkpOwogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIApAQCAt
MjQzLDcgKzI0Myw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUgZXh0ZW5k
cyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgYDsKICAgICB9Ci19Owor
fQogCiBDb21wb25lbnRCYXNlLmRlZmluZUVsZW1lbnQoJ2FuYWx5c2lzLXRhc2stY29uZmlndXJh
dG9yLXBhbmUnLCBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKTsKIApAQCAtMjY3LDE0ICsy
NjcsMTQgQEAgY2xhc3MgQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVu
dEJhc2UgewogICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQogICAgIHsKICAgICAgICAgdGhp
cy5jb250ZW50KCdoaWRlLWJ1dHRvbicpLm9uY2xpY2sgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0
aW9uKCd0b2dnbGVUZXN0R3JvdXBWaXNpYmlsaXR5JywgdGhpcy5fY3VycmVudFRlc3RHcm91cCk7
Ci0gICAgICAgIHRoaXMucGFydCgncmV0cnktZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRl
c3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgdGhpcy5fY3VycmVu
dFRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAg
ICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywg
KHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4g
eworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbigncmV0cnlUZXN0R3JvdXAnLCB0aGlz
Ll9jdXJyZW50VGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwg
cmVwZXRpdGlvblR5cGUpOwogICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3Qt
Zm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBu
b3RpZnlPbkNvbXBsZXRpb24pID0+IHsKKyAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScp
Lmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBub3RpZnlP
bkNvbXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBiaXNl
Y3RpbmdDb21taXRTZXQgPSB0aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQo
dGhpcy5fY3VycmVudFRlc3RHcm91cCk7CiAgICAgICAgICAgICBjb25zdCBbb25lQ29tbWl0U2V0
LCBhbm90aGVyQ29tbWl0U2V0XSA9IHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAucmVxdWVzdGVkQ29t
bWl0U2V0cygpOwogICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0cyA9IFtvbmVDb21taXRTZXQs
IGJpc2VjdGluZ0NvbW1pdFNldCwgYW5vdGhlckNvbW1pdFNldF07Ci0gICAgICAgICAgICB0aGlz
LmRpc3BhdGNoQWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3Vw
LCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJy
ZW50VGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxl
dGlvbiwgcmVwZXRpdGlvblR5cGUpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM2NSwyOCAr
MzY1LDc2IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNvbnRlbnQoJ3Rlc3QtZ3Jv
dXAtbGlzdCcpLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpOwogICAgICAgICBpZiAoc2VsZWN0
ZWQpCiAgICAgICAgICAgICBzZWxlY3RlZC5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpOwot
ICAgICAgICBpZiAoY3VycmVudEdyb3VwKQotICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFw
LmdldChjdXJyZW50R3JvdXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CisK
KyAgICAgICAgY29uc3QgcmV0cnlGb3JtID0gdGhpcy5jb250ZW50KCdyZXRyeS1mb3JtJyk7Cisg
ICAgICAgIGNvbnN0IGJpc2VjdEZvcm0gPSB0aGlzLmNvbnRlbnQoJ2Jpc2VjdC1mb3JtJyk7Cisg
ICAgICAgIGxldCBzdGF0dXNTdW1tYXJ5ID0gbnVsbDsKKyAgICAgICAgbGV0IHJlcXVlc3RTdW1t
YXJ5ID0gbnVsbDsKKyAgICAgICAgbGV0IGhpZGVCdXR0b24gPSBudWxsOworICAgICAgICBsZXQg
cGVuZGluZ1JlcXVlc3RDYW5jZWxXYXJuaW5nID0gbnVsbDsKIAogICAgICAgICBpZiAoY3VycmVu
dEdyb3VwKSB7CisgICAgICAgICAgICB0aGlzLl90ZXN0R3JvdXBNYXAuZ2V0KGN1cnJlbnRHcm91
cCkubGlzdEl0ZW0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKICAgICAgICAgICAgIHRoaXMu
cGFydCgncmV0cnktZm9ybScpLnNldFJlcGV0aXRpb25Db3VudChjdXJyZW50R3JvdXAuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpKTsKICAgICAgICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0n
KS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSk7Ci0gICAgICAgICAgICBjb25zdCBzdGF0dXNTdW1tYXJ5ID0gYCR7Y3VycmVudEdyb3VwLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVxdWVzdGVkLCAke2N1cnJlbnRHcm91cC5yZXBldGl0
aW9uQ291bnQoKSAtIGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IGFkZGVk
IGR1ZSB0byBmYWlsdXJlcy5gOwotICAgICAgICAgICAgdGhpcy5jb250ZW50KCdzdGF0dXMtc3Vt
bWFyeScpLmlubmVySFRNTCA9IHN0YXR1c1N1bW1hcnk7CiAKLSAgICAgICAgICAgIGNvbnN0IGF1
dGhvcmVkQnkgPSBjdXJyZW50R3JvdXAuYXV0aG9yKCkgPyBgYnkgIiR7Y3VycmVudEdyb3VwLmF1
dGhvcigpfSJgIDogJyc7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFy
eScpLmlubmVySFRNTCA9IGBTY2hlZHVsZWQgJHthdXRob3JlZEJ5fSBhdCAke2N1cnJlbnRHcm91
cC5jcmVhdGVkQXQoKX1gCisgICAgICAgICAgICBpZiAoY3VycmVudEdyb3VwLmhhc1JldHJpZXMo
KSkgeworICAgICAgICAgICAgICAgIHN0YXR1c1N1bW1hcnkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQo
J2RpdicsIHtpZDogJ3N0YXR1cy1zdW1tYXJ5JywgY2xhc3M6ICdzdW1tYXJ5J30sCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3N1bW1hcml6ZWRUZXN0R3JvdXAoY3VycmVudEdyb3VwKSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGF1dGhvcmVkQnkgPSBjdXJyZW50R3Jv
dXAuYXV0aG9yKCkgPyBgYnkgIiR7Y3VycmVudEdyb3VwLmF1dGhvcigpfSIgYCA6ICcnOworICAg
ICAgICAgICAgcmVxdWVzdFN1bW1hcnkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtpZDog
J3JlcXVlc3Qtc3VtbWFyeScsIGNsYXNzOiAnc3VtbWFyeSd9LAorICAgICAgICAgICAgICAgIGBT
Y2hlZHVsZWQgJHthdXRob3JlZEJ5fWF0ICR7Y3VycmVudEdyb3VwLmNyZWF0ZWRBdCgpfWApOwor
CisgICAgICAgICAgICBoaWRlQnV0dG9uID0gdGhpcy5jcmVhdGVFbGVtZW50KCdidXR0b24nLCB7
J2lkJzogJ2hpZGUtYnV0dG9uJ30sCisgICAgICAgICAgICAgICAgY3VycmVudEdyb3VwLmlzSGlk
ZGVuKCkgPyAnVW5oaWRlJyA6ICdIaWRlJyk7CisgICAgICAgICAgICBoaWRlQnV0dG9uLm9uY2xp
Y2sgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd0b2dnbGVUZXN0R3JvdXBWaXNpYmlsaXR5
JywgdGhpcy5fY3VycmVudFRlc3RHcm91cCk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50R3Jv
dXAuaGFzUGVuZGluZygpKSB7CisgICAgICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3RDYW5jZWxX
YXJuaW5nID0gdGhpcy5jcmVhdGVFbGVtZW50KCdzcGFuJywKKyAgICAgICAgICAgICAgICAgICAg
e2lkOiAncGVuZGluZy1yZXF1ZXN0LWNhbmNlbC13YXJuaW5nJ30sICcoY2FuY2VscyBwZW5kaW5n
IHJlcXVlc3RzKScpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRoaXMuY29u
dGVudCgncmV0cnktZm9ybScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDog
J25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQoJ2Jpc2VjdC1mb3JtJykuc3R5bGUuZGlzcGxh
eSA9IGN1cnJlbnRHcm91cCAmJiB0aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5n
ZXQoY3VycmVudEdyb3VwKSA/IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgn
c3RhdHVzLXN1bW1hcnknKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRH
cm91cC5yZXBldGl0aW9uQ291bnQoKSA+IGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCkgPyBudWxsIDogJ25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3Vt
bWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOwogCi0g
ICAgICAgIGNvbnN0IGhpZGVCdXR0b24gPSB0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJyk7Ci0g
ICAgICAgIGhpZGVCdXR0b24udGV4dENvbnRlbnQgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdy
b3VwLmlzSGlkZGVuKCkgPyAnVW5oaWRlJyA6ICdIaWRlJzsKLSAgICAgICAgaGlkZUJ1dHRvbi5z
dHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAgcmV0
cnlGb3JtLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOworICAg
ICAgICBiaXNlY3RGb3JtLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgdGhpcy5fYmlz
ZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAuZ2V0KGN1cnJlbnRHcm91cCkgPyBudWxsIDogJ25v
bmUnOworCisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoJ3Rlc3QtZ3Jv
dXAtZGV0YWlscycpLCBbCisgICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3Jlc3VsdHMtdmlld2Vy
JyksIHRoaXMuY29udGVudCgncmV2aXNpb24tdGFibGUnKSwgc3RhdHVzU3VtbWFyeSwgcmVxdWVz
dFN1bW1hcnksCisgICAgICAgICAgICByZXRyeUZvcm0sIGJpc2VjdEZvcm0sIGhpZGVCdXR0b24s
IHBlbmRpbmdSZXF1ZXN0Q2FuY2VsV2FybmluZworICAgICAgICBdLmZpbHRlcihlbGVtZW50ID0+
ICEhZWxlbWVudCkpOworICAgIH0KKworICAgIF9zdW1tYXJpemVkVGVzdEdyb3VwKHRlc3RHcm91
cCkKKyAgICB7CisgICAgICAgIGlmICghdGVzdEdyb3VwLmhhc1JldHJpZXMoKSkKKyAgICAgICAg
ICAgIHJldHVybiAnJzsKKworICAgICAgICBjb25zdCByZXRyeUNvdW50QnlMYWJlbCA9IG5ldyBN
YXA7CisgICAgICAgIGxldCBjdXJyZW50TGFiZWwgPSAnQSc7CisgICAgICAgIGZvciAoY29uc3Qg
Y29tbWl0U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKKyAgICAgICAg
ICAgIHJldHJ5Q291bnRCeUxhYmVsLnNldChjdXJyZW50TGFiZWwsCisgICAgICAgICAgICAgICAg
dGVzdEdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpIC0gdGVzdEdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgICAgICAgICBjdXJyZW50TGFiZWwg
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKGN1cnJlbnRMYWJlbC5jaGFyQ29kZUF0KDApICsgMSk7Cisg
ICAgICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlDb3VudHNBcmVJZGVudGljYWwgPSB0ZXN0R3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmV2ZXJ5KChjb21taXRTZXQpID0+CisgICAgICAgICAg
ICByZXRyeUNvdW50QnlMYWJlbC5nZXQoY29tbWl0U2V0KSA9PT0gcmV0cnlDb3VudEJ5TGFiZWwu
Z2V0KGN1cnJlbnRMYWJlbCkpOworCisgICAgICAgIGlmIChyZXRyeUNvdW50c0FyZUlkZW50aWNh
bCkKKyAgICAgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpfSByZXF1ZXN0ZWQsCisgICAgICAgICAgICAgICAgJHtyZXRyeUNvdW50QnlMYWJlbC5nZXQo
Y3VycmVudExhYmVsKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7CisKKyAgICAgICAgY29uc3Qg
cmV0cnlTdW1tYXJ5UGFydHMgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBbbGFiZWwsIGNvdW50
XSBvZiByZXRyeUNvdW50QnlMYWJlbC5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGlmICghY291
bnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXRyeVN1bW1hcnlQ
YXJ0cy5wdXNoKGAke2NvdW50fSBhZGRlZCB0byAke2xhYmVsfSBjb25maWd1cmF0aW9uYCk7Cisg
ICAgICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlTdW1tYXJ5ID0gcmV0cnlTdW1tYXJ5UGFydHMu
bGVuZ3RoID09PSAxID8gcmV0cnlTdW1tYXJ5UGFydHNbMF0gOgorICAgICAgICAgICAgYCR7cmV0
cnlTdW1tYXJ5UGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJywgJyl9IGFuZCAke3JldHJ5U3VtbWFy
eVBhcnRzW3JldHJ5U3VtbWFyeVBhcnRzLmxlbmd0aCAtIDFdfWA7CiAKLSAgICAgICAgdGhpcy5j
b250ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNwbGF5ID0g
Y3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyBudWxsIDogJ25vbmUn
OworICAgICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0g
cmVxdWVzdGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAg
ICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC01NTYsOCArNjA0LDggQEAgY2xhc3MgQW5hbHlz
aXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIGdyb3VwUGFuZS5s
aXN0ZW5Ub0FjdGlvbignc2hvd0hpZGRlblRlc3RHcm91cHMnLCAoKSA9PiB0aGlzLl9zaG93QWxs
VGVzdEdyb3VwcygpKTsKICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdyZW5hbWVU
ZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBuZXdOYW1lKSA9PiB0aGlzLl91cGRhdGVUZXN0R3JvdXBO
YW1lKHRlc3RHcm91cCwgbmV3TmFtZSkpOwogICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rp
b24oJ3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHknLCAodGVzdEdyb3VwKSA9PiB0aGlzLl9oaWRl
Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXApKTsKLSAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRv
QWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90
aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3Vw
LCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOwotICAgICAgICBncm91cFBh
bmUubGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIGNvbW1pdFNl
dHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9iaXNlY3RD
dXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBu
b3RpZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdy
ZXRyeVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21w
bGV0aW9uLCByZXBldGl0aW9uVHlwZSkgPT4gdGhpcy5fcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRl
c3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0aXRpb25U
eXBlKSk7CisgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3Vw
JywgKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKSA9PiB0aGlzLl9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKHRl
c3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24s
IHJlcGV0aXRpb25UeXBlKSk7CiAKICAgICAgICAgdGhpcy5wYXJ0KCdjYXVzZS1saXN0JykubGlz
dGVuVG9BY3Rpb24oJ2FkZEl0ZW0nLCAocmVwb3NpdG9yeSwgcmV2aXNpb24pID0+IHsKICAgICAg
ICAgICAgIHRoaXMuX2Fzc29jaWF0ZUNvbW1pdCgnY2F1c2UnLCByZXBvc2l0b3J5LCByZXZpc2lv
bik7CkBAIC04MzIsMTkgKzg4MCwyMiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMg
UGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX3JldHJ5Q3VycmVu
dFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9u
KQorICAgIGFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9u
Q291bnQsIG5vdGlmeU9uQ29tcGxldGlvbiwgcmVwZXRpdGlvblR5cGUpCiAgICAgewogICAgICAg
ICBjb25zdCBleGlzdGluZ05hbWVzID0gKHRoaXMuX3Rlc3RHcm91cHMgfHwgW10pLm1hcCgoZ3Jv
dXApID0+IGdyb3VwLm5hbWUoKSk7CiAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBDb21taXRTZXQu
Y3JlYXRlTmFtZVdpdGhvdXRDb2xsaXNpb24odGVzdEdyb3VwLm5hbWUoKSwgbmV3IFNldChleGlz
dGluZ05hbWVzKSk7CiAgICAgICAgIGNvbnN0IGNvbW1pdFNldExpc3QgPSB0ZXN0R3JvdXAucmVx
dWVzdGVkQ29tbWl0U2V0cygpOwogICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IHRoaXMuX3Rhc2su
cGxhdGZvcm0oKSB8fCB0ZXN0R3JvdXAucGxhdGZvcm0oKTsKLSAgICAgICAgcmV0dXJuIFRlc3RH
cm91cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwg
dGVzdEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRMaXN0
LCBub3RpZnlPbkNvbXBsZXRpb24pCi0gICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRl
c3RHcm91cHMuYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhD
dXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgp
LCBuZXdOYW1lLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TGlz
dCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAgICB0aGlz
Ll9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3Qg
Z3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAg
YXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBl
dGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfYmlzZWN0Q3VycmVu
dFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5
T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRlc3RHcm91cC50YXNrKCkpOwogICAgICAgICBjb25zdCBleGlzdGluZ1Rlc3RHcm91cE5h
bWVzID0gbmV3IFNldCgodGhpcy5fdGVzdEdyb3VwcyB8fCBbXSkubWFwKCh0ZXN0R3JvdXApID0+
IHRlc3RHcm91cC5uYW1lKCkpKTsKQEAgLTg1NCw3ICs5MDUsNyBAQCBjbGFzcyBBbmFseXNpc1Rh
c2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIGNvbnN0IGN1cnJl
bnRDb21taXRTZXQgPSBjb21taXRTZXRzW2ldOwogICAgICAgICAgICAgY29uc3QgdGVzdEdyb3Vw
TmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbihDb21taXRTZXQuZGlm
ZihwcmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldCksIGV4aXN0aW5nVGVzdEdyb3Vw
TmFtZXMpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91
cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgW3ByZXZpb3VzQ29tbWl0
U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hU
ZXN0R3JvdXBzKHRlc3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgW3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0
aW9uLCByZXBldGl0aW9uVHlwZSk7CiAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlkRmV0
Y2hUZXN0R3JvdXBzKHRlc3RHcm91cHMpOwogICAgICAgICAgICAgfSBjYXRjaChlcnJvcikgewog
ICAgICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6
ICcgKyBlcnJvcik7CkBAIC04NjMsNyArOTE0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBl
eHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfY3JlYXRl
VGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0
aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgX2NyZWF0
ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9u
VHlwZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1l
KHRlc3RHcm91cE5hbWUpKSB7CiAgICAgICAgICAgICBhbGVydChgVGhlcmUgaXMgYWxyZWFkeSBh
IHRlc3QgZ3JvdXAgbmFtZWQgIiR7dGVzdEdyb3VwTmFtZX0iYCk7CkBAIC04ODksMTMgKzk0MCwx
MyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAg
ICAgICAgZm9yIChsZXQgbGFiZWwgaW4gY29tbWl0U2V0TWFwKQogICAgICAgICAgICAgY29tbWl0
U2V0cy5wdXNoKGNvbW1pdFNldE1hcFtsYWJlbF0pOwogCi0gICAgICAgIHJldHVybiBUZXN0R3Jv
dXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVzdEdyb3VwTmFtZSwg
cmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgICAg
IHJldHVybiBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywg
dGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBs
ZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hU
ZXN0R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgYWxl
cnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCi0gICAgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291
bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNv
bXBsZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291
bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNv
bXBsZXRpb24sIHJlcGV0aXRpb25UeXBlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fdGFzay5pc0N1c3RvbSgpKTsKICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRl
c3RHcm91cE5hbWUodGVzdEdyb3VwTmFtZSkpIHsKQEAgLTkwMywxMCArOTU0LDEyIEBAIGNsYXNz
IEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21D
b25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCBy
ZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAg
ICAgIC50aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAo
ZXJyb3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBh
d2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywg
cGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0
cywgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSk7CisgICAgICAgICAgICB0aGlz
Ll9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBzKQorICAgICAgICB9IGNhdGNoIChl
cnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBn
cm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBf
aGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCmluZGV4IGQwYWYxNzNk
YWFkMzJiNDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLjhiZjk1M2E1NGQ5YmFhZGFjZDBkMWY4
MGU4N2IwMGEyYWJhYTc3MzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTEwOCw2ICsxMDgsNyBAQCBjbGFz
cyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgdGhpcy5fdHJlbmRM
aW5lUGFyYW1ldGVycyA9IFtdOwogICAgICAgICB0aGlzLl90cmVuZExpbmVWZXJzaW9uID0gMDsK
ICAgICAgICAgdGhpcy5fcmVuZGVyZWRUcmVuZExpbmVPcHRpb25zID0gZmFsc2U7CisgICAgICAg
IHRoaXMuX3JlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJzsKIAogICAgICAgICB0aGlzLmNv
bmZpZ3VyZShwbGF0Zm9ybUlkLCBtZXRyaWNJZCk7CiAgICAgfQpAQCAtMTIwLDExICsxMjEsMTQg
QEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGNvbnN0
IGNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveCA9IHRoaXMuY29udGVudCgnY3JlYXRlLXdpdGgt
dGVzdC1ncm91cCcpOwogICAgICAgICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlzLmNvbnRl
bnQoJ2NvbmZpcm0tcmVwZXRpdGlvbicpOwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRp
b24gPSB0aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJyk7CisgICAgICAgIGNvbnN0
IHJlcGV0aXRpb25UeXBlID0gdGhpcy5jb250ZW50KCdyZXBldGl0aW9uLXR5cGUnKTsKICAgICAg
ICAgY3JlYXRlV2l0aFRlc3RHcm91cENoZWNrYm94Lm9uY2hhbmdlID0gKCkgPT4gewogICAgICAg
ICAgICAgY29uc3Qgc2hvdWxkRGlzYWJsZSA9ICFjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3gu
Y2hlY2tlZDsKICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudC5kaXNhYmxlZCA9IHNob3VsZERp
c2FibGU7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb24uZGlzYWJsZWQgPSBzaG91bGRE
aXNhYmxlOwotICAgICAgICB9CisgICAgICAgICAgICByZXBldGl0aW9uVHlwZS5kaXNhYmxlZCA9
IHNob3VsZERpc2FibGU7CisgICAgICAgIH07CisgICAgICAgIHJlcGV0aXRpb25UeXBlLm9uY2hh
bmdlID0gKCkgPT4gdGhpcy5fcmVwZXRpdGlvblR5cGUgPSByZXBldGl0aW9uVHlwZS52YWx1ZTsK
ICAgICB9CiAKICAgICBzZXJpYWxpemVTdGF0ZSgpCkBAIC0yNDMsMTAgKzI0NywxMSBAQCBjbGFz
cyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgY29uc3QgY3JlYXRl
V2l0aFRlc3RHcm91cCA9IHRoaXMuY29udGVudCgnY3JlYXRlLXdpdGgtdGVzdC1ncm91cCcpLmNo
ZWNrZWQ7CiAgICAgICAgIGNvbnN0IHJlcGV0aXRpb25Db3VudCA9IHRoaXMuY29udGVudCgnY29u
ZmlybS1yZXBldGl0aW9uJykudmFsdWU7CiAgICAgICAgIGNvbnN0IG5vdGlmeU9uQ29tcGxldGlv
biA9IHRoaXMuY29udGVudCgnbm90aWZ5LW9uLWNvbXBsZXRpb24nKS5jaGVja2VkOworICAgICAg
ICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBlJyku
dmFsdWU7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9
IGF3YWl0IChjcmVhdGVXaXRoVGVzdEdyb3VwID8KLSAgICAgICAgICAgICAgICBBbmFseXNpc1Rh
c2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRp
b25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA6IEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwg
c3RhcnRQb2ludCwgZW5kUG9pbnQpKTsKKyAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3Jl
YXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3Vu
dCwgbm90aWZ5T25Db21wbGV0aW9uLCByZXBldGl0aW9uVHlwZSkgOiBBbmFseXNpc1Rhc2suY3Jl
YXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7CiAgICAgICAgICAgICBuZXdXaW5kb3cu
bG9jYXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svJyArIGFuYWx5c2lzVGFz
ay5pZCgpKTsKICAgICAgICAgICAgIHRoaXMuZmV0Y2hBbmFseXNpc1Rhc2tzKHRydWUpOwogICAg
ICAgICB9IGNhdGNoKGVycm9yKSB7CkBAIC01ODksNyArNTk0LDE2IEBAIGNsYXNzIENoYXJ0UGFu
ZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPG9wdGlvbj4xMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+aXRlcmF0aW9u
czwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBl
PSJjaGVja2JveCIgaWQ9Im5vdGlmeS1vbi1jb21wbGV0aW9uIiBjaGVja2VkPiBOb3RpZnkgb24g
Y29tcGxldGlvbjwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAg
ICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJl
bD5JbjwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0icmVw
ZXRpdGlvbi10eXBlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2
YWx1ZT0iYWx0ZXJuYXRpbmciIHNlbGVjdGVkPmFsdGVybmF0aW5nIChBQkFCKTwvb3B0aW9uPgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzZXF1ZW50aWFs
Ij5zZXF1ZW50aWFsIChBQUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvc2VsZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0
IHR5cGU9ImNoZWNrYm94IiBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24iIGNoZWNrZWQ+Tm90aWZ5
IG9uIGNvbXBsZXRpb248L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAg
ICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9
ImNoYXJ0LXBhbmUtZmlsdGVyaW5nLW9wdGlvbnMgcG9wb3ZlciIgc3R5bGU9ImRpc3BsYXk6bm9u
ZSI+CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2Vz
L2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggMzAxZmQy
YTI5MDY1MWQ1MTI4YzM1MjNhZjQ5ODIwZjIwM2JjNjZhMy4uNjdlZDExYzU1NzVkZDZmMGYxZWJm
ZTBkM2MxYjVkZDA2NjhkMDlmNCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2st
cGFnZS5qcwpAQCAtMjIsMTQgKzIyLDE0IEBAIGNsYXNzIENyZWF0ZUFuYWx5c2lzVGFza1BhZ2Ug
ZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0
ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdy
b3VwLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3Jv
dXAocmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwg
dGVzdCwgdGFza05hbWUsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfY3JlYXRlQW5h
bHlzaXNUYXNrV2l0aEdyb3VwKHJlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0
U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCBub3RpZnlPbkNvbXBsZXRpb24sIHJlcGV0
aXRpb25UeXBlKQogICAgIHsKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKHRhc2tO
YW1lLCBwbGF0Zm9ybSwgdGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21t
aXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pLnRoZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAg
IGNvbnN0IHVybCA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgp
fWApOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IFRlc3RH
cm91cC5jcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5h
bWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uLCByZXBl
dGl0aW9uVHlwZSk7CiAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5yb3V0ZXIoKS51
cmwoYGFuYWx5c2lzL3Rhc2svJHt0YXNrLmlkKCl9YCk7Ci0gICAgICAgIH0sIChlcnJvcikgPT4g
eworICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0
byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICByZW5kZXIoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcwppbmRleCBmZDQwNDM0NDIzNzBmNDUzZjFmZDNlZTdiN2FhNWE1MWZmYWMxYjIxLi5hMmNl
YWU0MDdjMjliMGYyYWY2NGY4MTgxOTdkOTE4ZTVlZmIwMTQ0IDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1y
ZXF1ZXN0cy10ZXN0cy5qcwpAQCAtNTY2LDYgKzU2Niw2MiBAQCBkZXNjcmliZSgnL2FwaS9idWls
ZC1yZXF1ZXN0cycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBp
dCgnc2hvdWxkIHN0aWxsIHJldHVybiBidWlsZCByZXF1ZXN0cyBhc3NvY2lhdGVkIHdpdGggYSBn
aXZlbiB0cmlnZ2VyYWJsZSB3aGVuIHRlc3QgZ3JvdXAgaGFzIGFsbCBidWlsZCByZXF1ZXN0cyBm
aW5pc2hlZCB3aXRoICJtYXlOZWVkTW9yZVJlcXVlc3QiIGZsYWcgdG8gYmUgdHJ1ZXMnLCAoKSA9
PiB7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFi
YXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnZmFpbGVkJ10s
IHRydWUsIG51bGwsIG51bGwsICdhbHRlcm5hdGluZycsIHRydWUpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMo
Jy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jyk7CisgICAgICAgIH0pLnRoZW4oKGNv
bnRlbnQpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoT2JqZWN0Lmtl
eXMoY29udGVudCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21t
aXRzJywgJ3N0YXR1cycsICd1cGxvYWRlZEZpbGVzJ10pOworCisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CisgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlk
KSwgNDAxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnY29t
bWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4
NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFs
c2UsIHJvb3RGaWxlOiBudWxsfSwge2NvbW1pdDogJzkzMTE2JywgY29tbWl0T3duZXI6IG51bGws
IHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9XSk7Cisg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0U2V0
cyddWzFdLmlkKSwgNDAyKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29u
dGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tj
b21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNC
dWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwge2NvbW1pdDogJzk2MzM2JywgY29tbWl0T3du
ZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51
bGx9XSk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRz
J10ubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChj
b250ZW50Wydjb21taXRzJ11bMF0uaWQpLCA4NzgzMik7CisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJlcG9zaXRvcnksICc5Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJldmlzaW9uLCAn
MTAuMTEgMTVBMjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQo
Y29udGVudFsnY29tbWl0cyddWzFdLmlkKSwgOTMxMTYpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2aXNpb24s
ICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChjb250
ZW50Wydjb21taXRzJ11bMl0uaWQpLCA5NjMzNik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoY29udGVudFsnY29tbWl0cyddWzJdLnJlcG9zaXRvcnksICcxMScpOworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5
MjczNicpOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddLmxlbmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5pZCksIDcwMCk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVswXS5vcmRlciksIDApOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0ucGxhdGZvcm0sICc2NScpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11b
MF0uY29tbWl0U2V0KSwgNDAxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0u
dGVzdCwgJzIwMCcpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNl
SW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5pZCksIDcwMSk7CisgICAgICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsx
XS5vcmRlciksIDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0ucGxhdGZvcm0sICc2NScpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uY29t
bWl0U2V0KSwgNDAyKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzFdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0udGVzdCwg
JzIwMCcpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNv
bnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5pZCksIDcwMik7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5vcmRl
ciksIDIpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMl0ucGxhdGZvcm0sICc2NScpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uY29tbWl0U2V0
KSwgNDAxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzJdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0udGVzdCwgJzIwMCcp
OworCisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVszXS5pZCksIDcwMyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5vcmRlciksIDMp
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bM10ucGxhdGZvcm0sICc2NScpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uY29tbWl0U2V0KSwgNDAy
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzNdLnN0YXR1cywgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJp
Y3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10udGVzdCwgJzIwMCcpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91bGQgc3VwcG9ydCB1c2VMZWdhY3lJZFJlc29s
dXRpb24gb3B0aW9uJywgKCkgPT4gewogICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJl
cXVlc3RzL2J1aWxkLXdlYmtpdD91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScpOwpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpp
bmRleCBkY2UwOWNiYWIzNTBhMjJhODMxZDViZjk5MjE3YWU3MDk5NzI2OTgyLi41ZDIxMGUzNjBm
ODEyNzUyODBjNzVkNDcwYmQyYWExZDkyNmIwZGQyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0
cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMTM0LDcgKzEzNCw4
IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rp
b24oKSB7CiAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChy
ZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CiAgICAgICAg
IGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIy
J319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKICAgICAgICAgbGV0
IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdy
b3VwJywKLSAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycs
IHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21l
VGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCBy
ZXZpc2lvblNldHN9KTsKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3Ro
ZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZh
bHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0cywgY29tbWl0U2V0OiBudWxsfSk7
CiAgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsK
IAogICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1n
cm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRy
dWV9KTsKQEAgLTE0NCwxNCArMTQ1LDE2IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRk
LWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9y
ZVJlcXVlc3RzKCksIHRydWUpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQo
Z3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRT
ZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21t
aXRTZXQpKSwgMik7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKIAogICAgICAgICBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2VydGVkR3Jv
dXBJZCwgYWRkQ291bnQ6IDJ9KTsKIAogICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKLSAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0ucmVwZXRpdGlvbkNv
dW50KCkpLCA0KTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vw
c1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocGFyc2VJbnQodXBkYXRlZEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQo
Y29tbWl0U2V0KSksIDQpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQodXBk
YXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CiAgICAg
ICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29t
bWl0U2V0cygpKSB7CkBAIC0xNzQsMTAgKzE3NywxNjcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigpIHsKICAgICAgICAgY29uc3QgZ3Jv
dXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQo
KSwgaW5zZXJ0ZWRHcm91cElkKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1h
eU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAgICAgZm9yIChjb25z
dCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1p
dFNldChjb21taXRTZXQpKSwgMik7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUlu
dChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKICAgICAgICAgYXdhaXQgZ3Jv
dXAudXBkYXRlSGlkZGVuRmxhZyh0cnVlKTsKIAogICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3Mo
J0Nhbm5vdEFkZFRvSGlkZGVuVGVzdEdyb3VwJywgYXN5bmMgKCkgPT4gYXdhaXQgUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdy
b3VwSWQsIGFkZENvdW50OiAyfSkpCiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUg
dG8gYWRkIGJ1aWxkIHJlcXVlc3RzIHRvIHRlc3QgZ3JvdXAgZm9yIGEgc3BlY2lmaWMgY29tbWl0
IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVh
dGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5h
bGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQn
KVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2
aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1d
OworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6
ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6
IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0
aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3Vw
SWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91
cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwg
Mik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5y
ZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSksIDIpOworCisgICAgICAgIGNv
bnN0IGNvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdLmlk
KCk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxk
LXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRT
ZXR9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZl
dGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHBhcnNlSW50KHVwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwg
Mik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3Rz
KCksIHRydWUpOworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNb
MF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBjb25zdCBidWlsZFJlcXVlc3Rz
Rm9yRmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RzRm9yQ29tbWl0U2V0
KGZpcnN0Q29tbWl0U2V0KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVz
dHNGb3JGaXJzdENvbW1pdFNldC5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0IHNlY29uZENv
bW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAg
ICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vw
c1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1pdFNldC5sZW5ndGgsIDQp
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgYnVpbGQgcmVxdWVzdHMgcmlnaHQgYWZ0
ZXIgcmVxdWVzdHMgd2l0aCBzYW1lIGNvbW1pdCBzZXQgZm9yIHNlcXVlbnRpYWwgdGVzdCBncm91
cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVU
YXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwo
KS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVsw
XTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdv
dGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHJlcGV0aXRp
b25Db3VudDogMiwKKyAgICAgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCks
IG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywg
cmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsn
dGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdy
b3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNv
bW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0
KGNvbW1pdFNldCkpLCAyKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0ZXN0R3JvdXBz
WzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXS5pZCgpOworCisgICAgICAgIGF3YWl0IFByaXZp
bGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0
ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0fSk7CisKKyAgICAgICAgY29uc3QgdXBk
YXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQn
XSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0
aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBz
WzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBjb25zdCBmaXJzdENv
bW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAg
ICAgICBjb25zdCBidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBz
WzBdLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNGb3JGaXJzdENvbW1pdFNldC5sZW5ndGgsIDQpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0U2V0
WzNdLm9yZGVyKCksIDMpCisKKyAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRl
ZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGNvbnN0IGJ1aWxk
UmVxdWVzdHNGb3JTZWNvbmRDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KHNlY29uZENvbW1pdFNldCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChi
dWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0Lmxlbmd0aCwgMik7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0WzBdLm9yZGVyKCks
IDQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENv
bW1pdFNldFsxXS5vcmRlcigpLCA1KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IHNo
aWZ0IHJlcXVlc3Qgb3JkZXIgaWYgYWRkaW5nIGJ1aWxkIHJlcXVlc3QgdG8gY29tbWl0IHNldCBy
ZXByZXNlbnRpbmcgbGFzdCBjb25maWd1cmF0aW9uIGluIHNlcXVlbnRpYWwgdGVzdCBncm91cCcs
IGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNr
KCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5m
aWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsK
KyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246
ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAg
ICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRl
LXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhl
ciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHJlcGV0aXRpb25D
b3VudDogMiwKKyAgICAgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5l
ZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2
aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVz
dEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3Vw
LmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1p
dFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNv
bW1pdFNldCkpLCAyKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBd
LnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXS5pZCgpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRH
cm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0fSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRl
ZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwg
dHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwg
MSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBd
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBjb25zdCBmaXJzdENvbW1p
dFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAg
ICBjb25zdCBidWlsZFJlcXVlc3RzRm9yRmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBd
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNGb3JGaXJzdENvbW1pdFNldC5sZW5ndGgsIDIpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvckZpcnN0Q29tbWl0U2V0WzFd
Lm9yZGVyKCksIDEpCisKKyAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdy
b3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGNvbnN0IGJ1aWxkUmVx
dWVzdHNGb3JTZWNvbmRDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KHNlY29uZENvbW1pdFNldCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWls
ZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0Lmxlbmd0aCwgNCk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0WzBdLm9yZGVyKCksIDIp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c0ZvclNlY29uZENvbW1p
dFNldFsxXS5vcmRlcigpLCAzKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVx
dWVzdHNGb3JTZWNvbmRDb21taXRTZXRbMl0ub3JkZXIoKSwgNCk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChidWlsZFJlcXVlc3RzRm9yU2Vjb25kQ29tbWl0U2V0WzNdLm9yZGVyKCksIDUp
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiQ29tbWl0U2V0Tm90SW5U
ZXN0R3JvdXAiIGlmIGNvbW1pdCBzZXQgaXMgbm90IGluIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNr
Jyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNv
bnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319
LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3Vw
JywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBs
YXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVz
dElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZp
c2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0
R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Vw
ZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5
TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBh
cnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworCisgICAgICAgIGNv
bnN0IGNvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdLmlk
KCkgKyB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXS5pZCgpICsgMTsKKwor
ICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0NvbW1pdFNldE5vdEluVGVzdEdyb3VwJywgKCkg
PT4KKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1
ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0fSkp
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZENvbW1pdFNl
dCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdlcicsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkp
ID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0g
YXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAg
ICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06
IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwg
bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0
c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElk
J107CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRl
c3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiB0cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9y
ZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQo
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CisKKyAgICAgICAgY29uc3QgY29t
bWl0U2V0ID0gJ2ludmFsaWQnOworCisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygnSW52YWxp
ZENvbW1pdFNldCcsICgpID0+CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6
IDIsIGNvbW1pdFNldH0pKTsKKyAgICB9KTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJp
dmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10
YXNrLXRlc3RzLmpzCmluZGV4IDJiMjc1MGFhN2EyZGQzYmM3OTVhNzY3Mjc2NGJhYWEzZWI4NGQx
YjYuLmNhNWE5ZGMyNDhkOGUzMDY0Y2U4NjgzYzI5ZmMzMjJjMjQyN2Y1OTcgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3Jl
YXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5q
cwpAQCAtNjgyLDQgKzY4MiwxMDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
YW5hbHlzaXMtdGFzayB3aXRoIG5vZGUgcHJpdmlsZWdlZCBhcGknLCBmdW5jdGkKICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Vi
a2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOwogICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3Np
dG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBj
cmVhdGUgYW4gYW5hbHlzaXMgdGFzayB3aXRoIHRlc3QgZ3JvdXAgd2l0aCAic2VxdWVudGlhbCIg
bW9kZSB3aGVuIHNwZWNpZmllZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3Qgd2Via2l0
SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gMTsKKyAgICAgICAgY29uc3QgdGVz
dDFJZCA9IDI7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0OworCisgICAgICAg
IGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGF3YWl0IGRiLmlu
c2VydCgndGVzdHMnLCB7aWQ6IHRlc3QxSWQsIG5hbWU6ICd0ZXN0MScsIHBhcmVudDogMX0pOwor
ICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogd2Via2l0SWQsIG5h
bWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncGxhdGZvcm1zJywge2lk
OiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsKKyAgICAgICAgYXdhaXQgZGIu
aW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQsIG5hbWU6ICd0ZXN0LXRyaWdn
ZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRv
cnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9ubHknLCB0cmlnZ2VyYWJsZTog
dHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3Jl
cG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3JvdXA6IDIzNDV9KTsKKyAgICAg
ICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucycsIHt0ZXN0OiB0
ZXN0MUlkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9
KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoUmV2aXNpb25b
MF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9h
cGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAgIGF3YWl0IFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIGFub3RoZXJSZXBvcnRXaXRo
UmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgIGxl
dCB0ZXN0MSA9IFRlc3QuZmluZEJ5SWQodGVzdDFJZCk7CisgICAgICAgIGxldCBzb21lUGxhdGZv
cm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAgY29uc3QgY29uZmln
Um93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7bWV0
cmljOiB0ZXN0MS5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06IHNvbWVQbGF0Zm9ybS5pZCgp
fSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0Um93cygndGVzdF9y
dW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0IG9uZVJldmlzaW9uU2V0
ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsKKyAgICAgICAgY29uc3QgYW5v
dGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMyd9fTsKKwor
ICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6
IDIsCisgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHJldmlzaW9uU2V0czog
W29uZVJldmlzaW9uU2V0LCBhbm90aGVyUmV2aXNpb25TZXRdLAorICAgICAgICAgICAgc3RhcnRS
dW46IHRlc3RSdW5zWzBdWydpZCddLCBlbmRSdW46IHRlc3RSdW5zWzFdWydpZCddLCBuZWVkc05v
dGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJ30pOworCisgICAg
ICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKGNvbnRlbnRbJ3Rh
c2tJZCddKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRhc2submFtZSgpLCAnY29uZmly
bScpOworICAgICAgICBhc3NlcnQoIXRhc2suaGFzUmVzdWx0cygpKTsKKyAgICAgICAgYXNzZXJ0
KHRhc2suaGFzUGVuZGluZ1JlcXVlc3RzKCkpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVx
dWFsKHRhc2suYnVncygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFz
ay5jYXVzZXMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suZml4
ZXMoKSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5jaGFuZ2VUeXBlKCks
IG51bGwpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5wbGF0Zm9ybSgpLmxhYmVs
KCksICdzb21lIHBsYXRmb3JtJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLm1l
dHJpYygpLnRlc3QoKS5sYWJlbCgpLCAndGVzdDEnKTsKKworICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrLmlkKCkpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCB0
ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3VwLm5hbWUoKSwgJ0NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0Lm9rKHRlc3RHcm91cC5u
ZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9IHRlc3RH
cm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJl
cXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVx
dWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJl
cXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRS
ZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNb
MF0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVzdHNbMV0uY29tbWl0U2V0KCkpKTsKKyAg
ICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVx
dWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9
IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHNlY29uZENvbW1p
dFNldCA9IGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHdlYmtp
dFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKHdlYmtpdElkKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0
UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9y
eSkucmV2aXNpb24oKSwgJzE5MTYyMycpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWpl
Y3Qgd2l0aCAiSW52YWxpZFJlcGV0aXRpb25UeXBlIiB3aGVuIHRlc3QgbW9kZSBpcyBuZWl0aGVy
ICJhbHRlcm5hdGluZyIgbm9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
Y29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gMTsKKyAgICAg
ICAgY29uc3QgdGVzdDFJZCA9IDI7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0
OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBh
d2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU3VpdGUnfSk7CisgICAgICAg
IGF3YWl0IGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IHRlc3QxSWQsIG5hbWU6ICd0ZXN0MScsIHBh
cmVudDogMX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDog
d2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncGxh
dGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsKKyAgICAg
ICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQsIG5hbWU6
ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJh
YmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9ubHknLCB0
cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Ry
aWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3JvdXA6IDIz
NDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9u
cycsIHt0ZXN0OiB0ZXN0MUlkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dlcmFibGU6IHRy
aWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRX
aXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAgIGF3
YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIGFub3Ro
ZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOwor
CisgICAgICAgIGxldCB0ZXN0MSA9IFRlc3QuZmluZEJ5SWQodGVzdDFJZCk7CisgICAgICAgIGxl
dCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAg
Y29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJh
dGlvbnMnLCB7bWV0cmljOiB0ZXN0MS5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06IHNvbWVQ
bGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0
Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0IG9u
ZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsKKyAgICAg
ICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5
MTYyMyd9fTsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRpdGlvblR5
cGUnLCAoKSA9PgorICAgICAgICAgICAgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRl
LWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDIsCisg
ICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCByZXZpc2lvblNldHM6IFtv
bmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlzaW9uU2V0XSwgcmVwZXRpdGlvblR5cGU6ICdpbnZh
bGlkLW1vZGUnLAorICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwg
ZW5kUnVuOiB0ZXN0UnVuc1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWV9KSk7Cisg
ICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0
LWdyb3VwLXRlc3RzLmpzCmluZGV4IDY3ZDg0YWRhZjU5NmExNzBiZGRmZWFmMjI0MjBmMmMyNTA1
ZTEzZDYuLmQxOTFiNWQ2M2MwODEwOTNlNGM0ZmM1ZTU1Y2JjMThlNmViOTI2MTcgMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGkt
Y3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwpA
QCAtNyw2ICs3LDggQEAgY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rl
c3Qtc2VydmVyLmpzJyk7CiBjb25zdCBUZW1wb3JhcnlGaWxlID0gcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvdGVtcG9yYXJ5LWZpbGUuanMnKS5UZW1wb3JhcnlGaWxlOwogY29uc3QgYWRkV29ya2VyRm9y
UmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRX
b3JrZXJGb3JSZXBvcnQ7CiBjb25zdCBwcmVwYXJlU2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVz
b3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykucHJlcGFyZVNlcnZlclRlc3Q7Citjb25zdCBh
c3NlcnRUaHJvd3MgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycp
LmFzc2VydFRocm93czsKKwogCiBmdW5jdGlvbiBjcmVhdGVBbmFseXNpc1Rhc2sobmFtZSwgd2Vi
a2l0UmV2aXNpb25zID0gWyIxOTE2MjIiLCAiMTkxNjIzIl0pCiB7CkBAIC00MDAsNyArNDAyLDcg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgZ3JvdXBJZCk7Ci0gICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7
CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAg
ICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTQ0Nyw3ICs0
NDksNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVu
Z3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBncm91cElkKTsKLSAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
LCAxKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7
CiAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNDg1
LDcgKzQ4Nyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91
cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGlu
c2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNv
bnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtNTI0LDcgKzUyNiw3IEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJ
ZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2soIWdy
b3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3Rz
ID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtNTU2LDcgKzU1OCw3IEBAIGRlc2NyaWJlKCcv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90
aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVp
bGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDQpOwpAQCAtNjAzLDcgKzYwNSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBj
b25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAy
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkp
OwogICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQp
OwpAQCAtNjQ1LDcgKzY0Nyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRl
c3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9
IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNjk0LDcg
KzY5Niw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNb
MF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJl
cGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0
IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNzQzLDcgKzc0NSw3IEBAIGRl
c2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwog
ICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwg
Mik7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwog
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJ
ZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpKSk7CkBAIC04MDgsNyArODEwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9
IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQo
KSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5v
ayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkp
OwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRm
b3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTg4Myw3ICs4ODUs
NyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsK
KyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlv
bigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3Qu
ZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29t
ZVBsYXRmb3JtSWQoKSkpOwpAQCAtOTY2LDcgKzk2OCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBh
c3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVz
dElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgp
LCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC0xMDYw
LDcgKzEwNjIsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3Vw
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3Vw
SWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3Vu
dCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAg
ICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTE1Nyw3ICsxMTU5LDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAg
ICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tE
YXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkp
KTsKQEAgLTEyMzUsNyArMTIzNyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRl
LXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJ
ZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwg
MSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCksIDEpOwogICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7
CiAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTEyNjQsNyArMTI2
Niw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAg
ICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICBjb25zdCBy
ZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC0xMzA4LDcgKzEzMTAsNyBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgVGVzdEdyb3VwLnNvcnRCeU5hbWUodGVzdEdyb3Vwcyk7CiAKICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzBdLm5hbWUoKSwgJ3Rlc3QxJyk7Ci0gICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnQoKSwg
MSk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgbGV0IHJlcXVlc3RzID0gdGVzdEdy
b3Vwc1swXS5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGxldCBzZXQwID0gcmVxdWVzdHNbMF0u
Y29tbWl0U2V0KCk7CkBAIC0xMzIxLDcgKzEzMjMsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjMn
KTsKIAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0ubmFtZSgp
LCAndGVzdDInKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzFd
LnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
ZXN0R3JvdXBzWzFdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBy
ZXF1ZXN0cyA9IHRlc3RHcm91cHNbMV0uYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICBzZXQwID0g
cmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CkBAIC0xMzM2LDQgKzEzMzgsNTMgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCAnMTkyNzM2Jyk7CiAgICAgICAgIH0pOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBj
cmVhdGUgYSB0ZXN0IGdyb3VwIHdpdGggYW4gYW5hbHlzaXMgdGFzayB3aXRoICJzZXF1ZW50aWFs
IiBtb2RlJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENy
ZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5
LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktp
dCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9
fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFt
ZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVz
dDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiB0cnVlLCByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJl
cGV0aXRpb25Db3VudDogMn0pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgW2FuYWx5c2lzVGFzaywgdGVzdEdy
b3Vwc10gPSBhd2FpdCBQcm9taXNlLmFsbChbQW5hbHlzaXNUYXNrLmZldGNoQnlJZChyZXN1bHRb
J3Rhc2tJZCddKSwgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVl
KV0pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYW5hbHlzaXNUYXNrLm5hbWUoKSwgJ290
aGVyIHRhc2snKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAgICAgICBjb25z
dCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVx
dWVzdHNbMV0ub3JkZXIoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzNd
Lm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2VydChyZXF1ZXN0c1swXS5jb21taXRTZXQoKS5l
cXVhbHMocmVxdWVzdHNbMV0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3Rz
WzJdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1ZXN0c1szXS5jb21taXRTZXQoKSkpOworCisgICAg
ICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3Qg
c2V0MSA9IHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChzZXQwLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkx
NjIyJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVj
dCB3aXRoICJJbnZhbGlkTW9kZSIgaWYgdGVzdCBtb2RlIGlzIG5laXRoZXIgImFsdGVybmF0aW5n
IiBub3IgInNlcXVlbnRpYWwiJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmln
Z2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQg
PSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1l
KCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJr
aXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lv
bjogJzE5MTYyMyd9fV07CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVw
ZXRpdGlvblR5cGUnLCAoKSA9PgorICAgICAgICAgICAgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRh
c2snLAorICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
LCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3Rp
ZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywgcmVwZXRpdGlv
bkNvdW50OiAyLCByZXZpc2lvblNldHN9KSk7CisgICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRl
LXRlc3QtZ3JvdXAtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCmluZGV4IDQ1MDZj
M2IyN2YwNWYyMzJhYjQwYzVlNmFjNzRlN2FkNWY0MmQ1OTguLjE2MDc3MWJjZmI1ZDRmMjdmZDEz
NGI1ODY0ODcyYjJhMjViN2Y3NWEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwpAQCAtMTY4LDcgKzE2OCw3IEBAIGRlc2NyaWJl
KCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewogICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCksIHRydWUpOwogICAgICAgICBhc3NlcnQub2so
IWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewogICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBj
b25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCksIGZhbHNlKTsKICAgICAgICAgYXNzZXJ0
Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQoKSk7CiAKQEAgLTI3Niw0ICsyNzYsNDMgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uKCl7
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3Jl
UmVxdWVzdHMoKSwgZmFsc2UpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdy
b3Vwc1swXS5pc0hpZGRlbigpLCB0cnVlKTsKICAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY2Fu
Y2VsIGEgdGVzdCBncm91cCB3aXRoICJtYXlfbmVlZF9tb3JlX3JlcXVlc3RzIiBmbGFnIGNsZWFy
ZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRl
VGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0Jylb
MF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsK
KyAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6
ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6
IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXZpc2lv
blNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3Jv
dXBJZCddOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0
Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVS
ZXF1ZXN0cygpLCBmYWxzZSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVl
ZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGxldCB1cGRhdGVkR3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZE1vcmVSZXF1ZXN0cygp
LCB0cnVlKTsKKyAgICAgICAgbGV0IHRlc3RHcm91cCA9IHVwZGF0ZWRHcm91cHNbMF07CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0
cnVlKTsKKyAgICAgICAgbGV0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAub3JkZXJlZEJ1aWxk
UmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVu
Z3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMF0uaXNQZW5kaW5nKCkpOwor
ICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0c1sxXS5pc1BlbmRpbmcoKSk7CisKKyAgICAgICAg
YXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3Jv
dXA6IGluc2VydGVkR3JvdXBJZCwgY2FuY2VsOiB0cnVlfSk7CisKKyAgICAgICAgdXBkYXRlZEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7
CisgICAgICAgIHRlc3RHcm91cCA9IHVwZGF0ZWRHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAg
ICAgIGFzc2VydCh0ZXN0R3JvdXAuaGFzRmluaXNoZWQoKSk7CisgICAgICAgIGJ1aWxkUmVxdWVz
dHMgPSB0ZXN0R3JvdXAub3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5zdGF0dXMoKSwgJ2NhbmNlbGVkJyk7
CisgICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3Bl
cmF0aW9ucy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3Vy
Y2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCmluZGV4IGVjZmVjOGQxNmU5MzRkNTdkMzI3MTg4OGVj
NTYzYjM0NDZlYWI0YmEuLmYyNGY0MzMxYTBiNDEwYzcwYmNkYjg5YjAwOGRjOTY1ZDE5YjQwYTMg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3Vy
Y2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCkBAIC01Myw3ICs1Myw3
IEBAIGFzeW5jIGZ1bmN0aW9uIGFzc2VydFRocm93cyhleHBlY3RlZEVycm9yLCB0ZXN0RnVuY3Rp
b24pCiB7CiAgICAgbGV0IHRocm93bkV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIHRyeSB7Ci0gICAg
ICAgICAgICBhd2FpdCB0ZXN0RnVuY3Rpb24oKQorICAgICAgICBhd2FpdCB0ZXN0RnVuY3Rpb24o
KTsKICAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAgICAgIHRocm93bkV4Y2VwdGlvbiA9IHRydWU7
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlcnJvciwgZXhwZWN0ZWRFcnJvcik7CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9t
b2NrLWRhdGEuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291
cmNlcy9tb2NrLWRhdGEuanMKaW5kZXggNjgxYWZjYzRjZjZhZDBlNTkyZWNiNjAxMWE2MWNiMWNm
OTRjZWQxYi4uNDllZDRmOTM5MGEwN2Q2M2Y1MWQyOTE2MzhiYTJkODUyOGJjY2VhMCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9j
ay1kYXRhLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVz
b3VyY2VzL21vY2stZGF0YS5qcwpAQCAtNjQsMTIgKzY0LDE0IEBAIE1vY2tEYXRhID0gewogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X3J1bnMnLCB7aWQ6IDgwMSwgY29uZmlnOiAzMDEsIGJ1
aWxkOiA5MDEsIG1lYW5fY2FjaGU6IDEwMH0pLAogICAgICAgICBdKTsKICAgICB9LAotICAgIGFk
ZE1vY2tEYXRhOiBmdW5jdGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uPXRy
dWUsIHVybExpc3Q9W10pCisgICAgYWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVzTGlz
dCwgbmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCB1cmxMaXN0ID0gbnVsbCwgY29tbWl0U2V0TGlz
dCA9IG51bGwsIHJlcGV0aXRpb25UeXBlPSdhbHRlcm5hdGluZycsIG1heU5lZWRNb3JlUmVxdWVz
dHM9ZmFsc2UpCiAgICAgewogICAgICAgICBpZiAoIXN0YXR1c0xpc3QpCiAgICAgICAgICAgICBz
dGF0dXNMaXN0ID0gWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ107
CiAgICAgICAgIGlmICghdXJsTGlzdCkKICAgICAgICAgICAgIHVybExpc3QgPSBbbnVsbCwgbnVs
bCwgbnVsbCwgbnVsbF07CisgICAgICAgIGlmICghY29tbWl0U2V0TGlzdCkKKyAgICAgICAgICAg
IGNvbW1pdFNldExpc3QgPSBbNDAxLCA0MDIsIDQwMSwgNDAyXTsKICAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKICAgICAgICAgICAgIHRoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIpLAog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycsIHtpZDogNDAxfSksCkBAIC04MSwx
NCArODMsMTUgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lz
X3Rhc2tzJywge2lkOiA1MDAsIHBsYXRmb3JtOiA2NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21l
IHRhc2snLAogICAgICAgICAgICAgICAgIHN0YXJ0X3J1bjogODAxLCBzdGFydF9ydW5fdGltZTog
JzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonLAogICAgICAgICAgICAgICAgIGVuZF9ydW46IDgwMSwg
ZW5kX3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwKLSAgICAgICAgICAgIGRi
Lmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1l
OiAnc29tZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0LCBuZWVkc19u
b3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0aW9ufSksCi0gICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdXJsOiB1
cmxMaXN0WzBdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxh
dGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiA0
MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMSwg
c3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB1cmw6IHVybExpc3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAw
LCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6
IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0
KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHVybDog
dXJsTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBs
YXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMiwgY29tbWl0X3NldDog
NDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDMs
IHN0YXR1czogc3RhdHVzTGlzdFszXSwgdXJsOiB1cmxMaXN0WzNdLCB0cmlnZ2VyYWJsZTogMTAw
MCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3Vw
OiA2MDAsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29t
ZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiAyLAorICAgICAgICAgICAg
ICAgIG5lZWRzX25vdGlmaWNhdGlvbjogbmVlZHNOb3RpZmljYXRpb24sIHJlcGV0aXRpb25fdHlw
ZTogcmVwZXRpdGlvblR5cGUsIG1heV9uZWVkX21vcmVfcmVxdWVzdHM6IG1heU5lZWRNb3JlUmVx
dWVzdHN9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcw
MCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB1cmw6IHVybExpc3RbMF0sIHRyaWdnZXJhYmxlOiAx
MDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3Jv
dXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3RbMF19KSwKKyAgICAg
ICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMSwgc3RhdHVzOiBzdGF0
dXNMaXN0WzFdLCB1cmw6IHVybExpc3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5
X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6
IDEsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3RbMV19KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB1cmw6
IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBw
bGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6
IGNvbW1pdFNldExpc3RbMl19KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVz
dHMnLCB7aWQ6IDcwMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB1cmw6IHVybExpc3RbM10sIHRy
aWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRl
c3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3Rb
M119KSwKICAgICAgICAgXSk7CiAgICAgfSwKLSAgICBhZGRNb2NrQnVpbGRSZXF1ZXN0c1dpdGhS
b290cyhkYiwgc3RhdHVzTGlzdCwgbmVlZHNOb3RpZmljYXRpb249dHJ1ZSwgYWRkTW9ja0NvbmZp
Z3VyYXRpb249dHJ1ZSkKKyAgICBhZGRNb2NrQnVpbGRSZXF1ZXN0c1dpdGhSb290cyhkYiwgc3Rh
dHVzTGlzdCwgbmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCBhZGRNb2NrQ29uZmlndXJhdGlvbiA9
IHRydWUpCiAgICAgewogICAgICAgICBjb25zdCBzZXR1cFN0ZXBzID0gYWRkTW9ja0NvbmZpZ3Vy
YXRpb24gPyBbdGhpcy5hZGRNb2NrQ29uZmlndXJhdGlvbihkYildIDogW107CiAgICAgICAgIGlm
ICghc3RhdHVzTGlzdCkKQEAgLTIwMSwxMCArMjA0LDEwIEBAIE1vY2tEYXRhID0gewogICAgICAg
ICBjb25zdCByZXBvc2l0b3J5X2dyb3VwID0gMjAwMTsKICAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKICAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6
IDYwMSwgdGFzazogNTAwLCBuYW1lOiAnYW5vdGhlciB0ZXN0IGdyb3VwJywgYXV0aG9yLCBpbml0
aWFsX3JlcGV0aXRpb25fY291bnQ6IDR9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRf
cmVxdWVzdHMnLCB7aWQ6IDcxMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB0cmlnZ2VyYWJsZSwg
cmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAzLCBj
b21taXRfc2V0OiA0MDJ9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMn
LCB7aWQ6IDcxMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9y
eV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAwLCBjb21taXRfc2V0
OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcx
Miwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwg
cGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAyLCBjb21taXRfc2V0OiA0MDF9KSwK
ICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMSwgc3RhdHVz
OiBzdGF0dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0s
IHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMiwgc3RhdHVzOiBzdGF0dXNM
aXN0WzJdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdy
b3VwOiA2MDEsIG9yZGVyOiAyLCBjb21taXRfc2V0OiA0MDF9KSwKKyAgICAgICAgICAgIGRiLmlu
c2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB0
cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEs
IG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKICAgICAgICAgXSk7CiAgICAgfSwKICAgICBh
ZGRUZXN0R3JvdXBXaXRoT3duZWRDb21taXRzKGRiLCBzdGF0dXNMaXN0KQpAQCAtNDg0LDcgKzQ4
Nyw2IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgICAgICJzY2hlZHVsZXIiOiBbIkFCVGVz
dC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNjaGVkdWxlciIsICJTY2hlZHVsZXIiXSwK
ICAgICAgICAgICAgICAgICAid2siOiBbb3B0aW9ucy53ZWJraXRSZXZpc2lvbiB8fCAnMTkxNjIy
JywgIlVua25vd24iXSwKICAgICAgICAgICAgICAgICAib3MiOiBbb3B0aW9ucy5vc3hSZXZpc2lv
biB8fCAnMTAuMTEgMTVBMjg0JywgIlVua25vd24iXSwKLSAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3JrZXIgKGRlcHJlY2F0
ZWQpIl0sCiAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1l
IHx8ICJib3QyMDIiLCAiV29ya2VyIl0KICAgICAgICAgICAgIH0KICAgICAgICAgfTsKQEAgLTUx
OSw3ICs1MjEsNiBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAicHJvamVjdCI6IFsn
JywgIlVua25vd24iXSwKICAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6IFsnJywgIlVua25v
d24iXSwKICAgICAgICAgICAgICAgICAicmV2aXNpb24iOiBbJycsICJVbmtub3duIl0sCi0gICAg
ICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIi
LCAiV29ya2VyIChkZXByZWNhdGVkKSJdLAogICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjog
W29wdGlvbnMud29ya2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciJdCiAgICAgICAgICAgICB9
CiAgICAgICAgIH07ICAgCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10
ZXN0cy5qcwppbmRleCBiNDg3MGJiMmIwODZjNDliODI3MTU0ODU2ZTE1ZjZmNjRlMDA3ZDJhLi4x
Mzg2ZTY5MWYyMmU5NTBiYzQ0NzNmOGQ5ZDhkZmQxZDJjYmQ0NzE0IDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJh
YmxlLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
dG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMKQEAgLTY4OSwxMiArNjg5LDE1IEBA
IGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZShNb2NrRGF0YS5ydW5uaW5n
QnVpbGQoe2J1aWxkZXJJZDogTW9ja0RhdGEuYnVpbGRlcklERm9yTmFtZSgnc29tZSBidWlsZGVy
IDInKSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhvZCwgJ1BPU1QnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51
cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXItMicpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1s0XS5kYXRhLCB7J2lkJzogJzcwMScsICdqc29ucnBjJzogJzIuMCcsICdtZXRob2QnOiAnZm9y
Y2UnLCAncGFyYW1zJzoKICAgICAgICAgICAgICAgICAgICAgeyd3ayc6ICcxOTI3MzYnLCAnb3Mn
OiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnNzAxJywgJ2ZvcmNlc2NoZWR1
bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRlci0yJ319KTsKICAgICAgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoJ09LJyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzLmxlbmd0aCwgNik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnVybCwgJy9hcGkv
djIvZm9yY2VzY2hlZHVsZXJzL2ZvcmNlLXNvbWUtYnVpbGRlci0xJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLmRhdGEs
IHsnaWQnOiAnNzExJywgJ2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScsICdwYXJh
bXMnOgpAQCAtODMzLDcgKzgzNiw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0
KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0
ZW5vdXNseScsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGZyb20gbXVsdGlw
bGUgdGVzdCBncm91cHMgcnVubmluZyBzaW11bHRhbmVvdXNseScsICgpID0+IHsKICAgICAgICAg
ICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAgICAgY29uc3Qg
cmVxdWVzdHMgPSBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzOwogCkBAIC0xMDY0LDYgKzEwNjcsNyBA
QCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0u
ZGF0YSwgeydpZCc6ICc3MTAnLCAnanNvbnJwYyc6ICcyLjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywg
J3BhcmFtcyc6CiAgICAgICAgICAgICAgICAgICAgIHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEw
LjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcxMCcsICdmb3JjZXNjaGVkdWxlcic6
ICdmb3JjZS1zb21lLWJ1aWxkZXItMSd9fSk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1syXS5yZXNvbHZlKCdPSycpOworICAgICAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAKQEAgLTEzNTYsNyArMTM2MCwyNzAgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnOTAw
JywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRlci0yJ319KTsKICAgICAgICAg
fSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3QgcmV1c2UgdGhlIHJvb3Qgd2hlbiBhIGJ1aWxk
IHJlcXVlc3Qgd2l0aCBzYW1lIGNvbW1pdCBzZXQgaXMgYXZhaWFsYmxlIGJ1dCB0aGUgYnVpbGQg
cmVxdWVzdCBoYXMgYmVlbiBzY2hlZHVsZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGl0KCdz
aG91bGQgZGVmZXIgc2NoZWR1bGluZyByZXF1ZXN0cyBmcm9tIG5leHQgY29uZmlndXJhdGlvbiBp
biBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgdW50aWwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBt
ZWV0cyB0aGUgaW5pdGlhbCByZXF1ZXN0ZWQgaXRlcmF0aW9uIGNvdW50JywgYXN5bmMgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAg
ICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAnZmFpbGVk
JywgJ3BlbmRpbmcnLCAncGVuZGluZyddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDov
L2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLCBudWxsLCBudWxsXSwKKyAgICAg
ICAgICAgICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVlbnRpYWwnLCB0cnVlKTsKKyAg
ICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNv
bmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOworICAg
ICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25z
dCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQn
fTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFi
bGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJ
bmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5p
bml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAg
ICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAn
R0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRi
b3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAg
ICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAn
R0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJs
LCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCBN
b2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAg
ICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRS
ZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRh
LmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAxLCBidWls
ZFRhZzogMTI0fSldfSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21l
IGJ1aWxkZXIgMicsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10u
cmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s0XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1i
dWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29s
dmUoe30pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
NV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s1XS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUgYnVpbGRl
ciAyJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5yZXNvbHZlKHt9
KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwor
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgs
IDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0u
bWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s2XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEn
LCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnJlc29sdmUoeydi
dWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0
YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAg
ICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwg
YnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS51cmwsIE1vY2tE
YXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2Fp
dCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwo
KS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnZmFpbGVkJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVz
VXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcp
OworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShN
b2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5h
bWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0
aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQu
b3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxpbmcgb3RoZXIgYnVpbGQg
cmVxdWVzdCBvbiBhIGJ1aWxkZXIgaWYgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgaXMgc2NoZWR1
bGVkIG9uIGl0IGFuZCB3YWl0aW5nIGZvciByZXRyeScsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQg
UHJvbWlzZS5hbGwoW01vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2ZhaWxlZCcsICdjb21wbGV0
ZWQnLCAncGVuZGluZycsICdwZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRw
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAg
ICAgICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpLAor
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwKKyAg
ICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAg
ICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNp
bmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBw
YXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNP
bmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwg
TW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1i
dWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29s
dmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5n
dGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVy
LTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUo
eydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxk
RGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAor
ICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czog
MCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAg
ICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1v
Y2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdh
aXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRh
LnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1
ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVp
bGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDEpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2Fp
dCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdmYWlsZWQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5z
dGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MSkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQu
b3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgbm90IHNjaGVkdWxpbmcgYnVpbGQgcmVxdWVzdCBmcm9tIGFub3RoZXIgdGVzdCBn
cm91cCBvbiBhIGJ1aWxkZXIgaWYgYSBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwIHdpdGggYWxsIGV4
aXN0aW5nIGJ1aWxkIHJlcXVlc3RzIGZpbmlzaGVkIHN0aWxsIG5lZWRzIHJldHJ5JywgYXN5bmMg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Cisg
ICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
Y29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY29tcGxldGVkJ10sIHRydWUsCisg
ICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVp
bGRzLzEyMScsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEy
MicsCisgICAgICAgICAgICAgICAgICAgICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxk
ZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyNCcsXSwKKyAgICAgICAgICAgICAgICBbNDAxLCA0MDIsIDQwMSwgNDAyXSwgJ2Fs
dGVybmF0aW5nJywgdHJ1ZSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1v
Y2tUZXN0R3JvdXAoZGIpLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBhd2FpdCBNYW5p
ZmVzdC5mZXRjaCgpOworCisgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2Nr
VGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAgICAgICAgICAgY29uc3QgbG9n
Z2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25h
bWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgIGNv
bnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAg
ICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4o
KCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0
QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVp
bGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKKyAg
ICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5k
aW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucmVjZW50QnVp
bGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAy
LCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVk
QnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0
fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0
aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sy
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVy
LTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoe30p
OworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQp
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRo
b2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIp
KTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7J2J1aWxk
cycgOiBbCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHty
ZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIzfSksCisgICAgICAg
ICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWls
ZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0
IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgp
Lmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJr
aXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNV
cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7
CisKKyAgICAgICAgICAgIGF3YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1v
Y2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFt
ZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3Ro
LCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAy
KS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
Iy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGluZyBidWlsZCByZXF1ZXN0
IGZyb20gYW5vdGhlciB0ZXN0IGdyb3VwIG9uIGEgYnVpbGRlciBpZiBhIHNlcXVlbnRpYWwgdGVz
dCBncm91cCB3aXRoIGFsbCBleGlzdGluZyBidWlsZCByZXF1ZXN0cyBmaW5pc2hlZCBzdGlsbCBu
ZWVkcyByZXRyeScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNl
cnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW01vY2tEYXRh
LmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ2Nv
bXBsZXRlZCddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9i
dWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAgICAgICAgICAgICAgICAgICAnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLF0sCisgICAgICAgICAgICAgICAgWzQwMSwg
NDAxLCA0MDIsIDQwMl0sICdzZXF1ZW50aWFsJywgdHJ1ZSksCisgICAgICAgICAgICAgICAgTW9j
a0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpLAorICAgICAgICAgICAgXSk7CisgICAg
ICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgICAgICBjb25zdCBjb25m
aWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAg
ICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25z
dCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQn
fTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFi
bGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJ
bmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5p
bml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAg
ICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAn
R0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRi
b3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAg
ICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dF
VCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0u
dXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwg
TW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAg
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBi
dWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgICAg
IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDog
NzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxk
c1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzJdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdz
b21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
M10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZp
bmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRh
ZzogMTIzfSksCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRh
KHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisK
KyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCks
ICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmlu
ZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRl
cnMvMi9idWlsZHMvMTI0Jyk7CisKKyAgICAgICAgICAgIGF3YWl0IEJ1aWxkUmVxdWVzdC5mZXRj
aEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVy
cygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCAnaHR0cDov
L2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ2NvbXBs
ZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1
aWxkcy8xMjQnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3QgcmV1c2Ug
dGhlIHJvb3Qgd2hlbiBhIGJ1aWxkIHJlcXVlc3Qgd2l0aCBzYW1lIGNvbW1pdCBzZXQgaXMgYXZh
aWxhYmxlIGJ1dCB0aGUgYnVpbGQgcmVxdWVzdCBoYXMgYmVlbiBzY2hlZHVsZWQnLCBhc3luYyAo
KSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrQnVpbGRSZXF1ZXN0c1dp
dGhSb290cyhUZXN0U2VydmVyLmRhdGFiYXNlKCkpOwogICAgICAgICAgICAgYXdhaXQgTWFuaWZl
c3QuZmV0Y2goKTsKICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0
U3luY0NvbmZpZ1dpdGhQYXRjaEFjY2VwdGluZ0J1aWxkZXIoKTsKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRl
Z3JhdGlvbi10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
dG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcwppbmRleCA2ZmM3YTdhYzVi
YzM3YTQxMDQ3MmZlODJiMmM5YjU0MTBlYThmNGQzLi5lMDY3YjhkZTgyZGJhNGIxNmExZGIwMThi
ZTY1ZWQyMzkxN2FhNmJjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90
LWludGVncmF0aW9uLXRlc3RzLmpzCkBAIC0xNDA5LDcgKzE0MDksNyBAQCBkZXNjcmliZSgnc3lu
Yy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVl
c3QuaXNCdWlsZCgpKTsKICAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgp
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzTGFi
ZWwoKSwgJ0NvbXBsZXRlZCcpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9i
dWlsZGVycy8xL2J1aWxkcy8xMjMnKTsKICAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChidWls
ZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKIAogICAgICAgICAgICAgY29uc3Qgb3RoZXJCdWls
ZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMKaW5kZXggODgy
MmFmYjhjMGVkMjIzODFmNzQyMzc2YWZhMzA2ZGEyOWNjNTgyMC4uNDU0ZjNlNjAzODZmZmY1ZGNk
OWQ1ZGIyNmYxZWZhYWIxMjg0OGM4OCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCkBAIC0xNDMsNiArMTQzLDcgQEAgY2xh
c3MgQnVpbGRib3RTeW5jZXIgewogCiAgICAgICAgIGxldCBoYXNQZW5kaW5nQnVpbGRzV2l0aG91
dFdvcmtlck5hbWVTcGVjaWZpZWQgPSBmYWxzZTsKICAgICAgICAgbGV0IHVzZWRXb3JrZXJzID0g
bmV3IFNldDsKKyAgICAgICAgY29uc3QgbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtlck5hbWUgPSBu
ZXcgTWFwOwogICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB0aGlzLl9lbnRyeUxpc3QpIHsKICAg
ICAgICAgICAgIGxldCBlbnRyeVByZXZlbnRzTmV3UmVxdWVzdCA9IGVudHJ5LmlzUGVuZGluZygp
OwogICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW5Qcm9ncmVzcygpKSB7CkBAIC0xNTUsNiArMTU2
LDI2IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgICAgICAgICAgICAgaGFzUGVu
ZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJOYW1lU3BlY2lmaWVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB1c2VkV29ya2Vycy5hZGQoZW50cnkud29ya2VyTmFtZSgpKTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChlbnRyeS5oYXNGaW5pc2hlZCgpIHx8IGVudHJ5LmlzSW5Qcm9ncmVz
cygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkud29ya2VyTmFtZSgp
LCAnRmluaXNoZWQgZW50cnkgbXVzdCBoYXZlIGEgd29ya2VyIG5hbWUnKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBsYXN0RmluaXNoZWRFbnRyeSA9IGxhdGVzdEFjdGl2ZUVudHJ5QnlXb3JrZXJO
YW1lLmdldChlbnRyeS53b3JrZXJOYW1lKCkpOworICAgICAgICAgICAgICAgIGlmICghbGFzdEZp
bmlzaGVkRW50cnkgfHwgK2xhc3RGaW5pc2hlZEVudHJ5LmJ1aWxkVGFnKCkgPCArZW50cnkuYnVp
bGRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtlck5h
bWUuc2V0KGVudHJ5Lndvcmtlck5hbWUoKSwgZW50cnkpCisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKGxldCBbbmFtZSwgZW50cnldIG9mIGxhdGVzdEFjdGl2ZUVudHJ5
QnlXb3JrZXJOYW1lLmVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgbGF0ZXN0QWN0aXZl
QnVpbGRSZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKGVudHJ5LmJ1aWxkUmVxdWVzdElk
KCkpOworICAgICAgICAgICAgaWYgKCFsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobGF0ZXN0QWN0aXZlQnVpbGRSZXF1
ZXN0LnRlc3RHcm91cElkKCkgPT09IG5ld1JlcXVlc3QudGVzdEdyb3VwSWQoKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IGxhdGVzdEFj
dGl2ZUJ1aWxkUmVxdWVzdC50ZXN0R3JvdXAoKTsKKyAgICAgICAgICAgIGlmICghdGVzdEdyb3Vw
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHRlc3RHcm91cC5o
YXNGaW5pc2hlZCgpICYmICF0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdXNlZFdvcmtlcnMuYWRkKG5hbWUpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLl93b3JrZXJMaXN0IHx8IGhhc1BlbmRpbmdC
dWlsZHNXaXRob3V0V29ya2VyTmFtZVNwZWNpZmllZCkgewpAQCAtMTkyLDcgKzIxMyw3IEBAIGNs
YXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCghdGhpcy5fbGFz
dENvbXBsZXRlZEJ1aWxkIHx8IHRoaXMuX2xhc3RDb21wbGV0ZWRCdWlsZC5idWlsZFRhZygpIDwg
ZW50cnkuYnVpbGRUYWcoKSkgJiYgZW50cnkuaGFzRmluaXNoZWQoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2xhc3RDb21wbGV0ZWRCdWlsZCA9IGVudHJ5OwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBsZXQgZW50cnlM
aXN0ID0gW107CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaWQgaW4gZW50cnlCeVJlcXVlc3Qp
CiAgICAgICAgICAgICAgICAgICAgIGVudHJ5TGlzdC5wdXNoKGVudHJ5QnlSZXF1ZXN0W2lkXSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qt
dHJpZ2dlcmFibGUuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRi
b3QtdHJpZ2dlcmFibGUuanMKaW5kZXggZDYyY2RlMDI5YzE3NzkxNzNjNWYyMWVkODZhYWYxYTFj
MDNkYThhMi4uMzRhNDdmMzZjNTViYTg2ZGNlZWViZWYzYjlkMzZhNDFkYWE4ODc2MSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJh
YmxlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10
cmlnZ2VyYWJsZS5qcwpAQCAtNyw3ICs3LDcgQEAgcmVxdWlyZSgnLi92My1tb2RlbHMuanMnKTsK
IGxldCBCdWlsZGJvdFN5bmNlciA9IHJlcXVpcmUoJy4vYnVpbGRib3Qtc3luY2VyJykuQnVpbGRi
b3RTeW5jZXI7CiAKIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewotICAgIGNvbnN0cnVjdG9y
KGNvbmZpZywgcmVtb3RlLCBidWlsZGJvdFJlbW90ZSwgd29ya2VySW5mbywgbG9nZ2VyKQorICAg
IGNvbnN0cnVjdG9yKGNvbmZpZywgcmVtb3RlLCBidWlsZGJvdFJlbW90ZSwgd29ya2VySW5mbywg
bWF4UmV0cnlGYWN0b3IsIGxvZ2dlcikKICAgICB7CiAgICAgICAgIHRoaXMuX25hbWUgPSBjb25m
aWcudHJpZ2dlcmFibGVOYW1lOwogICAgICAgICBhc3NlcnQodHlwZW9mKHRoaXMuX25hbWUpID09
ICdzdHJpbmcnLCAndHJpZ2dlcmFibGVOYW1lIG11c3QgYmUgc3BlY2lmaWVkJyk7CkBAIC0yNSw2
ICsyNSw3IEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewogCiAgICAgICAgIHRoaXMuX3N5
bmNlcnMgPSBudWxsOwogICAgICAgICB0aGlzLl9sb2dnZXIgPSBsb2dnZXIgfHwge2xvZzogKCkg
PT4geyB9LCBlcnJvcjogKCkgPT4geyB9fTsKKyAgICAgICAgdGhpcy5fbWF4UmV0cnlGYWN0b3Ig
PSBtYXhSZXRyeUZhY3RvcjsKICAgICB9CiAKICAgICBnZXRCdWlsZGVyTmFtZVRvSURNYXAoKQpA
QCAtODUsMTMgKzg2LDIyIEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewogICAgICAgICBj
b25zdCB2YWxpZFJlcXVlc3RzID0gdGhpcy5fdmFsaWRhdGVSZXF1ZXN0cyhidWlsZFJlcXVlc3Rz
KTsKICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0c0J5R3JvdXAgPSBCdWlsZGJvdFRyaWdnZXJh
YmxlLl90ZXN0R3JvdXBNYXBGb3JCdWlsZFJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpOwogICAgICAg
ICBsZXQgdXBkYXRlcyA9IGF3YWl0IHRoaXMuX3B1bGxCdWlsZGJvdE9uQWxsU3luY2VycyhidWls
ZFJlcXVlc3RzQnlHcm91cCk7Ci0gICAgICAgIGxldCByb290UmV1c2VVcGRhdGVzID0ge30KKyAg
ICAgICAgbGV0IHJvb3RSZXVzZVVwZGF0ZXMgPSB7fTsKICAgICAgICAgdGhpcy5fbG9nZ2VyLmxv
ZygnU2NoZWR1bGluZyBidWlsZHMnKTsKICAgICAgICAgY29uc3QgdGVzdEdyb3VwTGlzdCA9IEFy
cmF5LmZyb20oYnVpbGRSZXF1ZXN0c0J5R3JvdXAudmFsdWVzKCkpLnNvcnQoZnVuY3Rpb24gKGEs
IGIpIHsgcmV0dXJuIGEuZ3JvdXBPcmRlciAtIGIuZ3JvdXBPcmRlcjsgfSk7CiAKLSAgICAgICAg
YXdhaXQgUHJvbWlzZS5hbGwodGVzdEdyb3VwTGlzdC5tYXAoKGdyb3VwKSA9PiBbZ3JvdXAsIHRo
aXMuX25leHRSZXF1ZXN0SW5Hcm91cChncm91cCwgdXBkYXRlcyldKQotICAgICAgICAgICAgLmZp
bHRlcigoW2dyb3VwLCByZXF1ZXN0XSkgPT4gdmFsaWRSZXF1ZXN0cy5oYXMocmVxdWVzdCkpCi0g
ICAgICAgICAgICAubWFwKChbZ3JvdXAsIHJlcXVlc3RdKSA9PiB0aGlzLl9zY2hlZHVsZVJlcXVl
c3QoZ3JvdXAsIHJlcXVlc3QsIHJvb3RSZXVzZVVwZGF0ZXMpKSk7CisgICAgICAgIGF3YWl0IFBy
b21pc2UuYWxsKFsuLi5idWlsZFJlcXVlc3RzQnlHcm91cC5rZXlzKCldLm1hcCh0ZXN0R3JvdXBJ
ZCA9PiBUZXN0R3JvdXAuZmV0Y2hCeUlkKHRlc3RHcm91cElkLCB0cnVlKSkpOworICAgICAgICBm
b3IgKGNvbnN0IGdyb3VwIG9mIHRlc3RHcm91cExpc3QpIHsKKyAgICAgICAgICAgIGNvbnN0IHJl
cXVlc3QgPSB0aGlzLl9uZXh0UmVxdWVzdEluR3JvdXAoZ3JvdXAsIHVwZGF0ZXMpOworICAgICAg
ICAgICAgaWYgKCF2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0KSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgY29uc3Qgc2hvdWxkRGVmZXIgPSB0aGlzLl9zaG91bGRE
ZWZlclNlcXVlbnRpYWxUZXN0aW5nUmVxdWVzdFdpdGhOZXdDb21taXRTZXQocmVxdWVzdCk7Cisg
ICAgICAgICAgICBpZiAoc2hvdWxkRGVmZXIpCisgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2Vy
LmxvZyhgRGVmZXIgc2NoZWR1bGluZyBidWlsZCByZXF1ZXN0ICIke3JlcXVlc3QuaWQoKX0iIHVu
dGlsIGNvbXBsZXRlZCBidWlsZCByZXF1ZXN0cyBmb3IgcHJldmlvdXMgY29uZmlndXJhdGlvbiBt
ZWV0IHRoZSBleHBlY3RhdGlvbiBvciBleGhhdXN0IHJldHJ5LmApOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NjaGVkdWxlUmVxdWVzdChncm91cCwgcmVx
dWVzdCwgcm9vdFJldXNlVXBkYXRlcyk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBQdWxsIGFs
bCBidWlsZGJvdHMgZm9yIHRoZSBzZWNvbmQgdGltZSBzaW5jZSB0aGUgcHJldmlvdXMgc3RlcCBt
YXkgaGF2ZSBzY2hlZHVsZWQgbW9yZSBidWlsZHMKICAgICAgICAgdXBkYXRlcyA9IGF3YWl0IHRo
aXMuX3B1bGxCdWlsZGJvdE9uQWxsU3luY2VycyhidWlsZFJlcXVlc3RzQnlHcm91cCk7CkBAIC0x
MjMsMTEgKzEzMyw0MCBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9zY2hlZHVs
ZVJlcXVlc3RJZldvcmtlcklzQXZhaWxhYmxlKGJ1aWxkUmVxdWVzdCwgdGVzdEdyb3VwLnJlcXVl
c3RzLAorICAgICAgICByZXR1cm4gdGhpcy5fc2NoZWR1bGVSZXF1ZXN0SWZXb3JrZXJJc0F2YWls
YWJsZShidWlsZFJlcXVlc3QsIHRlc3RHcm91cC5yZXF1ZXN0cywKICAgICAgICAgICAgIGJ1aWxk
UmVxdWVzdC5pc0J1aWxkKCkgPyB0ZXN0R3JvdXAuYnVpbGRTeW5jZXIgOiB0ZXN0R3JvdXAudGVz
dFN5bmNlciwKICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkgPyB0ZXN0R3JvdXAu
YnVpbGRXb3JrZXJOYW1lIDogdGVzdEdyb3VwLnRlc3RXb3JrZXJOYW1lKTsKICAgICB9CiAKKyAg
ICBfc2hvdWxkRGVmZXJTZXF1ZW50aWFsVGVzdGluZ1JlcXVlc3RXaXRoTmV3Q29tbWl0U2V0KGJ1
aWxkUmVxdWVzdCkKKyAgICB7CisgICAgICAgIGlmIChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IGJ1
aWxkUmVxdWVzdC50ZXN0R3JvdXAoKTsKKyAgICAgICAgaWYgKHRlc3RHcm91cC5yZXBldGl0aW9u
VHlwZSgpICE9ICdzZXF1ZW50aWFsJykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBjb25zdCBvcmRlcmVkQnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5vcmRlcmVkQnVpbGRS
ZXF1ZXN0cygpOworICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RJbmRleCA9IG9yZGVyZWRCdWls
ZFJlcXVlc3RzLmluZGV4T2YoYnVpbGRSZXF1ZXN0KTsKKyAgICAgICAgaWYgKCFidWlsZFJlcXVl
c3RJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBidWls
ZFJlcXVlc3RCZWZvcmVDdXJyZW50ID0gb3JkZXJlZEJ1aWxkUmVxdWVzdHNbYnVpbGRSZXF1ZXN0
SW5kZXggLSAxXTsKKyAgICAgICAgaWYgKGJ1aWxkUmVxdWVzdEJlZm9yZUN1cnJlbnQuaXNCdWls
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IHByZXZpb3Vz
Q29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0QmVmb3JlQ3VycmVudC5jb21taXRTZXQoKQorICAgICAg
ICBpZiAocHJldmlvdXNDb21taXRTZXQgPT09IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAodGVzdEdyb3VwLndpbGxFeGNl
ZWRNYXhSZXRyeUZvckNvbW1pdFNldFdpdGhSZXRyeUNvdW50KHByZXZpb3VzQ29tbWl0U2V0LCAw
LCB0aGlzLl9tYXhSZXRyeUZhY3RvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgcmV0dXJuIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgPiB0ZXN0R3Jv
dXAucmVxdWVzdHNGb3JDb21taXRTZXQoYnVpbGRSZXF1ZXN0QmVmb3JlQ3VycmVudC5jb21taXRT
ZXQoKSkKKyAgICAgICAgICAgIC5maWx0ZXIocmVxdWVzdCA9PiByZXF1ZXN0LmlzVGVzdCgpICYm
IHJlcXVlc3QuaGFzQ29tcGxldGVkKCkpLmxlbmd0aDsKKyAgICB9CisKICAgICBfdmFsaWRhdGVS
ZXF1ZXN0cyhidWlsZFJlcXVlc3RzKQogICAgIHsKICAgICAgICAgY29uc3QgdGVzdFBsYXRmb3Jt
UGFpcnMgPSB7fTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9q
cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzCmluZGV4IDkwNWJhMjI0
NWNiMDJhZTRlOTMzMTI2Yjc4OTZhNmIyOGEzMjFlNDUuLmM5ZjNhOGU2YTY0MDA2NmQxYWVmMmYz
OGYzNzBhZjVlMWQ1N2U5NWUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcwpAQCAt
OCwzOSArOCw3MyBAQCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0
c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdAogICAgICAgICAgICAgYXdhaXQg
dGVzdEdyb3VwLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQorICAgICAgICBjb25zb2xlLmFzc2VydChbJ2FsdGVybmF0aW5n
JywgJ3NlcXVlbnRpYWwnXS5pbmNsdWRlcyh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSkpOwor
ICAgICAgICBpZiAodGVzdEdyb3VwLnJlcGV0aXRpb25UeXBlKCkgPT0gJ2FsdGVybmF0aW5nJykK
KyAgICAgICAgICAgIGF3YWl0IGNyZWF0ZUFsdGVybmF0aW5nUmV0cmllc0ZvclRlc3RHcm91cCh0
ZXN0R3JvdXAsIG1heGltdW1SZXRyeUZhY3Rvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGF3YWl0IGNyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4
aW11bVJldHJ5RmFjdG9yKTsKKyAgICB9Cit9CiAKLSAgICAgICAgbGV0IG1heE1pc3NpbmdCdWls
ZFJlcXVlc3RDb3VudCA9IDA7Ci0gICAgICAgIGxldCBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RG
b3JFYWNoQ29tbWl0U2V0ID0gdHJ1ZTsKLSAgICAgICAgbGV0IGhhc1VuZmluaXNoZWRCdWlsZFJl
cXVlc3QgPSBmYWxzZTsKLSAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdGVzdEdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKSkgewotICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigoYnVp
bGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworYXN5bmMgZnVuY3Rpb24gY3Jl
YXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKHRlc3RHcm91cCwgbWF4UmV0cnlGYWN0
b3IpCit7CisgICAgbGV0IG1heFJldHJ5Q291bnQgPSAwOworICAgIGxldCBoYXNDb21wbGV0ZWRC
dWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gdHJ1ZTsKKyAgICBsZXQgaGFzVW5maW5pc2hl
ZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOworICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHRlc3RH
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpIHsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigocmVx
dWVzdCkgPT4gcmVxdWVzdC5pc1Rlc3QoKSk7CiAKLSAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRl
ZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkg
PT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAo
IWNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50KQotICAgICAgICAgICAgICAgIGhhc0NvbXBsZXRl
ZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSBmYWxzZTsKKyAgICAgICAgaGFzQ29tcGxl
dGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVz
dEZvckVhY2hDb21taXRTZXQgJiYgISFidWlsZFJlcXVlc3RzLmZpbHRlcigocmVxdWVzdCkgPT4g
cmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoOworICAgICAgICBoYXNVbmZpbmlzaGVkQnVp
bGRSZXF1ZXN0ID0gaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCB8fCAhIWJ1aWxkUmVxdWVzdHMu
ZmlsdGVyKChyZXF1ZXN0KSA9PiAhcmVxdWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7CiAKLSAg
ICAgICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgJj0gKGNv
bXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID4gMCk7Ci0gICAgICAgICAgICBjb25zdCB1bmZpbmlz
aGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0
KSA9PiAhYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpLmxlbmd0aDsKLSAgICAgICAgICAgIC8v
ICJwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCIgbWlnaHQgYmUgbGFyZ2VyIHRoYW4gdGVzdEdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSBhcyB1c2VyIG1heSBhZGQgYnVpbGQgcmVxdWVz
dHMgbWFudWFsbHkuCi0gICAgICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3Vu
dCA9IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ICsgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENv
dW50OwotICAgICAgICAgICAgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0gTWF0aC5tYXgo
bWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50LCB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpIC0gcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQpOworICAgICAgICBtYXhSZXRyeUNv
dW50ID0gTWF0aC5tYXgobWF4UmV0cnlDb3VudCwgdGVzdEdyb3VwLnJldHJ5Q291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSk7CisgICAgfQorICAgIGNvbnN0IHdpbGxFeGNlZWRNYXhSZXRyeSA9
IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkuc29tZShjb21taXRTZXQgPT4KKyAgICAg
ICAgdGVzdEdyb3VwLndpbGxFeGNlZWRNYXhSZXRyeUZvckNvbW1pdFNldFdpdGhSZXRyeUNvdW50
KGNvbW1pdFNldCwgbWF4UmV0cnlDb3VudCwgbWF4UmV0cnlGYWN0b3IpKTsKIAotICAgICAgICAg
ICAgaWYgKHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCkKLSAgICAgICAgICAgICAgICBoYXNV
bmZpbmlzaGVkQnVpbGRSZXF1ZXN0ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjb25zdCB3
aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0gdGVzdEdyb3VwLnJlcGV0aXRpb25Db3VudCgpICsgbWF4
TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID4gbWF4aW11bVJldHJ5RmFjdG9yICogdGVzdEdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKTsKKyAgICBjb25zb2xlLmFzc2VydChtYXhSZXRyeUNv
dW50IDw9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOworICAgIGlmIChtYXhS
ZXRyeUNvdW50ICYmICF3aWxsRXhjZWVkTWF4UmV0cnkgJiYgaGFzVW5maW5pc2hlZEJ1aWxkUmVx
dWVzdCAmJiAhaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1heE1pc3NpbmdCdWlsZFJlcXVl
c3RDb3VudCA8PSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKLSAgICAgICAg
aWYgKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCAmJiAhd2lsbEV4Y2VlZE1heGltdW1SZXRy
eSAmJiBoYXNVbmZpbmlzaGVkQnVpbGRSZXF1ZXN0ICYmICFoYXNDb21wbGV0ZWRCdWlsZFJlcXVl
c3RGb3JFYWNoQ29tbWl0U2V0KQotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYgKG1heFJl
dHJ5Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhSZXRyeSAmJiBoYXNDb21wbGV0ZWRCdWlsZFJlcXVl
c3RGb3JFYWNoQ29tbWl0U2V0KSB7CisgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRNb3JlQnVp
bGRSZXF1ZXN0cyhtYXhSZXRyeUNvdW50KTsKKyAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0g
YXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOworICAgICAgICBjb25zb2xlLmxvZyhgQWRkZWQg
JHttYXhSZXRyeUNvdW50fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9
IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFz
ay5uYW1lKCl9ImApOworICAgIH0KKyAgICBhd2FpdCB0ZXN0R3JvdXAuY2xlYXJNYXlOZWVkTW9y
ZUJ1aWxkUmVxdWVzdHMoKTsKK30KIAotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVz
dENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVx
dWVzdEZvckVhY2hDb21taXRTZXQpIHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRN
b3JlQnVpbGRSZXF1ZXN0cyhtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOwotICAgICAgICAg
ICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOwotICAg
ICAgICAgICAgY29uc29sZS5sb2coYEFkZGVkICR7bWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0
YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOwot
ICAgICAgICB9Ci0gICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRS
ZXF1ZXN0cygpOworYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2VxdWVudGlhbFJldHJpZXNGb3JUZXN0
R3JvdXAodGVzdEdyb3VwLCBtYXhSZXRyeUZhY3RvcikKK3sKKyAgICBjb25zdCBsYXN0SXRlbSA9
IChhcnJheSkgPT4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07CisgICAgY29uc3QgY29tbWl0U2V0
cyA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CisgICAgY29uc29sZS5hc3NlcnQo
Y29tbWl0U2V0cy5ldmVyeSgoY3VycmVudFNldCwgaW5kZXgsIHNldExpc3QpID0+CisgICAgICAg
ICFpbmRleCB8fCBsYXN0SXRlbSh0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2V0TGlz
dFtpbmRleCAtIDFdKSkub3JkZXIoKSA8IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChj
dXJyZW50U2V0KVswXS5vcmRlcigpKSk7CisKKyAgICBjb25zdCBmYWlsZWRBbGxGb3JPbmVDb21t
aXRTZXQgPSBjb21taXRTZXRzLnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAgIHRlc3RHcm91cC5y
ZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcihyZXF1ZXN0ID0+IHJlcXVlc3Qu
aXNUZXN0KCkpLmV2ZXJ5KHJlcXVlc3QgPT4gcmVxdWVzdC5oYXNGYWlsZWQoKSkpOworCisgICAg
aWYgKGZhaWxlZEFsbEZvck9uZUNvbW1pdFNldCkgeworICAgICAgICBhd2FpdCB0ZXN0R3JvdXAu
Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b25zdCBmaXJzdENvbW1pdFNldFdpdGhSZXRyeUFsbG93ZWQgPSBjb21taXRTZXRzLmZpbmQoY29t
bWl0U2V0ID0+IHsKKyAgICAgICAgY29uc3QgY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPSB0
ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoKHJlcXVlc3Qp
ID0+CisgICAgICAgICAgICByZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuaGFzQ29tcGxldGVk
KCkpLmxlbmd0aDsKKyAgICAgICAgaWYgKGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID49IHRl
c3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGNvbnN0IHJldHJ5Q291bnQgPSB0ZXN0R3JvdXAucmV0cnlDb3VudEZvckNv
bW1pdFNldChjb21taXRTZXQpOworICAgICAgICByZXR1cm4gIXRlc3RHcm91cC53aWxsRXhjZWVk
TWF4UmV0cnlGb3JDb21taXRTZXRXaXRoUmV0cnlDb3VudChjb21taXRTZXQsIHJldHJ5Q291bnQs
IG1heFJldHJ5RmFjdG9yKTsKKyAgICB9KTsKKworICAgIGlmIChmaXJzdENvbW1pdFNldFdpdGhS
ZXRyeUFsbG93ZWQgJiYgdGVzdEdyb3VwLnJldHJ5Q291bnRGb3JDb21taXRTZXQoZmlyc3RDb21t
aXRTZXRXaXRoUmV0cnlBbGxvd2VkKSkgeworICAgICAgICBjb25zdCByZXRyeUNvdW50ID0gdGVz
dEdyb3VwLnJldHJ5Q291bnRGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXRXaXRoUmV0cnlBbGxv
d2VkKTsKKyAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmFkZE1vcmVCdWlsZFJlcXVlc3RzKHJldHJ5
Q291bnQsIGZpcnN0Q29tbWl0U2V0V2l0aFJldHJ5QWxsb3dlZC5pZCgpKTsKKyAgICAgICAgY29u
c3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOworICAgICAgICBj
b25zb2xlLmxvZyhgQWRkZWQgJHtyZXRyeUNvdW50fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rl
c3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAt
ICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOwogICAgIH0KKyAgICBhd2FpdCB0ZXN0R3JvdXAu
Y2xlYXJNYXlOZWVkTW9yZUJ1aWxkUmVxdWVzdHMoKTsKIH0KIAogaWYgKHR5cGVvZiBtb2R1bGUg
IT09ICd1bmRlZmluZWQnKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL3J1bi1hbmFseXNpcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4t
YW5hbHlzaXMuanMKaW5kZXggZDYwZjgxZTEyYmQ4NzdiN2U1MDZjMGVkMDM2NWJkY2Y3MDU1ODg4
Zi4uMjk4MTEzOGFjNmE0Nzc0ZjIwN2NlYzYxZDE0YzcwMDY1NTdmNTBjOSAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzCkBAIC02LDcgKzYsNiBA
QCBjb25zdCBSZW1vdGVBUEkgPSByZXF1aXJlKCcuL2pzL3JlbW90ZS5qcycpLlJlbW90ZUFQSTsK
IGNvbnN0IE1lYXN1cmVtZW50U2V0QW5hbHl6ZXIgPSByZXF1aXJlKCcuL2pzL21lYXN1cmVtZW50
LXNldC1hbmFseXplci5qcycpLk1lYXN1cmVtZW50U2V0QW5hbHl6ZXI7CiBjb25zdCBBbmFseXNp
c1Jlc3VsdHNOb3RpZmllciA9IHJlcXVpcmUoJy4vanMvYW5hbHlzaXMtcmVzdWx0cy1ub3RpZmll
ci5qcycpLkFuYWx5c2lzUmVzdWx0c05vdGlmaWVyOwogY29uc3QgU3VicHJvY2VzcyA9IHJlcXVp
cmUoJy4vanMvc3VicHJvY2Vzcy5qcycpLlN1YnByb2Nlc3M7Ci1jb25zdCBjcmVhdGVBZGRpdGlv
bmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMgPSByZXF1aXJl
KCcuL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cycpLmNyZWF0ZUFkZGl0aW9uYWxCdWls
ZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsKIHJlcXVpcmUoJy4vanMv
djMtbW9kZWxzLmpzJyk7CiBnbG9iYWwuUHJpdmlsZWdlZEFQSSA9IHJlcXVpcmUoJy4vanMvcHJp
dmlsZWdlZC1hcGkuanMnKS5Qcml2aWxlZ2VkQVBJOwogCkBAIC01MSwxMCArNTAsNiBAQCBhc3lu
YyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0aW9ucykKIAogICAgIHRyeSB7CiAgICAgICAgIGNv
bnN0IG5vdGlmaWNhdGlvbkNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlv
bnNbJy0tbm90aWZpY2F0aW9uLWNvbmZpZy1qc29uJ10sICd1dGYtOCcpKTsKLSAgICAgICAgY29u
c3QgbWF4aW11bVJldHJ5RmFjdG9yID0gb3B0aW9uc1snLS1tYXgtcmV0cnktZmFjdG9yJ107Ci0g
ICAgICAgIGNvbnN0IHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3RzID0gYXdhaXQgVGVzdEdy
b3VwLmZldGNoQWxsVGhhdE1heU5lZWRNb3JlUmVxdWVzdHMoKTsKLSAgICAgICAgYXdhaXQgY3Jl
YXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3Rz
KHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3RzLCBtYXhpbXVtUmV0cnlGYWN0b3IpOwotCiAg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHNOZWVkTm90aWZpY2F0aW9uID0gYXdhaXQgVGVzdEdyb3Vw
LmZldGNoQWxsV2l0aE5vdGlmaWNhdGlvblJlYWR5KCk7CiAgICAgICAgIGNvbnN0IG5vdGlmaWNh
dGlvblJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkobm90aWZpY2F0aW9uQ29uZmlnLm5vdGlmaWNh
dGlvblNlcnZlckNvbmZpZyk7CiAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbk1lc3NhZ2VDb25m
aWcgPSBub3RpZmljYXRpb25Db25maWcubm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZzsKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKaW5kZXggNmYz
NTBlYjI0ODJjZjZkMTQ4Y2E4NDE0MGEyY2QwNGQ4ZTMwNmU0Mi4uZDhlZThlZWYwNDU1ZTRlN2Rj
OTI3YTdlNWVhYmFkNzQwMjJlOTk3MyAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKQEAgLTEsMTAgKzEsMTIgQEAKICMhL3Vzci9sb2NhbC9i
aW4vbm9kZQogJ3VzZSBzdHJpY3QnOwogCi1sZXQgQnVpbGRib3RUcmlnZ2VyYWJsZSA9IHJlcXVp
cmUoJy4vanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMnKS5CdWlsZGJvdFRyaWdnZXJhYmxlOwot
bGV0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3RlLmpzJykuUmVtb3RlQVBJOwotbGV0
IGZzID0gcmVxdWlyZSgnZnMnKTsKLWxldCBwYXJzZUFyZ3VtZW50cyA9IHJlcXVpcmUoJy4vanMv
cGFyc2UtYXJndW1lbnRzLmpzJykucGFyc2VBcmd1bWVudHM7Citjb25zdCBCdWlsZGJvdFRyaWdn
ZXJhYmxlID0gcmVxdWlyZSgnLi9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcycpLkJ1aWxkYm90
VHJpZ2dlcmFibGU7Citjb25zdCBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RH
cm91cHNXaXRoRmFpbGVkUmVxdWVzdHMgPSByZXF1aXJlKCcuL2pzL3JldHJ5LWZhaWxlZC1idWls
ZC1yZXF1ZXN0cycpLmNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dp
dGhGYWlsZWRSZXF1ZXN0czsKK2NvbnN0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3Rl
LmpzJykuUmVtb3RlQVBJOworY29uc3QgZnMgPSByZXF1aXJlKCdmcycpOworY29uc3QgcGFyc2VB
cmd1bWVudHMgPSByZXF1aXJlKCcuL2pzL3BhcnNlLWFyZ3VtZW50cy5qcycpLnBhcnNlQXJndW1l
bnRzOworZ2xvYmFsLlByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuL2pzL3ByaXZpbGVnZWQtYXBp
LmpzJykuUHJpdmlsZWdlZEFQSTsKIAogZnVuY3Rpb24gbWFpbihhcmd2KQogewpAQCAtMTIsNiAr
MTQsNyBAQCBmdW5jdGlvbiBtYWluKGFyZ3YpCiAgICAgICAgIHtuYW1lOiAnLS1zZXJ2ZXItY29u
ZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0sCiAgICAgICAgIHtuYW1lOiAnLS1idWlsZGJvdC1j
b25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKICAgICAgICAge25hbWU6ICctLXNlY29uZHMt
dG8tc2xlZXAnLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiAxMjB9LAorICAgICAgICB7bmFt
ZTogJy0tbWF4LXJldHJ5LWZhY3RvcicsIHR5cGU6IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDN9LAog
ICAgIF0pOwogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuOwpAQCAtMTksMzggKzIy
LDUzIEBAIGZ1bmN0aW9uIG1haW4oYXJndikKICAgICBzeW5jTG9vcChvcHRpb25zKTsKIH0KIAot
ZnVuY3Rpb24gc3luY0xvb3Aob3B0aW9ucykKK2FzeW5jIGZ1bmN0aW9uIHN5bmNMb29wKG9wdGlv
bnMpCiB7CiAgICAgbGV0IHNlcnZlckNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5j
KG9wdGlvbnNbJy0tc2VydmVyLWNvbmZpZy1qc29uJ10sICd1dGY4JykpOwogICAgIGxldCBidWls
ZGJvdENvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNbJy0tYnVpbGRi
b3QtY29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7CiAgICAgbGV0IGJ1aWxkYm90UmVtb3RlID0gbmV3
IFJlbW90ZUFQSShidWlsZGJvdENvbmZpZy5zZXJ2ZXIpOworICAgIGNvbnN0IG1heFJldHJ5RmFj
dG9yID0gb3B0aW9uc1snLS1tYXgtcmV0cnktZmFjdG9yJ107CiAKICAgICAvLyB2MyBtb2RlbHMg
dXNlIHRoZSBnbG9iYWwgUmVtb3RlQVBJIHRvIGFjY2VzcyB0aGUgcGVyZiBkYXNoYm9hcmQuCiAg
ICAgZ2xvYmFsLlJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkoc2VydmVyQ29uZmlnLnNlcnZlcik7
CisgICAgUHJpdmlsZWdlZEFQSS5jb25maWd1cmUoc2VydmVyQ29uZmlnLndvcmtlci5uYW1lLCBz
ZXJ2ZXJDb25maWcud29ya2VyLnBhc3N3b3JkKTsKIAotICAgIGNvbnNvbGUubG9nKGBGZXRjaGlu
ZyB0aGUgbWFuaWZlc3QuLi5gKTsKKyAgICB0cnkgeworICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
TWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEFsbFRoYXRNYXlOZWVk
TW9yZVJlcXVlc3RzKCk7CisgICAgICAgIGF3YWl0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzTWF5TmVlZE1vcmVS
ZXF1ZXN0cywgbWF4UmV0cnlGYWN0b3IpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAg
IGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICBpZiAodHlwZW9mKGVycm9yLnN0YWNrKSA9
PSAnc3RyaW5nJykgeworICAgICAgICAgICAgZm9yIChsZXQgbGluZSBvZiBlcnJvci5zdGFjay5z
cGxpdCgnXG4nKSkKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGxpbmUpOworICAgICAg
ICB9CisgICAgfQogCiAgICAgY29uc3QgbWFrZVRyaWdnZXJhYmxlID0gZnVuY3Rpb24gKCkgewot
ICAgICAgICByZXR1cm4gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoYnVpbGRib3RDb25maWcsIGds
b2JhbC5SZW1vdGVBUEksIGJ1aWxkYm90UmVtb3RlLCBzZXJ2ZXJDb25maWcud29ya2VyLCBjb25z
b2xlKQorICAgICAgICByZXR1cm4gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoYnVpbGRib3RDb25m
aWcsIGdsb2JhbC5SZW1vdGVBUEksIGJ1aWxkYm90UmVtb3RlLCBzZXJ2ZXJDb25maWcud29ya2Vy
LCBtYXhSZXRyeUZhY3RvciwgY29uc29sZSkKICAgICB9OwogCi0gICAgTWFuaWZlc3QuZmV0Y2go
KS50aGVuKCgpID0+IHsKLSAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBtYWtlVHJpZ2dlcmFi
bGUoKTsKLSAgICAgICAgcmV0dXJuIHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9
PiB0cmlnZ2VyYWJsZS51cGRhdGVUcmlnZ2VyYWJsZSgpKTsKLSAgICB9KS50aGVuKCgpID0+IHsK
LSAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbWFrZVRyaWdnZXJhYmxlKCk7Ci0gICAgICAgIHJl
dHVybiB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3lu
Y09uY2UoKSk7Ci0gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7CisgICAgdHJ5IHsKKyAgICAgICAg
Y29uc29sZS5sb2coYEZldGNoaW5nIHRoZSBtYW5pZmVzdC4uLmApOworICAgICAgICBhd2FpdCBN
YW5pZmVzdC5mZXRjaCgpOworICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBtYWtlVHJpZ2dlcmFi
bGUoKTsKKyAgICAgICAgYXdhaXQgdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKTsKKyAgICAgICAg
YXdhaXQgdHJpZ2dlcmFibGUudXBkYXRlVHJpZ2dlcmFibGUoKTsKKworICAgICAgICBhd2FpdCBN
YW5pZmVzdC5mZXRjaCgpOworICAgICAgICB0cmlnZ2VyYWJsZSA9IG1ha2VUcmlnZ2VyYWJsZSgp
OworICAgICAgICBhd2FpdCB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpOworICAgICAgICBhd2Fp
dCB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAg
IGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICBpZiAodHlwZW9mKGVycm9yLnN0YWNrKSA9
PSAnc3RyaW5nJykgewogICAgICAgICAgICAgZm9yIChsZXQgbGluZSBvZiBlcnJvci5zdGFjay5z
cGxpdCgnXG4nKSkKICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGxpbmUpOwogICAgICAg
ICB9Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHNldFRpbWVvdXQoc3luY0xvb3AuYmlu
ZChnbG9iYWwsIG9wdGlvbnMpLCBvcHRpb25zWyctLXNlY29uZHMtdG8tc2xlZXAnXSAqIDEwMDAp
OwotICAgIH0pOworICAgIH0KKworCisgICAgc2V0VGltZW91dChzeW5jTG9vcC5iaW5kKGdsb2Jh
bCwgb3B0aW9ucyksIG9wdGlvbnNbJy0tc2Vjb25kcy10by1zbGVlcCddICogMTAwMCk7CiB9CiAK
IG1haW4ocHJvY2Vzcy5hcmd2KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDhkMjhhYzRmYWZj
NDhlYWExNzgyYzVkZjFlYWI3NzcwOTJkODdmMTQuLjIzNzI4YjM4YzcxNDVlZTBjZGIyNDYzODE3
Njk3NTA2NWUyY2UwNWIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtMzE4LDcgKzMxOCw3IEBA
IGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVw
ZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRp
dGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdh
bHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVz
dEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAg
ICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBv
d25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGws
IHBhdGNoOiBudWxsfX0sCkBAIC0zNDAsNyArMzQwLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFz
aycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVl
c3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1
ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRz
Tm90aWZpY2F0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVz
dHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05v
dGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAg
ICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJt
JywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycx
MSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAn
aW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAt
MzYyLDcgKzM2Miw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAg
ICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFs
eXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAy
KTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6
ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdj
b25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVw
ZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEs
IGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlz
aW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0
LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVy
UmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBAIC00MjMsNyArNDIzLDcgQEAgZGVzY3Jp
YmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sx
XS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9u
Q291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291
bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywKICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBO
YW1lOiAnQ29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAg
ICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2
aXNpb246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6
IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6
IG51bGx9fSwKQEAgLTQ1NywxMSArNDU3LDExIEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAo
KSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayB3aXRoIGNv
bmZpcm1pbmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCAoKSA9PiB7CiAgICAgICAgICAg
ICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7
Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwg
ZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2su
Y3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1
ZSwgJ2FsdGVybmF0aW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0u
dXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNv
dW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBzdGFydFJ1
bjogMSwgZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2VyJywgd29ya2VyUGFzc3dvcmQ6ICdw
YXNzd29yZCcsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgd29ya2Vy
TmFtZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCByZXBldGl0aW9uVHlw
ZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmly
bScsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9u
OiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24t
MScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVz
dHMuanMKaW5kZXggODc5ODZkMzZmNTZmYzUzZjg5ZGFjMGVjZTUwOWExNDk3YWIzNzFjZS4uMDM0
MmFjMDFhNGFmNWRiY2MxNTY5NjIyYTJkYjFkNjVhN2MyNjI3MyAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10
ZXN0cy5qcwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1aWxkUmVx
dWVzdChwbGF0Zm9ybSwgdGVzdCkKIAogICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZW5zdXJlU2lu
Z2xldG9uKCcxNjczMy0nICsgcGxhdGZvcm0uaWQoKSwgeyd0cmlnZ2VyYWJsZSc6IE1vY2tNb2Rl
bHMudHJpZ2dlcmFibGUsCiAgICAgICAgIHJlcG9zaXRvcnlHcm91cDogTW9ja01vZGVscy5zdm5S
ZXBvc2l0b3J5R3JvdXAsCi0gICAgICAgICdjb21taXRTZXQnOiBjb21taXRTZXQsICdzdGF0dXMn
OiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAndGVzdCc6IHRlc3R9KTsKKyAgICAg
ICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywgJ3BsYXRmb3Jt
JzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdCwgb3JkZXI6IDB9KTsKIH0KIAogZnVuY3Rpb24gY3Jl
YXRlU2FtcGxlQnVpbGRSZXF1ZXN0V2l0aFBhdGNoKHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50
LXNldC1hbmFseXplci10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcwppbmRleCAwN2ZjYjNkYjNkZTZi
MTJlNmI5NDdjYzYzMGNkMDdiYjZhMDRmYmJhLi4wOTA3YTBiMDE2YTA1MTQ4MzQ3ZGNiM2Y0Nzdl
MmE5MjU5OGFhZmJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpz
CkBAIC0yMzUsNiArMjM1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAo
KSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAg
ICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlm
aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAz
NSwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAg
ICAgeycxMSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fX1dCiAgICAgICAgICAgICB9KTsKQEAgLTI5NCw2ICsyOTUsNyBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291
bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czog
W3snMTEnOiB7cmV2aXNpb246IDM1LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19
LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA0NCwgb3duZXJSZXZpc2lv
bjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpAQCAtNTI2LDYgKzUyOCw3
IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAg
ICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1l
OiAnQ29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisg
ICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAg
ICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogNDAsIG93bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNp
b246IDQ5LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAg
fSk7CkBAIC02MTgsNiArNjIxLDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXIn
LCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAg
ICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05v
dGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVy
bmF0aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9u
OiAzLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAgICAgICAg
ICAgICB7JzExJzoge3JldmlzaW9uOiA4LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVs
bH19XQogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanMKaW5kZXggMDgyZDgwZGNhNWVmOGYwODM1ODljNjU0MWJhMjQ1NmFmZDEyODYy
OC4uMjM2N2RiYTM4NGVlOTZiNzNkNWZkZTBiMTFmMzNhZjhmYTIwMzQxMSAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJl
cXVlc3RzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMTQsNiArMTQsOCBAQCBm
dW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgY29uc3QgbWF5TmVlZE1vcmVS
ZXF1ZXN0cyA9IGNvbmZpZy5tYXlOZWVkTW9yZVJlcXVlc3RzOwogICAgIGNvbnN0IGhpZGRlbiA9
IGNvbmZpZy5oaWRkZW47CiAgICAgY29uc3Qgc3RhdHVzTGlzdCA9IGNvbmZpZy5zdGF0dXNMaXN0
OworICAgIGNvbnN0IGNvbW1pdFNldExpc3QgPSBjb25maWcuY29tbWl0U2V0TGlzdCB8fCBbJzQy
NTUnLCAnNDI1NicsICc0MjU1JywgJzQyNTYnLCAnNDI1NScsICc0MjU2J107CisgICAgY29uc3Qg
cmVwZXRpdGlvblR5cGUgPSBjb25maWcucmVwZXRpdGlvblR5cGUgfHwgJ2FsdGVybmF0aW5nJzsK
IAogICAgIHJldHVybiB7CiAgICAgICAgICJ0ZXN0R3JvdXBzIjogW3sKQEAgLTI5LDcgKzMxLDgg
QEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewogICAgICAgICAgICAgImNvbW1p
dFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAogICAgICAgICAgICAgIm5vdGlmaWNhdGlvblNlbnRB
dCI6IG51bGwsCiAgICAgICAgICAgICBpbml0aWFsUmVwZXRpdGlvbkNvdW50LAotICAgICAgICAg
ICAgbWF5TmVlZE1vcmVSZXF1ZXN0cworICAgICAgICAgICAgbWF5TmVlZE1vcmVSZXF1ZXN0cywK
KyAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlCiAgICAgICAgIH1dLAogICAgICAgICAiYnVpbGRS
ZXF1ZXN0cyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiMTY5ODUiLApAQCAtMzgsNyArNDEsNyBA
QCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgICAgICAgICAicGxhdGZv
cm0iOiAiMzEiLAogICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKICAgICAgICAgICAg
ICJvcmRlciI6ICIwIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCisgICAgICAg
ICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFswXSwKICAgICAgICAgICAgICJzdGF0dXMi
OiBzdGF0dXNMaXN0WzBdLAogICAgICAgICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAi
YnVpbGQiOiBudWxsLApAQCAtNTAsNyArNTMsNyBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAo
Y29uZmlnKSB7CiAgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAogICAgICAgICAgICAgInRl
c3RHcm91cCI6ICIyMTI4IiwKICAgICAgICAgICAgICJvcmRlciI6ICIxIiwKLSAgICAgICAgICAg
ICJjb21taXRTZXQiOiAiNDI1NiIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0
TGlzdFsxXSwKICAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzFdLAogICAgICAgICAg
ICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxsLApAQCAtNjIsNyArNjUs
NyBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgICAgICAgICAicGxh
dGZvcm0iOiAiMzEiLAogICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKICAgICAgICAg
ICAgICJvcmRlciI6ICIyIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCisgICAg
ICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFsyXSwKICAgICAgICAgICAgICJzdGF0
dXMiOiBzdGF0dXNMaXN0WzJdLAogICAgICAgICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAg
ICAiYnVpbGQiOiBudWxsLApAQCAtNzQsNyArNzcsNyBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3Jv
dXAoY29uZmlnKSB7CiAgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAogICAgICAgICAgICAg
InRlc3RHcm91cCI6ICIyMTI4IiwKICAgICAgICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAg
ICAgICJjb21taXRTZXQiOiAiNDI1NiIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0
U2V0TGlzdFszXSwKICAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzNdLAogICAgICAg
ICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxsLApAQCAtODUsOCAr
ODgsOCBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoY29uZmlnKSB7CiAgICAgICAgICAgICAi
dGVzdCI6ICI4NDQiLAogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAg
ICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgIm9yZGVyIjogIjQiLAorICAg
ICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbNF0sCiAgICAgICAgICAgICAic3Rh
dHVzIjogc3RhdHVzTGlzdFs0XSwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAg
ICAgImJ1aWxkIjogbnVsbCwKQEAgLTk3LDggKzEwMCw4IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RH
cm91cChjb25maWcpIHsKICAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCiAgICAgICAgICAgICAi
cGxhdGZvcm0iOiAiMzEiLAogICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKLSAgICAg
ICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NiIsCisg
ICAgICAgICAgICAib3JkZXIiOiAiNSIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0
U2V0TGlzdFs1XSwKICAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzVdLAogICAgICAg
ICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxsLApAQCAtMTU1LDcg
KzE1OCw3IEBAIGRlc2NyaWJlKCdjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RH
cm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7CiAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDEpOwogCiAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7Ci0gICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScs
IHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMX0p
OworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1l
OiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4
JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogbnVsbH0pOwogICAgICAgICByZXF1ZXN0c1swXS5y
ZXNvbHZlKCk7CiAKICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OwpAQCAtMTcyLDcgKzE3NSw3IEBAIGRlc2NyaWJlKCdjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1
ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7CiAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogCiAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7Ci0g
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3
b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBh
ZGRDb3VudDogMn0pOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEs
IHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywg
Z3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDIsIGNvbW1pdFNldDogbnVsbH0pOwogICAgICAgICBy
ZXF1ZXN0c1swXS5yZXNvbHZlKCk7CiAKICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOwpAQCAtMjQ5LDQgKzI1Miw4MyBAQCBkZXNjcmliZSgnY3JlYXRlQWRkaXRp
b25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywgKCkgPT4g
ewogICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRo
RmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7CiAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDApOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgdHdvIG1vcmUg
YnVpbGQgcmVxdWVzdCBvbiBBIGNvbmZpZyBhbmQgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0IGFm
dGVyd2FyZHMgd2hlbiBvbmUgQSBjb25maWcgcmVxdWVzdCBmYWlsZWQgZm9yIHRlc3QgZ3JvdXAg
aW4gc2VxdWVudGlhbCBtb2RlJywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNv
dW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAgICAgICAgICAgaGlkZGVuOiBm
YWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgIHN0YXR1c0xp
c3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5n
IiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1
JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgY29uc3QgZGF0
YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0
R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0
YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dp
dGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVy
bCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywg
d29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAyLCBj
b21taXRTZXQ6ICc0MjU1J30pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAg
ICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgICAgICByZXF1ZXN0c1sx
XS5yZXNvbHZlKHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpKTsKKworICAgICAgICBh
d2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0u
dXJsLCAnL2FwaS9hbmFseXNpcy10YXNrcz9pZD0xMzc2Jyk7CisgICAgICAgIHJlcXVlc3RzWzJd
LnJlc29sdmUoe2J1Z3M6IFtdLCBjb21taXRzOiBbXSwgYW5hbHlzaXNUYXNrczogW3tpZDogMTM3
NiwgY2F1c2VzOiBbXSwgZml4ZXM6IFtdfV19KTsKKworICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDQpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbM10uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3Jk
OiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0p
CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNhbmNlbCB0ZXN0IGdyb3VwIGluIHNlcXVlbnRp
YWwgbW9kZSBpZiBhbGwgdXNlciBpbml0aWFsbHkgc2NoZWR1bGVkIEEgcnVucyBmYWlsZWQnLCBh
c3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlm
aWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTog
J3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJmYWlsZWQiLCAiZmFpbGVk
IiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAicGVuZGluZyJdLAorICAgICAgICAg
ICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0MjU2JywgJzQyNTYn
LCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RH
cm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0
ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRkaXRp
b25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91
cHMsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKworICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0
ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0
YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQn
LCBncm91cDogJzIxMjgnLCBjYW5jZWw6IHRydWV9KTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSgpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXRyeSBCIGNvbmZpZyBpZiBBIGNv
bmZpZyBleGhhdXN0ZWQgcmV0cnkgYW5kIGhhZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1bCBydW4g
YnV0IGxlc3MgdGhhbiB1c2VyIHJlcXVlc3RlZCBmb3IgdGVzdCBncm91cCBpbiBzZXF1ZW50aWFs
IG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0
aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0
ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJd
LAorICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0
MjU1JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVz
dEdyb3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0
R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAg
Y3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVl
c3RzKHRlc3RHcm91cHMsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29y
ZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogJzQy
NTYnfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICB9KTsKKworICAgIGl0
KCdzaG91bGQgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0IGZsYWcgd2hlbiBpbml0aWFsIHJlcXVl
c3RlZCByZXBldGl0aW9uIGlzIHNhdGlzZmllZCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAo
KSA9PiB7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlv
bjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6
IHRydWUsCisgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVl
bnRpYWwnLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVk
IiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCJdLAorICAgICAg
ICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQy
NTYnLCAnNDI1NiddfTsKKworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRl
c3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2Ny
ZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRk
aXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RH
cm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKwor
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0u
ZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dv
cmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKaW5k
ZXggNWFhOTFlOGFhMDJlMTFhNjY0NTFkMzFkOTYzNjk2Y2VkOGQ0OTgzZS4uNDgwNzZlNWE4ZDRl
MjcwYjVmZmNhNWQ0OWY2MTYyMzAwNWRkYjdhNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKQEAgLTI0OSw3
ICsyNDksNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlzSGlkZGVuKCksIGZhbHNlKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbCgrZ3JvdXAuY3JlYXRlZEF0KCksIDE0NTg2ODg1MTQwMDApOwotICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBzYW1wbGVUZXN0R3Jv
dXAoKVsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCAvIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgc2FtcGxlVGVzdEdyb3VwKClbJ2J1
aWxkUmVxdWVzdHMnXS5sZW5ndGggLyAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayhncm91cC5o
YXNQZW5kaW5nKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5oYXNGaW5pc2hlZCgp
KTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAuaGFzU3RhcnRlZCgpKTsKQEAgLTQ2Miw3
ICs0NjIsNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQsICcxOTE2
MjMnKTsKICAgICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2Rl
bHMuc2hhcmVkUmVwb3NpdG9yeSwgJzgwMjI5Jyk7CiAKLSAgICAgICAgICAgIGNvbnN0IHByb21p
c2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUtdGFzaycsIE1vY2tNb2RlbHMuc29t
ZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29tZS1ncm91cCcsIDQsIFtzZXQxLCBz
ZXQyXSwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gVGVzdEdyb3VwLmNyZWF0
ZVdpdGhUYXNrKCdzb21lLXRhc2snLCBNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVs
cy5zb21lVGVzdCwgJ3NvbWUtZ3JvdXAnLCA0LCBbc2V0MSwgc2V0Ml0sIHRydWUsICdhbHRlcm5h
dGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBp
L2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzFdLnJlc29sdmUo
ewpAQCAtNDc1LDcgKzQ3NSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJdLmRhdGEsIHt0YXNrTmFt
ZTogJ3NvbWUtdGFzaycsIG5hbWU6ICdzb21lLWdyb3VwJywgcGxhdGZvcm06IDY1LCB0ZXN0OiAx
LAogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwgcmV2aXNpb25TZXRzOiBbeycx
MSc6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICIxOTE2MjIi
fSwKICAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNo
OiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19LCB7JzExJzoge293bmVyUmV2aXNpb246IG51bGws
IHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMyJ9LAotICAgICAgICAgICAgICAgICAgICAn
MTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiODAyMjki
fX1dLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdG9rZW46ICdhYmMnfSk7CisgICAgICAgICAg
ICAgICAgICAgICcxNic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNp
b246ICI4MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTog
J2FsdGVybmF0aW5nJywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJyk7CiAg
ICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAgICAgICAgICB0YXNrSWQ6
IDEyMywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427001</attachid>
            <date>2021-04-25 05:15:34 -0700</date>
            <delta_ts>2021-05-03 02:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210425051534.patch</filename>
            <type>text/plain</type>
            <size>221068</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTMzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjN2ZiYmEwY2Q4NDg2MWQ2MTkwOWE5YmFlYzgwOGM1ZDM0ZWQ1NjYwLi4wY2ExYTVjN2Uz
NWMxOTViMzE0YWU3NDhkNzcxMWJkMDViM2RmYWJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzQgQEAKKzIwMjEtMDQtMjUgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlw
ZScgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJyB0YWJsZSB0byBzdG9yZSByZXBldGl0aW9uIHR5
cGUgd2hpY2ggZGVmYXVsdHMgdG8gJ2FsdGVybmF0aW5nJy4KKyAgICAgICAgQWRkIHN1cHBvcnQg
dG8gc2NoZWR1bGUgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nIHdoaWNoIHJ1bnMgYWxsIEEgcnVu
cyBiZWZvcmUgQiBydW5zLCB3aGVyZWFzIHByZXZpb3VzbHkgd2Ugb25seQorICAgICAgICBzdXBw
b3J0IGFsdGVybmF0aW5nIEEgYW5kIEIgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBydW5zLgorCisg
ICAgICAgIFVwZGF0ZSBzeW5jaW5nIHNjcmlwdCB0byBub3QgcHJvY2VlZCB3aXRoIG5leHQgY29u
ZmlndXJhdGlvbiB1bnRpbCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gbWVldHMgaW5pdGlhbCByZXF1
ZXN0ZWQKKyAgICAgICAgcmVwZXRpdGlvbiBjb3VudCBvciBleGNlZWQgcmV0cnkuCisKKyAgICAg
ICAgQWRkIHJldHJ5IGxvZ2ljIGZvciAnc2VxdWVudGlhbCcgQS9CIHRlc3RpbmcgYW5kIG1vdmUg
cmV0cnkgbG9naWMgaW50byBzeW5jaW5nIHNjcmlwdCBzbyB0aGF0IHJldHJ5IGNhbiBiZQorICAg
ICAgICB0aW1lbHkgc2NoZWR1bGVkLiBUaGlzIGlzIGltcG9ydGFudCBmb3Igc2VxdWVudGlhbCB0
ZXN0IGdyb3VwIGJlY2F1c2UgbWlzc2luZyByZXRyeSB3aWxsIGJsb2NrIHRlc3QgZ3JvdXAgZnJv
bQorICAgICAgICBtYWtpbmcgcHJvZ3Jlc3MuCisKKyAgICAgICAgTW92ZSByZXRyeSBsb2dpYyBp
bnRvIFRlc3RHcm91cCBtb2RlbCByYXRoZXIgdGhhbiBhIHNlcGFyYXRlIG1vZHVsZS4KKworICAg
ICAgICBGaXggYSBwb3RlbnRpYWwgcmFjZSBpbiBzeW5jaW5nIHNjcmlwdCB0aGF0ICdQcm9taXNl
LmFsbCcgbWF5IGNhdXNlIHRlc3QgZ3JvdXAgbm90IHNjaGVkdWxlZCBpbiBvcmRlci4KKyAgICAg
ICAgRml4IGEgYnVnIGluIHN5bmNpbmcgc2NyaXB0IHRoYXQgd29ya2VyIG1pZ2h0IGJlIHRha2Vu
IGF3YXkgYmVmb3JlIHNjaGVkdWxpbmcgcmV0cnkgZm9yIGxhc3QgYnVpbGQgcmVxdWVzdC4KKwor
ICAgICAgICAqIGJyb3dzZXItdGVzdHMvdGVzdC1ncm91cC1mb3JtLXRlc3RzLmpzOiBVcGRhdGVk
IGFuZCBhZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIGluaXQtZGF0YWJhc2Uuc3FsOiBBZGRl
ZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZScgZmllbGQgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3Jv
dXBzJyB0YWJsZS4KKyAgICAgICAgKiBtaWdyYXRlLWRhdGFiYXNlLnNxbDogVXBkYXRlZCBtaWdy
YXRpb24gc2NyaXB0IHRvIGNvbmRpdGlvbmFsbHkgYWRkICd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90
eXBlJyBmaWVsZC4KKyAgICAgICAgKiBwdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocDogQWRkZWQg
J3JlcGV0aXRpb25UeXBlJyBmaWVsZCBpbiBhcGkgcmV0dXJuIHZhbHVlLgorICAgICAgICAqIHB1
YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwOiBGZXRjaGluZyBidWlsZCBy
ZXF1ZXN0cyB1bmRlciBhIHRyaWdnZXJhYmxlIHNob3VsZCBpbmNsdWRlIHRlc3QKKyAgICAgICAg
Z3JvdXAgd2l0aCBhbGwgdGVzdCBncm91cHMgZmluaXNoZWQgYnV0IHN0aWxsIG5lZWQgcmV0cnku
IFRoaXMgd2lsbCBhbGxvdyBzeW5jaW5nIHNjcmlwdCB0byByZXNvbHZlIHRoZSBidWlsZAorICAg
ICAgICByZXF1ZXN0IGJ5IElEIGFuZCBibG9jayBvdGhlciByZXF1ZXN0IHRvIGJlIHNjaGVkdWxl
ZCBvbiB0aGUgYnVpbGRlci4KKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1o
ZWxwZXJzLnBocDogQWRkZWQgY29kZSB0byBjcmVhdGUgYnVpbGQgcmVxdWVzdHMgYmFzZWQgb24g
dGVzdCBtb2RlLgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVx
dWVzdHMucGhwOiBBZGRlZCBzdXBwb3J0IHRvIG9ubHkgYWRkIGJ1aWxkIHJlcXVlc3RzIHRvIG9u
ZSBjb21taXQgc2V0LgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5h
bHlzaXMtdGFzay5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3VwcG9ydC4KKyAgICAgICAg
KiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwOiBBZGRlZCAncmVw
ZXRpdGlvblR5cGUnIHN1cHBvcnQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwLnBocDoKKyAgICAgICAgKiBwdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21w
b25lbnQtYmFzZS5qczoKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29u
ZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanM6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgc3Vw
cG9ydC4KKyAgICAgICAgKEN1c3RvbUNvbmZpZ3VyYXRpb25UZXN0R3JvdXBGb3JtLnByb3RvdHlw
ZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6
YWJsZS10ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBG
b3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25l
bnRzL3Rlc3QtZ3JvdXAtZm9ybS5qczoKKyAgICAgICAgKFRlc3RHcm91cEZvcm0pOgorICAgICAg
ICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAg
ICAgIChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFzay5h
c3luYyBjcmVhdGUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrKToKKyAgICAgICAgKiBwdWJsaWMv
djMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAg
ICAgICAoQnVpbGRSZXF1ZXN0LnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOiBBbGxvdyBidWls
ZCByZXF1ZXN0IG9yZGVyIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgICogcHVibGljL3YzL21vZGVs
cy90ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKToKKyAgICAgICAgKFRlc3RHcm91
cC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5
cGUucmVwZXRpdGlvblR5cGUpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5fbGFzdFJl
cXVlc3QpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5yZXBldGl0aW9uQ291bnRGb3JD
b21taXRTZXQpOiBSZWZhY3RvcmVkIGByZXBldGl0aW9uQ291bnRgIHNpbmNlIHJlcGV0aXRpb24g
bWF5IGJlIGRpZmZlcmVudAorICAgICAgICBiZXR3ZWVuIGNvbmZpZ3VyYXRpb25zLgorICAgICAg
ICAoVGVzdEdyb3VwLnByb3RvdHlwZS5oYXNSZXRyaWVzKTogQSBoZWxwZXIgZnVuY3Rpb24gdG8g
dGVsbCBpZiBhIHRlc3QgZ3JvdXAgaGFzIHJldHJ5IHJ1bnMuCisgICAgICAgIChUZXN0R3JvdXAu
cHJvdG90eXBlLndpbGxFeGNlZWRNYXhSZXRyeUZvckNvbW1pdFNldFdpdGhSZXRyeUNvdW50KToK
KyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmV0cnlUb0FkZEZvckNvbW1pdFNldCk6Cisg
ICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnNjaGVkdWxlZFJldHJ5Q291bnRGb3JDb21taXRT
ZXQpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5zY2hlZHVsZWRSZXRyeUNvdW50c0Fy
ZUlkZW50aWNhbCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHNjaGVkdWxl
UmV0cmllc0lmTmVjZXNzYXJ5KTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVl
c3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIF9jcmVhdGVB
bHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3JvdXApOiBNb3ZlZCBmcm9tICdyZXRyeS1mYWlsZWQt
YnVpbGQtcmVxdWVzdHMnIG1vZHVsZS4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuYXN5
bmMgX2NyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0
cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJv
dG90eXBlLnJlcXVlc3RlZENvbW1pdFNldHMpOgorICAgICAgICAoVGVzdEdyb3VwLl9jb21wdXRl
UmVxdWVzdGVkQ29tbWl0U2V0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5j
IGNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFz
eW5jIGFkZE1vcmVCdWlsZFJlcXVlc3RzKToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVh
dGVXaXRoVGFzayk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgY3JlYXRlV2l0aEN1c3RvbUNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZUFuZFJlZmV0Y2hU
ZXN0R3JvdXBzKToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBmZXRjaEJ5SWQpOiBBZGRlZCBz
dXBwb3J0IHRvIGZldGNoIHRlc3QgZ3JvdXAgYnkgSUQuCisgICAgICAgIChUZXN0R3JvdXAucHJv
dG90eXBlLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cyk6IFJlbmFtZWQgdG8gJ29yZGVyZWRCdWlsZFJl
cXVlc3RzJyB0byBiZWNvbWUgcHVibGljLgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9hbmFs
eXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFseXNpc1Rhc2tDaGFydFBhbmUucHJvdG90
eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUmVzdWx0
c1BhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlz
aXNUYXNrQ29uZmlndXJhdG9yUGFuZS5wcm90b3R5cGUuc2V0VGVzdEdyb3Vwcyk6CisgICAgICAg
IChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1Rl
c3RHcm91cFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAo
QW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3JlbmRlckN1cnJlbnRUZXN0R3Jv
dXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3JldHJ5
U3VtbWFyeSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5kaWRDb25zdHJ1
Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLmFzeW5j
IF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90
b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNU
YXNrUGFnZS5zZXQgY29uc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUu
YXN5bmMgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCk6CisgICAg
ICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQ3VzdG9tVGVzdEdy
b3VwKToKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczoKKyAgICAgICAg
KENoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChD
aGFydFBhbmUucHJvdG90eXBlLmFzeW5jIF9hbmFseXplUmFuZ2UpOgorICAgICAgICAqIHB1Ymxp
Yy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAgICAgICAoQ3JlYXRl
QW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhH
cm91cCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
czogQWRkZWQgYSB1bml0IHRlc3QuCisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS11cGxvYWQt
cm9vdC10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0
cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IFVwZGF0ZWQgYW5k
IGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5q
czogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMv
cHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFk
ZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGFzeW5jIGFzc2VydFRocm93cyk6CisgICAgICAgICog
c2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanM6CisgICAgICAgIChNb2NrRGF0YS5h
ZGRNb2NrRGF0YSk6CisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkTW9ja0J1aWxkUmVxdWVzdHNX
aXRoUm9vdHMpOgorICAgICAgICAoTW9ja0RhdGEuc2V0IGFkZEFub3RoZXJNb2NrVGVzdEdyb3Vw
KToKKyAgICAgICAgKE1vY2tEYXRhLnNldCBtb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVp
bGRlcik6CisgICAgICAgIChNb2NrRGF0YS5zYW1wbGVCdWlsZERhdGEpOgorICAgICAgICAqIHNl
cnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qczogVXBkYXRlZCBh
bmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1i
dWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAg
ICAoYXN5bmMgY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNoKToKKyAgICAgICAgKGNyZWF0ZVRlc3RH
cm91cFdpaE93bmVkQ29tbWl0KToKKyAgICAgICAgKiB0b29scy9qcy9idWlsZGJvdC1zeW5jZXIu
anM6CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUuc2NoZWR1bGVSZXF1ZXN0SW5H
cm91cElmQXZhaWxhYmxlKToKKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3RvdHlwZS5wdWxs
QnVpbGRib3QpOgorICAgICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzOgor
ICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZSk6CisgICAgICAgIChCdWlsZGJvdFRyaWdnZXJh
YmxlLnByb3RvdHlwZS5hc3luYyBzeW5jT25jZSk6CisgICAgICAgIChCdWlsZGJvdFRyaWdnZXJh
YmxlLnByb3RvdHlwZS5hc3luYyBfc2NoZWR1bGVSZXF1ZXN0KToKKyAgICAgICAgKEJ1aWxkYm90
VHJpZ2dlcmFibGUucHJvdG90eXBlLl9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0aW5nUmVxdWVz
dFdpdGhOZXdDb21taXRTZXQpOgorICAgICAgICAqIHRvb2xzL2pzL21lYXN1cmVtZW50LXNldC1h
bmFseXplci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0QW5hbHl6ZXIucHJvdG90eXBlLmFz
eW5jIF9hbmFseXplTWVhc3VyZW1lbnRTZXQpOgorICAgICAgICAoTWVhc3VyZW1lbnRTZXRBbmFs
eXplcik6CisgICAgICAgICogdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpz
OiBNb3ZlZCBjb2RlIHRvIFRlc3RHcm91cC4KKyAgICAgICAgKiB0b29scy9ydW4tYW5hbHlzaXMu
anM6IE1vdmUgcmV0cnkgbG9naWMgb3V0IG9mIHRoaXMgZmlsZSB0byBzeW5jLWJ1aWxkYm90Lgor
ICAgICAgICAqIHRvb2xzL3N5bmMtYnVpbGRib3QuanM6IFJlZmFjdG9yZWQgY29kZSB0byB1c2Ug
YXN5bmMvYXdhaXQgYW5kIGFkZGVkIHJldHJ5IGxvZ2ljIGJlZm9yZSBzY2hlZHVsaW5nIHRlc3Rz
LgorICAgICAgICAqIHVuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qczogVXBkYXRlZCB1
bml0IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpz
OiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1z
ZXQtYW5hbHl6ZXItdGVzdHMuanM6CisgICAgICAgICogdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IE1vdmVkIHVuaXQgdGVzdHMgdG8gdGVzdC1ncm91cC10
ZXN0cy5qcy4KKyAgICAgICAgKiB1bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzOiBBZGRl
ZCB1bml0IHRlc3RzIGZyb20gJ3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcycu
CisKIDIwMjEtMDQtMTQgIFpoaWZlaSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgQ29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgaW4gdGhlIENoYXJ0CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90ZXN0LWdy
b3VwLWZvcm0tdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0
cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMKaW5kZXggYjRhYjIxMjVjNDYzMDRmNTZjNDc4Nzcx
YmViNmMyMzNhMDkzYmU4YS4uY2M5YmFkNjRmMjkwMmEyMGQ4NDA4N2Q1ODhjZGRkYjljOTE5Yzk5
MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGVz
dC1ncm91cC1mb3JtLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93
c2VyLXRlc3RzL3Rlc3QtZ3JvdXAtZm9ybS10ZXN0cy5qcwpAQCAtMTgsNyArMTgsMjMgQEAgZGVz
Y3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+IHsKICAgICAgICAgICAgIHRlc3RHcm91
cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsICguLi5hcmdzKSA9PiBjYWxscy5w
dXNoKGFyZ3MpKTsKICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKHt9KTsKICAgICAg
ICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2soKTsKLSAg
ICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgdHJ1ZV1dKTsKKyAgICAgICAgICAg
IGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnbXVzdCBkaXNwYXRjaCAic3RhcnRUZXN0aW5nIiBh
Y3Rpb24gd2l0aCB0aGUgcmVwZXRpdGlvbiB0eXBlIHVzZXIgc2VsZWN0cyBvbiAiU3RhcnQgQS9C
IHRlc3RpbmciJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5n
Q29udGV4dCgpOworICAgICAgICByZXR1cm4gY3JlYXRlVGVzdEdyb3VwRm9ybVdpdGhDb250ZXh0
KGNvbnRleHQpLnRoZW4oKHRlc3RHcm91cEZvcm0pID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNh
bGxzID0gW107CisgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmxpc3RlblRvQWN0aW9uKCdzdGFy
dFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CisgICAgICAgICAgICBl
eHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRl
bnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRv
LmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CisgICAgICAgICAgICBjb25zdCB0eXBl
Rm9ybSA9IHRlc3RHcm91cEZvcm0uY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7CisgICAgICAg
ICAgICB0eXBlRm9ybS52YWx1ZSA9ICdzZXF1ZW50aWFsJzsKKyAgICAgICAgICAgIHR5cGVGb3Jt
LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgICAgICB0ZXN0R3Jv
dXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7CisgICAgICAgICAgICBleHBl
Y3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdLCBbNCwgJ3NlcXVlbnRp
YWwnLCB0cnVlXV0pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtMjksMTIgKzQ1LDEyIEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICB0ZXN0
R3JvdXBGb3JtLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2Fs
bHMucHVzaChhcmdzKSk7CiAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAg
ICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7
Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdXSk7CisgICAgICAg
ICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAg
ICAgICAgICAgICBjb25zdCBjb3VudEZvcm0gPSB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3JlcGV0
aXRpb24tY291bnQnKTsKICAgICAgICAgICAgIGNvdW50Rm9ybS52YWx1ZSA9ICc2JzsKICAgICAg
ICAgICAgIGNvdW50Rm9ybS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAg
ICAgICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwot
ICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXSwgWzYsIHRydWVdXSk7
CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRy
dWVdLCBbNiwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAK
QEAgLTQ1LDcgKzYxLDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+IHsK
ICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycs
ICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKHt9KTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQt
YnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwg
dHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0
aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIGNvbnN0IGNvdW50Rm9ybSA9IHRlc3RHcm91cEZv
cm0uY29udGVudCgncmVwZXRpdGlvbi1jb3VudCcpOwogICAgICAgICAgICAgY291bnRGb3JtLnZh
bHVlID0gJzYnOwogICAgICAgICAgICAgY291bnRGb3JtLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50
KCdjaGFuZ2UnKSk7CkBAIC01Myw3ICs2OSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVz
dHMnLCAoKSA9PiB7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb25DaGVja2JveC5jaGVj
a2VkID0gZmFsc2U7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb25DaGVja2JveC5kaXNw
YXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgZXhwZWN0KGNh
bGxzKS50by5lcWwoW1s0LCB0cnVlXSwgWzYsIGZhbHNlXV0pOworICAgICAgICAgICAgZXhwZWN0
KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXSwgWzYsICdhbHRlcm5hdGlu
ZycsIGZhbHNlXV0pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtNzYsMTAgKzkyLDEwIEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAg
dGVzdEdyb3VwRm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+
IGNhbGxzLnB1c2goYXJncykpOwogICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFs
KHt9KTsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCdidXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8u
ZXFsKFtbNCwgdHJ1ZV1dKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChb
WzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5zZXRSZXBldGl0aW9uQ291bnQoOCk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwRm9ybS5j
b250ZW50KCkucXVlcnlTZWxlY3RvcignYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdLCBbOCwgdHJ1ZV1dKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdLCBb
OCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFi
YXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAppbmRl
eCBmNjhiNWYwYzAzM2EyMjY0MzA3YzJmODNmM2Q0ZmI3NGJkYjE1M2VkLi5lNzZkY2JjOTI5YTJi
MWNmNWQyMjA3NDM3Y2RmYTQ4NmU1YmFlYmRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2luaXQtZGF0YWJhc2Uuc3FsCkBAIC0yOSw2ICsyOSw3IEBAIERST1AgVEFCTEUgSUYgRVhJU1RT
IHRyaWdnZXJhYmxlX3JlcG9zaXRvcmllcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMg
dXBsb2FkZWRfZmlsZXMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGJ1Z3MgQ0FTQ0FE
RTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIENBU0NBREU7CitE
Uk9QIFRZUEUgSUYgRVhJU1RTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIENB
U0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRfc2V0cyBDQVNDQURFOwogRFJPUCBU
QUJMRSBJRiBFWElTVFMgY29tbWl0X3NldF9pdGVtcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBF
WElTVFMgYnVpbGRfcmVxdWVzdHMgQ0FTQ0FERTsKQEAgLTI4Miw2ICsyODMsNyBAQCBDUkVBVEUg
VEFCTEUgdXBsb2FkZWRfZmlsZXMgKAogQ1JFQVRFIElOREVYIGZpbGVfYXV0aG9yX2luZGV4IE9O
IHVwbG9hZGVkX2ZpbGVzKGZpbGVfYXV0aG9yKTsKIENSRUFURSBVTklRVUUgSU5ERVggZmlsZV9z
aGEyNTZfaW5kZXggT04gdXBsb2FkZWRfZmlsZXMoZmlsZV9zaGEyNTYpIFdIRVJFIGZpbGVfZGVs
ZXRlZF9hdCBpcyBOVUxMOwogCitDUkVBVEUgVFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0
aXRpb25fdHlwZSBhcyBFTlVNICgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpOwogQ1JFQVRF
IFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBfaWQgc2VyaWFsIFBS
SU1BUlkgS0VZLAogICAgIHRlc3Rncm91cF90YXNrIGludGVnZXIgUkVGRVJFTkNFUyBhbmFseXNp
c190YXNrcyBOT1QgTlVMTCwKQEAgLTI5Miw2ICsyOTQsNyBAQCBDUkVBVEUgVEFCTEUgYW5hbHlz
aXNfdGVzdF9ncm91cHMgKAogICAgIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24gYm9vbGVh
biBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9ub3RpZmljYXRpb25fc2Vu
dF9hdCB0aW1lc3RhbXAgREVGQVVMVCBOVUxMLAogICAgIHRlc3Rncm91cF9pbml0aWFsX3JlcGV0
aXRpb25fY291bnQgaW50ZWdlciBOT1QgTlVMTCwKKyAgICB0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90
eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFVTFQg
J2FsdGVybmF0aW5nJywKICAgICB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyBib29s
ZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RSQUlOVCB0ZXN0Z3JvdXBfbmFtZV9tdXN0X2Jl
X3VuaXF1ZV9mb3JfZWFjaF90YXNrIFVOSVFVRSh0ZXN0Z3JvdXBfdGFzaywgdGVzdGdyb3VwX25h
bWUpKTsKIENSRUFURSBJTkRFWCB0ZXN0Z3JvdXBfdGFza19pbmRleCBPTiBhbmFseXNpc190ZXN0
X2dyb3Vwcyh0ZXN0Z3JvdXBfdGFzayk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWln
cmF0ZS1kYXRhYmFzZS5zcWwKaW5kZXggMGVhOTEzM2RhNmVkZTMyNWRkZjZjMjFkOGI5MzdmYjcz
NTY0MjU5YS4uNDMwNDg1YjNiNGI5MGQ4NGRjZmQ2MjZkMzI4NzBmMTBkMjQ3Njk4YSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbApAQCAtMSw5ICsx
LDE1IEBACiBETyAkJAogCiBCRUdJTgorCitJRiBOT1QgRVhJU1RTIChTRUxFQ1QgTlVMTCBGUk9N
IHBnX3R5cGUgV0hFUkUgdHlwbmFtZSA9ICdhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25f
dHlwZScpIFRIRU4KKyAgICBDUkVBVEUgVFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRp
b25fdHlwZSBhcyBFTlVNICgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpOworRU5EIElGOwor
CiBBTFRFUiBUQUJMRSBidWlsZF9yZXF1ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVx
dWVzdF9zdGF0dXNfZGVzY3JpcHRpb24gdmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRF
UiBUQUJMRSBwbGF0Zm9ybXMgQUREIENPTFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91
cCBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxhdGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVS
IFRBQkxFIGNvbW1pdHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9p
ZGVudGlmaWVyIHZhcmNoYXIoNjQpIERFRkFVTFQgTlVMTDsKK0FMVEVSIFRBQkxFIGFuYWx5c2lz
X3Rlc3RfZ3JvdXBzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfcmVwZXRpdGlv
bl90eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFV
TFQgJ2FsdGVybmF0aW5nJzsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBDT05TVFJBSU5UIGNv
bW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlOwogQUxU
RVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21taXRfc3RyaW5nX2lkZW50aWZpZXJf
aW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUoY29tbWl0X3JlcG9zaXRvcnksIGNv
bW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1YzRhYjk4N2I3OTMy
NmM4MTIyMDMwZmRkZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0OGExOTlkZTI3OTVk
NWQ3N2Q2ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBp
L3Rlc3QtZ3JvdXBzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24gZm9ybWF0X3Rlc3Rf
Z3JvdXAoJGdyb3VwX3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFi
YXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSks
CiAgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3Jv
dXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwKICAgICAgICAgJ2lu
aXRpYWxSZXBldGl0aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9pbml0aWFsX3Jl
cGV0aXRpb25fY291bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9PiAkZ3JvdXBfcm93
Wyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWlsZFJlcXVlc3RzJyA9
PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwKICAgICApOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJl
cXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdiMjUyMDk3ZjExNWZm
ZGJjNDFhMTFjM2U0YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkwYTNjMmIyMDkxZGU1
YmU2YTUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgKFNFTEVDVCB0
ZXN0Z3JvdXBfaWQsIHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rncm91cF9hdXRob3Ig
aXMgbm90IG51bGwgdGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRlciwgdGVzdGdyb3Vw
X2NyZWF0ZWRfYXQKICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFdI
RVJFIEVYSVNUUwogICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBidWlsZF9yZXF1
ZXN0cyBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCByZXF1ZXN0X3N0YXR1
cwotICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwn
LCBcJ3J1bm5pbmdcJykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAg
SU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpIE9SIHRlc3Rncm91
cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91cHMKICAgICAgICAg
ICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVzdF9ncm91cCA9IHRl
c3RfZ3JvdXBzLnRlc3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkgYXV0aG9yX29yZGVy
LCB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5KCR0cmlnZ2VyYWJs
ZV9pZCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAppbmRleCBlODUzMGE2
YmI3MWU0MmNmZjI4Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi5jNmNkOGU2N2RjMDM4MjI4MTAwMTc4
NTMzMmI3MDE1NjgwNjlmZWYzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCkBAIC00
LDIxICs0LDMxIEBAIHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1maW5kZXIucGhwJyk7
CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAogIyBGSVhNRTogU2hv
dWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIgZnVuY3Rpb25zIHRv
IGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24gY3JlYXRlX3Rlc3Rf
Z3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5h
bWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJl
cGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKK2Z1bmN0aW9uIGNyZWF0ZV90
ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQs
ICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQs
ICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9u
KQorewogCiAgICAgbGlzdCAoJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmln
dXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21taXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3Vy
YXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmlu
c2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFy
cmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0
aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnaW5pdGlh
bF9yZXBldGl0aW9uX2NvdW50JyA9PiAkcmVwZXRpdGlvbl9jb3VudCkpOworICAgICAgICBhcnJh
eSgndGFzaycgPT4gJHRhc2tfaWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhv
ciwgJ25lZWRzX25vdGlmaWNhdGlvbicgPT4gJG5lZWRzX25vdGlmaWNhdGlvbiwKKyAgICAgICAg
ICAgICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50LCAncmVw
ZXRpdGlvbl90eXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CiAKICAgICAkYnVpbGRfY291bnQg
PSBjb3VudCgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxk
X2NvdW50OwogICAgIGZvcmVhY2goJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRf
Y29uZmlndXJhdGlvbikKICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3Vy
YXRpb24oJGRiLCAkYnVpbGRfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCBOVUxMLCAkZ3JvdXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRp
IDwgJHJlcGV0aXRpb25fY291bnQ7ICRpKyspIHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25m
aWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2Vy
dF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlv
biwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdy
b3VwX2lkKTsKKyAgICBpZiAoJHJlcGV0aXRpb25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAg
ICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3Vy
YXRpb24pIHsKKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50
OyAkaSsrKQorICAgICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1
cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGFzc2VydCgkcmVwZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZycp
OworICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgewor
ICAgICAgICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2Nv
bmZpZ3VyYXRpb24pCisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2Nv
bmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJh
YmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiAkZ3JvdXBfaWQ7CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWls
ZC1yZXF1ZXN0cy5waHAKaW5kZXggNTcwZTkwMmY1ZDJlMWRmM2ZjMmI2YjZhZmEyMzNhYmZiNTAw
MzY0Ny4uMzFkZTkzMTU2OTg1YmZhYmUyYTdjMDIxNjJmYjY5MmEzNjI5YzZiNCAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocApAQCAtNywxMyArNywxNSBAQCBmdW5j
dGlvbiBtYWluKCkgewogICAgICRkYiA9IGNvbm5lY3QoKTsKICAgICAkZGF0YSA9IGVuc3VyZV9w
cml2aWxlZ2VkX2FwaV9kYXRhX2FuZF90b2tlbl9vcl93b3JrZXIoJGRiKTsKIAotICAgICRhZGRp
dGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdhZGRDb3VudCcp
OwotICAgIGlmICghJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCkKLSAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdSZXF1ZXN0Q291bnROb3RTcGVjaWZpZWQnKTsKKyAgICAkYXJndW1lbnRz
ID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRhLCBhcnJheSgKKyAgICAgICAgJ2FkZENvdW50JyA9
PiAnaW50JywKKyAgICAgICAgJ2dyb3VwJyA9PiAnaW50JywKKyAgICAgICAgJ2NvbW1pdFNldCcg
PT4gJ2ludD8nLAorICAgICkpOwogCi0gICAgJHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGRh
dGEsICdncm91cCcpOwotICAgIGlmICghJHRlc3RfZ3JvdXBfaWQpCi0gICAgICAgIGV4aXRfd2l0
aF9lcnJvcignVGVzdEdyb3VwTm90U3BlY2lmaWVkJyk7CisgICAgJGFkZGl0aW9uYWxfYnVpbGRf
cmVxdWVzdF9jb3VudCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnYWRkQ291bnQnKTsKKyAgICAk
dGVzdF9ncm91cF9pZCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnZ3JvdXAnKTsKKyAgICAkY29t
bWl0X3NldF9pZCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnY29tbWl0U2V0JywgTlVMTCk7CiAK
ICAgICAkdGVzdF9ncm91cCA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNfdGVzdF9n
cm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCkpOwogICAg
IGlmICghJHRlc3RfZ3JvdXApCkBAIC0yOCw5ICszMCwyNSBAQCBmdW5jdGlvbiBtYWluKCkgewog
ICAgIGlmICgkY3VycmVudF9vcmRlciA8IDApCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9U
ZXN0aW5nQnVpbGRSZXF1ZXN0cycpOwogCisgICAgJHJlcGV0aXRpb25fdHlwZSA9ICR0ZXN0X2dy
b3VwWyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ107CisgICAgYXNzZXJ0KGluX2FycmF5KCRy
ZXBldGl0aW9uX3R5cGUsIFsnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCddKSk7CisgICAgJGlz
X2FsdGVybmF0aW5nX3R5cGUgPSAkcmVwZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZyc7Cisg
ICAgaWYgKCRpc19hbHRlcm5hdGluZ190eXBlICYmICRjb21taXRfc2V0X2lkKQorICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ1Nob3VsZE5vdFNwZWNpZnlDb21taXRTZXRGb3JBbHRlcm5hdGluZ1Jl
cXVlc3QnKTsKKworICAgIGlmICgkaXNfYWx0ZXJuYXRpbmdfdHlwZSkKKyAgICAgICAgYWRkX2J1
aWxkX3JlcXVlc3RfZm9yX2FsdGVybmF0aW5nX3Rlc3RfZ3JvdXAoJGRiLCAkZXhpc3RpbmdfYnVp
bGRfcmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICRjdXJyZW50X29y
ZGVyKTsKKyAgICBlbHNlCisgICAgICAgIGFkZF9idWlsZF9yZXF1ZXN0X2Zvcl9zZXF1ZW50aWFs
X3Rlc3RfZ3JvdXAoJGRiLCAkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1
aWxkX3JlcXVlc3RfY291bnQsICRjb21taXRfc2V0X2lkLCAkdGVzdF9ncm91cF9pZCk7CisKKyAg
ICBleGl0X3dpdGhfc3VjY2VzcygpOworfQorCitmdW5jdGlvbiBhZGRfYnVpbGRfcmVxdWVzdF9m
b3JfYWx0ZXJuYXRpbmdfdGVzdF9ncm91cCgkZGIsICRidWlsZF9yZXF1ZXN0cywgJGFkZF9jb3Vu
dCwgJG9yZGVyKQorewogICAgICRjb21taXRfc2V0cyA9IGFycmF5KCk7CiAgICAgJGJ1aWxkX3Jl
cXVlc3RfYnlfY29tbWl0X3NldCA9IGFycmF5KCk7Ci0gICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1
aWxkX3JlcXVlc3RzIGFzICRidWlsZF9yZXF1ZXN0KSB7CisgICAgZm9yZWFjaCAoJGJ1aWxkX3Jl
cXVlc3RzIGFzICRidWlsZF9yZXF1ZXN0KSB7CiAgICAgICAgIGlmICgkYnVpbGRfcmVxdWVzdFsn
cmVxdWVzdF9vcmRlciddIDwgMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAkcmVx
dWVzdGVkX2NvbW1pdF9zZXQgPSAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J107
CkBAIC00MSwyMiArNTksNzEgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICB9CiAKICAgICAkZGIt
PmJlZ2luX3RyYW5zYWN0aW9uKCk7Ci0gICAgZm9yICgkaSA9IDA7ICRpIDwgJGFkZGl0aW9uYWxf
YnVpbGRfcmVxdWVzdF9jb3VudDsgJGkrKykgeworICAgIGZvciAoJGkgPSAwOyAkaSA8ICRhZGRf
Y291bnQ7ICRpKyspIHsKICAgICAgICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRzIGFzICRjb21taXRf
c2V0KSB7CiAgICAgICAgICAgICAkYnVpbGRfcmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5X2Nv
bW1pdF9zZXRbJGNvbW1pdF9zZXRdOwotICAgICAgICAgICAgJGRiLT5pbnNlcnRfcm93KCdidWls
ZF9yZXF1ZXN0cycsICdyZXF1ZXN0JywgYXJyYXkoCi0gICAgICAgICAgICAgICAgJ3RyaWdnZXJh
YmxlJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF90cmlnZ2VyYWJsZSddLAotICAgICAgICAg
ICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9yZXBv
c2l0b3J5X2dyb3VwJ10sCi0gICAgICAgICAgICAgICAgJ3BsYXRmb3JtJyA9PiAkYnVpbGRfcmVx
dWVzdFsncmVxdWVzdF9wbGF0Zm9ybSddLAotICAgICAgICAgICAgICAgICd0ZXN0JyA9PiAkYnVp
bGRfcmVxdWVzdFsncmVxdWVzdF90ZXN0J10sCi0gICAgICAgICAgICAgICAgJ2dyb3VwJyA9PiAk
YnVpbGRfcmVxdWVzdFsncmVxdWVzdF9ncm91cCddLAotICAgICAgICAgICAgICAgICdvcmRlcicg
PT4gKyskY3VycmVudF9vcmRlciwKLSAgICAgICAgICAgICAgICAnY29tbWl0X3NldCcgPT4gJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddKSk7CisgICAgICAgICAgICBpbnNlcnRf
YnVpbGRfcmVxdWVzdHMoJGRiLCAkYnVpbGRfcmVxdWVzdCwgKyskb3JkZXIpOwogICAgICAgICB9
CiAgICAgfQogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7Cit9CiAKLSAgICBleGl0X3dp
dGhfc3VjY2VzcygpOworZnVuY3Rpb24gYWRkX2J1aWxkX3JlcXVlc3RfZm9yX3NlcXVlbnRpYWxf
dGVzdF9ncm91cCgkZGIsICRidWlsZF9yZXF1ZXN0cywgJGFkZF9jb3VudCwgJGNvbW1pdF9zZXRf
aWQsICR0ZXN0X2dyb3VwX2lkKQoreworICAgICRvcmRlcl9pbmNyZW1lbnRhbF9ieV9jb21taXRf
c2V0ID0gYXJyYXkoKTsKKyAgICAkY29tbWl0X3NldHMgPSBhcnJheSgpOworICAgICRidWlsZF9y
ZXF1ZXN0X2J5X2NvbW1pdF9zZXQgPSBhcnJheSgpOworICAgIGZvcmVhY2ggKCRidWlsZF9yZXF1
ZXN0cyBhcyAkYnVpbGRfcmVxdWVzdCkgeworICAgICAgICBpZiAoJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3Rfb3JkZXInXSA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgJHJlcXVl
c3RlZF9jb21taXRfc2V0ID0gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddOwor
ICAgICAgICAkaXNfZXhpc3RpbmdfY29tbWl0X3NldCA9IGFycmF5X2tleV9leGlzdHMoJHJlcXVl
c3RlZF9jb21taXRfc2V0LCAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KTsKKyAgICAgICAg
JGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskcmVxdWVzdGVkX2NvbW1pdF9zZXRdID0gJGJ1
aWxkX3JlcXVlc3Q7CisgICAgICAgIGlmICgkaXNfZXhpc3RpbmdfY29tbWl0X3NldCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICgkY29tbWl0X3NldF9pZCkgeworICAgICAg
ICAgICAgaWYgKCRyZXF1ZXN0ZWRfY29tbWl0X3NldCA9PSAkY29tbWl0X3NldF9pZCkKKyAgICAg
ICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0cywgJHJlcXVlc3RlZF9jb21taXRfc2V0
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCRjb21taXRfc2V0cykKKyAgICAgICAgICAgICAgICAk
b3JkZXJfaW5jcmVtZW50YWxfYnlfY29tbWl0X3NldFskcmVxdWVzdGVkX2NvbW1pdF9zZXRdID0g
JGFkZF9jb3VudDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNv
bW1pdF9zZXRzLCAkcmVxdWVzdGVkX2NvbW1pdF9zZXQpOworICAgICAgICAgICAgJG9yZGVyX2lu
Y3JlbWVudGFsX2J5X2NvbW1pdF9zZXRbJHJlcXVlc3RlZF9jb21taXRfc2V0XSA9IChjb3VudCgk
Y29tbWl0X3NldHMpIC0gMSkgKiAkYWRkX2NvdW50OworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKCEkY29tbWl0X3NldHMpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9Db21taXRTZXRJ
blRlc3RHcm91cCcpOworCisgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOworICAgIGZvcmVh
Y2ggKGFycmF5X3JldmVyc2UoJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQsIHRydWUp
IGFzICRjb21taXRfc2V0ID0+ICRpbmNyZW1lbnRhbCkgeworICAgICAgICBpZiAoISRpbmNyZW1l
bnRhbCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAkZGItPnF1ZXJ5KCdVUERBVEUg
YnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3JkZXIgPSByZXF1ZXN0X29yZGVyICsgJDEKKyAg
ICAgICAgICAgIFdIRVJFIHJlcXVlc3RfY29tbWl0X3NldCA9ICQyIEFORCByZXF1ZXN0X2dyb3Vw
ID0gJDMnLAorICAgICAgICAgICAgYXJyYXkoJGluY3JlbWVudGFsLCAkY29tbWl0X3NldCwgJHRl
c3RfZ3JvdXBfaWQpKTsKKyAgICB9CisgICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRzIGFzICRjb21t
aXRfc2V0KSB7CisgICAgICAgICRidWlsZF9yZXF1ZXN0ID0gJGJ1aWxkX3JlcXVlc3RfYnlfY29t
bWl0X3NldFskY29tbWl0X3NldF07CisgICAgICAgICRyZXF1ZXN0X29yZGVyID0gJGJ1aWxkX3Jl
cXVlc3RbJ3JlcXVlc3Rfb3JkZXInXTsKKyAgICAgICAgJHJlcXVlc3Rfb3JkZXJfaW5jcmVtZW50
YWwgPSBhcnJheV9nZXQoJG9yZGVyX2luY3JlbWVudGFsX2J5X2NvbW1pdF9zZXQsICRjb21taXRf
c2V0LCAwKTsKKyAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGFkZF9jb3VudDsgJGkrKykKKyAg
ICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0cygkZGIsICRidWlsZF9yZXF1ZXN0LCArKyRy
ZXF1ZXN0X29yZGVyICsgJHJlcXVlc3Rfb3JkZXJfaW5jcmVtZW50YWwpOworICAgIH0KKyAgICAk
ZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOworfQorCitmdW5jdGlvbiBpbnNlcnRfYnVpbGRfcmVx
dWVzdHMoJGRiLCAkYnVpbGRfcmVxdWVzdCwgJG9yZGVyX292ZXJ3cml0ZSkKK3sKKyAgICAkZGIt
Pmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgKKyAgICAgICAg
J3RyaWdnZXJhYmxlJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF90cmlnZ2VyYWJsZSddLAor
ICAgICAgICAncmVwb3NpdG9yeV9ncm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcmVw
b3NpdG9yeV9ncm91cCddLAorICAgICAgICAncGxhdGZvcm0nID0+ICRidWlsZF9yZXF1ZXN0Wydy
ZXF1ZXN0X3BsYXRmb3JtJ10sCisgICAgICAgICd0ZXN0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVx
dWVzdF90ZXN0J10sCisgICAgICAgICdncm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rf
Z3JvdXAnXSwKKyAgICAgICAgJ29yZGVyJyA9PiAkb3JkZXJfb3ZlcndyaXRlLAorICAgICAgICAn
Y29tbWl0X3NldCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddKSk7CiB9
CiAKIG1haW4oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAK
aW5kZXggMjhhMTYxMzAwODRlOGM0ZGFlMTRiZDI5ZjUwZmZlOGJjZGU4YWM5NC4uNWQ5MTkzMGFj
NjM1MWVkZWI1NGRiMzk0MGRiNDA2NDZjMTUzNWE4NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5w
aHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtYW5hbHlzaXMtdGFzay5waHAKQEAgLTEwLDYgKzEwLDcgQEAgZnVuY3Rpb24gbWFpbigp
IHsKICAgICAkYXV0aG9yID0gcmVtb3RlX3VzZXJfbmFtZSgkZGF0YSk7CiAgICAgJG5hbWUgPSBh
cnJheV9nZXQoJGRhdGEsICduYW1lJyk7CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSBhcnJheV9n
ZXQoJGRhdGEsICdyZXBldGl0aW9uQ291bnQnKTsKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gYXJy
YXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlvblR5cGUnLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAkbmVl
ZHNfbm90aWZpY2F0aW9uID0gYXJyYXlfZ2V0KCRkYXRhLCAnbmVlZHNOb3RpZmljYXRpb24nLCBG
YWxzZSk7CiAgICAgJHRlc3RfZ3JvdXBfbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3RHcm91
cE5hbWUnKTsKICAgICAkcmV2aXNpb25fc2V0X2xpc3QgPSBhcnJheV9nZXQoJGRhdGEsICdyZXZp
c2lvblNldHMnKTsKQEAgLTIwLDYgKzIxLDkgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBpZiAo
ISRuYW1lKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ01pc3NpbmdOYW1lJywgYXJyYXkoJ25h
bWUnID0+ICRuYW1lKSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFy
cmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdtb2RlJyA9PiAkcmVwZXRpdGlvbl90
eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2YWxpZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5KCdz
dGFydFJ1bicgPT4gJ2ludCcsICdlbmRSdW4nID0+ICdpbnQnKSk7CiAKICAgICAkc3RhcnRfcnVu
ID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIsICd0ZXN0X3J1bnMnLCAncnVuJywgJHJhbmdlWydzdGFy
dFJ1biddLCAnSW52YWxpZFN0YXJ0UnVuJywgJHJhbmdlKTsKQEAgLTg1LDcgKzg5LDcgQEAgZnVu
Y3Rpb24gbWFpbigpIHsKICAgICAgICAgJHRyaWdnZXJhYmxlX2lkID0gJHRyaWdnZXJhYmxlWydp
ZCddOwogICAgICAgICAkdGVzdF9pZCA9ICR0cmlnZ2VyYWJsZVsndGVzdCddOwogICAgICAgICAk
Y29tbWl0X3NldHMgPSBjb21taXRfc2V0c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dl
cmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdCk7Ci0gICAgICAgIGNyZWF0ZV90ZXN0X2dyb3Vw
X2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dy
b3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRm
b3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7
CisgICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21t
aXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJs
ZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9j
b3VudCwgJHJlcGV0aXRpb25fdHlwZSwgJG5lZWRzX25vdGlmaWNhdGlvbik7CiAgICAgfQogCiAg
ICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cC5waHAKaW5kZXggNzQyNTNmYmU3ODY1OWJhMmY2ZTA5OTkzMzEwMWJiOGEyOWYzMTFk
ZS4uZDIzYjJmZjk2NjgxYzhmYTg4ZWMwZjk3M2QxMGViZmYzNzI4ODg1MyAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKQEAgLTE4LDYgKzE4LDcgQEAgZnVuY3Rpb24g
bWFpbigpCiAgICAgJHRhc2tfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ3Rhc2snKTsKICAg
ICAkdGFza19uYW1lID0gYXJyYXlfZ2V0KCRkYXRhLCAndGFza05hbWUnKTsKICAgICAkcmVwZXRp
dGlvbl9jb3VudCA9ICRhcmd1bWVudHNbJ3JlcGV0aXRpb25Db3VudCddOworICAgICRyZXBldGl0
aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGlu
ZycpOwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05v
dGlmaWNhdGlvbicsIEZhbHNlKTsKICAgICAkcGxhdGZvcm1faWQgPSBhcnJheV9nZXQoJGRhdGEs
ICdwbGF0Zm9ybScpOwogICAgICR0ZXN0X2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGVzdCcpOwpA
QCAtNDIsNiArNDMsOSBAQCBmdW5jdGlvbiBtYWluKCkKICAgICBlbHNlIGlmICgkcmVwZXRpdGlv
bl9jb3VudCA8IDEpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25D
b3VudCcsIGFycmF5KCdyZXBldGl0aW9uQ291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7CiAK
KyAgICBpZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycs
ICdzZXF1ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0
aW9uVHlwZScsIGFycmF5KCdyZXBldGl0aW9uVHlwZScgPT4gJHJlcGV0aXRpb25fdHlwZSkpOwor
CiAgICAgJHRyaWdnZXJhYmxlX2lkID0gTlVMTDsKICAgICBpZiAoJHRhc2tfaWQpIHsKICAgICAg
ICAgJHRhc2sgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2sn
LCBhcnJheSgnaWQnID0+ICR0YXNrX2lkKSk7CkBAIC04Niw3ICs5MCw3IEBAIGZ1bmN0aW9uIG1h
aW4oKQogICAgIGlmICgkdGFza19uYW1lKQogICAgICAgICAkdGFza19pZCA9ICRkYi0+aW5zZXJ0
X3JvdygnYW5hbHlzaXNfdGFza3MnLCAndGFzaycsIGFycmF5KCduYW1lJyA9PiAkdGFza19uYW1l
LCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7CiAKLSAgICAkZ3JvdXBfaWQgPSBjcmVhdGVfdGVzdF9n
cm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFt
ZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkcmVw
ZXRpdGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgJGdyb3VwX2lkID0gY3Jl
YXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFz
a19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVz
dF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmlj
YXRpb24pOwogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVz
dC1ncm91cC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAppbmRleCAzNTVlNmM4NWYxMjNiMmMzNTQ0NzExYmZi
NjE3NDAwMDc5Mzc2OWFjLi4zMTc1ZDcxMGE3YzdjNjQ1NGJmYjc5NjE2ZWRlZDY4MzI5MzlmOTQ0
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocApAQCAtMjAsNiArMjAs
OSBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9tb3JlX3Jl
cXVlc3RzJ10gPSBGQUxTRTsKICAgICB9CiAKKyAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnY2Fu
Y2VsJywgJGRhdGEpKQorICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10g
PSBGQUxTRTsKKwogICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdtYXlOZWVkTW9yZVJlcXVlc3Rz
JywgJGRhdGEpKQogICAgICAgICAgJHZhbHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0g
JGRhdGFbJ21heU5lZWRNb3JlUmVxdWVzdHMnXTsKIApAQCAtNDQsNyArNDcsNyBAQCBmdW5jdGlv
biBtYWluKCkgewogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvVXBkYXRlVGVzdEdy
b3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCwgJ3ZhbHVlcycgPT4gJHZhbHVlcykp
OwogICAgIH0KIAotICAgIGlmIChhcnJheV9nZXQoJGRhdGEsICdoaWRkZW4nKSkgeworICAgIGlm
IChhcnJheV9nZXQoJGRhdGEsICdoaWRkZW4nKSB8fCBhcnJheV9nZXQoJGRhdGEsICdjYW5jZWwn
KSkgewogICAgICAgICAkZGItPnF1ZXJ5X2FuZF9nZXRfYWZmZWN0ZWRfcm93cygnVVBEQVRFIGJ1
aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X3N0YXR1cyA9ICQxCiAgICAgICAgICAgICBXSEVSRSBy
ZXF1ZXN0X2dyb3VwID0gJDIgQU5EIHJlcXVlc3Rfc3RhdHVzID0gJDMnLCBhcnJheSgnY2FuY2Vs
ZWQnLCAkdGVzdF9ncm91cF9pZCwgJ3BlbmRpbmcnKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNl
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBv
bmVudC1iYXNlLmpzCmluZGV4IGM1NmUyYjAwOTE3MThjMDkwNzI3NzE2MjQ0NWY3YzllZTdhNDg5
MmQuLmJkNzE3MTdkMjhmNTE2ZjkwOTc2ZGE5OWYxYjMzNDdiOGFhNjM4YzkgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQt
YmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9jb21t
b24tY29tcG9uZW50LWJhc2UuanMKQEAgLTEzNSwxMiArMTM1LDEyIEBAIGNsYXNzIENvbW1vbkNv
bXBvbmVudEJhc2UgewogICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChDb21tb25Db21w
b25lbnRCYXNlLl9jb250ZXh0LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpKTsKICAgICB9CiAKLSAg
ICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJu
YWwsIHRhYkluZGV4PW51bGwpCisgICAgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJh
Y2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleCA9IG51bGwpCiAgICAgewogICAgICAg
ICByZXR1cm4gQ29tbW9uQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JD
YWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4KTsKICAgICB9CiAKLSAgICBz
dGF0aWMgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4
dGVybmFsLCB0YWJJbmRleD1udWxsKQorICAgIHN0YXRpYyBjcmVhdGVMaW5rKGNvbnRlbnQsIHRp
dGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4ID0gbnVsbCkKICAg
ICB7CiAgICAgICAgIHZhciB0aXRsZSA9IHRpdGxlT3JDYWxsYmFjazsKICAgICAgICAgaWYgKGNh
bGxiYWNrID09PSB1bmRlZmluZWQpIHsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3Vw
LWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMv
Y3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IDg3YjE3YzE0NmQ0
NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4ZTRjNjkuLjJmYmRhYjNlMmQwNjYwY2Y2N2ZhZGRlZjA1
MTQ5YzA4YmExNzY2MTkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3Rv
bS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcwpAQCAtNDAsOSArNDAsOSBAQCBjbGFz
cyBDdXN0b21Db25maWd1cmF0aW9uVGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0g
ewogICAgICAgICBjb25zdCB0ZXN0ID0gY29uZmlndXJhdG9yLnRlc3RzKClbMF07IC8vIEZJWE1F
OiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgbXVsdGlwbGUgdGVzdHMuCiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5faGFzVGFzayA9PT0gIXRhc2tOYW1lKTsKICAgICAgICAg
aWYgKCF0aGlzLl9oYXNUYXNrKQotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3Rh
cnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRT
ZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0ZXN0R3Jv
dXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX3JlcGV0aXRpb25UeXBlLCBjb21t
aXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uLCB0YXNrTmFt
ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0
VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0
cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0ZXN0R3JvdXBOYW1lLCB0aGlz
Ll9yZXBldGl0aW9uQ291bnQsIHRoaXMuX3JlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBwbGF0
Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICB9CiAKICAgICBkaWRD
b25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJs
ZS10ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggMDgxY2E5ZDI3ZDNkYjhjOTMyMGRiMDI4MjA3MmU1
NzIxZDdkZjZhYy4uMWYzNzA1MDUzYmU0ODUwNzg2MWEzZGUzMGFhNThmYWU1MTUyZDgwZiAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1
c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMK
QEAgLTI3LDcgKzI3LDggQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRz
IFRlc3RHcm91cEZvcm0gewogCiAgICAgc3RhcnRUZXN0aW5nKCkKICAgICB7Ci0gICAgICAgIHRo
aXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwg
dGhpcy5fbmFtZSwgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1hcCgpLCB0aGlzLl9ub3RpZnlPbkNv
bXBsZXRpb24pOworICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0
aGlzLl9uYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX3JlcGV0aXRpb25UeXBlLAor
ICAgICAgICAgICAgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1hcCgpLCB0aGlzLl9ub3RpZnlPbkNv
bXBsZXRpb24pOwogICAgIH0KIAogICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3Qt
Z3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggYTQzZWRmMzUwOGJjZjA3NDYyNWRiOTk2NGY2
MDRkZTE4MDgyOTY0Zi4uZTIwYjRkY2Y4YWY2YjBjZjJiNzRmNTMyZDdlMGUwZjMyNDViNDBlYiAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRz
L3Rlc3QtZ3JvdXAtZm9ybS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCkBAIC02LDYgKzYsNyBAQCBjbGFzcyBU
ZXN0R3JvdXBGb3JtIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHN1cGVyKG5hbWUg
fHwgJ3Rlc3QtZ3JvdXAtZm9ybScpOwogICAgICAgICB0aGlzLl9yZXBldGl0aW9uQ291bnQgPSA0
OwogICAgICAgICB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24gPSB0cnVlOworICAgICAgICB0aGlz
Ll9yZXBldGl0aW9uVHlwZSA9ICdhbHRlcm5hdGluZyc7CiAgICAgfQogCiAgICAgc2V0UmVwZXRp
dGlvbkNvdW50KGNvdW50KQpAQCAtMjIsMTIgKzIzLDE0IEBAIGNsYXNzIFRlc3RHcm91cEZvcm0g
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgfTsKICAgICAgICAgY29uc3Qgbm90aWZ5
T25Db21wbGV0aW9uQ2hlY2tCb3ggPSB0aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9u
LWNoZWNrYm94Jyk7CiAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrQm94Lm9uY2hhbmdl
ID0gKCkgPT4gdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uID0gbm90aWZ5T25Db21wbGV0aW9uQ2hl
Y2tCb3guY2hlY2tlZDsKKyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGVTZWxlY3QgPSB0aGlz
LmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpOworICAgICAgICByZXBldGl0aW9uVHlwZVNlbGVj
dC5vbmNoYW5nZSA9ICgpID0+IHRoaXMuX3JlcGV0aXRpb25UeXBlID0gcmVwZXRpdGlvblR5cGVT
ZWxlY3QudmFsdWU7CiAgICAgICAgIHRoaXMuY29udGVudCgnZm9ybScpLm9uc3VibWl0ID0gdGhp
cy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4gdGhpcy5zdGFydFRlc3RpbmcoKSk7CiAgICAgfQog
CiAgICAgc3RhcnRUZXN0aW5nKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24o
J3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbm90aWZ5T25Db21w
bGV0aW9uKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhp
cy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9yZXBldGl0aW9uVHlwZSwgdGhpcy5fbm90aWZ5T25D
b21wbGV0aW9uKTsKICAgICB9CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKQEAgLTY1LDcg
KzY4LDExIEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAg
ICAgICAgICAgICAgICA8b3B0aW9uPjk8L29wdGlvbj4KICAgICAgICAgICAgICAgICA8b3B0aW9u
PjEwPC9vcHRpb24+CiAgICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgIGl0ZXJhdGlv
bnMgcGVyIHNldAorICAgICAgICAgICAgPGxhYmVsPml0ZXJhdGlvbnMgcGVyIHNldCBpbjwvbGFi
ZWw+CisgICAgICAgICAgICA8c2VsZWN0IGlkPSJyZXBldGl0aW9uLXR5cGUiPgorICAgICAgICAg
ICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9ImFsdGVybmF0aW5nIj5hbHRlcm5hdGl2ZSAo
QUJBQik8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzZXF1ZW50aWFs
Ij5zZXF1ZW5jZSAoQUFCQik8L29wdGlvbj4KKyAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAg
ICAgICAgPGlucHV0IGlkPSJub3RpZnktb24tY29tcGxldGlvbi1jaGVja2JveCIgdHlwZT0iY2hl
Y2tib3giIGNoZWNrZWQvPk5vdGlmeSBvbiBjb21wbGV0aW9uCiAgICAgICAgIGA7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5h
bHlzaXMtdGFzay5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2FuYWx5c2lzLXRhc2suanMKaW5kZXggMTc3NmE4MTdiYzMxOTk2OTI5NzJhNDBhYTRlZDY4YzFh
OTVjZGVlZS4uNmEwODVjYWNlMmM3NTdlODkzODJkZGZlYTEwNTEwOTczNTlmYWEwZCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMt
dGFzay5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9h
bmFseXNpcy10YXNrLmpzCkBAIC0zMjQsNyArMzI0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrIGV4
dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiByZXN1bHRzOwogICAgIH0KIAot
ICAgIHN0YXRpYyBhc3luYyBjcmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRlc3RH
cm91cE5hbWU9bnVsbCwgcmVwZXRpdGlvbkNvdW50PTAsIG5vdGlmeU9uQ29tcGxldGlvbj1mYWxz
ZSkKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCB0
ZXN0R3JvdXBOYW1lID0gbnVsbCwgcmVwZXRpdGlvbkNvdW50ID0gMCwgcmVwZXRpdGlvblR5cGUg
PSAnYWx0ZXJuYXRpbmcnLCBub3RpZnlPbkNvbXBsZXRpb24gPSBmYWxzZSkKICAgICB7CiAgICAg
ICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7bmFtZSwgc3RhcnRSdW46IHN0YXJ0UG9pbnQuaWQsIGVu
ZFJ1bjogZW5kUG9pbnQuaWR9OwogICAgICAgICBpZiAodGVzdEdyb3VwTmFtZSkgewpAQCAtMzMz
LDYgKzMzMyw3IEBAIGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICAgICAgcGFyYW1ldGVyc1sncmVwZXRpdGlvbkNvdW50J10gPSByZXBldGl0aW9uQ291
bnQ7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzWyd0ZXN0R3JvdXBOYW1lJ10gPSB0ZXN0R3JvdXBO
YW1lOwogICAgICAgICAgICAgcGFyYW1ldGVyc1snbmVlZHNOb3RpZmljYXRpb24nXSA9IG5vdGlm
eU9uQ29tcGxldGlvbjsKKyAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlcGV0aXRpb25UeXBlJ10g
PSByZXBldGl0aW9uVHlwZTsKICAgICAgICAgfQogICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3
YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywgcGFy
YW1ldGVycyk7CiAgICAgICAgIHJldHVybiBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHJlc3BvbnNl
LnRhc2tJZCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcwppbmRleCBmMDk1ZTBkN2FiZTg2YTAy
NjUyMTUxNjEyNzg0ZDIxZDEwM2E1NjE2Li44MjMwMjY2YTY0ZDY0MTA1N2Q5ZmYwYjc0ZmI4YTlj
M2QzMjIzYTdiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKQEAgLTE4LDcgKzE4LDcgQEAgY2xhc3Mg
QnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgdGhpcy5fcGxh
dGZvcm0gPSBvYmplY3QucGxhdGZvcm07CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFvYmplY3Qu
dGVzdCB8fCBvYmplY3QudGVzdCBpbnN0YW5jZW9mIFRlc3QpOwogICAgICAgICB0aGlzLl90ZXN0
ID0gb2JqZWN0LnRlc3Q7Ci0gICAgICAgIHRoaXMuX29yZGVyID0gb2JqZWN0Lm9yZGVyOworICAg
ICAgICB0aGlzLl9vcmRlciA9ICtvYmplY3Qub3JkZXI7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KG9iamVjdC5jb21taXRTZXQgaW5zdGFuY2VvZiBDb21taXRTZXQpOwogICAgICAgICB0aGlzLl9j
b21taXRTZXQgPSBvYmplY3QuY29tbWl0U2V0OwogICAgICAgICB0aGlzLl9zdGF0dXMgPSBvYmpl
Y3Quc3RhdHVzOwpAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBE
YXRhTW9kZWxPYmplY3QgewogCiAgICAgdXBkYXRlU2luZ2xldG9uKG9iamVjdCkKICAgICB7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX29yZGVyID09IG9iamVjdC5vcmRlcik7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCt0aGlzLl9vcmRlciA8PSArb2JqZWN0Lm9yZGVyKTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29tbWl0U2V0ID09IG9iamVjdC5jb21taXRTZXQpOwog
CiAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IG9iamVjdC50ZXN0R3JvdXA7CkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAg
ICAgIHRoaXMuX3N0YXR1c1VybCA9IG9iamVjdC51cmw7CiAgICAgICAgIHRoaXMuX2J1aWxkSWQg
PSBvYmplY3QuYnVpbGQ7CiAgICAgICAgIHRoaXMuX3N0YXR1c0Rlc2NyaXB0aW9uID0gb2JqZWN0
LnN0YXR1c0Rlc2NyaXB0aW9uOworICAgICAgICB0aGlzLl9vcmRlciA9ICtvYmplY3Qub3JkZXI7
CiAgICAgfQogCiAgICAgdHJpZ2dlcmFibGUoKSB7IHJldHVybiB0aGlzLl90cmlnZ2VyYWJsZTsg
fQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
dGVzdC1ncm91cC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L3Rlc3QtZ3JvdXAuanMKaW5kZXggOTdlOGJjOGVlM2NkYTlhNmY2NDE2MjM1MzRlNjdmYjgwMDM5
OTgyYi4uMmUzNDMwYTQ0YWJhODgwMjI2YjVhYmRiYzZmY2ZiY2U5ODU2MTk5ZCAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdy
b3VwLmpzCkBAIC0xMSw3ICsxMSw4IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRP
YmplY3QgewogICAgICAgICB0aGlzLl9pc0hpZGRlbiA9IG9iamVjdC5oaWRkZW47CiAgICAgICAg
IHRoaXMuX25lZWRzTm90aWZpY2F0aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZpY2F0aW9uOwogICAg
ICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzID0gb2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVz
dHM7Ci0gICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSBvYmplY3QuaW5pdGlh
bFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAgdGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9
ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAgdGhpcy5fcmVwZXRpdGlv
blR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5cGU7CiAgICAgICAgIHRoaXMuX2J1aWxkUmVxdWVz
dHMgPSBbXTsKICAgICAgICAgdGhpcy5fb3JkZXJCdWlsZFJlcXVlc3RzTGF6aWx5ID0gbmV3IExh
emlseUV2YWx1YXRlZEZ1bmN0aW9uKCguLi5idWlsZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAg
ICByZXR1cm4gYnVpbGRSZXF1ZXN0cy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyKCkgLSBiLm9yZGVy
KCkpOwpAQCAtMzYsNyArMzcsOCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKICAgICAgICAgdGhpcy5fbmVlZHNOb3RpZmljYXRpb24gPSBvYmplY3QubmVlZHNOb3Rp
ZmljYXRpb247CiAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlbnRBdCA9IG9iamVjdC5ub3Rp
ZmljYXRpb25TZW50QXQgPyBuZXcgRGF0ZShvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0KSA6IG51
bGw7CiAgICAgICAgIHRoaXMuX21heU5lZWRNb3JlUmVxdWVzdHMgPSBvYmplY3QubWF5TmVlZE1v
cmVSZXF1ZXN0czsKLSAgICAgICAgdGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9IG9iamVj
dC5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlv
bkNvdW50ID0gK29iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAgICB0aGlzLl9y
ZXBldGl0aW9uVHlwZSA9IG9iamVjdC5yZXBldGl0aW9uVHlwZTsKICAgICB9CiAKICAgICB0YXNr
KCkgeyByZXR1cm4gQW5hbHlzaXNUYXNrLmZpbmRCeUlkKHRoaXMuX3Rhc2tJZCk7IH0KQEAgLTQ2
LDYgKzQ4LDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAg
bmVlZHNOb3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbjsgfQog
ICAgIG1heU5lZWRNb3JlUmVxdWVzdHMoKSB7IHJldHVybiB0aGlzLl9tYXlOZWVkTW9yZVJlcXVl
c3RzOyB9CiAgICAgaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIHsgcmV0dXJuIHRoaXMuX2luaXRp
YWxSZXBldGl0aW9uQ291bnQ7IH0KKyAgICByZXBldGl0aW9uVHlwZSgpIHsgcmV0dXJuIHRoaXMu
X3JlcGV0aXRpb25UeXBlOyB9CiAgICAgbm90aWZpY2F0aW9uU2VudEF0KCkgeyByZXR1cm4gdGhp
cy5fbm90aWZpY2F0aW9uU2VudEF0OyB9CiAgICAgYXV0aG9yKCkgeyByZXR1cm4gdGhpcy5fYXV0
aG9yTmFtZTsgfQogICAgIGFkZEJ1aWxkUmVxdWVzdChyZXF1ZXN0KQpAQCAtNzIsMjAgKzc1LDE5
IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogCiAgICAgX2xhc3RS
ZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5fb3JkZXJlZEJ1
aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLm9yZGVyZWRCdWls
ZFJlcXVlc3RzKCk7CiAgICAgICAgIHJldHVybiByZXF1ZXN0cy5sZW5ndGggPyByZXF1ZXN0c1ty
ZXF1ZXN0cy5sZW5ndGggLSAxXSA6IG51bGw7CiAgICAgfQogCi0gICAgX29yZGVyZWRCdWlsZFJl
cXVlc3RzKCkKKyAgICBvcmRlcmVkQnVpbGRSZXF1ZXN0cygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fb3JkZXJCdWlsZFJlcXVlc3RzTGF6aWx5LmV2YWx1YXRlKC4uLnRoaXMuX2J1aWxk
UmVxdWVzdHMpOwogICAgIH0KIAotICAgIHJlcGV0aXRpb25Db3VudCgpCisgICAgcmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
YnVpbGRSZXF1ZXN0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY29u
c3QgY29tbWl0U2V0ID0gdGhpcy5fYnVpbGRSZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKICAgICAg
ICAgbGV0IGNvdW50ID0gMDsKICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHRoaXMuX2J1
aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVl
c3QuY29tbWl0U2V0KCkgPT0gY29tbWl0U2V0KQpAQCAtOTQsMTUgKzk2LDExNCBAQCBjbGFzcyBU
ZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGNvdW50Owog
ICAgIH0KIAorICAgIGhhc1JldHJpZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVx
dWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+IHRoaXMucmVwZXRpdGlvbkNvdW50
Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7
CisgICAgfQorCisgICAgd2lsbEV4Y2VlZE1heFJldHJ5Rm9yQ29tbWl0U2V0V2l0aFJldHJ5Q291
bnQoY29tbWl0U2V0LCByZXRyeUNvdW50LCBtYXhSZXRyeUZhY3RvcikKKyAgICB7CisgICAgICAg
IHJldHVybiBtYXhSZXRyeUZhY3RvciAqIHRoaXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIDwg
cmV0cnlDb3VudCArIHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCk7
CisgICAgfQorCisgICAgcmV0cnlUb0FkZEZvckNvbW1pdFNldChjb21taXRTZXQpCisgICAgewor
ICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9IHRoaXMucmVxdWVzdHNG
b3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoCisgICAgICAgICAgICAocmVxdWVzdCkgPT4g
cmVxdWVzdC5pc1Rlc3QoKSAmJiAocmVxdWVzdC5oYXNDb21wbGV0ZWQoKSB8fCAhcmVxdWVzdC5o
YXNGaW5pc2hlZCgpKSkubGVuZ3RoOworICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGhpcy5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCk7Cisg
ICAgfQorCisgICAgc2NoZWR1bGVkUmV0cnlDb3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29t
bWl0U2V0KSAtIHRoaXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpOworICAgIH0KKworICAgIHNj
aGVkdWxlZFJldHJ5Q291bnRzQXJlSWRlbnRpY2FsKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHJl
dHJ5Q291bnRGb3JGaXJzdENvbW1pdFNldCA9IHRoaXMuc2NoZWR1bGVkUmV0cnlDb3VudEZvckNv
bW1pdFNldCh0aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXSk7CisgICAgICAgIHJldHVybiB0
aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKS5ldmVyeShjb21taXRTZXQgPT4gdGhpcy5zY2hlZHVs
ZWRSZXRyeUNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPT0gcmV0cnlDb3VudEZvckZpcnN0
Q29tbWl0U2V0KTsKKyAgICB9CisKKyAgICBhc3luYyBzY2hlZHVsZVJldHJpZXNJZk5lY2Vzc2Fy
eShtYXhSZXRyeUZhY3RvcikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5tYXlOZWVkTW9yZVJl
cXVlc3RzKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBpZiAodGhpcy5pc0hp
ZGRlbigpKSB7CisgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJl
cXVlc3RzKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBjb25z
b2xlLmFzc2VydChbJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnXS5pbmNsdWRlcyh0aGlzLnJl
cGV0aXRpb25UeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVwZXRpdGlvblR5cGUoKSA9
PSAnYWx0ZXJuYXRpbmcnID8gdGhpcy5fY3JlYXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdy
b3VwKG1heFJldHJ5RmFjdG9yKQorICAgICAgICAgICAgOiB0aGlzLl9jcmVhdGVTZXF1ZW50aWFs
UmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3Rvcik7CisgICAgfQorCisgICAgYXN5bmMg
X2NyZWF0ZUFsdGVybmF0aW5nUmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAg
ICB7CisgICAgICAgIGxldCBtYXhSZXRyeUNvdW50ID0gMDsKKyAgICAgICAgbGV0IGhhc0NvbXBs
ZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSB0cnVlOworICAgICAgICBsZXQgaGFz
VW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1p
dFNldCBvZiB0aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKSkgeworICAgICAgICAgICAgY29uc3Qg
YnVpbGRSZXF1ZXN0cyA9IHRoaXMucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0
ZXIoKHJlcXVlc3QpID0+IHJlcXVlc3QuaXNUZXN0KCkpOworCisgICAgICAgICAgICBoYXNDb21w
bGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gaGFzQ29tcGxldGVkQnVpbGRSZXF1
ZXN0Rm9yRWFjaENvbW1pdFNldCAmJiAhIWJ1aWxkUmVxdWVzdHMuZmlsdGVyKChyZXF1ZXN0KSA9
PiByZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7CisgICAgICAgICAgICBoYXNVbmZpbmlz
aGVkQnVpbGRSZXF1ZXN0ID0gaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCB8fCAhIWJ1aWxkUmVx
dWVzdHMuZmlsdGVyKChyZXF1ZXN0KSA9PiAhcmVxdWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7
CisKKyAgICAgICAgICAgIG1heFJldHJ5Q291bnQgPSBNYXRoLm1heChtYXhSZXRyeUNvdW50LCB0
aGlzLnJldHJ5VG9BZGRGb3JDb21taXRTZXQoY29tbWl0U2V0KSk7CisgICAgICAgIH0KKyAgICAg
ICAgY29uc3Qgd2lsbEV4Y2VlZE1heFJldHJ5ID0gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCku
c29tZShjb21taXRTZXQgPT4KKyAgICAgICAgICAgIHRoaXMud2lsbEV4Y2VlZE1heFJldHJ5Rm9y
Q29tbWl0U2V0V2l0aFJldHJ5Q291bnQoY29tbWl0U2V0LCBtYXhSZXRyeUNvdW50LCBtYXhSZXRy
eUZhY3RvcikpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1heFJldHJ5Q291bnQgPD0gdGhp
cy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOworICAgICAgICBpZiAobWF4UmV0cnlDb3VudCAm
JiAhd2lsbEV4Y2VlZE1heFJldHJ5ICYmIGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgJiYgIWhh
c0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpCisgICAgICAgICAgICByZXR1
cm4gMDsKKworICAgICAgICBpZiAobWF4UmV0cnlDb3VudCAmJiAhd2lsbEV4Y2VlZE1heFJldHJ5
ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpCisgICAgICAgICAg
ICBhd2FpdCB0aGlzLmFkZE1vcmVCdWlsZFJlcXVlc3RzKG1heFJldHJ5Q291bnQpOworICAgICAg
ICBhd2FpdCB0aGlzLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIHJl
dHVybiBtYXhSZXRyeUNvdW50OworICAgIH0KKworICAgIGFzeW5jIF9jcmVhdGVTZXF1ZW50aWFs
UmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAgICB7CisgICAgICAgIGNvbnN0
IGxhc3RJdGVtID0gKGFycmF5KSA9PiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsKKyAgICAgICAg
Y29uc3QgY29tbWl0U2V0cyA9IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpOworICAgICAgICBj
b25zb2xlLmFzc2VydChjb21taXRTZXRzLmV2ZXJ5KChjdXJyZW50U2V0LCBpbmRleCwgc2V0TGlz
dCkgPT4KKyAgICAgICAgICAgICFpbmRleCB8fCBsYXN0SXRlbSh0aGlzLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KHNldExpc3RbaW5kZXggLSAxXSkpLm9yZGVyKCkgPCB0aGlzLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KGN1cnJlbnRTZXQpWzBdLm9yZGVyKCkpKTsKKworICAgICAgICBjb25zdCBmYWlsZWRB
bGxGb3JPbmVDb21taXRTZXQgPSBjb21taXRTZXRzLnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAg
ICAgICB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKHJlcXVlc3Qg
PT4gcmVxdWVzdC5pc1Rlc3QoKSkuZXZlcnkocmVxdWVzdCA9PiByZXF1ZXN0Lmhhc0ZhaWxlZCgp
KSk7CisKKyAgICAgICAgaWYgKGZhaWxlZEFsbEZvck9uZUNvbW1pdFNldCkgeworICAgICAgICAg
ICAgYXdhaXQgdGhpcy5jYW5jZWxQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXRXaXRoUmV0cnlB
bGxvd2VkID0gY29tbWl0U2V0cy5maW5kKGNvbW1pdFNldCA9PiB7CisgICAgICAgICAgICBjb25z
dCBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA9IHRoaXMucmVxdWVzdHNGb3JDb21taXRTZXQo
Y29tbWl0U2V0KS5maWx0ZXIoKHJlcXVlc3QpID0+CisgICAgICAgICAgICAgICAgcmVxdWVzdC5p
c1Rlc3QoKSAmJiByZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7CisgICAgICAgICAgICBp
ZiAoY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPj0gdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29uc3Qg
cmV0cnlDb3VudCA9IHRoaXMucmV0cnlUb0FkZEZvckNvbW1pdFNldChjb21taXRTZXQpOworICAg
ICAgICAgICAgcmV0dXJuICF0aGlzLndpbGxFeGNlZWRNYXhSZXRyeUZvckNvbW1pdFNldFdpdGhS
ZXRyeUNvdW50KGNvbW1pdFNldCwgcmV0cnlDb3VudCwgbWF4UmV0cnlGYWN0b3IpOworICAgICAg
ICB9KTsKKworICAgICAgICBpZiAoZmlyc3RDb21taXRTZXRXaXRoUmV0cnlBbGxvd2VkICYmIHRo
aXMucmV0cnlUb0FkZEZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldFdpdGhSZXRyeUFsbG93ZWQp
KSB7CisgICAgICAgICAgICBjb25zdCByZXRyeUNvdW50ID0gdGhpcy5yZXRyeVRvQWRkRm9yQ29t
bWl0U2V0KGZpcnN0Q29tbWl0U2V0V2l0aFJldHJ5QWxsb3dlZCk7CisgICAgICAgICAgICBhd2Fp
dCB0aGlzLmFkZE1vcmVCdWlsZFJlcXVlc3RzKHJldHJ5Q291bnQsIGZpcnN0Q29tbWl0U2V0V2l0
aFJldHJ5QWxsb3dlZC5pZCgpKTsKKyAgICAgICAgfQorICAgICAgICBhd2FpdCB0aGlzLmNsZWFy
TWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIHJldHVybiByZXRyeUNvdW50Owor
ICAgIH0KKwogICAgIHJlcXVlc3RlZENvbW1pdFNldHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzTGF6aWx5LmV2YWx1YXRlKC4uLnRoaXMu
X29yZGVyZWRCdWlsZFJlcXVlc3RzKCkpOworICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZVJl
cXVlc3RlZENvbW1pdFNldHNMYXppbHkuZXZhbHVhdGUoLi4udGhpcy5vcmRlcmVkQnVpbGRSZXF1
ZXN0cygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRz
KC4uLm9yZGVyZWRCdWlsZFJlcXVlc3RzKQogICAgIHsKICAgICAgICAgY29uc3QgcmVxdWVzdGVk
Q29tbWl0U2V0cyA9IFtdOwotICAgICAgICBjb25zdCBjb21taXRTZXRMYWJlbE1hcCA9IG5ldyBN
YXA7CiAgICAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiBvcmRlcmVkQnVpbGRSZXF1ZXN0cykg
ewogICAgICAgICAgICAgY29uc3Qgc2V0ID0gcmVxdWVzdC5jb21taXRTZXQoKTsKICAgICAgICAg
ICAgIGlmICghcmVxdWVzdGVkQ29tbWl0U2V0cy5pbmNsdWRlcyhzZXQpKQpAQCAtMTEzLDcgKzIx
NCw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogCiAgICAgcmVx
dWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X29yZGVyZWRCdWlsZFJlcXVlc3RzKCkuZmlsdGVyKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmNvbW1p
dFNldCgpID09IGNvbW1pdFNldCk7CisgICAgICAgIHJldHVybiB0aGlzLm9yZGVyZWRCdWlsZFJl
cXVlc3RzKCkuZmlsdGVyKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmNvbW1pdFNldCgpID09IGNvbW1p
dFNldCk7CiAgICAgfQogCiAgICAgbGFiZWxGb3JDb21taXRTZXQoY29tbWl0U2V0KQpAQCAtMjE5
LDYgKzMyMCwxNCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAg
ICAgICAgfSk7CiAgICAgfQogCisgICAgYXN5bmMgY2FuY2VsUGVuZGluZ1JlcXVlc3RzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAg
ICAgICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKKyAgICAgICAgICAgIGNhbmNlbDogdHJ1ZSwKKyAg
ICAgICAgfSk7CisgICAgfQorCiAgICAgYXN5bmMgZGlkU2VuZE5vdGlmaWNhdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKQEAgLTIy
OCwxMSArMzM3LDEzIEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRD
b3VudCkKKyAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRDb3VudCwgY29tbWl0U2V0
ID0gbnVsbCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb21taXRTZXQgfHwgdGhp
cy5yZXBldGl0aW9uVHlwZSgpID09ICdzZXF1ZW50aWFsJyk7CiAgICAgICAgIHJldHVybiBhd2Fp
dCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoewogICAgICAgICAgICAgZ3JvdXA6IHRoaXMuaWQo
KSwKICAgICAgICAgICAgIGFkZENvdW50LAorICAgICAgICAgICAgY29tbWl0U2V0LAogICAgICAg
ICB9LCAnYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CiAgICAgfQogCkBAIC0yNDQsMzkgKzM1NSwzOSBA
QCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVz
dCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxl
dGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3Jt
LCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1p
dFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBD
b21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAgICAg
IGNvbnN0IHBhcmFtcyA9IHt0YXNrTmFtZSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxh
dGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291bnQsIHJldmlzaW9uU2V0
cywgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9ufTsKLSAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1z
KS50aGVuKChkYXRhKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gQW5hbHlzaXNUYXNrLmZldGNo
QnlJZChkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7Ci0gICAgICAgIH0pLnRoZW4oKHRhc2spID0+IHsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoRm9yVGFzayh0YXNrLmlkKCkpLnRoZW4oKCkg
PT4gdGFzayk7Ci0gICAgICAgIH0pOworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0
YXNrTmFtZSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDog
dGVzdC5pZCgpLCByZXBldGl0aW9uQ291bnQsIHJldmlzaW9uU2V0cywKKyAgICAgICAgICAgIHJl
cGV0aXRpb25UeXBlLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259KTsK
KyAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsn
dGFza0lkJ10sIHRydWUpOworICAgICAgICBhd2FpdCB0aGlzLmZldGNoRm9yVGFzayh0YXNrLmlk
KCkpOworICAgICAgICByZXR1cm4gdGFzazsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0
aEN1c3RvbUNvbmZpZ3VyYXRpb24odGFzaywgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGlj
IGFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRhc2ssIHBsYXRmb3JtLCB0ZXN0
LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMs
IG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1p
dFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBDb21taXRT
ZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAgICAgIGNvbnN0
IHBhcmFtcyA9IHt0YXNrOiB0YXNrLmlkKCksIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBs
YXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNl
dHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJl
dHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFt
cykudGhlbigoZGF0YSkgPT4gewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNr
KGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IGRhdGEg
PSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsK
KyAgICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTog
cGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291bnQsCisgICAgICAg
ICAgICByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlLCBuZWVkc05vdGlmaWNhdGlvbjogISFu
b3RpZnlPbkNvbXBsZXRpb259KTsKKyAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEJ5SWQoZGF0YVsn
dGVzdEdyb3VwSWQnXSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGxCeVRhc2so
ZGF0YVsndGFza0lkJ10pOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVBbmRSZWZldGNoVGVz
dEdyb3Vwcyh0YXNrLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9u
Q29tcGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHMo
dGFzaywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywg
bm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0
U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IENvbW1pdFNl
dC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAgICAgcmV0dXJu
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgewotICAgICAg
ICAgICAgdGFzazogdGFzay5pZCgpLAotICAgICAgICAgICAgbmFtZTogbmFtZSwKLSAgICAgICAg
ICAgIHJlcGV0aXRpb25Db3VudDogcmVwZXRpdGlvbkNvdW50LAotICAgICAgICAgICAgcmV2aXNp
b25TZXRzOiByZXZpc2lvblNldHMsCi0gICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogISFu
b3RpZnlPbkNvbXBsZXRpb24sCi0gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHRoaXMuZmV0Y2hG
b3JUYXNrKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKSk7CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2Fp
dCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAg
ICAgICAgIHRhc2s6IHRhc2suaWQoKSwgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNl
dHMsIHJlcGV0aXRpb25UeXBlLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90
aWZ5T25Db21wbGV0aW9uCisgICAgICAgIH0pOworICAgICAgICBhd2FpdCB0aGlzLmZldGNoQnlJ
ZChkYXRhWyd0ZXN0R3JvdXBJZCddLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFs
bEJ5VGFzayhkYXRhWyd0YXNrSWQnXSk7CiAgICAgfQogCiAgICAgc3RhdGljIGZpbmRBbGxCeVRh
c2sodGFza0lkKQpAQCAtMjg0LDYgKzM5NSwxMyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBM
YWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5hbGwoKS5maWx0ZXIoKHRl
c3RHcm91cCkgPT4gdGVzdEdyb3VwLl90YXNrSWQgPT0gdGFza0lkKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgYXN5bmMgZmV0Y2hCeUlkKHRlc3RHcm91cElkLCBpZ25vcmVDYWNoZSA9IGZhbHNlKQor
ICAgIHsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkv
dGVzdC1ncm91cHMvJHt0ZXN0R3JvdXBJZH1gLCB7fSwgaWdub3JlQ2FjaGUpOworICAgICAgICB0
aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIHJl
dHVybiB0aGlzLmZpbmRCeUlkKHRlc3RHcm91cElkKTsKKyAgICB9CisKICAgICBzdGF0aWMgZmV0
Y2hGb3JUYXNrKHRhc2tJZCwgaWdub3JlQ2FjaGUgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLmNhY2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRhc2tJZH0s
IGlnbm9yZUNhY2hlKS50aGVuKHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vw
cy5iaW5kKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggM2Y0ZmVmZmYy
N2E0MzgzNjQzMDViYmI4M2Q3YjE2YjMyNDA1ZWM3MS4uYzI3MWZlYTQ3NTBiMjU4YmM1OGRjZmRj
NzlhM2MwY2UyNzRhZGFmZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAgLTI0LDgg
KzI0LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFz
ZSB7CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7Ci0gICAgICAgIHRoaXMu
cGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNv
dW50LCBuYW1lLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewotICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlv
bkNvdW50LCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgIHRoaXMu
cGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAobmFtZSwgcmVwZXRp
dGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRp
b24pID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcs
IG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90
aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMDYsOCArMTA2LDgg
QEAgY2xhc3MgQW5hbHlzaXNUYXNrUmVzdWx0c1BhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsK
ICAgICAgICAgcmVwb3NpdG9yeVBpY2tlci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9
PiB0aGlzLmVucXVldWVUb1JlbmRlcigpKTsKICAgICAgICAgdGhpcy5wYXJ0KCdjb21taXQtdmll
d2VyJykuc2V0U2hvd1JlcG9zaXRvcnlOYW1lKGZhbHNlKTsKIAotICAgICAgICB0aGlzLnBhcnQo
J2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwg
bmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQo
J2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKG5hbWUsIHJlcGV0aXRpb25D
b3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKSA9
PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1l
LCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRNYXAsIG5vdGlmeU9u
Q29tcGxldGlvbik7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIGNs
YXNzIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsK
ICAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwID0gY3VycmVudEdyb3VwOwogICAgICAgICBjb25z
dCBmb3JtID0gdGhpcy5wYXJ0KCdmb3JtJyk7CiAgICAgICAgIGlmICghZm9ybS5oYXNDb21taXRT
ZXRzKCkgJiYgY3VycmVudEdyb3VwKQotICAgICAgICAgICAgZm9ybS5zZXRDb25maWd1cmF0aW9u
cyhjdXJyZW50R3JvdXAudGVzdCgpLCBjdXJyZW50R3JvdXAucGxhdGZvcm0oKSwgY3VycmVudEdy
b3VwLnJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
KTsKKyAgICAgICAgICAgIGZvcm0uc2V0Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3Qo
KSwgY3VycmVudEdyb3VwLnBsYXRmb3JtKCksIGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCksIGN1cnJlbnRHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpOwogICAgICAgICB0
aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNz
IEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAg
ICAgICAgICAgIH0KICAgICAgICAgYDsKICAgICB9Ci19OworfQogCiBDb21wb25lbnRCYXNlLmRl
ZmluZUVsZW1lbnQoJ2FuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXBhbmUnLCBBbmFseXNpc1Rh
c2tDb25maWd1cmF0b3JQYW5lKTsKIApAQCAtMjY3LDE0ICsyNjcsMTQgQEAgY2xhc3MgQW5hbHlz
aXNUYXNrVGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgIGRpZENvbnN0
cnVjdFNoYWRvd1RyZWUoKQogICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50KCdoaWRlLWJ1dHRv
bicpLm9uY2xpY2sgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd0b2dnbGVUZXN0R3JvdXBW
aXNpYmlsaXR5JywgdGhpcy5fY3VycmVudFRlc3RHcm91cCk7Ci0gICAgICAgIHRoaXMucGFydCgn
cmV0cnktZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNv
dW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRpdGlv
bkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZv
cm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgcmVw
ZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4geworICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEFjdGlvbigncmV0cnlUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCBy
ZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pOwogICAg
ICAgICB9KTsKLSAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScpLmxpc3RlblRvQWN0aW9u
KCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+
IHsKKyAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFy
dFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21w
bGV0aW9uKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBiaXNlY3RpbmdDb21taXRTZXQgPSB0aGlz
Ll9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQodGhpcy5fY3VycmVudFRlc3RHcm91
cCk7CiAgICAgICAgICAgICBjb25zdCBbb25lQ29tbWl0U2V0LCBhbm90aGVyQ29tbWl0U2V0XSA9
IHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpOwogICAgICAgICAg
ICAgY29uc3QgY29tbWl0U2V0cyA9IFtvbmVDb21taXRTZXQsIGJpc2VjdGluZ0NvbW1pdFNldCwg
YW5vdGhlckNvbW1pdFNldF07Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdiaXNl
Y3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
QWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCBjb21taXRT
ZXRzLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24p
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM2NSwyOCArMzY1LDY1IEBAIGNsYXNzIEFuYWx5
c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY29u
c3Qgc2VsZWN0ZWQgPSB0aGlzLmNvbnRlbnQoJ3Rlc3QtZ3JvdXAtbGlzdCcpLnF1ZXJ5U2VsZWN0
b3IoJy5zZWxlY3RlZCcpOwogICAgICAgICBpZiAoc2VsZWN0ZWQpCiAgICAgICAgICAgICBzZWxl
Y3RlZC5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpOwotICAgICAgICBpZiAoY3VycmVudEdy
b3VwKQotICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3JvdXApLmxp
c3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CisKKyAgICAgICAgY29uc3QgcmV0cnlG
b3JtID0gdGhpcy5jb250ZW50KCdyZXRyeS1mb3JtJyk7CisgICAgICAgIGNvbnN0IGJpc2VjdEZv
cm0gPSB0aGlzLmNvbnRlbnQoJ2Jpc2VjdC1mb3JtJyk7CisgICAgICAgIGxldCByZXRyeVN1bW1h
cnkgPSBudWxsOworICAgICAgICBsZXQgcmVxdWVzdFN1bW1hcnkgPSBudWxsOworICAgICAgICBs
ZXQgaGlkZUJ1dHRvbiA9IG51bGw7CisgICAgICAgIGxldCBwZW5kaW5nUmVxdWVzdENhbmNlbFdh
cm5pbmcgPSBudWxsOwogCiAgICAgICAgIGlmIChjdXJyZW50R3JvdXApIHsKKyAgICAgICAgICAg
IHRoaXMuX3Rlc3RHcm91cE1hcC5nZXQoY3VycmVudEdyb3VwKS5saXN0SXRlbS5jbGFzc0xpc3Qu
YWRkKCdzZWxlY3RlZCcpOwogICAgICAgICAgICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykuc2V0
UmVwZXRpdGlvbkNvdW50KGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwog
ICAgICAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScpLnNldFJlcGV0aXRpb25Db3VudChj
dXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKLSAgICAgICAgICAgIGNvbnN0
IHN0YXR1c1N1bW1hcnkgPSBgJHtjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
fSByZXF1ZXN0ZWQsICR7Y3VycmVudEdyb3VwLnJlcGV0aXRpb25Db3VudCgpIC0gY3VycmVudEdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7Ci0g
ICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3N0YXR1cy1zdW1tYXJ5JykuaW5uZXJIVE1MID0gc3Rh
dHVzU3VtbWFyeTsKIAotICAgICAgICAgICAgY29uc3QgYXV0aG9yZWRCeSA9IGN1cnJlbnRHcm91
cC5hdXRob3IoKSA/IGBieSAiJHtjdXJyZW50R3JvdXAuYXV0aG9yKCl9ImAgOiAnJzsKLSAgICAg
ICAgICAgIHRoaXMuY29udGVudCgncmVxdWVzdC1zdW1tYXJ5JykuaW5uZXJIVE1MID0gYFNjaGVk
dWxlZCAke2F1dGhvcmVkQnl9IGF0ICR7Y3VycmVudEdyb3VwLmNyZWF0ZWRBdCgpfWAKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50R3JvdXAuaGFzUmV0cmllcygpKSB7CisgICAgICAgICAgICAgICAg
cmV0cnlTdW1tYXJ5ID0gdGhpcy5jb250ZW50KCdyZXRyeS1zdW1tYXJ5Jyk7CisgICAgICAgICAg
ICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncmV0cnktc3VtbWFyeScpLCB0
aGlzLl9yZXRyeVN1bW1hcnkoY3VycmVudEdyb3VwKSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGNvbnN0IGF1dGhvcmVkQnkgPSBjdXJyZW50R3JvdXAuYXV0aG9yKCkgPyBgYnkgIiR7
Y3VycmVudEdyb3VwLmF1dGhvcigpfSIgYCA6ICcnOworICAgICAgICAgICAgcmVxdWVzdFN1bW1h
cnkgPSB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFyeScpOworICAgICAgICAgICAgdGhpcy5y
ZW5kZXJSZXBsYWNlKHJlcXVlc3RTdW1tYXJ5LCBgU2NoZWR1bGVkICR7YXV0aG9yZWRCeX0gYXQg
JHtjdXJyZW50R3JvdXAuY3JlYXRlZEF0KCl9YCkKKworICAgICAgICAgICAgaGlkZUJ1dHRvbiA9
IHRoaXMuY29udGVudCgnaGlkZS1idXR0b24nKTsKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVw
bGFjZShoaWRlQnV0dG9uLCBjdXJyZW50R3JvdXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hp
ZGUnKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkpIHsKKyAg
ICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdENhbmNlbFdhcm5pbmcgPSB0aGlzLmNvbnRlbnQo
J3BlbmRpbmctcmVxdWVzdC1jYW5jZWwtd2FybmluZycpOworICAgICAgICAgICAgICAgIHRoaXMu
cmVuZGVyUmVwbGFjZShwZW5kaW5nUmVxdWVzdENhbmNlbFdhcm5pbmcsICcoY2FuY2VscyBwZW5k
aW5nIHJlcXVlc3RzKScpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRoaXMu
Y29udGVudCgncmV0cnktZm9ybScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxs
IDogJ25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQoJ2Jpc2VjdC1mb3JtJykuc3R5bGUuZGlz
cGxheSA9IGN1cnJlbnRHcm91cCAmJiB0aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91
cC5nZXQoY3VycmVudEdyb3VwKSA/IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVu
dCgnc3RhdHVzLXN1bW1hcnknKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwICYmIGN1cnJl
bnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSA+IGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCkgPyBudWxsIDogJ25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qt
c3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOwog
Ci0gICAgICAgIGNvbnN0IGhpZGVCdXR0b24gPSB0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJyk7
Ci0gICAgICAgIGhpZGVCdXR0b24udGV4dENvbnRlbnQgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVu
dEdyb3VwLmlzSGlkZGVuKCkgPyAnVW5oaWRlJyA6ICdIaWRlJzsKLSAgICAgICAgaGlkZUJ1dHRv
bi5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAg
cmV0cnlGb3JtLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOwor
ICAgICAgICBiaXNlY3RGb3JtLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgdGhpcy5f
YmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAuZ2V0KGN1cnJlbnRHcm91cCkgPyBudWxsIDog
J25vbmUnOworICAgIH0KKworICAgIF9yZXRyeVN1bW1hcnkodGVzdEdyb3VwKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0ZXN0R3JvdXAuaGFzUmV0cmllcygpKQorICAgICAgICAgICAgcmV0dXJuICcn
OwogCi0gICAgICAgIHRoaXMuY29udGVudCgncGVuZGluZy1yZXF1ZXN0LWNhbmNlbC13YXJuaW5n
Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiBjdXJyZW50R3JvdXAuaGFzUGVuZGlu
ZygpID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAgY29uc3QgcmV0cnlDb3VudEJ5TGFiZWwgPSBu
ZXcgTWFwOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpKSB7CisgICAgICAgICAgICByZXRyeUNvdW50QnlMYWJlbC5zZXQodGVz
dEdyb3VwLmxhYmVsRm9yQ29tbWl0U2V0KGNvbW1pdFNldCksCisgICAgICAgICAgICAgICAgdGVz
dEdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpIC0gdGVzdEdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGVz
dEdyb3VwLnNjaGVkdWxlZFJldHJ5Q291bnRzQXJlSWRlbnRpY2FsKCkpCisgICAgICAgICAgICBy
ZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVxdWVzdGVkLCAk
e3JldHJ5Q291bnRCeUxhYmVsLmdldCgnQScpfSBhZGRlZCBkdWUgdG8gZmFpbHVyZXMuYDsKKwor
ICAgICAgICBjb25zdCByZXRyeVN1bW1hcnlQYXJ0cyA9IFtdOworICAgICAgICBmb3IgKGNvbnN0
IFtsYWJlbCwgY291bnRdIG9mIHJldHJ5Q291bnRCeUxhYmVsLmVudHJpZXMoKSkgeworICAgICAg
ICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IHJldHJ5U3VtbWFyeVBhcnRzLnB1c2goYCR7Y291bnR9IGFkZGVkIHRvICR7bGFiZWx9IGNvbmZp
Z3VyYXRpb25gKTsKKyAgICAgICAgfQorICAgICAgICBjb25zdCByZXRyeVN1bW1hcnkgPSByZXRy
eVN1bW1hcnlQYXJ0cy5sZW5ndGggPT09IDEgPyByZXRyeVN1bW1hcnlQYXJ0c1swXSA6CisgICAg
ICAgICAgICBgJHtyZXRyeVN1bW1hcnlQYXJ0cy5zbGljZSgwLCAtMSkuam9pbignLCAnKX0gYW5k
ICR7cmV0cnlTdW1tYXJ5UGFydHNbcmV0cnlTdW1tYXJ5UGFydHMubGVuZ3RoIC0gMV19YDsKKwor
ICAgICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVx
dWVzdGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAgICAg
c3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC0zOTYsNyArNDMzLDcgQEAgY2xhc3MgQW5hbHlzaXNU
YXNrVGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPGRp
diBpZD0idGVzdC1ncm91cC1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1y
ZXN1bHRzLXZpZXdlciBpZD0icmVzdWx0cy12aWV3ZXIiPjwvdGVzdC1ncm91cC1yZXN1bHRzLXZp
ZXdlcj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZSBpZD0icmV2
aXNpb24tdGFibGUiPjwvdGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZT4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJzdGF0dXMtc3VtbWFyeSIgY2xhc3M9InN1bW1hcnkiPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9InJldHJ5LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5Ij48L2Rpdj4K
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyZXF1ZXN0LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5
Ij48L2Rpdj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1mb3JtIGlkPSJyZXRyeS1mb3Jt
Ij5SZXRyeTwvdGVzdC1ncm91cC1mb3JtPgogICAgICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLWZv
cm0gaWQ9ImJpc2VjdC1mb3JtIj5CaXNlY3Q8L3Rlc3QtZ3JvdXAtZm9ybT4KQEAgLTU1Niw4ICs1
OTMsOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsK
ICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdzaG93SGlkZGVuVGVzdEdyb3Vwcycs
ICgpID0+IHRoaXMuX3Nob3dBbGxUZXN0R3JvdXBzKCkpOwogICAgICAgICBncm91cFBhbmUubGlz
dGVuVG9BY3Rpb24oJ3JlbmFtZVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIG5ld05hbWUpID0+IHRo
aXMuX3VwZGF0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwLCBuZXdOYW1lKSk7CiAgICAgICAgIGdy
b3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsICh0ZXN0
R3JvdXApID0+IHRoaXMuX2hpZGVDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCkpOwotICAgICAg
ICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwg
cmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX3JldHJ5Q3VycmVu
dFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9u
KSk7Ci0gICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3VwJywg
KHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRp
b24pID0+IHRoaXMuX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRz
LCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOworICAgICAgICBncm91cFBh
bmUubGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwgcmVwZXRpdGlv
bkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRy
eUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25U
eXBlLCBub3RpZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0
aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9u
Q291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX2Jpc2Vj
dEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQs
IHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pKTsKIAogICAgICAgICB0aGlzLnBh
cnQoJ2NhdXNlLWxpc3QnKS5saXN0ZW5Ub0FjdGlvbignYWRkSXRlbScsIChyZXBvc2l0b3J5LCBy
ZXZpc2lvbikgPT4gewogICAgICAgICAgICAgdGhpcy5fYXNzb2NpYXRlQ29tbWl0KCdjYXVzZScs
IHJlcG9zaXRvcnksIHJldmlzaW9uKTsKQEAgLTgzMiwxOSArODY5LDIyIEBAIGNsYXNzIEFuYWx5
c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9KTsKICAgICB9
CiAKLSAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50
LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0
ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxl
dGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSAodGhpcy5fdGVzdEdy
b3VwcyB8fCBbXSkubWFwKChncm91cCkgPT4gZ3JvdXAubmFtZSgpKTsKICAgICAgICAgY29uc3Qg
bmV3TmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbih0ZXN0R3JvdXAu
bmFtZSgpLCBuZXcgU2V0KGV4aXN0aW5nTmFtZXMpKTsKICAgICAgICAgY29uc3QgY29tbWl0U2V0
TGlzdCA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAgIGNvbnN0IHBs
YXRmb3JtID0gdGhpcy5fdGFzay5wbGF0Zm9ybSgpIHx8IHRlc3RHcm91cC5wbGF0Zm9ybSgpOwot
ICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRo
aXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBuZXdOYW1lLCByZXBldGl0aW9u
Q291bnQsIGNvbW1pdFNldExpc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50
aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3Ip
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBU
ZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZv
cm0sIHRlc3RHcm91cC50ZXN0KCksIG5ld05hbWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlv
bkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25Db21wbGV0aW9u
KTsKKyAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoQW5hbHlzaXNSZXN1bHRzKHRlc3RHcm91cHMp
OworICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0
byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhc3luYyBfYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3Jv
dXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKQorICAg
IGFzeW5jIF9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVw
ZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGVzdEdyb3VwLnRhc2soKSk7CiAgICAgICAgIGNvbnN0
IGV4aXN0aW5nVGVzdEdyb3VwTmFtZXMgPSBuZXcgU2V0KCh0aGlzLl90ZXN0R3JvdXBzIHx8IFtd
KS5tYXAoKHRlc3RHcm91cCkgPT4gdGVzdEdyb3VwLm5hbWUoKSkpOwpAQCAtODU0LDcgKzg5NCw4
IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAg
ICAgICAgICAgY29uc3QgY3VycmVudENvbW1pdFNldCA9IGNvbW1pdFNldHNbaV07CiAgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVXaXRob3V0Q29s
bGlzaW9uKENvbW1pdFNldC5kaWZmKHByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0
KSwgZXhpc3RpbmdUZXN0R3JvdXBOYW1lcyk7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRj
aFRlc3RHcm91cHModGVzdEdyb3VwLnRhc2soKSwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNv
dW50LCBbcHJldmlvdXNDb21taXRTZXQsIGN1cnJlbnRDb21taXRTZXRdLCBub3RpZnlPbkNvbXBs
ZXRpb24pOworICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3Jv
dXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGVzdEdyb3VwLnRhc2soKSwgdGVzdEdyb3Vw
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlw
ZSwgW3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0
aW9uKTsKICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHModGVz
dEdyb3Vwcyk7CiAgICAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAgICAgICAgICAgICAg
YWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKQEAg
LTg2Myw3ICs5MDQsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhI
ZWFkaW5nIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZl
cmlmeWluZ0NvbW1pdFNldExpc3QodGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21t
aXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfY3JlYXRlVGVzdEdyb3Vw
QWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3Vw
TmFtZSkpIHsKICAgICAgICAgICAgIGFsZXJ0KGBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBncm91
cCBuYW1lZCAiJHt0ZXN0R3JvdXBOYW1lfSJgKTsKQEAgLTg4OSwxMyArOTMwLDE1IEBAIGNsYXNz
IEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICBmb3Ig
KGxldCBsYWJlbCBpbiBjb21taXRTZXRNYXApCiAgICAgICAgICAgICBjb21taXRTZXRzLnB1c2go
Y29tbWl0U2V0TWFwW2xhYmVsXSk7CiAKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVB
bmRSZWZldGNoVGVzdEdyb3Vwcyh0aGlzLl90YXNrLCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9u
Q291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50aGVu
KHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAu
Y3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVzdEdyb3VwTmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0
aW9uKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHModGVzdEdy
b3Vwcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICBhbGVydCgnRmFp
bGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwotICAgICAgICB9KTsK
KyAgICAgICAgfQogICAgIH0KIAotICAgIF9jcmVhdGVDdXN0b21UZXN0R3JvdXAocmVwZXRpdGlv
bkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgbm90aWZ5
T25Db21wbGV0aW9uKQorICAgIGFzeW5jIF9jcmVhdGVDdXN0b21UZXN0R3JvdXAodGVzdEdyb3Vw
TmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxhdGZv
cm0sIHRlc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3Rhc2suaXNDdXN0b20oKSk7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBsaWNh
dGVUZXN0R3JvdXBOYW1lKHRlc3RHcm91cE5hbWUpKSB7CkBAIC05MDMsMTAgKzk0NiwxMyBAQCBj
bGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRlc3RHcm91cC5jcmVhdGVXaXRoQ3Vz
dG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVzdCwgdGVzdEdyb3VwTmFt
ZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCi0gICAg
ICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHMuYmluZCh0aGlzKSwgZnVuY3Rp
b24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rh
c2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLAorICAgICAgICAgICAgICAgIHJlcGV0
aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlv
bik7CisgICAgICAgICAgICB0aGlzLl9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3JvdXBz
KQorICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0
byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBfaGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1w
YW5lLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1w
YW5lLmpzCmluZGV4IGQwYWYxNzNkYWFkMzJiNDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLjhj
YzNlNDNlOTY2Y2Q1Y2NhOTI2MjA2YmU4ZGE0N2NmODA4NTc2N2EgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAg
LTEyMCwxMSArMTIwLDEzIEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2Ug
ewogICAgICAgICBjb25zdCBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3ggPSB0aGlzLmNvbnRl
bnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKTsKICAgICAgICAgY29uc3QgcmVwZXRpdGlvbkNv
dW50ID0gdGhpcy5jb250ZW50KCdjb25maXJtLXJlcGV0aXRpb24nKTsKICAgICAgICAgY29uc3Qg
bm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5jb250ZW50KCdub3RpZnktb24tY29tcGxldGlvbicp
OworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29udGVudCgncmVwZXRpdGlv
bi10eXBlJyk7CiAgICAgICAgIGNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5vbmNoYW5nZSA9
ICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHNob3VsZERpc2FibGUgPSAhY3JlYXRlV2l0aFRl
c3RHcm91cENoZWNrYm94LmNoZWNrZWQ7CiAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQuZGlz
YWJsZWQgPSBzaG91bGREaXNhYmxlOwogICAgICAgICAgICAgbm90aWZ5T25Db21wbGV0aW9uLmRp
c2FibGVkID0gc2hvdWxkRGlzYWJsZTsKLSAgICAgICAgfQorICAgICAgICAgICAgcmVwZXRpdGlv
blR5cGUuZGlzYWJsZWQgPSBzaG91bGREaXNhYmxlOworICAgICAgICB9OwogICAgIH0KIAogICAg
IHNlcmlhbGl6ZVN0YXRlKCkKQEAgLTI0MywxMCArMjQ1LDExIEBAIGNsYXNzIENoYXJ0UGFuZSBl
eHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICBjb25zdCBjcmVhdGVXaXRoVGVzdEdyb3Vw
ID0gdGhpcy5jb250ZW50KCdjcmVhdGUtd2l0aC10ZXN0LWdyb3VwJykuY2hlY2tlZDsKICAgICAg
ICAgY29uc3QgcmVwZXRpdGlvbkNvdW50ID0gdGhpcy5jb250ZW50KCdjb25maXJtLXJlcGV0aXRp
b24nKS52YWx1ZTsKICAgICAgICAgY29uc3Qgbm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5jb250
ZW50KCdub3RpZnktb24tY29tcGxldGlvbicpLmNoZWNrZWQ7CisgICAgICAgIGNvbnN0IHJlcGV0
aXRpb25UeXBlID0gdGhpcy5jb250ZW50KCdyZXBldGl0aW9uLXR5cGUnKS52YWx1ZTsKIAogICAg
ICAgICB0cnkgewogICAgICAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgKGNyZWF0
ZVdpdGhUZXN0R3JvdXAgPwotICAgICAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUobmFt
ZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgcmVwZXRpdGlvbkNvdW50LCBub3Rp
ZnlPbkNvbXBsZXRpb24pIDogQW5hbHlzaXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBl
bmRQb2ludCkpOworICAgICAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwgc3Rh
cnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9u
VHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA6IEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwgc3Rh
cnRQb2ludCwgZW5kUG9pbnQpKTsKICAgICAgICAgICAgIG5ld1dpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gcm91dGVyLnVybCgnYW5hbHlzaXMvdGFzay8nICsgYW5hbHlzaXNUYXNrLmlkKCkpOwogICAg
ICAgICAgICAgdGhpcy5mZXRjaEFuYWx5c2lzVGFza3ModHJ1ZSk7CiAgICAgICAgIH0gY2F0Y2go
ZXJyb3IpIHsKQEAgLTU4OSw3ICs1OTIsMTYgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hh
cnRQYW5lQmFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9u
PjEwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5pdGVyYXRpb25zPC9sYWJlbD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBp
ZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24iIGNoZWNrZWQ+IE5vdGlmeSBvbiBjb21wbGV0aW9uPC9s
YWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAg
ICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkluPC9sYWJlbD4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJyZXBldGl0aW9uLXR5cGUi
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJhbHRlcm5h
dGluZyIgc2VsZWN0ZWQ+YWx0ZXJuYXRpdmUgKEFCQUIpPC9vcHRpb24+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNlcXVlbnRpYWwiPnNlcXVlbmNlIChB
QUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgorICAg
ICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24iIGNoZWNrZWQ+Tm90aWZ5IG9uIGNvbXBsZXRpb248
L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAg
ICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImNoYXJ0LXBhbmUtZmls
dGVyaW5nLW9wdGlvbnMgcG9wb3ZlciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNp
cy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2Vz
L2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggMzAxZmQyYTI5MDY1MWQ1MTI4YzM1
MjNhZjQ5ODIwZjIwM2JjNjZhMy4uMGE4ZTQzZTQ5NjQ0NDVlZTM3MDQwNGM3MWM5MTU2YTkyY2Jl
NTgzMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdl
cy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcwpAQCAtMjIs
MTQgKzIyLDE0IEBAIGNsYXNzIENyZWF0ZUFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0
aEhlYWRpbmcgewogICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3Rh
cnRUZXN0aW5nJywgdGhpcy5fY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwLmJpbmQodGhpcykp
OwogICAgIH0KIAotICAgIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3JvdXAocmVwZXRpdGlvbkNv
dW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUs
IG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdy
b3VwKHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1p
dFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBsZXRpb24sIHRhc2tOYW1lKQogICAg
IHsKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwg
dGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlP
bkNvbXBsZXRpb24pLnRoZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHVybCA9IHRo
aXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgpfWApOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRo
VGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25D
b3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAg
ICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5yb3V0ZXIoKS51cmwoYGFuYWx5c2lzL3Rh
c2svJHt0YXNrLmlkKCl9YCk7Ci0gICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICB9IGNh
dGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcg
dGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICByZW5kZXIoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBmZDQw
NDM0NDIzNzBmNDUzZjFmZDNlZTdiN2FhNWE1MWZmYWMxYjIxLi45Yzc3NmYwZjA1NTk5ZDhjM2Vh
NDc1OWUwYWE2ZGUwNjFlZTNlODFmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
cwpAQCAtNTY2LDYgKzU2Niw2MiBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBpdCgnc2hvdWxkIHN0aWxs
IHJldHVybiBidWlsZCByZXF1ZXN0cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJs
ZSB3aGVuIHRlc3QgZ3JvdXAgaGFzIGFsbCBidWlsZCByZXF1ZXN0cyBmaW5pc2hlZCB3aXRoICJt
YXlOZWVkTW9yZVJlcXVlc3QiIGZsYWcgdG8gYmUgdHJ1ZXMnLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSwgWydj
b21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnXSwgdHJ1ZSwgbnVs
bCwgbnVsbCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CisgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBh
d2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxk
LXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ2NvbW1pdFNl
dHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKKworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50Wydjb21taXRTZXRzJ11bMF0u
aWQpLCA0MDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1p
dFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLCBbCisgICAgICAgICAgICB7Y29tbWl0OiAnODc4MzIn
LCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCBy
b290RmlsZTogbnVsbH0sCisgICAgICAgICAgICB7Y29tbWl0OiAnOTMxMTYnLCBjb21taXRPd25l
cjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVs
bH1dKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1p
dFNldHMnXVsxXS5pZCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29u
dGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsIFsKKyAgICAgICAgICAgIHtjb21t
aXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWls
ZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgIHtjb21taXQ6ICc5NjMzNics
IGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJv
b3RGaWxlOiBudWxsfV0pOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydj
b21taXRzJ10ubGVuZ3RoLCAzKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50
KGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCksIDg3ODMyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5yZXBvc2l0b3J5LCAnOScpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJldmlzaW9uLCAnMTAuMTEg
MTVBMjg0Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50Wydj
b21taXRzJ11bMV0uaWQpLCA5MzExNik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250
ZW50Wydjb21taXRzJ11bMV0ucmVwb3NpdG9yeSwgJzExJyk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2aXNpb24sICcxOTE2MjInKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5pZCks
IDk2MzM2KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsy
XS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicpOworCisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoLCA0KTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0u
aWQpLCA3MDApOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRl
bnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5vcmRlciksIDApOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5wbGF0Zm9ybSwgJzY1Jyk7Cisg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzBdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAg
ICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS50
ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uaWQpLCA3MDEpOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5vcmRlciks
IDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVsxXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
cGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLmNvbW1pdFNldCksIDQwMik7Cisg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFd
LnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNv
bnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0
LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uaWQp
LCA3MDIpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVsyXS5vcmRlciksIDIpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddWzJdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS50ZXN0
LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250
ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQpLCA3MDMpOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5vcmRlciksIDMp
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVszXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFy
c2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLmNvbW1pdFNldCksIDQwMik7CisgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnN0
YXR1cywgJ2ZhaWxlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVszXS50ZXN0LCAnMjAwJyk7CisgICAgfSk7CisKICAgICBpdCgnc2hv
dWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbicsICgpID0+IHsKICAgICAg
ICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRK
U09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5
SWRSZXNvbHV0aW9uPXRydWUnKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZC1yb290LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKaW5kZXggM2Fj
MGNlOWUzNzg1MWMxZjVkZDJiOGI1MzJjZDM0NjNhMWRhNjNiMC4uNjc1ZDU5NDg3NGNhMTZkYzdl
ODk2NjgwNGNmZWY0MTg2NWYyNTJkYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKQEAg
LTY1LDcgKzY1LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2loUGF0Y2goKQogICAgICAg
ICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAgICAgc2V0Mi5zZXRSZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7CiAgICAgICAgIHNldDIuc2V0UmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCwgJzgwMjI5Jyk7Ci0gICAgICAgIHJldHVybiBUZXN0
R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQx
LCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3Rv
bSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNv
bWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSk7CiAg
ICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxC
eVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChncm91cCkgPT4gewpAQCAtMTA3LDcg
KzEwNyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRjaEFuZE93bmVkQ29tbWl0
cygpCiAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5Mjcz
NicpOwogICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywgJ293
bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5MjczNicpOwogCi0gICAgICAgIHJldHVybiBUZXN0R3Jv
dXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBz
ZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0
YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVU
ZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSk7CiAgICAg
fSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxCeVRh
c2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChncm91cCkgPT4gewpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBk
Y2UwOWNiYWIzNTBhMjJhODMxZDViZjk5MjE3YWU3MDk5NzI2OTgyLi5iNmZhYWI0NDZiYTg5MWQ5
NTM5Y2NkMDE0MmQxODQ1ZTJhMjE0NWY1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVn
ZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMTIzLDYgKzEyMywxMSBAQCBh
c3luYyBmdW5jdGlvbiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2sobmFtZSwgd2Via2l0UmV2
aXNpb25zKQogICAgIGF3YWl0IGNyZWF0ZUFuYWx5c2lzVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lv
bnMpOwogfQogCitmdW5jdGlvbiBhc3NlcnRPcmRlck9mUmVxdWVzdHMocmVxdWVzdHMsIGV4cGVj
dGVkT3JkZXIpCit7CisgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0cy5tYXAocmVxdWVzdCA9
PiByZXF1ZXN0Lm9yZGVyKCkpLCBleHBlY3RlZE9yZGVyKTsKK30KKwogZGVzY3JpYmUoJy9wcml2
aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigpIHsKICAgICBwcmVwYXJl
U2VydmVyVGVzdCh0aGlzLCAnbm9kZScpOwogICAgIGJlZm9yZUVhY2goKCkgPT4gewpAQCAtMTM0
LDcgKzEzOSw4IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3Rz
JywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCku
ZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07
CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKICAg
ICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywKLSAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3Ro
ZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNv
dW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tO
YW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0
ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmlj
YXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0cywgY29tbWl0U2V0
OiBudWxsfSk7CiAgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdy
b3VwSWQnXTsKIAogICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRh
dGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IHRydWV9KTsKQEAgLTE0NCwxNSArMTUwLDE3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5t
YXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKLSAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIpOwor
ICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRz
KCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0aXRpb25Db3Vu
dEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogCiAgICAgICAgIGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5z
ZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pOwogCiAgICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91
cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUp
OwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEpOwot
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQodXBkYXRlZEdyb3Vwc1swXS5yZXBl
dGl0aW9uQ291bnQoKSksIDQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQo
dXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAgICAg
Zm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRT
ZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0u
cmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDQpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
LCAyKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVz
dHMoKSwgdHJ1ZSk7CiAgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHVwZGF0ZWRHcm91
cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7CiAgICAgICAgICAgICBjb25zdCBidWlsZFJl
cXVlc3RzID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQp
OwpAQCAtMTc0LDEwICsxODIsMzE0IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1
aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdy
b3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVk
R3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJl
cXVlc3RzKCksIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdy
b3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChw
YXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAgICAgZm9y
IChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRT
ZXQoY29tbWl0U2V0KSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgYXdhaXQgZ3JvdXAudXBkYXRlSGlk
ZGVuRmxhZyh0cnVlKTsKIAogICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0Nhbm5vdEFkZFRv
SGlkZGVuVGVzdEdyb3VwJywgYXN5bmMgKCkgPT4gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENv
dW50OiAyfSkpCiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoICJTaG91bGRO
b3RTcGVjaWZ5Q29tbWl0U2V0Rm9yQWx0ZXJuYXRpbmdSZXF1ZXN0IiB3aGVuIGFkZGluZyBidWls
ZCByZXF1ZXN0cyBmb3Igb25lIGNvbW1pdCBzZXQgaW4gYW4gYWx0ZXJuYXRpbmcgdGVzdCBncm91
cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVU
YXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwo
KS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVsw
XTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOwor
ICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdj
cmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAgICAgIG5hbWU6ICd0ZXN0JywgdGFza05hbWU6
ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6
IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywg
cmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsn
dGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCBub0NhY2hlID0gdHJ1ZTsKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVz
dWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGxldCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
blR5cGUoKSwgJ2FsdGVybmF0aW5nJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBj
b21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0
U2V0KSwgMik7CisKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBd
LnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3Rz
KGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDJdKTsKKyAg
ICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21t
aXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0
c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMSwgM10pOworCisgICAgICAgIGF3YWl0
IGFzc2VydFRocm93cygnU2hvdWxkTm90U3BlY2lmeUNvbW1pdFNldEZvckFsdGVybmF0aW5nUmVx
dWVzdCcsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLAorICAgICAgICAgICAgICAgIHtncm91cDogaW5zZXJ0
ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBzZWNvbmRDb21taXRTZXQuaWQoKX0p
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGJ1aWxk
IHJlcXVlc3RzIGZvciBmaXJzdCBjb21taXQgc2V0IHdpdGggb3JkZXIgc2hpZnRlZCBpbiBhIHNl
cXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0
ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFt
ZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0
ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0
Zm9ybUlkKCksIHJlcGV0aXRpb25Db3VudDogMiwKKyAgICAgICAgICAgICAgICB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5
cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVk
R3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBub0NhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRj
aEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJl
cGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChj
b25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQo
Y29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZpcnN0Q29tbWl0U2V0ID0gdGVzdEdyb3Vw
c1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1
ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxXSk7
CisgICAgICAgIGxldCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENv
bW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisKKyAgICAgICAgYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywKKyAgICAg
ICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBm
aXJzdENvbW1pdFNldC5pZCgpfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9IGF3
YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
blR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworCisgICAgICAgIGZpcnN0Q29tbWl0
U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAg
IGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENv
bW1pdFNldCksIFswLCAxLCAyLCAzXSk7CisgICAgICAgIHNlY29uZENvbW1pdFNldCA9IHVwZGF0
ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRl
ck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwg
WzQsIDVdKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IG1vZGlmeSB0aGUgb3JkZXIg
b2YgcHJlY2VkaW5nIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5nIG5ldyBidWlsZCByZXF1ZXN0
cyBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdh
aXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29u
c3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRz
ID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAg
ICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgICAg
IHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBy
ZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29u
c3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNv
bnN0IG5vQ2FjaGUgPSB0cnVlOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVz
dEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAg
ICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkp
CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0aXRpb25Db3VudEZv
ckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAgICAgICBsZXQgZmlyc3RDb21taXRTZXQg
PSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0
T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0
KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNlY29uZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0u
cmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMo
Z3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKwor
ICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVz
dHMnLAorICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBj
b21taXRTZXQ6IHNlY29uZENvbW1pdFNldC5pZCgpfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRl
ZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwg
bm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0
aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdyb3Vwc1swXS5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworCisgICAgICAg
IGZpcnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClb
MF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1p
dFNldChmaXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAgICAgIHNlY29uZENvbW1pdFNldCA9
IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3Nl
cnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0
U2V0KSwgWzIsIDMsIDQsIDVdKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc2hpZnQgdGhl
IG9yZGVyIG9mIGZvbGxvd2luZyBidWlsZCByZXF1ZXN0cyB3aGVuIGFkZGluZyByZXRyeSBmb3Ig
YSBzcGVjaWZpYyBjb21taXQgc2V0IGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHdpdGggMyBj
b21taXQgc2V0cycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2
MjMnfX0sCisgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2J319
XTsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05h
bWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHJl
cGV0aXRpb25Db3VudDogMiwKKyAgICAgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVz
dElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50
aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJl
c3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBub0NhY2hlID0gdHJ1ZTsKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVz
dWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBl
KCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1
ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAzKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRT
ZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwg
Mik7CisKKyAgICAgICAgbGV0IGZpcnN0Q29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0
ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5y
ZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAgICAgIGxl
dCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsx
XTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0
U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisgICAgICAgIGxldCB0aGlyZENvbW1pdFNl
dCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3Nl
cnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRT
ZXQpLCBbNCwgNV0pOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3JvdXBJ
ZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldDogZmlyc3RDb21taXRTZXQuaWQoKX0pOworCisgICAg
ICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIG5vQ2FjaGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBk
YXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0
ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3Ro
LCAzKTsKKworICAgICAgICBmaXJzdENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVz
dGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAu
cmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMSwgMiwgM10pOworICAg
ICAgICBzZWNvbmRDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFs0LCA1XSk7CisgICAgICAgIHRoaXJkQ29tbWl0
U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMl07CisgICAgICAgIGFz
c2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldCh0aGlyZENvbW1p
dFNldCksIFs2LCA3XSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNoaWZ0IHRoZSBvcmRl
ciBvZiBidWlsZCByZXF1ZXN0cyB3aGVuIGFkZGluZyByZXRyeSBmb3IgYWxsIGNvbW1pdCBzZXRz
IGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHdpdGggMyBjb21taXQgc2V0cycsIGFzeW5jICgp
ID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRh
c2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJl
cG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAg
Y29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjIn
fX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX0sCisgICAgICAgICAgICB7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAgICAgY29uc3QgcmVz
dWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHJlcGV0aXRpb25Db3VudDogMiwKKyAg
ICAgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7
CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsK
KworICAgICAgICBjb25zdCBub0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3Vw
cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNo
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVu
Z3RoLCAzKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBl
dGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZp
cnN0Q29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07Cisg
ICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChm
aXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAgICAgIGxldCBzZWNvbmRDb21taXRTZXQgPSB0
ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3Jk
ZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCks
IFsyLCAzXSk7CisgICAgICAgIGxldCB0aGlyZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVx
dWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3Jv
dXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRTZXQpLCBbNCwgNV0pOworCisgICAg
ICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycs
CisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDJ9KTsKKwor
ICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFz
ayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCt1
cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxl
bmd0aCwgMyk7CisKKyAgICAgICAgZmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJl
cXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdy
b3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDEsIDIsIDNdKTsK
KyAgICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21t
aXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0
c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbNCwgNSwgNiwgN10pOworICAgICAgICB0
aGlyZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOwor
ICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQo
dGhpcmRDb21taXRTZXQpLCBbOCwgOSwgMTAsIDExXSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hv
dWxkIHJlamVjdCB3aXRoICJOb0NvbW1pdFNldEluVGVzdEdyb3VwIiBpZiBjb21taXQgc2V0IGlz
IG5vdCBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
YXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAg
Y29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJl
cG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25T
ZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0Lmlk
KCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQg
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAg
ICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tE
YXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAg
ICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwg
cmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNv
bnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3Jv
dXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1
bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25U
eXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21t
aXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQp
LCAyKTsKKworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVx
dWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3Jv
dXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAg
ICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisKKyAgICAgICAgY29uc3QgY29t
bWl0U2V0ID0gZmlyc3RDb21taXRTZXQuaWQoKSArIHNlY29uZENvbW1pdFNldC5pZCgpICsgMTsK
KyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdOb0NvbW1pdFNldEluVGVzdEdyb3VwJywgKCkg
PT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1i
dWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29t
bWl0U2V0fSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qg
d2l0aCAiSW52YWxpZENvbW1pdFNldCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdl
ciBmb3IgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3
YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNv
bnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0
cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgp
XToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAg
IHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAg
ICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJl
cGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25z
dCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3Vw
JzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAg
ICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0
Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlw
ZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVx
dWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwg
Mik7CisKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVl
c3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAg
Y29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRz
KClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNv
bW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwgM10pOworCisgICAgICAgIGNvbnN0IGNvbW1p
dFNldCA9ICdpbnZhbGlkJzsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkQ29t
bWl0U2V0JywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRD
b3VudDogMiwgY29tbWl0U2V0fSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZENvbW1pdFNldCIgaWYgY29tbWl0IHNldCBpZCBpcyBu
b3QgYW4gaW50ZWdlciBmb3IgYW4gYWx0ZXJuYXRpbmcgdGVzdCBncm91cCcsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2sn
KTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29u
c3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0s
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVz
dWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSwKKyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRp
b25Db3VudDogMiwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsIHJldmlzaW9uU2V0c30p
OworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107
CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3Qt
Z3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0
cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRj
aEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdy
b3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVk
R3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJl
cXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXBldGl0aW9uVHlwZSgpLCAnYWx0ZXJuYXRpbmcnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAgICAgICBm
b3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0
U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGZpcnN0Q29tbWl0U2V0ID0gdGVz
dEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVy
T2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFsw
LCAyXSk7CisgICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVx
dWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3Jv
dXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzEsIDNdKTsKKworICAg
ICAgICBjb25zdCBjb21taXRTZXQgPSAnaW52YWxpZCc7CisgICAgICAgIGF3YWl0IGFzc2VydFRo
cm93cygnSW52YWxpZENvbW1pdFNldCcsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2Vy
dGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pCisgICAgICAgIH0pOworICAgIH0p
OwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlz
aXMtdGFzay10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
cHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKaW5kZXggMmIyNzUw
YWE3YTJkZDNiYzc5NWE3NjcyNzY0YmFhYTNlYjg0ZDFiNi4uMmExNzE3OGU0MzQyMzIyZWZjYzBi
ZmZkMjdmMjk4MjM1ZjQzMjZkYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQt
YXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCkBAIC02ODIsNCArNjgyLDExOSBAQCBk
ZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrIHdpdGggbm9kZSBw
cml2aWxlZ2VkIGFwaScsIGZ1bmN0aQogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RD
b21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXRSZXBvc2l0b3J5KS5yZXZpc2lvbigp
LCAnMTkxNjIyJyk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWNvbmRDb21taXRTZXQu
Y29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXRSZXBvc2l0b3J5KS5yZXZpc2lvbigpLCAnMTkxNjIz
Jyk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIGFuIGFuYWx5
c2lzIHRhc2sgd2l0aCBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgY29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gMTsK
KyAgICAgICAgY29uc3QgdHJpZ2dlcmFibGVJZCA9IDEyMzQ7CisKKyAgICAgICAgY29uc3QgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndGVzdHMn
LCB7bmFtZTogJ1N1aXRlJ30pOworICAgICAgICBjb25zdCB0ZXN0Um93ID0gYXdhaXQgZGIuc2Vs
ZWN0Rmlyc3RSb3coJ3Rlc3RzJywge25hbWU6ICdTdWl0ZSd9KTsKKyAgICAgICAgY29uc3QgdGVz
dElkID0gdGVzdFJvdy5pZDsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3NvbWUgcGxhdGZvcm0nfSk7
CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywge2lkOiAxMjM0
LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0
cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwgbmFtZTogJ3dlYmtpdC1v
bmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5z
ZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogd2Via2l0SWQsIGdy
b3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmln
dXJhdGlvbnMnLCB7dGVzdDogdGVzdElkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwgdHJpZ2dlcmFi
bGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnRXaXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAg
ICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0Lycs
IGFub3RoZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRj
aCgpOworCisgICAgICAgIGNvbnN0IHRlc3QgPSBUZXN0LmZpbmRCeUlkKHRlc3RJZCk7CisgICAg
ICAgIGNvbnN0IHNvbWVQbGF0Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlkKHBsYXRmb3JtSWQpOwor
ICAgICAgICBjb25zdCBjb25maWdSb3cgPSBhd2FpdCBkYi5zZWxlY3RGaXJzdFJvdygndGVzdF9j
b25maWd1cmF0aW9ucycsIHttZXRyaWM6IHRlc3QubWV0cmljcygpWzBdLmlkKCksIHBsYXRmb3Jt
OiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0UnVucyA9IGF3YWl0IGRi
LnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1snaWQnXX0pOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsKKworICAgICAgICBj
b25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNpb246ICcxOTE2MjInfX07
CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNp
b246ICcxOTE2MjMnfX07CisKKyAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdjb25maXJt
JywgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZp
cm0nLCByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlzaW9uU2V0XSwK
KyAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwgZW5kUnVuOiB0ZXN0UnVu
c1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnc2Vx
dWVudGlhbCd9KTsKKworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZl
dGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
YXNrLm5hbWUoKSwgJ2NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0KCF0YXNrLmhhc1Jlc3VsdHMo
KSk7CisgICAgICAgIGFzc2VydCh0YXNrLmhhc1BlbmRpbmdSZXF1ZXN0cygpKTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmJ1Z3MoKSwgW10pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHRhc2suY2F1c2VzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbCh0YXNrLmZpeGVzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRhc2suY2hhbmdlVHlwZSgpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRh
c2sucGxhdGZvcm0oKS5sYWJlbCgpLCAnc29tZSBwbGF0Zm9ybScpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGFzay5tZXRyaWMoKS50ZXN0KCkubGFiZWwoKSwgJ1N1aXRlJyk7CisKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFz
ay5pZCgpKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5uYW1lKCksICdDb25maXJtJyk7CisgICAgICAgIGFz
c2VydC5vayh0ZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKQorICAg
ICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5yZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgY29uc3QgYnVpbGRS
ZXF1ZXN0cyA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0
KGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVzdHNbMV0uY29t
bWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCku
ZXF1YWxzKGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBm
aXJzdENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNv
bnN0IHNlY29uZENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAg
ICAgIGNvbnN0IHdlYmtpdFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKHdlYmtpdElk
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJl
cG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnko
d2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOworICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZFJlcGV0aXRpb25UeXBlIiB3aGVuIHJlcGV0
aXRpb24gdHlwZSBpcyBub3QgImFsdGVybmF0aW5nIiBvciAic2VxdWVudGlhbCInLCBhc3luYyAo
KSA9PiB7CisgICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxhdGZv
cm1JZCA9IDE7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0OworCisgICAgICAg
IGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3Rlc3RzJywge25hbWU6ICdTdWl0ZSd9KTsKKyAgICAgICAgY29uc3QgdGVzdFJvdyA9IGF3
YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0cycsIHtuYW1lOiAnU3VpdGUnfSk7CisgICAgICAg
IGNvbnN0IHRlc3RJZCA9IHRlc3RSb3cuaWQ7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncmVw
b3NpdG9yaWVzJywge2lkOiB3ZWJraXRJZCwgbmFtZTogJ1dlYktpdCd9KTsKKyAgICAgICAgYXdh
aXQgZGIuaW5zZXJ0KCdwbGF0Zm9ybXMnLCB7aWQ6IHBsYXRmb3JtSWQsIG5hbWU6ICdzb21lIHBs
YXRmb3JtJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxlcycs
IHtpZDogMTIzNCwgbmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnfSk7CisgICAgICAgIGF3YWl0IGRi
Lmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCB7aWQ6IDIzNDUsIG5hbWU6
ICd3ZWJraXQtb25seScsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3
YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHdl
YmtpdElkLCBncm91cDogMjM0NX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJh
YmxlX2NvbmZpZ3VyYXRpb25zJywge3Rlc3Q6IHRlc3RJZCwgcGxhdGZvcm06IHBsYXRmb3JtSWQs
IHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxkZXJG
b3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNp
b24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBp
L3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFu
aWZlc3QuZmV0Y2goKTsKKworICAgICAgICBjb25zdCB0ZXN0ID0gVGVzdC5maW5kQnlJZCh0ZXN0
SWQpOworICAgICAgICBjb25zdCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0
Zm9ybUlkKTsKKyAgICAgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RS
b3coJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3MoKVswXS5pZCgp
LCBwbGF0Zm9ybTogc29tZVBsYXRmb3JtLmlkKCl9KTsKKyAgICAgICAgY29uc3QgdGVzdFJ1bnMg
PSBhd2FpdCBkYi5zZWxlY3RSb3dzKCd0ZXN0X3J1bnMnLCB7Y29uZmlnOiBjb25maWdSb3dbJ2lk
J119KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RSdW5zLmxlbmd0aCwgMik7CisK
KyAgICAgICAgY29uc3Qgb25lUmV2aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAn
MTkxNjIyJ319OworICAgICAgICBjb25zdCBhbm90aGVyUmV2aXNpb25TZXQgPSB7W3dlYmtpdElk
XToge3JldmlzaW9uOiAnMTkxNjIzJ319OworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0lu
dmFsaWRSZXBldGl0aW9uVHlwZScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHsKKyAgICAgICAgICAg
ICAgICBuYW1lOiAnY29uZmlybScsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiAy
LAorICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKKyAgICAgICAgICAg
ICAgICByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlzaW9uU2V0XSwK
KyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2ludmFsaWQtbW9kZScsCisgICAgICAg
ICAgICAgICAgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLAorICAgICAgICAgICAgICAgIGVu
ZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRp
b246IHRydWUKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0pOworICAgIH0pOwogfSk7CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQt
YXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwpp
bmRleCA2N2Q4NGFkYWY1OTZhMTcwYmRkZmVhZjIyNDIwZjJjMjUwNWUxM2Q2Li4zZmNhMzMxYjJm
OTIyZWFhMjE1NmNhZmRmNzA5ZTIyZTViMThmZmJjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3Vw
LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJp
dmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTcsNiArNyw4IEBAIGNv
bnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwog
Y29uc3QgVGVtcG9yYXJ5RmlsZSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBvcmFyeS1maWxl
LmpzJykuVGVtcG9yYXJ5RmlsZTsKIGNvbnN0IGFkZFdvcmtlckZvclJlcG9ydCA9IHJlcXVpcmUo
Jy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYWRkV29ya2VyRm9yUmVwb3J0Owog
Y29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3Bl
cmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OworY29uc3QgYXNzZXJ0VGhyb3dzID0gcmVx
dWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hc3NlcnRUaHJvd3M7CisK
IAogZnVuY3Rpb24gY3JlYXRlQW5hbHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlzaW9ucyA9IFsi
MTkxNjIyIiwgIjE5MTYyMyJdKQogewpAQCAtNDAwLDcgKzQwMiw3IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgYXNz
ZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGNvbnN0IHJl
cXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00NDcsNyArNDQ5LDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaWQoKSwgZ3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAg
ICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgY29u
c3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTQ4NSw3ICs0ODcsNyBAQCBkZXNj
cmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwot
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQo
KSwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5u
ZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdy
b3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTUyNCw3ICs1MjYsNyBAQCBkZXNjcmliZSgnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNh
dGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVx
dWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVu
Z3RoLCAyKTsKQEAgLTU1Niw3ICs1NTgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAg
ICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAg
LTYwMyw3ICs2MDUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0
R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAg
ICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY0NSw3ICs2NDcs
NyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdy
b3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1
ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY5NCw3ICs2OTYsNyBAQCBkZXNjcmli
ZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAg
ICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwg
Mik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3Vw
LmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVx
dWVzdHMubGVuZ3RoLCA0KTsKQEAgLTc0Myw3ICs3NDUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVn
ZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRl
c3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0o
KSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtODA4
LDcgKzgxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwog
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJ
ZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90
aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3Qo
KSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2Nr
RGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC04ODMsNyArODg1LDcgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAg
ICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBs
YXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsK
QEAgLTk2Niw3ICs5NjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRp
b25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5u
ZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTA2MCw3ICsxMDYyLDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAg
ICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAy
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmlu
ZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdy
b3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9y
bUlkKCkpKTsKQEAgLTExNTcsNyArMTE1OSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQu
b2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkp
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0
Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC0xMjM1LDcgKzEy
MzcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgs
IDEpOwogICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAg
ICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICBjb25zdCBy
ZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC0xMjY0LDcgKzEyNjYsNyBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0Lm9rKCFncm91
cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5i
dWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDIpOwpAQCAtMTMwOCw3ICsxMzEwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIFRlc3RHcm91cC5z
b3J0QnlOYW1lKHRlc3RHcm91cHMpOwogCiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwc1swXS5uYW1lKCksICd0ZXN0MScpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RHcm91cHNbMF0ucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
LCAxKTsKICAgICAgICAgICAgIGxldCByZXF1ZXN0cyA9IHRlc3RHcm91cHNbMF0uYnVpbGRSZXF1
ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7CiAgICAgICAgICAgICBsZXQgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwpAQCAt
MTMyMSw3ICsxMzIzLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1n
cm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQx
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7CiAKICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzFdLm5hbWUoKSwgJ3Rlc3QyJyk7Ci0gICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5yZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgcmVxdWVzdHMgPSB0ZXN0R3Jv
dXBzWzFdLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1p
dFNldCgpOwpAQCAtMTMzNiw0ICsxMzM4LDU2IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOwog
ICAgICAgICB9KTsKICAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgc2VxdWVudGlh
bCB0ZXN0IGdyb3VwIHdpdGggYW4gYW5hbHlzaXMgdGFzaycsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAg
ICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+
IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNp
b25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAg
ICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1v
Y2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAg
ICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRzLCByZXBl
dGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsKKyAgICAgICAg
Y29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAg
IGNvbnN0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW0Fu
YWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5mZXRjaEZv
clRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpCisgICAgICAgIGFzc2VydC5vayhncm91
cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5i
dWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1swXS5vcmRlcigp
LCAwKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFdLm9yZGVyKCksIDEp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigpLCAzKTsKKworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0
aCwgMikKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1
ZXN0c1sxXS5jb21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQocmVxdWVzdHNbMl0uY29tbWl0
U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29uc3Qg
c2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBzZXQxID0gcmVx
dWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0
MC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVx
dWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVx
dWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIklu
dmFsaWRNb2RlIiBpZiB0ZXN0IG1vZGUgaXMgbm90ICJhbHRlcm5hdGluZyIgb3IgInNlcXVlbnRp
YWwiJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0
ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFs
bCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcp
WzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZp
c2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07
CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRpdGlvblR5cGUnLCAo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLAor
ICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0
OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRp
b246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywgcmVwZXRpdGlvbkNvdW50
OiAyLCByZXZpc2lvblNldHN9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11
cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXgg
NDUwNmMzYjI3ZjA1ZjIzMmFiNDBjNWU2YWM3NGU3YWQ1ZjQyZDU5OC4uYTIwNTZmMWYxZTdiNjEy
MTAzYjViOTI3Nzk3ZjkxY2E3ZmExNjkwYSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0
cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVn
ZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xNjgsNyArMTY4LDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uKCl7CiAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAg
IGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7CiAgICAgICAgIGFzc2Vy
dC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uKCl7
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgZmFsc2UpOwogICAgICAgICBh
c3NlcnQub2soIWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApAQCAtMjc2LDQgKzI3Niw4
NiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rp
b24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVl
ZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRh
dGVkR3JvdXBzWzBdLmlzSGlkZGVuKCksIHRydWUpOwogICAgIH0pOworCisgICAgaXQoJ3Nob3Vs
ZCBiZSBhYmxlIHRvIGNhbmNlbCBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwIGFuZCB0aGUgIm1h
eSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0
IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0
IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0
b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9
IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXTog
e3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAg
e25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCksCisgICAgICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRl
c3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJu
YXRpbmcnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0g
cmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2Fp
dCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnYWx0ZXJuYXRpbmcnKTsKKworICAgICAgICBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91
cDogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAg
ICAgbGV0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3Vs
dFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdy
b3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vw
c1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgdGVzdEdyb3Vw
ID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQoYnVpbGRS
ZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzFd
LmlzUGVuZGluZygpKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBjYW5jZWw6IHRy
dWV9KTsKKworICAgICAgICB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9y
VGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgdGVzdEdyb3VwID0gdXBkYXRlZEdy
b3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5tYXlOZWVkTW9y
ZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KHRlc3RHcm91cC5oYXNGaW5pc2hl
ZCgpKTsKKyAgICAgICAgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5vcmRlcmVkQnVpbGRSZXF1
ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgs
IDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXMo
KSwgJ2NhbmNlbGVkJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Rz
WzFdLnN0YXR1cygpLCAnY2FuY2VsZWQnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgYmUg
YWJsZSB0byBjYW5jZWwgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgYW5kIHRoZSAibWF5IG5lZWQg
bW9yZSByZXF1ZXN0cyIgZmxhZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0
ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFt
ZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTog
J3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBs
YXRmb3JtSWQoKSwKKyAgICAgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCks
IG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywg
cmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsn
dGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdy
b3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5l
ZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKworICAgICAgICBhd2FpdCBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0
ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgbGV0IHVw
ZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lk
J10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwc1swXS5tYXlO
ZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgdGVzdEdyb3VwID0gdXBkYXRl
ZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5tYXlOZWVk
TW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0cyA9IHRlc3RH
cm91cC5vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
YnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0c1sw
XS5pc1BlbmRpbmcoKSk7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzFdLmlzUGVuZGlu
ZygpKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUt
dGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBjYW5jZWw6IHRydWV9KTsKKwor
ICAgICAgICB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1
bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRH
cm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgdGVzdEdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3Rz
KCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KHRlc3RHcm91cC5oYXNGaW5pc2hlZCgpKTsKKyAg
ICAgICAgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXMoKSwgJ2NhbmNl
bGVkJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLnN0YXR1
cygpLCAnY2FuY2VsZWQnKTsKKyAgICB9KTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVz
b3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMKaW5kZXggZWNmZWM4ZDE2
ZTkzNGQ1N2QzMjcxODg4ZWM1NjNiMzQ0NmVhYjRiYS4uZjI0ZjQzMzFhMGI0MTBjNzBiY2RiODli
MDA4ZGM5NjVkMTliNDBhMyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMu
anMKQEAgLTUzLDcgKzUzLDcgQEAgYXN5bmMgZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGV4cGVjdGVk
RXJyb3IsIHRlc3RGdW5jdGlvbikKIHsKICAgICBsZXQgdGhyb3duRXhjZXB0aW9uID0gZmFsc2U7
CiAgICAgdHJ5IHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RGdW5jdGlvbigpCisgICAgICAgIGF3
YWl0IHRlc3RGdW5jdGlvbigpOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgICAgdGhyb3du
RXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVycm9yLCBleHBl
Y3RlZEVycm9yKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcwppbmRleCA2ODFhZmNjNGNmNmFkMGU1
OTJlY2I2MDExYTYxY2IxY2Y5NGNlZDFiLi5lYWVlODFhMzQwYjE4NjJiMWZhMTJiMzY3MjY3ZGNh
ODUzYzFjMzY0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCkBAIC02NCwxMiArNjQsMTQgQEAg
TW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfcnVucycsIHtpZDogODAx
LCBjb25maWc6IDMwMSwgYnVpbGQ6IDkwMSwgbWVhbl9jYWNoZTogMTAwfSksCiAgICAgICAgIF0p
OwogICAgIH0sCi0gICAgYWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVzTGlzdCwgbmVl
ZHNOb3RpZmljYXRpb249dHJ1ZSwgdXJsTGlzdD1bXSkKKyAgICBhZGRNb2NrRGF0YTogZnVuY3Rp
b24gKGRiLCBzdGF0dXNMaXN0LCBuZWVkc05vdGlmaWNhdGlvbiA9IHRydWUsIHVybExpc3QgPSBu
dWxsLCBjb21taXRTZXRMaXN0ID0gbnVsbCwgcmVwZXRpdGlvblR5cGUgPSAnYWx0ZXJuYXRpbmcn
LCBtYXlOZWVkTW9yZVJlcXVlc3RzID0gZmFsc2UpCiAgICAgewogICAgICAgICBpZiAoIXN0YXR1
c0xpc3QpCiAgICAgICAgICAgICBzdGF0dXNMaXN0ID0gWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAn
cGVuZGluZycsICdwZW5kaW5nJ107CiAgICAgICAgIGlmICghdXJsTGlzdCkKICAgICAgICAgICAg
IHVybExpc3QgPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07CisgICAgICAgIGlmICghY29tbWl0
U2V0TGlzdCkKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3QgPSBbNDAxLCA0MDIsIDQwMSwgNDAy
XTsKICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgIHRoaXMuYWRkTW9j
a0NvbmZpZ3VyYXRpb24oZGIpLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycs
IHtpZDogNDAxfSksCkBAIC04MSwxNCArODMsMTUgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1MDAsIHBsYXRmb3JtOiA2NSwgbWV0
cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2snLAogICAgICAgICAgICAgICAgIHN0YXJ0X3J1bjog
ODAxLCBzdGFydF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonLAogICAgICAgICAg
ICAgICAgIGVuZF9ydW46IDgwMSwgZW5kX3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4x
Wid9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6
IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9yZXBldGl0
aW9uX2NvdW50OiA0LCBuZWVkc19ub3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0aW9ufSksCi0g
ICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDAsIHN0YXR1czog
c3RhdHVzTGlzdFswXSwgdXJsOiB1cmxMaXN0WzBdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3Np
dG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9y
ZGVyOiAwLCBjb21taXRfc2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRf
cmVxdWVzdHMnLCB7aWQ6IDcwMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB1cmw6IHVybExpc3Rb
MV0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTog
NjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAot
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAyLCBzdGF0dXM6
IHN0YXR1c0xpc3RbMl0sIHVybDogdXJsTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9z
aXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBv
cmRlcjogMiwgY29tbWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdXJsOiB1cmxMaXN0
WzNdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06
IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwg
dGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9yZXBldGl0aW9uX2Nv
dW50OiAyLAorICAgICAgICAgICAgICAgIG5lZWRzX25vdGlmaWNhdGlvbjogbmVlZHNOb3RpZmlj
YXRpb24sIHJlcGV0aXRpb25fdHlwZTogcmVwZXRpdGlvblR5cGUsIG1heV9uZWVkX21vcmVfcmVx
dWVzdHM6IG1heU5lZWRNb3JlUmVxdWVzdHN9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVp
bGRfcmVxdWVzdHMnLCB7aWQ6IDcwMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB1cmw6IHVybExp
c3RbMF0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9y
bTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IGNvbW1p
dFNldExpc3RbMF19KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7
aWQ6IDcwMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB1cmw6IHVybExpc3RbMV0sIHRyaWdnZXJh
YmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIw
MCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3RbMV19KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVz
OiBzdGF0dXNMaXN0WzJdLCB1cmw6IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBv
c2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwg
b3JkZXI6IDIsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3RbMl19KSwKKyAgICAgICAgICAgIGRi
Lmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNd
LCB1cmw6IHVybExpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAy
MDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIGNvbW1p
dF9zZXQ6IGNvbW1pdFNldExpc3RbM119KSwKICAgICAgICAgXSk7CiAgICAgfSwKLSAgICBhZGRN
b2NrQnVpbGRSZXF1ZXN0c1dpdGhSb290cyhkYiwgc3RhdHVzTGlzdCwgbmVlZHNOb3RpZmljYXRp
b249dHJ1ZSwgYWRkTW9ja0NvbmZpZ3VyYXRpb249dHJ1ZSkKKyAgICBhZGRNb2NrQnVpbGRSZXF1
ZXN0c1dpdGhSb290cyhkYiwgc3RhdHVzTGlzdCwgbmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCBh
ZGRNb2NrQ29uZmlndXJhdGlvbiA9IHRydWUpCiAgICAgewogICAgICAgICBjb25zdCBzZXR1cFN0
ZXBzID0gYWRkTW9ja0NvbmZpZ3VyYXRpb24gPyBbdGhpcy5hZGRNb2NrQ29uZmlndXJhdGlvbihk
YildIDogW107CiAgICAgICAgIGlmICghc3RhdHVzTGlzdCkKQEAgLTIwMSwxMCArMjA0LDEwIEBA
IE1vY2tEYXRhID0gewogICAgICAgICBjb25zdCByZXBvc2l0b3J5X2dyb3VwID0gMjAwMTsKICAg
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlz
aXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMSwgdGFzazogNTAwLCBuYW1lOiAnYW5vdGhlciB0ZXN0
IGdyb3VwJywgYXV0aG9yLCBpbml0aWFsX3JlcGV0aXRpb25fY291bnQ6IDR9KSwKLSAgICAgICAg
ICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMywgc3RhdHVzOiBzdGF0dXNM
aXN0WzNdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdy
b3VwOiA2MDEsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKICAgICAgICAgICAgIGRiLmlu
c2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB0
cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEs
IG9yZGVyOiAwLCBjb21taXRfc2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVp
bGRfcmVxdWVzdHMnLCB7aWQ6IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJs
ZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAy
LCBjb21taXRfc2V0OiA0MDF9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVz
dHMnLCB7aWQ6IDcxMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZSwgcmVwb3Np
dG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAxLCBjb21taXRf
c2V0OiA0MDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6
IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91
cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAyLCBjb21taXRfc2V0OiA0MDF9
KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMywgc3Rh
dHVzOiBzdGF0dXNMaXN0WzNdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZv
cm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKICAgICAg
ICAgXSk7CiAgICAgfSwKICAgICBhZGRUZXN0R3JvdXBXaXRoT3duZWRDb21taXRzKGRiLCBzdGF0
dXNMaXN0KQpAQCAtNDg0LDcgKzQ4Nyw2IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgICAg
ICJzY2hlZHVsZXIiOiBbIkFCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNjaGVk
dWxlciIsICJTY2hlZHVsZXIiXSwKICAgICAgICAgICAgICAgICAid2siOiBbb3B0aW9ucy53ZWJr
aXRSZXZpc2lvbiB8fCAnMTkxNjIyJywgIlVua25vd24iXSwKICAgICAgICAgICAgICAgICAib3Mi
OiBbb3B0aW9ucy5vc3hSZXZpc2lvbiB8fCAnMTAuMTEgMTVBMjg0JywgIlVua25vd24iXSwKLSAg
ICAgICAgICAgICAgICAid29ya2VybmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIw
MiIsICJXb3JrZXIgKGRlcHJlY2F0ZWQpIl0sCiAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWUi
OiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIiLCAiV29ya2VyIl0KICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKQEAgLTUxOSw3ICs1MjEsNiBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAg
ICAgICAgICAicHJvamVjdCI6IFsnJywgIlVua25vd24iXSwKICAgICAgICAgICAgICAgICAicmVw
b3NpdG9yeSI6IFsnJywgIlVua25vd24iXSwKICAgICAgICAgICAgICAgICAicmV2aXNpb24iOiBb
JycsICJVbmtub3duIl0sCi0gICAgICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53
b3JrZXJOYW1lIHx8ICJib3QyMDIiLCAiV29ya2VyIChkZXByZWNhdGVkKSJdLAogICAgICAgICAg
ICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29ya2VyTmFtZSB8fCAiYm90MjAyIiwgIldv
cmtlciJdCiAgICAgICAgICAgICB9CiAgICAgICAgIH07ICAgCmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxl
LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1i
dWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcwppbmRleCBiNDg3MGJiMmIwODZjNDliODI3MTU0
ODU2ZTE1ZjZmNjRlMDA3ZDJhLi4xMzg2ZTY5MWYyMmU5NTBiYzQ0NzNmOGQ5ZDhkZmQxZDJjYmQ0
NzE0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rv
b2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMK
QEAgLTY4OSwxMiArNjg5LDE1IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVz
b2x2ZShNb2NrRGF0YS5ydW5uaW5nQnVpbGQoe2J1aWxkZXJJZDogTW9ja0RhdGEuYnVpbGRlcklE
Rm9yTmFtZSgnc29tZSBidWlsZGVyIDInKSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1l
dGhvZCwgJ1BPU1QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1z
b21lLWJ1aWxkZXItMicpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5kYXRhLCB7J2lkJzogJzcwMScsICdqc29ucnBjJzog
JzIuMCcsICdtZXRob2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKICAgICAgICAgICAgICAgICAgICAg
eyd3ayc6ICcxOTI3MzYnLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQn
OiAnNzAxJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRlci0yJ319KTsKICAg
ICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoJ09LJyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9kLCAnUE9T
VCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzVdLnVybCwgJy9hcGkvdjIvZm9yY2VzY2hlZHVsZXJzL2ZvcmNlLXNvbWUtYnVpbGRl
ci0xJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzVdLmRhdGEsIHsnaWQnOiAnNzExJywgJ2pzb25ycGMnOiAnMi4wJywgJ21l
dGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgpAQCAtODMzLDcgKzgzNiw3IEBAIGRlc2NyaWJlKCdC
dWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11bHRpcGxlIHRlc3Qg
Z3JvdXBzIHJ1bm5pbmcgc2ltdWx0ZW5vdXNseScsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3Vs
ZCByZWNvdmVyIGZyb20gbXVsdGlwbGUgdGVzdCBncm91cHMgcnVubmluZyBzaW11bHRhbmVvdXNs
eScsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgp
OwogICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzOwog
CkBAIC0xMDY0LDYgKzEwNjcsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMl0uZGF0YSwgeydpZCc6ICc3MTAnLCAnanNvbnJwYyc6ICcyLjAn
LCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFtcyc6CiAgICAgICAgICAgICAgICAgICAgIHsnd2sn
OiAnMTkxNjIyJywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcx
MCcsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMSd9fSk7CiAgICAgICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKCdPSycpOworICAgICAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CiAKQEAgLTEzNTYsNyArMTM2MCwyNzAgQEAgZGVzY3JpYmUo
J0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgJ2J1
aWxkLXJlcXVlc3QtaWQnOiAnOTAwJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVp
bGRlci0yJ319KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3QgcmV1c2Ug
dGhlIHJvb3Qgd2hlbiBhIGJ1aWxkIHJlcXVlc3Qgd2l0aCBzYW1lIGNvbW1pdCBzZXQgaXMgYXZh
aWFsYmxlIGJ1dCB0aGUgYnVpbGQgcmVxdWVzdCBoYXMgYmVlbiBzY2hlZHVsZWQnLCBhc3luYyAo
KSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgZGVmZXIgc2NoZWR1bGluZyByZXF1ZXN0cyBmcm9t
IG5leHQgY29uZmlndXJhdGlvbiBpbiBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgdW50aWwgdGhlIGN1
cnJlbnQgY29uZmlndXJhdGlvbiBtZWV0cyB0aGUgaW5pdGlhbCByZXF1ZXN0ZWQgaXRlcmF0aW9u
IGNvdW50JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwg
Wydjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZyddLCB0cnVlLAorICAg
ICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQn
LCBudWxsLCBudWxsXSwKKyAgICAgICAgICAgICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3Nl
cXVlbnRpYWwnLCB0cnVlKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisK
KyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dp
dGhUd29CdWlsZGVycygpOworICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dn
ZXI7CisgICAgICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcics
IHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0g
bmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBN
b2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3lu
Y09uY2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUu
c3luY09uY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgp
LCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1v
dGVBUEkucmVzZXQoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3Nv
bWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5y
ZXNvbHZlKHt9KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lIGJ1
aWxkZXIgMicpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2
ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVu
Z3RoLCA0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRl
ci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZl
KHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0
YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAg
ICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWls
ZFJlcXVlc3RJZDogNzAxLCBidWlsZFRhZzogMTI0fSldfSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEu
cmVjZW50QnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicsIDIpKTsKKyAgICAgICAgICAgIE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1v
Y2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgTW9ja0RhdGEucGVu
ZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoe30pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS51cmwsIE1vY2tEYXRhLnBlbmRpbmdC
dWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s1XS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbNl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxk
c1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzZdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2Nr
RGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwg
YnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1
aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0p
XX0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10u
bWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s3XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZSBidWlsZGVyIDIn
LCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnJlc29sdmUoe30p
OworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVz
VXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0
YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1
aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3Qu
ZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVp
bGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCks
ICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAxKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
Mi9idWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNj
aGVkdWxpbmcgb3RoZXIgYnVpbGQgcmVxdWVzdCBvbiBhIGJ1aWxkZXIgaWYgYSBzZXF1ZW50aWFs
IHRlc3QgZ3JvdXAgaXMgc2NoZWR1bGVkIG9uIGl0IGFuZCB3YWl0aW5nIGZvciByZXRyeScsIGFz
eW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgp
OworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW01vY2tEYXRhLmFkZE1vY2tEYXRhKGRi
LCBbJ2ZhaWxlZCcsICdjb21wbGV0ZWQnLCAncGVuZGluZycsICdwZW5kaW5nJ10sIHRydWUsCisg
ICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVp
bGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEy
NCcsIG51bGwsIG51bGxdLAorICAgICAgICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAn
c2VxdWVudGlhbCcsIHRydWUpLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJN
b2NrVGVzdEdyb3VwKGRiKSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFu
aWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9j
a1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxv
Z2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtu
YW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBj
b25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNl
cnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAg
ICAgICAgICAgIGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVu
KCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVz
dEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1
aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7Cisg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1v
Y2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVu
ZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVt
b3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1
aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBN
b2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcw
MCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hl
ZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEy
NH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5n
dGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
Ml0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRl
ci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHt9
KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0
KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0
aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAy
KSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoeydidWls
ZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7
cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAg
ICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVp
bGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2Fp
dCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwo
KS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDApLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Vi
a2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVz
VXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcp
OworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShN
b2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5h
bWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0
aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MCkuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3Jn
LyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxpbmcgYnVpbGQgcmVxdWVz
dCBmcm9tIGFub3RoZXIgdGVzdCBncm91cCBvbiBhIGJ1aWxkZXIgaWYgYSBhbHRlcm5hdGluZyB0
ZXN0IGdyb3VwIHdpdGggYWxsIGV4aXN0aW5nIGJ1aWxkIHJlcXVlc3RzIGZpbmlzaGVkIHN0aWxs
IG5lZWRzIHJldHJ5JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0
U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbTW9ja0Rh
dGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAn
Y29tcGxldGVkJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMScsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzIvYnVpbGRzLzEyMicsCisgICAgICAgICAgICAgICAgICAgICdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Vi
a2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsXSwKKyAgICAgICAgICAgICAgICBbNDAx
LCA0MDIsIDQwMSwgNDAyXSwgJ2FsdGVybmF0aW5nJywgdHJ1ZSksCisgICAgICAgICAgICAgICAg
TW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpLAorICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgICAgICBjb25zdCBj
b25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwor
ICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBj
b25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dv
cmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dl
cmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3Jr
ZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJs
ZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAg
ICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
LCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVp
bGRib3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKwor
ICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwg
J0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAg
ICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAgICAg
ICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVy
bCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisg
ICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAx
LCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAg
ICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJ
ZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1
aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzJdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJs
KCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRh
LmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWls
ZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGRE
YXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7
CisKKyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwo
KSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVz
KCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVp
bGRlcnMvMi9idWlsZHMvMTI0Jyk7CisKKyAgICAgICAgICAgIGF3YWl0IEJ1aWxkUmVxdWVzdC5m
ZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWls
ZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCAnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ2Nv
bXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJ
ZCg3MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8y
L2J1aWxkcy8xMjQnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2No
ZWR1bGluZyBidWlsZCByZXF1ZXN0IGZyb20gYW5vdGhlciB0ZXN0IGdyb3VwIG9uIGEgYnVpbGRl
ciBpZiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCB3aXRoIGFsbCBleGlzdGluZyBidWlsZCByZXF1
ZXN0cyBmaW5pc2hlZCBzdGlsbCBuZWVkcyByZXRyeScsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQg
UHJvbWlzZS5hbGwoW01vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21w
bGV0ZWQnLCAnZmFpbGVkJywgJ2NvbXBsZXRlZCddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEnLCAnaHR0cDov
L2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAgICAgICAgICAg
ICAgICAgICAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMn
LCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLF0sCisg
ICAgICAgICAgICAgICAgWzQwMSwgNDAxLCA0MDIsIDQwMl0sICdzZXF1ZW50aWFsJywgdHJ1ZSks
CisgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpLAor
ICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisg
ICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRo
U2luZ2xlQnVpbGRlcigpOworICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dn
ZXI7CisgICAgICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcics
IHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0g
bmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBN
b2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3lu
Y09uY2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUu
c3luY09uY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgp
LCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1v
dGVBUEkucmVzZXQoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21l
LWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVz
b2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVl
c3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxl
bmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxk
ZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2
ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVp
bGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIzfSks
CisgICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRz
OiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwg
TW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBh
d2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0Rh
dGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAg
ICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJl
cXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgICAgIE1vY2tE
YXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBi
dWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCks
ICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
Mi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisKKyAgICAgICAgICAgIGF3
YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxl
ZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIp
LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAzKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCBub3QgcmV1c2UgdGhlIHJvb3Qgd2hlbiBhIGJ1aWxkIHJlcXVlc3Qgd2l0aCBz
YW1lIGNvbW1pdCBzZXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGUgYnVpbGQgcmVxdWVzdCBoYXMgYmVl
biBzY2hlZHVsZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5h
ZGRNb2NrQnVpbGRSZXF1ZXN0c1dpdGhSb290cyhUZXN0U2VydmVyLmRhdGFiYXNlKCkpOwogICAg
ICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKICAgICAgICAgICAgIGNvbnN0IGNvbmZp
ZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhQYXRjaEFjY2VwdGluZ0J1aWxkZXIo
KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9v
bHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0
cy5qcwppbmRleCA2ZmM3YTdhYzViYzM3YTQxMDQ3MmZlODJiMmM5YjU0MTBlYThmNGQzLi42ZGFm
NTM1NGRkMmY3MjA3NDdmOTZkNTNiYzRhMzFjZTA1ZDg4MjY3IDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdy
YXRpb24tdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCkBAIC0xNzMsNyArMTcz
LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwKHRhc2tfbmFtZT0nY3VzdG9tIHRhc2snKSB7
CiAgICAgc2V0MS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7CiAg
ICAgY29uc3Qgc2V0MiA9IG5ldyBDdXN0b21Db21taXRTZXQ7CiAgICAgc2V0Mi5zZXRSZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkyNzM2Jyk7Ci0gICAgcmV0dXJuIFRlc3RHcm91cC5j
cmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5z
b21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJd
KS50aGVuKCh0YXNrKSA9PiB7CisgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygn
Y3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJd
KS50aGVuKCh0YXNrKSA9PiB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFz
ayh0YXNrLmlkKCkpWzBdOwogICAgIH0pOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBAIGFzeW5jIGZ1
bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRjaCgpCiAgICAgc2V0MS5zZXRSZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJywgdXBsb2FkZWRQYXRjaEZpbGUpOwogICAgIGNv
bnN0IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0OwogICAgIHNldDIuc2V0UmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHdlYmtpdCwgJzE5MTYyMicpOwotICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBUZXN0
R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQx
LCBzZXQyXSk7CisgICAgY29uc3QgdGFzayA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFz
aygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNl
dDJdKTsKIAogICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBd
OwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpaE93bmVk
Q29tbWl0KCkKICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICBzZXQy
LnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTI3MzYnKTsKICAgICBzZXQyLnNl
dFJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywgJ293bmVkLWpzYy05MTkxJywgbnVsbCwg
JzE5MjczNicpOwotICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0
YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVU
ZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4geworICAg
IHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0u
ZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91
cCcsIDIsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4gewogICAg
ICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9
KTsKIH0KQEAgLTE0MDksNyArMTQwOSw3IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90JywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOwog
ICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVk
Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1Vy
bCgpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Qu
c3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzEvYnVpbGRz
LzEyMycpOwogICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElk
KCksIG51bGwpOwogCiAgICAgICAgICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RH
cm91cC5idWlsZFJlcXVlc3RzKClbMV07CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwppbmRleCA4ODIyYWZiOGMwZWQyMjM4MWY3
NDIzNzZhZmEzMDZkYTI5Y2M1ODIwLi40NTRmM2U2MDM4NmZmZjVkY2Q5ZDVkYjI2ZjFlZmFhYjEy
ODQ4Yzg4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVp
bGRib3Qtc3luY2VyLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9i
dWlsZGJvdC1zeW5jZXIuanMKQEAgLTE0Myw2ICsxNDMsNyBAQCBjbGFzcyBCdWlsZGJvdFN5bmNl
ciB7CiAKICAgICAgICAgbGV0IGhhc1BlbmRpbmdCdWlsZHNXaXRob3V0V29ya2VyTmFtZVNwZWNp
ZmllZCA9IGZhbHNlOwogICAgICAgICBsZXQgdXNlZFdvcmtlcnMgPSBuZXcgU2V0OworICAgICAg
ICBjb25zdCBsYXRlc3RBY3RpdmVFbnRyeUJ5V29ya2VyTmFtZSA9IG5ldyBNYXA7CiAgICAgICAg
IGZvciAobGV0IGVudHJ5IG9mIHRoaXMuX2VudHJ5TGlzdCkgewogICAgICAgICAgICAgbGV0IGVu
dHJ5UHJldmVudHNOZXdSZXF1ZXN0ID0gZW50cnkuaXNQZW5kaW5nKCk7CiAgICAgICAgICAgICBp
ZiAoZW50cnkuaXNJblByb2dyZXNzKCkpIHsKQEAgLTE1NSw2ICsxNTYsMjYgQEAgY2xhc3MgQnVp
bGRib3RTeW5jZXIgewogICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQnVpbGRzV2l0aG91
dFdvcmtlck5hbWVTcGVjaWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHVzZWRXb3JrZXJz
LmFkZChlbnRyeS53b3JrZXJOYW1lKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGVudHJ5Lmhhc0ZpbmlzaGVkKCkgfHwgZW50cnkuaXNJblByb2dyZXNzKCkpIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChlbnRyeS53b3JrZXJOYW1lKCksICdGaW5pc2hlZCBlbnRy
eSBtdXN0IGhhdmUgYSB3b3JrZXIgbmFtZScpOworICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RG
aW5pc2hlZEVudHJ5ID0gbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtlck5hbWUuZ2V0KGVudHJ5Lndv
cmtlck5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFsYXN0RmluaXNoZWRFbnRyeSB8fCAr
bGFzdEZpbmlzaGVkRW50cnkuYnVpbGRUYWcoKSA8ICtlbnRyeS5idWlsZFRhZygpKQorICAgICAg
ICAgICAgICAgICAgICBsYXRlc3RBY3RpdmVFbnRyeUJ5V29ya2VyTmFtZS5zZXQoZW50cnkud29y
a2VyTmFtZSgpLCBlbnRyeSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAobGV0IFtuYW1lLCBlbnRyeV0gb2YgbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtlck5hbWUuZW50
cmllcygpKSB7CisgICAgICAgICAgICBjb25zdCBsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QgPSBC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSk7CisgICAgICAgICAg
ICBpZiAoIWxhdGVzdEFjdGl2ZUJ1aWxkUmVxdWVzdCkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGlmIChsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QudGVzdEdyb3VwSWQo
KSA9PT0gbmV3UmVxdWVzdC50ZXN0R3JvdXBJZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gbGF0ZXN0QWN0aXZlQnVpbGRSZXF1ZXN0
LnRlc3RHcm91cCgpOworICAgICAgICAgICAgaWYgKCF0ZXN0R3JvdXApCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkgJiYg
IXRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB1c2VkV29ya2Vycy5hZGQobmFtZSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXRoaXMuX3dvcmtlckxpc3QgfHwgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRXb3Jr
ZXJOYW1lU3BlY2lmaWVkKSB7CkBAIC0xOTIsNyArMjEzLDcgQEAgY2xhc3MgQnVpbGRib3RTeW5j
ZXIgewogICAgICAgICAgICAgICAgICAgICBpZiAoKCF0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQg
fHwgdGhpcy5fbGFzdENvbXBsZXRlZEJ1aWxkLmJ1aWxkVGFnKCkgPCBlbnRyeS5idWlsZFRhZygp
KSAmJiBlbnRyeS5oYXNGaW5pc2hlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5f
bGFzdENvbXBsZXRlZEJ1aWxkID0gZW50cnk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxldCBlbnRyeUxpc3QgPSBbXTsKICAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpZCBpbiBlbnRyeUJ5UmVxdWVzdCkKICAgICAgICAgICAgICAg
ICAgICAgZW50cnlMaXN0LnB1c2goZW50cnlCeVJlcXVlc3RbaWRdKTsKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5q
cwppbmRleCBkNjJjZGUwMjljMTc3OTE3M2M1ZjIxZWQ4NmFhZjFhMWMwM2RhOGEyLi4zNGE0N2Yz
NmM1NWJhODZkY2VlZWJlZjNiOWQzNmE0MWRhYTg4NzYxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCkBA
IC03LDcgKzcsNyBAQCByZXF1aXJlKCcuL3YzLW1vZGVscy5qcycpOwogbGV0IEJ1aWxkYm90U3lu
Y2VyID0gcmVxdWlyZSgnLi9idWlsZGJvdC1zeW5jZXInKS5CdWlsZGJvdFN5bmNlcjsKIAogY2xh
c3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7Ci0gICAgY29uc3RydWN0b3IoY29uZmlnLCByZW1vdGUs
IGJ1aWxkYm90UmVtb3RlLCB3b3JrZXJJbmZvLCBsb2dnZXIpCisgICAgY29uc3RydWN0b3IoY29u
ZmlnLCByZW1vdGUsIGJ1aWxkYm90UmVtb3RlLCB3b3JrZXJJbmZvLCBtYXhSZXRyeUZhY3Rvciwg
bG9nZ2VyKQogICAgIHsKICAgICAgICAgdGhpcy5fbmFtZSA9IGNvbmZpZy50cmlnZ2VyYWJsZU5h
bWU7CiAgICAgICAgIGFzc2VydCh0eXBlb2YodGhpcy5fbmFtZSkgPT0gJ3N0cmluZycsICd0cmln
Z2VyYWJsZU5hbWUgbXVzdCBiZSBzcGVjaWZpZWQnKTsKQEAgLTI1LDYgKzI1LDcgQEAgY2xhc3Mg
QnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAKICAgICAgICAgdGhpcy5fc3luY2VycyA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX2xvZ2dlciA9IGxvZ2dlciB8fCB7bG9nOiAoKSA9PiB7IH0sIGVycm9yOiAo
KSA9PiB7IH19OworICAgICAgICB0aGlzLl9tYXhSZXRyeUZhY3RvciA9IG1heFJldHJ5RmFjdG9y
OwogICAgIH0KIAogICAgIGdldEJ1aWxkZXJOYW1lVG9JRE1hcCgpCkBAIC04NSwxMyArODYsMjIg
QEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgIGNvbnN0IHZhbGlkUmVxdWVz
dHMgPSB0aGlzLl92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpOwogICAgICAgICBjb25z
dCBidWlsZFJlcXVlc3RzQnlHcm91cCA9IEJ1aWxkYm90VHJpZ2dlcmFibGUuX3Rlc3RHcm91cE1h
cEZvckJ1aWxkUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAgICAgICAgIGxldCB1cGRhdGVzID0g
YXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVzdHNCeUdyb3Vw
KTsKLSAgICAgICAgbGV0IHJvb3RSZXVzZVVwZGF0ZXMgPSB7fQorICAgICAgICBsZXQgcm9vdFJl
dXNlVXBkYXRlcyA9IHt9OwogICAgICAgICB0aGlzLl9sb2dnZXIubG9nKCdTY2hlZHVsaW5nIGJ1
aWxkcycpOwogICAgICAgICBjb25zdCB0ZXN0R3JvdXBMaXN0ID0gQXJyYXkuZnJvbShidWlsZFJl
cXVlc3RzQnlHcm91cC52YWx1ZXMoKSkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5n
cm91cE9yZGVyIC0gYi5ncm91cE9yZGVyOyB9KTsKIAotICAgICAgICBhd2FpdCBQcm9taXNlLmFs
bCh0ZXN0R3JvdXBMaXN0Lm1hcCgoZ3JvdXApID0+IFtncm91cCwgdGhpcy5fbmV4dFJlcXVlc3RJ
bkdyb3VwKGdyb3VwLCB1cGRhdGVzKV0pCi0gICAgICAgICAgICAuZmlsdGVyKChbZ3JvdXAsIHJl
cXVlc3RdKSA9PiB2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0KSkKLSAgICAgICAgICAgIC5tYXAo
KFtncm91cCwgcmVxdWVzdF0pID0+IHRoaXMuX3NjaGVkdWxlUmVxdWVzdChncm91cCwgcmVxdWVz
dCwgcm9vdFJldXNlVXBkYXRlcykpKTsKKyAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLmJ1
aWxkUmVxdWVzdHNCeUdyb3VwLmtleXMoKV0ubWFwKHRlc3RHcm91cElkID0+IFRlc3RHcm91cC5m
ZXRjaEJ5SWQodGVzdEdyb3VwSWQsIHRydWUpKSk7CisgICAgICAgIGZvciAoY29uc3QgZ3JvdXAg
b2YgdGVzdEdyb3VwTGlzdCkgeworICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuX25l
eHRSZXF1ZXN0SW5Hcm91cChncm91cCwgdXBkYXRlcyk7CisgICAgICAgICAgICBpZiAoIXZhbGlk
UmVxdWVzdHMuaGFzKHJlcXVlc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBjb25zdCBzaG91bGREZWZlciA9IHRoaXMuX3Nob3VsZERlZmVyU2VxdWVudGlhbFRl
c3RpbmdSZXF1ZXN0V2l0aE5ld0NvbW1pdFNldChyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmIChz
aG91bGREZWZlcikKKyAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIubG9nKGBEZWZlciBzY2hl
ZHVsaW5nIGJ1aWxkIHJlcXVlc3QgIiR7cmVxdWVzdC5pZCgpfSIgdW50aWwgY29tcGxldGVkIGJ1
aWxkIHJlcXVlc3RzIGZvciBwcmV2aW91cyBjb25maWd1cmF0aW9uIG1lZXQgdGhlIGV4cGVjdGF0
aW9uIG9yIGV4aGF1c3QgcmV0cnkuYCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYXdhaXQgdGhpcy5fc2NoZWR1bGVSZXF1ZXN0KGdyb3VwLCByZXF1ZXN0LCByb290UmV1c2VV
cGRhdGVzKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFB1bGwgYWxsIGJ1aWxkYm90cyBmb3Ig
dGhlIHNlY29uZCB0aW1lIHNpbmNlIHRoZSBwcmV2aW91cyBzdGVwIG1heSBoYXZlIHNjaGVkdWxl
ZCBtb3JlIGJ1aWxkcwogICAgICAgICB1cGRhdGVzID0gYXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90
T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVzdHNCeUdyb3VwKTsKQEAgLTEyMywxMSArMTMzLDQwIEBA
IGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3NjaGVkdWxlUmVxdWVzdElmV29ya2Vy
SXNBdmFpbGFibGUoYnVpbGRSZXF1ZXN0LCB0ZXN0R3JvdXAucmVxdWVzdHMsCisgICAgICAgIHJl
dHVybiB0aGlzLl9zY2hlZHVsZVJlcXVlc3RJZldvcmtlcklzQXZhaWxhYmxlKGJ1aWxkUmVxdWVz
dCwgdGVzdEdyb3VwLnJlcXVlc3RzLAogICAgICAgICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQo
KSA/IHRlc3RHcm91cC5idWlsZFN5bmNlciA6IHRlc3RHcm91cC50ZXN0U3luY2VyLAogICAgICAg
ICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRlc3RHcm91cC5idWlsZFdvcmtlck5hbWUg
OiB0ZXN0R3JvdXAudGVzdFdvcmtlck5hbWUpOwogICAgIH0KIAorICAgIF9zaG91bGREZWZlclNl
cXVlbnRpYWxUZXN0aW5nUmVxdWVzdFdpdGhOZXdDb21taXRTZXQoYnVpbGRSZXF1ZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gYnVpbGRSZXF1ZXN0LnRlc3RH
cm91cCgpOworICAgICAgICBpZiAodGVzdEdyb3VwLnJlcGV0aXRpb25UeXBlKCkgIT0gJ3NlcXVl
bnRpYWwnKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IG9yZGVy
ZWRCdWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLm9yZGVyZWRCdWlsZFJlcXVlc3RzKCk7CisgICAg
ICAgIGNvbnN0IGJ1aWxkUmVxdWVzdEluZGV4ID0gb3JkZXJlZEJ1aWxkUmVxdWVzdHMuaW5kZXhP
ZihidWlsZFJlcXVlc3QpOworICAgICAgICBpZiAoIWJ1aWxkUmVxdWVzdEluZGV4KQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdEJlZm9yZUN1
cnJlbnQgPSBvcmRlcmVkQnVpbGRSZXF1ZXN0c1tidWlsZFJlcXVlc3RJbmRleCAtIDFdOworICAg
ICAgICBpZiAoYnVpbGRSZXF1ZXN0QmVmb3JlQ3VycmVudC5pc0J1aWxkKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgcHJldmlvdXNDb21taXRTZXQgPSBidWls
ZFJlcXVlc3RCZWZvcmVDdXJyZW50LmNvbW1pdFNldCgpCisgICAgICAgIGlmIChwcmV2aW91c0Nv
bW1pdFNldCA9PT0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGlmICh0ZXN0R3JvdXAud2lsbEV4Y2VlZE1heFJldHJ5Rm9yQ29t
bWl0U2V0V2l0aFJldHJ5Q291bnQocHJldmlvdXNDb21taXRTZXQsIDAsIHRoaXMuX21heFJldHJ5
RmFjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdGVz
dEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSA+IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNv
bW1pdFNldChidWlsZFJlcXVlc3RCZWZvcmVDdXJyZW50LmNvbW1pdFNldCgpKQorICAgICAgICAg
ICAgLmZpbHRlcihyZXF1ZXN0ID0+IHJlcXVlc3QuaXNUZXN0KCkgJiYgcmVxdWVzdC5oYXNDb21w
bGV0ZWQoKSkubGVuZ3RoOworICAgIH0KKwogICAgIF92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVx
dWVzdHMpCiAgICAgewogICAgICAgICBjb25zdCB0ZXN0UGxhdGZvcm1QYWlycyA9IHt9OwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL21lYXN1cmVtZW50LXNl
dC1hbmFseXplci5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9tZWFzdXJl
bWVudC1zZXQtYW5hbHl6ZXIuanMKaW5kZXggYWI4NmExZDRlMzM3OTRiZTc4Y2ZiYmUwZjc2NTk5
ZWE4NTdiZWJhZi4uY2M2NTBjYTk0NWRiYWVkZjliOTVkNGZlMGQ5Y2ExNTg3OTI4MmFlMiAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL21lYXN1cmVtZW50LXNl
dC1hbmFseXplci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvbWVh
c3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgTWVhc3Vy
ZW1lbnRTZXRBbmFseXplciB7CiAgICAgICAgIGNvbnN0IHN0YXJ0Q29tbWl0U2V0ID0gcmFuZ2VX
aXRoTW9zdFNpZ25pZmljYW50Q2hhbmdlLnN0YXJ0UG9pbnQuY29tbWl0U2V0KCk7CiAgICAgICAg
IGNvbnN0IGVuZENvbW1pdFNldCA9IHJhbmdlV2l0aE1vc3RTaWduaWZpY2FudENoYW5nZS5lbmRQ
b2ludC5jb21taXRTZXQoKTsKICAgICAgICAgY29uc3Qgc3VtbWFyeSA9IGBQb3RlbnRpYWwgJHty
YW5nZVdpdGhNb3N0U2lnbmlmaWNhbnRDaGFuZ2UudmFsdWVDaGFuZ2VTdW1tYXJ5LmNoYW5nZUxh
YmVsfSBvbiAke3BsYXRmb3JtLm5hbWUoKX0gYmV0d2VlbiAke0NvbW1pdFNldC5kaWZmKHN0YXJ0
Q29tbWl0U2V0LCBlbmRDb21taXRTZXQpfWA7Ci0gICAgICAgIGNvbnN0IGNvbmZpcm1pbmdUYXNr
QXJndW1lbnRzID0gVHJpZ2dlcmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24obWV0cmljLnRl
c3QoKSwgcGxhdGZvcm0pID8gWydDb25maXJtJywgNCwgdHJ1ZV0gOiBbXTsKKyAgICAgICAgY29u
c3QgY29uZmlybWluZ1Rhc2tBcmd1bWVudHMgPSBUcmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmln
dXJhdGlvbihtZXRyaWMudGVzdCgpLCBwbGF0Zm9ybSkgPyBbJ0NvbmZpcm0nLCA0LCAnYWx0ZXJu
YXRpbmcnLCB0cnVlXSA6IFtdOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgaXRlcmF0aW9uIGNv
dW50IHNob3VsZCBiZSBzbWFydGVyIHRoYW4gaGFyZC1jb2RpbmcuCiAgICAgICAgIGNvbnN0IGFu
YWx5c2lzVGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5jcmVhdGUoc3VtbWFyeSwgcmFuZ2VXaXRo
TW9zdFNpZ25pZmljYW50Q2hhbmdlLnN0YXJ0UG9pbnQsCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1
ZXN0cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA1YmEyMjQ1Y2IwMmFlNGU5
MzMxMjZiNzg5NmE2YjI4YTMyMWU0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFp
bGVkLWJ1aWxkLXJlcXVlc3RzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotYXN5
bmMgZnVuY3Rpb24gY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0
aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIG1heGltdW1SZXRyeUZhY3RvcikKLXsKLSAgICBm
b3IgKGNvbnN0IHRlc3RHcm91cCBvZiB0ZXN0R3JvdXBzKSB7Ci0gICAgICAgIGlmICghdGVzdEdy
b3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIGlmICh0ZXN0R3JvdXAuaXNIaWRkZW4oKSkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEdy
b3VwLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQg
PSAwOwotICAgICAgICBsZXQgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNl
dCA9IHRydWU7Ci0gICAgICAgIGxldCBoYXNVbmZpbmlzaGVkQnVpbGRSZXF1ZXN0ID0gZmFsc2U7
Ci0gICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21t
aXRTZXRzKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAu
cmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4g
YnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKLQotICAgICAgICAgICAgY29uc3QgY29tcGxldGVkQnVp
bGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiBi
dWlsZFJlcXVlc3QuaGFzQ29tcGxldGVkKCkpLmxlbmd0aDsKLSAgICAgICAgICAgIGlmICghY29t
cGxldGVkQnVpbGRSZXF1ZXN0Q291bnQpCi0gICAgICAgICAgICAgICAgaGFzQ29tcGxldGVkQnVp
bGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCA9IGZhbHNlOwotCi0gICAgICAgICAgICBoYXNDb21w
bGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ICY9IChjb21wbGV0ZWRCdWlsZFJlcXVl
c3RDb3VudCA+IDApOwotICAgICAgICAgICAgY29uc3QgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENv
dW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gIWJ1aWxkUmVxdWVz
dC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICAvLyAicG90ZW50aWFsbHlTdWNj
ZXNzZnVsQ291bnQiIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRlc3RHcm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCkgYXMgdXNlciBtYXkgYWRkIGJ1aWxkIHJlcXVlc3RzIG1hbnVhbGx5LgotICAg
ICAgICAgICAgY29uc3QgcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQgPSBjb21wbGV0ZWRCdWls
ZFJlcXVlc3RDb3VudCArIHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudDsKLSAgICAgICAgICAg
IG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA9IE1hdGgubWF4KG1heE1pc3NpbmdCdWlsZFJl
cXVlc3RDb3VudCwgdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlh
bGx5U3VjY2Vzc2Z1bENvdW50KTsKLQotICAgICAgICAgICAgaWYgKHVuZmluaXNoZWRCdWlsZFJl
cXVlc3RDb3VudCkKLSAgICAgICAgICAgICAgICBoYXNVbmZpbmlzaGVkQnVpbGRSZXF1ZXN0ID0g
dHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjb25zdCB3aWxsRXhjZWVkTWF4aW11bVJldHJ5ID0g
dGVzdEdyb3VwLnJlcGV0aXRpb25Db3VudCgpICsgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
ID4gbWF4aW11bVJldHJ5RmFjdG9yICogdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KTsKLQotICAgICAgICBjb25zb2xlLmFzc2VydChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQg
PD0gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7Ci0gICAgICAgIGlmIChtYXhN
aXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFz
VW5maW5pc2hlZEJ1aWxkUmVxdWVzdCAmJiAhaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFj
aENvbW1pdFNldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChtYXhNaXNz
aW5nQnVpbGRSZXF1ZXN0Q291bnQgJiYgIXdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgJiYgaGFzQ29t
cGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCkgewotICAgICAgICAgICAgYXdhaXQg
dGVzdEdyb3VwLmFkZE1vcmVCdWlsZFJlcXVlc3RzKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3Vu
dCk7Ci0gICAgICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sgPSBhd2FpdCB0ZXN0R3JvdXAuZmV0
Y2hUYXNrKCk7Ci0gICAgICAgICAgICBjb25zb2xlLmxvZyhgQWRkZWQgJHttYXhNaXNzaW5nQnVp
bGRSZXF1ZXN0Q291bnR9IGJ1aWxkIHJlcXVlc3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0i
IG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlzaXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNr
Lm5hbWUoKX0iYCk7Ci0gICAgICAgIH0KLSAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmNsZWFyTWF5
TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7Ci0gICAgfQotfQotCi1pZiAodHlwZW9mIG1vZHVsZSAh
PT0gJ3VuZGVmaW5lZCcpCi0gICAgbW9kdWxlLmV4cG9ydHMuY3JlYXRlQWRkaXRpb25hbEJ1aWxk
UmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzID0gY3JlYXRlQWRkaXRpb25h
bEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9ydW4tYW5hbHlzaXMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVu
LWFuYWx5c2lzLmpzCmluZGV4IGQ2MGY4MWUxMmJkODc3YjdlNTA2YzBlZDAzNjViZGNmNzA1NTg4
OGYuLmEwMWUzZGNjMTlkMDE4YWM0ZTE5NWIzYWI3N2E4ZWUzZjdlMmI0MzggMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcwpAQCAtNiw3ICs2LDYg
QEAgY29uc3QgUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9qcy9yZW1vdGUuanMnKS5SZW1vdGVBUEk7
CiBjb25zdCBNZWFzdXJlbWVudFNldEFuYWx5emVyID0gcmVxdWlyZSgnLi9qcy9tZWFzdXJlbWVu
dC1zZXQtYW5hbHl6ZXIuanMnKS5NZWFzdXJlbWVudFNldEFuYWx5emVyOwogY29uc3QgQW5hbHlz
aXNSZXN1bHRzTm90aWZpZXIgPSByZXF1aXJlKCcuL2pzL2FuYWx5c2lzLXJlc3VsdHMtbm90aWZp
ZXIuanMnKS5BbmFseXNpc1Jlc3VsdHNOb3RpZmllcjsKIGNvbnN0IFN1YnByb2Nlc3MgPSByZXF1
aXJlKCcuL2pzL3N1YnByb2Nlc3MuanMnKS5TdWJwcm9jZXNzOwotY29uc3QgY3JlYXRlQWRkaXRp
b25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzID0gcmVxdWly
ZSgnLi9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMnKS5jcmVhdGVBZGRpdGlvbmFsQnVp
bGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHM7CiByZXF1aXJlKCcuL2pz
L3YzLW1vZGVscy5qcycpOwogZ2xvYmFsLlByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuL2pzL3By
aXZpbGVnZWQtYXBpLmpzJykuUHJpdmlsZWdlZEFQSTsKIApAQCAtMTcsNyArMTYsNiBAQCBmdW5j
dGlvbiBtYWluKGFyZ3YpCiAgICAgICAgIHtuYW1lOiAnLS1ub3RpZmljYXRpb24tY29uZmlnLWpz
b24nLCByZXF1aXJlZDogdHJ1ZX0sCiAgICAgICAgIHtuYW1lOiAnLS1hbmFseXNpcy1yYW5nZS1p
bi1kYXlzJywgdHlwZTogcGFyc2VGbG9hdCwgZGVmYXVsdDogMTB9LAogICAgICAgICB7bmFtZTog
Jy0tc2Vjb25kcy10by1zbGVlcCcsIHR5cGU6IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDEyMDB9LAot
ICAgICAgICB7bmFtZTogJy0tbWF4LXJldHJ5LWZhY3RvcicsIHR5cGU6IHBhcnNlRmxvYXQsIGRl
ZmF1bHQ6IDN9LAogICAgIF0pOwogCiAgICAgaWYgKCFvcHRpb25zKQpAQCAtNTEsMTAgKzQ5LDYg
QEAgYXN5bmMgZnVuY3Rpb24gYW5hbHlzaXNMb29wKG9wdGlvbnMpCiAKICAgICB0cnkgewogICAg
ICAgICBjb25zdCBub3RpZmljYXRpb25Db25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3lu
YyhvcHRpb25zWyctLW5vdGlmaWNhdGlvbi1jb25maWctanNvbiddLCAndXRmLTgnKSk7Ci0gICAg
ICAgIGNvbnN0IG1heGltdW1SZXRyeUZhY3RvciA9IG9wdGlvbnNbJy0tbWF4LXJldHJ5LWZhY3Rv
ciddOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzTWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGF3YWl0
IFRlc3RHcm91cC5mZXRjaEFsbFRoYXRNYXlOZWVkTW9yZVJlcXVlc3RzKCk7Ci0gICAgICAgIGF3
YWl0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRS
ZXF1ZXN0cyh0ZXN0R3JvdXBzTWF5TmVlZE1vcmVSZXF1ZXN0cywgbWF4aW11bVJldHJ5RmFjdG9y
KTsKLQogICAgICAgICBjb25zdCB0ZXN0R3JvdXBzTmVlZE5vdGlmaWNhdGlvbiA9IGF3YWl0IFRl
c3RHcm91cC5mZXRjaEFsbFdpdGhOb3RpZmljYXRpb25SZWFkeSgpOwogICAgICAgICBjb25zdCBu
b3RpZmljYXRpb25SZW1vdGVBUEkgPSBuZXcgUmVtb3RlQVBJKG5vdGlmaWNhdGlvbkNvbmZpZy5u
b3RpZmljYXRpb25TZXJ2ZXJDb25maWcpOwogICAgICAgICBjb25zdCBub3RpZmljYXRpb25NZXNz
YWdlQ29uZmlnID0gbm90aWZpY2F0aW9uQ29uZmlnLm5vdGlmaWNhdGlvbk1lc3NhZ2VDb25maWc7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWlsZGJv
dC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzCmlu
ZGV4IDZmMzUwZWIyNDgyY2Y2ZDE0OGNhODQxNDBhMmNkMDRkOGUzMDZlNDIuLmVmMzllMWFmNDky
YTEwNjIzM2QwNjMwN2U1OWZkM2I4ZDNjYTU1YWQgMTAwNzU1Ci0tLSBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzCkBAIC0xLDEwICsxLDEyIEBACiAjIS91c3Iv
bG9jYWwvYmluL25vZGUKICd1c2Ugc3RyaWN0JzsKIAotbGV0IEJ1aWxkYm90VHJpZ2dlcmFibGUg
PSByZXF1aXJlKCcuL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzJykuQnVpbGRib3RUcmlnZ2Vy
YWJsZTsKLWxldCBSZW1vdGVBUEkgPSByZXF1aXJlKCcuL2pzL3JlbW90ZS5qcycpLlJlbW90ZUFQ
STsKLWxldCBmcyA9IHJlcXVpcmUoJ2ZzJyk7Ci1sZXQgcGFyc2VBcmd1bWVudHMgPSByZXF1aXJl
KCcuL2pzL3BhcnNlLWFyZ3VtZW50cy5qcycpLnBhcnNlQXJndW1lbnRzOworY29uc3QgQnVpbGRi
b3RUcmlnZ2VyYWJsZSA9IHJlcXVpcmUoJy4vanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMnKS5C
dWlsZGJvdFRyaWdnZXJhYmxlOworY29uc3QgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNG
b3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzID0gcmVxdWlyZSgnLi9qcy9yZXRyeS1mYWls
ZWQtYnVpbGQtcmVxdWVzdHMnKS5jcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RH
cm91cHNXaXRoRmFpbGVkUmVxdWVzdHM7Citjb25zdCBSZW1vdGVBUEkgPSByZXF1aXJlKCcuL2pz
L3JlbW90ZS5qcycpLlJlbW90ZUFQSTsKK2NvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTsKK2NvbnN0
IHBhcnNlQXJndW1lbnRzID0gcmVxdWlyZSgnLi9qcy9wYXJzZS1hcmd1bWVudHMuanMnKS5wYXJz
ZUFyZ3VtZW50czsKK2dsb2JhbC5Qcml2aWxlZ2VkQVBJID0gcmVxdWlyZSgnLi9qcy9wcml2aWxl
Z2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEk7CiAKIGZ1bmN0aW9uIG1haW4oYXJndikKIHsKQEAg
LTEyLDYgKzE0LDcgQEAgZnVuY3Rpb24gbWFpbihhcmd2KQogICAgICAgICB7bmFtZTogJy0tc2Vy
dmVyLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ6IHRydWV9LAogICAgICAgICB7bmFtZTogJy0tYnVp
bGRib3QtY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0sCiAgICAgICAgIHtuYW1lOiAnLS1z
ZWNvbmRzLXRvLXNsZWVwJywgdHlwZTogcGFyc2VGbG9hdCwgZGVmYXVsdDogMTIwfSwKKyAgICAg
ICAge25hbWU6ICctLW1heC1yZXRyeS1mYWN0b3InLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0
OiAzfSwKICAgICBdKTsKICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
LDM4ICsyMiw1OCBAQCBmdW5jdGlvbiBtYWluKGFyZ3YpCiAgICAgc3luY0xvb3Aob3B0aW9ucyk7
CiB9CiAKLWZ1bmN0aW9uIHN5bmNMb29wKG9wdGlvbnMpCithc3luYyBmdW5jdGlvbiBzeW5jTG9v
cChvcHRpb25zKQogewogICAgIGxldCBzZXJ2ZXJDb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRG
aWxlU3luYyhvcHRpb25zWyctLXNlcnZlci1jb25maWctanNvbiddLCAndXRmOCcpKTsKICAgICBs
ZXQgYnVpbGRib3RDb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyct
LWJ1aWxkYm90LWNvbmZpZy1qc29uJ10sICd1dGY4JykpOwogICAgIGxldCBidWlsZGJvdFJlbW90
ZSA9IG5ldyBSZW1vdGVBUEkoYnVpbGRib3RDb25maWcuc2VydmVyKTsKKyAgICBjb25zdCBtYXhS
ZXRyeUZhY3RvciA9IG9wdGlvbnNbJy0tbWF4LXJldHJ5LWZhY3RvciddOwogCiAgICAgLy8gdjMg
bW9kZWxzIHVzZSB0aGUgZ2xvYmFsIFJlbW90ZUFQSSB0byBhY2Nlc3MgdGhlIHBlcmYgZGFzaGJv
YXJkLgogICAgIGdsb2JhbC5SZW1vdGVBUEkgPSBuZXcgUmVtb3RlQVBJKHNlcnZlckNvbmZpZy5z
ZXJ2ZXIpOworICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKHNlcnZlckNvbmZpZy53b3JrZXIu
bmFtZSwgc2VydmVyQ29uZmlnLndvcmtlci5wYXNzd29yZCk7CiAKLSAgICBjb25zb2xlLmxvZyhg
RmV0Y2hpbmcgdGhlIG1hbmlmZXN0Li4uYCk7CisgICAgdHJ5IHsKKyAgICAgICAgY29uc3QgdGVz
dEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hBbGxUaGF0
TWF5TmVlZE1vcmVSZXF1ZXN0cygpOworICAgICAgICBmb3IgKGNvbnN0IHRlc3RHcm91cCBvZiB0
ZXN0R3JvdXBzTWF5TmVlZE1vcmVSZXF1ZXN0cykgeworICAgICAgICAgICAgY29uc3QgcmV0cnlD
b3VudCA9IGF3YWl0IHRlc3RHcm91cC5zY2hlZHVsZVJldHJpZXNJZk5lY2Vzc2FyeShtYXhSZXRy
eUZhY3Rvcik7CisgICAgICAgICAgICBpZiAocmV0cnlDb3VudCkgeworICAgICAgICAgICAgICAg
IGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IHRlc3RHcm91cC5mZXRjaFRhc2soKTsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLmxvZyhgQWRkZWQgJHtyZXRyeUNvdW50fSBidWlsZCByZXF1ZXN0
KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lz
VGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgY29uc29sZS5lcnJvcihl
cnJvcik7CisgICAgICAgIGlmICh0eXBlb2YoZXJyb3Iuc3RhY2spID09ICdzdHJpbmcnKSB7Cisg
ICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KCdcbicpKQorICAg
ICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGluZSk7CisgICAgICAgIH0KKyAgICB9CiAKICAg
ICBjb25zdCBtYWtlVHJpZ2dlcmFibGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJldHVybiBu
ZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShidWlsZGJvdENvbmZpZywgZ2xvYmFsLlJlbW90ZUFQSSwg
YnVpbGRib3RSZW1vdGUsIHNlcnZlckNvbmZpZy53b3JrZXIsIGNvbnNvbGUpCisgICAgICAgIHJl
dHVybiBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShidWlsZGJvdENvbmZpZywgZ2xvYmFsLlJlbW90
ZUFQSSwgYnVpbGRib3RSZW1vdGUsIHNlcnZlckNvbmZpZy53b3JrZXIsIG1heFJldHJ5RmFjdG9y
LCBjb25zb2xlKQogICAgIH07CiAKLSAgICBNYW5pZmVzdC5mZXRjaCgpLnRoZW4oKCkgPT4gewot
ICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG1ha2VUcmlnZ2VyYWJsZSgpOwotICAgICAgICBy
ZXR1cm4gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnVw
ZGF0ZVRyaWdnZXJhYmxlKCkpOwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4g
TWFuaWZlc3QuZmV0Y2goKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgY29uc3QgdHJp
Z2dlcmFibGUgPSBtYWtlVHJpZ2dlcmFibGUoKTsKLSAgICAgICAgcmV0dXJuIHRyaWdnZXJhYmxl
LmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKLSAgICB9
KS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICB0cnkgeworICAgICAgICBjb25zb2xlLmxvZyhgRmV0
Y2hpbmcgdGhlIG1hbmlmZXN0Li4uYCk7CisgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7
CisgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG1ha2VUcmlnZ2VyYWJsZSgpOworICAgICAgICBh
d2FpdCB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpOworICAgICAgICBhd2FpdCB0cmlnZ2VyYWJs
ZS51cGRhdGVUcmlnZ2VyYWJsZSgpOworCisgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7
CisgICAgICAgIHRyaWdnZXJhYmxlID0gbWFrZVRyaWdnZXJhYmxlKCk7CisgICAgICAgIGF3YWl0
IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCk7CisgICAgICAgIGF3YWl0IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgY29uc29sZS5lcnJvcihl
cnJvcik7CiAgICAgICAgIGlmICh0eXBlb2YoZXJyb3Iuc3RhY2spID09ICdzdHJpbmcnKSB7CiAg
ICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KCdcbicpKQogICAg
ICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGluZSk7CiAgICAgICAgIH0KLSAgICB9KS50aGVu
KCgpID0+IHsKLSAgICAgICAgc2V0VGltZW91dChzeW5jTG9vcC5iaW5kKGdsb2JhbCwgb3B0aW9u
cyksIG9wdGlvbnNbJy0tc2Vjb25kcy10by1zbGVlcCddICogMTAwMCk7Ci0gICAgfSk7CisgICAg
fQorCisgICAgc2V0VGltZW91dChzeW5jTG9vcC5iaW5kKGdsb2JhbCwgb3B0aW9ucyksIG9wdGlv
bnNbJy0tc2Vjb25kcy10by1zbGVlcCddICogMTAwMCk7CiB9CiAKIG1haW4ocHJvY2Vzcy5hcmd2
KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5
c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9h
bmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDhkMjhhYzRmYWZjNDhlYWExNzgyYzVkZjFlYWI3
NzcwOTJkODdmMTQuLjJlNjcwYjA3OTUxMTRlYjY3NTUyNWMyZGY3YmVhMTM4ZDMzOGU3YzAgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRh
c2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5h
bHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtMzA3LDcgKzMwNyw3IEBAIGRlc2NyaWJlKCdBbmFseXNp
c1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFz
ayB3aXRoIGNvbmZpcm1pbmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCBhc3luYyAoKSA9
PiB7CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0
QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJt
Jywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAg
ICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdD
b25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC0zMTgsNyArMzE4LDcgQEAgZGVzY3JpYmUo
J0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291
bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6
IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5n
JywKICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1l
OiAnQ29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAg
ICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHty
ZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51
bGx9fSwKQEAgLTMyOSw3ICszMjksNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4g
ewogCiAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIGFuYWx5c2lzIHRhc2sgYW5kIHRlc3QgZ3Jv
dXBzIHdpdGggIm5lZWRzTm90aWZpY2F0aW9uIiBzZXQgdG8gZmFsc2UgaWYgc3BlY2lmaWVkIGlu
IGNyZWF0aW9uJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IG1vY2tTdGFydEFuZEVuZFBvaW50cygpOwotICAgICAgICAgICAgQW5hbHlz
aXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScs
IDQsIGZhbHNlKTsKKyAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBz
dGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCBmYWxzZSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJh
dGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC0z
NDAsNyArMzQwLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5
c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIp
OwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTog
J2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdj
b25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJl
cGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAx
LCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZp
c2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtp
dC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAg
ICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25l
clJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzUxLDcgKzM1MSw3IEBAIGRlc2Ny
aWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBzeW5jIHRo
ZSBuZXcgYW5hbHlzaXMgdGFzayBzdGF0dXMgb25jZSBpdCBpcyBjcmVhdGVkJywgYXN5bmMgKCkg
PT4gewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IG1vY2tTdGFy
dEFuZEVuZFBvaW50cygpOwotICAgICAgICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5h
bHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmly
bScsIDQsIHRydWUpOworICAgICAgICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlz
aXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScs
IDQsICdhbHRlcm5hdGluZycsIHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJl
cXVlc3RzWzBdLnJlc29sdmUoewpAQCAtMzYyLDcgKzM2Miw3IEBAIGRlc2NyaWJlKCdBbmFseXNp
c1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JS
ZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
cmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBu
ZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVk
c05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAg
ICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZp
cm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7
JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxs
LCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246
ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBA
IC00MTIsNyArNDEyLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKIAogICAg
ICAgICBpdCgnc2hvdWxkIHJldHVybiBhbiByZWplY3RlZCBwcm9taXNlIHdoZW4gYW5hbHlzaXMg
dGFzayBjcmVhdGlvbiBmYWlsZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBb
c3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAg
ICAgICBjb25zdCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJt
Jywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAg
ICBjb25zdCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywg
c3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJh
dGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC00
MjMsNyArNDIzLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5
c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIp
OwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTog
J2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2Nv
bmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBl
dGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwg
ZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNp
b25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQt
cmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJS
ZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTQ1NywxMSArNDU3LDExIEBAIGRlc2Ny
aWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUg
YW5hbHlzaXMgdGFzayB3aXRoIGNvbmZpcm1pbmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQn
LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9j
a1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdj
b25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAg
ICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9p
bnQsICdDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNp
cy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge25hbWU6ICdj
b25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2Vy
Jywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46
IDEsIGVuZFJ1bjogMiwgd29ya2VyTmFtZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFz
c3dvcmQnLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICB0
ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAg
ICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9u
OiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2
aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fX0sCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWls
ZGJvdC1zeW5jZXItdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0
cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMKaW5kZXggODc5ODZkMzZmNTZmYzUzZjg5ZGFjMGVj
ZTUwOWExNDk3YWIzNzFjZS4uMDM0MmFjMDFhNGFmNWRiY2MxNTY5NjIyYTJkYjFkNjVhN2MyNjI3
MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRi
b3Qtc3luY2VyLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGZ1bmN0aW9u
IGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChwbGF0Zm9ybSwgdGVzdCkKIAogICAgIHJldHVybiBC
dWlsZFJlcXVlc3QuZW5zdXJlU2luZ2xldG9uKCcxNjczMy0nICsgcGxhdGZvcm0uaWQoKSwgeyd0
cmlnZ2VyYWJsZSc6IE1vY2tNb2RlbHMudHJpZ2dlcmFibGUsCiAgICAgICAgIHJlcG9zaXRvcnlH
cm91cDogTW9ja01vZGVscy5zdm5SZXBvc2l0b3J5R3JvdXAsCi0gICAgICAgICdjb21taXRTZXQn
OiBjb21taXRTZXQsICdzdGF0dXMnOiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAn
dGVzdCc6IHRlc3R9KTsKKyAgICAgICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6
ICdwZW5kaW5nJywgJ3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdCwgb3JkZXI6IDB9
KTsKIH0KIAogZnVuY3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0V2l0aFBhdGNoKHBsYXRm
b3JtLCB0ZXN0LCBvcmRlcikKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5q
cwppbmRleCAwN2ZjYjNkYjNkZTZiMTJlNmI5NDdjYzYzMGNkMDdiYjZhMDRmYmJhLi4wOTA3YTBi
MDE2YTA1MTQ4MzQ3ZGNiM2Y0NzdlMmE5MjU5OGFhZmJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMu
anMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQt
c2V0LWFuYWx5emVyLXRlc3RzLmpzCkBAIC0yMzUsNiArMjM1LDcgQEAgZGVzY3JpYmUoJ01lYXN1
cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNv
dW50OiA0LAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAg
ICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBl
dGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6
IFt7JzExJzoge3JldmlzaW9uOiAzNSwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9
fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAgICAgICB9KTsKQEAgLTI5NCw2ICsyOTUs
NyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAg
ICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFt
ZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAor
ICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAg
ICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2aXNpb246IDM1LCBvd25lclJldmlzaW9u
OiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3Jldmlz
aW9uOiA0NCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAg
IH0pOwpAQCAtNTI2LDYgKzUyOCw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVy
JywgKCkgPT4gewogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAg
ICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNO
b3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRl
cm5hdGluZycsCiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lv
bjogNDAsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAg
ICAgICAgIHsnMTEnOiB7cmV2aXNpb246IDQ5LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDog
bnVsbH19XQogICAgICAgICAgICAgfSk7CkBAIC02MTgsNiArNjIxLDcgQEAgZGVzY3JpYmUoJ01l
YXN1cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlv
bkNvdW50OiA0LAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAg
ICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICBy
ZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNl
dHM6IFt7JzExJzoge3JldmlzaW9uOiAzLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVs
bH19LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA4LCBvd25lclJldmlz
aW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVx
dWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRy
eS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA4MmQ4MGRjYTVlZjhmMDgzNTg5YzY1NDFiYTI0NTZhZmQxMjg2MjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotY29uc3QgYXNz
ZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Ci1yZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMu
anMnKTsKLWNvbnN0IE1vY2tNb2RlbHMgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1v
ZGVscy5qcycpLk1vY2tNb2RlbHM7Ci1jb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQSTsKLWNvbnN0IE5vZGVQ
cml2aWxlZ2VkQVBJID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvcHJpdmlsZWdlZC1hcGknKS5Qcml2
aWxlZ2VkQVBJOwotY29uc3QgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3Jv
dXBzV2l0aEZhaWxlZFJlcXVlc3RzID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvcmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJykuY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3Jv
dXBzV2l0aEZhaWxlZFJlcXVlc3RzOwotCi0KLWZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25m
aWcpIHsKLSAgICBjb25zdCBuZWVkc05vdGlmaWNhdGlvbiA9IGNvbmZpZy5uZWVkc05vdGlmaWNh
dGlvbjsKLSAgICBjb25zdCBpbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gY29uZmlnLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQ7Ci0gICAgY29uc3QgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGNvbmZpZy5t
YXlOZWVkTW9yZVJlcXVlc3RzOwotICAgIGNvbnN0IGhpZGRlbiA9IGNvbmZpZy5oaWRkZW47Ci0g
ICAgY29uc3Qgc3RhdHVzTGlzdCA9IGNvbmZpZy5zdGF0dXNMaXN0OwotCi0gICAgcmV0dXJuIHsK
LSAgICAgICAgInRlc3RHcm91cHMiOiBbewotICAgICAgICAgICAgImlkIjogIjIxMjgiLAotICAg
ICAgICAgICAgInRhc2siOiAiMTM3NiIsCi0gICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAot
ICAgICAgICAgICAgIm5hbWUiOiAiQ29uZmlybSIsCi0gICAgICAgICAgICAiYXV0aG9yIjogInJu
aXdhIiwKLSAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwLAotICAgICAgICAg
ICAgaGlkZGVuLAotICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb24sCi0gICAgICAgICAgICAi
YnVpbGRSZXF1ZXN0cyI6IFsiMTY5ODUiLCAiMTY5ODYiLCAiMTY5ODciLCAiMTY5ODgiLCAiMTY5
ODkiLCAiMTY5OTAiXSwKLSAgICAgICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYi
XSwKLSAgICAgICAgICAgICJub3RpZmljYXRpb25TZW50QXQiOiBudWxsLAotICAgICAgICAgICAg
aW5pdGlhbFJlcGV0aXRpb25Db3VudCwKLSAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMK
LSAgICAgICAgfV0sCi0gICAgICAgICJidWlsZFJlcXVlc3RzIjogW3sKLSAgICAgICAgICAgICJp
ZCI6ICIxNjk4NSIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAg
ICAidGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAg
ICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMCIsCi0gICAg
ICAgICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1
c0xpc3RbMF0sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6
IG51bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9
LCB7Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODYiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxl
IjogIjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAg
Im9yZGVyIjogIjEiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKLSAgICAgICAg
ICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzFdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0g
ICAgICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2
ODg1MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTg3IiwKLSAgICAg
ICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0g
ICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIy
MTI4IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIyIiwKLSAgICAgICAgICAgICJjb21taXRTZXQi
OiAiNDI1NSIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKLSAgICAgICAg
ICAgICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAg
ICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJp
ZCI6ICIxNjk4OCIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAg
ICAidGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAg
ICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAg
ICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1
c0xpc3RbM10sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6
IG51bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9
LCB7Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODkiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxl
IjogIjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAg
Im9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKLSAgICAgICAg
ICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzRdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0g
ICAgICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2
ODg1MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTkwIiwKLSAgICAg
ICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0g
ICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIy
MTI4IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJjb21taXRTZXQi
OiAiNDI1NiIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKLSAgICAgICAg
ICAgICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAg
ICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH1dLAotICAgICAgICAiY29tbWl0
U2V0cyI6IFt7Ci0gICAgICAgICAgICAiaWQiOiAiNDI1NSIsCi0gICAgICAgICAgICAicmV2aXNp
b25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1pdCI6ICI5MzExNiJ9XSwKLSAg
ICAgICAgICAgICJjdXN0b21Sb290cyI6IFtdLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAi
aWQiOiAiNDI1NiIsCi0gICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4
NzgzMiJ9LCB7ImNvbW1pdCI6ICI5NjMzNiJ9XSwKLSAgICAgICAgICAgICJjdXN0b21Sb290cyI6
IFtdLAotICAgICAgICB9XSwKLSAgICAgICAgImNvbW1pdHMiOiBbewotICAgICAgICAgICAgImlk
IjogIjg3ODMyIiwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAotICAgICAgICAgICAg
InJldmlzaW9uIjogIjEwLjExIDE1QTI4NCIsCi0gICAgICAgICAgICAidGltZSI6IDAKLSAgICAg
ICAgfSwgewotICAgICAgICAgICAgImlkIjogIjkzMTE2IiwKLSAgICAgICAgICAgICJyZXBvc2l0
b3J5IjogIjExIiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTE2MjIiLAotICAgICAgICAg
ICAgInRpbWUiOiAxNDQ1OTQ1ODE2ODc4Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6
ICI4NzgzMiIsCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICI5IiwKLSAgICAgICAgICAgICJy
ZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQiLAotICAgICAgICAgICAgInRpbWUiOiAwCi0gICAgICAg
IH0sIHsKLSAgICAgICAgICAgICJpZCI6ICI5NjMzNiIsCi0gICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICIxMSIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTkyNzM2IiwKLSAgICAgICAgICAg
ICJ0aW1lIjogMTQ0ODIyNTMyNTY1MAotICAgICAgICB9XSwKLSAgICAgICAgInVwbG9hZGVkRmls
ZXMiOiBbXSwKLSAgICAgICAgInN0YXR1cyI6ICJPSyIKLSAgICB9OwotfQotCi1kZXNjcmliZSgn
Y3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVl
c3RzJywgKCkgPT4gewotICAgIGxldCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KG51
bGwsIE5vZGVQcml2aWxlZ2VkQVBJKTsKLSAgICBNb2NrTW9kZWxzLmluamVjdCgpOwotICAgIGJl
Zm9yZUVhY2goKCkgPT4gewotICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgnd29ya2Vy
X25hbWUnLCAncGFzc3dvcmQnKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgYWRkIG9uZSBt
b3JlIGJ1aWxkIHJlcXVlc3Qgd2hlbiBvbmUgb2YgdGhlIGV4aXN0aW5nIHJlcXVlc3RzIGZhaWxl
ZCcsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRz
Tm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1v
cmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6
IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNv
bXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3Jv
dXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91
cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVh
dGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMo
dGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEp
OwotCi0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1h
cGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVz
dHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAn
cGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMX0pOwotICAgICAgICByZXF1ZXN0
c1swXS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcp
OwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBhZGQgMiBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdo
ZW4gMiBmYWlsZWQgYnVpbGQgcmVxdWVzdCBmb3VuZCBmb3IgYSBjb21taXQgc2V0JywgYXN5bmMg
KCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0
ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZh
aWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBD
b25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxC
dWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAz
KTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQt
cmVxdWVzdHMnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIGFkZENvdW50OiAyfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
KTsKLQotICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7Ci0gICAgfSk7Ci0K
LSAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWxs
IHJlcXVlc3RzIGZvciBhIGNvbW1pdCBzZXQgaGFkIGZhaWxlZCcsIGFzeW5jICgpID0+IHsKLSAg
ICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwg
aW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlk
ZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAg
ICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAg
ICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRU
ZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKLSAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dv
cmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1h
eU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVx
dWVzdHMgd2hlbiAibWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgaXMgbm90IHNldCcsIGFzeW5jICgp
ID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9u
OiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czog
ZmFsc2UsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRl
ZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFp
bGVkIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENv
bmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1
aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMp
OwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICB9KTsKLQot
ICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiBidWls
ZCByZXF1ZXN0IGlzIGhpZGRlbicsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdy
b3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25D
b3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiB0cnVlLAotICAgICAg
ICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJj
b21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9
IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7
Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhG
YWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwotICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3Jr
ZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0
czogZmFsc2V9KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwotCi0g
ICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0IHdoZW4gd2VcJ3Zl
IGFscmVhZHkgaGl0IHRoZSBtYXhpbXVtIHJldHJ5IGNvdW50JywgYXN5bmMgKCkgPT4gewotICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBp
bml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRk
ZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxl
dGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAg
Y29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RH
cm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVz
dEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAxLjUpOwotICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7Ci0gICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3Jr
ZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlO
ZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOwotICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7
Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIHdoZW4gYWRkaXRp
b25hbCBidWlsZCByZXF1ZXN0cyBhcmUgc3RpbGwgcGVuZGluZycsIGFzeW5jICgpID0+IHsKLSAg
ICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwg
aW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlk
ZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgInBlbmRpbmciLCAicGVuZGluZyJdfTsKLSAgICAg
ICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRl
c3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9y
VGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwotICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29y
a2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5
TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgp
OwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3QgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0
IGZsYWcgd2hlbiBvbmUgY29tbWl0IHNldCBoYXMgbm90IGdvdCBhIHN1Y2Nlc3NmdWwgcnVuIGJ1
dCBoYXZlIHBlbmRpbmcgYnVpbGRzJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0
R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlv
bkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAg
ICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIs
ICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OwotICAgICAgICBjb25zdCBkYXRhID0g
c2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsK
LSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZh
aWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAwKTsKLSAgICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwppbmRleCA1YWE5MWU4
YWEwMmUxMWE2NjQ1MWQzMWQ5NjM2OTZjZWQ4ZDQ5ODNlLi5jYWQ5MjU2OTc4ZGFlZTZjZGNiZDJl
YTJiMWZjZjBmMzczZTcyY2I2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwpAQCAtNyw3ICs3LDcgQEAgY29u
c3QgTm9kZVByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuLi90b29scy9qcy9wcml2aWxlZ2VkLWFw
aS5qcycpLlByaXZpbGVnZWRBUEkKIGNvbnN0IE1vY2tNb2RlbHMgPSByZXF1aXJlKCcuL3Jlc291
cmNlcy9tb2NrLXYzLW1vZGVscy5qcycpLk1vY2tNb2RlbHM7CiBjb25zdCBNb2NrUmVtb3RlQVBJ
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQ
STsKIAotZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5lZWRzTm90aWZpY2F0aW9uPXRydWUsIGlu
aXRpYWxSZXBldGl0aW9uQ291bnQ9MiwgbWF5TmVlZE1vcmVSZXF1ZXN0cz10cnVlKSB7CitmdW5j
dGlvbiBzYW1wbGVUZXN0R3JvdXAobmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCBpbml0aWFsUmVw
ZXRpdGlvbkNvdW50ID0gMiwgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IHRydWUpIHsKICAgICByZXR1
cm4gewogICAgICAgICAidGVzdEdyb3VwcyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiMjEyOCIs
CkBAIC0xMDksNiArMTA5LDE0MCBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAobmVlZHNOb3Rp
ZmljYXRpb249dHJ1ZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudD0yLCBtYXlOZQogICAgIH07CiB9
CiAKK2Z1bmN0aW9uIHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KGNvbmZpZykgeworICAgIGNvbnN0
IG5lZWRzTm90aWZpY2F0aW9uID0gY29uZmlnLm5lZWRzTm90aWZpY2F0aW9uOworICAgIGNvbnN0
IGluaXRpYWxSZXBldGl0aW9uQ291bnQgPSBjb25maWcuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsK
KyAgICBjb25zdCBtYXlOZWVkTW9yZVJlcXVlc3RzID0gY29uZmlnLm1heU5lZWRNb3JlUmVxdWVz
dHM7CisgICAgY29uc3QgaGlkZGVuID0gY29uZmlnLmhpZGRlbjsKKyAgICBjb25zdCBzdGF0dXNM
aXN0ID0gY29uZmlnLnN0YXR1c0xpc3Q7CisgICAgY29uc3QgY29tbWl0U2V0TGlzdCA9IGNvbmZp
Zy5jb21taXRTZXRMaXN0IHx8IFsnNDI1NScsICc0MjU2JywgJzQyNTUnLCAnNDI1NicsICc0MjU1
JywgJzQyNTYnXTsKKyAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IGNvbmZpZy5yZXBldGl0aW9u
VHlwZSB8fCAnYWx0ZXJuYXRpbmcnOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRlc3RHcm91
cHMiOiBbeworICAgICAgICAgICAgImlkIjogIjIxMjgiLAorICAgICAgICAgICAgInRhc2siOiAi
MTM3NiIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgIm5hbWUi
OiAiQ29uZmlybSIsCisgICAgICAgICAgICAiYXV0aG9yIjogInJuaXdhIiwKKyAgICAgICAgICAg
ICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwLAorICAgICAgICAgICAgaGlkZGVuLAorICAgICAg
ICAgICAgbmVlZHNOb3RpZmljYXRpb24sCisgICAgICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFsi
MTY5ODUiLCAiMTY5ODYiLCAiMTY5ODciLCAiMTY5ODgiLCAiMTY5ODkiLCAiMTY5OTAiXSwKKyAg
ICAgICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYiXSwKKyAgICAgICAgICAgICJu
b3RpZmljYXRpb25TZW50QXQiOiBudWxsLAorICAgICAgICAgICAgaW5pdGlhbFJlcGV0aXRpb25D
b3VudCwKKyAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMsCisgICAgICAgICAgICByZXBl
dGl0aW9uVHlwZQorICAgICAgICB9XSwKKyAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbeworICAg
ICAgICAgICAgImlkIjogIjE2OTg1IiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwK
KyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEi
LAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6
ICIwIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzBdLAorICAgICAg
ICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMF0sCisgICAgICAgICAgICAidXJsIjogbnVsbCwK
KyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1
ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiMTY5ODYiLAorICAg
ICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwK
KyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjog
IjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjEiLAorICAgICAgICAgICAgImNvbW1pdFNl
dCI6IGNvbW1pdFNldExpc3RbMV0sCisgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsx
XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwK
KyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICJpZCI6ICIxNjk4NyIsCisgICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIs
CisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMx
IiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIi
OiAiMiIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFsyXSwKKyAgICAg
ICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzJdLAorICAgICAgICAgICAgInVybCI6IG51bGws
CisgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0
NTg2ODg1MTQwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTg4IiwKKyAg
ICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIs
CisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6
ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIzIiwKKyAgICAgICAgICAgICJjb21taXRT
ZXQiOiBjb21taXRTZXRMaXN0WzNdLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3Rb
M10sCisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGws
CisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAiaWQiOiAiMTY5ODkiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMi
LAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIz
MSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVy
IjogIjQiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbNF0sCisgICAg
ICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs0XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxs
LAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAx
NDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk5MCIsCisg
ICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQi
LAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAi
OiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiNSIsCisgICAgICAgICAgICAiY29tbWl0
U2V0IjogY29tbWl0U2V0TGlzdFs1XSwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0
WzVdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxs
LAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfV0sCisg
ICAgICAgICJjb21taXRTZXRzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICI0MjU1IiwKKyAgICAg
ICAgICAgICJyZXZpc2lvbkl0ZW1zIjogW3siY29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0Ijog
IjkzMTE2In1dLAorICAgICAgICAgICAgImN1c3RvbVJvb3RzIjogW10sCisgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICJpZCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjog
W3siY29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0IjogIjk2MzM2In1dLAorICAgICAgICAgICAg
ImN1c3RvbVJvb3RzIjogW10sCisgICAgICAgIH1dLAorICAgICAgICAiY29tbWl0cyI6IFt7Cisg
ICAgICAgICAgICAiaWQiOiAiODc4MzIiLAorICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIs
CisgICAgICAgICAgICAicmV2aXNpb24iOiAiMTAuMTEgMTVBMjg0IiwKKyAgICAgICAgICAgICJ0
aW1lIjogMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiOTMxMTYiLAorICAgICAg
ICAgICAgInJlcG9zaXRvcnkiOiAiMTEiLAorICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MTYy
MiIsCisgICAgICAgICAgICAidGltZSI6IDE0NDU5NDU4MTY4NzgKKyAgICAgICAgfSwgeworICAg
ICAgICAgICAgImlkIjogIjg3ODMyIiwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAor
ICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4NCIsCisgICAgICAgICAgICAidGlt
ZSI6IDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjk2MzM2IiwKKyAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIjExIiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTI3MzYi
LAorICAgICAgICAgICAgInRpbWUiOiAxNDQ4MjI1MzI1NjUwCisgICAgICAgIH1dLAorICAgICAg
ICAidXBsb2FkZWRGaWxlcyI6IFtdLAorICAgICAgICAic3RhdHVzIjogIk9LIgorICAgIH07Cit9
CisKIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgTW9ja01vZGVscy5p
bmplY3QoKTsKICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KCdodHRw
czovL3BlcmYud2Via2l0Lm9yZycsIEJyb3dzZXJQcml2aWxlZ2VkQVBJKTsKQEAgLTI0OSw3ICsz
ODMsNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLmlzSGlkZGVuKCksIGZhbHNlKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbCgrZ3JvdXAuY3JlYXRlZEF0KCksIDE0NTg2ODg1MTQwMDApOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBzYW1wbGVUZXN0R3JvdXAo
KVsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCAvIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgc2FtcGxlVGVzdEdyb3VwKClbJ2J1aWxk
UmVxdWVzdHMnXS5sZW5ndGggLyAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayhncm91cC5oYXNQ
ZW5kaW5nKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5oYXNGaW5pc2hlZCgpKTsK
ICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAuaGFzU3RhcnRlZCgpKTsKQEAgLTQ2Miw3ICs1
OTYsNyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
c2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQsICcxOTE2MjMn
KTsKICAgICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMu
c2hhcmVkUmVwb3NpdG9yeSwgJzgwMjI5Jyk7CiAKLSAgICAgICAgICAgIGNvbnN0IHByb21pc2Ug
PSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUtdGFzaycsIE1vY2tNb2RlbHMuc29tZVBs
YXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29tZS1ncm91cCcsIDQsIFtzZXQxLCBzZXQy
XSwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gVGVzdEdyb3VwLmNyZWF0ZVdp
dGhUYXNrKCdzb21lLXRhc2snLCBNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVscy5z
b21lVGVzdCwgJ3NvbWUtZ3JvdXAnLCA0LCAnYWx0ZXJuYXRpbmcnLCBbc2V0MSwgc2V0Ml0sIHRy
dWUsICdhbHRlcm5hdGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3Rz
WzFdLnJlc29sdmUoewpAQCAtNDc1LDcgKzYwOSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJdLmRh
dGEsIHt0YXNrTmFtZTogJ3NvbWUtdGFzaycsIG5hbWU6ICdzb21lLWdyb3VwJywgcGxhdGZvcm06
IDY1LCB0ZXN0OiAxLAogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwgcmV2aXNp
b25TZXRzOiBbeycxMSc6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNp
b246ICIxOTE2MjIifSwKICAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19LCB7JzExJzoge293bmVyUmV2
aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMyJ9LAotICAgICAgICAg
ICAgICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlz
aW9uOiAiODAyMjkifX1dLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdG9rZW46ICdhYmMnfSk7
CisgICAgICAgICAgICAgICAgICAgICcxNic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDog
bnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBl
dGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAgICAg
ICAgICB0YXNrSWQ6IDEyMywKQEAgLTQ4Niw2ICs2MjAsMTkxIEBAIGRlc2NyaWJlKCdUZXN0R3Jv
dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10u
bWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJs
LCAnL2FwaS9hbmFseXNpcy10YXNrcz9pZD0xMjMnKTsKICAgICAgICAgfSk7Ci0gICAgfSkKKyAg
ICB9KTsKKworICAgIGRlc2NyaWJlKCdjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRl
c3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7CisgICAgICAgIGxldCByZXF1ZXN0
cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KG51bGwsIE5vZGVQcml2aWxlZ2VkQVBJKTsKKyAgICAg
ICAgTW9ja01vZGVscy5pbmplY3QoKTsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg
ICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgnd29ya2VyX25hbWUnLCAncGFzc3dvcmQn
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1vcmUgYnVpbGQg
cmVxdWVzdCB3aGVuIG9uZSBvZiB0aGUgZXhpc3RpbmcgcmVxdWVzdHMgZmFpbGVkJywgYXN5bmMg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBb
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21w
bGV0ZWQiLCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RH
cm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7
CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnNjaGVkdWxlUmV0cmllc0lmTmVjZXNzYXJ5KDMp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRk
LWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bh
c3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogbnVsbH0pOwor
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sx
XS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCBhZGQgMiBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gMiBmYWlsZWQgYnVpbGQg
cmVxdWVzdCBmb3VuZCBmb3IgYSBjb21taXQgc2V0JywgYXN5bmMgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5p
dGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVu
OiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWls
ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19Owor
ICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91
cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVh
dGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3Jv
dXBzWzBdLnNjaGVkdWxlUmV0cmllc0lmTmVjZXNzYXJ5KDMpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1l
OiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4
JywgYWRkQ291bnQ6IDIsIGNvbW1pdFNldDogbnVsbH0pOworICAgICAgICAgICAgcmVxdWVzdHNb
MF0ucmVzb2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JS
ZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3Jv
dXBzLzIxMjgnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1
bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuIGFsbCByZXF1ZXN0cyBmb3IgYSBjb21taXQgc2V0
IGhhZCBmYWlsZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBD
b25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50
OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAg
ICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAi
ZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRh
ID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVz
dEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVSZXRyaWVz
SWZOZWNlc3NhcnkoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2
aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2Vy
UGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6
IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgICAgIH0p
OwogCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMg
d2hlbiAibWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgaXMgbm90IHNldCcsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZh
bHNlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxl
dGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJm
YWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0
cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0
R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAg
ICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVSZXRyaWVzSWZOZWNlc3NhcnkoMyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuIGJ1
aWxkIHJlcXVlc3QgaXMgaGlkZGVuJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3Qg
dGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0
aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiB0cnVlLAor
ICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21w
bGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAg
ICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsK
KyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zy
b21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2No
ZWR1bGVSZXRyaWVzSWZOZWNlc3NhcnkoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9u
YW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7
CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVp
bGQgcmVxdWVzdCB3aGVuIHdlXCd2ZSBhbHJlYWR5IGhpdCB0aGUgbWF4aW11bSByZXRyeSBjb3Vu
dCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3Rh
dHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAi
ZmFpbGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0
R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEp
OworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5zY2hlZHVsZVJldHJpZXNJZk5lY2Vzc2FyeSgx
LjUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
dXBkYXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVz
dHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAn
cGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOwor
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIHdoZW4gYWRkaXRpb25hbCBidWlsZCByZXF1
ZXN0cyBhcmUgc3RpbGwgcGVuZGluZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBl
dGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2Us
CisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImZhaWxlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OworICAgICAgICAgICAg
Y29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9t
RmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnNjaGVk
dWxlUmV0cmllc0lmTmVjZXNzYXJ5KDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFt
ZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9y
ZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBjbGVhciBtYXlOZWVkTW9yZVJl
cXVlc3QgZmxhZyB3aGVuIG9uZSBjb21taXQgc2V0IGhhcyBub3QgZ290IGEgc3VjY2Vzc2Z1bCBy
dW4gYnV0IGhhdmUgcGVuZGluZyBidWlsZHMnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFs
UmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZh
bHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIs
ICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgInBlbmRpbmciLCAicGVuZGluZyJdfTsKKyAgICAgICAg
ICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcp
OworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5z
Y2hlZHVsZVJldHJpZXNJZk5lY2Vzc2FyeSgzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGFk
ZCB0d28gbW9yZSBidWlsZCByZXF1ZXN0IG9uIEEgY29uZmlnIGFuZCBjbGVhciBtYXlOZWVkTW9y
ZVJlcXVlc3QgYWZ0ZXJ3YXJkcyB3aGVuIG9uZSBBIGNvbmZpZyByZXF1ZXN0IGZhaWxlZCBmb3Ig
dGVzdCBncm91cCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0
aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAgICAg
ICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisg
ICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxl
ZCIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAicGVuZGluZyJdLAorICAgICAgICAgICAgICAgIGNv
bW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQy
NTYnXX07CisKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRy
eSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RH
cm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAg
ICAgdGVzdEdyb3Vwc1swXS5zY2hlZHVsZVJldHJpZXNJZk5lY2Vzc2FyeSgzKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1
ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIGFkZENvdW50OiAyLCBjb21taXRTZXQ6ICc0MjU1J30pOworICAgICAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcv
YXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzFdLnJlc29sdmUo
c2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKSk7CisKKyAgICAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzJdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1syXS5kYXRhLCB7d29ya2VyTmFtZTog
J3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSkKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo
J3Nob3VsZCBjYW5jZWwgdGVzdCBncm91cCBpbiBzZXF1ZW50aWFsIG1vZGUgaWYgYWxsIHVzZXIg
aW5pdGlhbGx5IHNjaGVkdWxlZCBBIHJ1bnMgZmFpbGVkJywgYXN5bmMgKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwg
aW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwn
LAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiZmFpbGVkIiwgImZhaWxlZCIsICJmYWls
ZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgICAgICBj
b21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0
MjU2J119OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0
cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0
R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAg
ICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVSZXRyaWVzSWZOZWNlc3NhcnkoMik7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1n
cm91cCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIGNhbmNlbDogdHJ1ZX0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHJ5IEIgY29uZmln
IGlmIEEgY29uZmlnIGV4aGF1c3RlZCByZXRyeSBhbmQgaGFkIGF0IGxlYXN0IG9uZSBzdWNjZXNz
ZnVsIHJ1biBidXQgbGVzcyB0aGFuIHVzZXIgcmVxdWVzdGVkIGZvciB0ZXN0IGdyb3VwIGluIHNl
cXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91
cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291
bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICAgICAgaGlkZGVu
OiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgICAgICBz
dGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJj
b21wbGV0ZWQiLCAiZmFpbGVkIl0sCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0
MjU1JywgJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAg
ICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZp
Zyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBd
LnNjaGVkdWxlUmV0cmllc0lmTmVjZXNzYXJ5KDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29y
a2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRk
Q291bnQ6IDEsIGNvbW1pdFNldDogJzQyNTYnfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5y
ZXNvbHZlKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY2xlYXIgbWF5TmVl
ZE1vcmVSZXF1ZXN0IGZsYWcgd2hlbiBpbml0aWFsIHJlcXVlc3RlZCByZXBldGl0aW9uIGlzIHNh
dGlzZmllZCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFs
UmVwZXRpdGlvbkNvdW50OiAyLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAgICAgICAg
ICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAg
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCJdLAorICAgICAgICAgICAgICAg
IGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2Jywg
JzQyNTYnXX07CisKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JS
ZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRl
c3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAg
ICAgICAgdGVzdEdyb3Vwc1swXS5zY2hlZHVsZVJldHJpZXNJZk5lY2Vzc2FyeSgzKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0
LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEs
IHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywg
Z3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgICAg
IHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9KTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427546</attachid>
            <date>2021-05-03 02:52:41 -0700</date>
            <delta_ts>2021-05-03 13:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210503025240.patch</filename>
            <type>text/plain</type>
            <size>226827</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTMzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjN2ZiYmEwY2Q4NDg2MWQ2MTkwOWE5YmFlYzgwOGM1ZDM0ZWQ1NjYwLi5lMzdmNjkzNmIz
OTAwOWY0ZjE4Y2NlMmY2YTI1NzQzMWNlMWRlZmM4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMjEtMDUtMDMgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlw
ZScgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJyB0YWJsZSB0byBzdG9yZSByZXBldGl0aW9uIHR5
cGUgd2hpY2ggZGVmYXVsdHMgdG8gJ2FsdGVybmF0aW5nJy4KKyAgICAgICAgQWRkIHN1cHBvcnQg
dG8gc2NoZWR1bGUgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nIHdoaWNoIHJ1bnMgYWxsIEEgcnVu
cyBiZWZvcmUgQiBydW5zLCB3aGVyZWFzIHByZXZpb3VzbHkgd2Ugb25seQorICAgICAgICBzdXBw
b3J0IGFsdGVybmF0aW5nIEEgYW5kIEIgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBydW5zLgorICAg
ICAgICBBZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKworICAg
ICAgICBVcGRhdGUgc3luY2luZyBzY3JpcHQgdG8gbm90IHByb2NlZWQgd2l0aCBuZXh0IGNvbmZp
Z3VyYXRpb24gdW50aWwgY3VycmVudCBjb25maWd1cmF0aW9uIG1lZXRzIGluaXRpYWwgcmVxdWVz
dGVkCisgICAgICAgIHJlcGV0aXRpb24gY291bnQgb3IgZXhjZWVkIHJldHJ5LgorCisgICAgICAg
IEZpeCBhIHBvdGVudGlhbCByYWNlIGluIHN5bmNpbmcgc2NyaXB0IHRoYXQgJ1Byb21pc2UuYWxs
JyBtYXkgY2F1c2UgdGVzdCBncm91cCBub3Qgc2NoZWR1bGVkIGluIG9yZGVyLgorCisgICAgICAg
ICogYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFk
ZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogaW5pdC1kYXRhYmFzZS5zcWw6IEFkZGVkICd0ZXN0
Z3JvdXBfcmVwZXRpdGlvbl90eXBlJyBmaWVsZCB0byAnYW5hbHlzaXNfdGVzdF9ncm91cHMnIHRh
YmxlLgorICAgICAgICAqIG1pZ3JhdGUtZGF0YWJhc2Uuc3FsOiBVcGRhdGVkIG1pZ3JhdGlvbiBz
Y3JpcHQgdG8gY29uZGl0aW9uYWxseSBhZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZp
ZWxkLgorICAgICAgICAqIHB1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwOiBBZGRlZCAncmVwZXRp
dGlvblR5cGUnIGZpZWxkIGluIGFwaSByZXR1cm4gdmFsdWUuCisgICAgICAgICogcHVibGljL2lu
Y2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHA6IEZldGNoaW5nIGJ1aWxkIHJlcXVlc3Rz
IHVuZGVyIGEgdHJpZ2dlcmFibGUgc2hvdWxkIGluY2x1ZGUgdGVzdAorICAgICAgICBncm91cCB3
aXRoIGFsbCB0ZXN0IGdyb3VwcyBmaW5pc2hlZCBidXQgc3RpbGwgbmVlZCByZXRyeS4gVGhpcyB3
aWxsIGFsbG93IHN5bmNpbmcgc2NyaXB0IHRvIHJlc29sdmUgdGhlIGJ1aWxkCisgICAgICAgIHJl
cXVlc3QgYnkgSUQgYW5kIGJsb2NrIG90aGVyIHJlcXVlc3QgdG8gYmUgc2NoZWR1bGVkIG9uIHRo
ZSBidWlsZGVyLgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMu
cGhwOiBBZGRlZCBjb2RlIHRvIGNyZWF0ZSBidWlsZCByZXF1ZXN0cyBiYXNlZCBvbiB0ZXN0IG1v
ZGUuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5w
aHA6IEFkZGVkIHN1cHBvcnQgdG8gb25seSBhZGQgYnVpbGQgcmVxdWVzdHMgdG8gb25lIGNvbW1p
dCBzZXQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10
YXNrLnBocDogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAqIHB1Ymxp
Yy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHA6IEFkZGVkICdyZXBldGl0aW9u
VHlwZScgc3VwcG9ydC4KKyAgICAgICAgKiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAucGhwOgorICAgICAgICAqIHB1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1i
YXNlLmpzOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0
aW9uLXRlc3QtZ3JvdXAtZm9ybS5qczogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0Lgor
ICAgICAgICAoQ3VzdG9tQ29uZmlndXJhdGlvblRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0
VGVzdGluZyk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRl
c3QtZ3JvdXAtZm9ybS5qczoKKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJv
dG90eXBlLnN0YXJ0VGVzdGluZyk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvdGVz
dC1ncm91cC1mb3JtLmpzOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRU
ZXN0aW5nKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanM6Cisg
ICAgICAgIChBbmFseXNpc1Rhc2suYXN5bmMgY3JlYXRlKToKKyAgICAgICAgKEFuYWx5c2lzVGFz
ayk6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzOgorICAgICAg
ICAoQnVpbGRSZXF1ZXN0KToKKyAgICAgICAgKEJ1aWxkUmVxdWVzdC5wcm90b3R5cGUudXBkYXRl
U2luZ2xldG9uKTogQWxsb3cgYnVpbGQgcmVxdWVzdCBvcmRlciB0byBiZSB1cGRhdGVkLgorICAg
ICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAgICAgKFRlc3RHcm91
cCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAg
ICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJlcGV0aXRpb25UeXBlKToKKyAgICAgICAgKFRlc3RH
cm91cC5wcm90b3R5cGUucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KTogUmVmYWN0b3JlZCBg
cmVwZXRpdGlvbkNvdW50YCBzaW5jZSByZXBldGl0aW9uIG1heSBiZSBkaWZmZXJlbnQKKyAgICAg
ICAgYmV0d2VlbiBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
aGFzUmV0cmllcyk6IEEgaGVscGVyIGZ1bmN0aW9uIHRvIHRlbGwgaWYgYSB0ZXN0IGdyb3VwIGhh
cyByZXRyeSBydW5zLgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS53aWxsRXhjZWVkUmV0
cnlMaW1pdFdpdGhSZXRyeUNvdW50KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuYWRk
aXRpb25hbFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudCk6Cisg
ICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnN1Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50KToK
KyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaXNGaXJzdFRlc3RSZXF1ZXN0KToKKyAgICAg
ICAgKFRlc3RHcm91cC5wcm90b3R5cGUucHJlY2VkaW5nQnVpbGRSZXF1ZXN0KToKKyAgICAgICAg
KFRlc3RHcm91cC5wcm90b3R5cGUucmV0cnlDb3VudEZvckNvbW1pdFNldCk6CisgICAgICAgIChU
ZXN0R3JvdXAucHJvdG90eXBlLnJldHJ5Q291bnRzQXJlU2FtZUZvckFsbENvbW1pdFNldHMpOgor
ICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQWx0ZXJuYXRpbmdSZXRy
aWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
JyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgX2NyZWF0ZVNlcXVlbnRpYWxSZXRy
aWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
JyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIGNhbmNlbFBlbmRp
bmdSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIGRpZFNlbmRO
b3RpZmljYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBhZGRNb3Jl
QnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgY3JlYXRlV2l0aFRhc2sp
OgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9u
KToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6
CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHNjaGVkdWxlUmV0cmllc0lmTmVj
ZXNzYXJ5KTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUu
CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHJlc29sdmVNYXlOZWVkTW9yZVJl
cXVlc3RzRmxhZyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgZmV0Y2hCeUlkKTogQWRkZWQg
c3VwcG9ydCB0byBmZXRjaCB0ZXN0IGdyb3VwIGJ5IElELgorICAgICAgICAqIHB1YmxpYy92My9w
YWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFseXNpc1Rhc2tDaGFydFBh
bmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNU
YXNrUmVzdWx0c1BhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZS5wcm90b3R5cGUuc2V0VGVzdEdyb3Vwcyk6
CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKToKKyAgICAgICAgKEFuYWx5
c2lzVGFza1Rlc3RHcm91cFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgor
ICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3JlbmRlckN1cnJl
bnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5
cGUuX3JldHJ5U3VtbWFyeSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5k
aWRDb25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90
eXBlLmFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNr
UGFnZS5wcm90b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAo
QW5hbHlzaXNUYXNrUGFnZS5zZXQgY29uc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5w
cm90b3R5cGUuYXN5bmMgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlz
dCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQ3Vz
dG9tVGVzdEdyb3VwKToKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczoK
KyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6Cisg
ICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLmFzeW5jIF9hbmFseXplUmFuZ2UpOgorICAgICAg
ICAqIHB1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAgICAg
ICAoQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUFuYWx5c2lz
VGFza1dpdGhHcm91cCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0
cy10ZXN0cy5qczogQWRkZWQgYSB1bml0IHRlc3QuCisgICAgICAgICogc2VydmVyLXRlc3RzL2Fw
aS11cGxvYWQtcm9vdC10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNl
cnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IFVw
ZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3Rz
LgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91
cC10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2
ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanM6IFVwZGF0
ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNl
cy9jb21tb24tb3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGFzeW5jIGFzc2VydFRocm93cyk6Cisg
ICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanM6CisgICAgICAgIChN
b2NrRGF0YS5hZGRNb2NrRGF0YSk6CisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkTW9ja0J1aWxk
UmVxdWVzdHNXaXRoUm9vdHMpOgorICAgICAgICAoTW9ja0RhdGEuc2V0IGFkZEFub3RoZXJNb2Nr
VGVzdEdyb3VwKToKKyAgICAgICAgKE1vY2tEYXRhLnNldCBtb2NrVGVzdFN5bmNDb25maWdXaXRo
U2luZ2xlQnVpbGRlcik6CisgICAgICAgIChNb2NrRGF0YS5zYW1wbGVCdWlsZERhdGEpOgorICAg
ICAgICAqIHNlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qczog
VXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvdG9v
bHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3Rz
LgorICAgICAgICAoYXN5bmMgY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNoKToKKyAgICAgICAgKGNy
ZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KToKKyAgICAgICAgKiB0b29scy9qcy9idWlsZGJv
dC1zeW5jZXIuanM6CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUuc2NoZWR1bGVS
ZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKToKKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3Rv
dHlwZS5wdWxsQnVpbGRib3QpOgorICAgICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJh
YmxlLmpzOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZSk6CisgICAgICAgIChCdWlsZGJv
dFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBzeW5jT25jZSk6CisgICAgICAgIChCdWlsZGJv
dFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBfc2NoZWR1bGVSZXF1ZXN0KToKKyAgICAgICAg
KEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLl9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0
aW5nUmVxdWVzdFdpdGhOZXdDb21taXRTZXQpOgorICAgICAgICAqIHRvb2xzL2pzL21lYXN1cmVt
ZW50LXNldC1hbmFseXplci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0QW5hbHl6ZXIucHJv
dG90eXBlLmFzeW5jIF9hbmFseXplTWVhc3VyZW1lbnRTZXQpOgorICAgICAgICAoTWVhc3VyZW1l
bnRTZXRBbmFseXplcik6CisgICAgICAgICogdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJl
cXVlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHRvb2xzL3J1bi1hbmFseXNpcy5qczogVXNl
IHVwZGF0ZWQgQVBJIHRvIHJldHJ5LgorICAgICAgICAoYXN5bmMgYW5hbHlzaXNMb29wKToKKyAg
ICAgICAgKGFzeW5jIHByb2Nlc3NUZXN0R3JvdXBNYXlOZWVkTW9yZVJlcXVlc3RzKToKKyAgICAg
ICAgKiB0b29scy9zeW5jLWJ1aWxkYm90LmpzOiBBZGRlZCBjb21tYW5kIGxpbmUgb3B0aW9uICct
LW1heC1yZXRyeS1mYWN0b3InLgorICAgICAgICAqIHVuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10
ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVzdHMvYnVpbGRi
b3Qtc3luY2VyLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAgICAgIChjcmVhdGVT
YW1wbGVCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0
LWFuYWx5emVyLXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1
aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBNb3ZlZCB1bml0IHRlc3RzIHRvIHRlc3QtZ3JvdXAtdGVz
dHMuanMuCisgICAgICAgICogdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qczogQWRkZWQg
dW5pdCB0ZXN0cyBmcm9tICdyZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMnLgor
CiAyMDIxLTA0LTE0ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IENvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGluIHRoZSBDaGFydApkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGVzdC1ncm91
cC1mb3JtLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMv
dGVzdC1ncm91cC1mb3JtLXRlc3RzLmpzCmluZGV4IGI0YWIyMTI1YzQ2MzA0ZjU2YzQ3ODc3MWJl
YjZjMjMzYTA5M2JlOGEuLmY5NjAxMTM4MjM0YTFkOWM1NjZhMzgwYTY1Y2U1OTA4NDI4MzBiNGEg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3Rlc3Qt
Z3JvdXAtZm9ybS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nl
ci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMKQEAgLTE4LDEwICsxOCwyNSBAQCBkZXNj
cmliZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywgKCkgPT4gewogICAgICAgICAgICAgdGVzdEdyb3Vw
Rm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1
c2goYXJncykpOwogICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAg
ICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAg
ICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXV0pOworICAgICAgICAgICAg
ZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOwogICAgICAg
ICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdtdXN0IGRpc3BhdGNoICJzdGFydFRlc3RpbmciIGFj
dGlvbiB3aXRoIHRoZSByZXBldGl0aW9uIHR5cGUgdXNlciBzZWxlY3RzIG9uICJTdGFydCBBL0Ig
dGVzdGluZyInLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJv
d3NpbmdDb250ZXh0KCk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cEZvcm0gPSBhd2FpdCBjcmVh
dGVUZXN0R3JvdXBGb3JtV2l0aENvbnRleHQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IGNhbGxz
ID0gW107CisgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKyAgICAgICAgZXhwZWN0KGNhbGxz
KS50by5lcWwoe30pOworICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRv
bicpLmNsaWNrKCk7CisgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0
aW5nJywgdHJ1ZV1dKTsKKyAgICAgICAgY29uc3QgdHlwZUZvcm0gPSB0ZXN0R3JvdXBGb3JtLmNv
bnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpOworICAgICAgICB0eXBlRm9ybS52YWx1ZSA9ICdzZXF1
ZW50aWFsJzsKKyAgICAgICAgdHlwZUZvcm0uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5n
ZScpKTsKKyAgICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGlj
aygpOworICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRy
dWVdLCBbNCwgJ3NlcXVlbnRpYWwnLCB0cnVlXV0pOworICAgIH0pOworCiAgICAgaXQoJ211c3Qg
dXBkYXRlIHRoZSByZXBldGl0aW9uIGNvdW50IHdoZW4gdGhlIHVzZXIgc2VsZWN0ZWQgYSBkaWZm
ZXJlbnQgY291bnQnLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3Np
bmdDb250ZXh0KCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBGb3JtV2l0aENvbnRl
eHQoY29udGV4dCkudGhlbigodGVzdEdyb3VwRm9ybSkgPT4gewpAQCAtMjksMTIgKzQ0LDEyIEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICB0ZXN0
R3JvdXBGb3JtLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2Fs
bHMucHVzaChhcmdzKSk7CiAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAg
ICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7
Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdXSk7CisgICAgICAg
ICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAg
ICAgICAgICAgICBjb25zdCBjb3VudEZvcm0gPSB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3JlcGV0
aXRpb24tY291bnQnKTsKICAgICAgICAgICAgIGNvdW50Rm9ybS52YWx1ZSA9ICc2JzsKICAgICAg
ICAgICAgIGNvdW50Rm9ybS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAg
ICAgICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwot
ICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXSwgWzYsIHRydWVdXSk7
CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRy
dWVdLCBbNiwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAK
QEAgLTQ1LDcgKzYwLDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+IHsK
ICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycs
ICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKHt9KTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQt
YnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwg
dHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0
aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIGNvbnN0IGNvdW50Rm9ybSA9IHRlc3RHcm91cEZv
cm0uY29udGVudCgncmVwZXRpdGlvbi1jb3VudCcpOwogICAgICAgICAgICAgY291bnRGb3JtLnZh
bHVlID0gJzYnOwogICAgICAgICAgICAgY291bnRGb3JtLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50
KCdjaGFuZ2UnKSk7CkBAIC01Myw3ICs2OCw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVz
dHMnLCAoKSA9PiB7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb25DaGVja2JveC5jaGVj
a2VkID0gZmFsc2U7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb25DaGVja2JveC5kaXNw
YXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgZXhwZWN0KGNh
bGxzKS50by5lcWwoW1s0LCB0cnVlXSwgWzYsIGZhbHNlXV0pOworICAgICAgICAgICAgZXhwZWN0
KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXSwgWzYsICdhbHRlcm5hdGlu
ZycsIGZhbHNlXV0pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtNzYsMTAgKzkxLDEwIEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAg
dGVzdEdyb3VwRm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+
IGNhbGxzLnB1c2goYXJncykpOwogICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFs
KHt9KTsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCdidXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8u
ZXFsKFtbNCwgdHJ1ZV1dKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChb
WzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5zZXRSZXBldGl0aW9uQ291bnQoOCk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwRm9ybS5j
b250ZW50KCkucXVlcnlTZWxlY3RvcignYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdLCBbOCwgdHJ1ZV1dKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdLCBb
OCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFi
YXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAppbmRl
eCBmNjhiNWYwYzAzM2EyMjY0MzA3YzJmODNmM2Q0ZmI3NGJkYjE1M2VkLi5lNzZkY2JjOTI5YTJi
MWNmNWQyMjA3NDM3Y2RmYTQ4NmU1YmFlYmRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2luaXQtZGF0YWJhc2Uuc3FsCkBAIC0yOSw2ICsyOSw3IEBAIERST1AgVEFCTEUgSUYgRVhJU1RT
IHRyaWdnZXJhYmxlX3JlcG9zaXRvcmllcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMg
dXBsb2FkZWRfZmlsZXMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGJ1Z3MgQ0FTQ0FE
RTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIENBU0NBREU7CitE
Uk9QIFRZUEUgSUYgRVhJU1RTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIENB
U0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRfc2V0cyBDQVNDQURFOwogRFJPUCBU
QUJMRSBJRiBFWElTVFMgY29tbWl0X3NldF9pdGVtcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBF
WElTVFMgYnVpbGRfcmVxdWVzdHMgQ0FTQ0FERTsKQEAgLTI4Miw2ICsyODMsNyBAQCBDUkVBVEUg
VEFCTEUgdXBsb2FkZWRfZmlsZXMgKAogQ1JFQVRFIElOREVYIGZpbGVfYXV0aG9yX2luZGV4IE9O
IHVwbG9hZGVkX2ZpbGVzKGZpbGVfYXV0aG9yKTsKIENSRUFURSBVTklRVUUgSU5ERVggZmlsZV9z
aGEyNTZfaW5kZXggT04gdXBsb2FkZWRfZmlsZXMoZmlsZV9zaGEyNTYpIFdIRVJFIGZpbGVfZGVs
ZXRlZF9hdCBpcyBOVUxMOwogCitDUkVBVEUgVFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0
aXRpb25fdHlwZSBhcyBFTlVNICgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpOwogQ1JFQVRF
IFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBfaWQgc2VyaWFsIFBS
SU1BUlkgS0VZLAogICAgIHRlc3Rncm91cF90YXNrIGludGVnZXIgUkVGRVJFTkNFUyBhbmFseXNp
c190YXNrcyBOT1QgTlVMTCwKQEAgLTI5Miw2ICsyOTQsNyBAQCBDUkVBVEUgVEFCTEUgYW5hbHlz
aXNfdGVzdF9ncm91cHMgKAogICAgIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24gYm9vbGVh
biBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9ub3RpZmljYXRpb25fc2Vu
dF9hdCB0aW1lc3RhbXAgREVGQVVMVCBOVUxMLAogICAgIHRlc3Rncm91cF9pbml0aWFsX3JlcGV0
aXRpb25fY291bnQgaW50ZWdlciBOT1QgTlVMTCwKKyAgICB0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90
eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFVTFQg
J2FsdGVybmF0aW5nJywKICAgICB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyBib29s
ZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RSQUlOVCB0ZXN0Z3JvdXBfbmFtZV9tdXN0X2Jl
X3VuaXF1ZV9mb3JfZWFjaF90YXNrIFVOSVFVRSh0ZXN0Z3JvdXBfdGFzaywgdGVzdGdyb3VwX25h
bWUpKTsKIENSRUFURSBJTkRFWCB0ZXN0Z3JvdXBfdGFza19pbmRleCBPTiBhbmFseXNpc190ZXN0
X2dyb3Vwcyh0ZXN0Z3JvdXBfdGFzayk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWln
cmF0ZS1kYXRhYmFzZS5zcWwKaW5kZXggMGVhOTEzM2RhNmVkZTMyNWRkZjZjMjFkOGI5MzdmYjcz
NTY0MjU5YS4uNDMwNDg1YjNiNGI5MGQ4NGRjZmQ2MjZkMzI4NzBmMTBkMjQ3Njk4YSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbApAQCAtMSw5ICsx
LDE1IEBACiBETyAkJAogCiBCRUdJTgorCitJRiBOT1QgRVhJU1RTIChTRUxFQ1QgTlVMTCBGUk9N
IHBnX3R5cGUgV0hFUkUgdHlwbmFtZSA9ICdhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25f
dHlwZScpIFRIRU4KKyAgICBDUkVBVEUgVFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRp
b25fdHlwZSBhcyBFTlVNICgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpOworRU5EIElGOwor
CiBBTFRFUiBUQUJMRSBidWlsZF9yZXF1ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVx
dWVzdF9zdGF0dXNfZGVzY3JpcHRpb24gdmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRF
UiBUQUJMRSBwbGF0Zm9ybXMgQUREIENPTFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91
cCBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxhdGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVS
IFRBQkxFIGNvbW1pdHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9p
ZGVudGlmaWVyIHZhcmNoYXIoNjQpIERFRkFVTFQgTlVMTDsKK0FMVEVSIFRBQkxFIGFuYWx5c2lz
X3Rlc3RfZ3JvdXBzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfcmVwZXRpdGlv
bl90eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFV
TFQgJ2FsdGVybmF0aW5nJzsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBDT05TVFJBSU5UIGNv
bW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlOwogQUxU
RVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21taXRfc3RyaW5nX2lkZW50aWZpZXJf
aW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUoY29tbWl0X3JlcG9zaXRvcnksIGNv
bW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1YzRhYjk4N2I3OTMy
NmM4MTIyMDMwZmRkZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0OGExOTlkZTI3OTVk
NWQ3N2Q2ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBp
L3Rlc3QtZ3JvdXBzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24gZm9ybWF0X3Rlc3Rf
Z3JvdXAoJGdyb3VwX3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFi
YXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSks
CiAgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3Jv
dXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwKICAgICAgICAgJ2lu
aXRpYWxSZXBldGl0aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9pbml0aWFsX3Jl
cGV0aXRpb25fY291bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9PiAkZ3JvdXBfcm93
Wyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWlsZFJlcXVlc3RzJyA9
PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwKICAgICApOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJl
cXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdiMjUyMDk3ZjExNWZm
ZGJjNDFhMTFjM2U0YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkwYTNjMmIyMDkxZGU1
YmU2YTUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgKFNFTEVDVCB0
ZXN0Z3JvdXBfaWQsIHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rncm91cF9hdXRob3Ig
aXMgbm90IG51bGwgdGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRlciwgdGVzdGdyb3Vw
X2NyZWF0ZWRfYXQKICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFdI
RVJFIEVYSVNUUwogICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBidWlsZF9yZXF1
ZXN0cyBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCByZXF1ZXN0X3N0YXR1
cwotICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwn
LCBcJ3J1bm5pbmdcJykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAg
SU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpIE9SIHRlc3Rncm91
cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91cHMKICAgICAgICAg
ICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVzdF9ncm91cCA9IHRl
c3RfZ3JvdXBzLnRlc3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkgYXV0aG9yX29yZGVy
LCB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5KCR0cmlnZ2VyYWJs
ZV9pZCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAppbmRleCBlODUzMGE2
YmI3MWU0MmNmZjI4Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi5jNmNkOGU2N2RjMDM4MjI4MTAwMTc4
NTMzMmI3MDE1NjgwNjlmZWYzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCkBAIC00
LDIxICs0LDMxIEBAIHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1maW5kZXIucGhwJyk7
CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAogIyBGSVhNRTogU2hv
dWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIgZnVuY3Rpb25zIHRv
IGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24gY3JlYXRlX3Rlc3Rf
Z3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5h
bWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJl
cGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKK2Z1bmN0aW9uIGNyZWF0ZV90
ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQs
ICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQs
ICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9u
KQorewogCiAgICAgbGlzdCAoJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmln
dXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21taXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3Vy
YXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmlu
c2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFy
cmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0
aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnaW5pdGlh
bF9yZXBldGl0aW9uX2NvdW50JyA9PiAkcmVwZXRpdGlvbl9jb3VudCkpOworICAgICAgICBhcnJh
eSgndGFzaycgPT4gJHRhc2tfaWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhv
ciwgJ25lZWRzX25vdGlmaWNhdGlvbicgPT4gJG5lZWRzX25vdGlmaWNhdGlvbiwKKyAgICAgICAg
ICAgICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50LCAncmVw
ZXRpdGlvbl90eXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CiAKICAgICAkYnVpbGRfY291bnQg
PSBjb3VudCgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxk
X2NvdW50OwogICAgIGZvcmVhY2goJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRf
Y29uZmlndXJhdGlvbikKICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3Vy
YXRpb24oJGRiLCAkYnVpbGRfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCBOVUxMLCAkZ3JvdXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRp
IDwgJHJlcGV0aXRpb25fY291bnQ7ICRpKyspIHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25m
aWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2Vy
dF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlv
biwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdy
b3VwX2lkKTsKKyAgICBpZiAoJHJlcGV0aXRpb25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAg
ICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3Vy
YXRpb24pIHsKKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50
OyAkaSsrKQorICAgICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1
cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGFzc2VydCgkcmVwZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZycp
OworICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgewor
ICAgICAgICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2Nv
bmZpZ3VyYXRpb24pCisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2Nv
bmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJh
YmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiAkZ3JvdXBfaWQ7CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWls
ZC1yZXF1ZXN0cy5waHAKaW5kZXggNTcwZTkwMmY1ZDJlMWRmM2ZjMmI2YjZhZmEyMzNhYmZiNTAw
MzY0Ny4uMTcwNWZmNmFlYTdmZjAwMTJiZjAxY2Q1YTNmODliZTYyMWY5OTZhMiAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocApAQCAtNywxMyArNywxNSBAQCBmdW5j
dGlvbiBtYWluKCkgewogICAgICRkYiA9IGNvbm5lY3QoKTsKICAgICAkZGF0YSA9IGVuc3VyZV9w
cml2aWxlZ2VkX2FwaV9kYXRhX2FuZF90b2tlbl9vcl93b3JrZXIoJGRiKTsKIAotICAgICRhZGRp
dGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdhZGRDb3VudCcp
OwotICAgIGlmICghJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCkKLSAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdSZXF1ZXN0Q291bnROb3RTcGVjaWZpZWQnKTsKKyAgICAkYXJndW1lbnRz
ID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRhLCBhcnJheSgKKyAgICAgICAgJ2FkZENvdW50JyA9
PiAnaW50JywKKyAgICAgICAgJ2dyb3VwJyA9PiAnaW50JywKKyAgICAgICAgJ2NvbW1pdFNldCcg
PT4gJ2ludD8nLAorICAgICkpOwogCi0gICAgJHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGRh
dGEsICdncm91cCcpOwotICAgIGlmICghJHRlc3RfZ3JvdXBfaWQpCi0gICAgICAgIGV4aXRfd2l0
aF9lcnJvcignVGVzdEdyb3VwTm90U3BlY2lmaWVkJyk7CisgICAgJGFkZGl0aW9uYWxfYnVpbGRf
cmVxdWVzdF9jb3VudCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnYWRkQ291bnQnKTsKKyAgICAk
dGVzdF9ncm91cF9pZCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnZ3JvdXAnKTsKKyAgICAkY29t
bWl0X3NldF9pZCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnY29tbWl0U2V0JywgTlVMTCk7CiAK
ICAgICAkdGVzdF9ncm91cCA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNfdGVzdF9n
cm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCkpOwogICAg
IGlmICghJHRlc3RfZ3JvdXApCkBAIC0yOCwzNSArMzAsMTIwIEBAIGZ1bmN0aW9uIG1haW4oKSB7
CiAgICAgaWYgKCRjdXJyZW50X29yZGVyIDwgMCkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdO
b1Rlc3RpbmdCdWlsZFJlcXVlc3RzJyk7CiAKLSAgICAkY29tbWl0X3NldHMgPSBhcnJheSgpOwor
ICAgICRyZXBldGl0aW9uX3R5cGUgPSAkdGVzdF9ncm91cFsndGVzdGdyb3VwX3JlcGV0aXRpb25f
dHlwZSddOworICAgIGFzc2VydChpbl9hcnJheSgkcmVwZXRpdGlvbl90eXBlLCBbJ2FsdGVybmF0
aW5nJywgJ3NlcXVlbnRpYWwnXSkpOworICAgICRpc19hbHRlcm5hdGluZ190eXBlID0gJHJlcGV0
aXRpb25fdHlwZSA9PSAnYWx0ZXJuYXRpbmcnOworICAgIGlmICgkaXNfYWx0ZXJuYXRpbmdfdHlw
ZSAmJiAkY29tbWl0X3NldF9pZCkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdDb21taXRTZXRO
b3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGluZ1JlcGV0aXRpb25UeXBlJyk7CisKKyAgICAkZXhpc3Rp
bmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3RzID0gYXJyYXlfZmlsdGVyKCRleGlzdGluZ19idWls
ZF9yZXF1ZXN0cywgZnVuY3Rpb24oJGJ1aWxkX3JlcXVlc3QpIHsKKyAgICAgICAgcmV0dXJuICRi
dWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ10gPj0gMDsKKyAgICB9KTsKKworICAgIGlmICgk
aXNfYWx0ZXJuYXRpbmdfdHlwZSkKKyAgICAgICAgYWRkX2J1aWxkX3JlcXVlc3RfZm9yX2FsdGVy
bmF0aW5nX3Rlc3RfZ3JvdXAoJGRiLCAkZXhpc3RpbmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3Rz
LCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVudF9vcmRlcik7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmICgkY29tbWl0X3NldF9pZCkKKyAgICAgICAgICAgIGFkZF9idWls
ZF9yZXF1ZXN0c19mb3Jfc3BlY2lmaWNfY29tbWl0X3NldF9pbl9zZXF1ZW50aWFsX3Rlc3RfZ3Jv
dXAoJGRiLCAkZXhpc3RpbmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9i
dWlsZF9yZXF1ZXN0X2NvdW50LCAkY29tbWl0X3NldF9pZCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFkZF9idWlsZF9yZXF1ZXN0c19mb3JfYWxsX2NvbW1pdF9zZXRzX2luX3NlcXVlbnRp
YWxfdGVzdF9ncm91cCgkZGIsICRleGlzdGluZ19idWlsZF9yZXF1ZXN0cywgJGFkZGl0aW9uYWxf
YnVpbGRfcmVxdWVzdF9jb3VudCwgJHRlc3RfZ3JvdXBfaWQpOworICAgIH0KKworICAgIGV4aXRf
d2l0aF9zdWNjZXNzKCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9idWlsZF9yZXF1ZXN0X2Zvcl9hbHRl
cm5hdGluZ190ZXN0X2dyb3VwKCRkYiwgJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRp
b25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkb3JkZXIpCit7CisgICAgJHRhcmdldF9jb21taXRf
c2V0cyA9IGFycmF5KCk7CiAgICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCA9IGFycmF5
KCk7CiAgICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzIGFzICRidWlsZF9yZXF1
ZXN0KSB7Ci0gICAgICAgIGlmICgkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9vcmRlciddIDwgMCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPSAk
YnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J107CiAgICAgICAgIGlmIChhcnJheV9r
ZXlfZXhpc3RzKCRyZXF1ZXN0ZWRfY29tbWl0X3NldCwgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0
X3NldCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgJGJ1aWxkX3JlcXVlc3RfYnlf
Y29tbWl0X3NldFskcmVxdWVzdGVkX2NvbW1pdF9zZXRdID0gJGJ1aWxkX3JlcXVlc3Q7Ci0gICAg
ICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRzLCAkcmVxdWVzdGVkX2NvbW1pdF9zZXQpOworICAg
ICAgICBhcnJheV9wdXNoKCR0YXJnZXRfY29tbWl0X3NldHMsICRyZXF1ZXN0ZWRfY29tbWl0X3Nl
dCk7CiAgICAgfQogCiAgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOwogICAgIGZvciAoJGkg
PSAwOyAkaSA8ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspIHsKLSAgICAg
ICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRzIGFzICRjb21taXRfc2V0KSB7CisgICAgICAgIGZvcmVh
Y2ggKCR0YXJnZXRfY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKICAgICAgICAgICAgICRi
dWlsZF9yZXF1ZXN0ID0gJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF07
Ci0gICAgICAgICAgICAkZGItPmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3Qn
LCBhcnJheSgKLSAgICAgICAgICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0
WydyZXF1ZXN0X3RyaWdnZXJhYmxlJ10sCi0gICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnlfZ3Jv
dXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXSwKLSAgICAg
ICAgICAgICAgICAncGxhdGZvcm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3Jt
J10sCi0gICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rl
c3QnXSwKLSAgICAgICAgICAgICAgICAnZ3JvdXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0
X2dyb3VwJ10sCi0gICAgICAgICAgICAgICAgJ29yZGVyJyA9PiArKyRjdXJyZW50X29yZGVyLAot
ICAgICAgICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9j
b21taXRfc2V0J10pKTsKKyAgICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9yZXF1ZXN0X3dpdGhf
bmV3X29yZGVyKCRkYiwgJGJ1aWxkX3JlcXVlc3QsICsrJG9yZGVyKTsKICAgICAgICAgfQogICAg
IH0KICAgICAkZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOworfQogCi0gICAgZXhpdF93aXRoX3N1
Y2Nlc3MoKTsKK2Z1bmN0aW9uIGFkZF9idWlsZF9yZXF1ZXN0c19mb3JfYWxsX2NvbW1pdF9zZXRz
X2luX3NlcXVlbnRpYWxfdGVzdF9ncm91cCgkZGIsICRleGlzdGluZ19idWlsZF9yZXF1ZXN0cywg
JGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCwgJHRlc3RfZ3JvdXBfaWQpCit7CisgICAg
JG9yZGVyX2luY3JlbWVudF9ieV9jb21taXRfc2V0ID0gYXJyYXkoKTsKKyAgICAkdGFyZ2V0X2Nv
bW1pdF9zZXRzID0gYXJyYXkoKTsKKyAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0ID0g
YXJyYXkoKTsKKyAgICBmb3JlYWNoICgkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMgYXMgJGN1cnJl
bnRfYnVpbGRfcmVxdWVzdCkgeworICAgICAgICAkY29tbWl0X3NldF9mb3JfY3VycmVudF9yZXF1
ZXN0ID0gJGN1cnJlbnRfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J107CisgICAg
ICAgICRpc19leGlzdGluZ19jb21taXRfc2V0ID0gYXJyYXlfa2V5X2V4aXN0cygkY29tbWl0X3Nl
dF9mb3JfY3VycmVudF9yZXF1ZXN0LCAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KTsKKyAg
ICAgICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF9mb3JfY3VycmVu
dF9yZXF1ZXN0XSA9ICRjdXJyZW50X2J1aWxkX3JlcXVlc3Q7CisgICAgICAgIGlmICgkaXNfZXhp
c3RpbmdfY29tbWl0X3NldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhcnJheV9w
dXNoKCR0YXJnZXRfY29tbWl0X3NldHMsICRjb21taXRfc2V0X2Zvcl9jdXJyZW50X3JlcXVlc3Qp
OworICAgICAgICAkb3JkZXJfaW5jcmVtZW50X2J5X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRfZm9y
X2N1cnJlbnRfcmVxdWVzdF0gPSAoY291bnQoJHRhcmdldF9jb21taXRfc2V0cykgLSAxKSAqICRh
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7CisgICAgfQorCisgICAgJGRiLT5iZWdpbl90
cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJG9yZGVyX2luY3JlbWVu
dF9ieV9jb21taXRfc2V0LCB0cnVlKSBhcyAkY29tbWl0X3NldCA9PiAkaW5jcmVtZW50KSB7Cisg
ICAgICAgIGlmICghJGluY3JlbWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAk
ZGItPnF1ZXJ5KCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3JkZXIgPSByZXF1
ZXN0X29yZGVyICsgJDEKKyAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfY29tbWl0X3NldCA9ICQy
IEFORCByZXF1ZXN0X2dyb3VwID0gJDMnLAorICAgICAgICAgICAgYXJyYXkoJGluY3JlbWVudCwg
JGNvbW1pdF9zZXQsICR0ZXN0X2dyb3VwX2lkKSk7CisgICAgfQorICAgIGZvcmVhY2ggKCR0YXJn
ZXRfY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKKyAgICAgICAgJGN1cnJlbnRfYnVpbGRf
cmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAg
ICAgICAkcmVxdWVzdF9vcmRlciA9ICRjdXJyZW50X2J1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3Jk
ZXInXTsKKyAgICAgICAgJHJlcXVlc3Rfb3JkZXJfaW5jcmVtZW50YWwgPSBhcnJheV9nZXQoJG9y
ZGVyX2luY3JlbWVudF9ieV9jb21taXRfc2V0LCAkY29tbWl0X3NldCwgMCk7CisgICAgICAgIGZv
ciAoJGkgPSAwOyAkaSA8ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspCisg
ICAgICAgICAgICBkdXBsaWNhdGVfYnVpbGRfcmVxdWVzdF93aXRoX25ld19vcmRlcigkZGIsICRj
dXJyZW50X2J1aWxkX3JlcXVlc3QsICsrJHJlcXVlc3Rfb3JkZXIgKyAkcmVxdWVzdF9vcmRlcl9p
bmNyZW1lbnRhbCk7CisgICAgfQorICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7Cit9CisK
K2Z1bmN0aW9uIGFkZF9idWlsZF9yZXF1ZXN0c19mb3Jfc3BlY2lmaWNfY29tbWl0X3NldF9pbl9z
ZXF1ZW50aWFsX3Rlc3RfZ3JvdXAoJGRiLCAkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMsICRhZGRp
dGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICR0YXJnZXRfY29tbWl0X3NldF9pZCkKK3sKKyAg
ICAkZm91bmRfdGFyZ2V0ID0gZmFsc2U7CisgICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1aWxkX3Jl
cXVlc3RzIGFzICRjdXJyZW50X2J1aWxkX3JlcXVlc3QpIHsKKyAgICAgICAgaWYgKCRjdXJyZW50
X2J1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddID09ICR0YXJnZXRfY29tbWl0X3Nl
dF9pZCkgeworICAgICAgICAgICAgJGZvdW5kX3RhcmdldCA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoISRmb3VuZF90YXJnZXQpCisgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignTm9Db21taXRTZXRJblRlc3RHcm91cCcpOworCisgICAgJGRiLT5i
ZWdpbl90cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJGV4aXN0aW5n
X2J1aWxkX3JlcXVlc3RzLCB0cnVlKSBhcyAkY3VycmVudF9idWlsZF9yZXF1ZXN0KSB7CisgICAg
ICAgIGlmICgkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXSA9PSAk
dGFyZ2V0X2NvbW1pdF9zZXRfaWQpIHsKKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRh
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspCisgICAgICAgICAgICAgICAgZHVw
bGljYXRlX2J1aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3JkZXIoJGRiLCAkY3VycmVudF9idWlsZF9y
ZXF1ZXN0LCAkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ10gKyAkaSArIDEp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAkZGItPnF1ZXJ5KCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3JkZXIg
PSByZXF1ZXN0X29yZGVyICsgJDEgV0hFUkUgcmVxdWVzdF9pZCA9ICQyJywKKyAgICAgICAgICAg
ICAgICBhcnJheSgkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVudF9idWls
ZF9yZXF1ZXN0WydyZXF1ZXN0X2lkJ10pKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAkZGItPmNv
bW1pdF90cmFuc2FjdGlvbigpOworfQorCitmdW5jdGlvbiBkdXBsaWNhdGVfYnVpbGRfcmVxdWVz
dF93aXRoX25ld19vcmRlcigkZGIsICRidWlsZF9yZXF1ZXN0LCAkb3JkZXJfb3ZlcndyaXRlKQor
eworICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5
KAorICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3RyaWdn
ZXJhYmxlJ10sCisgICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsn
cmVxdWVzdF9yZXBvc2l0b3J5X2dyb3VwJ10sCisgICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1aWxk
X3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwKKyAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9y
ZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwKKyAgICAgICAgJ2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVz
dFsncmVxdWVzdF9ncm91cCddLAorICAgICAgICAnb3JkZXInID0+ICRvcmRlcl9vdmVyd3JpdGUs
CisgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J10pKTsKIH0KIAogbWFpbigpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNp
cy10YXNrLnBocAppbmRleCAyOGExNjEzMDA4NGU4YzRkYWUxNGJkMjlmNTBmZmU4YmNkZThhYzk0
Li4yZGM3NDdjYmRlMjY3OWUzZjk2YWQ1OTAwYjA2ZGYzMmEzNzhlMWEzIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFs
eXNpcy10YXNrLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocApAQCAtMTAsNiArMTAsNyBAQCBmdW5j
dGlvbiBtYWluKCkgewogICAgICRhdXRob3IgPSByZW1vdGVfdXNlcl9uYW1lKCRkYXRhKTsKICAg
ICAkbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ25hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3Vu
dCA9IGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25Db3VudCcpOworICAgICRyZXBldGl0aW9u
X3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGluZycp
OwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05vdGlm
aWNhdGlvbicsIEZhbHNlKTsKICAgICAkdGVzdF9ncm91cF9uYW1lID0gYXJyYXlfZ2V0KCRkYXRh
LCAndGVzdEdyb3VwTmFtZScpOwogICAgICRyZXZpc2lvbl9zZXRfbGlzdCA9IGFycmF5X2dldCgk
ZGF0YSwgJ3JldmlzaW9uU2V0cycpOwpAQCAtMjAsNiArMjEsOSBAQCBmdW5jdGlvbiBtYWluKCkg
ewogICAgIGlmICghJG5hbWUpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ05hbWUn
LCBhcnJheSgnbmFtZScgPT4gJG5hbWUpKTsKIAorICAgIGlmICghaW5fYXJyYXkoJHJlcGV0aXRp
b25fdHlwZSwgYXJyYXkoJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnKSkpCisgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25UeXBlJywgYXJyYXkoJ3JlcGV0aXRpb25U
eXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2YWxpZGF0ZV9hcmd1
bWVudHMoJGRhdGEsIGFycmF5KCdzdGFydFJ1bicgPT4gJ2ludCcsICdlbmRSdW4nID0+ICdpbnQn
KSk7CiAKICAgICAkc3RhcnRfcnVuID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIsICd0ZXN0X3J1bnMn
LCAncnVuJywgJHJhbmdlWydzdGFydFJ1biddLCAnSW52YWxpZFN0YXJ0UnVuJywgJHJhbmdlKTsK
QEAgLTg1LDcgKzg5LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgJHRyaWdnZXJhYmxl
X2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwogICAgICAgICAkdGVzdF9pZCA9ICR0cmlnZ2VyYWJs
ZVsndGVzdCddOwogICAgICAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0c19mcm9tX3Jldmlz
aW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdCk7Ci0gICAg
ICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0
cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwg
JGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwg
JG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWls
ZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUs
ICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0
ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwgJG5lZWRzX25vdGlm
aWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzQyNTNmYmU3ODY1OWJhMmY2
ZTA5OTkzMzEwMWJiOGEyOWYzMTFkZS4uZDIzYjJmZjk2NjgxYzhmYTg4ZWMwZjk3M2QxMGViZmYz
NzI4ODg1MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKQEAgLTE4
LDYgKzE4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRhc2tfaWQgPSBhcnJheV9nZXQoJGFy
Z3VtZW50cywgJ3Rhc2snKTsKICAgICAkdGFza19uYW1lID0gYXJyYXlfZ2V0KCRkYXRhLCAndGFz
a05hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3VudCA9ICRhcmd1bWVudHNbJ3JlcGV0aXRpb25D
b3VudCddOworICAgICRyZXBldGl0aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0
aW9uVHlwZScsICdhbHRlcm5hdGluZycpOwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJh
eV9nZXQoJGRhdGEsICduZWVkc05vdGlmaWNhdGlvbicsIEZhbHNlKTsKICAgICAkcGxhdGZvcm1f
aWQgPSBhcnJheV9nZXQoJGRhdGEsICdwbGF0Zm9ybScpOwogICAgICR0ZXN0X2lkID0gYXJyYXlf
Z2V0KCRkYXRhLCAndGVzdCcpOwpAQCAtNDIsNiArNDMsOSBAQCBmdW5jdGlvbiBtYWluKCkKICAg
ICBlbHNlIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdyZXBldGl0aW9uQ291bnQnID0+ICRy
ZXBldGl0aW9uX2NvdW50KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUs
IGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdyZXBldGl0aW9uVHlwZScgPT4g
JHJlcGV0aXRpb25fdHlwZSkpOworCiAgICAgJHRyaWdnZXJhYmxlX2lkID0gTlVMTDsKICAgICBp
ZiAoJHRhc2tfaWQpIHsKICAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2Fu
YWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lkKSk7CkBAIC04Niw3
ICs5MCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgIGlmICgkdGFza19uYW1lKQogICAgICAgICAk
dGFza19pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGFza3MnLCAndGFzaycsIGFycmF5
KCduYW1lJyA9PiAkdGFza19uYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7CiAKLSAgICAkZ3Jv
dXBfaWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0
X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZv
cm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7
CisgICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRk
YiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9u
X3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rp
b24oKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAppbmRleCAzNTVl
NmM4NWYxMjNiMmMzNTQ0NzExYmZiNjE3NDAwMDc5Mzc2OWFjLi4zMTc1ZDcxMGE3YzdjNjQ1NGJm
Yjc5NjE2ZWRlZDY4MzI5MzlmOTQ0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAorKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdy
b3VwLnBocApAQCAtMjAsNiArMjAsOSBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICAkdmFs
dWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKICAgICB9CiAKKyAgICBpZiAo
YXJyYXlfa2V5X2V4aXN0cygnY2FuY2VsJywgJGRhdGEpKQorICAgICAgICAkdmFsdWVzWydtYXlf
bmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKKwogICAgIGlmIChhcnJheV9rZXlfZXhpc3Rz
KCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgJGRhdGEpKQogICAgICAgICAgJHZhbHVlc1snbWF5X25l
ZWRfbW9yZV9yZXF1ZXN0cyddID0gJGRhdGFbJ21heU5lZWRNb3JlUmVxdWVzdHMnXTsKIApAQCAt
NDQsNyArNDcsNyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J0ZhaWxlZFRvVXBkYXRlVGVzdEdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCwg
J3ZhbHVlcycgPT4gJHZhbHVlcykpOwogICAgIH0KIAotICAgIGlmIChhcnJheV9nZXQoJGRhdGEs
ICdoaWRkZW4nKSkgeworICAgIGlmIChhcnJheV9nZXQoJGRhdGEsICdoaWRkZW4nKSB8fCBhcnJh
eV9nZXQoJGRhdGEsICdjYW5jZWwnKSkgewogICAgICAgICAkZGItPnF1ZXJ5X2FuZF9nZXRfYWZm
ZWN0ZWRfcm93cygnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X3N0YXR1cyA9ICQx
CiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2dyb3VwID0gJDIgQU5EIHJlcXVlc3Rfc3RhdHVz
ID0gJDMnLCBhcnJheSgnY2FuY2VsZWQnLCAkdGVzdF9ncm91cF9pZCwgJ3BlbmRpbmcnKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQv
Y29tbW9uLWNvbXBvbmVudC1iYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCmluZGV4IGM1NmUyYjAwOTE3MThjMDkw
NzI3NzE2MjQ0NWY3YzllZTdhNDg5MmQuLmJkNzE3MTdkMjhmNTE2ZjkwOTc2ZGE5OWYxYjMzNDdi
OGFhNjM4YzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hh
cmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKQEAgLTEzNSwxMiArMTM1
LDEyIEBAIGNsYXNzIENvbW1vbkNvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgZWxlbWVudC5h
cHBlbmRDaGlsZChDb21tb25Db21wb25lbnRCYXNlLl9jb250ZXh0LmNyZWF0ZVRleHROb2RlKGNv
bnRlbnQpKTsKICAgICB9CiAKLSAgICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFj
aywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCisgICAgY3JlYXRlTGluayhj
b250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleCA9
IG51bGwpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbW9uQ29tcG9uZW50QmFzZS5jcmVhdGVM
aW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYklu
ZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2Fs
bGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQorICAgIHN0YXRpYyBj
cmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWws
IHRhYkluZGV4ID0gbnVsbCkKICAgICB7CiAgICAgICAgIHZhciB0aXRsZSA9IHRpdGxlT3JDYWxs
YmFjazsKICAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29u
ZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3Jt
LmpzCmluZGV4IDg3YjE3YzE0NmQ0NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4ZTRjNjkuLjJmYmRh
YjNlMmQwNjYwY2Y2N2ZhZGRlZjA1MTQ5YzA4YmExNzY2MTkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlv
bi10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcwpA
QCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDdXN0b21Db25maWd1cmF0aW9uVGVzdEdyb3VwRm9ybSBl
eHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICBjb25zdCB0ZXN0ID0gY29uZmlndXJhdG9y
LnRlc3RzKClbMF07IC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgbXVs
dGlwbGUgdGVzdHMuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5faGFzVGFzayA9PT0g
IXRhc2tOYW1lKTsKICAgICAgICAgaWYgKCF0aGlzLl9oYXNUYXNrKQotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0
ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIHRoaXMu
X25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCB0ZXN0R3JvdXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMu
X3JlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5
T25Db21wbGV0aW9uLCB0YXNrTmFtZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVz
dEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9uQ29t
cGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3Rpbmcn
LCB0ZXN0R3JvdXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX3JlcGV0aXRpb25U
eXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9u
KTsKICAgICB9CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUt
dGVzdC1ncm91cC1mb3JtLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9j
b21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggMDgxY2E5ZDI3
ZDNkYjhjOTMyMGRiMDI4MjA3MmU1NzIxZDdkZjZhYy4uMWYzNzA1MDUzYmU0ODUwNzg2MWEzZGUz
MGFhNThmYWU1MTUyZDgwZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJs
ZS10ZXN0LWdyb3VwLWZvcm0uanMKQEAgLTI3LDcgKzI3LDggQEAgY2xhc3MgQ3VzdG9taXphYmxl
VGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogCiAgICAgc3RhcnRUZXN0aW5n
KCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRo
aXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbmFtZSwgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1h
cCgpLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLmRpc3BhdGNoQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9uYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRo
aXMuX3JlcGV0aXRpb25UeXBlLAorICAgICAgICAgICAgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1h
cCgpLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOwogICAgIH0KIAogICAgIGRpZENvbnN0cnVj
dFNoYWRvd1RyZWUoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggYTQzZWRm
MzUwOGJjZjA3NDYyNWRiOTk2NGY2MDRkZTE4MDgyOTY0Zi4uOTg5MjQxMDEwOTk2ZWMzNDI0M2Jh
MTJlODVjYjI1ZjBjZWEwODA2YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCkBA
IC0yNyw3ICsyNyw4IEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKIAogICAgIHN0YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX25vdGlmeU9u
Q29tcGxldGlvbik7CisgICAgICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlU2VsZWN0ID0gdGhpcy5j
b250ZW50KCdyZXBldGl0aW9uLXR5cGUnKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbign
c3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZVNlbGVj
dC52YWx1ZSwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICB9CiAKICAgICBzdGF0aWMg
aHRtbFRlbXBsYXRlKCkKQEAgLTY1LDcgKzY2LDExIEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICA8b3B0aW9uPjk8L29wdGlvbj4K
ICAgICAgICAgICAgICAgICA8b3B0aW9uPjEwPC9vcHRpb24+CiAgICAgICAgICAgICA8L3NlbGVj
dD4KLSAgICAgICAgICAgIGl0ZXJhdGlvbnMgcGVyIHNldAorICAgICAgICAgICAgPGxhYmVsPml0
ZXJhdGlvbnMgcGVyIHNldCBpbjwvbGFiZWw+CisgICAgICAgICAgICA8c2VsZWN0IGlkPSJyZXBl
dGl0aW9uLXR5cGUiPgorICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9ImFs
dGVybmF0aW5nIj5hbHRlcm5hdGUgKEFCQUIpPC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0ic2VxdWVudGlhbCI+c2VxdWVuY2UgKEFBQkIpPC9vcHRpb24+CisgICAgICAg
ICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgIDxpbnB1dCBpZD0ibm90aWZ5LW9uLWNvbXBsZXRp
b24tY2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkLz5Ob3RpZnkgb24gY29tcGxldGlv
bgogICAgICAgICBgOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCmluZGV4IDE3NzZhODE3YmMz
MTk5NjkyOTcyYTQwYWE0ZWQ2OGMxYTk1Y2RlZWUuLjZhMDg1Y2FjZTJjNzU3ZTg5MzgyZGRmZWEx
MDUxMDk3MzU5ZmFhMGQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcwpAQCAtMzI0LDcgKzMyNCw3IEBA
IGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1
cm4gcmVzdWx0czsKICAgICB9CiAKLSAgICBzdGF0aWMgYXN5bmMgY3JlYXRlKG5hbWUsIHN0YXJ0
UG9pbnQsIGVuZFBvaW50LCB0ZXN0R3JvdXBOYW1lPW51bGwsIHJlcGV0aXRpb25Db3VudD0wLCBu
b3RpZnlPbkNvbXBsZXRpb249ZmFsc2UpCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZShuYW1lLCBz
dGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdyb3VwTmFtZSA9IG51bGwsIHJlcGV0aXRpb25Db3Vu
dCA9IDAsIHJlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJywgbm90aWZ5T25Db21wbGV0aW9u
ID0gZmFsc2UpCiAgICAgewogICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge25hbWUsIHN0YXJ0
UnVuOiBzdGFydFBvaW50LmlkLCBlbmRSdW46IGVuZFBvaW50LmlkfTsKICAgICAgICAgaWYgKHRl
c3RHcm91cE5hbWUpIHsKQEAgLTMzMyw2ICszMzMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0
ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlcGV0aXRpb25D
b3VudCddID0gcmVwZXRpdGlvbkNvdW50OwogICAgICAgICAgICAgcGFyYW1ldGVyc1sndGVzdEdy
b3VwTmFtZSddID0gdGVzdEdyb3VwTmFtZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ25lZWRz
Tm90aWZpY2F0aW9uJ10gPSBub3RpZnlPbkNvbXBsZXRpb247CisgICAgICAgICAgICBwYXJhbWV0
ZXJzWydyZXBldGl0aW9uVHlwZSddID0gcmVwZXRpdGlvblR5cGU7CiAgICAgICAgIH0KICAgICAg
ICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtYW5hbHlzaXMtdGFzaycsIHBhcmFtZXRlcnMpOwogICAgICAgICByZXR1cm4gQW5hbHlzaXNU
YXNrLmZldGNoQnlJZChyZXNwb25zZS50YXNrSWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMK
aW5kZXggZjA5NWUwZDdhYmU4NmEwMjY1MjE1MTYxMjc4NGQyMWQxMDNhNTYxNi4uODIzMDI2NmE2
NGQ2NDEwNTdkOWZmMGI3NGZiOGE5YzNkMzIyM2E3YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBA
IC0xOCw3ICsxOCw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVj
dCB7CiAgICAgICAgIHRoaXMuX3BsYXRmb3JtID0gb2JqZWN0LnBsYXRmb3JtOwogICAgICAgICBj
b25zb2xlLmFzc2VydCghb2JqZWN0LnRlc3QgfHwgb2JqZWN0LnRlc3QgaW5zdGFuY2VvZiBUZXN0
KTsKICAgICAgICAgdGhpcy5fdGVzdCA9IG9iamVjdC50ZXN0OwotICAgICAgICB0aGlzLl9vcmRl
ciA9IG9iamVjdC5vcmRlcjsKKyAgICAgICAgdGhpcy5fb3JkZXIgPSArb2JqZWN0Lm9yZGVyOwog
ICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QuY29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0
U2V0KTsKICAgICAgICAgdGhpcy5fY29tbWl0U2V0ID0gb2JqZWN0LmNvbW1pdFNldDsKICAgICAg
ICAgdGhpcy5fc3RhdHVzID0gb2JqZWN0LnN0YXR1czsKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3Mg
QnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKIAogICAgIHVwZGF0ZVNpbmds
ZXRvbihvYmplY3QpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vcmRlciA9
PSBvYmplY3Qub3JkZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydCgrdGhpcy5fb3JkZXIgPD0g
K29iamVjdC5vcmRlcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbW1pdFNldCA9
PSBvYmplY3QuY29tbWl0U2V0KTsKIAogICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBvYmplY3Qu
dGVzdEdyb3VwOwpAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBE
YXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9zdGF0dXNVcmwgPSBvYmplY3QudXJsOwog
ICAgICAgICB0aGlzLl9idWlsZElkID0gb2JqZWN0LmJ1aWxkOwogICAgICAgICB0aGlzLl9zdGF0
dXNEZXNjcmlwdGlvbiA9IG9iamVjdC5zdGF0dXNEZXNjcmlwdGlvbjsKKyAgICAgICAgdGhpcy5f
b3JkZXIgPSArb2JqZWN0Lm9yZGVyOwogICAgIH0KIAogICAgIHRyaWdnZXJhYmxlKCkgeyByZXR1
cm4gdGhpcy5fdHJpZ2dlcmFibGU7IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCmluZGV4IDk3ZThiYzhlZTNjZGE5
YTZmNjQxNjIzNTM0ZTY3ZmI4MDAzOTk4MmIuLmE5MDA4ZDFkZGU2NTg4ZDkzYzUzZTY5MjIwYmQz
OGM3ZDM2ZTlkNDcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwpAQCAtMTEsNyArMTEsOCBAQCBjbGFzcyBUZXN0
R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBv
YmplY3QuaGlkZGVuOwogICAgICAgICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5u
ZWVkc05vdGlmaWNhdGlvbjsKICAgICAgICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IG9i
amVjdC5tYXlOZWVkTW9yZVJlcXVlc3RzOwotICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlv
bkNvdW50ID0gb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX2lu
aXRpYWxSZXBldGl0aW9uQ291bnQgPSArb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7Cisg
ICAgICAgIHRoaXMuX3JlcGV0aXRpb25UeXBlID0gb2JqZWN0LnJlcGV0aXRpb25UeXBlOwogICAg
ICAgICB0aGlzLl9idWlsZFJlcXVlc3RzID0gW107CiAgICAgICAgIHRoaXMuX29yZGVyQnVpbGRS
ZXF1ZXN0c0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYnVpbGRSZXF1
ZXN0cykgPT4gewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVxdWVzdHMuc29ydCgoYSwgYikg
PT4gYS5vcmRlcigpIC0gYi5vcmRlcigpKTsKQEAgLTM2LDcgKzM3LDggQEAgY2xhc3MgVGVzdEdy
b3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0
aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9ub3RpZmljYXRp
b25TZW50QXQgPSBvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0ID8gbmV3IERhdGUob2JqZWN0Lm5v
dGlmaWNhdGlvblNlbnRBdCkgOiBudWxsOwogICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVl
c3RzID0gb2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7Ci0gICAgICAgIHRoaXMuX2luaXRpYWxS
ZXBldGl0aW9uQ291bnQgPSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAg
dGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25D
b3VudDsKKyAgICAgICAgdGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5
cGU7CiAgICAgfQogCiAgICAgdGFzaygpIHsgcmV0dXJuIEFuYWx5c2lzVGFzay5maW5kQnlJZCh0
aGlzLl90YXNrSWQpOyB9CkBAIC00Niw2ICs0OCw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRz
IExhYmVsZWRPYmplY3QgewogICAgIG5lZWRzTm90aWZpY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5f
bmVlZHNOb3RpZmljYXRpb247IH0KICAgICBtYXlOZWVkTW9yZVJlcXVlc3RzKCkgeyByZXR1cm4g
dGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0czsgfQogICAgIGluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSB7IHJldHVybiB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50OyB9CisgICAgcmVwZXRpdGlv
blR5cGUoKSB7IHJldHVybiB0aGlzLl9yZXBldGl0aW9uVHlwZTsgfQogICAgIG5vdGlmaWNhdGlv
blNlbnRBdCgpIHsgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvblNlbnRBdDsgfQogICAgIGF1dGhv
cigpIHsgcmV0dXJuIHRoaXMuX2F1dGhvck5hbWU7IH0KICAgICBhZGRCdWlsZFJlcXVlc3QocmVx
dWVzdCkKQEAgLTgxLDExICs4NCwxMCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVk
T2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29yZGVyQnVpbGRSZXF1ZXN0c0xhemlseS5l
dmFsdWF0ZSguLi50aGlzLl9idWlsZFJlcXVlc3RzKTsKICAgICB9CiAKLSAgICByZXBldGl0aW9u
Q291bnQoKQorICAgIHJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2J1aWxkUmVxdWVzdHMubGVuZ3RoKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHRoaXMuX2J1aWxkUmVxdWVzdHNb
MF0uY29tbWl0U2V0KCk7CiAgICAgICAgIGxldCBjb3VudCA9IDA7CiAgICAgICAgIGZvciAoY29u
c3QgcmVxdWVzdCBvZiB0aGlzLl9idWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAgICBpZiAocmVx
dWVzdC5pc1Rlc3QoKSAmJiByZXF1ZXN0LmNvbW1pdFNldCgpID09IGNvbW1pdFNldCkKQEAgLTk0
LDYgKzk2LDExMCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAg
ICAgICAgcmV0dXJuIGNvdW50OwogICAgIH0KIAorICAgIGhhc1JldHJpZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+
IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiB0aGlzLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgfQorCisgICAgd2lsbEV4Y2VlZFJldHJ5TGltaXRX
aXRoUmV0cnlDb3VudChjb21taXRTZXQsIHJldHJ5Q291bnQsIHJldHJ5TGltaXQpCisgICAgewor
ICAgICAgICByZXR1cm4gcmV0cnlDb3VudCArIHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0
U2V0KGNvbW1pdFNldCkgPiByZXRyeUxpbWl0OworICAgIH0KKworICAgIGFkZGl0aW9uYWxSZXBl
dGl0aW9uTmVlZGVkVG9SZWFjaEluaXRpYWxSZXBldGl0aW9uQ291bnQoY29tbWl0U2V0KQorICAg
IHsKKyAgICAgICAgY29uc3QgcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQgPSB0aGlzLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKAorICAgICAgICAgICAgKHJlcXVlc3Qp
ID0+IHJlcXVlc3QuaXNUZXN0KCkgJiYgKHJlcXVlc3QuaGFzQ29tcGxldGVkKCkgfHwgIXJlcXVl
c3QuaGFzRmluaXNoZWQoKSkpLmxlbmd0aDsKKyAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRo
aXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIC0gcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQp
OworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50KGNvbW1pdFNldCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCku
ZmlsdGVyKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuaGFzQ29tcGxl
dGVkKCkpLmxlbmd0aAorICAgIH0KKworICAgIGlzRmlyc3RUZXN0UmVxdWVzdChidWlsZFJlcXVl
c3QpCisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMuX29yZGVyZWRCdWlsZFJlcXVlc3RzKCku
ZmlsdGVyKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpKS5pbmRleE9mKGJ1aWxkUmVxdWVz
dCk7CisgICAgfQorCisgICAgcHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxkUmVxdWVzdCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IG9yZGVyZWRCdWlsZFJlcXVlc3RzID0gdGhpcy5fb3JkZXJlZEJ1
aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0SW5kZXggPSBvcmRlcmVk
QnVpbGRSZXF1ZXN0cy5pbmRleE9mKGJ1aWxkUmVxdWVzdCk7CisgICAgICAgIGlmIChidWlsZFJl
cXVlc3RJbmRleCA8IDEpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJu
IG9yZGVyZWRCdWlsZFJlcXVlc3RzW2J1aWxkUmVxdWVzdEluZGV4IC0gMV07CisgICAgfQorCisg
ICAgcmV0cnlDb3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSAtIHRoaXMuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpOworICAgIH0KKworICAgIHJldHJ5Q291bnRzQXJlU2FtZUZv
ckFsbENvbW1pdFNldHMoKQorICAgIHsKKyAgICAgICAgY29uc3QgcmV0cnlDb3VudEZvckZpcnN0
Q29tbWl0U2V0ID0gdGhpcy5yZXRyeUNvdW50Rm9yQ29tbWl0U2V0KHRoaXMucmVxdWVzdGVkQ29t
bWl0U2V0cygpWzBdKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygp
LmV2ZXJ5KGNvbW1pdFNldCA9PiB0aGlzLnJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0
KSA9PSByZXRyeUNvdW50Rm9yRmlyc3RDb21taXRTZXQpOworICAgIH0KKworICAgIGFzeW5jIF9j
cmVhdGVBbHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3JvdXAobWF4UmV0cnlGYWN0b3IpCisgICAg
eworICAgICAgICBjb25zdCBkb05vdENsZWFyTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcgPSBOYU47
CisgICAgICAgIGNvbnN0IHJldHJ5TGltaXQgPSBtYXhSZXRyeUZhY3RvciAqIHRoaXMuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpOworICAgICAgICBjb25zdCBhZGRpdGlvbmFsUmVwZXRpdGlvbk5l
ZWRlZCA9IE1hdGgubWF4KC4uLnRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLm1hcCgKKyAgICAg
ICAgICAgIHRoaXMuYWRkaXRpb25hbFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0
aXRpb25Db3VudC5iaW5kKHRoaXMpKSk7CisgICAgICAgIGNvbnN0IHdpbGxFeGNlZWRSZXRyeUxp
bWl0ID0gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCkuc29tZShjb21taXRTZXQgPT4KKyAgICAg
ICAgICAgIHRoaXMud2lsbEV4Y2VlZFJldHJ5TGltaXRXaXRoUmV0cnlDb3VudChjb21taXRTZXQs
IGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkLCByZXRyeUxpbWl0KSk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkIDw9IHRoaXMuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpKTsKKworICAgICAgICBpZiAoIWFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVk
IHx8IHdpbGxFeGNlZWRSZXRyeUxpbWl0KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAg
ICAgY29uc3QgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRoaXMucmVxdWVzdGVkQ29tbWl0
U2V0cygpLnNvbWUoKHNldCkgPT4KKyAgICAgICAgICAgIHRoaXMucmVxdWVzdHNGb3JDb21taXRT
ZXQoc2V0KS5zb21lKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpICYmICFyZXF1ZXN0Lmhh
c0ZpbmlzaGVkKCkpKTsKKworICAgICAgICBjb25zdCBlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVk
QXRMZWFzdE9uZVRlc3QgPSB0aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKS5ldmVyeSh0aGlzLnN1
Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50LmJpbmQodGhpcykpOworCisgICAgICAgIGlmIChoYXNV
bmZpbmlzaGVkQnVpbGRSZXF1ZXN0ICYmICFlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVkQXRMZWFz
dE9uZVRlc3QpCisgICAgICAgICAgICByZXR1cm4gZG9Ob3RDbGVhck1heU5lZWRNb3JlUmVxdWVz
dHNGbGFnOworCisgICAgICAgIGlmKCFlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVkQXRMZWFzdE9u
ZVRlc3QpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBhd2FpdCB0aGlzLmFkZE1v
cmVCdWlsZFJlcXVlc3RzKGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkKTsKKyAgICAgICAgcmV0
dXJuIGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkOworICAgIH0KKworICAgIGFzeW5jIF9jcmVh
dGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAgICB7Cisg
ICAgICAgIGNvbnN0IHJldHJ5TGltaXQgPSBtYXhSZXRyeUZhY3RvciAqIHRoaXMuaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpOworICAgICAgICBjb25zdCBsYXN0SXRlbSA9IChhcnJheSkgPT4gYXJy
YXlbYXJyYXkubGVuZ3RoIC0gMV07CisgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSB0aGlzLnJl
cXVlc3RlZENvbW1pdFNldHMoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5l
dmVyeSgoY3VycmVudFNldCwgaW5kZXgpID0+CisgICAgICAgICAgICAhaW5kZXggfHwgbGFzdEl0
ZW0odGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXRzW2luZGV4IC0gMV0pKS5vcmRl
cigpIDwgdGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjdXJyZW50U2V0KVswXS5vcmRlcigpKSk7
CisKKyAgICAgICAgY29uc3QgYWxsVGVzdFJlcXVlc3RzSGF2ZUZhaWxlZEZvclNvbWVDb21taXRT
ZXQgPSBjb21taXRTZXRzLnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAgICAgICB0aGlzLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKHJlcXVlc3QgPT4gcmVxdWVzdC5pc1Rl
c3QoKSkuZXZlcnkocmVxdWVzdCA9PiByZXF1ZXN0Lmhhc0ZhaWxlZCgpKSk7CisKKyAgICAgICAg
aWYgKGFsbFRlc3RSZXF1ZXN0c0hhdmVGYWlsZWRGb3JTb21lQ29tbWl0U2V0KQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgY29tbWl0U2V0
cykgeworICAgICAgICAgICAgaWYgKHRoaXMuc3VjY2Vzc2Z1bFRlc3RSZXF1ZXN0Q291bnQoY29t
bWl0U2V0KSA+PSB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxSZXBldGl0aW9uID0gdGhp
cy5hZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRlZFRvUmVhY2hJbml0aWFsUmVwZXRpdGlvbkNvdW50
KGNvbW1pdFNldCk7CisgICAgICAgICAgICBpZiAodGhpcy53aWxsRXhjZWVkUmV0cnlMaW1pdFdp
dGhSZXRyeUNvdW50KGNvbW1pdFNldCwgYWRkaXRpb25hbFJlcGV0aXRpb24sIHJldHJ5TGltaXQp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhd2FpdCB0aGlzLmFk
ZE1vcmVCdWlsZFJlcXVlc3RzKGFkZGl0aW9uYWxSZXBldGl0aW9uLCBjb21taXRTZXQpOworICAg
ICAgICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworICAg
ICAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxSZXBldGl0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmVxdWVzdGVkQ29tbWl0U2V0cygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHNMYXppbHkuZXZh
bHVhdGUoLi4udGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKSk7CkBAIC0xMDIsNyArMjA4LDYg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgc3RhdGljIF9j
b21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0cyguLi5vcmRlcmVkQnVpbGRSZXF1ZXN0cykKICAgICB7
CiAgICAgICAgIGNvbnN0IHJlcXVlc3RlZENvbW1pdFNldHMgPSBbXTsKLSAgICAgICAgY29uc3Qg
Y29tbWl0U2V0TGFiZWxNYXAgPSBuZXcgTWFwOwogICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qg
b2Ygb3JkZXJlZEJ1aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGNvbnN0IHNldCA9IHJlcXVl
c3QuY29tbWl0U2V0KCk7CiAgICAgICAgICAgICBpZiAoIXJlcXVlc3RlZENvbW1pdFNldHMuaW5j
bHVkZXMoc2V0KSkKQEAgLTIxOSw2NCArMzI0LDEwNCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5k
cyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXN5bmMgZGlkU2Vu
ZE5vdGlmaWNhdGlvbigpCisgICAgYXN5bmMgY2FuY2VsUGVuZGluZ1JlcXVlc3RzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAg
ICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKKyAgICAgICAgICAgIGNhbmNlbDogdHJ1ZSwKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgYXN5bmMgZGlkU2VuZE5vdGlmaWNhdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKICAgICAgICAgICAgIGdy
b3VwOiB0aGlzLmlkKCksCiAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsCiAg
ICAgICAgICAgICBub3RpZmljYXRpb25TZW50QXQ6IChuZXcgRGF0ZSkudG9JU09TdHJpbmcoKQog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRD
b3VudCkKKyAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRDb3VudCwgY29tbWl0U2V0
ID0gbnVsbCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb21taXRTZXQgfHwgdGhp
cy5yZXBldGl0aW9uVHlwZSgpID09ICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFjb21taXRTZXQgfHwgY29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKICAgICAg
ICAgcmV0dXJuIGF3YWl0IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CiAgICAgICAgICAgICBn
cm91cDogdGhpcy5pZCgpLAogICAgICAgICAgICAgYWRkQ291bnQsCisgICAgICAgICAgICBjb21t
aXRTZXQ6IGNvbW1pdFNldCA/IGNvbW1pdFNldC5pZCgpIDogbnVsbAogICAgICAgICB9LCAnYWRk
LWJ1aWxkLXJlcXVlc3RzJyk7CiAgICAgfQogCiAgICAgYXN5bmMgY2xlYXJNYXlOZWVkTW9yZUJ1
aWxkUmVxdWVzdHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3VwZGF0ZUJ1
aWxkUmVxdWVzdCh7CisgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3Qoewog
ICAgICAgICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKICAgICAgICAgICAgIG1heU5lZWRNb3JlUmVx
dWVzdHM6IGZhbHNlCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVXaXRo
VGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50
LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNyZWF0
ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9u
Q291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsKICAg
ICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21Db21t
aXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFza05hbWUsIG5h
bWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwg
cmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlm
eU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFtcykudGhlbigoZGF0YSkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsndGFza0lkJ10sIHRydWUpOwot
ICAgICAgICB9KS50aGVuKCh0YXNrKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRj
aEZvclRhc2sodGFzay5pZCgpKS50aGVuKCgpID0+IHRhc2spOwotICAgICAgICB9KTsKKyAgICAg
ICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10
ZXN0LWdyb3VwJywgeworICAgICAgICAgICAgdGFza05hbWUsIG5hbWU6IGdyb3VwTmFtZSwgcGxh
dGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCBy
ZXZpc2lvblNldHMsCisgICAgICAgICAgICByZXBldGl0aW9uVHlwZSwgbmVlZHNOb3RpZmljYXRp
b246ICEhbm90aWZ5T25Db21wbGV0aW9ufSk7CisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBB
bmFseXNpc1Rhc2suZmV0Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXdh
aXQgdGhpcy5mZXRjaEZvclRhc2sodGFzay5pZCgpKTsKKyAgICAgICAgcmV0dXJuIHRhc2s7CiAg
ICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRhc2ssIHBs
YXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90
aWZ5T25Db21wbGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmln
dXJhdGlvbih0YXNrLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQs
IHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsKICAgICAgICAg
Y29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21Db21taXRTZXRz
KGNvbW1pdFNldHMpOwotICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFzazogdGFzay5pZCgpLCBu
YW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCks
IHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3Rp
ZnlPbkNvbXBsZXRpb259OwotICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMpLnRoZW4oKGRhdGEpID0+IHsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7Ci0gICAg
ICAgIH0pOworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCks
IG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQo
KSwgcmVwZXRpdGlvbkNvdW50LAorICAgICAgICAgICAgcmV2aXNpb25TZXRzLCByZXBldGl0aW9u
VHlwZSwgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9ufSk7CisgICAgICAg
IGF3YWl0IHRoaXMuZmV0Y2hCeUlkKGRhdGFbJ3Rlc3RHcm91cElkJ10sIHRydWUpOworICAgICAg
ICByZXR1cm4gdGhpcy5maW5kQWxsQnlUYXNrKGRhdGFbJ3Rhc2tJZCddKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFtZSwgcmVwZXRpdGlv
bkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5j
IGNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBj
b25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMo
Y29tbWl0U2V0cyk7Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdj
cmVhdGUtdGVzdC1ncm91cCcsIHsKLSAgICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwKLSAgICAg
ICAgICAgIG5hbWU6IG5hbWUsCi0gICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IHJlcGV0aXRp
b25Db3VudCwKLSAgICAgICAgICAgIHJldmlzaW9uU2V0czogcmV2aXNpb25TZXRzLAotICAgICAg
ICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9uLAotICAgICAgICB9
KS50aGVuKChkYXRhKSA9PiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSkp
OworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCksIG5hbWUs
IHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlwZSwKKyAgICAgICAg
ICAgIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbgorICAgICAgICB9KTsK
KyAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEJ5SWQoZGF0YVsndGVzdEdyb3VwSWQnXSwgdHJ1ZSk7
CisgICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGxCeVRhc2soZGF0YVsndGFza0lkJ10pOworICAg
IH0KKworICAgIGFzeW5jIHNjaGVkdWxlUmV0cmllc0lmTmVjZXNzYXJ5KG1heFJldHJ5RmFjdG9y
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoWydhbHRlcm5hdGluZycsICdzZXF1ZW50
aWFsJ10uaW5jbHVkZXModGhpcy5yZXBldGl0aW9uVHlwZSgpKSk7CisgICAgICAgIHJldHVybiB0
aGlzLnJlcGV0aXRpb25UeXBlKCkgPT0gJ2FsdGVybmF0aW5nJyA/IHRoaXMuX2NyZWF0ZUFsdGVy
bmF0aW5nUmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAgICAgICAgICAgIDog
dGhpcy5fY3JlYXRlU2VxdWVudGlhbFJldHJpZXNGb3JUZXN0R3JvdXAobWF4UmV0cnlGYWN0b3Ip
OworICAgIH0KKworICAgIGFzeW5jIHJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZyhtYXhS
ZXRyeUZhY3RvcikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5tYXlOZWVkTW9yZVJlcXVlc3Rz
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuaXNIaWRkZW4oKSkg
eworICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgcmV0cnlD
b3VudCA9IGF3YWl0IHRoaXMuc2NoZWR1bGVSZXRyaWVzSWZOZWNlc3NhcnkobWF4UmV0cnlGYWN0
b3IpOworICAgICAgICBjb25zdCBkb05vdENsZWFyTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcgPSBO
YU47CisgICAgICAgIGlmIChyZXRyeUNvdW50ID09IGRvTm90Q2xlYXJNYXlOZWVkTW9yZVJlcXVl
c3RzRmxhZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhd2FpdCB0aGlzLmNsZWFy
TWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGlmIChyZXRyeUNvdW50ID4gMCkg
eworICAgICAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGhpcy5mZXRjaFRhc2so
KTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBZGRlZCAke3JldHJ5Q291bnR9IGJ1aWxkIHJl
cXVlc3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5h
bHlzaXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBzdGF0aWMgZmluZEFsbEJ5VGFzayh0YXNrSWQpCkBAIC0yODQsNiArNDI5
LDEzIEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICBy
ZXR1cm4gVGVzdEdyb3VwLmFsbCgpLmZpbHRlcigodGVzdEdyb3VwKSA9PiB0ZXN0R3JvdXAuX3Rh
c2tJZCA9PSB0YXNrSWQpOwogICAgIH0KIAorICAgIHN0YXRpYyBhc3luYyBmZXRjaEJ5SWQodGVz
dEdyb3VwSWQsIGlnbm9yZUNhY2hlID0gZmFsc2UpCisgICAgeworICAgICAgICBjb25zdCBkYXRh
ID0gYXdhaXQgdGhpcy5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdyb3Vwcy8ke3Rlc3RHcm91cElk
fWAsIHt9LCBpZ25vcmVDYWNoZSk7CisgICAgICAgIHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRj
aGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuZmluZEJ5SWQodGVzdEdy
b3VwSWQpOworICAgIH0KKwogICAgIHN0YXRpYyBmZXRjaEZvclRhc2sodGFza0lkLCBpZ25vcmVD
YWNoZSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goJy9h
cGkvdGVzdC1ncm91cHMnLCB7dGFzazogdGFza0lkfSwgaWdub3JlQ2FjaGUpLnRoZW4odGhpcy5f
Y3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzLmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNr
LXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5
c2lzLXRhc2stcGFnZS5qcwppbmRleCAzZjRmZWZmZjI3YTQzODM2NDMwNWJiYjgzZDdiMTZiMzI0
MDVlYzcxLi5lNmU3NjJlMGQzY2Q2YjJkYzQ4ZDQyZGI3NDgxODhlMzY0Y2NkMzlkIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRh
c2stcGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2Vz
L2FuYWx5c2lzLXRhc2stcGFnZS5qcwpAQCAtMjQsOCArMjQsOCBAQCBjbGFzcyBBbmFseXNpc1Rh
c2tDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKIAogICAgIGRpZENvbnN0cnVjdFNo
YWRvd1RyZWUoKQogICAgIHsKLSAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rp
b24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwg
bm90aWZ5T25Db21wbGV0aW9uKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90
aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rp
b24oJ3N0YXJ0VGVzdGluZycsIChuYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBl
LCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4geworICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBy
ZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pOwogICAgICAg
ICB9KTsKICAgICB9CiAKQEAgLTEwNiw4ICsxMDYsOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tSZXN1
bHRzUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICByZXBvc2l0b3J5UGlja2Vy
LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCkp
OwogICAgICAgICB0aGlzLnBhcnQoJ2NvbW1pdC12aWV3ZXInKS5zZXRTaG93UmVwb3NpdG9yeU5h
bWUoZmFsc2UpOwogCi0gICAgICAgIHRoaXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBuYW1lLCBjb21taXRTZXRNYXAsIG5vdGlm
eU9uQ29tcGxldGlvbikgPT4gewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbmV3
VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5vdGlmeU9u
Q29tcGxldGlvbik7CisgICAgICAgIHRoaXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCAobmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29t
bWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRp
dGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgfSk7
CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLl9jdXJyZW50R3Jv
dXAgPSBjdXJyZW50R3JvdXA7CiAgICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLnBhcnQoJ2Zvcm0n
KTsKICAgICAgICAgaWYgKCFmb3JtLmhhc0NvbW1pdFNldHMoKSAmJiBjdXJyZW50R3JvdXApCi0g
ICAgICAgICAgICBmb3JtLnNldENvbmZpZ3VyYXRpb25zKGN1cnJlbnRHcm91cC50ZXN0KCksIGN1
cnJlbnRHcm91cC5wbGF0Zm9ybSgpLCBjdXJyZW50R3JvdXAucmVwZXRpdGlvbkNvdW50KCksIGN1
cnJlbnRHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpOworICAgICAgICAgICAgZm9ybS5zZXRD
b25maWd1cmF0aW9ucyhjdXJyZW50R3JvdXAudGVzdCgpLCBjdXJyZW50R3JvdXAucGxhdGZvcm0o
KSwgY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgY3VycmVudEdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKSk7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAg
ICAgfQogCkBAIC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
UGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICBgOwog
ICAgIH0KLX07Cit9CiAKIENvbXBvbmVudEJhc2UuZGVmaW5lRWxlbWVudCgnYW5hbHlzaXMtdGFz
ay1jb25maWd1cmF0b3ItcGFuZScsIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUpOwogCkBA
IC0yNjcsMTQgKzI2NywxNCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVu
ZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCiAgICAgewog
ICAgICAgICB0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJykub25jbGljayA9ICgpID0+IHRoaXMu
ZGlzcGF0Y2hBY3Rpb24oJ3RvZ2dsZVRlc3RHcm91cFZpc2liaWxpdHknLCB0aGlzLl9jdXJyZW50
VGVzdEdyb3VwKTsKLSAgICAgICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykubGlzdGVuVG9BY3Rp
b24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikg
PT4gewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbigncmV0cnlUZXN0R3JvdXAnLCB0
aGlzLl9jdXJyZW50VGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlv
bik7CisgICAgICAgIHRoaXMucGFydCgncmV0cnktZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFy
dFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21w
bGV0aW9uKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXRyeVRlc3RH
cm91cCcsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlv
blR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgICAgIH0pOwotICAgICAgICB0aGlzLnBh
cnQoJ2Jpc2VjdC1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4geworICAgICAgICB0aGlzLnBhcnQoJ2Jp
c2VjdC1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291
bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKICAgICAgICAgICAg
IGNvbnN0IGJpc2VjdGluZ0NvbW1pdFNldCA9IHRoaXMuX2Jpc2VjdGluZ0NvbW1pdFNldEJ5VGVz
dEdyb3VwLmdldCh0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKICAgICAgICAgICAgIGNvbnN0IFtv
bmVDb21taXRTZXQsIGFub3RoZXJDb21taXRTZXRdID0gdGhpcy5fY3VycmVudFRlc3RHcm91cC5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAgICAgICBjb25zdCBjb21taXRTZXRzID0gW29u
ZUNvbW1pdFNldCwgYmlzZWN0aW5nQ29tbWl0U2V0LCBhbm90aGVyQ29tbWl0U2V0XTsKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsIHRoaXMuX2N1cnJl
bnRUZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0
aW9uKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcs
IHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgcmVw
ZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgICAgIH0pOwogICAgIH0KIApA
QCAtMzY1LDI4ICszNjUsNDkgQEAgY2xhc3MgQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZSBleHRl
bmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuY29udGVu
dCgndGVzdC1ncm91cC1saXN0JykucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJyk7CiAgICAgICAg
IGlmIChzZWxlY3RlZCkKICAgICAgICAgICAgIHNlbGVjdGVkLmNsYXNzTGlzdC5yZW1vdmUoJ3Nl
bGVjdGVkJyk7Ci0gICAgICAgIGlmIChjdXJyZW50R3JvdXApCi0gICAgICAgICAgICB0aGlzLl90
ZXN0R3JvdXBNYXAuZ2V0KGN1cnJlbnRHcm91cCkubGlzdEl0ZW0uY2xhc3NMaXN0LmFkZCgnc2Vs
ZWN0ZWQnKTsKIAogICAgICAgICBpZiAoY3VycmVudEdyb3VwKSB7CisgICAgICAgICAgICB0aGlz
Ll90ZXN0R3JvdXBNYXAuZ2V0KGN1cnJlbnRHcm91cCkubGlzdEl0ZW0uY2xhc3NMaXN0LmFkZCgn
c2VsZWN0ZWQnKTsKICAgICAgICAgICAgIHRoaXMucGFydCgncmV0cnktZm9ybScpLnNldFJlcGV0
aXRpb25Db3VudChjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKICAgICAg
ICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0nKS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVu
dEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7Ci0gICAgICAgICAgICBjb25zdCBzdGF0
dXNTdW1tYXJ5ID0gYCR7Y3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVx
dWVzdGVkLCAke2N1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSAtIGN1cnJlbnRHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IGFkZGVkIGR1ZSB0byBmYWlsdXJlcy5gOwotICAgICAg
ICAgICAgdGhpcy5jb250ZW50KCdzdGF0dXMtc3VtbWFyeScpLmlubmVySFRNTCA9IHN0YXR1c1N1
bW1hcnk7CiAKLSAgICAgICAgICAgIGNvbnN0IGF1dGhvcmVkQnkgPSBjdXJyZW50R3JvdXAuYXV0
aG9yKCkgPyBgYnkgIiR7Y3VycmVudEdyb3VwLmF1dGhvcigpfSJgIDogJyc7Ci0gICAgICAgICAg
ICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFyeScpLmlubmVySFRNTCA9IGBTY2hlZHVsZWQg
JHthdXRob3JlZEJ5fSBhdCAke2N1cnJlbnRHcm91cC5jcmVhdGVkQXQoKX1gCisgICAgICAgICAg
ICBpZiAoY3VycmVudEdyb3VwLmhhc1JldHJpZXMoKSkKKyAgICAgICAgICAgICAgICB0aGlzLnJl
bmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdyZXRyeS1zdW1tYXJ5JyksIHRoaXMuX3JldHJ5U3Vt
bWFyeShjdXJyZW50R3JvdXApKTsKKworICAgICAgICAgICAgY29uc3QgYXV0aG9yZWRCeSA9IGN1
cnJlbnRHcm91cC5hdXRob3IoKSA/IGBieSAiJHtjdXJyZW50R3JvdXAuYXV0aG9yKCl9IiBgIDog
Jyc7CisgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdyZXF1ZXN0
LXN1bW1hcnknKSwgYFNjaGVkdWxlZCAke2F1dGhvcmVkQnl9IGF0ICR7Y3VycmVudEdyb3VwLmNy
ZWF0ZWRBdCgpfWApCisKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRl
bnQoJ2hpZGUtYnV0dG9uJyksIGN1cnJlbnRHcm91cC5pc0hpZGRlbigpID8gJ1VuaGlkZScgOiAn
SGlkZScpOworCisgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdw
ZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKSwKKyAgICAgICAgICAgICAgICBjdXJyZW50
R3JvdXAuaGFzUGVuZGluZygpID8gJyhjYW5jZWxzIHBlbmRpbmcgcmVxdWVzdHMpJyA6IFtdKTsK
ICAgICAgICAgfQorCiAgICAgICAgIHRoaXMuY29udGVudCgncmV0cnktZm9ybScpLnN0eWxlLmRp
c3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOwogICAgICAgICB0aGlzLmNvbnRl
bnQoJ2Jpc2VjdC1mb3JtJykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiB0aGlzLl9i
aXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQoY3VycmVudEdyb3VwKSA/IG51bGwgOiAn
bm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1bW1hcnknKS5zdHlsZS5kaXNw
bGF5ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSA+IGN1
cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgPyBudWxsIDogJ25vbmUnOwotICAg
ICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJy
ZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOworICAgIH0KKworICAgIF9yZXRyeVN1bW1hcnkodGVz
dEdyb3VwKQorICAgIHsKKyAgICAgICAgaWYgKCF0ZXN0R3JvdXAuaGFzUmV0cmllcygpKQorICAg
ICAgICAgICAgcmV0dXJuICcnOwogCi0gICAgICAgIGNvbnN0IGhpZGVCdXR0b24gPSB0aGlzLmNv
bnRlbnQoJ2hpZGUtYnV0dG9uJyk7Ci0gICAgICAgIGhpZGVCdXR0b24udGV4dENvbnRlbnQgPSBj
dXJyZW50R3JvdXAgJiYgY3VycmVudEdyb3VwLmlzSGlkZGVuKCkgPyAnVW5oaWRlJyA6ICdIaWRl
JzsKLSAgICAgICAgaGlkZUJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVs
bCA6ICdub25lJzsKKyAgICAgICAgY29uc3QgcmV0cnlDb3VudEJ5TGFiZWwgPSBuZXcgTWFwOwor
ICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpKQorICAgICAgICAgICAgcmV0cnlDb3VudEJ5TGFiZWwuc2V0KHRlc3RHcm91cC5sYWJl
bEZvckNvbW1pdFNldChjb21taXRTZXQpLCB0ZXN0R3JvdXAucmV0cnlDb3VudEZvckNvbW1pdFNl
dChjb21taXRTZXQpKTsKIAotICAgICAgICB0aGlzLmNvbnRlbnQoJ3BlbmRpbmctcmVxdWVzdC1j
YW5jZWwtd2FybmluZycpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdy
b3VwLmhhc1BlbmRpbmcoKSA/IG51bGwgOiAnbm9uZSc7CisgICAgICAgIGlmICh0ZXN0R3JvdXAu
cmV0cnlDb3VudHNBcmVTYW1lRm9yQWxsQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgcmV0dXJu
IGAke3Rlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJlcXVlc3RlZCwgJHtyZXRy
eUNvdW50QnlMYWJlbC5nZXQoJ0EnKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7CisKKyAgICAg
ICAgY29uc3QgcmV0cnlTdW1tYXJ5UGFydHMgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBbbGFi
ZWwsIGNvdW50XSBvZiByZXRyeUNvdW50QnlMYWJlbC5lbnRyaWVzKCkpIHsKKyAgICAgICAgICAg
IGlmICghY291bnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXRy
eVN1bW1hcnlQYXJ0cy5wdXNoKGAke2NvdW50fSBhZGRlZCB0byAke2xhYmVsfSBjb25maWd1cmF0
aW9uYCk7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgcmV0cnlTdW1tYXJ5ID0gbmV3IEludGwu
TGlzdEZvcm1hdCgnZW4nLCB7c3R5bGU6J2xvbmcnLCB0eXBlOidjb25qdW5jdGlvbid9KS5mb3Jt
YXQocmV0cnlTdW1tYXJ5UGFydHMpOworCisgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpfSByZXF1ZXN0ZWQsICR7cmV0cnlTdW1tYXJ5fSBkdWUgdG8g
ZmFpbHVyZXMuYDsKICAgICB9CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKQEAgLTM5Niw3
ICs0MTcsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgICAgICAgICA8ZGl2IGlkPSJ0ZXN0LWdyb3VwLWRldGFpbHMiPgogICAg
ICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLXJlc3VsdHMtdmlld2VyIGlkPSJyZXN1bHRzLXZpZXdl
ciI+PC90ZXN0LWdyb3VwLXJlc3VsdHMtdmlld2VyPgogICAgICAgICAgICAgICAgIDx0ZXN0LWdy
b3VwLXJldmlzaW9uLXRhYmxlIGlkPSJyZXZpc2lvbi10YWJsZSI+PC90ZXN0LWdyb3VwLXJldmlz
aW9uLXRhYmxlPgotICAgICAgICAgICAgICAgIDxkaXYgaWQ9InN0YXR1cy1zdW1tYXJ5IiBjbGFz
cz0ic3VtbWFyeSI+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0icmV0cnktc3VtbWFy
eSIgY2xhc3M9InN1bW1hcnkiPjwvZGl2PgogICAgICAgICAgICAgICAgIDxkaXYgaWQ9InJlcXVl
c3Qtc3VtbWFyeSIgY2xhc3M9InN1bW1hcnkiPjwvZGl2PgogICAgICAgICAgICAgICAgIDx0ZXN0
LWdyb3VwLWZvcm0gaWQ9InJldHJ5LWZvcm0iPlJldHJ5PC90ZXN0LWdyb3VwLWZvcm0+CiAgICAg
ICAgICAgICAgICAgPHRlc3QtZ3JvdXAtZm9ybSBpZD0iYmlzZWN0LWZvcm0iPkJpc2VjdDwvdGVz
dC1ncm91cC1mb3JtPgpAQCAtNTU2LDggKzU3Nyw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2Ug
ZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rp
b24oJ3Nob3dIaWRkZW5UZXN0R3JvdXBzJywgKCkgPT4gdGhpcy5fc2hvd0FsbFRlc3RHcm91cHMo
KSk7CiAgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmVuYW1lVGVzdEdyb3VwJywg
KHRlc3RHcm91cCwgbmV3TmFtZSkgPT4gdGhpcy5fdXBkYXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3Jv
dXAsIG5ld05hbWUpKTsKICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCd0b2dnbGVU
ZXN0R3JvdXBWaXNpYmlsaXR5JywgKHRlc3RHcm91cCkgPT4gdGhpcy5faGlkZUN1cnJlbnRUZXN0
R3JvdXAodGVzdEdyb3VwKSk7Ci0gICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmV0
cnlUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxl
dGlvbikgPT4gdGhpcy5fcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlv
bkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pKTsKLSAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRv
QWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gdGhpcy5fYmlzZWN0Q3VycmVudFRlc3RH
cm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21w
bGV0aW9uKSk7CisgICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmV0cnlUZXN0R3Jv
dXAnLCAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlP
bkNvbXBsZXRpb24pID0+IHRoaXMuX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJl
cGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikpOworICAg
ICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsICh0ZXN0R3Jv
dXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9u
Q29tcGxldGlvbikgPT4gdGhpcy5fYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNv
bW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxl
dGlvbikpOwogCiAgICAgICAgIHRoaXMucGFydCgnY2F1c2UtbGlzdCcpLmxpc3RlblRvQWN0aW9u
KCdhZGRJdGVtJywgKHJlcG9zaXRvcnksIHJldmlzaW9uKSA9PiB7CiAgICAgICAgICAgICB0aGlz
Ll9hc3NvY2lhdGVDb21taXQoJ2NhdXNlJywgcmVwb3NpdG9yeSwgcmV2aXNpb24pOwpAQCAtODMy
LDE5ICs4NTMsMjIgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVh
ZGluZyB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAo
dGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3lu
YyBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCByZXBl
dGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgZXhp
c3RpbmdOYW1lcyA9ICh0aGlzLl90ZXN0R3JvdXBzIHx8IFtdKS5tYXAoKGdyb3VwKSA9PiBncm91
cC5uYW1lKCkpOwogICAgICAgICBjb25zdCBuZXdOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVX
aXRob3V0Q29sbGlzaW9uKHRlc3RHcm91cC5uYW1lKCksIG5ldyBTZXQoZXhpc3RpbmdOYW1lcykp
OwogICAgICAgICBjb25zdCBjb21taXRTZXRMaXN0ID0gdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKTsKICAgICAgICAgY29uc3QgcGxhdGZvcm0gPSB0aGlzLl90YXNrLnBsYXRmb3JtKCkg
fHwgdGVzdEdyb3VwLnBsYXRmb3JtKCk7Ci0gICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRl
V2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3RHcm91cC50
ZXN0KCksIG5ld05hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25D
b21wbGV0aW9uKQotICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJp
bmQodGhpcyksIGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgICAg
Y29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmln
dXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVzdEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwK
KyAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRT
ZXRMaXN0LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5fZGlkRmV0Y2hB
bmFseXNpc1Jlc3VsdHModGVzdEdyb3Vwcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAg
ICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsg
ZXJyb3IpOwotICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGFzeW5jIF9iaXNl
Y3RDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50
LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAo
dGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBu
b3RpZnlPbkNvbXBsZXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXN0R3Jv
dXAudGFzaygpKTsKICAgICAgICAgY29uc3QgZXhpc3RpbmdUZXN0R3JvdXBOYW1lcyA9IG5ldyBT
ZXQoKHRoaXMuX3Rlc3RHcm91cHMgfHwgW10pLm1hcCgodGVzdEdyb3VwKSA9PiB0ZXN0R3JvdXAu
bmFtZSgpKSk7CkBAIC04NTQsNyArODc4LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29tbWl0U2V0
ID0gY29tbWl0U2V0c1tpXTsKICAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cE5hbWUgPSBDb21t
aXRTZXQuY3JlYXRlTmFtZVdpdGhvdXRDb2xsaXNpb24oQ29tbWl0U2V0LmRpZmYocHJldmlvdXND
b21taXRTZXQsIGN1cnJlbnRDb21taXRTZXQpLCBleGlzdGluZ1Rlc3RHcm91cE5hbWVzKTsKICAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0
IFRlc3RHcm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXAudGFzaygpLCB0
ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIFtwcmV2aW91c0NvbW1pdFNldCwgY3VycmVu
dENvbW1pdFNldF0sIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICAgICAgY29uc3Qg
dGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0
ZXN0R3JvdXAudGFzaygpLCB0ZXN0R3JvdXBOYW1lLAorICAgICAgICAgICAgICAgICAgICByZXBl
dGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBbcHJldmlvdXNDb21taXRTZXQsIGN1cnJlbnRD
b21taXRTZXRdLCBub3RpZnlPbkNvbXBsZXRpb24pOwogICAgICAgICAgICAgICAgIGF3YWl0IHRo
aXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKICAgICAgICAgICAgIH0gY2F0Y2go
ZXJyb3IpIHsKICAgICAgICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0
ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwpAQCAtODYzLDcgKzg4OCw3IEBAIGNsYXNzIEFuYWx5c2lz
VGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9CiAgICAgfQogCi0g
ICAgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBO
YW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKQor
ICAgIGFzeW5jIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QodGVz
dEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFw
LCBub3RpZnlPbkNvbXBsZXRpb24pCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFzRHVwbGlj
YXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3JvdXBOYW1lKSkgewogICAgICAgICAgICAgYWxlcnQoYFRo
ZXJlIGlzIGFscmVhZHkgYSB0ZXN0IGdyb3VwIG5hbWVkICIke3Rlc3RHcm91cE5hbWV9ImApOwpA
QCAtODg5LDEzICs5MTQsMTUgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VX
aXRoSGVhZGluZyB7CiAgICAgICAgIGZvciAobGV0IGxhYmVsIGluIGNvbW1pdFNldE1hcCkKICAg
ICAgICAgICAgIGNvbW1pdFNldHMucHVzaChjb21taXRTZXRNYXBbbGFiZWxdKTsKIAotICAgICAg
ICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRoaXMuX3Rhc2ss
IHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21w
bGV0aW9uKQotICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJpbmQo
dGhpcyksIGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29u
c3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vw
cyh0aGlzLl90YXNrLCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25U
eXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3Qg
Z3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAg
X2NyZWF0ZUN1c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNv
bW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMg
X2NyZWF0ZUN1c3RvbVRlc3RHcm91cCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJl
cGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgbm90aWZ5T25Db21wbGV0
aW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGFzay5pc0N1c3RvbSgp
KTsKICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3Vw
TmFtZSkpIHsKQEAgLTkwMywxMCArOTMwLDEzIEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0
ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rh
c2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1p
dFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50aGVuKHRoaXMuX2RpZEZl
dGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRl
V2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3QsIHRlc3RH
cm91cE5hbWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlw
ZSwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX2Rp
ZEZldGNoQW5hbHlzaXNSZXN1bHRzKHRlc3RHcm91cHMpOworICAgICAgICB9IGNhdGNoIChlcnJv
cikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91
cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFz
RHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCmluZGV4IGQwYWYxNzNkYWFk
MzJiNDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLjRkMjZhMzQ3MDc5NjMzYWIxZDk4ZWJiODEx
MzM3NDk5N2E2NGMwNjMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTEyMCwxMSArMTIwLDE0IEBAIGNsYXNz
IENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICBjb25zdCBjcmVhdGVX
aXRoVGVzdEdyb3VwQ2hlY2tib3ggPSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3Jv
dXAnKTsKICAgICAgICAgY29uc3QgcmVwZXRpdGlvbkNvdW50ID0gdGhpcy5jb250ZW50KCdjb25m
aXJtLXJlcGV0aXRpb24nKTsKICAgICAgICAgY29uc3Qgbm90aWZ5T25Db21wbGV0aW9uID0gdGhp
cy5jb250ZW50KCdub3RpZnktb24tY29tcGxldGlvbicpOworICAgICAgICBjb25zdCByZXBldGl0
aW9uVHlwZSA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7CiAgICAgICAgIGNyZWF0
ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5vbmNoYW5nZSA9ICgpID0+IHsKKyAgICAgICAgICAgIC8v
IEZpeE1lOiBzaG91bGQgaW52b2tlIHJlbmRlciBjb2RlIGluc3RlYWQuCiAgICAgICAgICAgICBj
b25zdCBzaG91bGREaXNhYmxlID0gIWNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5jaGVja2Vk
OwogICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LmRpc2FibGVkID0gc2hvdWxkRGlzYWJsZTsK
ICAgICAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbi5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7
Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlLmRpc2FibGVkID0gc2hvdWxk
RGlzYWJsZTsKKyAgICAgICAgfTsKICAgICB9CiAKICAgICBzZXJpYWxpemVTdGF0ZSgpCkBAIC0y
NDMsMTAgKzI0NiwxMSBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsK
ICAgICAgICAgY29uc3QgY3JlYXRlV2l0aFRlc3RHcm91cCA9IHRoaXMuY29udGVudCgnY3JlYXRl
LXdpdGgtdGVzdC1ncm91cCcpLmNoZWNrZWQ7CiAgICAgICAgIGNvbnN0IHJlcGV0aXRpb25Db3Vu
dCA9IHRoaXMuY29udGVudCgnY29uZmlybS1yZXBldGl0aW9uJykudmFsdWU7CiAgICAgICAgIGNv
bnN0IG5vdGlmeU9uQ29tcGxldGlvbiA9IHRoaXMuY29udGVudCgnbm90aWZ5LW9uLWNvbXBsZXRp
b24nKS5jaGVja2VkOworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29udGVu
dCgncmVwZXRpdGlvbi10eXBlJykudmFsdWU7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
IGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IChjcmVhdGVXaXRoVGVzdEdyb3VwID8KLSAgICAg
ICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50
LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA6IEFuYWx5
c2lzVGFzay5jcmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQpKTsKKyAgICAgICAgICAg
ICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29u
ZmlybScsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlv
bikgOiBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7CiAg
ICAgICAgICAgICBuZXdXaW5kb3cubG9jYXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lz
L3Rhc2svJyArIGFuYWx5c2lzVGFzay5pZCgpKTsKICAgICAgICAgICAgIHRoaXMuZmV0Y2hBbmFs
eXNpc1Rhc2tzKHRydWUpOwogICAgICAgICB9IGNhdGNoKGVycm9yKSB7CkBAIC01ODksNyArNTkz
LDE2IEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj4xMDwvb3B0aW9uPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8bGFiZWw+aXRlcmF0aW9uczwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Im5vdGlmeS1vbi1jb21wbGV0aW9u
IiBjaGVja2VkPiBOb3RpZnkgb24gY29tcGxldGlvbjwvbGFiZWw+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxsYWJlbD5JbjwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHNlbGVjdCBpZD0icmVwZXRpdGlvbi10eXBlIj4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYWx0ZXJuYXRpbmciIHNlbGVjdGVkPmFsdGVybmF0
ZSAoQUJBQik8L29wdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlv
biB2YWx1ZT0ic2VxdWVudGlhbCI+c2VxdWVuY2UgKEFBQkIpPC9vcHRpb24+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xp
PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJub3RpZnktb24tY29tcGxldGlv
biIgY2hlY2tlZD5Ob3RpZnkgb24gY29tcGxldGlvbjwvbGFiZWw+CiAgICAgICAgICAgICAgICAg
ICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAg
ICAgICAgIDx1bCBjbGFzcz0iY2hhcnQtcGFuZS1maWx0ZXJpbmctb3B0aW9ucyBwb3BvdmVyIiBz
dHlsZT0iZGlzcGxheTpub25lIj4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFn
ZS5qcwppbmRleCAzMDFmZDJhMjkwNjUxZDUxMjhjMzUyM2FmNDk4MjBmMjAzYmM2NmEzLi4wYThl
NDNlNDk2NDQ0NWVlMzcwNDA0YzcxYzkxNTZhOTJjYmU1ODMyIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBh
Z2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jcmVh
dGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCkBAIC0yMiwxNCArMjIsMTQgQEAgY2xhc3MgQ3JlYXRl
QW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIHRoaXMu
cGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9jcmVhdGVB
bmFseXNpc1Rhc2tXaXRoR3JvdXAuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgX2NyZWF0ZUFu
YWx5c2lzVGFza1dpdGhHcm91cChyZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1p
dFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgbm90aWZ5T25Db21wbGV0aW9uKQorICAg
IGFzeW5jIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3JvdXAodGVzdEdyb3VwTmFtZSwgcmVwZXRp
dGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIG5v
dGlmeU9uQ29tcGxldGlvbiwgdGFza05hbWUpCiAgICAgewotICAgICAgICBUZXN0R3JvdXAuY3Jl
YXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikudGhlbigodGFzaykg
PT4gewotICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIoKS51cmwoYGFuYWx5c2lz
L3Rhc2svJHt0YXNrLmlkKCl9YCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb25zdCB0
YXNrID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwg
dGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29t
bWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYg
PSB0aGlzLnJvdXRlcigpLnVybChgYW5hbHlzaXMvdGFzay8ke3Rhc2suaWQoKX1gKTsKLSAgICAg
ICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAg
ICBhbGVydCgnRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwot
ICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlbmRlcigpCmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0
cy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1
aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmluZGV4IGZkNDA0MzQ0MjM3MGY0NTNmMWZkM2VlN2I3YWE1
YTUxZmZhYzFiMjEuLjljNzc2ZjBmMDU1OTlkOGMzZWE0NzU5ZTBhYTZkZTA2MWVlM2U4MWYgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxk
LXJlcXVlc3RzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCkBAIC01NjYsNiArNTY2LDYyIEBAIGRl
c2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsK
ICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQgc3RpbGwgcmV0dXJuIGJ1aWxkIHJlcXVlc3RzIGFz
c29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyaWdnZXJhYmxlIHdoZW4gdGVzdCBncm91cCBoYXMgYWxs
IGJ1aWxkIHJlcXVlc3RzIGZpbmlzaGVkIHdpdGggIm1heU5lZWRNb3JlUmVxdWVzdCIgZmxhZyB0
byBiZSB0cnVlcycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9j
a0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAn
Y29tcGxldGVkJywgJ2ZhaWxlZCddLCB0cnVlLCBudWxsLCBudWxsLCAnYWx0ZXJuYXRpbmcnLCB0
cnVlKTsKKyAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jyk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29y
dCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cycs
ICd1cGxvYWRlZEZpbGVzJ10pOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50
Wydjb21taXRTZXRzJ10ubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBh
cnNlSW50KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5pZCksIDQwMSk7CisgICAgICAgIGFzc2Vy
dC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMs
IFsKKyAgICAgICAgICAgIHtjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRj
aDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAg
ICAgIHtjb21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVx
dWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0U2V0cyddWzFdLmlkKSwgNDAyKTsKKyAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0ucmV2
aXNpb25JdGVtcywgWworICAgICAgICAgICAge2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6
IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9
LAorICAgICAgICAgICAge2NvbW1pdDogJzk2MzM2JywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNo
OiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9XSk7CisKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5ndGgsIDMpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzBdLmlk
KSwgODc4MzIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cydd
WzBdLnJlcG9zaXRvcnksICc5Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50
Wydjb21taXRzJ11bMF0ucmV2aXNpb24sICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5pZCksIDkzMTE2KTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5yZXBvc2l0
b3J5LCAnMTEnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XVsxXS5yZXZpc2lvbiwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFy
c2VJbnQoY29udGVudFsnY29tbWl0cyddWzJdLmlkKSwgOTYzMzYpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzJdLnJlcG9zaXRvcnksICcxMScpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzJdLnJldmlzaW9uLCAn
MTkyNzM2Jyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVx
dWVzdHMnXS5sZW5ndGgsIDQpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNl
SW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5pZCksIDcwMCk7CisgICAgICAgIGFzc2Vy
dC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLm9y
ZGVyKSwgMCk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0uY29tbWl0U2V0KSwgNDAx
KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMF0uc3RhdHVzLCAnY29tcGxldGVkJyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnRlc3QsICcyMDAnKTsKKworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsx
XS5pZCksIDcwMSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLm9yZGVyKSwgMSk7CisgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnBsYXRmb3JtLCAnNjUnKTsK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJl
cXVlc3RzJ11bMV0uY29tbWl0U2V0KSwgNDAyKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uc3RhdHVzLCAnY29tcGxldGVkJyk7Cisg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFd
LnRlc3QsICcyMDAnKTsKKworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5pZCksIDcwMik7CisgICAgICAgIGFzc2VydC5k
ZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLm9yZGVy
KSwgMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzJdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uY29tbWl0U2V0KSwgNDAxKTsK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11b
Ml0uc3RhdHVzLCAnY29tcGxldGVkJyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnRlc3QsICcyMDAnKTsKKworICAgICAgICBhc3Nl
cnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5p
ZCksIDcwMyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzNdLm9yZGVyKSwgMyk7CisgICAgICAgIGFzc2VydC5kZWVwU3Ry
aWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnNjUnKTsKKyAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bM10uY29tbWl0U2V0KSwgNDAyKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uc3RhdHVzLCAnZmFpbGVkJyk7CisgICAgICAg
IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRlc3Qs
ICcyMDAnKTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91bGQgc3VwcG9ydCB1c2VMZWdhY3lJZFJl
c29sdXRpb24gb3B0aW9uJywgKCkgPT4gewogICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9j
a0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxk
LXJlcXVlc3RzL2J1aWxkLXdlYmtpdD91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScpOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2Fk
LXJvb3QtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS11cGxvYWQtcm9vdC10ZXN0cy5qcwppbmRleCAzYWMwY2U5ZTM3ODUxYzFmNWRkMmI4YjUzMmNk
MzQ2M2ExZGE2M2IwLi42NzVkNTk0ODc0Y2ExNmRjN2U4OTY2ODA0Y2ZlZjQxODY1ZjI1MmRjIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS11cGxv
YWQtcm9vdC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qcwpAQCAtNjUsNyArNjUsNyBAQCBmdW5jdGlvbiBj
cmVhdGVUZXN0R3JvdXBXaWhQYXRjaCgpCiAgICAgICAgIGNvbnN0IHNldDIgPSBuZXcgQ3VzdG9t
Q29tbWl0U2V0OwogICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQs
ICcxOTE2MjInKTsKICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoc2hhcmVk
LCAnODAyMjknKTsKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3Vz
dG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwg
c29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKTsKKyAgICAgICAgcmV0dXJu
IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJ
ZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwg
J2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJdKTsKICAgICB9KS50aGVuKCh0YXNrKSA9PiB7CiAg
ICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBdOwogICAg
IH0pLnRoZW4oKGdyb3VwKSA9PiB7CkBAIC0xMDcsNyArMTA3LDcgQEAgZnVuY3Rpb24gY3JlYXRl
VGVzdEdyb3VwV2l0aFBhdGNoQW5kT3duZWRDb21taXRzKCkKICAgICAgICAgc2V0Mi5zZXRSZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkyNzM2Jyk7CiAgICAgICAgIHNldDIuc2V0UmV2
aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkU0pDLCAnb3duZWQtanNjLTkxOTEnLCBudWxsLCAnMTky
NzM2Jyk7CiAKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9t
IHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29t
ZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKTsKKyAgICAgICAgcmV0dXJuIFRl
c3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChN
b2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgJ2Fs
dGVybmF0aW5nJywgW3NldDEsIHNldDJdKTsKICAgICB9KS50aGVuKCh0YXNrKSA9PiB7CiAgICAg
ICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBdOwogICAgIH0p
LnRoZW4oKGdyb3VwKSA9PiB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktYWRk
LWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmluZGV4IGRjZTA5Y2JhYjM1MGEyMmE4MzFkNWJmOTky
MTdhZTcwOTk3MjY5ODIuLjVjM2ZiZGFmMjE5OGIxNWYxYzE5Nzc4NTliZDY4NDI3MDc5ODZiNTIg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmls
ZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3Rz
LXRlc3RzLmpzCkBAIC0xMjMsNiArMTIzLDExIEBAIGFzeW5jIGZ1bmN0aW9uIGFkZFRyaWdnZXJh
YmxlQW5kQ3JlYXRlVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMpCiAgICAgYXdhaXQgY3JlYXRl
QW5hbHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlzaW9ucyk7CiB9CiAKK2Z1bmN0aW9uIGFzc2Vy
dE9yZGVyT2ZSZXF1ZXN0cyhyZXF1ZXN0cywgZXhwZWN0ZWRPcmRlcikKK3sKKyAgICBhc3NlcnQu
ZGVlcEVxdWFsKHJlcXVlc3RzLm1hcChyZXF1ZXN0ID0+IHJlcXVlc3Qub3JkZXIoKSksIGV4cGVj
dGVkT3JkZXIpOworfQorCiBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1
ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMsICdub2RlJyk7
CiAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CkBAIC0xMzQsNyArMTM5LDggQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigpIHsKICAgICAgICAg
Y29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJl
cG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKICAgICAgICAgY29uc3QgcmV2aXNpb25T
ZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0Lmlk
KCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOwogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQg
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAotICAgICAgICAg
ICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tE
YXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNO
b3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pOwor
ICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZv
cm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQo
KSwKKyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25D
b3VudDogMiwgcmV2aXNpb25TZXRzLCBjb21taXRTZXQ6IG51bGx9KTsKICAgICAgICAgY29uc3Qg
aW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwogCiAgICAgICAgIGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6
IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOwpAQCAtMTQ0LDE1
ICsxNTAsMTcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMn
LCBmdW5jdGlvbigpIHsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1
ZSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBldGl0aW9u
Q291bnQoKSksIDIpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCks
IDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgMik7CiAKICAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
YWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAy
fSk7CiAKICAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRj
aEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpKSwgNCk7Ci0gICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB1
cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnRGb3JDb21taXRT
ZXQoY29tbWl0U2V0KSwgNCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdy
b3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKICAgICAgICAgZm9y
IChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRz
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB1cGRhdGVkR3JvdXBzWzBd
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCk7CkBAIC0xNzQsMTAgKzE4MiwzMTQgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigp
IHsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOwotICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAy
KTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
K2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIp
OwogICAgICAgICBhd2FpdCBncm91cC51cGRhdGVIaWRkZW5GbGFnKHRydWUpOwogCiAgICAgICAg
IGF3YWl0IGFzc2VydFRocm93cygnQ2Fubm90QWRkVG9IaWRkZW5UZXN0R3JvdXAnLCBhc3luYyAo
KSA9PiBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMn
LCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDJ9KSkKICAgICB9KTsKKworICAg
IGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkNvbW1pdFNldE5vdFN1cHBvcnRlZEZvckFsdGVybmF0
aW5nUmVwZXRpdGlvblR5cGUiIHdoZW4gYWRkaW5nIGJ1aWxkIHJlcXVlc3RzIGZvciBvbmUgY29t
bWl0IHNldCBpbiBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAg
ICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAg
ICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkg
PT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZp
c2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJr
aXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9
IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgewor
ICAgICAgICAgICAgbmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9y
bTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgp
LAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6
IDIsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLCByZXZpc2lvblNldHN9KTsKKyAgICAg
ICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAg
ICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywg
eydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOwor
CisgICAgICAgIGNvbnN0IG5vQ2FjaGUgPSB0cnVlOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hl
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5hdGlu
ZycpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpLmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3Jv
dXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAg
IGNvbnN0IGZpcnN0Q29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRz
KClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNv
bW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAyXSk7CisgICAgICAgIGNvbnN0IHNlY29uZENv
bW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAg
ICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25k
Q29tbWl0U2V0KSwgWzEsIDNdKTsKKworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0NvbW1p
dFNldE5vdFN1cHBvcnRlZEZvckFsdGVybmF0aW5nUmVwZXRpdGlvblR5cGUnLCAoKSA9PiB7Cisg
ICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJl
cXVlc3RzJywKKyAgICAgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291
bnQ6IDIsIGNvbW1pdFNldDogc2Vjb25kQ29tbWl0U2V0LmlkKCl9KQorICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBidWlsZCByZXF1ZXN0cyBmb3IgZmly
c3QgY29tbWl0IHNldCB3aXRoIG9yZGVyIHNoaWZ0ZWQgaW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3Jv
dXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRl
VGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0Jylb
MF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsK
KyAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6
ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHJlcGV0
aXRpb25Db3VudDogMiwKKyAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwg
bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCBy
ZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0
ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IG5vQ2FjaGUgPSB0cnVlOworICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rh
c2tJZCddLCBub0NhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3Nl
cXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoK2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKwor
ICAgICAgICBsZXQgZmlyc3RDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1p
dFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3Rz
Rm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNlY29u
ZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAg
ICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vj
b25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNl
bmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLAorICAgICAgICAgICAge2dyb3VwOiBpbnNl
cnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXQ6IGZpcnN0Q29tbWl0U2V0LmlkKCl9
KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNo
Rm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKCt1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlh
bCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpLmxlbmd0aCwgMik7CisKKyAgICAgICAgZmlyc3RDb21taXRTZXQgPSB1cGRhdGVkR3JvdXBz
WzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVl
c3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDEsIDIs
IDNdKTsKKyAgICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0
ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5y
ZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbNCwgNV0pOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IHRoZSBvcmRlciBvZiBwcmVjZWRpbmcgYnVpbGQg
cmVxdWVzdHMgd2hlbiBhZGRpbmcgbmV3IGJ1aWxkIHJlcXVlc3RzIGluIGEgc2VxdWVudGlhbCB0
ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFu
ZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0
b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dl
YktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Myd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRh
c2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
LCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRl
c3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVu
dGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSBy
ZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3Qgbm9DYWNoZSA9IHRydWU7Cisg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIG5vQ2FjaGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlw
ZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVx
dWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0
U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCks
IDIpOworCisgICAgICAgIGxldCBmaXJzdENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVz
dGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAu
cmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBs
ZXQgc2Vjb25kQ29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClb
MV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1p
dFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwgM10pOworCisgICAgICAgIGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3Jv
dXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldDogc2Vjb25kQ29tbWl0
U2V0LmlkKCl9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdy
b3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKCt1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwg
Mik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAn
c2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpLmxlbmd0aCwgMik7CisKKyAgICAgICAgZmlyc3RDb21taXRTZXQgPSB1cGRh
dGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3Jk
ZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwg
WzAsIDFdKTsKKyAgICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1
ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91
cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwgMywgNCwgNV0pOwor
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaGlmdCB0aGUgb3JkZXIgb2YgZm9sbG93aW5nIGJ1
aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5nIHJldHJ5IGZvciBhIHNwZWNpZmljIGNvbW1pdCBzZXQg
aW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgd2l0aCAzIGNvbW1pdCBzZXRzJywgYXN5bmMgKCkg
PT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFz
aycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVw
b3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBj
b25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9
fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fSwKKyAgICAgICAgICAgIHtb
d2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTI3MzYnfX1dOworICAgICAgICBjb25zdCByZXN1
bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcs
CisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0
Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAorICAg
ICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAg
ICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAg
ICAgICAgY29uc3Qgbm9DYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBh
d2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIG5vQ2FjaGUpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwg
Myk7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGxldCBmaXJzdENv
bW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAg
ICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RD
b21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBsZXQgc2Vjb25kQ29tbWl0U2V0ID0gdGVzdEdy
b3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZS
ZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwg
M10pOworICAgICAgICBsZXQgdGhpcmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJl
cXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29tbWl0U2V0KSwgWzQsIDVdKTsKKworICAgICAgICBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLAorICAg
ICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXQ6
IGZpcnN0Q29tbWl0U2V0LmlkKCl9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0g
YXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCt1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0
aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisKKyAgICAgICAgZmlyc3RDb21t
aXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAg
ICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0
Q29tbWl0U2V0KSwgWzAsIDEsIDIsIDNdKTsKKyAgICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gdXBk
YXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9y
ZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQp
LCBbNCwgNV0pOworICAgICAgICB0aGlyZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVz
dGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAu
cmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRTZXQpLCBbNiwgN10pOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCBzaGlmdCB0aGUgb3JkZXIgb2YgYnVpbGQgcmVxdWVzdHMgd2hlbiBh
ZGRpbmcgcmV0cnkgZm9yIGFsbCBjb21taXQgc2V0cyBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91
cCB3aXRoIDMgY29tbWl0IHNldHMnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRy
aWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIzJ319LAorICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjog
JzE5MjczNid9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVz
dCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdz
ZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJ
ZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBub0NhY2hlID0gdHJ1
ZTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRh
c2socmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3Jv
dXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRp
b25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAzKTsKKyAgICAgICAgZm9yIChjb25zdCBj
b21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0
U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZpcnN0Q29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5y
ZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhn
cm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAg
ICAgIGxldCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisgICAgICAgIGxldCB0aGlyZENv
bW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAg
ICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRD
b21taXRTZXQpLCBbNCwgNV0pOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVk
R3JvdXBJZCwgYWRkQ291bnQ6IDJ9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0g
YXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCt1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0
aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisKKyAgICAgICAgZmlyc3RDb21t
aXRTZXQgPSB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAg
ICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0
Q29tbWl0U2V0KSwgWzAsIDEsIDIsIDNdKTsKKyAgICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gdXBk
YXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9y
ZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQp
LCBbNCwgNSwgNiwgN10pOworICAgICAgICB0aGlyZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0u
cmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMo
Z3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRTZXQpLCBbOCwgOSwgMTAsIDEx
XSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoICJOb0NvbW1pdFNldElu
VGVzdEdyb3VwIiBpZiBjb21taXQgc2V0IGlzIG5vdCBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91
cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVU
YXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwo
KS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVsw
XTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdv
dGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1v
Y2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxz
ZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZp
c2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0
R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Vw
ZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5
TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtn
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOwor
ICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRz
KCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50
Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGZpcnN0Q29tbWl0
U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFz
c2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1p
dFNldCksIFswLCAxXSk7CisgICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IHRlc3RHcm91
cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVx
dWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNd
KTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSBmaXJzdENvbW1pdFNldC5pZCgpICsgc2Vj
b25kQ29tbWl0U2V0LmlkKCkgKyAxOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ05vQ29t
bWl0U2V0SW5UZXN0R3JvdXAnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdy
b3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXR9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
KyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoICJJbnZhbGlkQ29tbWl0U2V0IiBpZiBjb21taXQg
c2V0IGlkIGlzIG5vdCBhbiBpbnRlZ2VyIGZvciBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFz
eW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdz
b21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0
ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAg
ICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcx
OTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAg
ICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRl
c3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0
YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRh
LnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVw
ZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNl
dHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJ
ZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10
ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0
czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAu
ZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRl
c3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNl
cnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1v
cmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAgICAg
ICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29t
bWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGZpcnN0Q29tbWl0U2V0ID0g
dGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9y
ZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCks
IFswLCAxXSk7CisgICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0u
cmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMo
Z3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKwor
ICAgICAgICBjb25zdCBjb21taXRTZXQgPSAnaW52YWxpZCc7CisgICAgICAgIGF3YWl0IGFzc2Vy
dFRocm93cygnSW52YWxpZENvbW1pdFNldCcsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGlu
c2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkludmFsaWRDb21taXRTZXQiIGlm
IGNvbW1pdCBzZXQgaWQgaXMgbm90IGFuIGludGVnZXIgZm9yIGFuIGFsdGVybmF0aW5nIHRlc3Qg
Z3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3Jl
YXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnku
YWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0
JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319
XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1l
OiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0
OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycs
IHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRb
J3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVk
TW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0
IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnYWx0ZXJuYXRpbmcnKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgs
IDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21t
aXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGZpcnN0
Q29tbWl0U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAg
ICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJz
dENvbW1pdFNldCksIFswLCAyXSk7CisgICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IHRl
c3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRl
ck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwg
WzEsIDNdKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSAnaW52YWxpZCc7CisgICAgICAg
IGF3YWl0IGFzc2VydFRocm93cygnSW52YWxpZENvbW1pdFNldCcsICgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMn
LCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pCisgICAg
ICAgIH0pOworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMu
anMKaW5kZXggMmIyNzUwYWE3YTJkZDNiYzc5NWE3NjcyNzY0YmFhYTNlYjg0ZDFiNi4uMmExNzE3
OGU0MzQyMzIyZWZjYzBiZmZkMjdmMjk4MjM1ZjQzMjZkYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlz
aXMtdGFzay10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCkBAIC02ODIs
NCArNjgyLDExOSBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10
YXNrIHdpdGggbm9kZSBwcml2aWxlZ2VkIGFwaScsIGZ1bmN0aQogICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXRSZXBvc2l0
b3J5KS5yZXZpc2lvbigpLCAnMTkxNjIyJyk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChz
ZWNvbmRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXRSZXBvc2l0b3J5KS5yZXZp
c2lvbigpLCAnMTkxNjIzJyk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8g
Y3JlYXRlIGFuIGFuYWx5c2lzIHRhc2sgd2l0aCBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFz
eW5jICgpID0+IHsKKyAgICAgICAgY29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBw
bGF0Zm9ybUlkID0gMTsKKyAgICAgICAgY29uc3QgdHJpZ2dlcmFibGVJZCA9IDEyMzQ7CisKKyAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGF3YWl0IGRi
Lmluc2VydCgndGVzdHMnLCB7bmFtZTogJ1N1aXRlJ30pOworICAgICAgICBjb25zdCB0ZXN0Um93
ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RzJywge25hbWU6ICdTdWl0ZSd9KTsKKyAg
ICAgICAgY29uc3QgdGVzdElkID0gdGVzdFJvdy5pZDsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0
KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAg
ICBhd2FpdCBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3Nv
bWUgcGxhdGZvcm0nfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFi
bGVzJywge2lkOiAxMjM0LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdh
aXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwg
bmFtZTogJ3dlYmtpdC1vbmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAg
ICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9y
eTogd2Via2l0SWQsIGdyb3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJp
Z2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCB7dGVzdDogdGVzdElkLCBwbGF0Zm9ybTogcGxhdGZv
cm1JZCwgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVp
bGRlckZvclJlcG9ydChyZXBvcnRXaXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhS
ZXZpc2lvbik7CisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04o
Jy9hcGkvcmVwb3J0LycsIGFub3RoZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2Fp
dCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgIGNvbnN0IHRlc3QgPSBUZXN0LmZpbmRCeUlk
KHRlc3RJZCk7CisgICAgICAgIGNvbnN0IHNvbWVQbGF0Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlk
KHBsYXRmb3JtSWQpOworICAgICAgICBjb25zdCBjb25maWdSb3cgPSBhd2FpdCBkYi5zZWxlY3RG
aXJzdFJvdygndGVzdF9jb25maWd1cmF0aW9ucycsIHttZXRyaWM6IHRlc3QubWV0cmljcygpWzBd
LmlkKCksIHBsYXRmb3JtOiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0
UnVucyA9IGF3YWl0IGRiLnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jv
d1snaWQnXX0pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAy
KTsKKworICAgICAgICBjb25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNp
b246ICcxOTE2MjInfX07CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Vi
a2l0SWRdOiB7cmV2aXNpb246ICcxOTE2MjMnfX07CisKKyAgICAgICAgY29uc3QgY29udGVudCA9
IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywg
e25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdEdy
b3VwTmFtZTogJ0NvbmZpcm0nLCByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhl
clJldmlzaW9uU2V0XSwKKyAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwg
ZW5kUnVuOiB0ZXN0UnVuc1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0
aXRpb25UeXBlOiAnc2VxdWVudGlhbCd9KTsKKworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQg
QW5hbHlzaXNUYXNrLmZldGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0YXNrLm5hbWUoKSwgJ2NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0KCF0
YXNrLmhhc1Jlc3VsdHMoKSk7CisgICAgICAgIGFzc2VydCh0YXNrLmhhc1BlbmRpbmdSZXF1ZXN0
cygpKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmJ1Z3MoKSwgW10pOwor
ICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suY2F1c2VzKCksIFtdKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmZpeGVzKCksIFtdKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRhc2suY2hhbmdlVHlwZSgpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRhc2sucGxhdGZvcm0oKS5sYWJlbCgpLCAnc29tZSBwbGF0Zm9ybScpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5tZXRyaWMoKS50ZXN0KCkubGFiZWwoKSwg
J1N1aXRlJyk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2sodGFzay5pZCgpKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5uYW1lKCksICdDb25maXJt
Jyk7CisgICAgICAgIGFzc2VydC5vayh0ZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3Nl
cXVlbnRpYWwnKQorICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVx
dWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAg
ICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisK
KyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxk
UmVxdWVzdHNbMV0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNb
Ml0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKwor
ICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0
KCk7CisgICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMl0uY29t
bWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHdlYmtpdFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZp
bmRCeUlkKHdlYmtpdElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0
U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5
MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1p
dEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOwor
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZFJlcGV0aXRpb25U
eXBlIiB3aGVuIHJlcGV0aXRpb24gdHlwZSBpcyBub3QgImFsdGVybmF0aW5nIiBvciAic2VxdWVu
dGlhbCInLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAg
ICAgY29uc3QgcGxhdGZvcm1JZCA9IDE7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAx
MjM0OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAg
ICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge25hbWU6ICdTdWl0ZSd9KTsKKyAgICAgICAgY29u
c3QgdGVzdFJvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0cycsIHtuYW1lOiAnU3Vp
dGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RJZCA9IHRlc3RSb3cuaWQ7CisgICAgICAgIGF3YWl0
IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB3ZWJraXRJZCwgbmFtZTogJ1dlYktpdCd9
KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdwbGF0Zm9ybXMnLCB7aWQ6IHBsYXRmb3JtSWQs
IG5hbWU6ICdzb21lIHBsYXRmb3JtJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ2J1aWxk
X3RyaWdnZXJhYmxlcycsIHtpZDogMTIzNCwgbmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnfSk7Cisg
ICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCB7
aWQ6IDIzNDUsIG5hbWU6ICd3ZWJraXQtb25seScsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlk
fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywg
e3JlcG9zaXRvcnk6IHdlYmtpdElkLCBncm91cDogMjM0NX0pOworICAgICAgICBhd2FpdCBkYi5p
bnNlcnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywge3Rlc3Q6IHRlc3RJZCwgcGxhdGZv
cm06IHBsYXRmb3JtSWQsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3
YWl0IGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAg
ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBy
ZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAg
ICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICBjb25zdCB0ZXN0ID0gVGVz
dC5maW5kQnlJZCh0ZXN0SWQpOworICAgICAgICBjb25zdCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9y
bS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQg
ZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0Lm1l
dHJpY3MoKVswXS5pZCgpLCBwbGF0Zm9ybTogc29tZVBsYXRmb3JtLmlkKCl9KTsKKyAgICAgICAg
Y29uc3QgdGVzdFJ1bnMgPSBhd2FpdCBkYi5zZWxlY3RSb3dzKCd0ZXN0X3J1bnMnLCB7Y29uZmln
OiBjb25maWdSb3dbJ2lkJ119KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RSdW5z
Lmxlbmd0aCwgMik7CisKKyAgICAgICAgY29uc3Qgb25lUmV2aXNpb25TZXQgPSB7W3dlYmtpdElk
XToge3JldmlzaW9uOiAnMTkxNjIyJ319OworICAgICAgICBjb25zdCBhbm90aGVyUmV2aXNpb25T
ZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIzJ319OworICAgICAgICBhd2FpdCBh
c3NlcnRUaHJvd3MoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsICgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycs
IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlybScsCisgICAgICAgICAgICAgICAgcmVw
ZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJt
JywKKyAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhl
clJldmlzaW9uU2V0XSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2ludmFsaWQt
bW9kZScsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLAorICAg
ICAgICAgICAgICAgIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sCisgICAgICAgICAgICAgICAg
bmVlZHNOb3RpZmljYXRpb246IHRydWUKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0pOworICAg
IH0pOwogfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1n
cm91cC10ZXN0cy5qcwppbmRleCA2N2Q4NGFkYWY1OTZhMTcwYmRkZmVhZjIyNDIwZjJjMjUwNWUx
M2Q2Li40ZjM0NjI2NjVhMzQ1ZWNhYzlmYTgyOTNjMjljZGRlZTY4ZDU0OTQ3IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNy
ZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAg
LTcsNiArNyw4IEBAIGNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0
LXNlcnZlci5qcycpOwogY29uc3QgVGVtcG9yYXJ5RmlsZSA9IHJlcXVpcmUoJy4vcmVzb3VyY2Vz
L3RlbXBvcmFyeS1maWxlLmpzJykuVGVtcG9yYXJ5RmlsZTsKIGNvbnN0IGFkZFdvcmtlckZvclJl
cG9ydCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYWRkV29y
a2VyRm9yUmVwb3J0OwogY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291
cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OworY29uc3QgYXNz
ZXJ0VGhyb3dzID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5h
c3NlcnRUaHJvd3M7CisKIAogZnVuY3Rpb24gY3JlYXRlQW5hbHlzaXNUYXNrKG5hbWUsIHdlYmtp
dFJldmlzaW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQogewpAQCAtNDAwLDcgKzQwMiw3IEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwog
ICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00NDcsNyArNDQ5
LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0
aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgZ3JvdXBJZCk7Ci0gICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwg
MSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwog
ICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTQ4NSw3
ICs0ODcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3Jv
dXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBz
WzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNl
cnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25z
dCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTUyNCw3ICs1MjYsNyBAQCBk
ZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291
bnQoKSwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91
cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9
IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTU1Niw3ICs1NTgsNyBAQCBkZXNjcmliZSgnL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAg
ICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlm
aWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxk
UmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCA0KTsKQEAgLTYwMyw3ICs2MDUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsK
ICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsK
QEAgLTY0NSw3ICs2NDcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
ZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY5NCw3ICs2
OTYsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBd
OwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCBy
ZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTc0Myw3ICs3NDUsNyBAQCBkZXNj
cmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIp
OwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3Jt
SWQoKSkpOwpAQCAtODA4LDcgKzgxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCks
IGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQub2so
IWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9y
bS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC04ODMsNyArODg1LDcg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7Cisg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24o
KSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZp
bmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQ
bGF0Zm9ybUlkKCkpKTsKQEAgLTk2Niw3ICs5NjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNz
ZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJ
ZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwg
UGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTA2MCw3
ICsxMDYyLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElk
KTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50
ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAg
ICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tE
YXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTExNTcsNyArMTE1OSw3IEBAIGRlc2NyaWJlKCcv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAg
ICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAg
ICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0
YS5zb21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5w
bGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7
CkBAIC0xMjM1LDcgKzEyMzcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10
ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpLCAxKTsKICAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwog
ICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC0xMjY0LDcgKzEyNjYs
NyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rp
b24gKCkgewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OwogICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29uc3QgcmVx
dWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtMTMwOCw3ICsxMzEwLDcgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIFRlc3RHcm91cC5zb3J0QnlOYW1lKHRlc3RHcm91cHMpOwogCiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1swXS5uYW1lKCksICd0ZXN0MScpOwotICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0ucmVwZXRpdGlvbkNvdW50KCksIDEp
OworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0uaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGxldCByZXF1ZXN0cyA9IHRlc3RHcm91
cHNbMF0uYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBsZXQgc2V0MCA9IHJlcXVlc3RzWzBdLmNv
bW1pdFNldCgpOwpAQCAtMTMyMSw3ICsxMzIzLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7
CiAKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzFdLm5hbWUoKSwg
J3Rlc3QyJyk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5y
ZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwc1sxXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgcmVx
dWVzdHMgPSB0ZXN0R3JvdXBzWzFdLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgc2V0MCA9IHJl
cXVlc3RzWzBdLmNvbW1pdFNldCgpOwpAQCAtMTMzNiw0ICsxMzM4LDEzNiBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTI3MzYnKTsKICAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNy
ZWF0ZSBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCB3aXRoIGFuIGFuYWx5c2lzIHRhc2snLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29t
ZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVy
KChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAg
ICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0
LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFz
aycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNp
b25TZXRzLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9
KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCdd
OworCisgICAgICAgIGNvbnN0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJv
bWlzZS5hbGwoW0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpCisgICAgICAgIGFz
c2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVz
dHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
c1swXS5vcmRlcigpLCAwKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFd
Lm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3Jk
ZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigp
LCAzKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpLmxlbmd0aCwgMikKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1pdFNldCgp
LmVxdWFscyhyZXF1ZXN0c1sxXS5jb21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQocmVxdWVz
dHNbMl0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAg
ICAgICAgY29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25z
dCBzZXQxID0gcmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5kZWVwU3Ry
aWN0RXF1YWwoc2V0MC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcx
OTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY3Jl
YXRlIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHdpdGggYW4gYW5hbHlzaXMgdGFzaycsIGFzeW5j
ICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21l
IHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIo
KHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAg
ICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2
MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBs
ZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3Qt
Z3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNr
JywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNv
bWVUZXN0SWQoKSwKKyAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNp
b25TZXRzLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9
KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCdd
OworCisgICAgICAgIGNvbnN0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJv
bWlzZS5hbGwoW0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpCisgICAgICAgIGFz
c2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVz
dHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
c1swXS5vcmRlcigpLCAwKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFd
Lm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3Jk
ZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigp
LCAzKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpLmxlbmd0aCwgMikKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1pdFNldCgp
LmVxdWFscyhyZXF1ZXN0c1sxXS5jb21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQocmVxdWVz
dHNbMl0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAg
ICAgICAgY29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25z
dCBzZXQxID0gcmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5kZWVwU3Ry
aWN0RXF1YWwoc2V0MC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcx
OTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY3Jl
YXRlIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIGluIGFuIGV4aXN0aW5nIGFuYWx5c2lzIHRhc2sn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRhc2tJZCA9IGF3YWl0IGFkZFRyaWdnZXJh
YmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5p
ZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAn
MTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcs
IHRhc2s6IHRhc2tJZCwgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6
IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0
cnVlLCByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJlcGV0aXRp
b25Db3VudDogMn0pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rl
c3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgW2FuYWx5c2lzVGFzaywgdGVzdEdyb3Vwc10g
PSBhd2FpdCBQcm9taXNlLmFsbChbQW5hbHlzaXNUYXNrLmZldGNoQnlJZChyZXN1bHRbJ3Rhc2tJ
ZCddKSwgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKV0pOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYW5hbHlzaXNUYXNrLm5hbWUoKSwgJ3NvbWUgdGFz
aycpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKQor
ICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGNv
bnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVl
c3RzWzJdLm9yZGVyKCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNb
M10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpCisgICAgICAgIGFzc2VydChyZXF1ZXN0c1swXS5j
b21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbMV0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNz
ZXJ0KHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1ZXN0c1szXS5jb21taXRTZXQo
KSkpOworCisgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAg
ICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOworICAgICAgICBhc3Nl
cnQuZGVlcFN0cmljdEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7CisgICAgfSk7CisKKyAgICBpdCgn
c2hvdWxkIHJlamVjdCB3aXRoICJJbnZhbGlkUmVwZXRpdGlvblR5cGUiIGlmIHRlc3QgbW9kZSBp
cyBub3QgImFsdGVybmF0aW5nIiBvciAic2VxdWVudGlhbCInLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAg
ICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9
PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlz
aW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtp
dC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKworICAgICAgICBhd2FpdCBhc3NlcnRU
aHJvd3MoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAn
dGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsCisgICAgICAgICAgICAgICAgcGxhdGZvcm06
IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwK
KyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6
ICdpbnZhbGlkLW1vZGUnLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pCisgICAg
ICAgIH0pOworICAgIH0pOwogfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11
cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwppbmRleCA0NTA2YzNiMjdmMDVmMjMyYWI0MGM1ZTZh
Yzc0ZTdhZDVmNDJkNTk4Li5iNmRjYWUyZjIxODY1MmZjOTI5N2RkY2E1Mzg3MjA1ZjNiYzliMzA4
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAt
dGVzdHMuanMKQEAgLTE2OCw3ICsxNjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBz
WzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91
cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgp
LCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05vdGlm
aWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25T
ZW50QXQoKSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L3VwZGF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3Vu
dCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05v
dGlmaWNhdGlvbigpLCBmYWxzZSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZpY2F0
aW9uU2VudEF0KCkpOwogCkBAIC0yNzYsNCArMjc2LDg2IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewogICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodXBkYXRlZEdyb3Vwc1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsK
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0uaXNIaWRkZW4oKSwg
dHJ1ZSk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY2FuY2VsIGFuIGFs
dGVybmF0aW5nIHRlc3QgZ3JvdXAgYW5kIGNsZWFyIHRoZSAibWF5IG5lZWQgbW9yZSByZXF1ZXN0
cyIgZmxhZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRD
cmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9y
eS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJL
aXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMn
fX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNr
TmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwK
KyAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgcmV2aXNpb25TZXRzfSk7
CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsK
KworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFz
ayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBd
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElk
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMo
KSwgZmFsc2UpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5
cGUoKSwgJ2FsdGVybmF0aW5nJyk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgbWF5
TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGxldCB1cGRhdGVkR3JvdXBzID0g
YXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZE1vcmVSZXF1ZXN0
cygpLCB0cnVlKTsKKyAgICAgICAgbGV0IHRlc3RHcm91cCA9IHVwZGF0ZWRHcm91cHNbMF07Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygp
LCB0cnVlKTsKKyAgICAgICAgbGV0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuX29yZGVyZWRC
dWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Rz
Lmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzBdLmlzUGVuZGluZygp
KTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMV0uaXNQZW5kaW5nKCkpOworCisgICAg
ICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywg
e2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGNhbmNlbDogdHJ1ZX0pOworCisgICAgICAgIHVwZGF0
ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10s
IHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgs
IDEpOworICAgICAgICB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOwor
ICAgICAgICBhc3NlcnQodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICBidWlsZFJl
cXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXMoKSwgJ2NhbmNlbGVkJyk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLnN0YXR1cygpLCAnY2FuY2Vs
ZWQnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjYW5jZWwgYSBzZXF1
ZW50aWFsIHRlc3QgZ3JvdXAgYW5kIGNsZWFyIHRoZSAibWF5IG5lZWQgbW9yZSByZXF1ZXN0cyIg
ZmxhZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVh
dGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5h
bGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQn
KVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2
aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1d
OworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFt
ZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwKKyAg
ICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246
IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAg
ICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdy
b3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCBm
YWxzZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgp
LCAnc2VxdWVudGlhbCcpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0
IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwg
dHJ1ZSk7CisgICAgICAgIGxldCB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1
ZSk7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVpbGRS
ZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5n
dGgsIDIpOworICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7Cisg
ICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzFdLmlzUGVuZGluZygpKTsKKworICAgICAgICBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91
cDogaW5zZXJ0ZWRHcm91cElkLCBjYW5jZWw6IHRydWV9KTsKKworICAgICAgICB1cGRhdGVkR3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVl
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgdGVzdEdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAg
ICAgYXNzZXJ0KHRlc3RHcm91cC5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5zdGF0dXMoKSwgJ2NhbmNlbGVkJyk7
CisgICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3Bl
cmF0aW9ucy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3Vy
Y2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCmluZGV4IGVjZmVjOGQxNmU5MzRkNTdkMzI3MTg4OGVj
NTYzYjM0NDZlYWI0YmEuLmYyNGY0MzMxYTBiNDEwYzcwYmNkYjg5YjAwOGRjOTY1ZDE5YjQwYTMg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3Vy
Y2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCkBAIC01Myw3ICs1Myw3
IEBAIGFzeW5jIGZ1bmN0aW9uIGFzc2VydFRocm93cyhleHBlY3RlZEVycm9yLCB0ZXN0RnVuY3Rp
b24pCiB7CiAgICAgbGV0IHRocm93bkV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIHRyeSB7Ci0gICAg
ICAgICAgICBhd2FpdCB0ZXN0RnVuY3Rpb24oKQorICAgICAgICBhd2FpdCB0ZXN0RnVuY3Rpb24o
KTsKICAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAgICAgIHRocm93bkV4Y2VwdGlvbiA9IHRydWU7
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlcnJvciwgZXhwZWN0ZWRFcnJvcik7CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9t
b2NrLWRhdGEuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291
cmNlcy9tb2NrLWRhdGEuanMKaW5kZXggNjgxYWZjYzRjZjZhZDBlNTkyZWNiNjAxMWE2MWNiMWNm
OTRjZWQxYi4uZWFlZTgxYTM0MGIxODYyYjFmYTEyYjM2NzI2N2RjYTg1M2MxYzM2NCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9j
ay1kYXRhLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVz
b3VyY2VzL21vY2stZGF0YS5qcwpAQCAtNjQsMTIgKzY0LDE0IEBAIE1vY2tEYXRhID0gewogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X3J1bnMnLCB7aWQ6IDgwMSwgY29uZmlnOiAzMDEsIGJ1
aWxkOiA5MDEsIG1lYW5fY2FjaGU6IDEwMH0pLAogICAgICAgICBdKTsKICAgICB9LAotICAgIGFk
ZE1vY2tEYXRhOiBmdW5jdGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uPXRy
dWUsIHVybExpc3Q9W10pCisgICAgYWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVzTGlz
dCwgbmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCB1cmxMaXN0ID0gbnVsbCwgY29tbWl0U2V0TGlz
dCA9IG51bGwsIHJlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJywgbWF5TmVlZE1vcmVSZXF1
ZXN0cyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgaWYgKCFzdGF0dXNMaXN0KQogICAgICAgICAg
ICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGlu
ZyddOwogICAgICAgICBpZiAoIXVybExpc3QpCiAgICAgICAgICAgICB1cmxMaXN0ID0gW251bGws
IG51bGwsIG51bGwsIG51bGxdOworICAgICAgICBpZiAoIWNvbW1pdFNldExpc3QpCisgICAgICAg
ICAgICBjb21taXRTZXRMaXN0ID0gWzQwMSwgNDAyLCA0MDEsIDQwMl07CiAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICB0aGlzLmFkZE1vY2tDb25maWd1cmF0aW9uKGRi
KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwMX0pLApAQCAt
ODEsMTQgKzgzLDE1IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFs
eXNpc190YXNrcycsIHtpZDogNTAwLCBwbGF0Zm9ybTogNjUsIG1ldHJpYzogMzAwLCBuYW1lOiAn
c29tZSB0YXNrJywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgwMSwgc3RhcnRfcnVuX3Rp
bWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAgICAgICAgICBlbmRfcnVuOiA4
MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCi0gICAgICAgICAg
ICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRhc2s6IDUwMCwg
bmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3VudDogNCwgbmVl
ZHNfbm90aWZpY2F0aW9uOiBuZWVkc05vdGlmaWNhdGlvbn0pLAotICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHVy
bDogdXJsTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEs
IHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMCwgY29tbWl0X3Nl
dDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3
MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFdLCB0cmlnZ2VyYWJsZTog
MTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdy
b3VwOiA2MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKLSAgICAgICAgICAgIGRiLmlu
c2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB1
cmw6IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAx
LCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDIsIGNvbW1pdF9z
ZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDog
NzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHVybDogdXJsTGlzdFszXSwgdHJpZ2dlcmFibGU6
IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBn
cm91cDogNjAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCisgICAgICAgICAgICBkYi5p
bnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRhc2s6IDUwMCwgbmFtZTog
J3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3VudDogMiwKKyAgICAgICAg
ICAgICAgICBuZWVkc19ub3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0aW9uLCByZXBldGl0aW9u
X3R5cGU6IHJlcGV0aXRpb25UeXBlLCBtYXlfbmVlZF9tb3JlX3JlcXVlc3RzOiBtYXlOZWVkTW9y
ZVJlcXVlc3RzfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lk
OiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdXJsOiB1cmxMaXN0WzBdLCB0cmlnZ2VyYWJs
ZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAs
IGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzBdfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDEsIHN0YXR1czog
c3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3Np
dG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9y
ZGVyOiAxLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzFdfSksCisgICAgICAgICAgICBkYi5p
bnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwg
dXJsOiB1cmxMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAw
MSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAyLCBjb21taXRf
c2V0OiBjb21taXRTZXRMaXN0WzJdfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3Jl
cXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdXJsOiB1cmxMaXN0WzNd
LCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1
LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRfc2V0OiBjb21taXRTZXRM
aXN0WzNdfSksCiAgICAgICAgIF0pOwogICAgIH0sCi0gICAgYWRkTW9ja0J1aWxkUmVxdWVzdHNX
aXRoUm9vdHMoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uPXRydWUsIGFkZE1vY2tD
b25maWd1cmF0aW9uPXRydWUpCisgICAgYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoZGIs
IHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwgYWRkTW9ja0NvbmZpZ3VyYXRp
b24gPSB0cnVlKQogICAgIHsKICAgICAgICAgY29uc3Qgc2V0dXBTdGVwcyA9IGFkZE1vY2tDb25m
aWd1cmF0aW9uID8gW3RoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIpXSA6IFtdOwogICAgICAg
ICBpZiAoIXN0YXR1c0xpc3QpCkBAIC0yMDEsMTAgKzIwNCwxMCBAQCBNb2NrRGF0YSA9IHsKICAg
ICAgICAgY29uc3QgcmVwb3NpdG9yeV9ncm91cCA9IDIwMDE7CiAgICAgICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywg
e2lkOiA2MDEsIHRhc2s6IDUwMCwgbmFtZTogJ2Fub3RoZXIgdGVzdCBncm91cCcsIGF1dGhvciwg
aW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1
aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFi
bGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjog
MywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVl
c3RzJywge2lkOiA3MTAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJpZ2dlcmFibGUsIHJlcG9z
aXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMCwgY29tbWl0
X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lk
OiA3MTIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3Jv
dXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAx
fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTEsIHN0
YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRm
b3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMSwgY29tbWl0X3NldDogNDAyfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTIsIHN0YXR1czogc3Rh
dHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0
LCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAxfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlzdFsz
XSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDog
NjAxLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgIF0pOwogICAgIH0sCiAg
ICAgYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyhkYiwgc3RhdHVzTGlzdCkKQEAgLTQ4NCw3
ICs0ODcsNiBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAic2NoZWR1bGVyIjogWyJB
QlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVsZXIiLCAiU2NoZWR1bGVy
Il0sCiAgICAgICAgICAgICAgICAgIndrIjogW29wdGlvbnMud2Via2l0UmV2aXNpb24gfHwgJzE5
MTYyMicsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgIm9zIjogW29wdGlvbnMub3N4UmV2
aXNpb24gfHwgJzEwLjExIDE1QTI4NCcsICJVbmtub3duIl0sCi0gICAgICAgICAgICAgICAgIndv
cmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIiLCAiV29ya2VyIChkZXBy
ZWNhdGVkKSJdLAogICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29ya2Vy
TmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciJdCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CkBA
IC01MTksNyArNTIxLDYgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICAgICAgInByb2plY3Qi
OiBbJycsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiBbJycsICJV
bmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogWycnLCAiVW5rbm93biJdLAot
ICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29ya2VyTmFtZSB8fCAiYm90
MjAyIiwgIldvcmtlciAoZGVwcmVjYXRlZCkiXSwKICAgICAgICAgICAgICAgICAid29ya2VybmFt
ZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3JrZXIiXQogICAgICAgICAg
ICAgfQogICAgICAgICB9OyAgIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFi
bGUtdGVzdHMuanMKaW5kZXggYjQ4NzBiYjJiMDg2YzQ5YjgyNzE1NDg1NmUxNWY2ZjY0ZTAwN2Qy
YS4uNmQ1NDA1MGQ2YmVhZmU1MzgwZTk3OTNjNzg1N2RkNTRjZjU5MmYxNyAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmln
Z2VyYWJsZS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCkBAIC02ODksMTIgKzY4OSwx
NSBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoTW9ja0RhdGEucnVu
bmluZ0J1aWxkKHtidWlsZGVySWQ6IE1vY2tEYXRhLmJ1aWxkZXJJREZvck5hbWUoJ3NvbWUgYnVp
bGRlciAyJyksIGJ1aWxkUmVxdWVzdElkOiA3MDB9KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRob2QsICdQT1NUJyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
NF0udXJsLCAnL2FwaS92Mi9mb3JjZXNjaGVkdWxlcnMvZm9yY2Utc29tZS1idWlsZGVyLTInKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbNF0uZGF0YSwgeydpZCc6ICc3MDEnLCAnanNvbnJwYyc6ICcyLjAnLCAnbWV0aG9kJzog
J2ZvcmNlJywgJ3BhcmFtcyc6CiAgICAgICAgICAgICAgICAgICAgIHsnd2snOiAnMTkyNzM2Jywg
J29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcwMScsICdmb3JjZXNj
aGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMid9fSk7CiAgICAgICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKCdPSycpOworICAgICAgICAgICAgICAgIHJl
dHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDYpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ1BPU1QnKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS51cmwsICcv
YXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXItMScpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5k
YXRhLCB7J2lkJzogJzcxMScsICdqc29ucnBjJzogJzIuMCcsICdtZXRob2QnOiAnZm9yY2UnLCAn
cGFyYW1zJzoKQEAgLTgzMyw3ICs4MzYsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJs
ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAg
ICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdyb3VwcyBydW5uaW5nIHNp
bXVsdGVub3VzbHknLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11
bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHknLCAoKSA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIGNv
bnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKIApAQCAtMTA2NCw2ICsxMDY3
LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLmRhdGEsIHsnaWQnOiAnNzEwJywgJ2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3Jj
ZScsICdwYXJhbXMnOgogICAgICAgICAgICAgICAgICAgICB7J3drJzogJzE5MTYyMicsICdvcyc6
ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MTAnLCAnZm9yY2VzY2hlZHVs
ZXInOiAnZm9yY2Utc29tZS1idWlsZGVyLTEnfX0pOwogICAgICAgICAgICAgICAgIE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogCkBAIC0xMzU2LDcgKzEzNjAsMzA5IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJh
YmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICdidWlsZC1yZXF1ZXN0LWlkJzog
JzkwMCcsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMid9fSk7CiAgICAg
ICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgbm90IHJldXNlIHRoZSByb290IHdoZW4gYSBi
dWlsZCByZXF1ZXN0IHdpdGggc2FtZSBjb21taXQgc2V0IGlzIGF2YWlhbGJsZSBidXQgdGhlIGJ1
aWxkIHJlcXVlc3QgaGFzIGJlZW4gc2NoZWR1bGVkJywgYXN5bmMgKCkgPT4geworICAgICAgICBp
dCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgcmVxdWVzdCBvbiBhIGJ1aWxkZXIgdGhlIGxhc3Qg
YnVpbGQgcmVxdWVzdCBvZiB3aGljaCBpcyBub3QgZmV0Y2hlZCB5ZXQnLCBhc3luYyAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3BlbmRpbmcnLCAncGVuZGluZycs
ICdwZW5kaW5nJywgJ3BlbmRpbmcnXSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRj
aCgpOworCisgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3
IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5j
LXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdn
ZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAg
dHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNl
KCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0Rh
dGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
c2V0KCk7CisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxk
c1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdLnJlc29sdmUoe30pOworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRh
LnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAg
ICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJ
ZDogNjk4LCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNo
ZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA2OTksIGJ1aWxkVGFnOiAx
MjR9KV19KTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ1BPU1QnKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgJy9hcGkvdjIvZm9yY2VzY2hl
ZHVsZXJzL2ZvcmNlLXNvbWUtYnVpbGRlci0xJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5kYXRhLCB7J2lkJzogJzcwMCcs
ICdqc29ucnBjJzogJzIuMCcsICdtZXRob2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKKyAgICAgICAg
ICAgICAgICAgICAgeyd3ayc6ICcxOTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxk
LXJlcXVlc3QtaWQnOiAnNzAwJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRl
ci0xJ319KTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgn
T0snKTsKKyAgICAgICAgICAgIGFzc2VydCghQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDY5OSkpOwor
ICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGRlZmVyIHNjaGVkdWxpbmcgcmVxdWVzdHMgZnJv
bSBuZXh0IGNvbmZpZ3VyYXRpb24gaW4gc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHVudGlsIHRoZSBj
dXJyZW50IGNvbmZpZ3VyYXRpb24gbWVldHMgdGhlIGluaXRpYWwgcmVxdWVzdGVkIGl0ZXJhdGlv
biBjb3VudCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIs
IFsnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSwgdHJ1ZSwKKyAg
ICAgICAgICAgICAgICBbJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTIzJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0
JywgbnVsbCwgbnVsbF0sCisgICAgICAgICAgICAgICAgWzQwMSwgNDAxLCA0MDIsIDQwMl0sICdz
ZXF1ZW50aWFsJywgdHJ1ZSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOwor
CisgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdX
aXRoVHdvQnVpbGRlcnMoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9n
Z2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXIn
LCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9
IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwg
TW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5
bmNPbmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxl
LnN5bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwo
KSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdz
b21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0u
cmVzb2x2ZSh7fSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZSBi
dWlsZGVyIDInKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29s
dmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxl
bmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1syXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxk
ZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2
ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERh
dGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAg
ICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVp
bGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRh
LnJlY2VudEJ1aWxkc1VybCgnc29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsIE1vY2tEYXRhLnBl
bmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCBNb2NrRGF0YS5wZW5kaW5n
QnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbNV0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzZdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWls
ZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s2XS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVp
bGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRh
KHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAxLCBidWlsZFRhZzogMTI0fSldfSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5tZXRob2Qs
ICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzddLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicsIDIpKTsK
KyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10ucmVzb2x2ZSh7fSk7CisKKyAg
ICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCks
ICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAxKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
Mi9idWlsZHMvMTI0Jyk7CisKKyAgICAgICAgICAgIGF3YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZv
clRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygp
LnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDov
L2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2ZhaWxl
ZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEp
LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjQnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGlu
ZyBvdGhlciBidWlsZCByZXF1ZXN0IG9uIGEgYnVpbGRlciBpZiBhIHNlcXVlbnRpYWwgdGVzdCBn
cm91cCBpcyBzY2hlZHVsZWQgb24gaXQgYW5kIHdhaXRpbmcgZm9yIHJldHJ5JywgYXN5bmMgKCkg
PT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAg
ICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnZmFp
bGVkJywgJ2NvbXBsZXRlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSwgdHJ1ZSwKKyAgICAgICAg
ICAgICAgICBbJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIz
JywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0JywgbnVs
bCwgbnVsbF0sCisgICAgICAgICAgICAgICAgWzQwMSwgNDAxLCA0MDIsIDQwMl0sICdzZXF1ZW50
aWFsJywgdHJ1ZSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0
R3JvdXAoZGIpLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5m
ZXRjaCgpOworCisgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5
bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0g
bmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdz
eW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRy
aWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAg
ICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4g
dHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVz
b2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RC
dWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVp
bGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJs
KCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmlu
aXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFn
OiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVz
dWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAg
ICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VU
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51
cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1v
Y2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAg
ICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJl
cXVlc3RJZDogNzAwLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEu
ZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxk
VGFnOiAxMjR9KV19KTsKKworICAgICAgICAgICAgYXdhaXQgc3luY09uY2U7CisKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2Zh
aWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1
aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKworICAgICAgICAgICAgYXdhaXQg
QnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29u
ZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnZmFpbGVkJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3Rh
dHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEy
MycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEp
LnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIG5vdCBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3QgZnJvbSBhbm90aGVyIHRlc3QgZ3Jv
dXAgb24gYSBidWlsZGVyIGlmIGFuIGFsdGVybmF0aW5nIHRlc3QgZ3JvdXAgd2l0aCBhbGwgZXhp
c3RpbmcgYnVpbGQgcmVxdWVzdHMgZmluaXNoZWQgc3RpbGwgbmVlZHMgcmV0cnknLCBhc3luYyAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydj
b21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0ZWQnXSwgdHJ1ZSwKKyAg
ICAgICAgICAgICAgICBbJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTIxJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIy
JywKKyAgICAgICAgICAgICAgICAgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
Mi9idWlsZHMvMTIzJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTI0JyxdLAorICAgICAgICAgICAgICAgIFs0MDEsIDQwMiwgNDAxLCA0MDJdLCAnYWx0ZXJu
YXRpbmcnLCB0cnVlKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rl
c3RHcm91cChkYiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0
LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0
U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAgICBjb25zdCBsb2dnZXIg
PSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTog
J3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgY29uc3Qg
dHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAg
ICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9
PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRS
ZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJv
dEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVt
b3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdC
dWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNV
cmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5m
aW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRU
YWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHty
ZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAg
ICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJd
LnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoe30pOworCisgICAgICAg
ICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwg
TW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxk
UmVxdWVzdElkOiA3MDIsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVp
bGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDMpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAgICBhd2Fp
dCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5z
dGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
Mykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQu
b3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgbm90IHNjaGVkdWxpbmcgYnVpbGQgcmVxdWVzdCBmcm9tIGFub3RoZXIgdGVzdCBn
cm91cCBvbiBhIGJ1aWxkZXIgaWYgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgd2l0aCBhbGwgZXhp
c3RpbmcgYnVpbGQgcmVxdWVzdHMgZmluaXNoZWQgc3RpbGwgbmVlZHMgcmV0cnknLCBhc3luYyAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydj
b21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0ZWQnXSwgdHJ1ZSwKKyAg
ICAgICAgICAgICAgICBbJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTIxJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIy
JywKKyAgICAgICAgICAgICAgICAgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
Mi9idWlsZHMvMTIzJywgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTI0JyxdLAorICAgICAgICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVu
dGlhbCcsIHRydWUpLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVz
dEdyb3VwKGRiKSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3Qu
ZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RT
eW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9
IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAn
c3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0
cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAg
ICAgIGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+
IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJl
c29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90
QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1
aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzBdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1Vy
bCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZp
bmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRh
ZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jl
c3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDMsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAg
ICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dF
VCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0u
dXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCkKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCBN
b2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAg
ICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRS
ZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRh
LmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWls
ZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdm
YWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9i
dWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53
ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisKKyAgICAgICAgICAgIGF3YWl0
IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0Nv
bmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxlZCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0
YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8x
MjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAz
KS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo
J3Nob3VsZCBub3QgcmV1c2UgdGhlIHJvb3Qgd2hlbiBhIGJ1aWxkIHJlcXVlc3Qgd2l0aCBzYW1l
IGNvbW1pdCBzZXQgaXMgYXZhaWxhYmxlIGJ1dCB0aGUgYnVpbGQgcmVxdWVzdCBoYXMgYmVlbiBz
Y2hlZHVsZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRN
b2NrQnVpbGRSZXF1ZXN0c1dpdGhSb290cyhUZXN0U2VydmVyLmRhdGFiYXNlKCkpOwogICAgICAg
ICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9
IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhQYXRjaEFjY2VwdGluZ0J1aWxkZXIoKTsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMt
c3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5q
cwppbmRleCA2ZmM3YTdhYzViYzM3YTQxMDQ3MmZlODJiMmM5YjU0MTBlYThmNGQzLi42ZGFmNTM1
NGRkMmY3MjA3NDdmOTZkNTNiYzRhMzFjZTA1ZDg4MjY3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRp
b24tdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90
b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCkBAIC0xNzMsNyArMTczLDcg
QEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwKHRhc2tfbmFtZT0nY3VzdG9tIHRhc2snKSB7CiAg
ICAgc2V0MS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7CiAgICAg
Y29uc3Qgc2V0MiA9IG5ldyBDdXN0b21Db21taXRTZXQ7CiAgICAgc2V0Mi5zZXRSZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0LCAnMTkyNzM2Jyk7Ci0gICAgcmV0dXJuIFRlc3RHcm91cC5jcmVh
dGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKS50
aGVuKCh0YXNrKSA9PiB7CisgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3Vz
dG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwg
c29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJdKS50
aGVuKCh0YXNrKSA9PiB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0
YXNrLmlkKCkpWzBdOwogICAgIH0pOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBAIGFzeW5jIGZ1bmN0
aW9uIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRjaCgpCiAgICAgc2V0MS5zZXRSZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJywgdXBsb2FkZWRQYXRjaEZpbGUpOwogICAgIGNvbnN0
IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0OwogICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCwgJzE5MTYyMicpOwotICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBUZXN0R3Jv
dXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBz
ZXQyXSk7CisgICAgY29uc3QgdGFzayA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygn
Y3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJd
KTsKIAogICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBdOwog
fQpAQCAtMjA5LDcgKzIwOSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29t
bWl0KCkKICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICBzZXQyLnNl
dFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTI3MzYnKTsKICAgICBzZXQyLnNldFJl
dmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywgJ293bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5
MjczNicpOwotICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNr
JywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0
LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4geworICAgIHJl
dHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmlu
ZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcs
IDIsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4gewogICAgICAg
ICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KTsK
IH0KQEAgLTE0MDksNyArMTQwOSw3IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90JywgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOwogICAg
ICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7
Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgp
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Quc3Rh
dHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzEvYnVpbGRzLzEy
MycpOwogICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCks
IG51bGwpOwogCiAgICAgICAgICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91
cC5idWlsZFJlcXVlc3RzKClbMV07CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwppbmRleCA4ODIyYWZiOGMwZWQyMjM4MWY3NDIz
NzZhZmEzMDZkYTI5Y2M1ODIwLi5iZjAxZWZlNmQ0NWYyOTFmNTA1NmY0OGMyNmUzN2I1ZjMwNTEx
ZDRiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRi
b3Qtc3luY2VyLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWls
ZGJvdC1zeW5jZXIuanMKQEAgLTE0Myw2ICsxNDMsNyBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7
CiAKICAgICAgICAgbGV0IGhhc1BlbmRpbmdCdWlsZHNXaXRob3V0V29ya2VyTmFtZVNwZWNpZmll
ZCA9IGZhbHNlOwogICAgICAgICBsZXQgdXNlZFdvcmtlcnMgPSBuZXcgU2V0OworICAgICAgICBj
b25zdCBsYXRlc3RBY3RpdmVFbnRyeUJ5V29ya2VyTmFtZSA9IG5ldyBNYXA7CiAgICAgICAgIGZv
ciAobGV0IGVudHJ5IG9mIHRoaXMuX2VudHJ5TGlzdCkgewogICAgICAgICAgICAgbGV0IGVudHJ5
UHJldmVudHNOZXdSZXF1ZXN0ID0gZW50cnkuaXNQZW5kaW5nKCk7CiAgICAgICAgICAgICBpZiAo
ZW50cnkuaXNJblByb2dyZXNzKCkpIHsKQEAgLTE1NSw2ICsxNTYsMjYgQEAgY2xhc3MgQnVpbGRi
b3RTeW5jZXIgewogICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQnVpbGRzV2l0aG91dFdv
cmtlck5hbWVTcGVjaWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHVzZWRXb3JrZXJzLmFk
ZChlbnRyeS53b3JrZXJOYW1lKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVu
dHJ5Lmhhc0ZpbmlzaGVkKCkgfHwgZW50cnkuaXNJblByb2dyZXNzKCkpIHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChlbnRyeS53b3JrZXJOYW1lKCksICdGaW5pc2hlZCBlbnRyeSBt
dXN0IGhhdmUgYSB3b3JrZXIgbmFtZScpOworICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RGaW5p
c2hlZEVudHJ5ID0gbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtlck5hbWUuZ2V0KGVudHJ5Lndvcmtl
ck5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFsYXN0RmluaXNoZWRFbnRyeSB8fCArbGFz
dEZpbmlzaGVkRW50cnkuYnVpbGRUYWcoKSA8ICtlbnRyeS5idWlsZFRhZygpKQorICAgICAgICAg
ICAgICAgICAgICBsYXRlc3RBY3RpdmVFbnRyeUJ5V29ya2VyTmFtZS5zZXQoZW50cnkud29ya2Vy
TmFtZSgpLCBlbnRyeSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAo
bGV0IFtuYW1lLCBlbnRyeV0gb2YgbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtlck5hbWUuZW50cmll
cygpKSB7CisgICAgICAgICAgICBjb25zdCBsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QgPSBCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSk7CisgICAgICAgICAgICBp
ZiAoIWxhdGVzdEFjdGl2ZUJ1aWxkUmVxdWVzdCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QudGVzdEdyb3VwSWQoKSA9
PSBuZXdSZXF1ZXN0LnRlc3RHcm91cElkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QudGVz
dEdyb3VwKCk7CisgICAgICAgICAgICBpZiAoIXRlc3RHcm91cCkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICh0ZXN0R3JvdXAuaGFzRmluaXNoZWQoKSAmJiAhdGVz
dEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIHVzZWRXb3JrZXJzLmFkZChuYW1lKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghdGhpcy5fd29ya2VyTGlzdCB8fCBoYXNQZW5kaW5nQnVpbGRzV2l0aG91dFdvcmtlck5h
bWVTcGVjaWZpZWQpIHsKQEAgLTE5Miw3ICsyMTMsNyBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICgoIXRoaXMuX2xhc3RDb21wbGV0ZWRCdWlsZCB8fCB0
aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQuYnVpbGRUYWcoKSA8IGVudHJ5LmJ1aWxkVGFnKCkpICYm
IGVudHJ5Lmhhc0ZpbmlzaGVkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0
Q29tcGxldGVkQnVpbGQgPSBlbnRyeTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICAgICAgbGV0IGVudHJ5TGlzdCA9IFtdOwogICAgICAgICAg
ICAgICAgIGZvciAobGV0IGlkIGluIGVudHJ5QnlSZXF1ZXN0KQogICAgICAgICAgICAgICAgICAg
ICBlbnRyeUxpc3QucHVzaChlbnRyeUJ5UmVxdWVzdFtpZF0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCmlu
ZGV4IGQ2MmNkZTAyOWMxNzc5MTczYzVmMjFlZDg2YWFmMWExYzAzZGE4YTIuLjI1MjliYWUzYzQ2
YmM1ZjEzMWIzMjlkMTE4Y2Q2OGZhNzFhOTdhM2EgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKQEAgLTcs
NyArNyw3IEBAIHJlcXVpcmUoJy4vdjMtbW9kZWxzLmpzJyk7CiBsZXQgQnVpbGRib3RTeW5jZXIg
PSByZXF1aXJlKCcuL2J1aWxkYm90LXN5bmNlcicpLkJ1aWxkYm90U3luY2VyOwogCiBjbGFzcyBC
dWlsZGJvdFRyaWdnZXJhYmxlIHsKLSAgICBjb25zdHJ1Y3Rvcihjb25maWcsIHJlbW90ZSwgYnVp
bGRib3RSZW1vdGUsIHdvcmtlckluZm8sIGxvZ2dlcikKKyAgICBjb25zdHJ1Y3Rvcihjb25maWcs
IHJlbW90ZSwgYnVpbGRib3RSZW1vdGUsIHdvcmtlckluZm8sIG1heFJldHJ5RmFjdG9yLCBsb2dn
ZXIpCiAgICAgewogICAgICAgICB0aGlzLl9uYW1lID0gY29uZmlnLnRyaWdnZXJhYmxlTmFtZTsK
ICAgICAgICAgYXNzZXJ0KHR5cGVvZih0aGlzLl9uYW1lKSA9PSAnc3RyaW5nJywgJ3RyaWdnZXJh
YmxlTmFtZSBtdXN0IGJlIHNwZWNpZmllZCcpOwpAQCAtMjUsNiArMjUsNyBAQCBjbGFzcyBCdWls
ZGJvdFRyaWdnZXJhYmxlIHsKIAogICAgICAgICB0aGlzLl9zeW5jZXJzID0gbnVsbDsKICAgICAg
ICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2VyIHx8IHtsb2c6ICgpID0+IHsgfSwgZXJyb3I6ICgpID0+
IHsgfX07CisgICAgICAgIHRoaXMuX21heFJldHJ5RmFjdG9yID0gbWF4UmV0cnlGYWN0b3I7CiAg
ICAgfQogCiAgICAgZ2V0QnVpbGRlck5hbWVUb0lETWFwKCkKQEAgLTg1LDEzICs4NiwyMiBAQCBj
bGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgY29uc3QgdmFsaWRSZXF1ZXN0cyA9
IHRoaXMuX3ZhbGlkYXRlUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAgICAgICAgIGNvbnN0IGJ1
aWxkUmVxdWVzdHNCeUdyb3VwID0gQnVpbGRib3RUcmlnZ2VyYWJsZS5fdGVzdEdyb3VwTWFwRm9y
QnVpbGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKICAgICAgICAgbGV0IHVwZGF0ZXMgPSBhd2Fp
dCB0aGlzLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXF1ZXN0c0J5R3JvdXApOwot
ICAgICAgICBsZXQgcm9vdFJldXNlVXBkYXRlcyA9IHt9CisgICAgICAgIGxldCByb290UmV1c2VV
cGRhdGVzID0ge307CiAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coJ1NjaGVkdWxpbmcgYnVpbGRz
Jyk7CiAgICAgICAgIGNvbnN0IHRlc3RHcm91cExpc3QgPSBBcnJheS5mcm9tKGJ1aWxkUmVxdWVz
dHNCeUdyb3VwLnZhbHVlcygpKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmdyb3Vw
T3JkZXIgLSBiLmdyb3VwT3JkZXI7IH0pOwogCi0gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRl
c3RHcm91cExpc3QubWFwKChncm91cCkgPT4gW2dyb3VwLCB0aGlzLl9uZXh0UmVxdWVzdEluR3Jv
dXAoZ3JvdXAsIHVwZGF0ZXMpXSkKLSAgICAgICAgICAgIC5maWx0ZXIoKFtncm91cCwgcmVxdWVz
dF0pID0+IHZhbGlkUmVxdWVzdHMuaGFzKHJlcXVlc3QpKQotICAgICAgICAgICAgLm1hcCgoW2dy
b3VwLCByZXF1ZXN0XSkgPT4gdGhpcy5fc2NoZWR1bGVSZXF1ZXN0KGdyb3VwLCByZXF1ZXN0LCBy
b290UmV1c2VVcGRhdGVzKSkpOworICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbLi4uYnVpbGRS
ZXF1ZXN0c0J5R3JvdXAua2V5cygpXS5tYXAodGVzdEdyb3VwSWQgPT4gVGVzdEdyb3VwLmZldGNo
QnlJZCh0ZXN0R3JvdXBJZCwgdHJ1ZSkpKTsKKyAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0
ZXN0R3JvdXBMaXN0KSB7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5fbmV4dFJl
cXVlc3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKTsKKyAgICAgICAgICAgIGlmICghdmFsaWRSZXF1
ZXN0cy5oYXMocmVxdWVzdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIGNvbnN0IHNob3VsZERlZmVyID0gdGhpcy5fc2hvdWxkRGVmZXJTZXF1ZW50aWFsVGVzdGlu
Z1JlcXVlc3RXaXRoTmV3Q29tbWl0U2V0KHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKHNob3Vs
ZERlZmVyKQorICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coYERlZmVyIHNjaGVkdWxp
bmcgYnVpbGQgcmVxdWVzdCAiJHtyZXF1ZXN0LmlkKCl9IiB1bnRpbCBjb21wbGV0ZWQgYnVpbGQg
cmVxdWVzdHMgZm9yIHByZXZpb3VzIGNvbmZpZ3VyYXRpb24gbWVldCB0aGUgZXhwZWN0YXRpb24g
b3IgZXhoYXVzdCByZXRyeS5gKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBh
d2FpdCB0aGlzLl9zY2hlZHVsZVJlcXVlc3QoZ3JvdXAsIHJlcXVlc3QsIHJvb3RSZXVzZVVwZGF0
ZXMpOworICAgICAgICB9CiAKICAgICAgICAgLy8gUHVsbCBhbGwgYnVpbGRib3RzIGZvciB0aGUg
c2Vjb25kIHRpbWUgc2luY2UgdGhlIHByZXZpb3VzIHN0ZXAgbWF5IGhhdmUgc2NoZWR1bGVkIG1v
cmUgYnVpbGRzCiAgICAgICAgIHVwZGF0ZXMgPSBhd2FpdCB0aGlzLl9wdWxsQnVpbGRib3RPbkFs
bFN5bmNlcnMoYnVpbGRSZXF1ZXN0c0J5R3JvdXApOwpAQCAtMTIzLDExICsxMzMsMzcgQEAgY2xh
c3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fc2NoZWR1bGVSZXF1ZXN0SWZXb3JrZXJJc0F2
YWlsYWJsZShidWlsZFJlcXVlc3QsIHRlc3RHcm91cC5yZXF1ZXN0cywKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUoYnVpbGRSZXF1ZXN0LCB0
ZXN0R3JvdXAucmVxdWVzdHMsCiAgICAgICAgICAgICBidWlsZFJlcXVlc3QuaXNCdWlsZCgpID8g
dGVzdEdyb3VwLmJ1aWxkU3luY2VyIDogdGVzdEdyb3VwLnRlc3RTeW5jZXIsCiAgICAgICAgICAg
ICBidWlsZFJlcXVlc3QuaXNCdWlsZCgpID8gdGVzdEdyb3VwLmJ1aWxkV29ya2VyTmFtZSA6IHRl
c3RHcm91cC50ZXN0V29ya2VyTmFtZSk7CiAgICAgfQogCisgICAgX3Nob3VsZERlZmVyU2VxdWVu
dGlhbFRlc3RpbmdSZXF1ZXN0V2l0aE5ld0NvbW1pdFNldChidWlsZFJlcXVlc3QpCisgICAgewor
ICAgICAgICBpZiAoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBidWlsZFJlcXVlc3QudGVzdEdyb3Vw
KCk7CisgICAgICAgIGlmICh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSAhPSAnc2VxdWVudGlh
bCcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRlc3RHcm91cC5p
c0ZpcnN0VGVzdFJlcXVlc3QoYnVpbGRSZXF1ZXN0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBjb25zdCBwcmVjZWRpbmdCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAucHJl
Y2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxkUmVxdWVzdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFwcmVjZWRpbmdCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKworICAgICAgICBjb25zdCBwcmV2
aW91c0NvbW1pdFNldCA9IHByZWNlZGluZ0J1aWxkUmVxdWVzdC5jb21taXRTZXQoKQorICAgICAg
ICBpZiAocHJldmlvdXNDb21taXRTZXQgPT09IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCByZXRyeUxpbWl0ID0gdGVz
dEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSAqIHRoaXMuX21heFJldHJ5RmFjdG9yOwor
ICAgICAgICBpZiAodGVzdEdyb3VwLndpbGxFeGNlZWRSZXRyeUxpbWl0V2l0aFJldHJ5Q291bnQo
cHJldmlvdXNDb21taXRTZXQsIDAsIHJldHJ5TGltaXQpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIHJldHVybiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
ID4gdGVzdEdyb3VwLnN1Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50KHByZXZpb3VzQ29tbWl0U2V0
KTsKKyAgICB9CisKICAgICBfdmFsaWRhdGVSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKQogICAgIHsK
ICAgICAgICAgY29uc3QgdGVzdFBsYXRmb3JtUGFpcnMgPSB7fTsKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5
emVyLmpzCmluZGV4IGFiODZhMWQ0ZTMzNzk0YmU3OGNmYmJlMGY3NjU5OWVhODU3YmViYWYuLmNj
NjUwY2E5NDVkYmFlZGY5Yjk1ZDRmZTBkOWNhMTU4NzkyODJhZTIgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL21lYXN1cmVtZW50LXNldC1h
bmFseXplci5qcwpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIE1lYXN1cmVtZW50U2V0QW5hbHl6
ZXIgewogICAgICAgICBjb25zdCBzdGFydENvbW1pdFNldCA9IHJhbmdlV2l0aE1vc3RTaWduaWZp
Y2FudENoYW5nZS5zdGFydFBvaW50LmNvbW1pdFNldCgpOwogICAgICAgICBjb25zdCBlbmRDb21t
aXRTZXQgPSByYW5nZVdpdGhNb3N0U2lnbmlmaWNhbnRDaGFuZ2UuZW5kUG9pbnQuY29tbWl0U2V0
KCk7CiAgICAgICAgIGNvbnN0IHN1bW1hcnkgPSBgUG90ZW50aWFsICR7cmFuZ2VXaXRoTW9zdFNp
Z25pZmljYW50Q2hhbmdlLnZhbHVlQ2hhbmdlU3VtbWFyeS5jaGFuZ2VMYWJlbH0gb24gJHtwbGF0
Zm9ybS5uYW1lKCl9IGJldHdlZW4gJHtDb21taXRTZXQuZGlmZihzdGFydENvbW1pdFNldCwgZW5k
Q29tbWl0U2V0KX1gOwotICAgICAgICBjb25zdCBjb25maXJtaW5nVGFza0FyZ3VtZW50cyA9IFRy
aWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKG1ldHJpYy50ZXN0KCksIHBsYXRmb3Jt
KSA/IFsnQ29uZmlybScsIDQsIHRydWVdIDogW107CisgICAgICAgIGNvbnN0IGNvbmZpcm1pbmdU
YXNrQXJndW1lbnRzID0gVHJpZ2dlcmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24obWV0cmlj
LnRlc3QoKSwgcGxhdGZvcm0pID8gWydDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0g
OiBbXTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIGl0ZXJhdGlvbiBjb3VudCBzaG91bGQgYmUg
c21hcnRlciB0aGFuIGhhcmQtY29kaW5nLgogICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sgPSBh
d2FpdCBBbmFseXNpc1Rhc2suY3JlYXRlKHN1bW1hcnksIHJhbmdlV2l0aE1vc3RTaWduaWZpY2Fu
dENoYW5nZS5zdGFydFBvaW50LApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNWJhMjI0NWNiMDJhZTRlOTMzMTI2Yjc4OTZhNmIy
OGEzMjFlNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1
ZXN0cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWFzeW5jIGZ1bmN0aW9uIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyh0ZXN0R3JvdXBzLCBtYXhpbXVtUmV0cnlGYWN0b3IpCi17Ci0gICAgZm9yIChjb25zdCB0ZXN0
R3JvdXAgb2YgdGVzdEdyb3VwcykgewotICAgICAgICBpZiAoIXRlc3RHcm91cC5tYXlOZWVkTW9y
ZVJlcXVlc3RzKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAodGVzdEdy
b3VwLmlzSGlkZGVuKCkpIHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5l
ZWRNb3JlQnVpbGRSZXF1ZXN0cygpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0gMDsKLSAgICAgICAg
bGV0IGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSB0cnVlOwotICAg
ICAgICBsZXQgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7Ci0g
ICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5p
c1Rlc3QoKSk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50
ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhh
c0NvbXBsZXRlZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAoIWNvbXBsZXRlZEJ1aWxkUmVx
dWVzdENvdW50KQotICAgICAgICAgICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVh
Y2hDb21taXRTZXQgPSBmYWxzZTsKLQotICAgICAgICAgICAgaGFzQ29tcGxldGVkQnVpbGRSZXF1
ZXN0Rm9yRWFjaENvbW1pdFNldCAmPSAoY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPiAwKTsK
LSAgICAgICAgICAgIGNvbnN0IHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVx
dWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+ICFidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQo
KSkubGVuZ3RoOwotICAgICAgICAgICAgLy8gInBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50IiBt
aWdodCBiZSBsYXJnZXIgdGhhbiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIGFz
IHVzZXIgbWF5IGFkZCBidWlsZCByZXF1ZXN0cyBtYW51YWxseS4KLSAgICAgICAgICAgIGNvbnN0
IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQg
KyB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7Ci0gICAgICAgICAgICBtYXhNaXNzaW5nQnVp
bGRSZXF1ZXN0Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQsIHRl
c3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxD
b3VudCk7Ci0KLSAgICAgICAgICAgIGlmICh1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQpCi0g
ICAgICAgICAgICAgICAgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRydWU7Ci0gICAgICAg
IH0KLSAgICAgICAgY29uc3Qgd2lsbEV4Y2VlZE1heGltdW1SZXRyeSA9IHRlc3RHcm91cC5yZXBl
dGl0aW9uQ291bnQoKSArIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA+IG1heGltdW1SZXRy
eUZhY3RvciAqIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCk7Ci0KLSAgICAgICAg
Y29uc29sZS5hc3NlcnQobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50IDw9IHRlc3RHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVx
dWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc1VuZmluaXNoZWRCdWls
ZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVz
dENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVx
dWVzdEZvckVhY2hDb21taXRTZXQpIHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRN
b3JlQnVpbGRSZXF1ZXN0cyhtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOwotICAgICAgICAg
ICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOwotICAg
ICAgICAgICAgY29uc29sZS5sb2coYEFkZGVkICR7bWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0
YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOwot
ICAgICAgICB9Ci0gICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRS
ZXF1ZXN0cygpOwotICAgIH0KLX0KLQotaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQn
KQotICAgIG1vZHVsZS5leHBvcnRzLmNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVz
dEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3Rz
Rm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5
c2lzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcwpp
bmRleCBkNjBmODFlMTJiZDg3N2I3ZTUwNmMwZWQwMzY1YmRjZjcwNTU4ODhmLi4zNjJlYWU1M2M2
YTgwOGQyYzk0ODBmOTJlZTlmNjk1NmZiZWI0NzQwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMuanMKQEAgLTYsNyArNiw2IEBAIGNvbnN0IFJlbW90
ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3RlLmpzJykuUmVtb3RlQVBJOwogY29uc3QgTWVhc3Vy
ZW1lbnRTZXRBbmFseXplciA9IHJlcXVpcmUoJy4vanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVy
LmpzJykuTWVhc3VyZW1lbnRTZXRBbmFseXplcjsKIGNvbnN0IEFuYWx5c2lzUmVzdWx0c05vdGlm
aWVyID0gcmVxdWlyZSgnLi9qcy9hbmFseXNpcy1yZXN1bHRzLW5vdGlmaWVyLmpzJykuQW5hbHlz
aXNSZXN1bHRzTm90aWZpZXI7CiBjb25zdCBTdWJwcm9jZXNzID0gcmVxdWlyZSgnLi9qcy9zdWJw
cm9jZXNzLmpzJykuU3VicHJvY2VzczsKLWNvbnN0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9IHJlcXVpcmUoJy4vanMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJykuY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JU
ZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzOwogcmVxdWlyZSgnLi9qcy92My1tb2RlbHMuanMn
KTsKIGdsb2JhbC5Qcml2aWxlZ2VkQVBJID0gcmVxdWlyZSgnLi9qcy9wcml2aWxlZ2VkLWFwaS5q
cycpLlByaXZpbGVnZWRBUEk7CiAKQEAgLTQ5LDEyICs0OCwxMSBAQCBhc3luYyBmdW5jdGlvbiBh
bmFseXNpc0xvb3Aob3B0aW9ucykKICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGFu
YWx5emUgbWVhc3VyZW1lbnQgc2V0cyBkdWUgdG8gJHtlcnJvcn1gKTsKICAgICB9CiAKKyAgICBj
b25zdCBtYXhpbXVtUmV0cnlGYWN0b3IgPSBvcHRpb25zWyctLW1heC1yZXRyeS1mYWN0b3InXTsK
KyAgICBhd2FpdCBwcm9jZXNzVGVzdEdyb3VwTWF5TmVlZE1vcmVSZXF1ZXN0cyhtYXhpbXVtUmV0
cnlGYWN0b3IpOworCiAgICAgdHJ5IHsKICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uQ29uZmln
ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9uc1snLS1ub3RpZmljYXRpb24tY29u
ZmlnLWpzb24nXSwgJ3V0Zi04JykpOwotICAgICAgICBjb25zdCBtYXhpbXVtUmV0cnlGYWN0b3Ig
PSBvcHRpb25zWyctLW1heC1yZXRyeS1mYWN0b3InXTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3Vw
c01heU5lZWRNb3JlUmVxdWVzdHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hBbGxUaGF0TWF5TmVl
ZE1vcmVSZXF1ZXN0cygpOwotICAgICAgICBhd2FpdCBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1
ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3Vwc01heU5lZWRNb3Jl
UmVxdWVzdHMsIG1heGltdW1SZXRyeUZhY3Rvcik7Ci0KICAgICAgICAgY29uc3QgdGVzdEdyb3Vw
c05lZWROb3RpZmljYXRpb24gPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hBbGxXaXRoTm90aWZpY2F0
aW9uUmVhZHkoKTsKICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUmVtb3RlQVBJID0gbmV3IFJl
bW90ZUFQSShub3RpZmljYXRpb25Db25maWcubm90aWZpY2F0aW9uU2VydmVyQ29uZmlnKTsKICAg
ICAgICAgY29uc3Qgbm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZyA9IG5vdGlmaWNhdGlvbkNvbmZp
Zy5ub3RpZmljYXRpb25NZXNzYWdlQ29uZmlnOwpAQCAtNjMsMTIgKzYxLDI3IEBAIGFzeW5jIGZ1
bmN0aW9uIGFuYWx5c2lzTG9vcChvcHRpb25zKQogCiAgICAgICAgIGF3YWl0IG5vdGlmaWVyLnNl
bmROb3RpZmljYXRpb25zRm9yVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzTmVlZE5vdGlmaWNhdGlvbik7
CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRv
IHJldHJ5IHRlc3QgZ3JvdXBzIGR1ZSB0byAke2Vycm9yfWApOworICAgICAgICBjb25zb2xlLmVy
cm9yKGBGYWlsZWQgdG8gc2VuZCBub3RpZmljYXRpb24gZm9yIHRlc3QgZ3JvdXBzIGR1ZSB0byAk
e2Vycm9yfWApOwogICAgIH0KIAogICAgIGNvbnNvbGUubG9nKGBTbGVlcGluZyBmb3IgJHtzZWNv
bmRzVG9TbGVlcH0gc2Vjb25kcy5gKTsKICAgICBzZXRUaW1lb3V0KCgpID0+IGFuYWx5c2lzTG9v
cChvcHRpb25zKSwgc2Vjb25kc1RvU2xlZXAgKiAxMDAwKTsKIH0KIAorYXN5bmMgZnVuY3Rpb24g
cHJvY2Vzc1Rlc3RHcm91cE1heU5lZWRNb3JlUmVxdWVzdHMobWF4UmV0cnlGYWN0b3IpCit7Cisg
ICAgY29uc3QgdGVzdEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMgPSBhd2FpdCBUZXN0R3JvdXAu
ZmV0Y2hBbGxUaGF0TWF5TmVlZE1vcmVSZXF1ZXN0cygpOworICAgIHRyeSB7CisgICAgICAgIGZv
ciAoY29uc3QgdGVzdEdyb3VwIG9mIHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3RzKQorICAg
ICAgICAgICAgYXdhaXQgdGVzdEdyb3VwLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZyht
YXhSZXRyeUZhY3Rvcik7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgY29uc29sZS5l
cnJvcihlcnJvcik7CisgICAgICAgIGlmICh0eXBlb2YoZXJyb3Iuc3RhY2spID09ICdzdHJpbmcn
KSB7CisgICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KCdcbicp
KQorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGluZSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKIAogbWFpbihwcm9jZXNzLmFyZ3YpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdG9vbHMvc3luYy1idWlsZGJvdC5qcwppbmRleCA2ZjM1MGViMjQ4MmNmNmQxNDhjYTg0MTQw
YTJjZDA0ZDhlMzA2ZTQyLi43MGEyYTRlM2Q0MjM1MGJkMmZhMWIzNDMyODc0ZGY2ODU1ZWM1M2Q2
IDEwMDc1NQotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWlsZGJv
dC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWlsZGJvdC5q
cwpAQCAtMTIsNiArMTIsNyBAQCBmdW5jdGlvbiBtYWluKGFyZ3YpCiAgICAgICAgIHtuYW1lOiAn
LS1zZXJ2ZXItY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0sCiAgICAgICAgIHtuYW1lOiAn
LS1idWlsZGJvdC1jb25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKICAgICAgICAge25hbWU6
ICctLXNlY29uZHMtdG8tc2xlZXAnLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiAxMjB9LAor
ICAgICAgICB7bmFtZTogJy0tbWF4LXJldHJ5LWZhY3RvcicsIHR5cGU6IHBhcnNlRmxvYXQsIGRl
ZmF1bHQ6IDN9LAogICAgIF0pOwogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuOwpA
QCAtMjQsNiArMjUsNyBAQCBmdW5jdGlvbiBzeW5jTG9vcChvcHRpb25zKQogICAgIGxldCBzZXJ2
ZXJDb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyctLXNlcnZlci1j
b25maWctanNvbiddLCAndXRmOCcpKTsKICAgICBsZXQgYnVpbGRib3RDb25maWcgPSBKU09OLnBh
cnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyctLWJ1aWxkYm90LWNvbmZpZy1qc29uJ10sICd1
dGY4JykpOwogICAgIGxldCBidWlsZGJvdFJlbW90ZSA9IG5ldyBSZW1vdGVBUEkoYnVpbGRib3RD
b25maWcuc2VydmVyKTsKKyAgICBjb25zdCBtYXhSZXRyeUZhY3RvciA9IG9wdGlvbnNbJy0tbWF4
LXJldHJ5LWZhY3RvciddOwogCiAgICAgLy8gdjMgbW9kZWxzIHVzZSB0aGUgZ2xvYmFsIFJlbW90
ZUFQSSB0byBhY2Nlc3MgdGhlIHBlcmYgZGFzaGJvYXJkLgogICAgIGdsb2JhbC5SZW1vdGVBUEkg
PSBuZXcgUmVtb3RlQVBJKHNlcnZlckNvbmZpZy5zZXJ2ZXIpOwpAQCAtMzEsNyArMzMsNyBAQCBm
dW5jdGlvbiBzeW5jTG9vcChvcHRpb25zKQogICAgIGNvbnNvbGUubG9nKGBGZXRjaGluZyB0aGUg
bWFuaWZlc3QuLi5gKTsKIAogICAgIGNvbnN0IG1ha2VUcmlnZ2VyYWJsZSA9IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGJ1aWxkYm90Q29uZmln
LCBnbG9iYWwuUmVtb3RlQVBJLCBidWlsZGJvdFJlbW90ZSwgc2VydmVyQ29uZmlnLndvcmtlciwg
Y29uc29sZSkKKyAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGJ1aWxkYm90
Q29uZmlnLCBnbG9iYWwuUmVtb3RlQVBJLCBidWlsZGJvdFJlbW90ZSwgc2VydmVyQ29uZmlnLndv
cmtlciwgbWF4UmV0cnlGYWN0b3IsIGNvbnNvbGUpCiAgICAgfTsKIAogICAgIE1hbmlmZXN0LmZl
dGNoKCkudGhlbigoKSA9PiB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwppbmRleCA4ZDI4YWM0ZmFmYzQ4
ZWFhMTc4MmM1ZGYxZWFiNzc3MDkyZDg3ZjE0Li4yZTY3MGIwNzk1MTE0ZWI2NzU1MjVjMmRmN2Jl
YTEzOGQzMzhlN2MwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMKQEAgLTMwNyw3ICszMDcsNyBAQCBk
ZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91bGQgY3Jl
YXRlIGFuYWx5c2lzIHRhc2sgd2l0aCBjb25maXJtaW5nIHJlcGV0aXRpb24gY291bnQgc3BlY2lm
aWVkJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBv
aW50XSA9IG1vY2tTdGFydEFuZEVuZFBvaW50cygpOwotICAgICAgICAgICAgQW5hbHlzaXNUYXNr
LmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsIHRy
dWUpOworICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9p
bnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsICdhbHRlcm5hdGluZycsIHRydWUpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYt
dG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoewpAQCAtMzE4LDcgKzMx
OCw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2Fp
dCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNr
Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJt
JywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywg
cmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5
cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjog
MiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czog
WwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9u
LTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsfX0sCkBAIC0zMjksNyArMzI5LDcgQEAgZGVzY3JpYmUoJ0FuYWx5
c2lzVGFzaycsICgpID0+IHsKIAogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbmFseXNpcyB0
YXNrIGFuZCB0ZXN0IGdyb3VwcyB3aXRoICJuZWVkc05vdGlmaWNhdGlvbiIgc2V0IHRvIGZhbHNl
IGlmIHNwZWNpZmllZCBpbiBjcmVhdGlvbicsIGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGNv
bnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQb2ludHMoKTsKLSAg
ICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQ
b2ludCwgJ0NvbmZpcm0nLCA0LCBmYWxzZSk7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3Jl
YXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVy
bmF0aW5nJywgZmFsc2UpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBd
LnJlc29sdmUoewpAQCAtMzQwLDcgKzM0MCw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAo
KSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNb
MV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlm
aWNhdGlvbjogZmFsc2UsCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFd
LmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmlj
YXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAg
ICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRv
a2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7
cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNo
OiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1y
ZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTM1MSw3
ICszNTEsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0
KCdzaG91bGQgc3luYyB0aGUgbmV3IGFuYWx5c2lzIHRhc2sgc3RhdHVzIG9uY2UgaXQgaXMgY3Jl
YXRlZCcsIGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQ
b2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQb2ludHMoKTsKLSAgICAgICAgICAgIGNvbnN0IGNyZWF0
aW5nUHJvbWlzZSA9IEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBl
bmRQb2ludCwgJ0NvbmZpcm0nLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIGNvbnN0IGNyZWF0aW5n
UHJvbWlzZSA9IEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQ
b2ludCwgJ0NvbmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7
CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKQEAgLTM2Miw3ICszNjIsNyBAQCBk
ZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0
aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRp
b25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnYWx0
ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RH
cm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAg
ICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3du
ZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAg
JzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBw
YXRjaDogbnVsbH19LApAQCAtNDEyLDcgKzQxMiw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2sn
LCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gcmVqZWN0ZWQgcHJvbWlz
ZSB3aGVuIGFuYWx5c2lzIHRhc2sgY3JlYXRpb24gZmFpbGVkJywgYXN5bmMgKCkgPT4gewogICAg
ICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IG1vY2tTdGFydEFuZEVuZFBv
aW50cygpOwotICAgICAgICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlzaXNUYXNr
LmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsIHRy
dWUpOworICAgICAgICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlzaXNUYXNrLmNy
ZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsICdhbHRl
cm5hdGluZycsIHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBd
LnJlc29sdmUoewpAQCAtNDIzLDcgKzQyMyw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAo
KSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNb
MV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlm
aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0u
ZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNh
dGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAg
ICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tl
bjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3Jl
dmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDog
bnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2
aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBAIC00NTcsMTEg
KzQ1NywxMSBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0
KCdzaG91bGQgY3JlYXRlIGFuYWx5c2lzIHRhc2sgd2l0aCBjb25maXJtaW5nIHJlcGV0aXRpb24g
Y291bnQgc3BlY2lmaWVkJywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQs
IGVuZFBvaW50XSA9IG1vY2tTdGFydEFuZEVuZFBvaW50cygpOwotICAgICAgICAgICAgQW5hbHlz
aXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScs
IDQsIHRydWUpOworICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0
YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsICdhbHRlcm5hdGluZycsIHRydWUpOwog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBd
LmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmlj
YXRpb246IHRydWUsCi0gICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgd29y
a2VyTmFtZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLAorICAgICAgICAg
ICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHdvcmtlck5hbWU6ICd3b3JrZXInLCB3b3Jr
ZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAg
ICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCByZXZpc2lvblNldHM6IFsK
ICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0x
Jywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAg
ICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBu
dWxsLCBwYXRjaDogbnVsbH19LApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCmluZGV4IDg3OTg2ZDM2
ZjU2ZmM1M2Y4OWRhYzBlY2U1MDlhMTQ5N2FiMzcxY2UuLjAzNDJhYzAxYTRhZjVkYmNjMTU2OTYy
MmEyZGIxZDY1YTdjMjYyNzMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMKQEAgLTE4Nyw3ICsx
ODcsNyBAQCBmdW5jdGlvbiBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QocGxhdGZvcm0sIHRlc3Qp
CiAKICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmVuc3VyZVNpbmdsZXRvbignMTY3MzMtJyArIHBs
YXRmb3JtLmlkKCksIHsndHJpZ2dlcmFibGUnOiBNb2NrTW9kZWxzLnRyaWdnZXJhYmxlLAogICAg
ICAgICByZXBvc2l0b3J5R3JvdXA6IE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeUdyb3VwLAotICAg
ICAgICAnY29tbWl0U2V0JzogY29tbWl0U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZv
cm0nOiBwbGF0Zm9ybSwgJ3Rlc3QnOiB0ZXN0fSk7CisgICAgICAgICdjb21taXRTZXQnOiBjb21t
aXRTZXQsICdzdGF0dXMnOiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAndGVzdCc6
IHRlc3QsIG9yZGVyOiAwfSk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVz
dFdpdGhQYXRjaChwbGF0Zm9ybSwgdGVzdCwgb3JkZXIpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQt
YW5hbHl6ZXItdGVzdHMuanMKaW5kZXggMDdmY2IzZGIzZGU2YjEyZTZiOTQ3Y2M2MzBjZDA3YmI2
YTA0ZmJiYS4uMDkwN2EwYjAxNmEwNTE0ODM0N2RjYjNmNDc3ZTJhOTI1OThhYWZiYiAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0
LWFuYWx5emVyLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcwpAQCAtMjM1LDYgKzIzNSw3IEBA
IGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAg
ICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAn
Q29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAg
ICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAg
ICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMzUsIG93bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246
IDQ0LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7
CkBAIC0yOTQsNiArMjk1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAo
KSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAg
ICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlm
aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAz
NSwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAg
ICAgeycxMSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fX1dCiAgICAgICAgICAgICB9KTsKQEAgLTUyNiw2ICs1MjgsNyBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291
bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czog
W3snMTEnOiB7cmV2aXNpb246IDQwLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19
LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA0OSwgb3duZXJSZXZpc2lv
bjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpAQCAtNjE4LDYgKzYyMSw3
IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAg
ICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1l
OiAnQ29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisg
ICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAg
ICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMywgb3duZXJSZXZpc2lvbjog
bnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lv
bjogOCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODJkODBkY2E1ZWY4ZjA4MzU4OWM2NTQxYmEyNDU2YWZk
MTI4NjI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1
ZXN0cy10ZXN0cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLWNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwotcmVxdWlyZSgnLi4vdG9v
bHMvanMvdjMtbW9kZWxzLmpzJyk7Ci1jb25zdCBNb2NrTW9kZWxzID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvbW9jay12My1tb2RlbHMuanMnKS5Nb2NrTW9kZWxzOwotY29uc3QgTW9ja1JlbW90ZUFQ
SSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycpLk1vY2tSZW1vdGVB
UEk7Ci1jb25zdCBOb2RlUHJpdmlsZWdlZEFQSSA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL3ByaXZp
bGVnZWQtYXBpJykuUHJpdmlsZWdlZEFQSTsKLWNvbnN0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJl
cXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9IHJlcXVpcmUoJy4uL3Rvb2xz
L2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cycpLmNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJl
cXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsKLQotCi1mdW5jdGlvbiBzYW1w
bGVUZXN0R3JvdXAoY29uZmlnKSB7Ci0gICAgY29uc3QgbmVlZHNOb3RpZmljYXRpb24gPSBjb25m
aWcubmVlZHNOb3RpZmljYXRpb247Ci0gICAgY29uc3QgaW5pdGlhbFJlcGV0aXRpb25Db3VudCA9
IGNvbmZpZy5pbml0aWFsUmVwZXRpdGlvbkNvdW50OwotICAgIGNvbnN0IG1heU5lZWRNb3JlUmVx
dWVzdHMgPSBjb25maWcubWF5TmVlZE1vcmVSZXF1ZXN0czsKLSAgICBjb25zdCBoaWRkZW4gPSBj
b25maWcuaGlkZGVuOwotICAgIGNvbnN0IHN0YXR1c0xpc3QgPSBjb25maWcuc3RhdHVzTGlzdDsK
LQotICAgIHJldHVybiB7Ci0gICAgICAgICJ0ZXN0R3JvdXBzIjogW3sKLSAgICAgICAgICAgICJp
ZCI6ICIyMTI4IiwKLSAgICAgICAgICAgICJ0YXNrIjogIjEzNzYiLAotICAgICAgICAgICAgInBs
YXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAgICJuYW1lIjogIkNvbmZpcm0iLAotICAgICAgICAg
ICAgImF1dGhvciI6ICJybml3YSIsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUx
NDAwMCwKLSAgICAgICAgICAgIGhpZGRlbiwKLSAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9u
LAotICAgICAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbIjE2OTg1IiwgIjE2OTg2IiwgIjE2OTg3
IiwgIjE2OTg4IiwgIjE2OTg5IiwgIjE2OTkwIl0sCi0gICAgICAgICAgICAiY29tbWl0U2V0cyI6
IFsiNDI1NSIsICI0MjU2Il0sCi0gICAgICAgICAgICAibm90aWZpY2F0aW9uU2VudEF0IjogbnVs
bCwKLSAgICAgICAgICAgIGluaXRpYWxSZXBldGl0aW9uQ291bnQsCi0gICAgICAgICAgICBtYXlO
ZWVkTW9yZVJlcXVlc3RzCi0gICAgICAgIH1dLAotICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFt7
Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODUiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjog
IjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9y
ZGVyIjogIjAiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKLSAgICAgICAgICAg
ICJzdGF0dXMiOiBzdGF0dXNMaXN0WzBdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAg
ICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1
MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTg2IiwKLSAgICAgICAg
ICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAg
ICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4
IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIxIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAi
NDI1NiIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsxXSwKLSAgICAgICAgICAg
ICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJj
cmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6
ICIxNjk4NyIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAi
dGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAg
ICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMiIsCi0gICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xp
c3RbMl0sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51
bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7
Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODgiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjog
IjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9y
ZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKLSAgICAgICAgICAg
ICJzdGF0dXMiOiBzdGF0dXNMaXN0WzNdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAg
ICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1
MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTg5IiwKLSAgICAgICAg
ICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAg
ICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4
IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAi
NDI1NSIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs0XSwKLSAgICAgICAgICAg
ICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJj
cmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6
ICIxNjk5MCIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAi
dGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAg
ICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xp
c3RbNV0sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51
bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9XSwK
LSAgICAgICAgImNvbW1pdFNldHMiOiBbewotICAgICAgICAgICAgImlkIjogIjQyNTUiLAotICAg
ICAgICAgICAgInJldmlzaW9uSXRlbXMiOiBbeyJjb21taXQiOiAiODc4MzIifSwgeyJjb21taXQi
OiAiOTMxMTYifV0sCi0gICAgICAgICAgICAiY3VzdG9tUm9vdHMiOiBbXSwKLSAgICAgICAgfSwg
ewotICAgICAgICAgICAgImlkIjogIjQyNTYiLAotICAgICAgICAgICAgInJldmlzaW9uSXRlbXMi
OiBbeyJjb21taXQiOiAiODc4MzIifSwgeyJjb21taXQiOiAiOTYzMzYifV0sCi0gICAgICAgICAg
ICAiY3VzdG9tUm9vdHMiOiBbXSwKLSAgICAgICAgfV0sCi0gICAgICAgICJjb21taXRzIjogW3sK
LSAgICAgICAgICAgICJpZCI6ICI4NzgzMiIsCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICI5
IiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQiLAotICAgICAgICAgICAg
InRpbWUiOiAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICI5MzExNiIsCi0gICAg
ICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTkx
NjIyIiwKLSAgICAgICAgICAgICJ0aW1lIjogMTQ0NTk0NTgxNjg3OAotICAgICAgICB9LCB7Ci0g
ICAgICAgICAgICAiaWQiOiAiODc4MzIiLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIs
Ci0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTAuMTEgMTVBMjg0IiwKLSAgICAgICAgICAgICJ0
aW1lIjogMAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAiOTYzMzYiLAotICAgICAg
ICAgICAgInJlcG9zaXRvcnkiOiAiMTEiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjE5Mjcz
NiIsCi0gICAgICAgICAgICAidGltZSI6IDE0NDgyMjUzMjU2NTAKLSAgICAgICAgfV0sCi0gICAg
ICAgICJ1cGxvYWRlZEZpbGVzIjogW10sCi0gICAgICAgICJzdGF0dXMiOiAiT0siCi0gICAgfTsK
LX0KLQotZGVzY3JpYmUoJ2NyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vw
c1dpdGhGYWlsZWRSZXF1ZXN0cycsICgpID0+IHsKLSAgICBsZXQgcmVxdWVzdHMgPSBNb2NrUmVt
b3RlQVBJLmluamVjdChudWxsLCBOb2RlUHJpdmlsZWdlZEFQSSk7Ci0gICAgTW9ja01vZGVscy5p
bmplY3QoKTsKLSAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgUHJpdmlsZWdlZEFQSS5j
b25maWd1cmUoJ3dvcmtlcl9uYW1lJywgJ3Bhc3N3b3JkJyk7Ci0gICAgfSk7Ci0KLSAgICBpdCgn
c2hvdWxkIGFkZCBvbmUgbW9yZSBidWlsZCByZXF1ZXN0IHdoZW4gb25lIG9mIHRoZSBleGlzdGlu
ZyByZXF1ZXN0cyBmYWlsZWQnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91
cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291
bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAg
ICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OwotICAgICAgICBjb25zdCBkYXRh
ID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RH
cm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRh
KTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0
aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOwotICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3
b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDF9KTsK
LSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotCi0gICAgICAgIGF3YWl0IE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rl
c3QtZ3JvdXBzLzIxMjgnKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgYWRkIDIgbW9yZSBi
dWlsZCByZXF1ZXN0cyB3aGVuIDIgZmFpbGVkIGJ1aWxkIHJlcXVlc3QgZm91bmQgZm9yIGEgY29t
bWl0IHNldCcsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0g
e25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5
TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1
c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0
R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RH
cm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBj
cmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVz
dHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgs
IDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdl
ZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3Jk
OiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMn0pOwotICAgICAgICByZXF1
ZXN0c1swXS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEy
OCcpOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCBy
ZXF1ZXN0cyB3aGVuIGFsbCByZXF1ZXN0cyBmb3IgYSBjb21taXQgc2V0IGhhZCBmYWlsZWQnLCBh
c3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlm
aWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNv
bXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAi
ZmFpbGVkIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91
cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1v
ZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25h
bEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMs
IDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10
ZXN0LWdyb3VwJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwg
e3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBn
cm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOwotICAgICAgICByZXF1
ZXN0c1swXS5yZXNvbHZlKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVs
ZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gIm1heV9uZWVkX21vcmVfcmVxdWVzdHMiIGlzIG5v
dCBzZXQnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IGZhbHNlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVz
TGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAi
Y29tcGxldGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RH
cm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdy
b3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
MCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJl
cXVlc3RzIHdoZW4gYnVpbGQgcmVxdWVzdCBpcyBoaWRkZW4nLCBhc3luYyAoKSA9PiB7Ci0gICAg
ICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGlu
aXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRl
bjogdHJ1ZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIs
ICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAg
ICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAg
ICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRU
ZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKLSAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dv
cmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1h
eU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVx
dWVzdCB3aGVuIHdlXCd2ZSBhbHJlYWR5IGhpdCB0aGUgbWF4aW11bSByZXRyeSBjb3VudCcsIGFz
eW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29t
cGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWls
ZWQiXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29u
ZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVp
bGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMS41
KTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVz
dC1ncm91cCcpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3
b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3Jv
dXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKLSAgICAgICAgcmVxdWVz
dHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUg
bW9yZSB3aGVuIGFkZGl0aW9uYWwgYnVpbGQgcmVxdWVzdHMgYXJlIHN0aWxsIHBlbmRpbmcnLCBh
c3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlm
aWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBl
bmRpbmciXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3Vw
Q29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9k
ZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFs
QnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3Vwcywg
Myk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotCi0gICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7Ci0gICAgICAgIHJlcXVl
c3RzWzBdLnJlc29sdmUoKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IGNsZWFyIG1h
eU5lZWRNb3JlUmVxdWVzdCBmbGFnIHdoZW4gb25lIGNvbW1pdCBzZXQgaGFzIG5vdCBnb3QgYSBz
dWNjZXNzZnVsIHJ1biBidXQgaGF2ZSBwZW5kaW5nIGJ1aWxkcycsIGFzeW5jICgpID0+IHsKLSAg
ICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwg
aW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlk
ZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgInBlbmRpbmciLCAicGVuZGluZyJdfTsKLSAgICAg
ICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRl
c3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9y
VGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMCk7Ci0gICAgfSk7Ci19KTsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMu
anMKaW5kZXggNWFhOTFlOGFhMDJlMTFhNjY0NTFkMzFkOTYzNjk2Y2VkOGQ0OTgzZS4uZTJlNWY2
YmU3MDhiYzhhYmE2MzAxNDJhMDViZDM0ZjAyNzFiZGMzMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKQEAg
LTcsNyArNyw3IEBAIGNvbnN0IE5vZGVQcml2aWxlZ2VkQVBJID0gcmVxdWlyZSgnLi4vdG9vbHMv
anMvcHJpdmlsZWdlZC1hcGkuanMnKS5Qcml2aWxlZ2VkQVBJCiBjb25zdCBNb2NrTW9kZWxzID0g
cmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMnKS5Nb2NrTW9kZWxzOwogY29u
c3QgTW9ja1JlbW90ZUFQSSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5q
cycpLk1vY2tSZW1vdGVBUEk7CiAKLWZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChuZWVkc05vdGlm
aWNhdGlvbj10cnVlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50PTIsIG1heU5lZWRNb3JlUmVxdWVz
dHM9dHJ1ZSkgeworZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5lZWRzTm90aWZpY2F0aW9uID0g
dHJ1ZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudCA9IDIsIG1heU5lZWRNb3JlUmVxdWVzdHMgPSB0
cnVlKSB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgInRlc3RHcm91cHMiOiBbewogICAgICAgICAg
ICAgImlkIjogIjIxMjgiLApAQCAtMTA5LDYgKzEwOSwxNDAgQEAgZnVuY3Rpb24gc2FtcGxlVGVz
dEdyb3VwKG5lZWRzTm90aWZpY2F0aW9uPXRydWUsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ9Miwg
bWF5TmUKICAgICB9OwogfQogCitmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeShjb25m
aWcpIHsKKyAgICBjb25zdCBuZWVkc05vdGlmaWNhdGlvbiA9IGNvbmZpZy5uZWVkc05vdGlmaWNh
dGlvbjsKKyAgICBjb25zdCBpbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gY29uZmlnLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQ7CisgICAgY29uc3QgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGNvbmZpZy5t
YXlOZWVkTW9yZVJlcXVlc3RzOworICAgIGNvbnN0IGhpZGRlbiA9IGNvbmZpZy5oaWRkZW47Cisg
ICAgY29uc3Qgc3RhdHVzTGlzdCA9IGNvbmZpZy5zdGF0dXNMaXN0OworICAgIGNvbnN0IGNvbW1p
dFNldExpc3QgPSBjb25maWcuY29tbWl0U2V0TGlzdCB8fCBbJzQyNTUnLCAnNDI1NicsICc0MjU1
JywgJzQyNTYnLCAnNDI1NScsICc0MjU2J107CisgICAgY29uc3QgcmVwZXRpdGlvblR5cGUgPSBj
b25maWcucmVwZXRpdGlvblR5cGUgfHwgJ2FsdGVybmF0aW5nJzsKKworICAgIHJldHVybiB7Cisg
ICAgICAgICJ0ZXN0R3JvdXBzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICIyMTI4IiwKKyAgICAg
ICAgICAgICJ0YXNrIjogIjEzNzYiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAg
ICAgICAgICAgICJuYW1lIjogIkNvbmZpcm0iLAorICAgICAgICAgICAgImF1dGhvciI6ICJybml3
YSIsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMCwKKyAgICAgICAgICAg
IGhpZGRlbiwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uLAorICAgICAgICAgICAgImJ1
aWxkUmVxdWVzdHMiOiBbIjE2OTg1IiwgIjE2OTg2IiwgIjE2OTg3IiwgIjE2OTg4IiwgIjE2OTg5
IiwgIjE2OTkwIl0sCisgICAgICAgICAgICAiY29tbWl0U2V0cyI6IFsiNDI1NSIsICI0MjU2Il0s
CisgICAgICAgICAgICAibm90aWZpY2F0aW9uU2VudEF0IjogbnVsbCwKKyAgICAgICAgICAgIGlu
aXRpYWxSZXBldGl0aW9uQ291bnQsCisgICAgICAgICAgICBtYXlOZWVkTW9yZVJlcXVlc3RzLAor
ICAgICAgICAgICAgcmVwZXRpdGlvblR5cGUKKyAgICAgICAgfV0sCisgICAgICAgICJidWlsZFJl
cXVlc3RzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICIxNjk4NSIsCisgICAgICAgICAgICAidHJp
Z2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAg
InBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAg
ICAgICAgICAib3JkZXIiOiAiMCIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0
TGlzdFswXSwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzBdLAorICAgICAgICAg
ICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAg
ImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlk
IjogIjE2OTg2IiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAg
ICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAg
ICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIxIiwKKyAgICAg
ICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzFdLAorICAgICAgICAgICAgInN0YXR1
cyI6IHN0YXR1c0xpc3RbMV0sCisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAg
ICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAor
ICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiMTY5ODciLAorICAgICAgICAgICAgInRy
aWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAg
ICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAg
ICAgICAgICAgIm9yZGVyIjogIjIiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNl
dExpc3RbMl0sCisgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKKyAgICAgICAg
ICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAg
ICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJp
ZCI6ICIxNjk4OCIsCisgICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAg
ICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAg
ICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiMyIsCisgICAg
ICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFszXSwKKyAgICAgICAgICAgICJzdGF0
dXMiOiBzdGF0dXNMaXN0WzNdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAg
ICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAK
KyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTg5IiwKKyAgICAgICAgICAgICJ0
cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAg
ICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAg
ICAgICAgICAgICJvcmRlciI6ICI0IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRT
ZXRMaXN0WzRdLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNF0sCisgICAgICAg
ICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAg
ICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAi
aWQiOiAiMTY5OTAiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAg
ICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAg
ICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjUiLAorICAg
ICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbNV0sCisgICAgICAgICAgICAic3Rh
dHVzIjogc3RhdHVzTGlzdFs1XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAgICAg
ICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAw
CisgICAgICAgIH1dLAorICAgICAgICAiY29tbWl0U2V0cyI6IFt7CisgICAgICAgICAgICAiaWQi
OiAiNDI1NSIsCisgICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4Nzgz
MiJ9LCB7ImNvbW1pdCI6ICI5MzExNiJ9XSwKKyAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtd
LAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiNDI1NiIsCisgICAgICAgICAgICAi
cmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1pdCI6ICI5NjMzNiJ9
XSwKKyAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtdLAorICAgICAgICB9XSwKKyAgICAgICAg
ImNvbW1pdHMiOiBbeworICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKKyAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIjkiLAorICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4NCIs
CisgICAgICAgICAgICAidGltZSI6IDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjog
IjkzMTE2IiwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwKKyAgICAgICAgICAgICJy
ZXZpc2lvbiI6ICIxOTE2MjIiLAorICAgICAgICAgICAgInRpbWUiOiAxNDQ1OTQ1ODE2ODc4Cisg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICI4NzgzMiIsCisgICAgICAgICAgICAicmVw
b3NpdG9yeSI6ICI5IiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQiLAor
ICAgICAgICAgICAgInRpbWUiOiAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICI5
NjMzNiIsCisgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCisgICAgICAgICAgICAicmV2
aXNpb24iOiAiMTkyNzM2IiwKKyAgICAgICAgICAgICJ0aW1lIjogMTQ0ODIyNTMyNTY1MAorICAg
ICAgICB9XSwKKyAgICAgICAgInVwbG9hZGVkRmlsZXMiOiBbXSwKKyAgICAgICAgInN0YXR1cyI6
ICJPSyIKKyAgICB9OworfQorCiBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewog
ICAgIE1vY2tNb2RlbHMuaW5qZWN0KCk7CiAgICAgY29uc3QgcmVxdWVzdHMgPSBNb2NrUmVtb3Rl
QVBJLmluamVjdCgnaHR0cHM6Ly9wZXJmLndlYmtpdC5vcmcnLCBCcm93c2VyUHJpdmlsZWdlZEFQ
SSk7CkBAIC0yNDksNyArMzgzLDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5pc0hpZGRlbigpLCBmYWxzZSk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK2dyb3VwLmNyZWF0ZWRBdCgpLCAxNDU4Njg4NTE0
MDAwKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwg
c2FtcGxlVGVzdEdyb3VwKClbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGggLyAyKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIHNhbXBsZVRl
c3RHcm91cCgpWydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoIC8gMik7CiAgICAgICAgICAgICBhc3Nl
cnQub2soZ3JvdXAuaGFzUGVuZGluZygpKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAu
aGFzRmluaXNoZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLmhhc1N0YXJ0ZWQo
KSk7CkBAIC00NjIsNyArNTk2LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMu
d2Via2l0LCAnMTkxNjIzJyk7CiAgICAgICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3Np
dG9yeShNb2NrTW9kZWxzLnNoYXJlZFJlcG9zaXRvcnksICc4MDIyOScpOwogCi0gICAgICAgICAg
ICBjb25zdCBwcm9taXNlID0gVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdzb21lLXRhc2snLCBN
b2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVscy5zb21lVGVzdCwgJ3NvbWUtZ3JvdXAn
LCA0LCBbc2V0MSwgc2V0Ml0sIHRydWUpOworICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IFRl
c3RHcm91cC5jcmVhdGVXaXRoVGFzaygnc29tZS10YXNrJywgTW9ja01vZGVscy5zb21lUGxhdGZv
cm0sIE1vY2tNb2RlbHMuc29tZVRlc3QsICdzb21lLWdyb3VwJywgNCwgJ2FsdGVybmF0aW5nJywg
W3NldDEsIHNldDJdLCB0cnVlLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAg
ICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHsKQEAgLTQ3NSw3ICs2MDksNyBAQCBkZXNjcmli
ZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1syXS5kYXRhLCB7dGFza05hbWU6ICdzb21lLXRhc2snLCBuYW1lOiAnc29tZS1n
cm91cCcsIHBsYXRmb3JtOiA2NSwgdGVzdDogMSwKICAgICAgICAgICAgICAgICByZXBldGl0aW9u
Q291bnQ6IDQsIHJldmlzaW9uU2V0czogW3snMTEnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0
Y2g6IG51bGwsIHJldmlzaW9uOiAiMTkxNjIyIn0sCiAgICAgICAgICAgICAgICAgICAgICcxNic6
IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9fSwg
eycxMSc6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICIxOTE2
MjMifSwKLSAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBh
dGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19XSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUs
IHRva2VuOiAnYWJjJ30pOworICAgICAgICAgICAgICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lv
bjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiODAyMjkifX1dLCBuZWVkc05vdGlmaWNh
dGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsIHRva2VuOiAnYWJjJ30p
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLnVybCwgJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtdGVzdC1ncm91cCcpOwogICAgICAgICAgICAgcmVxdWVzdHNbMl0ucmVzb2x2
ZSh7CiAgICAgICAgICAgICAgICAgdGFza0lkOiAxMjMsCkBAIC00ODYsNiArNjIwLDE5NiBAQCBk
ZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzNdLnVybCwgJy9hcGkvYW5hbHlzaXMtdGFza3M/aWQ9MTIzJyk7CiAgICAgICAg
IH0pOwotICAgIH0pCisgICAgfSk7CisKKyAgICBkZXNjcmliZSgncmVzb2x2ZU1heU5lZWRNb3Jl
UmVxdWVzdHNGbGFnJywgKCkgPT4geworICAgICAgICBsZXQgcmVxdWVzdHMgPSBNb2NrUmVtb3Rl
QVBJLmluamVjdChudWxsLCBOb2RlUHJpdmlsZWdlZEFQSSk7CisgICAgICAgIE1vY2tNb2RlbHMu
aW5qZWN0KCk7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgUHJpdmls
ZWdlZEFQSS5jb25maWd1cmUoJ3dvcmtlcl9uYW1lJywgJ3Bhc3N3b3JkJyk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgYWRkIG9uZSBtb3JlIGJ1aWxkIHJlcXVlc3Qgd2hlbiBv
bmUgb2YgdGhlIGV4aXN0aW5nIHJlcXVlc3RzIGZhaWxlZCcsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2Us
IGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhp
ZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAi
Y29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxl
ZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0
ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91
cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAgICAg
dGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVx
dWVzdHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwg
e3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBn
cm91cDogJzIxMjgnLCBhZGRDb3VudDogMSwgY29tbWl0U2V0OiBudWxsfSk7CisgICAgICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9h
cGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IGFkZCAyIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAyIGZhaWxlZCBidWlsZCByZXF1ZXN0IGZv
dW5kIGZvciBhIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAor
ICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21w
bGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAg
ICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsK
KyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zy
b21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVz
b2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29y
a2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRk
Q291bnQ6IDIsIGNvbW1pdFNldDogbnVsbH0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIx
MjgnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9y
ZSBidWlsZCByZXF1ZXN0cyB3aGVuICJtYXlfbmVlZF9tb3JlX3JlcXVlc3RzIiBpcyBub3Qgc2V0
JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25l
ZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVl
ZE1vcmVSZXF1ZXN0czogZmFsc2UsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3Rh
dHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQi
LCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1w
bGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3Qg
dGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBz
KGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1
ZXN0c0ZsYWcoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAw
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBi
dWlsZCByZXF1ZXN0cyB3aGVuIGJ1aWxkIHJlcXVlc3QgaXMgaGlkZGVuJywgYXN5bmMgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9u
OiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czog
dHJ1ZSwgaGlkZGVuOiB0cnVlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxl
dGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJm
YWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0
cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0
R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAg
ICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0
YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQn
LCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hv
dWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWxsIHJlcXVlc3RzIGZv
ciBhIGNvbW1pdCBzZXQgaGFkIGZhaWxlZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxS
ZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFs
c2UsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwg
ImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAg
ICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcp
OworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5y
ZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMyk7CisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9u
YW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7
CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVp
bGQgcmVxdWVzdCB3aGVuIHdlXCd2ZSBhbHJlYWR5IGhpdCB0aGUgbWF4aW11bSByZXRyeSBjb3Vu
dCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3Rh
dHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAi
ZmFpbGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0
R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEp
OworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0Zs
YWcoMS41KTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bh
c3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAg
ICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSB3aGVuIGFkZGl0aW9uYWwgYnVpbGQgcmVxdWVz
dHMgYXJlIHN0aWxsIHBlbmRpbmcnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAyLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAor
ICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJm
YWlsZWQiLCAiZmFpbGVkIiwgInBlbmRpbmciLCAicGVuZGluZyJdfTsKKyAgICAgICAgICAgIGNv
bnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAg
ICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZl
dGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZl
TWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMyk7CisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywg
d29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IGNsZWFyICJtYXkgbmVlZCBtb3JlIHJl
cXVlc3RzIiBmbGFnIHdoZW4gb25lIGNvbW1pdCBzZXQgaGFzIG5vdCBnb3QgYSBzdWNjZXNzZnVs
IHJ1biBidXQgaGF2ZSBwZW5kaW5nIGJ1aWxkcycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRp
YWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjog
ZmFsc2UsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVk
IiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OworICAgICAg
ICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZp
Zyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBd
LnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hv
dWxkIGFkZCB0d28gbW9yZSBidWlsZCByZXF1ZXN0IG9uIEEgY29uZmlnIGFuZCBjbGVhciAibWF5
IG5lZWQgbW9yZSByZXF1ZXN0cyIgYWZ0ZXJ3YXJkcyB3aGVuIG9uZSBBIGNvbmZpZyByZXF1ZXN0
IGZhaWxlZCBmb3IgdGVzdCBncm91cCBpbiBzZXF1ZW50aWFsIG1vZGUnLCBhc3luYyAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246
IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0
cnVlLAorICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2Vx
dWVudGlhbCcsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFp
bGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAicGVuZGluZyJdLAorICAgICAg
ICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1Nics
ICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0
R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEp
OworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0Zs
YWcoMyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3Jk
OiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiAnNDI1
NSd9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICAgICAg
YXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgICAgICAgICByZXF1
ZXN0c1sxXS5yZXNvbHZlKHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZykp
OworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0
YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQn
LCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pCisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgcmV0cnkgQiBjb25maWcgaWYgQSBjb25maWcgZXhoYXVz
dGVkIHJldHJ5IGFuZCBoYWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgcnVuIGJ1dCBsZXNzIHRo
YW4gdXNlciByZXF1ZXN0ZWQgZm9yIHRlc3QgZ3JvdXAgaW4gc2VxdWVudGlhbCBtb2RlJywgYXN5
bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90
aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9u
VHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxl
dGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQi
XSwKKyAgICAgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1
JywgJzQyNTUnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0g
c2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNv
bnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdy
b3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3Jl
UmVxdWVzdHNGbGFnKDIpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVu
Z3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3Jr
ZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1p
dFNldDogJzQyNTYnfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY2xlYXIgdGVzdCBncm91cCAibWF5IG5lZWQg
bW9yZSByZXF1ZXN0cyIgZmxhZyBpbiBzZXF1ZW50aWFsIG1vZGUgaWYgYWxsIHVzZXIgaW5pdGlh
bGx5IHNjaGVkdWxlZCBBIHJ1bnMgZmFpbGVkJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAg
Y29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlh
bFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAg
ICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAi
cGVuZGluZyIsICJwZW5kaW5nIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgICAgICBjb21taXRT
ZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119
OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVz
dEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRl
c3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDIpOworICAgICAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5h
bWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIx
MjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAgICAgcmVxdWVzdHNb
MF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNsZWFyIG1h
eU5lZWRNb3JlUmVxdWVzdCBmbGFnIHdoZW4gaW5pdGlhbCByZXF1ZXN0ZWQgcmVwZXRpdGlvbiBp
cyBzYXRpc2ZpZWQgaW4gc2VxdWVudGlhbCBtb2RlJywgYXN5bmMgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5p
dGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAor
ICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJj
b21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiXSwKKyAgICAgICAgICAg
ICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU2JywgJzQyNTYnLCAnNDI1
NicsICc0MjU2J119OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3Vw
Rm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAg
ICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMp
OworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0
YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQn
LCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427601</attachid>
            <date>2021-05-03 13:55:22 -0700</date>
            <delta_ts>2021-05-18 19:22:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210503135521.patch</filename>
            <type>text/plain</type>
            <size>226741</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTMzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjN2ZiYmEwY2Q4NDg2MWQ2MTkwOWE5YmFlYzgwOGM1ZDM0ZWQ1NjYwLi5lMzdmNjkzNmIz
OTAwOWY0ZjE4Y2NlMmY2YTI1NzQzMWNlMWRlZmM4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMjEtMDUtMDMgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlw
ZScgdG8gJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJyB0YWJsZSB0byBzdG9yZSByZXBldGl0aW9uIHR5
cGUgd2hpY2ggZGVmYXVsdHMgdG8gJ2FsdGVybmF0aW5nJy4KKyAgICAgICAgQWRkIHN1cHBvcnQg
dG8gc2NoZWR1bGUgJ3NlcXVlbnRpYWwnIEEvQiB0ZXN0aW5nIHdoaWNoIHJ1bnMgYWxsIEEgcnVu
cyBiZWZvcmUgQiBydW5zLCB3aGVyZWFzIHByZXZpb3VzbHkgd2Ugb25seQorICAgICAgICBzdXBw
b3J0IGFsdGVybmF0aW5nIEEgYW5kIEIgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBydW5zLgorICAg
ICAgICBBZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKworICAg
ICAgICBVcGRhdGUgc3luY2luZyBzY3JpcHQgdG8gbm90IHByb2NlZWQgd2l0aCBuZXh0IGNvbmZp
Z3VyYXRpb24gdW50aWwgY3VycmVudCBjb25maWd1cmF0aW9uIG1lZXRzIGluaXRpYWwgcmVxdWVz
dGVkCisgICAgICAgIHJlcGV0aXRpb24gY291bnQgb3IgZXhjZWVkIHJldHJ5LgorCisgICAgICAg
IEZpeCBhIHBvdGVudGlhbCByYWNlIGluIHN5bmNpbmcgc2NyaXB0IHRoYXQgJ1Byb21pc2UuYWxs
JyBtYXkgY2F1c2UgdGVzdCBncm91cCBub3Qgc2NoZWR1bGVkIGluIG9yZGVyLgorCisgICAgICAg
ICogYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFk
ZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogaW5pdC1kYXRhYmFzZS5zcWw6IEFkZGVkICd0ZXN0
Z3JvdXBfcmVwZXRpdGlvbl90eXBlJyBmaWVsZCB0byAnYW5hbHlzaXNfdGVzdF9ncm91cHMnIHRh
YmxlLgorICAgICAgICAqIG1pZ3JhdGUtZGF0YWJhc2Uuc3FsOiBVcGRhdGVkIG1pZ3JhdGlvbiBz
Y3JpcHQgdG8gY29uZGl0aW9uYWxseSBhZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZp
ZWxkLgorICAgICAgICAqIHB1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwOiBBZGRlZCAncmVwZXRp
dGlvblR5cGUnIGZpZWxkIGluIGFwaSByZXR1cm4gdmFsdWUuCisgICAgICAgICogcHVibGljL2lu
Y2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHA6IEZldGNoaW5nIGJ1aWxkIHJlcXVlc3Rz
IHVuZGVyIGEgdHJpZ2dlcmFibGUgc2hvdWxkIGluY2x1ZGUgdGVzdAorICAgICAgICBncm91cCB3
aXRoIGFsbCB0ZXN0IGdyb3VwcyBmaW5pc2hlZCBidXQgc3RpbGwgbmVlZCByZXRyeS4gVGhpcyB3
aWxsIGFsbG93IHN5bmNpbmcgc2NyaXB0IHRvIHJlc29sdmUgdGhlIGJ1aWxkCisgICAgICAgIHJl
cXVlc3QgYnkgSUQgYW5kIGJsb2NrIG90aGVyIHJlcXVlc3QgdG8gYmUgc2NoZWR1bGVkIG9uIHRo
ZSBidWlsZGVyLgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMu
cGhwOiBBZGRlZCBjb2RlIHRvIGNyZWF0ZSBidWlsZCByZXF1ZXN0cyBiYXNlZCBvbiB0ZXN0IG1v
ZGUuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5w
aHA6IEFkZGVkIHN1cHBvcnQgdG8gb25seSBhZGQgYnVpbGQgcmVxdWVzdHMgdG8gb25lIGNvbW1p
dCBzZXQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10
YXNrLnBocDogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAqIHB1Ymxp
Yy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHA6IEFkZGVkICdyZXBldGl0aW9u
VHlwZScgc3VwcG9ydC4KKyAgICAgICAgKiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAucGhwOgorICAgICAgICAqIHB1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1i
YXNlLmpzOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0
aW9uLXRlc3QtZ3JvdXAtZm9ybS5qczogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0Lgor
ICAgICAgICAoQ3VzdG9tQ29uZmlndXJhdGlvblRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnN0YXJ0
VGVzdGluZyk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRl
c3QtZ3JvdXAtZm9ybS5qczoKKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJv
dG90eXBlLnN0YXJ0VGVzdGluZyk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvdGVz
dC1ncm91cC1mb3JtLmpzOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRU
ZXN0aW5nKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanM6Cisg
ICAgICAgIChBbmFseXNpc1Rhc2suYXN5bmMgY3JlYXRlKToKKyAgICAgICAgKEFuYWx5c2lzVGFz
ayk6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzOgorICAgICAg
ICAoQnVpbGRSZXF1ZXN0KToKKyAgICAgICAgKEJ1aWxkUmVxdWVzdC5wcm90b3R5cGUudXBkYXRl
U2luZ2xldG9uKTogQWxsb3cgYnVpbGQgcmVxdWVzdCBvcmRlciB0byBiZSB1cGRhdGVkLgorICAg
ICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAgICAgKFRlc3RHcm91
cCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAg
ICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJlcGV0aXRpb25UeXBlKToKKyAgICAgICAgKFRlc3RH
cm91cC5wcm90b3R5cGUucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KTogUmVmYWN0b3JlZCBg
cmVwZXRpdGlvbkNvdW50YCBzaW5jZSByZXBldGl0aW9uIG1heSBiZSBkaWZmZXJlbnQKKyAgICAg
ICAgYmV0d2VlbiBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
aGFzUmV0cmllcyk6IEEgaGVscGVyIGZ1bmN0aW9uIHRvIHRlbGwgaWYgYSB0ZXN0IGdyb3VwIGhh
cyByZXRyeSBydW5zLgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS53aWxsRXhjZWVkUmV0
cnlMaW1pdFdpdGhSZXRyeUNvdW50KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuYWRk
aXRpb25hbFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudCk6Cisg
ICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnN1Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50KToK
KyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaXNGaXJzdFRlc3RSZXF1ZXN0KToKKyAgICAg
ICAgKFRlc3RHcm91cC5wcm90b3R5cGUucHJlY2VkaW5nQnVpbGRSZXF1ZXN0KToKKyAgICAgICAg
KFRlc3RHcm91cC5wcm90b3R5cGUucmV0cnlDb3VudEZvckNvbW1pdFNldCk6CisgICAgICAgIChU
ZXN0R3JvdXAucHJvdG90eXBlLnJldHJ5Q291bnRzQXJlU2FtZUZvckFsbENvbW1pdFNldHMpOgor
ICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQWx0ZXJuYXRpbmdSZXRy
aWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
JyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgX2NyZWF0ZVNlcXVlbnRpYWxSZXRy
aWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
JyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIGNhbmNlbFBlbmRp
bmdSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIGRpZFNlbmRO
b3RpZmljYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBhZGRNb3Jl
QnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgY3JlYXRlV2l0aFRhc2sp
OgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9u
KToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6
CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHNjaGVkdWxlUmV0cmllc0lmTmVj
ZXNzYXJ5KTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUu
CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHJlc29sdmVNYXlOZWVkTW9yZVJl
cXVlc3RzRmxhZyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgZmV0Y2hCeUlkKTogQWRkZWQg
c3VwcG9ydCB0byBmZXRjaCB0ZXN0IGdyb3VwIGJ5IElELgorICAgICAgICAqIHB1YmxpYy92My9w
YWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFseXNpc1Rhc2tDaGFydFBh
bmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNU
YXNrUmVzdWx0c1BhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZS5wcm90b3R5cGUuc2V0VGVzdEdyb3Vwcyk6
CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKToKKyAgICAgICAgKEFuYWx5
c2lzVGFza1Rlc3RHcm91cFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgor
ICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuX3JlbmRlckN1cnJl
bnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5
cGUuX3JldHJ5U3VtbWFyeSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5k
aWRDb25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90
eXBlLmFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNr
UGFnZS5wcm90b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAo
QW5hbHlzaXNUYXNrUGFnZS5zZXQgY29uc3QpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5w
cm90b3R5cGUuYXN5bmMgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlz
dCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlQ3Vz
dG9tVGVzdEdyb3VwKToKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczoK
KyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6Cisg
ICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLmFzeW5jIF9hbmFseXplUmFuZ2UpOgorICAgICAg
ICAqIHB1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAgICAg
ICAoQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZUFuYWx5c2lz
VGFza1dpdGhHcm91cCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0
cy10ZXN0cy5qczogQWRkZWQgYSB1bml0IHRlc3QuCisgICAgICAgICogc2VydmVyLXRlc3RzL2Fw
aS11cGxvYWQtcm9vdC10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNl
cnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IFVw
ZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3Rz
LgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91
cC10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2
ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanM6IFVwZGF0
ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNl
cy9jb21tb24tb3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGFzeW5jIGFzc2VydFRocm93cyk6Cisg
ICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanM6CisgICAgICAgIChN
b2NrRGF0YS5hZGRNb2NrRGF0YSk6CisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkTW9ja0J1aWxk
UmVxdWVzdHNXaXRoUm9vdHMpOgorICAgICAgICAoTW9ja0RhdGEuc2V0IGFkZEFub3RoZXJNb2Nr
VGVzdEdyb3VwKToKKyAgICAgICAgKE1vY2tEYXRhLnNldCBtb2NrVGVzdFN5bmNDb25maWdXaXRo
U2luZ2xlQnVpbGRlcik6CisgICAgICAgIChNb2NrRGF0YS5zYW1wbGVCdWlsZERhdGEpOgorICAg
ICAgICAqIHNlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qczog
VXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvdG9v
bHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3Rz
LgorICAgICAgICAoYXN5bmMgY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNoKToKKyAgICAgICAgKGNy
ZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KToKKyAgICAgICAgKiB0b29scy9qcy9idWlsZGJv
dC1zeW5jZXIuanM6CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUuc2NoZWR1bGVS
ZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKToKKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3Rv
dHlwZS5wdWxsQnVpbGRib3QpOgorICAgICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJh
YmxlLmpzOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZSk6CisgICAgICAgIChCdWlsZGJv
dFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBzeW5jT25jZSk6CisgICAgICAgIChCdWlsZGJv
dFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBfc2NoZWR1bGVSZXF1ZXN0KToKKyAgICAgICAg
KEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLl9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0
aW5nUmVxdWVzdFdpdGhOZXdDb21taXRTZXQpOgorICAgICAgICAqIHRvb2xzL2pzL21lYXN1cmVt
ZW50LXNldC1hbmFseXplci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0QW5hbHl6ZXIucHJv
dG90eXBlLmFzeW5jIF9hbmFseXplTWVhc3VyZW1lbnRTZXQpOgorICAgICAgICAoTWVhc3VyZW1l
bnRTZXRBbmFseXplcik6CisgICAgICAgICogdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJl
cXVlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHRvb2xzL3J1bi1hbmFseXNpcy5qczogVXNl
IHVwZGF0ZWQgQVBJIHRvIHJldHJ5LgorICAgICAgICAoYXN5bmMgYW5hbHlzaXNMb29wKToKKyAg
ICAgICAgKGFzeW5jIHByb2Nlc3NUZXN0R3JvdXBNYXlOZWVkTW9yZVJlcXVlc3RzKToKKyAgICAg
ICAgKiB0b29scy9zeW5jLWJ1aWxkYm90LmpzOiBBZGRlZCBjb21tYW5kIGxpbmUgb3B0aW9uICct
LW1heC1yZXRyeS1mYWN0b3InLgorICAgICAgICAqIHVuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10
ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHVuaXQtdGVzdHMvYnVpbGRi
b3Qtc3luY2VyLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAgICAgIChjcmVhdGVT
YW1wbGVCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0
LWFuYWx5emVyLXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1
aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBNb3ZlZCB1bml0IHRlc3RzIHRvIHRlc3QtZ3JvdXAtdGVz
dHMuanMuCisgICAgICAgICogdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qczogQWRkZWQg
dW5pdCB0ZXN0cyBmcm9tICdyZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMnLgor
CiAyMDIxLTA0LTE0ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IENvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGluIHRoZSBDaGFydApkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGVzdC1ncm91
cC1mb3JtLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMv
dGVzdC1ncm91cC1mb3JtLXRlc3RzLmpzCmluZGV4IGI0YWIyMTI1YzQ2MzA0ZjU2YzQ3ODc3MWJl
YjZjMjMzYTA5M2JlOGEuLmY5NjAxMTM4MjM0YTFkOWM1NjZhMzgwYTY1Y2U1OTA4NDI4MzBiNGEg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3Rlc3Qt
Z3JvdXAtZm9ybS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nl
ci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMKQEAgLTE4LDEwICsxOCwyNSBAQCBkZXNj
cmliZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywgKCkgPT4gewogICAgICAgICAgICAgdGVzdEdyb3Vw
Rm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1
c2goYXJncykpOwogICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAg
ICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAg
ICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXV0pOworICAgICAgICAgICAg
ZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOwogICAgICAg
ICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdtdXN0IGRpc3BhdGNoICJzdGFydFRlc3RpbmciIGFj
dGlvbiB3aXRoIHRoZSByZXBldGl0aW9uIHR5cGUgdXNlciBzZWxlY3RzIG9uICJTdGFydCBBL0Ig
dGVzdGluZyInLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJv
d3NpbmdDb250ZXh0KCk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cEZvcm0gPSBhd2FpdCBjcmVh
dGVUZXN0R3JvdXBGb3JtV2l0aENvbnRleHQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IGNhbGxz
ID0gW107CisgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKyAgICAgICAgZXhwZWN0KGNhbGxz
KS50by5lcWwoe30pOworICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRv
bicpLmNsaWNrKCk7CisgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0
aW5nJywgdHJ1ZV1dKTsKKyAgICAgICAgY29uc3QgdHlwZUZvcm0gPSB0ZXN0R3JvdXBGb3JtLmNv
bnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpOworICAgICAgICB0eXBlRm9ybS52YWx1ZSA9ICdzZXF1
ZW50aWFsJzsKKyAgICAgICAgdHlwZUZvcm0uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5n
ZScpKTsKKyAgICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGlj
aygpOworICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRy
dWVdLCBbNCwgJ3NlcXVlbnRpYWwnLCB0cnVlXV0pOworICAgIH0pOworCiAgICAgaXQoJ211c3Qg
dXBkYXRlIHRoZSByZXBldGl0aW9uIGNvdW50IHdoZW4gdGhlIHVzZXIgc2VsZWN0ZWQgYSBkaWZm
ZXJlbnQgY291bnQnLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3Np
bmdDb250ZXh0KCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBGb3JtV2l0aENvbnRl
eHQoY29udGV4dCkudGhlbigodGVzdEdyb3VwRm9ybSkgPT4gewpAQCAtMjksMTIgKzQ0LDEyIEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICB0ZXN0
R3JvdXBGb3JtLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2Fs
bHMucHVzaChhcmdzKSk7CiAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAg
ICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7
Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdXSk7CisgICAgICAg
ICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAg
ICAgICAgICAgICBjb25zdCBjb3VudEZvcm0gPSB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3JlcGV0
aXRpb24tY291bnQnKTsKICAgICAgICAgICAgIGNvdW50Rm9ybS52YWx1ZSA9ICc2JzsKICAgICAg
ICAgICAgIGNvdW50Rm9ybS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAg
ICAgICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwot
ICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXSwgWzYsIHRydWVdXSk7
CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRy
dWVdLCBbNiwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAK
QEAgLTQ1LDcgKzYwLDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+IHsK
ICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycs
ICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKHt9KTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQt
YnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwg
dHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0
aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIGNvbnN0IGNvdW50Rm9ybSA9IHRlc3RHcm91cEZv
cm0uY29udGVudCgncmVwZXRpdGlvbi1jb3VudCcpOwogICAgICAgICAgICAgY291bnRGb3JtLnZh
bHVlID0gJzYnOwogICAgICAgICAgICAgY291bnRGb3JtLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50
KCdjaGFuZ2UnKSk7CkBAIC01Myw3ICs2OCw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVz
dHMnLCAoKSA9PiB7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb25DaGVja2JveC5jaGVj
a2VkID0gZmFsc2U7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRpb25DaGVja2JveC5kaXNw
YXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwogICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgZXhwZWN0KGNh
bGxzKS50by5lcWwoW1s0LCB0cnVlXSwgWzYsIGZhbHNlXV0pOworICAgICAgICAgICAgZXhwZWN0
KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXSwgWzYsICdhbHRlcm5hdGlu
ZycsIGZhbHNlXV0pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtNzYsMTAgKzkxLDEwIEBA
IGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAg
dGVzdEdyb3VwRm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+
IGNhbGxzLnB1c2goYXJncykpOwogICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFs
KHt9KTsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCdidXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8u
ZXFsKFtbNCwgdHJ1ZV1dKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChb
WzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5zZXRSZXBldGl0aW9uQ291bnQoOCk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwRm9ybS5j
b250ZW50KCkucXVlcnlTZWxlY3RvcignYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdLCBbOCwgdHJ1ZV1dKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdLCBb
OCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFi
YXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAppbmRl
eCBmNjhiNWYwYzAzM2EyMjY0MzA3YzJmODNmM2Q0ZmI3NGJkYjE1M2VkLi5lNzZkY2JjOTI5YTJi
MWNmNWQyMjA3NDM3Y2RmYTQ4NmU1YmFlYmRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2luaXQtZGF0YWJhc2Uuc3FsCkBAIC0yOSw2ICsyOSw3IEBAIERST1AgVEFCTEUgSUYgRVhJU1RT
IHRyaWdnZXJhYmxlX3JlcG9zaXRvcmllcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMg
dXBsb2FkZWRfZmlsZXMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGJ1Z3MgQ0FTQ0FE
RTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIENBU0NBREU7CitE
Uk9QIFRZUEUgSUYgRVhJU1RTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIENB
U0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRfc2V0cyBDQVNDQURFOwogRFJPUCBU
QUJMRSBJRiBFWElTVFMgY29tbWl0X3NldF9pdGVtcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBF
WElTVFMgYnVpbGRfcmVxdWVzdHMgQ0FTQ0FERTsKQEAgLTI4Miw2ICsyODMsNyBAQCBDUkVBVEUg
VEFCTEUgdXBsb2FkZWRfZmlsZXMgKAogQ1JFQVRFIElOREVYIGZpbGVfYXV0aG9yX2luZGV4IE9O
IHVwbG9hZGVkX2ZpbGVzKGZpbGVfYXV0aG9yKTsKIENSRUFURSBVTklRVUUgSU5ERVggZmlsZV9z
aGEyNTZfaW5kZXggT04gdXBsb2FkZWRfZmlsZXMoZmlsZV9zaGEyNTYpIFdIRVJFIGZpbGVfZGVs
ZXRlZF9hdCBpcyBOVUxMOwogCitDUkVBVEUgVFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0
aXRpb25fdHlwZSBhcyBFTlVNICgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpOwogQ1JFQVRF
IFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBfaWQgc2VyaWFsIFBS
SU1BUlkgS0VZLAogICAgIHRlc3Rncm91cF90YXNrIGludGVnZXIgUkVGRVJFTkNFUyBhbmFseXNp
c190YXNrcyBOT1QgTlVMTCwKQEAgLTI5Miw2ICsyOTQsNyBAQCBDUkVBVEUgVEFCTEUgYW5hbHlz
aXNfdGVzdF9ncm91cHMgKAogICAgIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24gYm9vbGVh
biBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9ub3RpZmljYXRpb25fc2Vu
dF9hdCB0aW1lc3RhbXAgREVGQVVMVCBOVUxMLAogICAgIHRlc3Rncm91cF9pbml0aWFsX3JlcGV0
aXRpb25fY291bnQgaW50ZWdlciBOT1QgTlVMTCwKKyAgICB0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90
eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFVTFQg
J2FsdGVybmF0aW5nJywKICAgICB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyBib29s
ZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RSQUlOVCB0ZXN0Z3JvdXBfbmFtZV9tdXN0X2Jl
X3VuaXF1ZV9mb3JfZWFjaF90YXNrIFVOSVFVRSh0ZXN0Z3JvdXBfdGFzaywgdGVzdGdyb3VwX25h
bWUpKTsKIENSRUFURSBJTkRFWCB0ZXN0Z3JvdXBfdGFza19pbmRleCBPTiBhbmFseXNpc190ZXN0
X2dyb3Vwcyh0ZXN0Z3JvdXBfdGFzayk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWln
cmF0ZS1kYXRhYmFzZS5zcWwKaW5kZXggMGVhOTEzM2RhNmVkZTMyNWRkZjZjMjFkOGI5MzdmYjcz
NTY0MjU5YS4uNDMwNDg1YjNiNGI5MGQ4NGRjZmQ2MjZkMzI4NzBmMTBkMjQ3Njk4YSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbApAQCAtMSw5ICsx
LDE1IEBACiBETyAkJAogCiBCRUdJTgorCitJRiBOT1QgRVhJU1RTIChTRUxFQ1QgTlVMTCBGUk9N
IHBnX3R5cGUgV0hFUkUgdHlwbmFtZSA9ICdhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25f
dHlwZScpIFRIRU4KKyAgICBDUkVBVEUgVFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRp
b25fdHlwZSBhcyBFTlVNICgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpOworRU5EIElGOwor
CiBBTFRFUiBUQUJMRSBidWlsZF9yZXF1ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVx
dWVzdF9zdGF0dXNfZGVzY3JpcHRpb24gdmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRF
UiBUQUJMRSBwbGF0Zm9ybXMgQUREIENPTFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91
cCBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxhdGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVS
IFRBQkxFIGNvbW1pdHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9p
ZGVudGlmaWVyIHZhcmNoYXIoNjQpIERFRkFVTFQgTlVMTDsKK0FMVEVSIFRBQkxFIGFuYWx5c2lz
X3Rlc3RfZ3JvdXBzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfcmVwZXRpdGlv
bl90eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFV
TFQgJ2FsdGVybmF0aW5nJzsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBDT05TVFJBSU5UIGNv
bW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlOwogQUxU
RVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21taXRfc3RyaW5nX2lkZW50aWZpZXJf
aW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUoY29tbWl0X3JlcG9zaXRvcnksIGNv
bW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1YzRhYjk4N2I3OTMy
NmM4MTIyMDMwZmRkZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0OGExOTlkZTI3OTVk
NWQ3N2Q2ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBp
L3Rlc3QtZ3JvdXBzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24gZm9ybWF0X3Rlc3Rf
Z3JvdXAoJGdyb3VwX3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFi
YXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSks
CiAgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3Jv
dXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwKICAgICAgICAgJ2lu
aXRpYWxSZXBldGl0aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9pbml0aWFsX3Jl
cGV0aXRpb25fY291bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9PiAkZ3JvdXBfcm93
Wyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWlsZFJlcXVlc3RzJyA9
PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwKICAgICApOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJl
cXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdiMjUyMDk3ZjExNWZm
ZGJjNDFhMTFjM2U0YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkwYTNjMmIyMDkxZGU1
YmU2YTUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgKFNFTEVDVCB0
ZXN0Z3JvdXBfaWQsIHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rncm91cF9hdXRob3Ig
aXMgbm90IG51bGwgdGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRlciwgdGVzdGdyb3Vw
X2NyZWF0ZWRfYXQKICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFdI
RVJFIEVYSVNUUwogICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBidWlsZF9yZXF1
ZXN0cyBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCByZXF1ZXN0X3N0YXR1
cwotICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwn
LCBcJ3J1bm5pbmdcJykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAg
SU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpIE9SIHRlc3Rncm91
cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91cHMKICAgICAgICAg
ICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVzdF9ncm91cCA9IHRl
c3RfZ3JvdXBzLnRlc3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkgYXV0aG9yX29yZGVy
LCB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5KCR0cmlnZ2VyYWJs
ZV9pZCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAppbmRleCBlODUzMGE2
YmI3MWU0MmNmZjI4Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi5jNmNkOGU2N2RjMDM4MjI4MTAwMTc4
NTMzMmI3MDE1NjgwNjlmZWYzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCkBAIC00
LDIxICs0LDMxIEBAIHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1maW5kZXIucGhwJyk7
CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAogIyBGSVhNRTogU2hv
dWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIgZnVuY3Rpb25zIHRv
IGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24gY3JlYXRlX3Rlc3Rf
Z3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5h
bWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJl
cGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKK2Z1bmN0aW9uIGNyZWF0ZV90
ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQs
ICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQs
ICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9u
KQorewogCiAgICAgbGlzdCAoJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmln
dXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21taXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3Vy
YXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmlu
c2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFy
cmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0
aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnaW5pdGlh
bF9yZXBldGl0aW9uX2NvdW50JyA9PiAkcmVwZXRpdGlvbl9jb3VudCkpOworICAgICAgICBhcnJh
eSgndGFzaycgPT4gJHRhc2tfaWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhv
ciwgJ25lZWRzX25vdGlmaWNhdGlvbicgPT4gJG5lZWRzX25vdGlmaWNhdGlvbiwKKyAgICAgICAg
ICAgICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50LCAncmVw
ZXRpdGlvbl90eXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CiAKICAgICAkYnVpbGRfY291bnQg
PSBjb3VudCgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxk
X2NvdW50OwogICAgIGZvcmVhY2goJGJ1aWxkX2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRf
Y29uZmlndXJhdGlvbikKICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3Vy
YXRpb24oJGRiLCAkYnVpbGRfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCBOVUxMLCAkZ3JvdXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRp
IDwgJHJlcGV0aXRpb25fY291bnQ7ICRpKyspIHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25m
aWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2Vy
dF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlv
biwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdy
b3VwX2lkKTsKKyAgICBpZiAoJHJlcGV0aXRpb25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAg
ICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3Vy
YXRpb24pIHsKKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50
OyAkaSsrKQorICAgICAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1
cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGFzc2VydCgkcmVwZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZycp
OworICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgewor
ICAgICAgICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2Nv
bmZpZ3VyYXRpb24pCisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2Nv
bmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJh
YmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiAkZ3JvdXBfaWQ7CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWls
ZC1yZXF1ZXN0cy5waHAKaW5kZXggNTcwZTkwMmY1ZDJlMWRmM2ZjMmI2YjZhZmEyMzNhYmZiNTAw
MzY0Ny4uMTcwNWZmNmFlYTdmZjAwMTJiZjAxY2Q1YTNmODliZTYyMWY5OTZhMiAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocApAQCAtNywxMyArNywxNSBAQCBmdW5j
dGlvbiBtYWluKCkgewogICAgICRkYiA9IGNvbm5lY3QoKTsKICAgICAkZGF0YSA9IGVuc3VyZV9w
cml2aWxlZ2VkX2FwaV9kYXRhX2FuZF90b2tlbl9vcl93b3JrZXIoJGRiKTsKIAotICAgICRhZGRp
dGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdhZGRDb3VudCcp
OwotICAgIGlmICghJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCkKLSAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdSZXF1ZXN0Q291bnROb3RTcGVjaWZpZWQnKTsKKyAgICAkYXJndW1lbnRz
ID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRhLCBhcnJheSgKKyAgICAgICAgJ2FkZENvdW50JyA9
PiAnaW50JywKKyAgICAgICAgJ2dyb3VwJyA9PiAnaW50JywKKyAgICAgICAgJ2NvbW1pdFNldCcg
PT4gJ2ludD8nLAorICAgICkpOwogCi0gICAgJHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGRh
dGEsICdncm91cCcpOwotICAgIGlmICghJHRlc3RfZ3JvdXBfaWQpCi0gICAgICAgIGV4aXRfd2l0
aF9lcnJvcignVGVzdEdyb3VwTm90U3BlY2lmaWVkJyk7CisgICAgJGFkZGl0aW9uYWxfYnVpbGRf
cmVxdWVzdF9jb3VudCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnYWRkQ291bnQnKTsKKyAgICAk
dGVzdF9ncm91cF9pZCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnZ3JvdXAnKTsKKyAgICAkY29t
bWl0X3NldF9pZCA9IGFycmF5X2dldCgkYXJndW1lbnRzLCAnY29tbWl0U2V0JywgTlVMTCk7CiAK
ICAgICAkdGVzdF9ncm91cCA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNfdGVzdF9n
cm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCkpOwogICAg
IGlmICghJHRlc3RfZ3JvdXApCkBAIC0yOCwzNSArMzAsMTIwIEBAIGZ1bmN0aW9uIG1haW4oKSB7
CiAgICAgaWYgKCRjdXJyZW50X29yZGVyIDwgMCkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdO
b1Rlc3RpbmdCdWlsZFJlcXVlc3RzJyk7CiAKLSAgICAkY29tbWl0X3NldHMgPSBhcnJheSgpOwor
ICAgICRyZXBldGl0aW9uX3R5cGUgPSAkdGVzdF9ncm91cFsndGVzdGdyb3VwX3JlcGV0aXRpb25f
dHlwZSddOworICAgIGFzc2VydChpbl9hcnJheSgkcmVwZXRpdGlvbl90eXBlLCBbJ2FsdGVybmF0
aW5nJywgJ3NlcXVlbnRpYWwnXSkpOworICAgICRpc19hbHRlcm5hdGluZ190eXBlID0gJHJlcGV0
aXRpb25fdHlwZSA9PSAnYWx0ZXJuYXRpbmcnOworICAgIGlmICgkaXNfYWx0ZXJuYXRpbmdfdHlw
ZSAmJiAkY29tbWl0X3NldF9pZCkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdDb21taXRTZXRO
b3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGluZ1JlcGV0aXRpb25UeXBlJyk7CisKKyAgICAkZXhpc3Rp
bmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3RzID0gYXJyYXlfZmlsdGVyKCRleGlzdGluZ19idWls
ZF9yZXF1ZXN0cywgZnVuY3Rpb24oJGJ1aWxkX3JlcXVlc3QpIHsKKyAgICAgICAgcmV0dXJuICRi
dWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ10gPj0gMDsKKyAgICB9KTsKKworICAgIGlmICgk
aXNfYWx0ZXJuYXRpbmdfdHlwZSkKKyAgICAgICAgYWRkX2J1aWxkX3JlcXVlc3RfZm9yX2FsdGVy
bmF0aW5nX3Rlc3RfZ3JvdXAoJGRiLCAkZXhpc3RpbmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3Rz
LCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVudF9vcmRlcik7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmICgkY29tbWl0X3NldF9pZCkKKyAgICAgICAgICAgIGFkZF9idWls
ZF9yZXF1ZXN0c19mb3Jfc3BlY2lmaWNfY29tbWl0X3NldF9pbl9zZXF1ZW50aWFsX3Rlc3RfZ3Jv
dXAoJGRiLCAkZXhpc3RpbmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9i
dWlsZF9yZXF1ZXN0X2NvdW50LCAkY29tbWl0X3NldF9pZCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFkZF9idWlsZF9yZXF1ZXN0c19mb3JfYWxsX2NvbW1pdF9zZXRzX2luX3NlcXVlbnRp
YWxfdGVzdF9ncm91cCgkZGIsICRleGlzdGluZ19idWlsZF9yZXF1ZXN0cywgJGFkZGl0aW9uYWxf
YnVpbGRfcmVxdWVzdF9jb3VudCwgJHRlc3RfZ3JvdXBfaWQpOworICAgIH0KKworICAgIGV4aXRf
d2l0aF9zdWNjZXNzKCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9idWlsZF9yZXF1ZXN0X2Zvcl9hbHRl
cm5hdGluZ190ZXN0X2dyb3VwKCRkYiwgJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRp
b25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkb3JkZXIpCit7CisgICAgJHRhcmdldF9jb21taXRf
c2V0cyA9IGFycmF5KCk7CiAgICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCA9IGFycmF5
KCk7CiAgICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzIGFzICRidWlsZF9yZXF1
ZXN0KSB7Ci0gICAgICAgIGlmICgkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9vcmRlciddIDwgMCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPSAk
YnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J107CiAgICAgICAgIGlmIChhcnJheV9r
ZXlfZXhpc3RzKCRyZXF1ZXN0ZWRfY29tbWl0X3NldCwgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0
X3NldCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgJGJ1aWxkX3JlcXVlc3RfYnlf
Y29tbWl0X3NldFskcmVxdWVzdGVkX2NvbW1pdF9zZXRdID0gJGJ1aWxkX3JlcXVlc3Q7Ci0gICAg
ICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRzLCAkcmVxdWVzdGVkX2NvbW1pdF9zZXQpOworICAg
ICAgICBhcnJheV9wdXNoKCR0YXJnZXRfY29tbWl0X3NldHMsICRyZXF1ZXN0ZWRfY29tbWl0X3Nl
dCk7CiAgICAgfQogCiAgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOwogICAgIGZvciAoJGkg
PSAwOyAkaSA8ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspIHsKLSAgICAg
ICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRzIGFzICRjb21taXRfc2V0KSB7CisgICAgICAgIGZvcmVh
Y2ggKCR0YXJnZXRfY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKICAgICAgICAgICAgICRi
dWlsZF9yZXF1ZXN0ID0gJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF07
Ci0gICAgICAgICAgICAkZGItPmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3Qn
LCBhcnJheSgKLSAgICAgICAgICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0
WydyZXF1ZXN0X3RyaWdnZXJhYmxlJ10sCi0gICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnlfZ3Jv
dXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXSwKLSAgICAg
ICAgICAgICAgICAncGxhdGZvcm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3Jt
J10sCi0gICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rl
c3QnXSwKLSAgICAgICAgICAgICAgICAnZ3JvdXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0
X2dyb3VwJ10sCi0gICAgICAgICAgICAgICAgJ29yZGVyJyA9PiArKyRjdXJyZW50X29yZGVyLAot
ICAgICAgICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9j
b21taXRfc2V0J10pKTsKKyAgICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9yZXF1ZXN0X3dpdGhf
bmV3X29yZGVyKCRkYiwgJGJ1aWxkX3JlcXVlc3QsICsrJG9yZGVyKTsKICAgICAgICAgfQogICAg
IH0KICAgICAkZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOworfQogCi0gICAgZXhpdF93aXRoX3N1
Y2Nlc3MoKTsKK2Z1bmN0aW9uIGFkZF9idWlsZF9yZXF1ZXN0c19mb3JfYWxsX2NvbW1pdF9zZXRz
X2luX3NlcXVlbnRpYWxfdGVzdF9ncm91cCgkZGIsICRleGlzdGluZ19idWlsZF9yZXF1ZXN0cywg
JGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCwgJHRlc3RfZ3JvdXBfaWQpCit7CisgICAg
JG9yZGVyX2luY3JlbWVudF9ieV9jb21taXRfc2V0ID0gYXJyYXkoKTsKKyAgICAkdGFyZ2V0X2Nv
bW1pdF9zZXRzID0gYXJyYXkoKTsKKyAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0ID0g
YXJyYXkoKTsKKyAgICBmb3JlYWNoICgkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMgYXMgJGN1cnJl
bnRfYnVpbGRfcmVxdWVzdCkgeworICAgICAgICAkY29tbWl0X3NldF9mb3JfY3VycmVudF9yZXF1
ZXN0ID0gJGN1cnJlbnRfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J107CisgICAg
ICAgICRpc19leGlzdGluZ19jb21taXRfc2V0ID0gYXJyYXlfa2V5X2V4aXN0cygkY29tbWl0X3Nl
dF9mb3JfY3VycmVudF9yZXF1ZXN0LCAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KTsKKyAg
ICAgICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF9mb3JfY3VycmVu
dF9yZXF1ZXN0XSA9ICRjdXJyZW50X2J1aWxkX3JlcXVlc3Q7CisgICAgICAgIGlmICgkaXNfZXhp
c3RpbmdfY29tbWl0X3NldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhcnJheV9w
dXNoKCR0YXJnZXRfY29tbWl0X3NldHMsICRjb21taXRfc2V0X2Zvcl9jdXJyZW50X3JlcXVlc3Qp
OworICAgICAgICAkb3JkZXJfaW5jcmVtZW50X2J5X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRfZm9y
X2N1cnJlbnRfcmVxdWVzdF0gPSAoY291bnQoJHRhcmdldF9jb21taXRfc2V0cykgLSAxKSAqICRh
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7CisgICAgfQorCisgICAgJGRiLT5iZWdpbl90
cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJG9yZGVyX2luY3JlbWVu
dF9ieV9jb21taXRfc2V0LCB0cnVlKSBhcyAkY29tbWl0X3NldCA9PiAkaW5jcmVtZW50KSB7Cisg
ICAgICAgIGlmICghJGluY3JlbWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAk
ZGItPnF1ZXJ5KCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3JkZXIgPSByZXF1
ZXN0X29yZGVyICsgJDEKKyAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfY29tbWl0X3NldCA9ICQy
IEFORCByZXF1ZXN0X2dyb3VwID0gJDMnLAorICAgICAgICAgICAgYXJyYXkoJGluY3JlbWVudCwg
JGNvbW1pdF9zZXQsICR0ZXN0X2dyb3VwX2lkKSk7CisgICAgfQorICAgIGZvcmVhY2ggKCR0YXJn
ZXRfY29tbWl0X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKKyAgICAgICAgJGN1cnJlbnRfYnVpbGRf
cmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAg
ICAgICAkcmVxdWVzdF9vcmRlciA9ICRjdXJyZW50X2J1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3Jk
ZXInXTsKKyAgICAgICAgJHJlcXVlc3Rfb3JkZXJfaW5jcmVtZW50YWwgPSBhcnJheV9nZXQoJG9y
ZGVyX2luY3JlbWVudF9ieV9jb21taXRfc2V0LCAkY29tbWl0X3NldCwgMCk7CisgICAgICAgIGZv
ciAoJGkgPSAwOyAkaSA8ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspCisg
ICAgICAgICAgICBkdXBsaWNhdGVfYnVpbGRfcmVxdWVzdF93aXRoX25ld19vcmRlcigkZGIsICRj
dXJyZW50X2J1aWxkX3JlcXVlc3QsICsrJHJlcXVlc3Rfb3JkZXIgKyAkcmVxdWVzdF9vcmRlcl9p
bmNyZW1lbnRhbCk7CisgICAgfQorICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7Cit9CisK
K2Z1bmN0aW9uIGFkZF9idWlsZF9yZXF1ZXN0c19mb3Jfc3BlY2lmaWNfY29tbWl0X3NldF9pbl9z
ZXF1ZW50aWFsX3Rlc3RfZ3JvdXAoJGRiLCAkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMsICRhZGRp
dGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICR0YXJnZXRfY29tbWl0X3NldF9pZCkKK3sKKyAg
ICAkZm91bmRfdGFyZ2V0ID0gZmFsc2U7CisgICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1aWxkX3Jl
cXVlc3RzIGFzICRjdXJyZW50X2J1aWxkX3JlcXVlc3QpIHsKKyAgICAgICAgaWYgKCRjdXJyZW50
X2J1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddID09ICR0YXJnZXRfY29tbWl0X3Nl
dF9pZCkgeworICAgICAgICAgICAgJGZvdW5kX3RhcmdldCA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoISRmb3VuZF90YXJnZXQpCisgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignTm9Db21taXRTZXRJblRlc3RHcm91cCcpOworCisgICAgJGRiLT5i
ZWdpbl90cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJGV4aXN0aW5n
X2J1aWxkX3JlcXVlc3RzLCB0cnVlKSBhcyAkY3VycmVudF9idWlsZF9yZXF1ZXN0KSB7CisgICAg
ICAgIGlmICgkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXSA9PSAk
dGFyZ2V0X2NvbW1pdF9zZXRfaWQpIHsKKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRh
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspCisgICAgICAgICAgICAgICAgZHVw
bGljYXRlX2J1aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3JkZXIoJGRiLCAkY3VycmVudF9idWlsZF9y
ZXF1ZXN0LCAkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ10gKyAkaSArIDEp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAkZGItPnF1ZXJ5KCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3JkZXIg
PSByZXF1ZXN0X29yZGVyICsgJDEgV0hFUkUgcmVxdWVzdF9pZCA9ICQyJywKKyAgICAgICAgICAg
ICAgICBhcnJheSgkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVudF9idWls
ZF9yZXF1ZXN0WydyZXF1ZXN0X2lkJ10pKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAkZGItPmNv
bW1pdF90cmFuc2FjdGlvbigpOworfQorCitmdW5jdGlvbiBkdXBsaWNhdGVfYnVpbGRfcmVxdWVz
dF93aXRoX25ld19vcmRlcigkZGIsICRidWlsZF9yZXF1ZXN0LCAkb3JkZXJfb3ZlcndyaXRlKQor
eworICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5
KAorICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3RyaWdn
ZXJhYmxlJ10sCisgICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVzdFsn
cmVxdWVzdF9yZXBvc2l0b3J5X2dyb3VwJ10sCisgICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1aWxk
X3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwKKyAgICAgICAgJ3Rlc3QnID0+ICRidWlsZF9y
ZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwKKyAgICAgICAgJ2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVz
dFsncmVxdWVzdF9ncm91cCddLAorICAgICAgICAnb3JkZXInID0+ICRvcmRlcl9vdmVyd3JpdGUs
CisgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J10pKTsKIH0KIAogbWFpbigpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNp
cy10YXNrLnBocAppbmRleCAyOGExNjEzMDA4NGU4YzRkYWUxNGJkMjlmNTBmZmU4YmNkZThhYzk0
Li4yZGM3NDdjYmRlMjY3OWUzZjk2YWQ1OTAwYjA2ZGYzMmEzNzhlMWEzIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFs
eXNpcy10YXNrLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocApAQCAtMTAsNiArMTAsNyBAQCBmdW5j
dGlvbiBtYWluKCkgewogICAgICRhdXRob3IgPSByZW1vdGVfdXNlcl9uYW1lKCRkYXRhKTsKICAg
ICAkbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ25hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3Vu
dCA9IGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25Db3VudCcpOworICAgICRyZXBldGl0aW9u
X3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGluZycp
OwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05vdGlm
aWNhdGlvbicsIEZhbHNlKTsKICAgICAkdGVzdF9ncm91cF9uYW1lID0gYXJyYXlfZ2V0KCRkYXRh
LCAndGVzdEdyb3VwTmFtZScpOwogICAgICRyZXZpc2lvbl9zZXRfbGlzdCA9IGFycmF5X2dldCgk
ZGF0YSwgJ3JldmlzaW9uU2V0cycpOwpAQCAtMjAsNiArMjEsOSBAQCBmdW5jdGlvbiBtYWluKCkg
ewogICAgIGlmICghJG5hbWUpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ05hbWUn
LCBhcnJheSgnbmFtZScgPT4gJG5hbWUpKTsKIAorICAgIGlmICghaW5fYXJyYXkoJHJlcGV0aXRp
b25fdHlwZSwgYXJyYXkoJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnKSkpCisgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25UeXBlJywgYXJyYXkoJ3JlcGV0aXRpb25U
eXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2YWxpZGF0ZV9hcmd1
bWVudHMoJGRhdGEsIGFycmF5KCdzdGFydFJ1bicgPT4gJ2ludCcsICdlbmRSdW4nID0+ICdpbnQn
KSk7CiAKICAgICAkc3RhcnRfcnVuID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIsICd0ZXN0X3J1bnMn
LCAncnVuJywgJHJhbmdlWydzdGFydFJ1biddLCAnSW52YWxpZFN0YXJ0UnVuJywgJHJhbmdlKTsK
QEAgLTg1LDcgKzg5LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgJHRyaWdnZXJhYmxl
X2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwogICAgICAgICAkdGVzdF9pZCA9ICR0cmlnZ2VyYWJs
ZVsndGVzdCddOwogICAgICAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0c19mcm9tX3Jldmlz
aW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdCk7Ci0gICAg
ICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0
cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwg
JGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwg
JG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWls
ZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUs
ICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0
ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwgJG5lZWRzX25vdGlm
aWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzQyNTNmYmU3ODY1OWJhMmY2
ZTA5OTkzMzEwMWJiOGEyOWYzMTFkZS4uZDIzYjJmZjk2NjgxYzhmYTg4ZWMwZjk3M2QxMGViZmYz
NzI4ODg1MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKQEAgLTE4
LDYgKzE4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRhc2tfaWQgPSBhcnJheV9nZXQoJGFy
Z3VtZW50cywgJ3Rhc2snKTsKICAgICAkdGFza19uYW1lID0gYXJyYXlfZ2V0KCRkYXRhLCAndGFz
a05hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3VudCA9ICRhcmd1bWVudHNbJ3JlcGV0aXRpb25D
b3VudCddOworICAgICRyZXBldGl0aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0
aW9uVHlwZScsICdhbHRlcm5hdGluZycpOwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJh
eV9nZXQoJGRhdGEsICduZWVkc05vdGlmaWNhdGlvbicsIEZhbHNlKTsKICAgICAkcGxhdGZvcm1f
aWQgPSBhcnJheV9nZXQoJGRhdGEsICdwbGF0Zm9ybScpOwogICAgICR0ZXN0X2lkID0gYXJyYXlf
Z2V0KCRkYXRhLCAndGVzdCcpOwpAQCAtNDIsNiArNDMsOSBAQCBmdW5jdGlvbiBtYWluKCkKICAg
ICBlbHNlIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdyZXBldGl0aW9uQ291bnQnID0+ICRy
ZXBldGl0aW9uX2NvdW50KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUs
IGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdyZXBldGl0aW9uVHlwZScgPT4g
JHJlcGV0aXRpb25fdHlwZSkpOworCiAgICAgJHRyaWdnZXJhYmxlX2lkID0gTlVMTDsKICAgICBp
ZiAoJHRhc2tfaWQpIHsKICAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2Fu
YWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lkKSk7CkBAIC04Niw3
ICs5MCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgIGlmICgkdGFza19uYW1lKQogICAgICAgICAk
dGFza19pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGFza3MnLCAndGFzaycsIGFycmF5
KCduYW1lJyA9PiAkdGFza19uYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7CiAKLSAgICAkZ3Jv
dXBfaWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0
X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZv
cm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlvbik7
CisgICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRk
YiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9u
X3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rp
b24oKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAppbmRleCAzNTVl
NmM4NWYxMjNiMmMzNTQ0NzExYmZiNjE3NDAwMDc5Mzc2OWFjLi4zMTc1ZDcxMGE3YzdjNjQ1NGJm
Yjc5NjE2ZWRlZDY4MzI5MzlmOTQ0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAorKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdy
b3VwLnBocApAQCAtMjAsNiArMjAsOSBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICAkdmFs
dWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKICAgICB9CiAKKyAgICBpZiAo
YXJyYXlfa2V5X2V4aXN0cygnY2FuY2VsJywgJGRhdGEpKQorICAgICAgICAkdmFsdWVzWydtYXlf
bmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKKwogICAgIGlmIChhcnJheV9rZXlfZXhpc3Rz
KCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgJGRhdGEpKQogICAgICAgICAgJHZhbHVlc1snbWF5X25l
ZWRfbW9yZV9yZXF1ZXN0cyddID0gJGRhdGFbJ21heU5lZWRNb3JlUmVxdWVzdHMnXTsKIApAQCAt
NDQsNyArNDcsNyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J0ZhaWxlZFRvVXBkYXRlVGVzdEdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCwg
J3ZhbHVlcycgPT4gJHZhbHVlcykpOwogICAgIH0KIAotICAgIGlmIChhcnJheV9nZXQoJGRhdGEs
ICdoaWRkZW4nKSkgeworICAgIGlmIChhcnJheV9nZXQoJGRhdGEsICdoaWRkZW4nKSB8fCBhcnJh
eV9nZXQoJGRhdGEsICdjYW5jZWwnKSkgewogICAgICAgICAkZGItPnF1ZXJ5X2FuZF9nZXRfYWZm
ZWN0ZWRfcm93cygnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X3N0YXR1cyA9ICQx
CiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2dyb3VwID0gJDIgQU5EIHJlcXVlc3Rfc3RhdHVz
ID0gJDMnLCBhcnJheSgnY2FuY2VsZWQnLCAkdGVzdF9ncm91cF9pZCwgJ3BlbmRpbmcnKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQv
Y29tbW9uLWNvbXBvbmVudC1iYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCmluZGV4IGM1NmUyYjAwOTE3MThjMDkw
NzI3NzE2MjQ0NWY3YzllZTdhNDg5MmQuLmJkNzE3MTdkMjhmNTE2ZjkwOTc2ZGE5OWYxYjMzNDdi
OGFhNjM4YzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hh
cmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKQEAgLTEzNSwxMiArMTM1
LDEyIEBAIGNsYXNzIENvbW1vbkNvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgZWxlbWVudC5h
cHBlbmRDaGlsZChDb21tb25Db21wb25lbnRCYXNlLl9jb250ZXh0LmNyZWF0ZVRleHROb2RlKGNv
bnRlbnQpKTsKICAgICB9CiAKLSAgICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFj
aywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCisgICAgY3JlYXRlTGluayhj
b250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleCA9
IG51bGwpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbW9uQ29tcG9uZW50QmFzZS5jcmVhdGVM
aW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYklu
ZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2Fs
bGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQorICAgIHN0YXRpYyBj
cmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWws
IHRhYkluZGV4ID0gbnVsbCkKICAgICB7CiAgICAgICAgIHZhciB0aXRsZSA9IHRpdGxlT3JDYWxs
YmFjazsKICAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29u
ZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3Jt
LmpzCmluZGV4IDg3YjE3YzE0NmQ0NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4ZTRjNjkuLjJmYmRh
YjNlMmQwNjYwY2Y2N2ZhZGRlZjA1MTQ5YzA4YmExNzY2MTkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlv
bi10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcwpA
QCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDdXN0b21Db25maWd1cmF0aW9uVGVzdEdyb3VwRm9ybSBl
eHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICBjb25zdCB0ZXN0ID0gY29uZmlndXJhdG9y
LnRlc3RzKClbMF07IC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgbXVs
dGlwbGUgdGVzdHMuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5faGFzVGFzayA9PT0g
IXRhc2tOYW1lKTsKICAgICAgICAgaWYgKCF0aGlzLl9oYXNUYXNrKQotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0
ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIHRoaXMu
X25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCB0ZXN0R3JvdXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMu
X3JlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5
T25Db21wbGV0aW9uLCB0YXNrTmFtZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVz
dEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9uQ29t
cGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3Rpbmcn
LCB0ZXN0R3JvdXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX3JlcGV0aXRpb25U
eXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9u
KTsKICAgICB9CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUt
dGVzdC1ncm91cC1mb3JtLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9j
b21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggMDgxY2E5ZDI3
ZDNkYjhjOTMyMGRiMDI4MjA3MmU1NzIxZDdkZjZhYy4uMWYzNzA1MDUzYmU0ODUwNzg2MWEzZGUz
MGFhNThmYWU1MTUyZDgwZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJs
ZS10ZXN0LWdyb3VwLWZvcm0uanMKQEAgLTI3LDcgKzI3LDggQEAgY2xhc3MgQ3VzdG9taXphYmxl
VGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogCiAgICAgc3RhcnRUZXN0aW5n
KCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRo
aXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbmFtZSwgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1h
cCgpLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLmRpc3BhdGNoQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9uYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRo
aXMuX3JlcGV0aXRpb25UeXBlLAorICAgICAgICAgICAgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1h
cCgpLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOwogICAgIH0KIAogICAgIGRpZENvbnN0cnVj
dFNoYWRvd1RyZWUoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggYTQzZWRm
MzUwOGJjZjA3NDYyNWRiOTk2NGY2MDRkZTE4MDgyOTY0Zi4uOTg5MjQxMDEwOTk2ZWMzNDI0M2Jh
MTJlODVjYjI1ZjBjZWEwODA2YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCkBA
IC0yNyw3ICsyNyw4IEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKIAogICAgIHN0YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX25vdGlmeU9u
Q29tcGxldGlvbik7CisgICAgICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlU2VsZWN0ID0gdGhpcy5j
b250ZW50KCdyZXBldGl0aW9uLXR5cGUnKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbign
c3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZVNlbGVj
dC52YWx1ZSwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICB9CiAKICAgICBzdGF0aWMg
aHRtbFRlbXBsYXRlKCkKQEAgLTY1LDcgKzY2LDExIEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICA8b3B0aW9uPjk8L29wdGlvbj4K
ICAgICAgICAgICAgICAgICA8b3B0aW9uPjEwPC9vcHRpb24+CiAgICAgICAgICAgICA8L3NlbGVj
dD4KLSAgICAgICAgICAgIGl0ZXJhdGlvbnMgcGVyIHNldAorICAgICAgICAgICAgPGxhYmVsPml0
ZXJhdGlvbnMgcGVyIHNldCBpbjwvbGFiZWw+CisgICAgICAgICAgICA8c2VsZWN0IGlkPSJyZXBl
dGl0aW9uLXR5cGUiPgorICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9ImFs
dGVybmF0aW5nIj5hbHRlcm5hdGUgKEFCQUIpPC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0ic2VxdWVudGlhbCI+c2VxdWVuY2UgKEFBQkIpPC9vcHRpb24+CisgICAgICAg
ICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgIDxpbnB1dCBpZD0ibm90aWZ5LW9uLWNvbXBsZXRp
b24tY2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkLz5Ob3RpZnkgb24gY29tcGxldGlv
bgogICAgICAgICBgOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCmluZGV4IDE3NzZhODE3YmMz
MTk5NjkyOTcyYTQwYWE0ZWQ2OGMxYTk1Y2RlZWUuLjZhMDg1Y2FjZTJjNzU3ZTg5MzgyZGRmZWEx
MDUxMDk3MzU5ZmFhMGQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcwpAQCAtMzI0LDcgKzMyNCw3IEBA
IGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1
cm4gcmVzdWx0czsKICAgICB9CiAKLSAgICBzdGF0aWMgYXN5bmMgY3JlYXRlKG5hbWUsIHN0YXJ0
UG9pbnQsIGVuZFBvaW50LCB0ZXN0R3JvdXBOYW1lPW51bGwsIHJlcGV0aXRpb25Db3VudD0wLCBu
b3RpZnlPbkNvbXBsZXRpb249ZmFsc2UpCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZShuYW1lLCBz
dGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdyb3VwTmFtZSA9IG51bGwsIHJlcGV0aXRpb25Db3Vu
dCA9IDAsIHJlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJywgbm90aWZ5T25Db21wbGV0aW9u
ID0gZmFsc2UpCiAgICAgewogICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge25hbWUsIHN0YXJ0
UnVuOiBzdGFydFBvaW50LmlkLCBlbmRSdW46IGVuZFBvaW50LmlkfTsKICAgICAgICAgaWYgKHRl
c3RHcm91cE5hbWUpIHsKQEAgLTMzMyw2ICszMzMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0
ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlcGV0aXRpb25D
b3VudCddID0gcmVwZXRpdGlvbkNvdW50OwogICAgICAgICAgICAgcGFyYW1ldGVyc1sndGVzdEdy
b3VwTmFtZSddID0gdGVzdEdyb3VwTmFtZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ25lZWRz
Tm90aWZpY2F0aW9uJ10gPSBub3RpZnlPbkNvbXBsZXRpb247CisgICAgICAgICAgICBwYXJhbWV0
ZXJzWydyZXBldGl0aW9uVHlwZSddID0gcmVwZXRpdGlvblR5cGU7CiAgICAgICAgIH0KICAgICAg
ICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtYW5hbHlzaXMtdGFzaycsIHBhcmFtZXRlcnMpOwogICAgICAgICByZXR1cm4gQW5hbHlzaXNU
YXNrLmZldGNoQnlJZChyZXNwb25zZS50YXNrSWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMK
aW5kZXggZjA5NWUwZDdhYmU4NmEwMjY1MjE1MTYxMjc4NGQyMWQxMDNhNTYxNi4uODIzMDI2NmE2
NGQ2NDEwNTdkOWZmMGI3NGZiOGE5YzNkMzIyM2E3YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBA
IC0xOCw3ICsxOCw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVj
dCB7CiAgICAgICAgIHRoaXMuX3BsYXRmb3JtID0gb2JqZWN0LnBsYXRmb3JtOwogICAgICAgICBj
b25zb2xlLmFzc2VydCghb2JqZWN0LnRlc3QgfHwgb2JqZWN0LnRlc3QgaW5zdGFuY2VvZiBUZXN0
KTsKICAgICAgICAgdGhpcy5fdGVzdCA9IG9iamVjdC50ZXN0OwotICAgICAgICB0aGlzLl9vcmRl
ciA9IG9iamVjdC5vcmRlcjsKKyAgICAgICAgdGhpcy5fb3JkZXIgPSArb2JqZWN0Lm9yZGVyOwog
ICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QuY29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0
U2V0KTsKICAgICAgICAgdGhpcy5fY29tbWl0U2V0ID0gb2JqZWN0LmNvbW1pdFNldDsKICAgICAg
ICAgdGhpcy5fc3RhdHVzID0gb2JqZWN0LnN0YXR1czsKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3Mg
QnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKIAogICAgIHVwZGF0ZVNpbmds
ZXRvbihvYmplY3QpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vcmRlciA9
PSBvYmplY3Qub3JkZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydCgrdGhpcy5fb3JkZXIgPD0g
K29iamVjdC5vcmRlcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbW1pdFNldCA9
PSBvYmplY3QuY29tbWl0U2V0KTsKIAogICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBvYmplY3Qu
dGVzdEdyb3VwOwpAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBE
YXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9zdGF0dXNVcmwgPSBvYmplY3QudXJsOwog
ICAgICAgICB0aGlzLl9idWlsZElkID0gb2JqZWN0LmJ1aWxkOwogICAgICAgICB0aGlzLl9zdGF0
dXNEZXNjcmlwdGlvbiA9IG9iamVjdC5zdGF0dXNEZXNjcmlwdGlvbjsKKyAgICAgICAgdGhpcy5f
b3JkZXIgPSArb2JqZWN0Lm9yZGVyOwogICAgIH0KIAogICAgIHRyaWdnZXJhYmxlKCkgeyByZXR1
cm4gdGhpcy5fdHJpZ2dlcmFibGU7IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCmluZGV4IDk3ZThiYzhlZTNjZGE5
YTZmNjQxNjIzNTM0ZTY3ZmI4MDAzOTk4MmIuLmI3ZGYwMTc1YmM4Y2NlNWUyOGFhMTMwNGFjMGM5
NWNmNDFlN2M4ZjUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwpAQCAtMTEsNyArMTEsOCBAQCBjbGFzcyBUZXN0
R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBv
YmplY3QuaGlkZGVuOwogICAgICAgICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5u
ZWVkc05vdGlmaWNhdGlvbjsKICAgICAgICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IG9i
amVjdC5tYXlOZWVkTW9yZVJlcXVlc3RzOwotICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlv
bkNvdW50ID0gb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX2lu
aXRpYWxSZXBldGl0aW9uQ291bnQgPSArb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7Cisg
ICAgICAgIHRoaXMuX3JlcGV0aXRpb25UeXBlID0gb2JqZWN0LnJlcGV0aXRpb25UeXBlOwogICAg
ICAgICB0aGlzLl9idWlsZFJlcXVlc3RzID0gW107CiAgICAgICAgIHRoaXMuX29yZGVyQnVpbGRS
ZXF1ZXN0c0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYnVpbGRSZXF1
ZXN0cykgPT4gewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVxdWVzdHMuc29ydCgoYSwgYikg
PT4gYS5vcmRlcigpIC0gYi5vcmRlcigpKTsKQEAgLTM2LDcgKzM3LDggQEAgY2xhc3MgVGVzdEdy
b3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0
aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9ub3RpZmljYXRp
b25TZW50QXQgPSBvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0ID8gbmV3IERhdGUob2JqZWN0Lm5v
dGlmaWNhdGlvblNlbnRBdCkgOiBudWxsOwogICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVl
c3RzID0gb2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7Ci0gICAgICAgIHRoaXMuX2luaXRpYWxS
ZXBldGl0aW9uQ291bnQgPSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAgICAg
dGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25D
b3VudDsKKyAgICAgICAgdGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5
cGU7CiAgICAgfQogCiAgICAgdGFzaygpIHsgcmV0dXJuIEFuYWx5c2lzVGFzay5maW5kQnlJZCh0
aGlzLl90YXNrSWQpOyB9CkBAIC00Niw2ICs0OCw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRz
IExhYmVsZWRPYmplY3QgewogICAgIG5lZWRzTm90aWZpY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5f
bmVlZHNOb3RpZmljYXRpb247IH0KICAgICBtYXlOZWVkTW9yZVJlcXVlc3RzKCkgeyByZXR1cm4g
dGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0czsgfQogICAgIGluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSB7IHJldHVybiB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50OyB9CisgICAgcmVwZXRpdGlv
blR5cGUoKSB7IHJldHVybiB0aGlzLl9yZXBldGl0aW9uVHlwZTsgfQogICAgIG5vdGlmaWNhdGlv
blNlbnRBdCgpIHsgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvblNlbnRBdDsgfQogICAgIGF1dGhv
cigpIHsgcmV0dXJuIHRoaXMuX2F1dGhvck5hbWU7IH0KICAgICBhZGRCdWlsZFJlcXVlc3QocmVx
dWVzdCkKQEAgLTgxLDExICs4NCwxMCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVk
T2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29yZGVyQnVpbGRSZXF1ZXN0c0xhemlseS5l
dmFsdWF0ZSguLi50aGlzLl9idWlsZFJlcXVlc3RzKTsKICAgICB9CiAKLSAgICByZXBldGl0aW9u
Q291bnQoKQorICAgIHJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2J1aWxkUmVxdWVzdHMubGVuZ3RoKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHRoaXMuX2J1aWxkUmVxdWVzdHNb
MF0uY29tbWl0U2V0KCk7CiAgICAgICAgIGxldCBjb3VudCA9IDA7CiAgICAgICAgIGZvciAoY29u
c3QgcmVxdWVzdCBvZiB0aGlzLl9idWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAgICBpZiAocmVx
dWVzdC5pc1Rlc3QoKSAmJiByZXF1ZXN0LmNvbW1pdFNldCgpID09IGNvbW1pdFNldCkKQEAgLTk0
LDYgKzk2LDExMCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAg
ICAgICAgcmV0dXJuIGNvdW50OwogICAgIH0KIAorICAgIGhhc1JldHJpZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+
IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiB0aGlzLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgfQorCisgICAgd2lsbEV4Y2VlZFJldHJ5TGltaXRX
aXRoUmV0cnlDb3VudChjb21taXRTZXQsIHJldHJ5Q291bnQsIHJldHJ5TGltaXQpCisgICAgewor
ICAgICAgICByZXR1cm4gcmV0cnlDb3VudCArIHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0
U2V0KGNvbW1pdFNldCkgPiByZXRyeUxpbWl0OworICAgIH0KKworICAgIGFkZGl0aW9uYWxSZXBl
dGl0aW9uTmVlZGVkVG9SZWFjaEluaXRpYWxSZXBldGl0aW9uQ291bnQoY29tbWl0U2V0KQorICAg
IHsKKyAgICAgICAgY29uc3QgcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQgPSB0aGlzLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKAorICAgICAgICAgICAgKHJlcXVlc3Qp
ID0+IHJlcXVlc3QuaXNUZXN0KCkgJiYgKHJlcXVlc3QuaGFzQ29tcGxldGVkKCkgfHwgIXJlcXVl
c3QuaGFzRmluaXNoZWQoKSkpLmxlbmd0aDsKKyAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRo
aXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIC0gcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQp
OworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50KGNvbW1pdFNldCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCku
ZmlsdGVyKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuaGFzQ29tcGxl
dGVkKCkpLmxlbmd0aAorICAgIH0KKworICAgIGlzRmlyc3RUZXN0UmVxdWVzdChidWlsZFJlcXVl
c3QpCisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMuX29yZGVyZWRCdWlsZFJlcXVlc3RzKCku
ZmlsdGVyKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpKS5pbmRleE9mKGJ1aWxkUmVxdWVz
dCk7CisgICAgfQorCisgICAgcHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxkUmVxdWVzdCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IG9yZGVyZWRCdWlsZFJlcXVlc3RzID0gdGhpcy5fb3JkZXJlZEJ1
aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0SW5kZXggPSBvcmRlcmVk
QnVpbGRSZXF1ZXN0cy5pbmRleE9mKGJ1aWxkUmVxdWVzdCk7CisgICAgICAgIGlmIChidWlsZFJl
cXVlc3RJbmRleCA8IDEpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJu
IG9yZGVyZWRCdWlsZFJlcXVlc3RzW2J1aWxkUmVxdWVzdEluZGV4IC0gMV07CisgICAgfQorCisg
ICAgcmV0cnlDb3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSAtIHRoaXMuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpOworICAgIH0KKworICAgIHJldHJ5Q291bnRzQXJlU2FtZUZv
ckFsbENvbW1pdFNldHMoKQorICAgIHsKKyAgICAgICAgY29uc3QgcmV0cnlDb3VudEZvckZpcnN0
Q29tbWl0U2V0ID0gdGhpcy5yZXRyeUNvdW50Rm9yQ29tbWl0U2V0KHRoaXMucmVxdWVzdGVkQ29t
bWl0U2V0cygpWzBdKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygp
LmV2ZXJ5KGNvbW1pdFNldCA9PiB0aGlzLnJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0
KSA9PSByZXRyeUNvdW50Rm9yRmlyc3RDb21taXRTZXQpOworICAgIH0KKworICAgIGFzeW5jIF9j
cmVhdGVBbHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3JvdXAobWF4UmV0cnlGYWN0b3IpCisgICAg
eworICAgICAgICBjb25zdCBkb05vdENsZWFyTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcgPSBOYU47
CisgICAgICAgIGNvbnN0IHJldHJ5TGltaXQgPSBtYXhSZXRyeUZhY3RvciAqIHRoaXMuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpOworICAgICAgICBjb25zdCBhZGRpdGlvbmFsUmVwZXRpdGlvbk5l
ZWRlZCA9IE1hdGgubWF4KC4uLnRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLm1hcCgKKyAgICAg
ICAgICAgIHRoaXMuYWRkaXRpb25hbFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0
aXRpb25Db3VudC5iaW5kKHRoaXMpKSk7CisgICAgICAgIGNvbnN0IHdpbGxFeGNlZWRSZXRyeUxp
bWl0ID0gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCkuc29tZShjb21taXRTZXQgPT4KKyAgICAg
ICAgICAgIHRoaXMud2lsbEV4Y2VlZFJldHJ5TGltaXRXaXRoUmV0cnlDb3VudChjb21taXRTZXQs
IGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkLCByZXRyeUxpbWl0KSk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkIDw9IHRoaXMuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpKTsKKworICAgICAgICBpZiAoIWFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVk
IHx8IHdpbGxFeGNlZWRSZXRyeUxpbWl0KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAg
ICAgY29uc3QgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRoaXMucmVxdWVzdGVkQ29tbWl0
U2V0cygpLnNvbWUoKHNldCkgPT4KKyAgICAgICAgICAgIHRoaXMucmVxdWVzdHNGb3JDb21taXRT
ZXQoc2V0KS5zb21lKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpICYmICFyZXF1ZXN0Lmhh
c0ZpbmlzaGVkKCkpKTsKKworICAgICAgICBjb25zdCBlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVk
QXRMZWFzdE9uZVRlc3QgPSB0aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKS5ldmVyeSh0aGlzLnN1
Y2Nlc3NmdWxUZXN0UmVxdWVzdENvdW50LmJpbmQodGhpcykpOworCisgICAgICAgIGlmIChoYXNV
bmZpbmlzaGVkQnVpbGRSZXF1ZXN0ICYmICFlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVkQXRMZWFz
dE9uZVRlc3QpCisgICAgICAgICAgICByZXR1cm4gZG9Ob3RDbGVhck1heU5lZWRNb3JlUmVxdWVz
dHNGbGFnOworCisgICAgICAgIGlmKCFlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVkQXRMZWFzdE9u
ZVRlc3QpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBhd2FpdCB0aGlzLmFkZE1v
cmVCdWlsZFJlcXVlc3RzKGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkKTsKKyAgICAgICAgcmV0
dXJuIGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkOworICAgIH0KKworICAgIGFzeW5jIF9jcmVh
dGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAgICB7Cisg
ICAgICAgIGNvbnN0IHJldHJ5TGltaXQgPSBtYXhSZXRyeUZhY3RvciAqIHRoaXMuaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpOworICAgICAgICBjb25zdCBsYXN0SXRlbSA9IChhcnJheSkgPT4gYXJy
YXlbYXJyYXkubGVuZ3RoIC0gMV07CisgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSB0aGlzLnJl
cXVlc3RlZENvbW1pdFNldHMoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5l
dmVyeSgoY3VycmVudFNldCwgaW5kZXgpID0+CisgICAgICAgICAgICAhaW5kZXggfHwgbGFzdEl0
ZW0odGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXRzW2luZGV4IC0gMV0pKS5vcmRl
cigpIDwgdGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjdXJyZW50U2V0KVswXS5vcmRlcigpKSk7
CisKKyAgICAgICAgY29uc3QgYWxsVGVzdFJlcXVlc3RzSGF2ZUZhaWxlZEZvclNvbWVDb21taXRT
ZXQgPSBjb21taXRTZXRzLnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAgICAgICB0aGlzLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKHJlcXVlc3QgPT4gcmVxdWVzdC5pc1Rl
c3QoKSkuZXZlcnkocmVxdWVzdCA9PiByZXF1ZXN0Lmhhc0ZhaWxlZCgpKSk7CisKKyAgICAgICAg
aWYgKGFsbFRlc3RSZXF1ZXN0c0hhdmVGYWlsZWRGb3JTb21lQ29tbWl0U2V0KQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgY29tbWl0U2V0
cykgeworICAgICAgICAgICAgaWYgKHRoaXMuc3VjY2Vzc2Z1bFRlc3RSZXF1ZXN0Q291bnQoY29t
bWl0U2V0KSA+PSB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxSZXBldGl0aW9uID0gdGhp
cy5hZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRlZFRvUmVhY2hJbml0aWFsUmVwZXRpdGlvbkNvdW50
KGNvbW1pdFNldCk7CisgICAgICAgICAgICBpZiAodGhpcy53aWxsRXhjZWVkUmV0cnlMaW1pdFdp
dGhSZXRyeUNvdW50KGNvbW1pdFNldCwgYWRkaXRpb25hbFJlcGV0aXRpb24sIHJldHJ5TGltaXQp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhd2FpdCB0aGlzLmFk
ZE1vcmVCdWlsZFJlcXVlc3RzKGFkZGl0aW9uYWxSZXBldGl0aW9uLCBjb21taXRTZXQpOworICAg
ICAgICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworICAg
ICAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxSZXBldGl0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmVxdWVzdGVkQ29tbWl0U2V0cygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHNMYXppbHkuZXZh
bHVhdGUoLi4udGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKSk7CkBAIC0xMDIsNyArMjA4LDYg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgc3RhdGljIF9j
b21wdXRlUmVxdWVzdGVkQ29tbWl0U2V0cyguLi5vcmRlcmVkQnVpbGRSZXF1ZXN0cykKICAgICB7
CiAgICAgICAgIGNvbnN0IHJlcXVlc3RlZENvbW1pdFNldHMgPSBbXTsKLSAgICAgICAgY29uc3Qg
Y29tbWl0U2V0TGFiZWxNYXAgPSBuZXcgTWFwOwogICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qg
b2Ygb3JkZXJlZEJ1aWxkUmVxdWVzdHMpIHsKICAgICAgICAgICAgIGNvbnN0IHNldCA9IHJlcXVl
c3QuY29tbWl0U2V0KCk7CiAgICAgICAgICAgICBpZiAoIXJlcXVlc3RlZENvbW1pdFNldHMuaW5j
bHVkZXMoc2V0KSkKQEAgLTIxOSw2NCArMzI0LDEwMyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5k
cyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXN5bmMgZGlkU2Vu
ZE5vdGlmaWNhdGlvbigpCisgICAgYXN5bmMgY2FuY2VsUGVuZGluZ1JlcXVlc3RzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAg
ICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKKyAgICAgICAgICAgIGNhbmNlbDogdHJ1ZSwKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgYXN5bmMgZGlkU2VuZE5vdGlmaWNhdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKICAgICAgICAgICAgIGdy
b3VwOiB0aGlzLmlkKCksCiAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsCiAg
ICAgICAgICAgICBub3RpZmljYXRpb25TZW50QXQ6IChuZXcgRGF0ZSkudG9JU09TdHJpbmcoKQog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRD
b3VudCkKKyAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRDb3VudCwgY29tbWl0U2V0
ID0gbnVsbCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb21taXRTZXQgfHwgdGhp
cy5yZXBldGl0aW9uVHlwZSgpID09ICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFjb21taXRTZXQgfHwgY29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKICAgICAg
ICAgcmV0dXJuIGF3YWl0IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CiAgICAgICAgICAgICBn
cm91cDogdGhpcy5pZCgpLAogICAgICAgICAgICAgYWRkQ291bnQsCisgICAgICAgICAgICBjb21t
aXRTZXQ6IGNvbW1pdFNldCA/IGNvbW1pdFNldC5pZCgpIDogbnVsbAogICAgICAgICB9LCAnYWRk
LWJ1aWxkLXJlcXVlc3RzJyk7CiAgICAgfQogCiAgICAgYXN5bmMgY2xlYXJNYXlOZWVkTW9yZUJ1
aWxkUmVxdWVzdHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3VwZGF0ZUJ1
aWxkUmVxdWVzdCh7CisgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3Qoewog
ICAgICAgICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKICAgICAgICAgICAgIG1heU5lZWRNb3JlUmVx
dWVzdHM6IGZhbHNlCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVXaXRo
VGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50
LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNyZWF0
ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9u
Q291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsKICAg
ICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21Db21t
aXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFza05hbWUsIG5h
bWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwg
cmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlm
eU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFtcykudGhlbigoZGF0YSkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsndGFza0lkJ10sIHRydWUpOwot
ICAgICAgICB9KS50aGVuKCh0YXNrKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRj
aEZvclRhc2sodGFzay5pZCgpKS50aGVuKCgpID0+IHRhc2spOwotICAgICAgICB9KTsKKyAgICAg
ICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10
ZXN0LWdyb3VwJywgeworICAgICAgICAgICAgdGFza05hbWUsIG5hbWU6IGdyb3VwTmFtZSwgcGxh
dGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCBy
ZXZpc2lvblNldHMsCisgICAgICAgICAgICByZXBldGl0aW9uVHlwZSwgbmVlZHNOb3RpZmljYXRp
b246ICEhbm90aWZ5T25Db21wbGV0aW9ufSk7CisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBB
bmFseXNpc1Rhc2suZmV0Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXdh
aXQgdGhpcy5mZXRjaEZvclRhc2sodGFzay5pZCgpKTsKKyAgICAgICAgcmV0dXJuIHRhc2s7CiAg
ICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRhc2ssIHBs
YXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90
aWZ5T25Db21wbGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmln
dXJhdGlvbih0YXNrLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQs
IHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsKICAgICAgICAg
Y29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21Db21taXRTZXRz
KGNvbW1pdFNldHMpOwotICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFzazogdGFzay5pZCgpLCBu
YW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCks
IHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3Rp
ZnlPbkNvbXBsZXRpb259OwotICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMpLnRoZW4oKGRhdGEpID0+IHsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7Ci0gICAg
ICAgIH0pOworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCks
IG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQo
KSwgcmVwZXRpdGlvbkNvdW50LAorICAgICAgICAgICAgcmV2aXNpb25TZXRzLCByZXBldGl0aW9u
VHlwZSwgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9ufSk7CisgICAgICAg
IGF3YWl0IHRoaXMuZmV0Y2hCeUlkKGRhdGFbJ3Rlc3RHcm91cElkJ10sIHRydWUpOworICAgICAg
ICByZXR1cm4gdGhpcy5maW5kQWxsQnlUYXNrKGRhdGFbJ3Rhc2tJZCddKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFtZSwgcmVwZXRpdGlv
bkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5j
IGNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBj
b25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMo
Y29tbWl0U2V0cyk7Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdj
cmVhdGUtdGVzdC1ncm91cCcsIHsKLSAgICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwKLSAgICAg
ICAgICAgIG5hbWU6IG5hbWUsCi0gICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IHJlcGV0aXRp
b25Db3VudCwKLSAgICAgICAgICAgIHJldmlzaW9uU2V0czogcmV2aXNpb25TZXRzLAotICAgICAg
ICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9uLAotICAgICAgICB9
KS50aGVuKChkYXRhKSA9PiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSkp
OworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCksIG5hbWUs
IHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlwZSwKKyAgICAgICAg
ICAgIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbgorICAgICAgICB9KTsK
KyAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEJ5SWQoZGF0YVsndGVzdEdyb3VwSWQnXSwgdHJ1ZSk7
CisgICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGxCeVRhc2soZGF0YVsndGFza0lkJ10pOworICAg
IH0KKworICAgIGFzeW5jIHNjaGVkdWxlUmV0cmllc0lmTmVjZXNzYXJ5KG1heFJldHJ5RmFjdG9y
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoWydhbHRlcm5hdGluZycsICdzZXF1ZW50
aWFsJ10uaW5jbHVkZXModGhpcy5yZXBldGl0aW9uVHlwZSgpKSk7CisgICAgICAgIHJldHVybiB0
aGlzLnJlcGV0aXRpb25UeXBlKCkgPT0gJ2FsdGVybmF0aW5nJyA/IHRoaXMuX2NyZWF0ZUFsdGVy
bmF0aW5nUmV0cmllc0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAgICAgICAgICAgIDog
dGhpcy5fY3JlYXRlU2VxdWVudGlhbFJldHJpZXNGb3JUZXN0R3JvdXAobWF4UmV0cnlGYWN0b3Ip
OworICAgIH0KKworICAgIGFzeW5jIHJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZyhtYXhS
ZXRyeUZhY3RvcikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5tYXlOZWVkTW9yZVJlcXVlc3Rz
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuaXNIaWRkZW4oKSkg
eworICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgcmV0cnlD
b3VudCA9IGF3YWl0IHRoaXMuc2NoZWR1bGVSZXRyaWVzSWZOZWNlc3NhcnkobWF4UmV0cnlGYWN0
b3IpOworICAgICAgICBpZiAoaXNOYU4ocmV0cnlDb3VudCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOwor
ICAgICAgICBpZiAocmV0cnlDb3VudCA+IDApIHsKKyAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lz
VGFzayA9IGF3YWl0IHRoaXMuZmV0Y2hUYXNrKCk7CisgICAgICAgICAgICBjb25zb2xlLmxvZyhg
QWRkZWQgJHtyZXRyeUNvdW50fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1l
KCl9IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lz
VGFzay5uYW1lKCl9ImApOworICAgICAgICB9CiAgICAgfQogCiAgICAgc3RhdGljIGZpbmRBbGxC
eVRhc2sodGFza0lkKQpAQCAtMjg0LDYgKzQyOCwxMyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5k
cyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5hbGwoKS5maWx0ZXIo
KHRlc3RHcm91cCkgPT4gdGVzdEdyb3VwLl90YXNrSWQgPT0gdGFza0lkKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgYXN5bmMgZmV0Y2hCeUlkKHRlc3RHcm91cElkLCBpZ25vcmVDYWNoZSA9IGZhbHNl
KQorICAgIHsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2FjaGVkRmV0Y2goYC9h
cGkvdGVzdC1ncm91cHMvJHt0ZXN0R3JvdXBJZH1gLCB7fSwgaWdub3JlQ2FjaGUpOworICAgICAg
ICB0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAg
IHJldHVybiB0aGlzLmZpbmRCeUlkKHRlc3RHcm91cElkKTsKKyAgICB9CisKICAgICBzdGF0aWMg
ZmV0Y2hGb3JUYXNrKHRhc2tJZCwgaWdub3JlQ2FjaGUgPSBmYWxzZSkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRhc2tJ
ZH0sIGlnbm9yZUNhY2hlKS50aGVuKHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdy
b3Vwcy5iaW5kKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggM2Y0ZmVm
ZmYyN2E0MzgzNjQzMDViYmI4M2Q3YjE2YjMyNDA1ZWM3MS4uZTZlNzYyZTBkM2NkNmIyZGM0OGQ0
MmRiNzQ4MTg4ZTM2NGNjZDM5ZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAgLTI0
LDggKzI0LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5l
QmFzZSB7CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7Ci0gICAgICAgIHRo
aXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlv
bkNvdW50LCBuYW1lLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRp
dGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgIHRo
aXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAobmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBs
ZXRpb24pID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91
cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwg
bm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMDYsOCArMTA2
LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrUmVzdWx0c1BhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKICAgICAgICAgcmVwb3NpdG9yeVBpY2tlci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAo
KSA9PiB0aGlzLmVucXVldWVUb1JlbmRlcigpKTsKICAgICAgICAgdGhpcy5wYXJ0KCdjb21taXQt
dmlld2VyJykuc2V0U2hvd1JlcG9zaXRvcnlOYW1lKGZhbHNlKTsKIAotICAgICAgICB0aGlzLnBh
cnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3Vu
dCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25D
b3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBh
cnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKG5hbWUsIHJlcGV0aXRp
b25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9u
KSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBu
YW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRNYXAsIG5vdGlm
eU9uQ29tcGxldGlvbik7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBA
IGNsYXNzIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKICAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwID0gY3VycmVudEdyb3VwOwogICAgICAgICBj
b25zdCBmb3JtID0gdGhpcy5wYXJ0KCdmb3JtJyk7CiAgICAgICAgIGlmICghZm9ybS5oYXNDb21t
aXRTZXRzKCkgJiYgY3VycmVudEdyb3VwKQotICAgICAgICAgICAgZm9ybS5zZXRDb25maWd1cmF0
aW9ucyhjdXJyZW50R3JvdXAudGVzdCgpLCBjdXJyZW50R3JvdXAucGxhdGZvcm0oKSwgY3VycmVu
dEdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpKTsKKyAgICAgICAgICAgIGZvcm0uc2V0Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRl
c3QoKSwgY3VycmVudEdyb3VwLnBsYXRmb3JtKCksIGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIGN1cnJlbnRHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpOwogICAgICAg
ICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIGNs
YXNzIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgYDsKICAgICB9Ci19OworfQogCiBDb21wb25lbnRCYXNl
LmRlZmluZUVsZW1lbnQoJ2FuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXBhbmUnLCBBbmFseXNp
c1Rhc2tDb25maWd1cmF0b3JQYW5lKTsKIApAQCAtMjY3LDE0ICsyNjcsMTQgQEAgY2xhc3MgQW5h
bHlzaXNUYXNrVGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgIGRpZENv
bnN0cnVjdFNoYWRvd1RyZWUoKQogICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50KCdoaWRlLWJ1
dHRvbicpLm9uY2xpY2sgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd0b2dnbGVUZXN0R3Jv
dXBWaXNpYmlsaXR5JywgdGhpcy5fY3VycmVudFRlc3RHcm91cCk7Ci0gICAgICAgIHRoaXMucGFy
dCgncmV0cnktZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlv
bkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRp
dGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5
LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4geworICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbigncmV0cnlUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3Vw
LCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pOwog
ICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScpLmxpc3RlblRvQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24p
ID0+IHsKKyAgICAgICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScpLmxpc3RlblRvQWN0aW9uKCdz
dGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25D
b21wbGV0aW9uKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBiaXNlY3RpbmdDb21taXRTZXQgPSB0
aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQodGhpcy5fY3VycmVudFRlc3RH
cm91cCk7CiAgICAgICAgICAgICBjb25zdCBbb25lQ29tbWl0U2V0LCBhbm90aGVyQ29tbWl0U2V0
XSA9IHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpOwogICAgICAg
ICAgICAgY29uc3QgY29tbWl0U2V0cyA9IFtvbmVDb21taXRTZXQsIGJpc2VjdGluZ0NvbW1pdFNl
dCwgYW5vdGhlckNvbW1pdFNldF07Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdi
aXNlY3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBl
dGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoQWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCBjb21t
aXRTZXRzLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRp
b24pOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM2NSwyOCArMzY1LDQ5IEBAIGNsYXNzIEFu
YWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAg
Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNvbnRlbnQoJ3Rlc3QtZ3JvdXAtbGlzdCcpLnF1ZXJ5U2Vs
ZWN0b3IoJy5zZWxlY3RlZCcpOwogICAgICAgICBpZiAoc2VsZWN0ZWQpCiAgICAgICAgICAgICBz
ZWxlY3RlZC5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpOwotICAgICAgICBpZiAoY3VycmVu
dEdyb3VwKQotICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3JvdXAp
Lmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAKICAgICAgICAgaWYgKGN1cnJl
bnRHcm91cCkgeworICAgICAgICAgICAgdGhpcy5fdGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3Jv
dXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICAgICAgICAgICB0aGlz
LnBhcnQoJ3JldHJ5LWZvcm0nKS5zZXRSZXBldGl0aW9uQ291bnQoY3VycmVudEdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSk7CiAgICAgICAgICAgICB0aGlzLnBhcnQoJ2Jpc2VjdC1mb3Jt
Jykuc2V0UmVwZXRpdGlvbkNvdW50KGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCkpOwotICAgICAgICAgICAgY29uc3Qgc3RhdHVzU3VtbWFyeSA9IGAke2N1cnJlbnRHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJlcXVlc3RlZCwgJHtjdXJyZW50R3JvdXAucmVwZXRp
dGlvbkNvdW50KCkgLSBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpfSBhZGRl
ZCBkdWUgdG8gZmFpbHVyZXMuYDsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1
bW1hcnknKS5pbm5lckhUTUwgPSBzdGF0dXNTdW1tYXJ5OwogCi0gICAgICAgICAgICBjb25zdCBh
dXRob3JlZEJ5ID0gY3VycmVudEdyb3VwLmF1dGhvcigpID8gYGJ5ICIke2N1cnJlbnRHcm91cC5h
dXRob3IoKX0iYCA6ICcnOwotICAgICAgICAgICAgdGhpcy5jb250ZW50KCdyZXF1ZXN0LXN1bW1h
cnknKS5pbm5lckhUTUwgPSBgU2NoZWR1bGVkICR7YXV0aG9yZWRCeX0gYXQgJHtjdXJyZW50R3Jv
dXAuY3JlYXRlZEF0KCl9YAorICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5oYXNSZXRyaWVz
KCkpCisgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncmV0
cnktc3VtbWFyeScpLCB0aGlzLl9yZXRyeVN1bW1hcnkoY3VycmVudEdyb3VwKSk7CisKKyAgICAg
ICAgICAgIGNvbnN0IGF1dGhvcmVkQnkgPSBjdXJyZW50R3JvdXAuYXV0aG9yKCkgPyBgYnkgIiR7
Y3VycmVudEdyb3VwLmF1dGhvcigpfSIgYCA6ICcnOworICAgICAgICAgICAgdGhpcy5yZW5kZXJS
ZXBsYWNlKHRoaXMuY29udGVudCgncmVxdWVzdC1zdW1tYXJ5JyksIGBTY2hlZHVsZWQgJHthdXRo
b3JlZEJ5fSBhdCAke2N1cnJlbnRHcm91cC5jcmVhdGVkQXQoKX1gKQorCisgICAgICAgICAgICB0
aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdoaWRlLWJ1dHRvbicpLCBjdXJyZW50R3Jv
dXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnKTsKKworICAgICAgICAgICAgdGhpcy5y
ZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncGVuZGluZy1yZXF1ZXN0LWNhbmNlbC13YXJuaW5n
JyksCisgICAgICAgICAgICAgICAgY3VycmVudEdyb3VwLmhhc1BlbmRpbmcoKSA/ICcoY2FuY2Vs
cyBwZW5kaW5nIHJlcXVlc3RzKScgOiBbXSk7CiAgICAgICAgIH0KKwogICAgICAgICB0aGlzLmNv
bnRlbnQoJ3JldHJ5LWZvcm0nKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6
ICdub25lJzsKICAgICAgICAgdGhpcy5jb250ZW50KCdiaXNlY3QtZm9ybScpLnN0eWxlLmRpc3Bs
YXkgPSBjdXJyZW50R3JvdXAgJiYgdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3JvdXAu
Z2V0KGN1cnJlbnRHcm91cCkgPyBudWxsIDogJ25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQo
J3N0YXR1cy1zdW1tYXJ5Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiBjdXJyZW50
R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgPiBjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpID8gbnVsbCA6ICdub25lJzsKLSAgICAgICAgdGhpcy5jb250ZW50KCdyZXF1ZXN0LXN1
bW1hcnknKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6ICdub25lJzsKKyAg
ICB9CisKKyAgICBfcmV0cnlTdW1tYXJ5KHRlc3RHcm91cCkKKyAgICB7CisgICAgICAgIGlmICgh
dGVzdEdyb3VwLmhhc1JldHJpZXMoKSkKKyAgICAgICAgICAgIHJldHVybiAnJzsKIAotICAgICAg
ICBjb25zdCBoaWRlQnV0dG9uID0gdGhpcy5jb250ZW50KCdoaWRlLWJ1dHRvbicpOwotICAgICAg
ICBoaWRlQnV0dG9uLnRleHRDb250ZW50ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5p
c0hpZGRlbigpID8gJ1VuaGlkZScgOiAnSGlkZSc7Ci0gICAgICAgIGhpZGVCdXR0b24uc3R5bGUu
ZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CisgICAgICAgIGNvbnN0IHJl
dHJ5Q291bnRCeUxhYmVsID0gbmV3IE1hcDsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQg
b2YgdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIHJldHJ5Q291
bnRCeUxhYmVsLnNldCh0ZXN0R3JvdXAubGFiZWxGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgdGVz
dEdyb3VwLnJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSk7CiAKLSAgICAgICAgdGhp
cy5jb250ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNwbGF5
ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyBudWxsIDogJ25v
bmUnOworICAgICAgICBpZiAodGVzdEdyb3VwLnJldHJ5Q291bnRzQXJlU2FtZUZvckFsbENvbW1p
dFNldHMoKSkKKyAgICAgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpfSByZXF1ZXN0ZWQsICR7cmV0cnlDb3VudEJ5TGFiZWwuZ2V0KCdBJyl9IGFkZGVk
IGR1ZSB0byBmYWlsdXJlcy5gOworCisgICAgICAgIGNvbnN0IHJldHJ5U3VtbWFyeVBhcnRzID0g
W107CisgICAgICAgIGZvciAoY29uc3QgW2xhYmVsLCBjb3VudF0gb2YgcmV0cnlDb3VudEJ5TGFi
ZWwuZW50cmllcygpKSB7CisgICAgICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgcmV0cnlTdW1tYXJ5UGFydHMucHVzaChgJHtjb3VudH0g
YWRkZWQgdG8gJHtsYWJlbH0gY29uZmlndXJhdGlvbmApOworICAgICAgICB9CisgICAgICAgIGNv
bnN0IHJldHJ5U3VtbWFyeSA9IG5ldyBJbnRsLkxpc3RGb3JtYXQoJ2VuJywge3N0eWxlOidsb25n
JywgdHlwZTonY29uanVuY3Rpb24nfSkuZm9ybWF0KHJldHJ5U3VtbWFyeVBhcnRzKTsKKworICAg
ICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVxdWVz
dGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAgICAgc3Rh
dGljIGh0bWxUZW1wbGF0ZSgpCkBAIC0zOTYsNyArNDE3LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNr
VGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPGRpdiBp
ZD0idGVzdC1ncm91cC1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1yZXN1
bHRzLXZpZXdlciBpZD0icmVzdWx0cy12aWV3ZXIiPjwvdGVzdC1ncm91cC1yZXN1bHRzLXZpZXdl
cj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZSBpZD0icmV2aXNp
b24tdGFibGUiPjwvdGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZT4KLSAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJzdGF0dXMtc3VtbWFyeSIgY2xhc3M9InN1bW1hcnkiPjwvZGl2PgorICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9InJldHJ5LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5Ij48L2Rpdj4KICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJyZXF1ZXN0LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5Ij48
L2Rpdj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1mb3JtIGlkPSJyZXRyeS1mb3JtIj5S
ZXRyeTwvdGVzdC1ncm91cC1mb3JtPgogICAgICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLWZvcm0g
aWQ9ImJpc2VjdC1mb3JtIj5CaXNlY3Q8L3Rlc3QtZ3JvdXAtZm9ybT4KQEAgLTU1Niw4ICs1Nzcs
OCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAg
ICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdzaG93SGlkZGVuVGVzdEdyb3VwcycsICgp
ID0+IHRoaXMuX3Nob3dBbGxUZXN0R3JvdXBzKCkpOwogICAgICAgICBncm91cFBhbmUubGlzdGVu
VG9BY3Rpb24oJ3JlbmFtZVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIG5ld05hbWUpID0+IHRoaXMu
X3VwZGF0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwLCBuZXdOYW1lKSk7CiAgICAgICAgIGdyb3Vw
UGFuZS5saXN0ZW5Ub0FjdGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsICh0ZXN0R3Jv
dXApID0+IHRoaXMuX2hpZGVDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCkpOwotICAgICAgICBn
cm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwgcmVw
ZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX3JldHJ5Q3VycmVudFRl
c3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSk7
Ci0gICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgKHRl
c3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24p
ID0+IHRoaXMuX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCBy
ZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOworICAgICAgICBncm91cFBhbmUu
bGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNv
dW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRyeUN1
cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBl
LCBub3RpZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9u
KCdiaXNlY3RUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291
bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX2Jpc2VjdEN1
cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIHJl
cGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pKTsKIAogICAgICAgICB0aGlzLnBhcnQo
J2NhdXNlLWxpc3QnKS5saXN0ZW5Ub0FjdGlvbignYWRkSXRlbScsIChyZXBvc2l0b3J5LCByZXZp
c2lvbikgPT4gewogICAgICAgICAgICAgdGhpcy5fYXNzb2NpYXRlQ29tbWl0KCdjYXVzZScsIHJl
cG9zaXRvcnksIHJldmlzaW9uKTsKQEAgLTgzMiwxOSArODUzLDIyIEBAIGNsYXNzIEFuYWx5c2lz
VGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBu
b3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0ZXN0
R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlv
bikKICAgICB7CiAgICAgICAgIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSAodGhpcy5fdGVzdEdyb3Vw
cyB8fCBbXSkubWFwKChncm91cCkgPT4gZ3JvdXAubmFtZSgpKTsKICAgICAgICAgY29uc3QgbmV3
TmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbih0ZXN0R3JvdXAubmFt
ZSgpLCBuZXcgU2V0KGV4aXN0aW5nTmFtZXMpKTsKICAgICAgICAgY29uc3QgY29tbWl0U2V0TGlz
dCA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAgIGNvbnN0IHBsYXRm
b3JtID0gdGhpcy5fdGFzay5wbGF0Zm9ybSgpIHx8IHRlc3RHcm91cC5wbGF0Zm9ybSgpOwotICAg
ICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMu
X3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBuZXdOYW1lLCByZXBldGl0aW9uQ291
bnQsIGNvbW1pdFNldExpc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50aGVu
KHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0
R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0s
IHRlc3RHcm91cC50ZXN0KCksIG5ld05hbWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNv
dW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25Db21wbGV0aW9uKTsK
KyAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoQW5hbHlzaXNSZXN1bHRzKHRlc3RHcm91cHMpOwor
ICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBj
cmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAg
IH0KICAgICB9CiAKLSAgICBhc3luYyBfYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAs
IGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKQorICAgIGFz
eW5jIF9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRp
dGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGVzdEdyb3VwLnRhc2soKSk7CiAgICAgICAgIGNvbnN0IGV4
aXN0aW5nVGVzdEdyb3VwTmFtZXMgPSBuZXcgU2V0KCh0aGlzLl90ZXN0R3JvdXBzIHx8IFtdKS5t
YXAoKHRlc3RHcm91cCkgPT4gdGVzdEdyb3VwLm5hbWUoKSkpOwpAQCAtODU0LDcgKzg3OCw4IEBA
IGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAg
ICAgICAgY29uc3QgY3VycmVudENvbW1pdFNldCA9IGNvbW1pdFNldHNbaV07CiAgICAgICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVXaXRob3V0Q29sbGlz
aW9uKENvbW1pdFNldC5kaWZmKHByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0KSwg
ZXhpc3RpbmdUZXN0R3JvdXBOYW1lcyk7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRl
c3RHcm91cHModGVzdEdyb3VwLnRhc2soKSwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50
LCBbcHJldmlvdXNDb21taXRTZXQsIGN1cnJlbnRDb21taXRTZXRdLCBub3RpZnlPbkNvbXBsZXRp
b24pOworICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAu
Y3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGVzdEdyb3VwLnRhc2soKSwgdGVzdEdyb3VwTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwg
W3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9u
KTsKICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHModGVzdEdy
b3Vwcyk7CiAgICAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgYWxl
cnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKQEAgLTg2
Myw3ICs4ODgsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFk
aW5nIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlm
eWluZ0NvbW1pdFNldExpc3QodGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRT
ZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfY3JlYXRlVGVzdEdyb3VwQWZ0
ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwTmFt
ZSkpIHsKICAgICAgICAgICAgIGFsZXJ0KGBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBncm91cCBu
YW1lZCAiJHt0ZXN0R3JvdXBOYW1lfSJgKTsKQEAgLTg4OSwxMyArOTE0LDE1IEBAIGNsYXNzIEFu
YWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICBmb3IgKGxl
dCBsYWJlbCBpbiBjb21taXRTZXRNYXApCiAgICAgICAgICAgICBjb21taXRTZXRzLnB1c2goY29t
bWl0U2V0TWFwW2xhYmVsXSk7CiAKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVBbmRS
ZWZldGNoVGVzdEdyb3Vwcyh0aGlzLl90YXNrLCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291
bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50aGVuKHRo
aXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3Jv
dXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVzdEdyb3VwTmFtZSwg
cmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgbm90aWZ5T25Db21w
bGV0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHModGVz
dEdyb3Vwcyk7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICBhbGVydCgn
RmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwotICAgICAgICB9
KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIF9jcmVhdGVDdXN0b21UZXN0R3JvdXAocmVwZXRp
dGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgbm90
aWZ5T25Db21wbGV0aW9uKQorICAgIGFzeW5jIF9jcmVhdGVDdXN0b21UZXN0R3JvdXAodGVzdEdy
b3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxh
dGZvcm0sIHRlc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3Rhc2suaXNDdXN0b20oKSk7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBs
aWNhdGVUZXN0R3JvdXBOYW1lKHRlc3RHcm91cE5hbWUpKSB7CkBAIC05MDMsMTAgKzkzMCwxMyBA
QCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRlc3RHcm91cC5jcmVhdGVXaXRo
Q3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVzdCwgdGVzdEdyb3Vw
TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCi0g
ICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHMuYmluZCh0aGlzKSwgZnVu
Y3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMu
X3Rhc2ssIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLAorICAgICAgICAgICAgICAgIHJl
cGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxl
dGlvbik7CisgICAgICAgICAgICB0aGlzLl9kaWRGZXRjaEFuYWx5c2lzUmVzdWx0cyh0ZXN0R3Jv
dXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWls
ZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUobmFtZSkK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hh
cnQtcGFuZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hh
cnQtcGFuZS5qcwppbmRleCBkMGFmMTczZGFhZDMyYjQ1YjIyZDhiYTk1M2ExNmVjMTk2MjZhYzNk
Li40ZDI2YTM0NzA3OTYzM2FiMWQ5OGViYjgxMTMzNzQ5OTdhNjRjMDYzIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpz
CkBAIC0xMjAsMTEgKzEyMCwxNCBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVC
YXNlIHsKICAgICAgICAgY29uc3QgY3JlYXRlV2l0aFRlc3RHcm91cENoZWNrYm94ID0gdGhpcy5j
b250ZW50KCdjcmVhdGUtd2l0aC10ZXN0LWdyb3VwJyk7CiAgICAgICAgIGNvbnN0IHJlcGV0aXRp
b25Db3VudCA9IHRoaXMuY29udGVudCgnY29uZmlybS1yZXBldGl0aW9uJyk7CiAgICAgICAgIGNv
bnN0IG5vdGlmeU9uQ29tcGxldGlvbiA9IHRoaXMuY29udGVudCgnbm90aWZ5LW9uLWNvbXBsZXRp
b24nKTsKKyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0
aXRpb24tdHlwZScpOwogICAgICAgICBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3gub25jaGFu
Z2UgPSAoKSA9PiB7CisgICAgICAgICAgICAvLyBGaXhNZTogc2hvdWxkIGludm9rZSByZW5kZXIg
Y29kZSBpbnN0ZWFkLgogICAgICAgICAgICAgY29uc3Qgc2hvdWxkRGlzYWJsZSA9ICFjcmVhdGVX
aXRoVGVzdEdyb3VwQ2hlY2tib3guY2hlY2tlZDsKICAgICAgICAgICAgIHJlcGV0aXRpb25Db3Vu
dC5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CiAgICAgICAgICAgICBub3RpZnlPbkNvbXBsZXRp
b24uZGlzYWJsZWQgPSBzaG91bGREaXNhYmxlOwotICAgICAgICB9CisgICAgICAgICAgICByZXBl
dGl0aW9uVHlwZS5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CisgICAgICAgIH07CiAgICAgfQog
CiAgICAgc2VyaWFsaXplU3RhdGUoKQpAQCAtMjQzLDEwICsyNDYsMTEgQEAgY2xhc3MgQ2hhcnRQ
YW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGNvbnN0IGNyZWF0ZVdpdGhUZXN0
R3JvdXAgPSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAnKS5jaGVja2VkOwog
ICAgICAgICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlzLmNvbnRlbnQoJ2NvbmZpcm0tcmVw
ZXRpdGlvbicpLnZhbHVlOwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBsZXRpb24gPSB0aGlz
LmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJykuY2hlY2tlZDsKKyAgICAgICAgY29uc3Qg
cmVwZXRpdGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpLnZhbHVlOwog
CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sgPSBhd2FpdCAo
Y3JlYXRlV2l0aFRlc3RHcm91cCA/Ci0gICAgICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0
ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQs
IG5vdGlmeU9uQ29tcGxldGlvbikgOiBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9p
bnQsIGVuZFBvaW50KSk7CisgICAgICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0ZShuYW1l
LCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQsIHJlcGV0
aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pIDogQW5hbHlzaXNUYXNrLmNyZWF0ZShuYW1l
LCBzdGFydFBvaW50LCBlbmRQb2ludCkpOwogICAgICAgICAgICAgbmV3V2luZG93LmxvY2F0aW9u
LmhyZWYgPSByb3V0ZXIudXJsKCdhbmFseXNpcy90YXNrLycgKyBhbmFseXNpc1Rhc2suaWQoKSk7
CiAgICAgICAgICAgICB0aGlzLmZldGNoQW5hbHlzaXNUYXNrcyh0cnVlKTsKICAgICAgICAgfSBj
YXRjaChlcnJvcikgewpAQCAtNTg5LDcgKzU5MywxNiBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5k
cyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxv
cHRpb24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxl
Y3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPml0ZXJhdGlvbnM8L2xhYmVs
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2ti
b3giIGlkPSJub3RpZnktb24tY29tcGxldGlvbiIgY2hlY2tlZD4gTm90aWZ5IG9uIGNvbXBsZXRp
b248L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+SW48L2xh
YmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InJlcGV0aXRpb24t
dHlwZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImFs
dGVybmF0aW5nIiBzZWxlY3RlZD5hbHRlcm5hdGUgKEFCQUIpPC9vcHRpb24+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNlcXVlbnRpYWwiPnNlcXVlbmNl
IChBQUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pgor
ICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNr
Ym94IiBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24iIGNoZWNrZWQ+Tm90aWZ5IG9uIGNvbXBsZXRp
b248L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAg
ICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImNoYXJ0LXBhbmUt
ZmlsdGVyaW5nLW9wdGlvbnMgcG9wb3ZlciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFs
eXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3Bh
Z2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggMzAxZmQyYTI5MDY1MWQ1MTI4
YzM1MjNhZjQ5ODIwZjIwM2JjNjZhMy4uMGE4ZTQzZTQ5NjQ0NDVlZTM3MDQwNGM3MWM5MTU2YTky
Y2JlNTgzMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9w
YWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcwpAQCAt
MjIsMTQgKzIyLDE0IEBAIGNsYXNzIENyZWF0ZUFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdl
V2l0aEhlYWRpbmcgewogICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbign
c3RhcnRUZXN0aW5nJywgdGhpcy5fY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwLmJpbmQodGhp
cykpOwogICAgIH0KIAotICAgIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3JvdXAocmVwZXRpdGlv
bkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05h
bWUsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfY3JlYXRlQW5hbHlzaXNUYXNrV2l0
aEdyb3VwKHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNv
bW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBsZXRpb24sIHRhc2tOYW1lKQog
ICAgIHsKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9y
bSwgdGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3Rp
ZnlPbkNvbXBsZXRpb24pLnRoZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHVybCA9
IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgpfWApOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVX
aXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRp
b25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbik7
CiAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5yb3V0ZXIoKS51cmwoYGFuYWx5c2lz
L3Rhc2svJHt0YXNrLmlkKCl9YCk7Ci0gICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICB9
IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBu
ZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICByZW5kZXIoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBm
ZDQwNDM0NDIzNzBmNDUzZjFmZDNlZTdiN2FhNWE1MWZmYWMxYjIxLi45Yzc3NmYwZjA1NTk5ZDhj
M2VhNDc1OWUwYWE2ZGUwNjFlZTNlODFmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcwpAQCAtNTY2LDYgKzU2Niw2MiBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBpdCgnc2hvdWxkIHN0
aWxsIHJldHVybiBidWlsZCByZXF1ZXN0cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2Vy
YWJsZSB3aGVuIHRlc3QgZ3JvdXAgaGFzIGFsbCBidWlsZCByZXF1ZXN0cyBmaW5pc2hlZCB3aXRo
ICJtYXlOZWVkTW9yZVJlcXVlc3QiIGZsYWcgdG8gYmUgdHJ1ZXMnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSwg
Wydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnXSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CisgICAgICAgIGNvbnN0IGNvbnRlbnQg
PSBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1
aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVx
dWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ2NvbW1p
dFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKKworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50Wydjb21taXRTZXRzJ11b
MF0uaWQpLCA0MDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2Nv
bW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLCBbCisgICAgICAgICAgICB7Y29tbWl0OiAnODc4
MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNl
LCByb290RmlsZTogbnVsbH0sCisgICAgICAgICAgICB7Y29tbWl0OiAnOTMxMTYnLCBjb21taXRP
d25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTog
bnVsbH1dKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2Nv
bW1pdFNldHMnXVsxXS5pZCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
Y29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsIFsKKyAgICAgICAgICAgIHtj
b21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNC
dWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgIHtjb21taXQ6ICc5NjMz
NicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2Us
IHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50
Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNl
SW50KGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCksIDg3ODMyKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5yZXBvc2l0b3J5LCAnOScpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJldmlzaW9uLCAnMTAu
MTEgMTVBMjg0Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50
Wydjb21taXRzJ11bMV0uaWQpLCA5MzExNik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChj
b250ZW50Wydjb21taXRzJ11bMV0ucmVwb3NpdG9yeSwgJzExJyk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2aXNpb24sICcxOTE2MjInKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5p
ZCksIDk2MzM2KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XVsyXS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRl
bnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicpOworCisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoLCA0KTsKKyAgICAgICAg
YXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11b
MF0uaWQpLCA3MDApOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNv
bnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5vcmRlciksIDApOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5wbGF0Zm9ybSwgJzY1Jyk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzBdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOwor
ICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsw
XS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUlu
dChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uaWQpLCA3MDEpOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5vcmRl
ciksIDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVx
dWVzdHMnXVsxXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLmNvbW1pdFNldCksIDQwMik7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzFdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0u
aWQpLCA3MDIpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRl
bnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5vcmRlciksIDIpOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5wbGF0Zm9ybSwgJzY1Jyk7Cisg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzJdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAg
ICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS50
ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQpLCA3MDMpOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5vcmRlciks
IDMpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVszXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
cGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLmNvbW1pdFNldCksIDQwMik7Cisg
ICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNd
LnN0YXR1cywgJ2ZhaWxlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRl
bnRbJ2J1aWxkUmVxdWVzdHMnXVszXS50ZXN0LCAnMjAwJyk7CisgICAgfSk7CisKICAgICBpdCgn
c2hvdWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbicsICgpID0+IHsKICAg
ICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5n
ZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVn
YWN5SWRSZXNvbHV0aW9uPXRydWUnKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZC1yb290LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKaW5kZXgg
M2FjMGNlOWUzNzg1MWMxZjVkZDJiOGI1MzJjZDM0NjNhMWRhNjNiMC4uNjc1ZDU5NDg3NGNhMTZk
YzdlODk2NjgwNGNmZWY0MTg2NWYyNTJkYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMK
QEAgLTY1LDcgKzY1LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2loUGF0Y2goKQogICAg
ICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAgICAgc2V0Mi5zZXRS
ZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7CiAgICAgICAgIHNldDIuc2V0
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCwgJzgwMjI5Jyk7Ci0gICAgICAgIHJldHVybiBU
ZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtz
ZXQxLCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1
c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSks
IHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSk7
CiAgICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRB
bGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChncm91cCkgPT4gewpAQCAtMTA3
LDcgKzEwNyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRjaEFuZE93bmVkQ29t
bWl0cygpCiAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5
MjczNicpOwogICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywg
J293bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5MjczNicpOwogCi0gICAgICAgIHJldHVybiBUZXN0
R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQx
LCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3Rv
bSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNv
bWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSk7CiAg
ICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxC
eVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChncm91cCkgPT4gewpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1h
ZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRl
eCBkY2UwOWNiYWIzNTBhMjJhODMxZDViZjk5MjE3YWU3MDk5NzI2OTgyLi41YzNmYmRhZjIxOThi
MTVmMWMxOTc3ODU5YmQ2ODQyNzA3OTg2YjUyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10
ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMTIzLDYgKzEyMywxMSBA
QCBhc3luYyBmdW5jdGlvbiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2sobmFtZSwgd2Via2l0
UmV2aXNpb25zKQogICAgIGF3YWl0IGNyZWF0ZUFuYWx5c2lzVGFzayhuYW1lLCB3ZWJraXRSZXZp
c2lvbnMpOwogfQogCitmdW5jdGlvbiBhc3NlcnRPcmRlck9mUmVxdWVzdHMocmVxdWVzdHMsIGV4
cGVjdGVkT3JkZXIpCit7CisgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0cy5tYXAocmVxdWVz
dCA9PiByZXF1ZXN0Lm9yZGVyKCkpLCBleHBlY3RlZE9yZGVyKTsKK30KKwogZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigpIHsKICAgICBwcmVw
YXJlU2VydmVyVGVzdCh0aGlzLCAnbm9kZScpOwogICAgIGJlZm9yZUVhY2goKCkgPT4gewpAQCAt
MTM0LDcgKzEzOSw4IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVl
c3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0Jylb
MF07CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsK
ICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2Ny
ZWF0ZS10ZXN0LWdyb3VwJywKLSAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAn
b3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBN
b2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlv
bkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRh
c2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
LCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3Rp
ZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0cywgY29tbWl0
U2V0OiBudWxsfSk7CiAgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVz
dEdyb3VwSWQnXTsKIAogICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1
cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3Jl
UmVxdWVzdHM6IHRydWV9KTsKQEAgLTE0NCwxNSArMTUwLDE3IEBAIGRlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKLSAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSksIDIp
OworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0aXRpb25D
b3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogCiAgICAgICAgIGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDog
aW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pOwogCiAgICAgICAgIGNvbnN0IHVwZGF0ZWRH
cm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRy
dWUpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEp
OwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQodXBkYXRlZEdyb3Vwc1swXS5y
ZXBldGl0aW9uQ291bnQoKSksIDQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJ
bnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAg
ICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21t
aXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNb
MF0ucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDQpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpLCAyKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVx
dWVzdHMoKSwgdHJ1ZSk7CiAgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIHVwZGF0ZWRH
cm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7CiAgICAgICAgICAgICBjb25zdCBidWls
ZFJlcXVlc3RzID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRT
ZXQpOwpAQCAtMTc0LDEwICsxODIsMzE0IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRk
LWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9y
ZVJlcXVlc3RzKCksIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKKyAgICAgICAg
Zm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgYXdhaXQgZ3JvdXAudXBkYXRl
SGlkZGVuRmxhZyh0cnVlKTsKIAogICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0Nhbm5vdEFk
ZFRvSGlkZGVuVGVzdEdyb3VwJywgYXN5bmMgKCkgPT4gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFk
ZENvdW50OiAyfSkpCiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoICJDb21t
aXRTZXROb3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGluZ1JlcGV0aXRpb25UeXBlIiB3aGVuIGFkZGlu
ZyBidWlsZCByZXF1ZXN0cyBmb3Igb25lIGNvbW1pdCBzZXQgaW4gYW4gYWx0ZXJuYXRpbmcgdGVz
dCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRD
cmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9y
eS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJL
aXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMn
fX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAgICAgIG5hbWU6ICd0ZXN0JywgdGFz
a05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCks
IHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJl
c3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1h
eU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCBub0NhY2hlID0gdHJ1
ZTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRh
c2socmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3Jv
dXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVl
c3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXBldGl0aW9uVHlwZSgpLCAnYWx0ZXJuYXRpbmcnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAgICAgICBmb3Ig
KGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNl
dChjb21taXRTZXQpLCAyKTsKKworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHRlc3RH
cm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9m
UmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwg
Ml0pOworICAgICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVl
c3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsxLCAzXSk7CisKKyAgICAg
ICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdDb21taXRTZXROb3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGlu
Z1JlcGV0aXRpb25UeXBlJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICAgICAge2dy
b3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXQ6IHNlY29uZENvbW1p
dFNldC5pZCgpfSkKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFi
bGUgdG8gYnVpbGQgcmVxdWVzdHMgZm9yIGZpcnN0IGNvbW1pdCBzZXQgd2l0aCBvcmRlciBzaGlm
dGVkIGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBh
d2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNl
dHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAg
ICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2Nr
RGF0YS5zb21lUGxhdGZvcm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICB0
ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVw
ZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0
IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25z
dCBub0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAg
ICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JD
b21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZpcnN0Q29tbWl0U2V0ID0g
dGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9y
ZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCks
IFswLCAxXSk7CisgICAgICAgIGxldCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJl
cXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdy
b3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisKKyAg
ICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3Rz
JywKKyAgICAgICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29t
bWl0U2V0OiBmaXJzdENvbW1pdFNldC5pZCgpfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgbm9D
YWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwg
MSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdyb3Vwc1swXS5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworCisgICAgICAgIGZp
cnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07
CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNl
dChmaXJzdENvbW1pdFNldCksIFswLCAxLCAyLCAzXSk7CisgICAgICAgIHNlY29uZENvbW1pdFNl
dCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBh
c3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29t
bWl0U2V0KSwgWzQsIDVdKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IG1vZGlmeSB0
aGUgb3JkZXIgb2YgcHJlY2VkaW5nIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5nIG5ldyBidWls
ZCByZXF1ZXN0cyBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkp
ID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQg
PSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisg
ICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9y
bTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAg
ICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZh
bHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAg
ICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAg
ICAgIGNvbnN0IG5vQ2FjaGUgPSB0cnVlOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIp
OworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0aXRpb25D
b3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAgICAgICBsZXQgZmlyc3RDb21t
aXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAg
YXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29t
bWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNlY29uZENvbW1pdFNldCA9IHRlc3RHcm91
cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVx
dWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNd
KTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQt
cmVxdWVzdHMnLAorICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50
OiAyLCBjb21taXRTZXQ6IHNlY29uZENvbW1pdFNldC5pZCgpfSk7CisKKyAgICAgICAgY29uc3Qg
dXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNr
SWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBz
Lmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdyb3Vwc1sw
XS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworCisg
ICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRT
ZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0Zv
ckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAgICAgIHNlY29uZENvbW1p
dFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAg
ICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25k
Q29tbWl0U2V0KSwgWzIsIDMsIDQsIDVdKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc2hp
ZnQgdGhlIG9yZGVyIG9mIGZvbGxvd2luZyBidWlsZCByZXF1ZXN0cyB3aGVuIGFkZGluZyByZXRy
eSBmb3IgYSBzcGVjaWZpYyBjb21taXQgc2V0IGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHdp
dGggMyBjb21taXQgc2V0cycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dl
cmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0g
UmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgp
ID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246
ICcxOTE2MjMnfX0sCisgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTky
NzM2J319XTsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0Jywg
dGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlk
KCksIHJlcGV0aXRpb25Db3VudDogMiwKKyAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVU
ZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVl
bnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0g
cmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IG5vQ2FjaGUgPSB0cnVlOwor
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhy
ZXN1bHRbJ3Rhc2tJZCddLCBub0NhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBd
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElk
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5
cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDMpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1p
dFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQp
LCAyKTsKKworICAgICAgICBsZXQgZmlyc3RDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVl
c3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAg
bGV0IHNlY29uZENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygp
WzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21t
aXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKyAgICAgICAgbGV0IHRoaXJkQ29tbWl0
U2V0ID0gdGVzdEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMl07CisgICAgICAgIGFz
c2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldCh0aGlyZENvbW1p
dFNldCksIFs0LCA1XSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywKKyAgICAgICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91
cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBmaXJzdENvbW1pdFNldC5pZCgpfSk7CisKKyAg
ICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2so
cmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1
cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBk
YXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5n
dGgsIDMpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1
ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91
cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxLCAyLCAzXSk7Cisg
ICAgICAgIHNlY29uZENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0
U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNG
b3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzQsIDVdKTsKKyAgICAgICAgdGhpcmRDb21t
aXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAg
YXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29t
bWl0U2V0KSwgWzYsIDddKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc2hpZnQgdGhlIG9y
ZGVyIG9mIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5nIHJldHJ5IGZvciBhbGwgY29tbWl0IHNl
dHMgaW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgd2l0aCAzIGNvbW1pdCBzZXRzJywgYXN5bmMg
KCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUg
dGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigo
cmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAg
ICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Mid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fSwKKyAgICAgICAgICAg
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTI3MzYnfX1dOworICAgICAgICBjb25zdCBy
ZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBw
bGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAor
ICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlv
bjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOwor
ICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisK
KyAgICAgICAgY29uc3Qgbm9DYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIG5vQ2FjaGUp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0
aCwgMyk7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRp
dGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGxldCBmaXJz
dENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAg
ICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmly
c3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBsZXQgc2Vjb25kQ29tbWl0U2V0ID0gdGVz
dEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVy
T2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBb
MiwgM10pOworICAgICAgICBsZXQgdGhpcmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVl
c3RlZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29tbWl0U2V0KSwgWzQsIDVdKTsKKworICAgICAg
ICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLAor
ICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSk7CisKKyAg
ICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2so
cmVzdWx0Wyd0YXNrSWQnXSwgbm9DYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1
cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBk
YXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5n
dGgsIDMpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1
ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91
cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxLCAyLCAzXSk7Cisg
ICAgICAgIHNlY29uZENvbW1pdFNldCA9IHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0
U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNG
b3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzQsIDUsIDYsIDddKTsKKyAgICAgICAgdGhp
cmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsyXTsKKyAg
ICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRo
aXJkQ29tbWl0U2V0KSwgWzgsIDksIDEwLCAxMV0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3Vs
ZCByZWplY3Qgd2l0aCAiTm9Db21taXRTZXRJblRlc3RHcm91cCIgaWYgY29tbWl0IHNldCBpcyBu
b3QgaW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3
YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNv
bnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0
cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgp
XToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAg
IHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAg
ICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwgcmVwZXRp
dGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGlu
c2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBp
bnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rh
c2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVu
Z3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgp
LCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCks
ICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0
ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQg
b2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsK
KworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVk
Q29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVx
dWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBjb25z
dCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsx
XTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0
U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0
ID0gZmlyc3RDb21taXRTZXQuaWQoKSArIHNlY29uZENvbW1pdFNldC5pZCgpICsgMTsKKyAgICAg
ICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdOb0NvbW1pdFNldEluVGVzdEdyb3VwJywgKCkgPT4gewor
ICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1y
ZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0
fSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAi
SW52YWxpZENvbW1pdFNldCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdlciBmb3Ig
YSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFk
ZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdl
YmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5
Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICBu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwgcmVwZXRpdGlvblR5
cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVk
R3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRl
ZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCdd
LCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1
ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21t
aXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAg
ICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0
U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNG
b3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBjb25zdCBzZWNv
bmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAg
ICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNl
Y29uZENvbW1pdFNldCksIFsyLCAzXSk7CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gJ2lu
dmFsaWQnOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0ludmFsaWRDb21taXRTZXQnLCAo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRk
LWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBj
b21taXRTZXR9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVj
dCB3aXRoICJJbnZhbGlkQ29tbWl0U2V0IiBpZiBjb21taXQgc2V0IGlkIGlzIG5vdCBhbiBpbnRl
Z2VyIGZvciBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAg
ICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAg
ICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4g
cmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lv
blNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQu
aWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2Fp
dCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAg
ICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAg
ICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJl
cGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29u
c3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3
YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91
cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAg
ICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3Vs
dFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVl
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5
cGUoKSwgJ2FsdGVybmF0aW5nJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21t
aXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQp
LCAyKTsKKworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IHRlc3RHcm91cHNbMF0ucmVx
dWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3Jv
dXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMl0pOworICAgICAg
ICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSB0ZXN0R3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsxLCAzXSk7CisKKyAgICAgICAgY29uc3QgY29t
bWl0U2V0ID0gJ2ludmFsaWQnOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0ludmFsaWRD
b21taXRTZXQnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFk
ZENvdW50OiAyLCBjb21taXRTZXR9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDJiMjc1MGFhN2EyZGQzYmM3OTVh
NzY3Mjc2NGJhYWEzZWI4NGQxYjYuLjJhMTcxNzhlNDM0MjMyMmVmY2MwYmZmZDI3ZjI5ODIzNWY0
MzI2ZGIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
cHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5h
bHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtNjgyLDQgKzY4MiwxMTkgQEAgZGVzY3JpYmUoJy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzayB3aXRoIG5vZGUgcHJpdmlsZWdlZCBhcGkn
LCBmdW5jdGkKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNvbW1p
dEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicpOwog
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9z
aXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOwogICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhbiBhbmFseXNpcyB0YXNrIHdpdGgg
YSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHdl
YmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IDE7CisgICAgICAgIGNvbnN0
IHRyaWdnZXJhYmxlSWQgPSAxMjM0OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge25hbWU6ICdTdWl0
ZSd9KTsKKyAgICAgICAgY29uc3QgdGVzdFJvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0
ZXN0cycsIHtuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RJZCA9IHRlc3RSb3cu
aWQ7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB3ZWJraXRJ
ZCwgbmFtZTogJ1dlYktpdCd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdwbGF0Zm9ybXMn
LCB7aWQ6IHBsYXRmb3JtSWQsIG5hbWU6ICdzb21lIHBsYXRmb3JtJ30pOworICAgICAgICBhd2Fp
dCBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxlcycsIHtpZDogMTIzNCwgbmFtZTogJ3Rlc3Qt
dHJpZ2dlcmFibGUnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVw
b3NpdG9yeV9ncm91cHMnLCB7aWQ6IDIzNDUsIG5hbWU6ICd3ZWJraXQtb25seScsIHRyaWdnZXJh
YmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFi
bGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHdlYmtpdElkLCBncm91cDogMjM0NX0pOwor
ICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywge3Rl
c3Q6IHRlc3RJZCwgcGxhdGZvcm06IHBsYXRmb3JtSWQsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJs
ZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlz
aW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0
V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAg
ICBjb25zdCB0ZXN0ID0gVGVzdC5maW5kQnlJZCh0ZXN0SWQpOworICAgICAgICBjb25zdCBzb21l
UGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAgY29uc3Qg
Y29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJhdGlvbnMn
LCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3MoKVswXS5pZCgpLCBwbGF0Zm9ybTogc29tZVBsYXRmb3Jt
LmlkKCl9KTsKKyAgICAgICAgY29uc3QgdGVzdFJ1bnMgPSBhd2FpdCBkYi5zZWxlY3RSb3dzKCd0
ZXN0X3J1bnMnLCB7Y29uZmlnOiBjb25maWdSb3dbJ2lkJ119KTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RSdW5zLmxlbmd0aCwgMik7CisKKyAgICAgICAgY29uc3Qgb25lUmV2aXNp
b25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIyJ319OworICAgICAgICBjb25z
dCBhbm90aGVyUmV2aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIzJ319
OworCisgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25D
b3VudDogMiwKKyAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgcmV2aXNpb25T
ZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sCisgICAgICAgICAgICBz
dGFydFJ1bjogdGVzdFJ1bnNbMF1bJ2lkJ10sIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sIG5l
ZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnfSk7CisK
KyAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoY29udGVu
dFsndGFza0lkJ10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5uYW1lKCksICdj
b25maXJtJyk7CisgICAgICAgIGFzc2VydCghdGFzay5oYXNSZXN1bHRzKCkpOworICAgICAgICBh
c3NlcnQodGFzay5oYXNQZW5kaW5nUmVxdWVzdHMoKSk7CisgICAgICAgIGFzc2VydC5kZWVwU3Ry
aWN0RXF1YWwodGFzay5idWdzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bCh0YXNrLmNhdXNlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFz
ay5maXhlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLmNoYW5nZVR5
cGUoKSwgbnVsbCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLnBsYXRmb3JtKCku
bGFiZWwoKSwgJ3NvbWUgcGxhdGZvcm0nKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRh
c2subWV0cmljKCkudGVzdCgpLmxhYmVsKCksICdTdWl0ZScpOworCisgICAgICAgIGNvbnN0IHRl
c3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNv
bnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXAubmFtZSgpLCAnQ29uZmlybScpOworICAgICAgICBhc3NlcnQub2sodGVzdEdy
b3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJykKKyAgICAgICAgZm9yIChjb25z
dCBjb21taXRTZXQgb2YgdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0
U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0
R3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRS
ZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJl
cXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRS
ZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWls
ZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3Rz
WzBdLmNvbW1pdFNldCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgpKSk7Cisg
ICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhidWlsZFJl
cXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQg
PSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBzZWNvbmRDb21t
aXRTZXQgPSBidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCB3ZWJr
aXRSZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZCh3ZWJraXRJZCk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtp
dFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdFJlcG9zaXRv
cnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVq
ZWN0IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgd2hlbiByZXBldGl0aW9uIHR5cGUgaXMg
bm90ICJhbHRlcm5hdGluZyIgb3IgInNlcXVlbnRpYWwiJywgYXN5bmMgKCkgPT4geworICAgICAg
ICBjb25zdCB3ZWJraXRJZCA9IDE7CisgICAgICAgIGNvbnN0IHBsYXRmb3JtSWQgPSAxOworICAg
ICAgICBjb25zdCB0cmlnZ2VyYWJsZUlkID0gMTIzNDsKKworICAgICAgICBjb25zdCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0ZXN0cycsIHtu
YW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RSb3cgPSBhd2FpdCBkYi5zZWxlY3RG
aXJzdFJvdygndGVzdHMnLCB7bmFtZTogJ1N1aXRlJ30pOworICAgICAgICBjb25zdCB0ZXN0SWQg
PSB0ZXN0Um93LmlkOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtp
ZDogd2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgn
cGxhdGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsKKyAg
ICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQsIG5h
bWU6ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdn
ZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9ubHkn
LCB0cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQo
J3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3JvdXA6
IDIzNDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0
aW9ucycsIHt0ZXN0OiB0ZXN0SWQsIHBsYXRmb3JtOiBwbGF0Zm9ybUlkLCB0cmlnZ2VyYWJsZTog
dHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9y
dFdpdGhSZXZpc2lvblswXSk7CisKKyAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAg
YXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgYW5v
dGhlclJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7
CisKKyAgICAgICAgY29uc3QgdGVzdCA9IFRlc3QuZmluZEJ5SWQodGVzdElkKTsKKyAgICAgICAg
Y29uc3Qgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxhdGZvcm1JZCk7CisgICAg
ICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2NvbmZp
Z3VyYXRpb25zJywge21ldHJpYzogdGVzdC5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06IHNv
bWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2Vs
ZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNvbnN0
IG9uZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsKKyAg
ICAgICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjog
JzE5MTYyMyd9fTsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRpdGlv
blR5cGUnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7CisgICAgICAgICAgICAgICAgbmFtZTogJ2Nv
bmZpcm0nLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogMiwKKyAgICAgICAgICAg
ICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCisgICAgICAgICAgICAgICAgcmV2aXNpb25T
ZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sCisgICAgICAgICAgICAg
ICAgcmVwZXRpdGlvblR5cGU6ICdpbnZhbGlkLW1vZGUnLAorICAgICAgICAgICAgICAgIHN0YXJ0
UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwKKyAgICAgICAgICAgICAgICBlbmRSdW46IHRlc3RSdW5z
WzFdWydpZCddLAorICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlCisgICAg
ICAgICAgICB9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVz
dC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
cHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXggNjdkODRhZGFm
NTk2YTE3MGJkZGZlYWYyMjQyMGYyYzI1MDVlMTNkNi4uNGYzNDYyNjY1YTM0NWVjYWM5ZmE4Mjkz
YzI5Y2RkZWU2OGQ1NDk0NyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNy
ZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC03LDYgKzcsOCBAQCBjb25zdCBUZXN0U2VydmVy
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IFRlbXBvcmFy
eUZpbGUgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZW1wb3JhcnktZmlsZS5qcycpLlRlbXBvcmFy
eUZpbGU7CiBjb25zdCBhZGRXb3JrZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFdvcmtlckZvclJlcG9ydDsKIGNvbnN0IHByZXBhcmVT
ZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5w
cmVwYXJlU2VydmVyVGVzdDsKK2NvbnN0IGFzc2VydFRocm93cyA9IHJlcXVpcmUoJy4vcmVzb3Vy
Y2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYXNzZXJ0VGhyb3dzOworCiAKIGZ1bmN0aW9uIGNy
ZWF0ZUFuYWx5c2lzVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMgPSBbIjE5MTYyMiIsICIxOTE2
MjMiXSkKIHsKQEAgLTQwMCw3ICs0MDIsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBncm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0
aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAu
bmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3Vw
LmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDQpOwpAQCAtNDQ3LDcgKzQ0OSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3Jv
dXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJl
cGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFn
cm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0g
Z3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00ODUsNyArNDg3LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVl
c3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CkBAIC01MjQsNyArNTI2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC01
NTYsNyArNTU4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91
cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdy
b3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAg
Y29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02MDMsNyArNjA1LDcg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91
cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
bkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vaygh
Z3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVz
dHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02NDUsNyArNjQ3LDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAg
ICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIp
OworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNO
b3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5i
dWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgNCk7CkBAIC02OTQsNyArNjk2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAg
IGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24o
KSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3Rz
KCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
NCk7CkBAIC03NDMsNyArNzQ1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUt
dGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZp
bmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTgwOCw3ICs4MTAsNyBAQCBk
ZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSkpOwpAQCAtODgzLDcgKzg4NSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQu
b2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkp
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0
Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC05NjYsNyArOTY4
LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0
aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7
CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0
LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTEwNjAsNyArMTA2Miw3IEBAIGRlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlm
aWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9y
bSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC0x
MTU3LDcgKzExNTksNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdy
b3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50
ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTIzNSw3ICsxMjM3LDcgQEAgZGVzY3Jp
YmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5vayhn
cm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91
cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDIpOwpAQCAtMTI2NCw3ICsxMjY2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0
R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0
ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmlj
YXRpb24oKSk7CiAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygp
OwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTEz
MDgsNyArMTMxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3Jv
dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBUZXN0R3JvdXAuc29ydEJ5TmFtZSh0ZXN0
R3JvdXBzKTsKIAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0u
bmFtZSgpLCAndGVzdDEnKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3Jv
dXBzWzBdLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAg
ICAgICBsZXQgcmVxdWVzdHMgPSB0ZXN0R3JvdXBzWzBdLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAg
ICAgbGV0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKQEAgLTEzMjEsNyArMTMyMyw3
IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOwogCiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGVzdEdyb3Vwc1sxXS5uYW1lKCksICd0ZXN0MicpOwotICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0ucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0uaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAyKTsKICAgICAgICAgICAgIHJlcXVlc3RzID0gdGVzdEdyb3Vwc1sxXS5idWlsZFJl
cXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCA0KTsKICAgICAgICAgICAgIHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKQEAgLTEz
MzYsNCArMTMzOCwxMzYgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1n
cm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQx
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CiAgICAgICAgIH0pOwog
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAg
d2l0aCBhbiBhbmFseXNpcyB0YXNrJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRU
cmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5u
YW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZp
c2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTog
J3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBs
YXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgbmVl
ZHNOb3RpZmljYXRpb246IHRydWUsIHJldmlzaW9uU2V0cywgcmVwZXRpdGlvblR5cGU6ICdzZXF1
ZW50aWFsJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3Jv
dXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBbYW5hbHlzaXNU
YXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFseXNpc1Rhc2suZmV0Y2hC
eUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFz
a0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhbmFseXNpc1Rhc2su
bmFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUo
KSwgJ3NlcXVlbnRpYWwnKQorICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHJlcXVlc3RzWzJdLm9yZGVyKCksIDIpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpCisgICAgICAgIGFz
c2VydChyZXF1ZXN0c1swXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbMV0uY29tbWl0U2V0
KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1
ZXN0c1szXS5jb21taXRTZXQoKSkpOworCisgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1sw
XS5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3RzWzJdLmNvbW1pdFNl
dCgpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCks
IFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLmN1c3RvbVJv
b3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9zaXRv
cmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5j
dXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQwLnJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7Cisg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCB3
aXRoIGFuIGFuYWx5c2lzIHRhc2snLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRy
aWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAn
dGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxh
dGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgbmVl
ZHNOb3RpZmljYXRpb246IHRydWUsIHJldmlzaW9uU2V0cywgcmVwZXRpdGlvblR5cGU6ICdzZXF1
ZW50aWFsJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3Jv
dXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBbYW5hbHlzaXNU
YXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFseXNpc1Rhc2suZmV0Y2hC
eUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFz
a0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhbmFseXNpc1Rhc2su
bmFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUo
KSwgJ3NlcXVlbnRpYWwnKQorICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHJlcXVlc3RzWzJdLm9yZGVyKCksIDIpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpCisgICAgICAgIGFz
c2VydChyZXF1ZXN0c1swXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbMV0uY29tbWl0U2V0
KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1
ZXN0c1szXS5jb21taXRTZXQoKSkpOworCisgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1sw
XS5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3RzWzJdLmNvbW1pdFNl
dCgpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCks
IFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLmN1c3RvbVJv
b3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9zaXRv
cmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5j
dXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQwLnJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7Cisg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCBp
biBhbiBleGlzdGluZyBhbmFseXNpcyB0YXNrJywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25z
dCB0YXNrSWQgPSBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycp
OworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3Np
dG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25z
dCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwg
e1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1
bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcs
CisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHBsYXRmb3JtOiBNb2Nr
RGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAg
ICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9u
VHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsKKyAgICAgICAgY29uc3Qg
aW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0
IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW0FuYWx5c2lz
VGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5mZXRjaEZvclRhc2so
cmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFu
YWx5c2lzVGFzay5uYW1lKCksICdzb21lIHRhc2snKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RH
cm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0
aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJykKKyAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRz
Tm90aWZpY2F0aW9uKCkpOworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVx
dWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7
CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzBdLm9yZGVyKCksIDApOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMV0ub3JkZXIoKSwgMSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKQor
ICAgICAgICBhc3NlcnQocmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzFd
LmNvbW1pdFNldCgpKSk7CisgICAgICAgIGFzc2VydChyZXF1ZXN0c1syXS5jb21taXRTZXQoKS5l
cXVhbHMocmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBzZXQwID0g
cmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1sy
XS5jb21taXRTZXQoKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLnJlcG9z
aXRvcmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0
MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0
MS5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVx
dWFsKHNldDEuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
c2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5
MTYyMycpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZFJl
cGV0aXRpb25UeXBlIiBpZiB0ZXN0IG1vZGUgaXMgbm90ICJhbHRlcm5hdGluZyIgb3IgInNlcXVl
bnRpYWwiJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENy
ZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5
LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktp
dCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9
fV07CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRpdGlvblR5cGUn
LCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2sn
LAorICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0
ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmlj
YXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywgcmVwZXRpdGlvbkNv
dW50OiAyLCByZXZpc2lvblNldHN9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5k
ZXggNDUwNmMzYjI3ZjA1ZjIzMmFiNDBjNWU2YWM3NGU3YWQ1ZjQyZDU5OC4uYjZkY2FlMmYyMTg2
NTJmYzkyOTdkZGNhNTM4NzIwNWYzYmM5YjMwOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10
ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xNjgsNyArMTY4LDcgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uKCl7
CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7CiAgICAgICAgIGFz
c2VydC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBAIC0xOTMsNyArMTkzLDcg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
KCl7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgZmFsc2UpOwogICAgICAg
ICBhc3NlcnQub2soIWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApAQCAtMjc2LDQgKzI3
Niw4NiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5
TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1
cGRhdGVkR3JvdXBzWzBdLmlzSGlkZGVuKCksIHRydWUpOwogICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCBiZSBhYmxlIHRvIGNhbmNlbCBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwIGFuZCBjbGVh
ciB0aGUgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcnLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAg
ICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9
PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlz
aW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtp
dC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAg
ICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06
IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksCisgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdh
bHRlcm5hdGluZycsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3Vw
SWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAg
IGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5hdGluZycpOworCisgICAg
ICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywg
e2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKwor
ICAgICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2so
cmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRh
dGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVk
R3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCB0ZXN0
R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCBidWlsZFJl
cXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQo
YnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVl
c3RzWzFdLmlzUGVuZGluZygpKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBjYW5j
ZWw6IHRydWV9KTsKKworICAgICAgICB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZl
dGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgdGVzdEdyb3VwID0gdXBk
YXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5tYXlO
ZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KHRlc3RHcm91cC5oYXNG
aW5pc2hlZCgpKTsKKyAgICAgICAgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5fb3JkZXJlZEJ1
aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMu
bGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0u
c3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRS
ZXF1ZXN0c1sxXS5zdGF0dXMoKSwgJ2NhbmNlbGVkJyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hv
dWxkIGJlIGFibGUgdG8gY2FuY2VsIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIGFuZCBjbGVhciB0
aGUgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcnLCBhc3luYyAoKSA9PiB7CisgICAgICAg
IGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAg
IGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiBy
ZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9u
U2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5p
ZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAg
ICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1v
Y2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksCisgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21l
VGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1
ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9
IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKworICAgICAgICBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91
cDogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAg
ICAgbGV0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3Vs
dFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdy
b3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vw
c1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgdGVzdEdyb3Vw
ID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxk
UmVxdWVzdHNbMF0uaXNQZW5kaW5nKCkpOworICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0c1sx
XS5pc1BlbmRpbmcoKSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgY2FuY2VsOiB0
cnVlfSk7CisKKyAgICAgICAgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZv
clRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIHRlc3RHcm91cCA9IHVwZGF0ZWRH
cm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1v
cmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydCh0ZXN0R3JvdXAuaGFzRmluaXNo
ZWQoKSk7CisgICAgICAgIGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuX29yZGVyZWRCdWlsZFJl
cXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0
aCwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBdLnN0YXR1
cygpLCAnY2FuY2VsZWQnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVz
dHNbMV0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcwppbmRl
eCBlY2ZlYzhkMTZlOTM0ZDU3ZDMyNzE4ODhlYzU2M2IzNDQ2ZWFiNGJhLi5mMjRmNDMzMWEwYjQx
MGM3MGJjZGI4OWIwMDhkYzk2NWQxOWI0MGEzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qcwpAQCAtNTMsNyArNTMsNyBAQCBhc3luYyBmdW5jdGlvbiBhc3NlcnRUaHJv
d3MoZXhwZWN0ZWRFcnJvciwgdGVzdEZ1bmN0aW9uKQogewogICAgIGxldCB0aHJvd25FeGNlcHRp
b24gPSBmYWxzZTsKICAgICB0cnkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCkK
KyAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCk7CiAgICAgfSBjYXRjaChlcnJvcikgewogICAg
ICAgICB0aHJvd25FeGNlcHRpb24gPSB0cnVlOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
ZXJyb3IsIGV4cGVjdGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IDY4MWFm
Y2M0Y2Y2YWQwZTU5MmVjYjYwMTFhNjFjYjFjZjk0Y2VkMWIuLmVhZWU4MWEzNDBiMTg2MmIxZmEx
MmIzNjcyNjdkY2E4NTNjMWMzNjQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTY0LDEy
ICs2NCwxNCBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9ydW5z
Jywge2lkOiA4MDEsIGNvbmZpZzogMzAxLCBidWlsZDogOTAxLCBtZWFuX2NhY2hlOiAxMDB9KSwK
ICAgICAgICAgXSk7CiAgICAgfSwKLSAgICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRiLCBzdGF0
dXNMaXN0LCBuZWVkc05vdGlmaWNhdGlvbj10cnVlLCB1cmxMaXN0PVtdKQorICAgIGFkZE1vY2tE
YXRhOiBmdW5jdGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwg
dXJsTGlzdCA9IG51bGwsIGNvbW1pdFNldExpc3QgPSBudWxsLCByZXBldGl0aW9uVHlwZSA9ICdh
bHRlcm5hdGluZycsIG1heU5lZWRNb3JlUmVxdWVzdHMgPSBmYWxzZSkKICAgICB7CiAgICAgICAg
IGlmICghc3RhdHVzTGlzdCkKICAgICAgICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRpbmcnLCAn
cGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXTsKICAgICAgICAgaWYgKCF1cmxMaXN0KQog
ICAgICAgICAgICAgdXJsTGlzdCA9IFtudWxsLCBudWxsLCBudWxsLCBudWxsXTsKKyAgICAgICAg
aWYgKCFjb21taXRTZXRMaXN0KQorICAgICAgICAgICAgY29tbWl0U2V0TGlzdCA9IFs0MDEsIDQw
MiwgNDAxLCA0MDJdOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAg
dGhpcy5hZGRNb2NrQ29uZmlndXJhdGlvbihkYiksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2Nv
bW1pdF9zZXRzJywge2lkOiA0MDF9KSwKQEAgLTgxLDE0ICs4MywxNSBAQCBNb2NrRGF0YSA9IHsK
ICAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7aWQ6IDUwMCwgcGxhdGZv
cm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzaycsCiAgICAgICAgICAgICAgICAg
c3RhcnRfcnVuOiA4MDEsIHN0YXJ0X3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWics
CiAgICAgICAgICAgICAgICAgZW5kX3J1bjogODAxLCBlbmRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3
VDEyOjA1OjI3LjFaJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dy
b3VwcycsIHtpZDogNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAnLCBpbml0
aWFsX3JlcGV0aXRpb25fY291bnQ6IDQsIG5lZWRzX25vdGlmaWNhdGlvbjogbmVlZHNOb3RpZmlj
YXRpb259KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcw
MCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB1cmw6IHVybExpc3RbMF0sIHRyaWdnZXJhYmxlOiAx
MDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3Jv
dXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHVy
bDogdXJsTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEs
IHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMSwgY29tbWl0X3Nl
dDogNDAyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3
MDIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdXJsOiB1cmxMaXN0WzJdLCB0cmlnZ2VyYWJsZTog
MTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdy
b3VwOiA2MDAsIG9yZGVyOiAyLCBjb21taXRfc2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmlu
c2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB1
cmw6IHVybExpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAx
LCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIGNvbW1pdF9z
ZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3Vwcycs
IHtpZDogNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAnLCBpbml0aWFsX3Jl
cGV0aXRpb25fY291bnQ6IDIsCisgICAgICAgICAgICAgICAgbmVlZHNfbm90aWZpY2F0aW9uOiBu
ZWVkc05vdGlmaWNhdGlvbiwgcmVwZXRpdGlvbl90eXBlOiByZXBldGl0aW9uVHlwZSwgbWF5X25l
ZWRfbW9yZV9yZXF1ZXN0czogbWF5TmVlZE1vcmVSZXF1ZXN0c30pLAorICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0s
IHVybDogdXJsTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIw
MDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMCwgY29tbWl0
X3NldDogY29tbWl0U2V0TGlzdFswXX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9y
ZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHVybDogdXJsTGlzdFsx
XSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2
NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMSwgY29tbWl0X3NldDogY29tbWl0U2V0
TGlzdFsxXX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDog
NzAyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHVybDogdXJsTGlzdFsyXSwgdHJpZ2dlcmFibGU6
IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBn
cm91cDogNjAwLCBvcmRlcjogMiwgY29tbWl0X3NldDogY29tbWl0U2V0TGlzdFsyXX0pLAorICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAzLCBzdGF0dXM6IHN0
YXR1c0xpc3RbM10sIHVybDogdXJsTGlzdFszXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRv
cnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRl
cjogMywgY29tbWl0X3NldDogY29tbWl0U2V0TGlzdFszXX0pLAogICAgICAgICBdKTsKICAgICB9
LAotICAgIGFkZE1vY2tCdWlsZFJlcXVlc3RzV2l0aFJvb3RzKGRiLCBzdGF0dXNMaXN0LCBuZWVk
c05vdGlmaWNhdGlvbj10cnVlLCBhZGRNb2NrQ29uZmlndXJhdGlvbj10cnVlKQorICAgIGFkZE1v
Y2tCdWlsZFJlcXVlc3RzV2l0aFJvb3RzKGRiLCBzdGF0dXNMaXN0LCBuZWVkc05vdGlmaWNhdGlv
biA9IHRydWUsIGFkZE1vY2tDb25maWd1cmF0aW9uID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIGNv
bnN0IHNldHVwU3RlcHMgPSBhZGRNb2NrQ29uZmlndXJhdGlvbiA/IFt0aGlzLmFkZE1vY2tDb25m
aWd1cmF0aW9uKGRiKV0gOiBbXTsKICAgICAgICAgaWYgKCFzdGF0dXNMaXN0KQpAQCAtMjAxLDEw
ICsyMDQsMTAgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnlfZ3JvdXAg
PSAyMDAxOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNjAxLCB0YXNrOiA1MDAsIG5hbWU6ICdh
bm90aGVyIHRlc3QgZ3JvdXAnLCBhdXRob3IsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3VudDogNH0p
LAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEzLCBzdGF0
dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9y
bSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwMn0pLAogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEwLCBzdGF0dXM6IHN0YXR1
c0xpc3RbMF0sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwg
Z3JvdXA6IDYwMSwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0s
IHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYw
MSwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdi
dWlsZF9yZXF1ZXN0cycsIHtpZDogNzExLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHRyaWdnZXJh
YmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6
IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1
ZXN0cycsIHtpZDogNzEyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlLCByZXBv
c2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDIsIGNvbW1p
dF9zZXQ6IDQwMX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtp
ZDogNzEzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dy
b3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQw
Mn0pLAogICAgICAgICBdKTsKICAgICB9LAogICAgIGFkZFRlc3RHcm91cFdpdGhPd25lZENvbW1p
dHMoZGIsIHN0YXR1c0xpc3QpCkBAIC00ODQsNyArNDg3LDYgQEAgTW9ja0RhdGEgPSB7CiAgICAg
ICAgICAgICAgICAgInNjaGVkdWxlciI6IFsiQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3Rz
LUZvcmNlU2NoZWR1bGVyIiwgIlNjaGVkdWxlciJdLAogICAgICAgICAgICAgICAgICJ3ayI6IFtv
cHRpb25zLndlYmtpdFJldmlzaW9uIHx8ICcxOTE2MjInLCAiVW5rbm93biJdLAogICAgICAgICAg
ICAgICAgICJvcyI6IFtvcHRpb25zLm9zeFJldmlzaW9uIHx8ICcxMC4xMSAxNUEyODQnLCAiVW5r
bm93biJdLAotICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29ya2VyTmFt
ZSB8fCAiYm90MjAyIiwgIldvcmtlciAoZGVwcmVjYXRlZCkiXSwKICAgICAgICAgICAgICAgICAi
d29ya2VybmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3JrZXIiXQog
ICAgICAgICAgICAgfQogICAgICAgICB9OwpAQCAtNTE5LDcgKzUyMSw2IEBAIE1vY2tEYXRhID0g
ewogICAgICAgICAgICAgICAgICJwcm9qZWN0IjogWycnLCAiVW5rbm93biJdLAogICAgICAgICAg
ICAgICAgICJyZXBvc2l0b3J5IjogWycnLCAiVW5rbm93biJdLAogICAgICAgICAgICAgICAgICJy
ZXZpc2lvbiI6IFsnJywgIlVua25vd24iXSwKLSAgICAgICAgICAgICAgICAid29ya2VybmFtZSI6
IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3JrZXIgKGRlcHJlY2F0ZWQpIl0s
CiAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJi
b3QyMDIiLCAiV29ya2VyIl0KICAgICAgICAgICAgIH0KICAgICAgICAgfTsgICAKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3Qt
dHJpZ2dlcmFibGUtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCmluZGV4IGI0ODcwYmIyYjA4
NmM0OWI4MjcxNTQ4NTZlMTVmNmY2NGUwMDdkMmEuLjZkNTQwNTBkNmJlYWZlNTM4MGU5NzkzYzc4
NTdkZDU0Y2Y1OTJmMTcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJs
ZS10ZXN0cy5qcwpAQCAtNjg5LDEyICs2ODksMTUgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dl
cmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1szXS5yZXNvbHZlKE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRlcklkOiBNb2NrRGF0
YS5idWlsZGVySURGb3JOYW1lKCdzb21lIGJ1aWxkZXIgMicpLCBidWlsZFJlcXVlc3RJZDogNzAw
fSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwg
NSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgJy9hcGkvdjIvZm9yY2VzY2hlZHVs
ZXJzL2ZvcmNlLXNvbWUtYnVpbGRlci0yJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLmRhdGEsIHsnaWQnOiAnNzAxJywg
J2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgogICAgICAgICAg
ICAgICAgICAgICB7J3drJzogJzE5MjczNicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQt
cmVxdWVzdC1pZCc6ICc3MDEnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Utc29tZS1idWlsZGVy
LTInfX0pOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2
ZSgnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA2KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5t
ZXRob2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCAnL2FwaS92Mi9mb3JjZXNjaGVkdWxlcnMvZm9yY2Ut
c29tZS1idWlsZGVyLTEnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0uZGF0YSwgeydpZCc6ICc3MTEnLCAnanNvbnJwYyc6
ICcyLjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFtcyc6CkBAIC04MzMsNyArODM2LDcgQEAg
ZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGZyb20gbXVs
dGlwbGUgdGVzdCBncm91cHMgcnVubmluZyBzaW11bHRlbm91c2x5JywgKCkgPT4geworICAgICAg
ICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdyb3VwcyBydW5uaW5nIHNp
bXVsdGFuZW91c2x5JywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEku
cmVxdWVzdHM7CiAKQEAgLTEwNjQsNiArMTA2Nyw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdn
ZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5kYXRhLCB7J2lkJzogJzcxMCcsICdqc29u
cnBjJzogJzIuMCcsICdtZXRob2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKICAgICAgICAgICAgICAg
ICAgICAgeyd3ayc6ICcxOTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVl
c3QtaWQnOiAnNzEwJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRlci0xJ319
KTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoJ09L
Jyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIApAQCAtMTM1Niw3ICsxMzYwLDMwOSBA
QCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICAnYnVpbGQtcmVxdWVzdC1pZCc6ICc5MDAnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9y
Y2Utc29tZS1idWlsZGVyLTInfX0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxk
IG5vdCByZXVzZSB0aGUgcm9vdCB3aGVuIGEgYnVpbGQgcmVxdWVzdCB3aXRoIHNhbWUgY29tbWl0
IHNldCBpcyBhdmFpYWxibGUgYnV0IHRoZSBidWlsZCByZXF1ZXN0IGhhcyBiZWVuIHNjaGVkdWxl
ZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIHJl
cXVlc3Qgb24gYSBidWlsZGVyIHRoZSBsYXN0IGJ1aWxkIHJlcXVlc3Qgb2Ygd2hpY2ggaXMgbm90
IGZldGNoZWQgeWV0JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0
U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0
YShkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOworICAg
ICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAg
ICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29u
c3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3Jk
J307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJh
YmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2Vy
SW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhl
bigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVl
c3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5i
dWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwor
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworICAgICAgICAgICAgYXdhaXQgTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7
CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1l
dGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRl
ci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZl
KHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0
YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDY5OCwgYnVpbGRUYWc6IDEyM30pLAorICAg
ICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWls
ZFJlcXVlc3RJZDogNjk5LCBidWlsZFRhZzogMTI0fSldfSk7CisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdQT1NU
Jyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1syXS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXItMScp
OworCisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMl0uZGF0YSwgeydpZCc6ICc3MDAnLCAnanNvbnJwYyc6ICcyLjAnLCAnbWV0aG9kJzog
J2ZvcmNlJywgJ3BhcmFtcyc6CisgICAgICAgICAgICAgICAgICAgIHsnd2snOiAnMTkxNjIyJywg
J29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcwMCcsICdmb3JjZXNj
aGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMSd9fSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoJ09LJyk7CisgICAgICAgICAgICBhc3NlcnQoIUJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg2OTkpKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBk
ZWZlciBzY2hlZHVsaW5nIHJlcXVlc3RzIGZyb20gbmV4dCBjb25maWd1cmF0aW9uIGluIHNlcXVl
bnRpYWwgdGVzdCBncm91cCB1bnRpbCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIG1lZXRzIHRo
ZSBpbml0aWFsIHJlcXVlc3RlZCBpdGVyYXRpb24gY291bnQnLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGF3
YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAncGVu
ZGluZycsICdwZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAgICAgICAgICAg
ICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpOworICAgICAgICAg
ICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0g
TW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7CisgICAgICAgICAg
ICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtl
ckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAg
ICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25m
aWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxv
Z2dlcik7CisgICAgICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5j
ZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFz
c2VydFJlcXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBN
b2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxk
ZXJzKCkpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAg
ICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwg
TW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tE
YXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJykpOworICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQg
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRh
LnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAg
ICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJ
ZDogNzAwLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNo
ZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAx
MjR9KV19KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUgYnVpbGRl
ciAyJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZl
KHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3Ro
LCA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRd
Lm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbNF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2ZSh7fSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5tZXRo
b2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzVdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZSBidWlsZGVyIDInKSk7
CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnJlc29sdmUoe30pOworCisg
ICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgOCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS5tZXRob2Qs
ICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzZdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsK
KyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0ucmVzb2x2ZSh7J2J1aWxkcycg
OiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6
IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6
IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxk
c1VybCgnc29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzddLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1
cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1
aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworCisgICAgICAgICAg
ICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVz
dFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdj
b21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
Mi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMSkuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53
ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxpbmcgb3RoZXIgYnVpbGQgcmVxdWVzdCBvbiBhIGJ1
aWxkZXIgaWYgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgaXMgc2NoZWR1bGVkIG9uIGl0IGFuZCB3
YWl0aW5nIGZvciByZXRyeScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0g
VGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW01v
Y2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2ZhaWxlZCcsICdjb21wbGV0ZWQnLCAncGVuZGluZycs
ICdwZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAgICAgICAgICAgICAgIFs0
MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpLAorICAgICAgICAgICAgICAg
IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwKKyAgICAgICAgICAgIF0pOwor
ICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3Qg
Y29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsK
KyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAg
Y29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3
b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdn
ZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29y
a2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFi
bGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAg
ICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1
aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisK
KyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2Qs
ICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7Cisg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworCisgICAg
ICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VU
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51
cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWwor
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBi
dWlsZFJlcXVlc3RJZDogNzAwLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9j
a0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDEs
IGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJs
KCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
Ml0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzLmxlbmd0aCwgNCkKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUt
YnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5y
ZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1
aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30p
LAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAw
LCBidWlsZFJlcXVlc3RJZDogNzAxLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAg
IGF3YWl0IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdjb21wbGV0ZWQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5z
dGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMv
MTI0Jyk7CisKKyAgICAgICAgICAgIGF3YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJh
YmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJh
YmxlTmFtZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCku
bGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1c1Vy
bCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGluZyBidWlsZCBy
ZXF1ZXN0IGZyb20gYW5vdGhlciB0ZXN0IGdyb3VwIG9uIGEgYnVpbGRlciBpZiBhbiBhbHRlcm5h
dGluZyB0ZXN0IGdyb3VwIHdpdGggYWxsIGV4aXN0aW5nIGJ1aWxkIHJlcXVlc3RzIGZpbmlzaGVk
IHN0aWxsIG5lZWRzIHJldHJ5JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChb
TW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWls
ZWQnLCAnY29tcGxldGVkJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMScsICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMicsCisgICAgICAgICAgICAgICAgICdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsXSwKKyAgICAgICAgICAgICAgICBb
NDAxLCA0MDIsIDQwMSwgNDAyXSwgJ2FsdGVybmF0aW5nJywgdHJ1ZSksCisgICAgICAgICAgICAg
ICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpLAorICAgICAgICAgICAgXSk7
CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgICAgICBjb25z
dCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigp
OworICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAg
ICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFz
c3dvcmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJp
Z2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3
b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2Vy
YWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7Cisg
ICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2Nr
QnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsK
KworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsK
KyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAg
ICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFd
LnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAg
ICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBb
CisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEs
IGJ1aWxkUmVxdWVzdElkOiA3MDIsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBN
b2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcw
MywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNV
cmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29t
ZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNd
LnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVk
QnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIz
fSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6
IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDMsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAg
ICAgYXdhaXQgc3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ2NvbXBsZXRl
ZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMp
LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjQnKTsKKworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dl
cmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dl
cmFibGVOYW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwo
KS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Vi
a2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVz
VXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcp
OworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsaW5nIGJ1aWxk
IHJlcXVlc3QgZnJvbSBhbm90aGVyIHRlc3QgZ3JvdXAgb24gYSBidWlsZGVyIGlmIGEgc2VxdWVu
dGlhbCB0ZXN0IGdyb3VwIHdpdGggYWxsIGV4aXN0aW5nIGJ1aWxkIHJlcXVlc3RzIGZpbmlzaGVk
IHN0aWxsIG5lZWRzIHJldHJ5JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChb
TW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWls
ZWQnLCAnY29tcGxldGVkJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMScsICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMicsCisgICAgICAgICAgICAgICAgICdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsXSwKKyAgICAgICAgICAgICAgICBb
NDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVlbnRpYWwnLCB0cnVlKSwKKyAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91cChkYiksCisgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0
IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7
CisgICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAg
IGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNz
d29yZCd9OworICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmln
Z2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdv
cmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJh
YmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAg
ICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tC
dWlsZGJvdEJ1aWxkZXJzKCkpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOwor
CisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9k
LCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1swXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOwor
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKworICAg
ICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dF
VCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0u
dXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsK
KyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwg
YnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAz
LCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1Vy
bCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21l
LWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10u
cmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRC
dWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDIsIGJ1aWxkVGFnOiAxMjN9
KSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czog
MCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAg
ICBhd2FpdCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAnY29tcGxldGVk
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMyku
c3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRz
LzEyNCcpOworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2Vy
YWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2Vy
YWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgp
Lmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJr
aXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNV
cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7
CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHJldXNlIHRoZSByb290IHdo
ZW4gYSBidWlsZCByZXF1ZXN0IHdpdGggc2FtZSBjb21taXQgc2V0IGlzIGF2YWlsYWJsZSBidXQg
dGhlIGJ1aWxkIHJlcXVlc3QgaGFzIGJlZW4gc2NoZWR1bGVkJywgYXN5bmMgKCkgPT4gewogICAg
ICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoVGVz
dFNlcnZlci5kYXRhYmFzZSgpKTsKICAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7
CiAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdX
aXRoUGF0Y2hBY2NlcHRpbmdCdWlsZGVyKCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVz
dHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMt
YnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKaW5kZXggNmZjN2E3YWM1YmMzN2E0MTA0NzJm
ZTgyYjJjOWI1NDEwZWE4ZjRkMy4uNmRhZjUzNTRkZDJmNzIwNzQ3Zjk2ZDUzYmM0YTMxY2UwNWQ4
ODI2NyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90
b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlv
bi10ZXN0cy5qcwpAQCAtMTczLDcgKzE3Myw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cCh0
YXNrX25hbWU9J2N1c3RvbSB0YXNrJykgewogICAgIHNldDEuc2V0UmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHdlYmtpdCwgJzE5MTYyMicpOwogICAgIGNvbnN0IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0
U2V0OwogICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MjczNicp
OwotICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxh
dGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29t
ZSBncm91cCcsIDIsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4geworICAgIHJldHVybiBU
ZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdh
bHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1
cm4gVGVzdEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KTsKIH0KQEAg
LTE5Myw3ICsxOTMsNyBAQCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXBXaXRoUGF0Y2go
KQogICAgIHNldDEuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MTYyMicsIHVw
bG9hZGVkUGF0Y2hGaWxlKTsKICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsK
ICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTE2MjInKTsKLSAg
ICBjb25zdCB0YXNrID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFz
aycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVz
dCwgJ3NvbWUgZ3JvdXAnLCAyLCBbc2V0MSwgc2V0Ml0pOworICAgIGNvbnN0IHRhc2sgPSBhd2Fp
dCBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIs
ICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSk7CiAKICAgICByZXR1cm4gVGVzdEdyb3VwLmZp
bmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBmdW5jdGlv
biBjcmVhdGVUZXN0R3JvdXBXaWhPd25lZENvbW1pdCgpCiAgICAgY29uc3Qgc2V0MiA9IG5ldyBD
dXN0b21Db21taXRTZXQ7CiAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
LCAnMTkyNzM2Jyk7CiAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRTSkMs
ICdvd25lZC1qc2MtOTE5MScsIG51bGwsICcxOTI3MzYnKTsKLSAgICByZXR1cm4gVGVzdEdyb3Vw
LmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCBbc2V0MSwgc2V0
Ml0pLnRoZW4oKHRhc2spID0+IHsKKyAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNr
KCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlk
KCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCAnYWx0ZXJuYXRpbmcnLCBbc2V0MSwgc2V0
Ml0pLnRoZW4oKHRhc2spID0+IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5maW5kQWxsQnlU
YXNrKHRhc2suaWQoKSlbMF07CiAgICAgfSk7CiB9CkBAIC0xNDA5LDcgKzE0MDksNyBAQCBkZXNj
cmliZSgnc3luYy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydChi
dWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKICAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0
LmlzVGVzdCgpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Qu
c3RhdHVzTGFiZWwoKSwgJ0NvbXBsZXRlZCcpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8xL2J1aWxkcy8xMjMnKTsKICAgICAgICAgICAgIGFzc2VydC5ub3RF
cXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKIAogICAgICAgICAgICAgY29uc3Qg
b3RoZXJCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOwpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMK
aW5kZXggODgyMmFmYjhjMGVkMjIzODFmNzQyMzc2YWZhMzA2ZGEyOWNjNTgyMC4uYmYwMWVmZTZk
NDVmMjkxZjUwNTZmNDhjMjZlMzdiNWYzMDUxMWQ0YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCkBAIC0xNDMsNiArMTQz
LDcgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogCiAgICAgICAgIGxldCBoYXNQZW5kaW5nQnVp
bGRzV2l0aG91dFdvcmtlck5hbWVTcGVjaWZpZWQgPSBmYWxzZTsKICAgICAgICAgbGV0IHVzZWRX
b3JrZXJzID0gbmV3IFNldDsKKyAgICAgICAgY29uc3QgbGF0ZXN0QWN0aXZlRW50cnlCeVdvcmtl
ck5hbWUgPSBuZXcgTWFwOwogICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB0aGlzLl9lbnRyeUxp
c3QpIHsKICAgICAgICAgICAgIGxldCBlbnRyeVByZXZlbnRzTmV3UmVxdWVzdCA9IGVudHJ5Lmlz
UGVuZGluZygpOwogICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW5Qcm9ncmVzcygpKSB7CkBAIC0x
NTUsNiArMTU2LDI2IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgICAgICAgICAg
ICAgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJOYW1lU3BlY2lmaWVkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB1c2VkV29ya2Vycy5hZGQoZW50cnkud29ya2VyTmFtZSgpKTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbnRyeS5oYXNGaW5pc2hlZCgpIHx8IGVudHJ5Lmlz
SW5Qcm9ncmVzcygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkud29y
a2VyTmFtZSgpLCAnRmluaXNoZWQgZW50cnkgbXVzdCBoYXZlIGEgd29ya2VyIG5hbWUnKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBsYXN0RmluaXNoZWRFbnRyeSA9IGxhdGVzdEFjdGl2ZUVudHJ5
QnlXb3JrZXJOYW1lLmdldChlbnRyeS53b3JrZXJOYW1lKCkpOworICAgICAgICAgICAgICAgIGlm
ICghbGFzdEZpbmlzaGVkRW50cnkgfHwgK2xhc3RGaW5pc2hlZEVudHJ5LmJ1aWxkVGFnKCkgPCAr
ZW50cnkuYnVpbGRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgbGF0ZXN0QWN0aXZlRW50cnlC
eVdvcmtlck5hbWUuc2V0KGVudHJ5Lndvcmtlck5hbWUoKSwgZW50cnkpCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBbbmFtZSwgZW50cnldIG9mIGxhdGVzdEFj
dGl2ZUVudHJ5QnlXb3JrZXJOYW1lLmVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgbGF0
ZXN0QWN0aXZlQnVpbGRSZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKGVudHJ5LmJ1aWxk
UmVxdWVzdElkKCkpOworICAgICAgICAgICAgaWYgKCFsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3Qp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobGF0ZXN0QWN0aXZl
QnVpbGRSZXF1ZXN0LnRlc3RHcm91cElkKCkgPT0gbmV3UmVxdWVzdC50ZXN0R3JvdXBJZCgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0g
bGF0ZXN0QWN0aXZlQnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpOworICAgICAgICAgICAgaWYgKCF0
ZXN0R3JvdXApCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodGVz
dEdyb3VwLmhhc0ZpbmlzaGVkKCkgJiYgIXRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB1c2VkV29ya2Vycy5hZGQo
bmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRoaXMuX3dvcmtlckxpc3QgfHwgaGFz
UGVuZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJOYW1lU3BlY2lmaWVkKSB7CkBAIC0xOTIsNyArMjEz
LDcgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAgICAgICAgICAgICAgICAgICBpZiAoKCF0
aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQgfHwgdGhpcy5fbGFzdENvbXBsZXRlZEJ1aWxkLmJ1aWxk
VGFnKCkgPCBlbnRyeS5idWlsZFRhZygpKSAmJiBlbnRyeS5oYXNGaW5pc2hlZCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fbGFzdENvbXBsZXRlZEJ1aWxkID0gZW50cnk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxl
dCBlbnRyeUxpc3QgPSBbXTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZCBpbiBlbnRyeUJ5
UmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICAgZW50cnlMaXN0LnB1c2goZW50cnlCeVJlcXVl
c3RbaWRdKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9i
dWlsZGJvdC10cmlnZ2VyYWJsZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9q
cy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcwppbmRleCBkNjJjZGUwMjljMTc3OTE3M2M1ZjIxZWQ4
NmFhZjFhMWMwM2RhOGEyLi4yNTI5YmFlM2M0NmJjNWYxMzFiMzI5ZDExOGNkNjhmYTcxYTk3YTNh
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qt
dHJpZ2dlcmFibGUuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1
aWxkYm90LXRyaWdnZXJhYmxlLmpzCkBAIC03LDcgKzcsNyBAQCByZXF1aXJlKCcuL3YzLW1vZGVs
cy5qcycpOwogbGV0IEJ1aWxkYm90U3luY2VyID0gcmVxdWlyZSgnLi9idWlsZGJvdC1zeW5jZXIn
KS5CdWlsZGJvdFN5bmNlcjsKIAogY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7Ci0gICAgY29u
c3RydWN0b3IoY29uZmlnLCByZW1vdGUsIGJ1aWxkYm90UmVtb3RlLCB3b3JrZXJJbmZvLCBsb2dn
ZXIpCisgICAgY29uc3RydWN0b3IoY29uZmlnLCByZW1vdGUsIGJ1aWxkYm90UmVtb3RlLCB3b3Jr
ZXJJbmZvLCBtYXhSZXRyeUZhY3RvciwgbG9nZ2VyKQogICAgIHsKICAgICAgICAgdGhpcy5fbmFt
ZSA9IGNvbmZpZy50cmlnZ2VyYWJsZU5hbWU7CiAgICAgICAgIGFzc2VydCh0eXBlb2YodGhpcy5f
bmFtZSkgPT0gJ3N0cmluZycsICd0cmlnZ2VyYWJsZU5hbWUgbXVzdCBiZSBzcGVjaWZpZWQnKTsK
QEAgLTI1LDYgKzI1LDcgQEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAKICAgICAgICAg
dGhpcy5fc3luY2VycyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2xvZ2dlciA9IGxvZ2dlciB8fCB7
bG9nOiAoKSA9PiB7IH0sIGVycm9yOiAoKSA9PiB7IH19OworICAgICAgICB0aGlzLl9tYXhSZXRy
eUZhY3RvciA9IG1heFJldHJ5RmFjdG9yOwogICAgIH0KIAogICAgIGdldEJ1aWxkZXJOYW1lVG9J
RE1hcCgpCkBAIC04NSwxMyArODYsMjIgQEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAg
ICAgICAgIGNvbnN0IHZhbGlkUmVxdWVzdHMgPSB0aGlzLl92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxk
UmVxdWVzdHMpOwogICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzQnlHcm91cCA9IEJ1aWxkYm90
VHJpZ2dlcmFibGUuX3Rlc3RHcm91cE1hcEZvckJ1aWxkUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7
CiAgICAgICAgIGxldCB1cGRhdGVzID0gYXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5j
ZXJzKGJ1aWxkUmVxdWVzdHNCeUdyb3VwKTsKLSAgICAgICAgbGV0IHJvb3RSZXVzZVVwZGF0ZXMg
PSB7fQorICAgICAgICBsZXQgcm9vdFJldXNlVXBkYXRlcyA9IHt9OwogICAgICAgICB0aGlzLl9s
b2dnZXIubG9nKCdTY2hlZHVsaW5nIGJ1aWxkcycpOwogICAgICAgICBjb25zdCB0ZXN0R3JvdXBM
aXN0ID0gQXJyYXkuZnJvbShidWlsZFJlcXVlc3RzQnlHcm91cC52YWx1ZXMoKSkuc29ydChmdW5j
dGlvbiAoYSwgYikgeyByZXR1cm4gYS5ncm91cE9yZGVyIC0gYi5ncm91cE9yZGVyOyB9KTsKIAot
ICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0ZXN0R3JvdXBMaXN0Lm1hcCgoZ3JvdXApID0+IFtn
cm91cCwgdGhpcy5fbmV4dFJlcXVlc3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKV0pCi0gICAgICAg
ICAgICAuZmlsdGVyKChbZ3JvdXAsIHJlcXVlc3RdKSA9PiB2YWxpZFJlcXVlc3RzLmhhcyhyZXF1
ZXN0KSkKLSAgICAgICAgICAgIC5tYXAoKFtncm91cCwgcmVxdWVzdF0pID0+IHRoaXMuX3NjaGVk
dWxlUmVxdWVzdChncm91cCwgcmVxdWVzdCwgcm9vdFJldXNlVXBkYXRlcykpKTsKKyAgICAgICAg
YXdhaXQgUHJvbWlzZS5hbGwoWy4uLmJ1aWxkUmVxdWVzdHNCeUdyb3VwLmtleXMoKV0ubWFwKHRl
c3RHcm91cElkID0+IFRlc3RHcm91cC5mZXRjaEJ5SWQodGVzdEdyb3VwSWQsIHRydWUpKSk7Cisg
ICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGVzdEdyb3VwTGlzdCkgeworICAgICAgICAgICAg
Y29uc3QgcmVxdWVzdCA9IHRoaXMuX25leHRSZXF1ZXN0SW5Hcm91cChncm91cCwgdXBkYXRlcyk7
CisgICAgICAgICAgICBpZiAoIXZhbGlkUmVxdWVzdHMuaGFzKHJlcXVlc3QpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBjb25zdCBzaG91bGREZWZlciA9IHRoaXMu
X3Nob3VsZERlZmVyU2VxdWVudGlhbFRlc3RpbmdSZXF1ZXN0V2l0aE5ld0NvbW1pdFNldChyZXF1
ZXN0KTsKKyAgICAgICAgICAgIGlmIChzaG91bGREZWZlcikKKyAgICAgICAgICAgICAgICB0aGlz
Ll9sb2dnZXIubG9nKGBEZWZlciBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3QgIiR7cmVxdWVzdC5p
ZCgpfSIgdW50aWwgY29tcGxldGVkIGJ1aWxkIHJlcXVlc3RzIGZvciBwcmV2aW91cyBjb25maWd1
cmF0aW9uIG1lZXQgdGhlIGV4cGVjdGF0aW9uIG9yIGV4aGF1c3QgcmV0cnkuYCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2NoZWR1bGVSZXF1ZXN0KGdy
b3VwLCByZXF1ZXN0LCByb290UmV1c2VVcGRhdGVzKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8v
IFB1bGwgYWxsIGJ1aWxkYm90cyBmb3IgdGhlIHNlY29uZCB0aW1lIHNpbmNlIHRoZSBwcmV2aW91
cyBzdGVwIG1heSBoYXZlIHNjaGVkdWxlZCBtb3JlIGJ1aWxkcwogICAgICAgICB1cGRhdGVzID0g
YXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVzdHNCeUdyb3Vw
KTsKQEAgLTEyMywxMSArMTMzLDM3IEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMu
X3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUoYnVpbGRSZXF1ZXN0LCB0ZXN0R3Jv
dXAucmVxdWVzdHMsCisgICAgICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZVJlcXVlc3RJZldvcmtl
cklzQXZhaWxhYmxlKGJ1aWxkUmVxdWVzdCwgdGVzdEdyb3VwLnJlcXVlc3RzLAogICAgICAgICAg
ICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRlc3RHcm91cC5idWlsZFN5bmNlciA6IHRlc3RH
cm91cC50ZXN0U3luY2VyLAogICAgICAgICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRl
c3RHcm91cC5idWlsZFdvcmtlck5hbWUgOiB0ZXN0R3JvdXAudGVzdFdvcmtlck5hbWUpOwogICAg
IH0KIAorICAgIF9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0aW5nUmVxdWVzdFdpdGhOZXdDb21t
aXRTZXQoYnVpbGRSZXF1ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGJ1aWxkUmVxdWVzdC5pc0J1
aWxkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgdGVzdEdy
b3VwID0gYnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpOworICAgICAgICBpZiAodGVzdEdyb3VwLnJl
cGV0aXRpb25UeXBlKCkgIT0gJ3NlcXVlbnRpYWwnKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmICh0ZXN0R3JvdXAuaXNGaXJzdFRlc3RSZXF1ZXN0KGJ1aWxkUmVxdWVz
dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgcHJlY2VkaW5n
QnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLnByZWNlZGluZ0J1aWxkUmVxdWVzdChidWlsZFJlcXVl
c3QpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcHJlY2VkaW5nQnVpbGRSZXF1ZXN0LmlzQnVp
bGQoKSk7CisKKyAgICAgICAgY29uc3QgcHJldmlvdXNDb21taXRTZXQgPSBwcmVjZWRpbmdCdWls
ZFJlcXVlc3QuY29tbWl0U2V0KCkKKyAgICAgICAgaWYgKHByZXZpb3VzQ29tbWl0U2V0ID09PSBi
dWlsZFJlcXVlc3QuY29tbWl0U2V0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgY29uc3QgcmV0cnlMaW1pdCA9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCkgKiB0aGlzLl9tYXhSZXRyeUZhY3RvcjsKKyAgICAgICAgaWYgKHRlc3RHcm91cC53aWxsRXhj
ZWVkUmV0cnlMaW1pdFdpdGhSZXRyeUNvdW50KHByZXZpb3VzQ29tbWl0U2V0LCAwLCByZXRyeUxp
bWl0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdGVzdEdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSA+IHRlc3RHcm91cC5zdWNjZXNzZnVsVGVzdFJl
cXVlc3RDb3VudChwcmV2aW91c0NvbW1pdFNldCk7CisgICAgfQorCiAgICAgX3ZhbGlkYXRlUmVx
dWVzdHMoYnVpbGRSZXF1ZXN0cykKICAgICB7CiAgICAgICAgIGNvbnN0IHRlc3RQbGF0Zm9ybVBh
aXJzID0ge307CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMv
bWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL21lYXN1cmVtZW50LXNldC1hbmFseXplci5qcwppbmRleCBhYjg2YTFkNGUzMzc5NGJl
NzhjZmJiZTBmNzY1OTllYTg1N2JlYmFmLi5jYzY1MGNhOTQ1ZGJhZWRmOWI5NWQ0ZmUwZDljYTE1
ODc5MjgyYWUyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMv
bWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy90b29scy9qcy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIuanMKQEAgLTEwOCw3ICsxMDgsNyBA
QCBjbGFzcyBNZWFzdXJlbWVudFNldEFuYWx5emVyIHsKICAgICAgICAgY29uc3Qgc3RhcnRDb21t
aXRTZXQgPSByYW5nZVdpdGhNb3N0U2lnbmlmaWNhbnRDaGFuZ2Uuc3RhcnRQb2ludC5jb21taXRT
ZXQoKTsKICAgICAgICAgY29uc3QgZW5kQ29tbWl0U2V0ID0gcmFuZ2VXaXRoTW9zdFNpZ25pZmlj
YW50Q2hhbmdlLmVuZFBvaW50LmNvbW1pdFNldCgpOwogICAgICAgICBjb25zdCBzdW1tYXJ5ID0g
YFBvdGVudGlhbCAke3JhbmdlV2l0aE1vc3RTaWduaWZpY2FudENoYW5nZS52YWx1ZUNoYW5nZVN1
bW1hcnkuY2hhbmdlTGFiZWx9IG9uICR7cGxhdGZvcm0ubmFtZSgpfSBiZXR3ZWVuICR7Q29tbWl0
U2V0LmRpZmYoc3RhcnRDb21taXRTZXQsIGVuZENvbW1pdFNldCl9YDsKLSAgICAgICAgY29uc3Qg
Y29uZmlybWluZ1Rhc2tBcmd1bWVudHMgPSBUcmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJh
dGlvbihtZXRyaWMudGVzdCgpLCBwbGF0Zm9ybSkgPyBbJ0NvbmZpcm0nLCA0LCB0cnVlXSA6IFtd
OworICAgICAgICBjb25zdCBjb25maXJtaW5nVGFza0FyZ3VtZW50cyA9IFRyaWdnZXJhYmxlLmZp
bmRCeVRlc3RDb25maWd1cmF0aW9uKG1ldHJpYy50ZXN0KCksIHBsYXRmb3JtKSA/IFsnQ29uZmly
bScsIDQsICdhbHRlcm5hdGluZycsIHRydWVdIDogW107CiAKICAgICAgICAgLy8gRklYTUU6IFRo
ZSBpdGVyYXRpb24gY291bnQgc2hvdWxkIGJlIHNtYXJ0ZXIgdGhhbiBoYXJkLWNvZGluZy4KICAg
ICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmNyZWF0ZShzdW1t
YXJ5LCByYW5nZVdpdGhNb3N0U2lnbmlmaWNhbnRDaGFuZ2Uuc3RhcnRQb2ludCwKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQt
cmVxdWVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFp
bGVkLWJ1aWxkLXJlcXVlc3RzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDVi
YTIyNDVjYjAyYWU0ZTkzMzEyNmI3ODk2YTZiMjhhMzIxZTQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0
NyArMCwwIEBACi1hc3luYyBmdW5jdGlvbiBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgbWF4aW11bVJldHJ5RmFj
dG9yKQotewotICAgIGZvciAoY29uc3QgdGVzdEdyb3VwIG9mIHRlc3RHcm91cHMpIHsKLSAgICAg
ICAgaWYgKCF0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgaWYgKHRlc3RHcm91cC5pc0hpZGRlbigpKSB7Ci0gICAgICAgICAg
ICBhd2FpdCB0ZXN0R3JvdXAuY2xlYXJNYXlOZWVkTW9yZUJ1aWxkUmVxdWVzdHMoKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IG1heE1pc3NpbmdCdWls
ZFJlcXVlc3RDb3VudCA9IDA7Ci0gICAgICAgIGxldCBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RG
b3JFYWNoQ29tbWl0U2V0ID0gdHJ1ZTsKLSAgICAgICAgbGV0IGhhc1VuZmluaXNoZWRCdWlsZFJl
cXVlc3QgPSBmYWxzZTsKLSAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdGVzdEdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKSkgewotICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigoYnVp
bGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVlc3QuaXNUZXN0KCkpOwotCi0gICAgICAgICAgICBjb25z
dCBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWls
ZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoOwotICAgICAg
ICAgICAgaWYgKCFjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCkKLSAgICAgICAgICAgICAgICBo
YXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgJj0gKGNvbXBs
ZXRlZEJ1aWxkUmVxdWVzdENvdW50ID4gMCk7Ci0gICAgICAgICAgICBjb25zdCB1bmZpbmlzaGVk
QnVpbGRSZXF1ZXN0Q291bnQgPSBidWlsZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9
PiAhYnVpbGRSZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpLmxlbmd0aDsKLSAgICAgICAgICAgIC8vICJw
b3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCIgbWlnaHQgYmUgbGFyZ2VyIHRoYW4gdGVzdEdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSBhcyB1c2VyIG1heSBhZGQgYnVpbGQgcmVxdWVzdHMg
bWFudWFsbHkuCi0gICAgICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9
IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ICsgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50
OwotICAgICAgICAgICAgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0gTWF0aC5tYXgobWF4
TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50LCB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCgpIC0gcG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQpOwotCi0gICAgICAgICAgICBpZiAodW5m
aW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50KQotICAgICAgICAgICAgICAgIGhhc1VuZmluaXNoZWRC
dWlsZFJlcXVlc3QgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHdpbGxFeGNlZWRN
YXhpbXVtUmV0cnkgPSB0ZXN0R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgKyBtYXhNaXNzaW5nQnVp
bGRSZXF1ZXN0Q291bnQgPiBtYXhpbXVtUmV0cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1heE1pc3NpbmdCdWls
ZFJlcXVlc3RDb3VudCA8PSB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKLSAg
ICAgICAgaWYgKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCAmJiAhd2lsbEV4Y2VlZE1heGlt
dW1SZXRyeSAmJiBoYXNVbmZpbmlzaGVkQnVpbGRSZXF1ZXN0ICYmICFoYXNDb21wbGV0ZWRCdWls
ZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgaWYgKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCAmJiAhd2lsbEV4Y2VlZE1heGltdW1S
ZXRyeSAmJiBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0KSB7Ci0gICAg
ICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuYWRkTW9yZUJ1aWxkUmVxdWVzdHMobWF4TWlzc2luZ0J1
aWxkUmVxdWVzdENvdW50KTsKLSAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0
IHRlc3RHcm91cC5mZXRjaFRhc2soKTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBZGRlZCAk
e21heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudH0gYnVpbGQgcmVxdWVzdChzKSB0byAiJHt0ZXN0
R3JvdXAubmFtZSgpfSIgb2YgYW5hbHlzaXMgdGFzazogJHthbmFseXNpc1Rhc2suaWQoKX0gLSAi
JHthbmFseXNpc1Rhc2submFtZSgpfSJgKTsKLSAgICAgICAgfQotICAgICAgICBhd2FpdCB0ZXN0
R3JvdXAuY2xlYXJNYXlOZWVkTW9yZUJ1aWxkUmVxdWVzdHMoKTsKLSAgICB9Ci19Ci0KLWlmICh0
eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykKLSAgICBtb2R1bGUuZXhwb3J0cy5jcmVhdGVB
ZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMgPSBj
cmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVz
dHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9ydW4tYW5hbHlzaXMuanMKaW5kZXggZDYwZjgxZTEyYmQ4NzdiN2U1MDZjMGVk
MDM2NWJkY2Y3MDU1ODg4Zi4uMzYyZWFlNTNjNmE4MDhkMmM5NDgwZjkyZWU5ZjY5NTZmYmViNDc0
MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNp
cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpz
CkBAIC02LDcgKzYsNiBAQCBjb25zdCBSZW1vdGVBUEkgPSByZXF1aXJlKCcuL2pzL3JlbW90ZS5q
cycpLlJlbW90ZUFQSTsKIGNvbnN0IE1lYXN1cmVtZW50U2V0QW5hbHl6ZXIgPSByZXF1aXJlKCcu
L2pzL21lYXN1cmVtZW50LXNldC1hbmFseXplci5qcycpLk1lYXN1cmVtZW50U2V0QW5hbHl6ZXI7
CiBjb25zdCBBbmFseXNpc1Jlc3VsdHNOb3RpZmllciA9IHJlcXVpcmUoJy4vanMvYW5hbHlzaXMt
cmVzdWx0cy1ub3RpZmllci5qcycpLkFuYWx5c2lzUmVzdWx0c05vdGlmaWVyOwogY29uc3QgU3Vi
cHJvY2VzcyA9IHJlcXVpcmUoJy4vanMvc3VicHJvY2Vzcy5qcycpLlN1YnByb2Nlc3M7Ci1jb25z
dCBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVx
dWVzdHMgPSByZXF1aXJlKCcuL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cycpLmNyZWF0
ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsK
IHJlcXVpcmUoJy4vanMvdjMtbW9kZWxzLmpzJyk7CiBnbG9iYWwuUHJpdmlsZWdlZEFQSSA9IHJl
cXVpcmUoJy4vanMvcHJpdmlsZWdlZC1hcGkuanMnKS5Qcml2aWxlZ2VkQVBJOwogCkBAIC00OSwx
MiArNDgsMTEgQEAgYXN5bmMgZnVuY3Rpb24gYW5hbHlzaXNMb29wKG9wdGlvbnMpCiAgICAgICAg
IGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBhbmFseXplIG1lYXN1cmVtZW50IHNldHMgZHVlIHRv
ICR7ZXJyb3J9YCk7CiAgICAgfQogCisgICAgY29uc3QgbWF4aW11bVJldHJ5RmFjdG9yID0gb3B0
aW9uc1snLS1tYXgtcmV0cnktZmFjdG9yJ107CisgICAgYXdhaXQgcHJvY2Vzc1Rlc3RHcm91cE1h
eU5lZWRNb3JlUmVxdWVzdHMobWF4aW11bVJldHJ5RmFjdG9yKTsKKwogICAgIHRyeSB7CiAgICAg
ICAgIGNvbnN0IG5vdGlmaWNhdGlvbkNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5j
KG9wdGlvbnNbJy0tbm90aWZpY2F0aW9uLWNvbmZpZy1qc29uJ10sICd1dGYtOCcpKTsKLSAgICAg
ICAgY29uc3QgbWF4aW11bVJldHJ5RmFjdG9yID0gb3B0aW9uc1snLS1tYXgtcmV0cnktZmFjdG9y
J107Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3RzID0gYXdhaXQg
VGVzdEdyb3VwLmZldGNoQWxsVGhhdE1heU5lZWRNb3JlUmVxdWVzdHMoKTsKLSAgICAgICAgYXdh
aXQgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJl
cXVlc3RzKHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3RzLCBtYXhpbXVtUmV0cnlGYWN0b3Ip
OwotCiAgICAgICAgIGNvbnN0IHRlc3RHcm91cHNOZWVkTm90aWZpY2F0aW9uID0gYXdhaXQgVGVz
dEdyb3VwLmZldGNoQWxsV2l0aE5vdGlmaWNhdGlvblJlYWR5KCk7CiAgICAgICAgIGNvbnN0IG5v
dGlmaWNhdGlvblJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkobm90aWZpY2F0aW9uQ29uZmlnLm5v
dGlmaWNhdGlvblNlcnZlckNvbmZpZyk7CiAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbk1lc3Nh
Z2VDb25maWcgPSBub3RpZmljYXRpb25Db25maWcubm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZzsK
QEAgLTYzLDEyICs2MSwyNyBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0aW9ucykK
IAogICAgICAgICBhd2FpdCBub3RpZmllci5zZW5kTm90aWZpY2F0aW9uc0ZvclRlc3RHcm91cHMo
dGVzdEdyb3Vwc05lZWROb3RpZmljYXRpb24pOwogICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAg
ICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZXRyeSB0ZXN0IGdyb3VwcyBkdWUgdG8gJHtl
cnJvcn1gKTsKKyAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHNlbmQgbm90aWZpY2F0
aW9uIGZvciB0ZXN0IGdyb3VwcyBkdWUgdG8gJHtlcnJvcn1gKTsKICAgICB9CiAKICAgICBjb25z
b2xlLmxvZyhgU2xlZXBpbmcgZm9yICR7c2Vjb25kc1RvU2xlZXB9IHNlY29uZHMuYCk7CiAgICAg
c2V0VGltZW91dCgoKSA9PiBhbmFseXNpc0xvb3Aob3B0aW9ucyksIHNlY29uZHNUb1NsZWVwICog
MTAwMCk7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIHByb2Nlc3NUZXN0R3JvdXBNYXlOZWVkTW9yZVJl
cXVlc3RzKG1heFJldHJ5RmFjdG9yKQoreworICAgIGNvbnN0IHRlc3RHcm91cHNNYXlOZWVkTW9y
ZVJlcXVlc3RzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoQWxsVGhhdE1heU5lZWRNb3JlUmVxdWVz
dHMoKTsKKyAgICB0cnkgeworICAgICAgICBmb3IgKGNvbnN0IHRlc3RHcm91cCBvZiB0ZXN0R3Jv
dXBzTWF5TmVlZE1vcmVSZXF1ZXN0cykKKyAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5yZXNv
bHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcobWF4UmV0cnlGYWN0b3IpOworICAgIH0gY2F0Y2gg
KGVycm9yKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICBpZiAodHlw
ZW9mKGVycm9yLnN0YWNrKSA9PSAnc3RyaW5nJykgeworICAgICAgICAgICAgZm9yIChsZXQgbGlu
ZSBvZiBlcnJvci5zdGFjay5zcGxpdCgnXG4nKSkKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVy
cm9yKGxpbmUpOworICAgICAgICB9CisgICAgfQorfQorCiAKIG1haW4ocHJvY2Vzcy5hcmd2KTsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKaW5k
ZXggNmYzNTBlYjI0ODJjZjZkMTQ4Y2E4NDE0MGEyY2QwNGQ4ZTMwNmU0Mi4uNzBhMmE0ZTNkNDIz
NTBiZDJmYTFiMzQzMjg3NGRmNjg1NWVjNTNkNiAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKQEAgLTEyLDYgKzEyLDcgQEAgZnVuY3Rpb24g
bWFpbihhcmd2KQogICAgICAgICB7bmFtZTogJy0tc2VydmVyLWNvbmZpZy1qc29uJywgcmVxdWly
ZWQ6IHRydWV9LAogICAgICAgICB7bmFtZTogJy0tYnVpbGRib3QtY29uZmlnLWpzb24nLCByZXF1
aXJlZDogdHJ1ZX0sCiAgICAgICAgIHtuYW1lOiAnLS1zZWNvbmRzLXRvLXNsZWVwJywgdHlwZTog
cGFyc2VGbG9hdCwgZGVmYXVsdDogMTIwfSwKKyAgICAgICAge25hbWU6ICctLW1heC1yZXRyeS1m
YWN0b3InLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiAzfSwKICAgICBdKTsKICAgICBpZiAo
IW9wdGlvbnMpCiAgICAgICAgIHJldHVybjsKQEAgLTI0LDYgKzI1LDcgQEAgZnVuY3Rpb24gc3lu
Y0xvb3Aob3B0aW9ucykKICAgICBsZXQgc2VydmVyQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFk
RmlsZVN5bmMob3B0aW9uc1snLS1zZXJ2ZXItY29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7CiAgICAg
bGV0IGJ1aWxkYm90Q29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9uc1sn
LS1idWlsZGJvdC1jb25maWctanNvbiddLCAndXRmOCcpKTsKICAgICBsZXQgYnVpbGRib3RSZW1v
dGUgPSBuZXcgUmVtb3RlQVBJKGJ1aWxkYm90Q29uZmlnLnNlcnZlcik7CisgICAgY29uc3QgbWF4
UmV0cnlGYWN0b3IgPSBvcHRpb25zWyctLW1heC1yZXRyeS1mYWN0b3InXTsKIAogICAgIC8vIHYz
IG1vZGVscyB1c2UgdGhlIGdsb2JhbCBSZW1vdGVBUEkgdG8gYWNjZXNzIHRoZSBwZXJmIGRhc2hi
b2FyZC4KICAgICBnbG9iYWwuUmVtb3RlQVBJID0gbmV3IFJlbW90ZUFQSShzZXJ2ZXJDb25maWcu
c2VydmVyKTsKQEAgLTMxLDcgKzMzLDcgQEAgZnVuY3Rpb24gc3luY0xvb3Aob3B0aW9ucykKICAg
ICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgdGhlIG1hbmlmZXN0Li4uYCk7CiAKICAgICBjb25zdCBt
YWtlVHJpZ2dlcmFibGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQnVpbGRi
b3RUcmlnZ2VyYWJsZShidWlsZGJvdENvbmZpZywgZ2xvYmFsLlJlbW90ZUFQSSwgYnVpbGRib3RS
ZW1vdGUsIHNlcnZlckNvbmZpZy53b3JrZXIsIGNvbnNvbGUpCisgICAgICAgIHJldHVybiBuZXcg
QnVpbGRib3RUcmlnZ2VyYWJsZShidWlsZGJvdENvbmZpZywgZ2xvYmFsLlJlbW90ZUFQSSwgYnVp
bGRib3RSZW1vdGUsIHNlcnZlckNvbmZpZy53b3JrZXIsIG1heFJldHJ5RmFjdG9yLCBjb25zb2xl
KQogICAgIH07CiAKICAgICBNYW5pZmVzdC5mZXRjaCgpLnRoZW4oKCkgPT4gewpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0
cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2st
dGVzdHMuanMKaW5kZXggOGQyOGFjNGZhZmM0OGVhYTE3ODJjNWRmMWVhYjc3NzA5MmQ4N2YxNC4u
MmU2NzBiMDc5NTExNGViNjc1NTI1YzJkZjdiZWExMzhkMzM4ZTdjMCAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRl
c3RzLmpzCkBAIC0zMDcsNyArMzA3LDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+
IHsKIAogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbmFseXNpcyB0YXNrIHdpdGggY29uZmly
bWluZyByZXBldGl0aW9uIGNvdW50IHNwZWNpZmllZCcsIGFzeW5jICgpID0+IHsKICAgICAgICAg
ICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQb2ludHMo
KTsKLSAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50
LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIEFuYWx5c2lzVGFz
ay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCAn
YWx0ZXJuYXRpbmcnLCB0cnVlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9w
cml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAgICAgICAgICByZXF1ZXN0
c1swXS5yZXNvbHZlKHsKQEAgLTMxOCw3ICszMTgsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNr
JywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVz
dCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVl
c3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNO
b3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3Rp
ZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAg
ICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywg
dG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6
IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0
Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9z
LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzI5
LDcgKzMyOSw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAg
aXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayBhbmQgdGVzdCBncm91cHMgd2l0aCAibmVl
ZHNOb3RpZmljYXRpb24iIHNldCB0byBmYWxzZSBpZiBzcGVjaWZpZWQgaW4gY3JlYXRpb24nLCBh
c3luYyAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0g
bW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRl
KCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgZmFsc2UpOwor
ICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVu
ZFBvaW50LCAnQ29uZmlybScsIDQsICdhbHRlcm5hdGluZycsIGZhbHNlKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2Vu
Jyk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKQEAgLTM0MCw3ICszNDAsNyBA
QCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJl
cGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLAorICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBl
dGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6
ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwg
dGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwog
ICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEn
LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsfX0sCkBAIC0zNTEsNyArMzUxLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lz
VGFzaycsICgpID0+IHsKIAogICAgICAgICBpdCgnc2hvdWxkIHN5bmMgdGhlIG5ldyBhbmFseXNp
cyB0YXNrIHN0YXR1cyBvbmNlIGl0IGlzIGNyZWF0ZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAg
ICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRz
KCk7Ci0gICAgICAgICAgICBjb25zdCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3Jl
YXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7
CisgICAgICAgICAgICBjb25zdCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRl
KCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVybmF0
aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdl
ZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSh7CkBAIC0zNjIsNyArMzYyLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+
IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5k
YXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0
aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRh
LCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICBz
dGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRva2VuOiAn
YWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNp
b246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lv
bi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTQxMiw3ICs0MTIs
NyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91
bGQgcmV0dXJuIGFuIHJlamVjdGVkIHByb21pc2Ugd2hlbiBhbmFseXNpcyB0YXNrIGNyZWF0aW9u
IGZhaWxlZCcsIGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IFtzdGFydFBvaW50LCBl
bmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQb2ludHMoKTsKLSAgICAgICAgICAgIGNvbnN0IGNy
ZWF0aW5nUHJvbWlzZSA9IEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50
LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIGNvbnN0IGNyZWF0
aW5nUHJvbWlzZSA9IEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBl
bmRQb2ludCwgJ0NvbmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2Vu
Jyk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKQEAgLTQyMyw3ICs0MjMsNyBA
QCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJl
cGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0
aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAn
YWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRl
c3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAg
ICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywg
b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAg
ICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxs
LCBwYXRjaDogbnVsbH19LApAQCAtNDU3LDExICs0NTcsMTEgQEAgZGVzY3JpYmUoJ0FuYWx5c2lz
VGFzaycsICgpID0+IHsKIAogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbmFseXNpcyB0YXNr
IHdpdGggY29uZmlybWluZyByZXBldGl0aW9uIGNvdW50IHNwZWNpZmllZCcsICgpID0+IHsKICAg
ICAgICAgICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQ
b2ludHMoKTsKLSAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFy
dFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIEFuYWx5
c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0n
LCA0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBl
dGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAotICAgICAgICAgICAgICAg
IHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHdvcmtlck5hbWU6ICd3b3JrZXInLCB3b3JrZXJQYXNz
d29yZDogJ3Bhc3N3b3JkJywKKyAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAy
LCB3b3JrZXJOYW1lOiAnd29ya2VyJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6
ICdDb25maXJtJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7
cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNo
OiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1y
ZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5
bmNlci10ZXN0cy5qcwppbmRleCA4Nzk4NmQzNmY1NmZjNTNmODlkYWMwZWNlNTA5YTE0OTdhYjM3
MWNlLi4wMzQyYWMwMWE0YWY1ZGJjYzE1Njk2MjJhMmRiMWQ2NWE3YzI2MjczIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVz
dHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qt
c3luY2VyLXRlc3RzLmpzCkBAIC0xODcsNyArMTg3LDcgQEAgZnVuY3Rpb24gY3JlYXRlU2FtcGxl
QnVpbGRSZXF1ZXN0KHBsYXRmb3JtLCB0ZXN0KQogCiAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5l
bnN1cmVTaW5nbGV0b24oJzE2NzMzLScgKyBwbGF0Zm9ybS5pZCgpLCB7J3RyaWdnZXJhYmxlJzog
TW9ja01vZGVscy50cmlnZ2VyYWJsZSwKICAgICAgICAgcmVwb3NpdG9yeUdyb3VwOiBNb2NrTW9k
ZWxzLnN2blJlcG9zaXRvcnlHcm91cCwKLSAgICAgICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwg
J3N0YXR1cyc6ICdwZW5kaW5nJywgJ3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdH0p
OworICAgICAgICAnY29tbWl0U2V0JzogY29tbWl0U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAn
cGxhdGZvcm0nOiBwbGF0Zm9ybSwgJ3Rlc3QnOiB0ZXN0LCBvcmRlcjogMH0pOwogfQogCiBmdW5j
dGlvbiBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3RXaXRoUGF0Y2gocGxhdGZvcm0sIHRlc3QsIG9y
ZGVyKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVh
c3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzCmluZGV4IDA3ZmNi
M2RiM2RlNmIxMmU2Yjk0N2NjNjMwY2QwN2JiNmEwNGZiYmEuLjA5MDdhMGIwMTZhMDUxNDgzNDdk
Y2IzZjQ3N2UyYTkyNTk4YWFmYmIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIt
dGVzdHMuanMKQEAgLTIzNSw2ICsyMzUsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFs
eXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAg
ICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5l
ZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAn
YWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2
aXNpb246IDM1LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAg
ICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA0NCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0
Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpAQCAtMjk0LDYgKzI5NSw3IEBAIGRlc2NyaWJl
KCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAgICAgIHJlcGV0
aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScs
CiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICAg
ICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgcmV2aXNp
b25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogMzUsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNo
OiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246IDQ0LCBvd25l
clJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7CkBAIC01MjYs
NiArNTI4LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAgICAgIHRlc3RH
cm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAg
ICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiA0MCwgb3duZXJS
ZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6
IHtyZXZpc2lvbjogNDksIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAg
ICAgICAgICB9KTsKQEAgLTYxOCw2ICs2MjEsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRB
bmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAg
ICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAg
IG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBl
OiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7
cmV2aXNpb246IDMsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAg
ICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246IDgsIG93bmVyUmV2aXNpb246IG51bGwsIHBh
dGNoOiBudWxsfX1dCiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWls
ZC1yZXF1ZXN0cy10ZXN0cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgyZDgw
ZGNhNWVmOGYwODM1ODljNjU0MWJhMjQ1NmFmZDEyODYyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwyNTIgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1jb25zdCBhc3NlcnQgPSByZXF1aXJl
KCdhc3NlcnQnKTsKLXJlcXVpcmUoJy4uL3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOwotY29uc3Qg
TW9ja01vZGVscyA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJykuTW9j
a01vZGVsczsKLWNvbnN0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2Nr
LXJlbW90ZS1hcGkuanMnKS5Nb2NrUmVtb3RlQVBJOwotY29uc3QgTm9kZVByaXZpbGVnZWRBUEkg
PSByZXF1aXJlKCcuLi90b29scy9qcy9wcml2aWxlZ2VkLWFwaScpLlByaXZpbGVnZWRBUEk7Ci1j
b25zdCBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVk
UmVxdWVzdHMgPSByZXF1aXJlKCcuLi90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVz
dHMnKS5jcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVk
UmVxdWVzdHM7Ci0KLQotZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewotICAgIGNv
bnN0IG5lZWRzTm90aWZpY2F0aW9uID0gY29uZmlnLm5lZWRzTm90aWZpY2F0aW9uOwotICAgIGNv
bnN0IGluaXRpYWxSZXBldGl0aW9uQ291bnQgPSBjb25maWcuaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dDsKLSAgICBjb25zdCBtYXlOZWVkTW9yZVJlcXVlc3RzID0gY29uZmlnLm1heU5lZWRNb3JlUmVx
dWVzdHM7Ci0gICAgY29uc3QgaGlkZGVuID0gY29uZmlnLmhpZGRlbjsKLSAgICBjb25zdCBzdGF0
dXNMaXN0ID0gY29uZmlnLnN0YXR1c0xpc3Q7Ci0KLSAgICByZXR1cm4gewotICAgICAgICAidGVz
dEdyb3VwcyI6IFt7Ci0gICAgICAgICAgICAiaWQiOiAiMjEyOCIsCi0gICAgICAgICAgICAidGFz
ayI6ICIxMzc2IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCi0gICAgICAgICAgICAi
bmFtZSI6ICJDb25maXJtIiwKLSAgICAgICAgICAgICJhdXRob3IiOiAicm5pd2EiLAotICAgICAg
ICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAsCi0gICAgICAgICAgICBoaWRkZW4sCi0g
ICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbiwKLSAgICAgICAgICAgICJidWlsZFJlcXVlc3Rz
IjogWyIxNjk4NSIsICIxNjk4NiIsICIxNjk4NyIsICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCJd
LAotICAgICAgICAgICAgImNvbW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAotICAgICAgICAg
ICAgIm5vdGlmaWNhdGlvblNlbnRBdCI6IG51bGwsCi0gICAgICAgICAgICBpbml0aWFsUmVwZXRp
dGlvbkNvdW50LAotICAgICAgICAgICAgbWF5TmVlZE1vcmVSZXF1ZXN0cwotICAgICAgICB9XSwK
LSAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbewotICAgICAgICAgICAgImlkIjogIjE2OTg1IiwK
LSAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0
NCIsCi0gICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91
cCI6ICIyMTI4IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIwIiwKLSAgICAgICAgICAgICJjb21t
aXRTZXQiOiAiNDI1NSIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFswXSwKLSAg
ICAgICAgICAgICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAg
ICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAg
ICAgICJpZCI6ICIxNjk4NiIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAg
ICAgICAgICAidGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAg
ICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMSIs
Ci0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAotICAgICAgICAgICAgInN0YXR1cyI6
IHN0YXR1c0xpc3RbMV0sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJi
dWlsZCI6IG51bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAg
ICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODciLAotICAgICAgICAgICAgInRyaWdn
ZXJhYmxlIjogIjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJw
bGF0Zm9ybSI6ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAg
ICAgICAgIm9yZGVyIjogIjIiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKLSAg
ICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzJdLAotICAgICAgICAgICAgInVybCI6IG51
bGwsCi0gICAgICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6
IDE0NTg2ODg1MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTg4IiwK
LSAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0
NCIsCi0gICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91
cCI6ICIyMTI4IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJjb21t
aXRTZXQiOiAiNDI1NiIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFszXSwKLSAg
ICAgICAgICAgICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAg
ICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAg
ICAgICJpZCI6ICIxNjk4OSIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAg
ICAgICAgICAidGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAg
ICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIs
Ci0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAotICAgICAgICAgICAgInN0YXR1cyI6
IHN0YXR1c0xpc3RbNF0sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJi
dWlsZCI6IG51bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAg
ICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAiMTY5OTAiLAotICAgICAgICAgICAgInRyaWdn
ZXJhYmxlIjogIjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJw
bGF0Zm9ybSI6ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAg
ICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKLSAg
ICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzVdLAotICAgICAgICAgICAgInVybCI6IG51
bGwsCi0gICAgICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6
IDE0NTg2ODg1MTQwMDAKLSAgICAgICAgfV0sCi0gICAgICAgICJjb21taXRTZXRzIjogW3sKLSAg
ICAgICAgICAgICJpZCI6ICI0MjU1IiwKLSAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjogW3si
Y29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0IjogIjkzMTE2In1dLAotICAgICAgICAgICAgImN1
c3RvbVJvb3RzIjogW10sCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICI0MjU2IiwK
LSAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjogW3siY29tbWl0IjogIjg3ODMyIn0sIHsiY29t
bWl0IjogIjk2MzM2In1dLAotICAgICAgICAgICAgImN1c3RvbVJvb3RzIjogW10sCi0gICAgICAg
IH1dLAotICAgICAgICAiY29tbWl0cyI6IFt7Ci0gICAgICAgICAgICAiaWQiOiAiODc4MzIiLAot
ICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAi
MTAuMTEgMTVBMjg0IiwKLSAgICAgICAgICAgICJ0aW1lIjogMAotICAgICAgICB9LCB7Ci0gICAg
ICAgICAgICAiaWQiOiAiOTMxMTYiLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiMTEiLAot
ICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MTYyMiIsCi0gICAgICAgICAgICAidGltZSI6IDE0
NDU5NDU4MTY4NzgKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKLSAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjEw
LjExIDE1QTI4NCIsCi0gICAgICAgICAgICAidGltZSI6IDAKLSAgICAgICAgfSwgewotICAgICAg
ICAgICAgImlkIjogIjk2MzM2IiwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwKLSAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTI3MzYiLAotICAgICAgICAgICAgInRpbWUiOiAxNDQ4
MjI1MzI1NjUwCi0gICAgICAgIH1dLAotICAgICAgICAidXBsb2FkZWRGaWxlcyI6IFtdLAotICAg
ICAgICAic3RhdHVzIjogIk9LIgotICAgIH07Ci19Ci0KLWRlc2NyaWJlKCdjcmVhdGVBZGRpdGlv
bmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7
Ci0gICAgbGV0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QobnVsbCwgTm9kZVByaXZp
bGVnZWRBUEkpOwotICAgIE1vY2tNb2RlbHMuaW5qZWN0KCk7Ci0gICAgYmVmb3JlRWFjaCgoKSA9
PiB7Ci0gICAgICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKCd3b3JrZXJfbmFtZScsICdwYXNz
d29yZCcpOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1vcmUgYnVpbGQgcmVx
dWVzdCB3aGVuIG9uZSBvZiB0aGUgZXhpc3RpbmcgcmVxdWVzdHMgZmFpbGVkJywgYXN5bmMgKCkg
PT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246
IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0
cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQi
LCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZh
aWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBD
b25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxC
dWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAz
KTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQt
cmVxdWVzdHMnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIGFkZENvdW50OiAxfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
KTsKLQotICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7Ci0gICAgfSk7Ci0K
LSAgICBpdCgnc2hvdWxkIGFkZCAyIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAyIGZhaWxlZCBi
dWlsZCByZXF1ZXN0IGZvdW5kIGZvciBhIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7Ci0gICAg
ICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGlu
aXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRl
bjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQi
LCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OwotICAg
ICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAg
ICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVk
VGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNG
b3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOwot
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAn
d29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4Jywg
YWRkQ291bnQ6IDJ9KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotCi0gICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sx
XS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91
bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiBhbGwgcmVxdWVzdHMgZm9y
IGEgY29tbWl0IHNldCBoYWQgZmFpbGVkJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0
ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAot
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRl
ZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0
YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0
R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0
YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dp
dGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVy
bCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwotICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3
b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1
ZXN0czogZmFsc2V9KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwot
Ci0gICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuICJt
YXlfbmVlZF9tb3JlX3JlcXVlc3RzIiBpcyBub3Qgc2V0JywgYXN5bmMgKCkgPT4gewotICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0
aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZSwgaGlkZGVu
OiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIs
ICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAg
ICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAg
ICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRU
ZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3Vs
ZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuIGJ1aWxkIHJlcXVlc3QgaXMg
aGlkZGVuJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7
bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlO
ZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IHRydWUsCi0gICAgICAgICAgICBzdGF0dXNM
aXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJj
b21wbGV0ZWQiLCAiZmFpbGVkIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdy
b3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3Jv
dXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3Jl
YXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3Rz
KHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
KTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVz
dHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAn
cGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOwot
ICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxk
IG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3Qgd2hlbiB3ZVwndmUgYWxyZWFkeSBoaXQg
dGhlIG1heGltdW0gcmV0cnkgY291bnQnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRl
c3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0
aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0g
ICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVk
IiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIl19OwotICAgICAgICBjb25zdCBkYXRhID0g
c2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsK
LSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZh
aWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDEuNSk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmws
ICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKLSAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29y
a2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVz
dHM6IGZhbHNlfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKLSAgICB9KTsKLQot
ICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgd2hlbiBhZGRpdGlvbmFsIGJ1aWxkIHJl
cXVlc3RzIGFyZSBzdGlsbCBwZW5kaW5nJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0
ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAyLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAot
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OwotICAgICAgICBjb25zdCBkYXRh
ID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RH
cm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRh
KTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0
aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7Ci0gICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdv
cmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVl
c3RzOiBmYWxzZX0pOwotICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7Ci0gICAgfSk7Ci0K
LSAgICBpdCgnc2hvdWxkIG5vdCBjbGVhciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyB3aGVuIG9u
ZSBjb21taXQgc2V0IGhhcyBub3QgZ290IGEgc3VjY2Vzc2Z1bCBydW4gYnV0IGhhdmUgcGVuZGlu
ZyBidWlsZHMnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9
IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1h
eU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0
dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJw
ZW5kaW5nIiwgInBlbmRpbmciXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3Jv
dXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91
cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVh
dGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMo
dGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDAp
OwotICAgIH0pOwotfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCmluZGV4IDVhYTkxZThhYTAyZTExYTY2NDUx
ZDMxZDk2MzY5NmNlZDhkNDk4M2UuLmUyZTVmNmJlNzA4YmM4YWJhNjMwMTQyYTA1YmQzNGYwMjcx
YmRjMzIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rl
c3QtZ3JvdXBzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCkBAIC03LDcgKzcsNyBAQCBjb25zdCBOb2RlUHJpdmls
ZWdlZEFQSSA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL3ByaXZpbGVnZWQtYXBpLmpzJykuUHJpdmls
ZWdlZEFQSQogY29uc3QgTW9ja01vZGVscyA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stdjMt
bW9kZWxzLmpzJykuTW9ja01vZGVsczsKIGNvbnN0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMnKS5Nb2NrUmVtb3RlQVBJOwogCi1mdW5jdGlv
biBzYW1wbGVUZXN0R3JvdXAobmVlZHNOb3RpZmljYXRpb249dHJ1ZSwgaW5pdGlhbFJlcGV0aXRp
b25Db3VudD0yLCBtYXlOZWVkTW9yZVJlcXVlc3RzPXRydWUpIHsKK2Z1bmN0aW9uIHNhbXBsZVRl
c3RHcm91cChuZWVkc05vdGlmaWNhdGlvbiA9IHRydWUsIGluaXRpYWxSZXBldGl0aW9uQ291bnQg
PSAyLCBtYXlOZWVkTW9yZVJlcXVlc3RzID0gdHJ1ZSkgewogICAgIHJldHVybiB7CiAgICAgICAg
ICJ0ZXN0R3JvdXBzIjogW3sKICAgICAgICAgICAgICJpZCI6ICIyMTI4IiwKQEAgLTEwOSw2ICsx
MDksMTQwIEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChuZWVkc05vdGlmaWNhdGlvbj10cnVl
LCBpbml0aWFsUmVwZXRpdGlvbkNvdW50PTIsIG1heU5lCiAgICAgfTsKIH0KIAorZnVuY3Rpb24g
c2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkoY29uZmlnKSB7CisgICAgY29uc3QgbmVlZHNOb3RpZmlj
YXRpb24gPSBjb25maWcubmVlZHNOb3RpZmljYXRpb247CisgICAgY29uc3QgaW5pdGlhbFJlcGV0
aXRpb25Db3VudCA9IGNvbmZpZy5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgIGNvbnN0IG1h
eU5lZWRNb3JlUmVxdWVzdHMgPSBjb25maWcubWF5TmVlZE1vcmVSZXF1ZXN0czsKKyAgICBjb25z
dCBoaWRkZW4gPSBjb25maWcuaGlkZGVuOworICAgIGNvbnN0IHN0YXR1c0xpc3QgPSBjb25maWcu
c3RhdHVzTGlzdDsKKyAgICBjb25zdCBjb21taXRTZXRMaXN0ID0gY29uZmlnLmNvbW1pdFNldExp
c3QgfHwgWyc0MjU1JywgJzQyNTYnLCAnNDI1NScsICc0MjU2JywgJzQyNTUnLCAnNDI1NiddOwor
ICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlID0gY29uZmlnLnJlcGV0aXRpb25UeXBlIHx8ICdhbHRl
cm5hdGluZyc7CisKKyAgICByZXR1cm4geworICAgICAgICAidGVzdEdyb3VwcyI6IFt7CisgICAg
ICAgICAgICAiaWQiOiAiMjEyOCIsCisgICAgICAgICAgICAidGFzayI6ICIxMzc2IiwKKyAgICAg
ICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAibmFtZSI6ICJDb25maXJtIiwK
KyAgICAgICAgICAgICJhdXRob3IiOiAicm5pd2EiLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6
IDE0NTg2ODg1MTQwMDAsCisgICAgICAgICAgICBoaWRkZW4sCisgICAgICAgICAgICBuZWVkc05v
dGlmaWNhdGlvbiwKKyAgICAgICAgICAgICJidWlsZFJlcXVlc3RzIjogWyIxNjk4NSIsICIxNjk4
NiIsICIxNjk4NyIsICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCJdLAorICAgICAgICAgICAgImNv
bW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAorICAgICAgICAgICAgIm5vdGlmaWNhdGlvblNl
bnRBdCI6IG51bGwsCisgICAgICAgICAgICBpbml0aWFsUmVwZXRpdGlvbkNvdW50LAorICAgICAg
ICAgICAgbWF5TmVlZE1vcmVSZXF1ZXN0cywKKyAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlCisg
ICAgICAgIH1dLAorICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFt7CisgICAgICAgICAgICAiaWQi
OiAiMTY5ODUiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAg
InRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAg
ICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjAiLAorICAgICAg
ICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbMF0sCisgICAgICAgICAgICAic3RhdHVz
Ijogc3RhdHVzTGlzdFswXSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAg
ImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk4NiIsCisgICAgICAgICAgICAidHJp
Z2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAg
InBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAg
ICAgICAgICAib3JkZXIiOiAiMSIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0
TGlzdFsxXSwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzFdLAorICAgICAgICAg
ICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAg
ImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlk
IjogIjE2OTg3IiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAg
ICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAg
ICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIyIiwKKyAgICAg
ICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzJdLAorICAgICAgICAgICAgInN0YXR1
cyI6IHN0YXR1c0xpc3RbMl0sCisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAg
ICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAor
ICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiMTY5ODgiLAorICAgICAgICAgICAgInRy
aWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAg
ICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAg
ICAgICAgICAgIm9yZGVyIjogIjMiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNl
dExpc3RbM10sCisgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFszXSwKKyAgICAgICAg
ICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAg
ICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJp
ZCI6ICIxNjk4OSIsCisgICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAg
ICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAg
ICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiNCIsCisgICAg
ICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFs0XSwKKyAgICAgICAgICAgICJzdGF0
dXMiOiBzdGF0dXNMaXN0WzRdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAg
ICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAK
KyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTkwIiwKKyAgICAgICAgICAgICJ0
cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAg
ICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAg
ICAgICAgICAgICJvcmRlciI6ICI1IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRT
ZXRMaXN0WzVdLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNV0sCisgICAgICAg
ICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAg
ICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9XSwKKyAgICAgICAgImNvbW1p
dFNldHMiOiBbeworICAgICAgICAgICAgImlkIjogIjQyNTUiLAorICAgICAgICAgICAgInJldmlz
aW9uSXRlbXMiOiBbeyJjb21taXQiOiAiODc4MzIifSwgeyJjb21taXQiOiAiOTMxMTYifV0sCisg
ICAgICAgICAgICAiY3VzdG9tUm9vdHMiOiBbXSwKKyAgICAgICAgfSwgeworICAgICAgICAgICAg
ImlkIjogIjQyNTYiLAorICAgICAgICAgICAgInJldmlzaW9uSXRlbXMiOiBbeyJjb21taXQiOiAi
ODc4MzIifSwgeyJjb21taXQiOiAiOTYzMzYifV0sCisgICAgICAgICAgICAiY3VzdG9tUm9vdHMi
OiBbXSwKKyAgICAgICAgfV0sCisgICAgICAgICJjb21taXRzIjogW3sKKyAgICAgICAgICAgICJp
ZCI6ICI4NzgzMiIsCisgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICI5IiwKKyAgICAgICAgICAg
ICJyZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQiLAorICAgICAgICAgICAgInRpbWUiOiAwCisgICAg
ICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICI5MzExNiIsCisgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICIxMSIsCisgICAgICAgICAgICAicmV2aXNpb24iOiAiMTkxNjIyIiwKKyAgICAgICAg
ICAgICJ0aW1lIjogMTQ0NTk0NTgxNjg3OAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQi
OiAiODc4MzIiLAorICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIsCisgICAgICAgICAgICAi
cmV2aXNpb24iOiAiMTAuMTEgMTVBMjg0IiwKKyAgICAgICAgICAgICJ0aW1lIjogMAorICAgICAg
ICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiOTYzMzYiLAorICAgICAgICAgICAgInJlcG9zaXRv
cnkiOiAiMTEiLAorICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MjczNiIsCisgICAgICAgICAg
ICAidGltZSI6IDE0NDgyMjUzMjU2NTAKKyAgICAgICAgfV0sCisgICAgICAgICJ1cGxvYWRlZEZp
bGVzIjogW10sCisgICAgICAgICJzdGF0dXMiOiAiT0siCisgICAgfTsKK30KKwogZGVzY3JpYmUo
J1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICBNb2NrTW9kZWxzLmluamVjdCgpOwogICAg
IGNvbnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QoJ2h0dHBzOi8vcGVyZi53ZWJr
aXQub3JnJywgQnJvd3NlclByaXZpbGVnZWRBUEkpOwpAQCAtMjQ5LDcgKzM4Myw3IEBAIGRlc2Ny
aWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Z3JvdXAuaXNIaWRkZW4oKSwgZmFsc2UpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3Vw
Lm5lZWRzTm90aWZpY2F0aW9uKCksIHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtn
cm91cC5jcmVhdGVkQXQoKSwgMTQ1ODY4ODUxNDAwMCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1
YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIHNhbXBsZVRlc3RHcm91cCgpWydidWlsZFJlcXVl
c3RzJ10ubGVuZ3RoIC8gMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpLCBzYW1wbGVUZXN0R3JvdXAoKVsnYnVpbGRSZXF1ZXN0cyddLmxl
bmd0aCAvIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLmhhc1BlbmRpbmcoKSk7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5oYXNTdGFydGVkKCkpOwpAQCAtNDYyLDcgKzU5Niw3IEBAIGRlc2Ny
aWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBzZXQyLnNldFJldmlz
aW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCwgJzE5MTYyMycpOwogICAgICAgICAg
ICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5zaGFyZWRSZXBvc2l0
b3J5LCAnODAyMjknKTsKIAotICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IFRlc3RHcm91cC5j
cmVhdGVXaXRoVGFzaygnc29tZS10YXNrJywgTW9ja01vZGVscy5zb21lUGxhdGZvcm0sIE1vY2tN
b2RlbHMuc29tZVRlc3QsICdzb21lLWdyb3VwJywgNCwgW3NldDEsIHNldDJdLCB0cnVlKTsKKyAg
ICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUt
dGFzaycsIE1vY2tNb2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29t
ZS1ncm91cCcsIDQsICdhbHRlcm5hdGluZycsIFtzZXQxLCBzZXQyXSwgdHJ1ZSwgJ2FsdGVybmF0
aW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
Z2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7
CkBAIC00NzUsNyArNjA5LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0YSwge3Rhc2tOYW1l
OiAnc29tZS10YXNrJywgbmFtZTogJ3NvbWUtZ3JvdXAnLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDEs
CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LCByZXZpc2lvblNldHM6IFt7JzEx
Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMiJ9
LAogICAgICAgICAgICAgICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6
IG51bGwsIHJldmlzaW9uOiAiODAyMjkifX0sIHsnMTEnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiMTkxNjIzIn0sCi0gICAgICAgICAgICAgICAgICAgICcx
Nic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9
fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCB0b2tlbjogJ2FiYyd9KTsKKyAgICAgICAgICAg
ICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lv
bjogIjgwMjI5In19XSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAn
YWx0ZXJuYXRpbmcnLCB0b2tlbjogJ2FiYyd9KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1syXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnKTsKICAg
ICAgICAgICAgIHJlcXVlc3RzWzJdLnJlc29sdmUoewogICAgICAgICAgICAgICAgIHRhc2tJZDog
MTIzLApAQCAtNDg2LDYgKzYyMCwxOTYgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS5tZXRob2QsICdHRVQn
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS51cmwsICcvYXBpL2FuYWx5
c2lzLXRhc2tzP2lkPTEyMycpOwogICAgICAgICB9KTsKLSAgICB9KQorICAgIH0pOworCisgICAg
ZGVzY3JpYmUoJ3Jlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZycsICgpID0+IHsKKyAgICAg
ICAgbGV0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QobnVsbCwgTm9kZVByaXZpbGVn
ZWRBUEkpOworICAgICAgICBNb2NrTW9kZWxzLmluamVjdCgpOworICAgICAgICBiZWZvcmVFYWNo
KCgpID0+IHsKKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKCd3b3JrZXJfbmFt
ZScsICdwYXNzd29yZCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGFkZCBv
bmUgbW9yZSBidWlsZCByZXF1ZXN0IHdoZW4gb25lIG9mIHRoZSBleGlzdGluZyByZXF1ZXN0cyBm
YWlsZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcg
PSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBt
YXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAg
IHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29t
cGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRh
ID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVz
dEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRN
b3JlUmVxdWVzdHNGbGFnKDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcv
cHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3
b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNv
bW1pdFNldDogbnVsbH0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisg
ICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBhZGQgMiBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdo
ZW4gMiBmYWlsZWQgYnVpbGQgcmVxdWVzdCBmb3VuZCBmb3IgYSBjb21taXQgc2V0JywgYXN5bmMg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBb
ImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0
ZWQiLCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91
cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygz
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2Fk
ZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0
c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdw
YXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAyLCBjb21taXRTZXQ6IG51bGx9KTsK
KyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICAgICAgYXdhaXQg
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
MV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgICAgIH0pOworCisgICAgICAg
IGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAibWF5X25l
ZWRfbW9yZV9yZXF1ZXN0cyIgaXMgbm90IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRp
YWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlLCBoaWRkZW46
IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Cisg
ICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3Vw
Q29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0
ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91
cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiBidWlsZCByZXF1
ZXN0IGlzIGhpZGRlbicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91
cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291
bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hl
ZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlO
ZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUn
LCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCBy
ZXF1ZXN0cyB3aGVuIGFsbCByZXF1ZXN0cyBmb3IgYSBjb21taXQgc2V0IGhhZCBmYWlsZWQnLCBh
c3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNO
b3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9y
ZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xp
c3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBs
ZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdy
b3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsK
KyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFn
KDMpOworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwog
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRl
LXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0u
ZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dv
cmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3Qgd2hlbiB3ZVwndmUgYWxyZWFk
eSBoaXQgdGhlIG1heGltdW0gcmV0cnkgY291bnQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0
aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46
IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiXX07CisgICAgICAg
ICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmln
KTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0u
cmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDEuNSk7CisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtl
cl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZl
KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUg
d2hlbiBhZGRpdGlvbmFsIGJ1aWxkIHJlcXVlc3RzIGFyZSBzdGlsbCBwZW5kaW5nJywgYXN5bmMg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBb
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwg
InBlbmRpbmciXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9y
UmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBU
ZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAg
ICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOwor
ICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwg
e3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBn
cm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAgICAg
cmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IG5vdCBjbGVhciAibWF5IG5lZWQgbW9yZSByZXF1ZXN0cyIgZmxhZyB3aGVuIG9uZSBjb21taXQg
c2V0IGhhcyBub3QgZ290IGEgc3VjY2Vzc2Z1bCBydW4gYnV0IGhhdmUgcGVuZGluZyBidWlsZHMn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVl
ZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVk
TW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1
c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgInBl
bmRpbmciLCAicGVuZGluZyJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0
R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEp
OworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0Zs
YWcoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBhZGQgdHdvIG1vcmUgYnVpbGQgcmVxdWVz
dCBvbiBBIGNvbmZpZyBhbmQgY2xlYXIgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGFmdGVyd2Fy
ZHMgd2hlbiBvbmUgQSBjb25maWcgcmVxdWVzdCBmYWlsZWQgZm9yIHRlc3QgZ3JvdXAgaW4gc2Vx
dWVudGlhbCBtb2RlJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3Vw
Q29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46
IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgICAgIHN0
YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJw
ZW5kaW5nIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQy
NTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAg
ICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmln
KTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0u
cmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOworCisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAn
d29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4Jywg
YWRkQ291bnQ6IDIsIGNvbW1pdFNldDogJzQyNTUnfSk7CisgICAgICAgICAgICByZXF1ZXN0c1sw
XS5yZXNvbHZlKCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91
cHMvMjEyOCcpOworICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZShzYW1wbGVUZXN0R3Jv
dXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUn
LCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogZmFsc2V9KQorICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHJ5
IEIgY29uZmlnIGlmIEEgY29uZmlnIGV4aGF1c3RlZCByZXRyeSBhbmQgaGFkIGF0IGxlYXN0IG9u
ZSBzdWNjZXNzZnVsIHJ1biBidXQgbGVzcyB0aGFuIHVzZXIgcmVxdWVzdGVkIGZvciB0ZXN0IGdy
b3VwIGluIHNlcXVlbnRpYWwgbW9kZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBl
dGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICAg
ICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAg
ICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZh
aWxlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl0sCisgICAgICAgICAgICAgICAgY29tbWl0U2V0
TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NiddfTsK
KworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RH
cm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9j
cmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0
R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygyKTsKKworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0
cycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29y
a2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3Vw
OiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6ICc0MjU2J30pOworICAgICAgICAgICAg
cmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IGNsZWFyIHRlc3QgZ3JvdXAgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcgaW4gc2VxdWVu
dGlhbCBtb2RlIGlmIGFsbCB1c2VyIGluaXRpYWxseSBzY2hlZHVsZWQgQSBydW5zIGZhaWxlZCcs
IGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVk
c05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRp
dGlvblR5cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImZh
aWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgInBlbmRpbmciLCAicGVuZGluZyIsICJwZW5kaW5n
Il0sCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1
NScsICc0MjU2JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICAgICAgY29uc3QgZGF0YSA9
IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RH
cm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9y
ZVJlcXVlc3RzRmxhZygyKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNz
d29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFs
c2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoJ3Nob3VsZCBjbGVhciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyB3aGVuIGlu
aXRpYWwgcmVxdWVzdGVkIHJlcGV0aXRpb24gaXMgc2F0aXNmaWVkIGluIHNlcXVlbnRpYWwgbW9k
ZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVw
ZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBb
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQi
LCAiY29tcGxldGVkIl0sCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1Jywg
JzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICAgICAg
Y29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9t
RmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29s
dmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUn
LCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429024</attachid>
            <date>2021-05-18 19:22:31 -0700</date>
            <delta_ts>2021-05-20 13:59:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210518192231.patch</filename>
            <type>text/plain</type>
            <size>229108</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjIwCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA3MmNlNDQ2MTkwN2RiNTU5Y2M2NjhhYWZhMjZkOGRmYmIxZWQyNTllLi5kOTFlZmVkZjMw
MDkzMzI1Y2MxMjc3ZTY5MGI5MTk1ZTdhMGQ2ODcyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMjEtMDUtMDMgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUn
IHRvICdhbmFseXNpc190ZXN0X2dyb3VwcycgdGFibGUgdG8gc3RvcmUgcmVwZXRpdGlvbiB0eXBl
IHdoaWNoIGRlZmF1bHRzIHRvICdhbHRlcm5hdGluZycuCisgICAgICAgIEFkZCBzdXBwb3J0IHRv
IHNjaGVkdWxlICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZyB3aGljaCBzY2hlZHVsZXMgYWxsIGl0
ZXJhdGlvbnMgZm9yIHRoZSBmaXJzdCBjb25maWd1cmF0aW9uIChBKQorICAgICAgICBiZWZvcmUg
dGhlIGl0ZXJhdGlvbnMgZm9yIHRoZSBzZWNvbmQgY29uZmlndXJhdGlvbiAoQikuCisgICAgICAg
IEJlZm9yZSB0aGlzIHBhdGNoLCBhbGwgQS9CIHRlc3RpbmcgYWx0ZXJuYXRlZCBiZXR3ZWVuIHR3
byBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggaXRlcmF0aW9uLgorICAgICAgICBB
ZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKworICAgICAgICBV
cGRhdGUgc3luY2luZyBzY3JpcHQgdG8gbm90IHByb2NlZWQgd2l0aCBuZXh0IGNvbmZpZ3VyYXRp
b24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkCisgICAg
ICAgIG1vcmUgaXRlcmF0aW9ucyB0aGFuIHRoZSBpbml0aWFsbHkgcmVxdWVzdGVkIG9yIHJldHJp
ZXMgZXhjZWVkZWQgdGhlIGxpc3QuCisKKyAgICAgICAgRml4IGEgcG90ZW50aWFsIHJhY2UgaW4g
c3luY2luZyBzY3JpcHQgdGhhdCAnUHJvbWlzZS5hbGwnIG1heSBjYXVzZSB0ZXN0IGdyb3VwIG5v
dCBzY2hlZHVsZWQgaW4gb3JkZXIuCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL3Rlc3QtZ3Jv
dXAtZm9ybS10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAg
KiBpbml0LWRhdGFiYXNlLnNxbDogQWRkZWQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZp
ZWxkIHRvICdhbmFseXNpc190ZXN0X2dyb3VwcycgdGFibGUuCisgICAgICAgICogbWlncmF0ZS1k
YXRhYmFzZS5zcWw6IFVwZGF0ZWQgbWlncmF0aW9uIHNjcmlwdCB0byBjb25kaXRpb25hbGx5IGFk
ZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZScgZmllbGQuCisgICAgICAgICogcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgZmllbGQgaW4gYXBpIHJl
dHVybiB2YWx1ZS4KKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRj
aGVyLnBocDogRmV0Y2hpbmcgYnVpbGQgcmVxdWVzdHMgdW5kZXIgYSB0cmlnZ2VyYWJsZSBzaG91
bGQgaW5jbHVkZSB0ZXN0CisgICAgICAgIGdyb3VwIHdpdGggYWxsIHRlc3QgZ3JvdXBzIGZpbmlz
aGVkIGJ1dCBzdGlsbCBuZWVkIHJldHJ5LiBUaGlzIHdpbGwgYWxsb3cgc3luY2luZyBzY3JpcHQg
dG8gcmVzb2x2ZSB0aGUgYnVpbGQKKyAgICAgICAgcmVxdWVzdCBieSBJRCBhbmQgYmxvY2sgb3Ro
ZXIgcmVxdWVzdCB0byBiZSBzY2hlZHVsZWQgb24gdGhlIGJ1aWxkZXIuCisgICAgICAgICogcHVi
bGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHA6IEFkZGVkIGNvZGUgdG8gY3JlYXRl
IGJ1aWxkIHJlcXVlc3RzIGJhc2VkIG9uIHRlc3QgbW9kZS4KKyAgICAgICAgKiBwdWJsaWMvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocDogQWRkZWQgc3VwcG9ydCB0byBvbmx5
IGFkZCBidWlsZCByZXF1ZXN0cyB0byBvbmUgY29tbWl0IHNldC4KKyAgICAgICAgKiBwdWJsaWMv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhwOiBBZGRlZCAncmVwZXRpdGlv
blR5cGUnIHN1cHBvcnQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10
ZXN0LWdyb3VwLnBocDogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAq
IHB1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHA6CisgICAgICAgICog
cHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanM6CisgICAgICAgICogcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzOiBB
ZGRlZCAncmVwZXRpdGlvblR5cGUnIHN1cHBvcnQuCisgICAgICAgIChDdXN0b21Db25maWd1cmF0
aW9uVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0aW5nKToKKyAgICAgICAgKiBwdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzOgorICAgICAg
ICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0aW5nKToKKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAg
IChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFzay5hc3lu
YyBjcmVhdGUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrKToKKyAgICAgICAgKiBwdWJsaWMvdjMv
bW9kZWxzL2J1aWxkLXJlcXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAg
ICAoQnVpbGRSZXF1ZXN0LnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOiBBbGxvdyBidWlsZCBy
ZXF1ZXN0IG9yZGVyIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKToKKyAgICAgICAgKFRlc3RHcm91cC5w
cm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
cmVwZXRpdGlvblR5cGUpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5yZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQpOiBSZWZhY3RvcmVkIGByZXBldGl0aW9uQ291bnRgIHNpbmNlIHJl
cGV0aXRpb24gbWF5IGJlIGRpZmZlcmVudAorICAgICAgICBiZXR3ZWVuIGNvbmZpZ3VyYXRpb25z
LgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5oYXNSZXRyaWVzKTogQSBoZWxwZXIgZnVu
Y3Rpb24gdG8gdGVsbCBpZiBhIHRlc3QgZ3JvdXAgaGFzIHJldHJ5IHJ1bnMuCisgICAgICAgIChU
ZXN0R3JvdXAucHJvdG90eXBlLmFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkVG9SZWFjaEluaXRp
YWxSZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5zdWNjZXNz
ZnVsVGVzdENvdW50KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaXNGaXJzdFRlc3RS
ZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucHJlY2VkaW5nQnVpbGRSZXF1
ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmV0cnlDb3VudEZvckNvbW1pdFNl
dCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJldHJ5Q291bnRzQXJlU2FtZUZvckFs
bENvbW1pdFNldHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBfY3JlYXRl
QWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgX2NyZWF0
ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFz
eW5jIGNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBl
LmFzeW5jIGRpZFNlbmROb3RpZmljYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5hc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMg
Y3JlYXRlV2l0aFRhc2spOgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0
b21Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZl
dGNoVGVzdEdyb3Vwcyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHNjaGVk
dWxlUmV0cmllc0lmTmVjZXNzYXJ5KTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJl
cXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHJlc29s
dmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgZmV0
Y2hCeUlkKTogQWRkZWQgc3VwcG9ydCB0byBmZXRjaCB0ZXN0IGdyb3VwIGJ5IElELgorICAgICAg
ICAqIHB1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFs
eXNpc1Rhc2tDaGFydFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAg
ICAgICAoQW5hbHlzaXNUYXNrUmVzdWx0c1BhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRv
d1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZS5wcm90b3R5cGUu
c2V0VGVzdEdyb3Vwcyk6CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKToK
KyAgICAgICAgKEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVj
dFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5
cGUuX3JlbmRlckN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdy
b3VwUGFuZS5wcm90b3R5cGUuX3JldHJ5U3VtbWFyeSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQ
YWdlLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lz
VGFza1BhZ2UucHJvdG90eXBlLmFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3Jv
dXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5zZXQgY29uc3QpOgorICAgICAgICAoQW5h
bHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5
aW5nQ29tbWl0U2V0TGlzdCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5h
c3luYyBfY3JlYXRlQ3VzdG9tVGVzdEdyb3VwKToKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMv
Y2hhcnQtcGFuZS5qczoKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0
U2hhZG93VHJlZSk6CisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLmFzeW5jIF9hbmFseXpl
UmFuZ2UpOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1w
YWdlLmpzOgorICAgICAgICAoQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMg
X2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2Fw
aS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogQWRkZWQgYSB1bml0IHRlc3QuCisgICAgICAgICog
c2VydmVyLXRlc3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3Rz
LgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2Vy
dmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBB
ZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1j
cmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4K
KyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAt
dGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVy
LXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGFzeW5jIGFz
c2VydFRocm93cyk6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEu
anM6CisgICAgICAgIChNb2NrRGF0YS5hZGRNb2NrRGF0YSk6CisgICAgICAgIChNb2NrRGF0YS5z
ZXQgYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMpOgorICAgICAgICAoTW9ja0RhdGEuc2V0
IGFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKToKKyAgICAgICAgKE1vY2tEYXRhLnNldCBtb2NrVGVz
dFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcik6CisgICAgICAgIChNb2NrRGF0YS5zYW1wbGVC
dWlsZERhdGEpOgorICAgICAgICAqIHNlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2Vy
YWJsZS10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBz
ZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogVXBk
YXRlZCB1bml0IHRlc3RzLgorICAgICAgICAoYXN5bmMgY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNo
KToKKyAgICAgICAgKGNyZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KToKKyAgICAgICAgKiB0
b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanM6CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90
b3R5cGUuc2NoZWR1bGVSZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKToKKyAgICAgICAgKEJ1aWxk
Ym90U3luY2VyLnByb3RvdHlwZS5wdWxsQnVpbGRib3QpOgorICAgICAgICAqIHRvb2xzL2pzL2J1
aWxkYm90LXRyaWdnZXJhYmxlLmpzOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZSk6Cisg
ICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBzeW5jT25jZSk6Cisg
ICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBfc2NoZWR1bGVSZXF1
ZXN0KToKKyAgICAgICAgKEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLl9zaG91bGREZWZl
clNlcXVlbnRpYWxUZXN0aW5nUmVxdWVzdFdpdGhOZXdDb21taXRTZXQpOgorICAgICAgICAqIHRv
b2xzL2pzL21lYXN1cmVtZW50LXNldC1hbmFseXplci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50
U2V0QW5hbHl6ZXIucHJvdG90eXBlLmFzeW5jIF9hbmFseXplTWVhc3VyZW1lbnRTZXQpOgorICAg
ICAgICAoTWVhc3VyZW1lbnRTZXRBbmFseXplcik6CisgICAgICAgICogdG9vbHMvanMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHRvb2xzL3J1bi1h
bmFseXNpcy5qczogVXNlIHVwZGF0ZWQgQVBJIHRvIHJldHJ5LgorICAgICAgICAoYXN5bmMgYW5h
bHlzaXNMb29wKToKKyAgICAgICAgKGFzeW5jIHByb2Nlc3NUZXN0R3JvdXBNYXlOZWVkTW9yZVJl
cXVlc3RzKToKKyAgICAgICAgKiB0b29scy9zeW5jLWJ1aWxkYm90LmpzOiBBZGRlZCBjb21tYW5k
IGxpbmUgb3B0aW9uICctLW1heC1yZXRyeS1mYWN0b3InLgorICAgICAgICAqIHVuaXQtdGVzdHMv
YW5hbHlzaXMtdGFzay10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHVu
aXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisg
ICAgICAgIChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHVuaXQtdGVzdHMv
bWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMv
cmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBNb3ZlZCB1bml0IHRlc3RzIHRv
IHRlc3QtZ3JvdXAtdGVzdHMuanMuCisgICAgICAgICogdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10
ZXN0cy5qczogQWRkZWQgdW5pdCB0ZXN0cyBmcm9tICdyZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanMnLgorCiAyMDIxLTA1LTA3ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFw
cGxlLmNvbT4KICAgICAgICAgCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzeW5jaW5nIHJlcG8g
d2l0aCBjb21taXQgcmV2aXNpb24gbGFiZWwuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMK
aW5kZXggYjRhYjIxMjVjNDYzMDRmNTZjNDc4NzcxYmViNmMyMzNhMDkzYmU4YS4uZjk2MDExMzgy
MzRhMWQ5YzU2NmEzODBhNjVjZTU5MDg0MjgzMGI0YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGVzdC1ncm91cC1mb3JtLXRlc3RzLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3Rlc3QtZ3JvdXAtZm9ybS10
ZXN0cy5qcwpAQCAtMTgsMTAgKzE4LDI1IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMn
LCAoKSA9PiB7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmxpc3RlblRvQWN0aW9uKCdzdGFy
dFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CiAgICAgICAgICAgICBl
eHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRl
bnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRv
LmVxbChbWzQsIHRydWVdXSk7CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQs
ICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgaXQo
J211c3QgZGlzcGF0Y2ggInN0YXJ0VGVzdGluZyIgYWN0aW9uIHdpdGggdGhlIHJlcGV0aXRpb24g
dHlwZSB1c2VyIHNlbGVjdHMgb24gIlN0YXJ0IEEvQiB0ZXN0aW5nIicsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAg
Y29uc3QgdGVzdEdyb3VwRm9ybSA9IGF3YWl0IGNyZWF0ZVRlc3RHcm91cEZvcm1XaXRoQ29udGV4
dChjb250ZXh0KTsKKyAgICAgICAgY29uc3QgY2FsbHMgPSBbXTsKKyAgICAgICAgdGVzdEdyb3Vw
Rm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1
c2goYXJncykpOworICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CisgICAgICAgIHRl
c3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2soKTsKKyAgICAgICAgZXhw
ZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOworICAgICAgICBj
b25zdCB0eXBlRm9ybSA9IHRlc3RHcm91cEZvcm0uY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7
CisgICAgICAgIHR5cGVGb3JtLnZhbHVlID0gJ3NlcXVlbnRpYWwnOworICAgICAgICB0eXBlRm9y
bS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOworICAgICAgICB0ZXN0R3JvdXBG
b3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7CisgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0sIFs0LCAnc2VxdWVudGlhbCcsIHRy
dWVdXSk7CisgICAgfSk7CisKICAgICBpdCgnbXVzdCB1cGRhdGUgdGhlIHJlcGV0aXRpb24gY291
bnQgd2hlbiB0aGUgdXNlciBzZWxlY3RlZCBhIGRpZmZlcmVudCBjb3VudCcsICgpID0+IHsKICAg
ICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKICAgICAgICAgcmV0
dXJuIGNyZWF0ZVRlc3RHcm91cEZvcm1XaXRoQ29udGV4dChjb250ZXh0KS50aGVuKCh0ZXN0R3Jv
dXBGb3JtKSA9PiB7CkBAIC0yOSwxMiArNDQsMTIgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1U
ZXN0cycsICgpID0+IHsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24o
J3N0YXJ0VGVzdGluZycsICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAg
ICAgIGV4cGVjdChjYWxscykudG8uZXFsKHt9KTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0u
Y29udGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKFtbNCwgdHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFs
KFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIGNvbnN0IGNvdW50Rm9y
bSA9IHRlc3RHcm91cEZvcm0uY29udGVudCgncmVwZXRpdGlvbi1jb3VudCcpOwogICAgICAgICAg
ICAgY291bnRGb3JtLnZhbHVlID0gJzYnOwogICAgICAgICAgICAgY291bnRGb3JtLmRpc3BhdGNo
RXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNv
bnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMp
LnRvLmVxbChbWzQsIHRydWVdLCBbNiwgdHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0sIFs2LCAnYWx0ZXJuYXRpbmcnLCB0
cnVlXV0pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtNDUsNyArNjAsNyBAQCBkZXNjcmli
ZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywgKCkgPT4gewogICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1c2go
YXJncykpOwogICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAgICAg
ICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAgICAg
ICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXV0pOworICAgICAgICAgICAgZXhw
ZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOwogICAgICAgICAg
ICAgY29uc3QgY291bnRGb3JtID0gdGVzdEdyb3VwRm9ybS5jb250ZW50KCdyZXBldGl0aW9uLWNv
dW50Jyk7CiAgICAgICAgICAgICBjb3VudEZvcm0udmFsdWUgPSAnNic7CiAgICAgICAgICAgICBj
b3VudEZvcm0uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKQEAgLTUzLDcgKzY4
LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+IHsKICAgICAgICAgICAg
IG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrYm94LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFu
Z2UnKSk7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicp
LmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdLCBb
NiwgZmFsc2VdXSk7CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRl
cm5hdGluZycsIHRydWVdLCBbNiwgJ2FsdGVybmF0aW5nJywgZmFsc2VdXSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogCkBAIC03NiwxMCArOTEsMTAgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1U
ZXN0cycsICgpID0+IHsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmxpc3RlblRvQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CiAgICAg
ICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAgICAgICAgICAgIHRl
c3RHcm91cEZvcm0uY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLmNsaWNrKCk7Ci0g
ICAgICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXV0pOworICAgICAg
ICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1d
KTsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLnNldFJlcGV0aXRpb25Db3VudCg4KTsK
ICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdi
dXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtb
NCwgdHJ1ZV0sIFs4LCB0cnVlXV0pOworICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8u
ZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0sIFs4LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0p
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCmluZGV4IGY2OGI1ZjBjMDMzYTIyNjQzMDdjMmY4
M2YzZDRmYjc0YmRiMTUzZWQuLmU3NmRjYmM5MjlhMmIxY2Y1ZDIyMDc0MzdjZGZhNDg2ZTViYWVi
ZGUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNx
bAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTI5
LDYgKzI5LDcgQEAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVz
IENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyB1cGxvYWRlZF9maWxlcyBDQVNDQURFOwog
RFJPUCBUQUJMRSBJRiBFWElTVFMgYnVncyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMg
YW5hbHlzaXNfdGVzdF9ncm91cHMgQ0FTQ0FERTsKK0RST1AgVFlQRSBJRiBFWElTVFMgYW5hbHlz
aXNfdGVzdF9ncm91cF9yZXBldGl0aW9uX3R5cGUgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJ
U1RTIGNvbW1pdF9zZXRzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRfc2V0
X2l0ZW1zIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWlsZF9yZXF1ZXN0cyBDQVND
QURFOwpAQCAtMjgyLDYgKzI4Myw3IEBAIENSRUFURSBUQUJMRSB1cGxvYWRlZF9maWxlcyAoCiBD
UkVBVEUgSU5ERVggZmlsZV9hdXRob3JfaW5kZXggT04gdXBsb2FkZWRfZmlsZXMoZmlsZV9hdXRo
b3IpOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBmaWxlX3NoYTI1Nl9pbmRleCBPTiB1cGxvYWRlZF9m
aWxlcyhmaWxlX3NoYTI1NikgV0hFUkUgZmlsZV9kZWxldGVkX2F0IGlzIE5VTEw7CiAKK0NSRUFU
RSBUWVBFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIGFzIEVOVU0gKCdhbHRl
cm5hdGluZycsICdzZXF1ZW50aWFsJyk7CiBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91
cHMgKAogICAgIHRlc3Rncm91cF9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCiAgICAgdGVzdGdyb3Vw
X3Rhc2sgaW50ZWdlciBSRUZFUkVOQ0VTIGFuYWx5c2lzX3Rhc2tzIE5PVCBOVUxMLApAQCAtMjky
LDYgKzI5NCw3IEBAIENSRUFURSBUQUJMRSBhbmFseXNpc190ZXN0X2dyb3VwcyAoCiAgICAgdGVz
dGdyb3VwX25lZWRzX25vdGlmaWNhdGlvbiBib29sZWFuIE5PVCBOVUxMIERFRkFVTFQgRkFMU0Us
CiAgICAgdGVzdGdyb3VwX25vdGlmaWNhdGlvbl9zZW50X2F0IHRpbWVzdGFtcCBERUZBVUxUIE5V
TEwsCiAgICAgdGVzdGdyb3VwX2luaXRpYWxfcmVwZXRpdGlvbl9jb3VudCBpbnRlZ2VyIE5PVCBO
VUxMLAorICAgIHRlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUgYW5hbHlzaXNfdGVzdF9ncm91cF9y
ZXBldGl0aW9uX3R5cGUgTk9UIE5VTEwgREVGQVVMVCAnYWx0ZXJuYXRpbmcnLAogICAgIHRlc3Rn
cm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzIGJvb2xlYW4gREVGQVVMVCBGQUxTRSwKICAgICBD
T05TVFJBSU5UIHRlc3Rncm91cF9uYW1lX211c3RfYmVfdW5pcXVlX2Zvcl9lYWNoX3Rhc2sgVU5J
UVVFKHRlc3Rncm91cF90YXNrLCB0ZXN0Z3JvdXBfbmFtZSkpOwogQ1JFQVRFIElOREVYIHRlc3Rn
cm91cF90YXNrX2luZGV4IE9OIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzKHRlc3Rncm91cF90YXNrKTsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNx
bCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbAppbmRleCAw
ZWE5MTMzZGE2ZWRlMzI1ZGRmNmMyMWQ4YjkzN2ZiNzM1NjQyNTlhLi5hNjEzMTE5YmFiOWE0MjY0
MzZkZmJkMTk3NjVjNGJiOWQzZTBlZTVkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L21pZ3JhdGUtZGF0YWJhc2Uuc3FsCkBAIC0xLDEwICsxLDE2IEBACiBETyAkJAogCiBCRUdJTgor
CitJRiBOT1QgRVhJU1RTIChTRUxFQ1QgTlVMTCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZSA9
ICdhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25fdHlwZScpIFRIRU4KKyAgICBDUkVBVEUg
VFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25fdHlwZSBhcyBFTlVNICgnYWx0ZXJu
YXRpbmcnLCAnc2VxdWVudGlhbCcpOworRU5EIElGOworCiBBTFRFUiBUQUJMRSBidWlsZF9yZXF1
ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVxdWVzdF9zdGF0dXNfZGVzY3JpcHRpb24g
dmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRFUiBUQUJMRSBwbGF0Zm9ybXMgQUREIENP
TFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91cCBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxh
dGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgQUREIENPTFVN
TiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyIHZhcmNoYXIoNjQpIERF
RkFVTFQgTlVMTDsKLUFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBDT05TVFJBSU5UIGNvbW1pdF9z
dHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlOworQUxURVIgVEFC
TEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIHRlc3Rncm91
cF9yZXBldGl0aW9uX3R5cGUgYW5hbHlzaXNfdGVzdF9ncm91cF9yZXBldGl0aW9uX3R5cGUgTk9U
IE5VTEwgREVGQVVMVCAnYWx0ZXJuYXRpbmcnOworQUxURVIgVEFCTEUgY29tbWl0cyBEUk9QIENP
TlNUUkFJTlQgSUYgRVhJU1RTIGNvbW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5
X211c3RfYmVfdW5pcXVlOwogQUxURVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21t
aXRfc3RyaW5nX2lkZW50aWZpZXJfaW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUo
Y29tbWl0X3JlcG9zaXRvcnksIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIAogQ1JFQVRF
IFRBQkxFIElGIE5PVCBFWElTVFMgcGxhdGZvcm1fZ3JvdXBzICgKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocCBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAppbmRleCAwMzFhNWM0
YWI5ODdiNzkzMjZjODEyMjAzMGZkZGU5ZGNiNDk3NjIwLi42ODQ3ZjQ4NzQyOGY1MzhlNWEzNDhh
MTk5ZGUyNzk1ZDVkNzdkNmU4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCkBAIC05NCw2ICs5NCw3IEBAIGZ1bmN0aW9uIGZv
cm1hdF90ZXN0X2dyb3VwKCRncm91cF9yb3cpIHsKICAgICAgICAgJ25lZWRzTm90aWZpY2F0aW9u
JyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfbmVlZHNfbm90aWZp
Y2F0aW9uJ10pLAogICAgICAgICAnbWF5TmVlZE1vcmVSZXF1ZXN0cycgPT4gRGF0YWJhc2U6Omlz
X3RydWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMnXSksCiAg
ICAgICAgICdpbml0aWFsUmVwZXRpdGlvbkNvdW50JyA9PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBf
aW5pdGlhbF9yZXBldGl0aW9uX2NvdW50J10sCisgICAgICAgICdyZXBldGl0aW9uVHlwZScgPT4g
JGdyb3VwX3Jvd1sndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZSddLAogICAgICAgICAnYnVpbGRS
ZXF1ZXN0cycgPT4gYXJyYXkoKSwKICAgICAgICAgJ2NvbW1pdFNldHMnID0+IGFycmF5KCksCiAg
ICAgKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAppbmRleCBiMmMwNWU3YjI1
MjA5N2YxMTVmZmRiYzQxYTExYzNlNGJkMTkwMmNkLi40ZDY1NzYxYjQ0M2RhNDBhYTU0ZDA5MGEz
YzJiMjA5MWRlNWJlNmE1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCkBA
IC00Niw3ICs0Niw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdHNGZXRjaGVyIHsKICAgICAgICAgICAg
IChTRUxFQ1QgdGVzdGdyb3VwX2lkLCB0ZXN0Z3JvdXBfdGFzaywgKGNhc2Ugd2hlbiB0ZXN0Z3Jv
dXBfYXV0aG9yIGlzIG5vdCBudWxsIHRoZW4gMCBlbHNlIDEgZW5kKSBhcyBhdXRob3Jfb3JkZXIs
IHRlc3Rncm91cF9jcmVhdGVkX2F0CiAgICAgICAgICAgICAgICAgRlJPTSBhbmFseXNpc190ZXN0
X2dyb3VwcyBXSEVSRSBFWElTVFMKICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00g
YnVpbGRfcmVxdWVzdHMgV0hFUkUgdGVzdGdyb3VwX2lkID0gcmVxdWVzdF9ncm91cCBBTkQgcmVx
dWVzdF9zdGF0dXMKLSAgICAgICAgICAgICAgICAgICAgICAgIElOIChcJ3BlbmRpbmdcJywgXCdz
Y2hlZHVsZWRcJywgXCdydW5uaW5nXCcpKSkgQVMgdGVzdF9ncm91cHMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIElOIChcJ3BlbmRpbmdcJywgXCdzY2hlZHVsZWRcJywgXCdydW5uaW5nXCcpKSBP
UiB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyA9IFRSVUUpIEFTIHRlc3RfZ3JvdXBz
CiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X3RyaWdnZXJhYmxlID0gJDEgQU5EIHJlcXVlc3Rf
Z3JvdXAgPSB0ZXN0X2dyb3Vwcy50ZXN0Z3JvdXBfaWQKICAgICAgICAgICAgIE9SREVSIEJZIGF1
dGhvcl9vcmRlciwgdGVzdGdyb3VwX2NyZWF0ZWRfYXQsIHJlcXVlc3Rfb3JkZXInLCBhcnJheSgk
dHJpZ2dlcmFibGVfaWQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKaW5k
ZXggZTg1MzBhNmJiNzFlNDJjZmYyOGNlMzE5YzhiNTg1ZTYyZGQyM2YxYy4uNzc3N2UxYWQ2MmFm
ZGFjNzZjNzMxNDMzNTIyYzFiMjZhMDI3Yzg0YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJz
LnBocApAQCAtNCwyMSArNCwzMSBAQCByZXF1aXJlX29uY2UoJ3JlcG9zaXRvcnktZ3JvdXAtZmlu
ZGVyLnBocCcpOwogcmVxdWlyZV9vbmNlKCdjb21taXQtbG9nLWZldGNoZXIucGhwJyk7CiAKICMg
RklYTUU6IFNob3VsZCBjcmVhdGUgYSBoZWxwZXIgY2xhc3MgZm9yIGJlbG93IDMgaGVscGVyIGZ1
bmN0aW9ucyB0byBhdm9pZCBwYXNzaW5nIGxvbmcgYXJndW1lbnQgbGlzdC4KLWZ1bmN0aW9uIGNy
ZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRh
c2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRl
c3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkbmVlZHNfbm90aWZpY2F0aW9uKSB7Ci0KK2Z1bmN0
aW9uIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0
cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9p
ZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNf
bm90aWZpY2F0aW9uKQoreworICAgIGFzc2VydChpbl9hcnJheSgkcmVwZXRpdGlvbl90eXBlLCBh
cnJheSgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpKSk7CiAgICAgbGlzdCAoJGJ1aWxkX2Nv
bmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmlndXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21t
aXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3VyYXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0
cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3Jv
dXBzJywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25h
bWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9
PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50JyA9PiAkcmVw
ZXRpdGlvbl9jb3VudCkpOworICAgICAgICBhcnJheSgndGFzaycgPT4gJHRhc2tfaWQsICduYW1l
JyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvciwgJ25lZWRzX25vdGlmaWNhdGlvbicgPT4g
JG5lZWRzX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICdpbml0aWFsX3JlcGV0aXRpb25fY291
bnQnID0+ICRyZXBldGl0aW9uX2NvdW50LCAncmVwZXRpdGlvbl90eXBlJyA9PiAkcmVwZXRpdGlv
bl90eXBlKSk7CiAKICAgICAkYnVpbGRfY291bnQgPSBjb3VudCgkYnVpbGRfY29uZmlndXJhdGlv
bl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxkX2NvdW50OwogICAgIGZvcmVhY2goJGJ1aWxk
X2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRfY29uZmlndXJhdGlvbikKICAgICAgICAgaW5z
ZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkYnVpbGRfY29uZmlndXJh
dGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCBOVUxMLCAkZ3Jv
dXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRpb25fY291bnQ7ICRpKysp
IHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29u
ZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1
cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICBpZiAoJHJlcGV0aXRp
b25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAgICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmln
dXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgIGZvciAo
JGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKQorICAgICAgICAgICAgICAgIGlu
c2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJh
dGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwg
JGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydCgkcmVw
ZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZycpOworICAgICAgICBmb3IgKCRpID0gMDsgJGkg
PCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgeworICAgICAgICAgICAgZm9yZWFjaCAoJHRlc3Rf
Y29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRpb24pCisgICAgICAgICAgICAg
ICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25m
aWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0
X2lkLCAkZ3JvdXBfaWQpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAkZ3JvdXBfaWQ7
CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVn
ZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKaW5kZXggNTcwZTkw
MmY1ZDJlMWRmM2ZjMmI2YjZhZmEyMzNhYmZiNTAwMzY0Ny4uYmZmYjljZWM0ZjZjNGJiNWM0Nzcw
Mjk1OGYyZDRlYzMwY2NjZmJjMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVl
c3RzLnBocApAQCAtNywxMyArNywxNSBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICRkYiA9IGNv
bm5lY3QoKTsKICAgICAkZGF0YSA9IGVuc3VyZV9wcml2aWxlZ2VkX2FwaV9kYXRhX2FuZF90b2tl
bl9vcl93b3JrZXIoJGRiKTsKIAotICAgICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQg
PSBhcnJheV9nZXQoJGRhdGEsICdhZGRDb3VudCcpOwotICAgIGlmICghJGFkZGl0aW9uYWxfYnVp
bGRfcmVxdWVzdF9jb3VudCkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXF1ZXN0Q291bnRO
b3RTcGVjaWZpZWQnKTsKKyAgICAkYXJndW1lbnRzID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRh
LCBhcnJheSgKKyAgICAgICAgJ2FkZENvdW50JyA9PiAnaW50JywKKyAgICAgICAgJ2dyb3VwJyA9
PiAnaW50JywKKyAgICAgICAgJ2NvbW1pdFNldCcgPT4gJ2ludD8nLAorICAgICkpOwogCi0gICAg
JHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGRhdGEsICdncm91cCcpOwotICAgIGlmICghJHRl
c3RfZ3JvdXBfaWQpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcignVGVzdEdyb3VwTm90U3BlY2lm
aWVkJyk7CisgICAgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCA9ICRhcmd1bWVudHNb
J2FkZENvdW50J107CisgICAgJHRlc3RfZ3JvdXBfaWQgPSAkYXJndW1lbnRzWydncm91cCddOwor
ICAgICRjb21taXRfc2V0X2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdjb21taXRTZXQnKTsK
IAogICAgICR0ZXN0X2dyb3VwID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190ZXN0
X2dyb3VwcycsICd0ZXN0Z3JvdXAnLCBhcnJheSgnaWQnID0+ICR0ZXN0X2dyb3VwX2lkKSk7CiAg
ICAgaWYgKCEkdGVzdF9ncm91cCkKQEAgLTI4LDExICszMCwzMyBAQCBmdW5jdGlvbiBtYWluKCkg
ewogICAgIGlmICgkY3VycmVudF9vcmRlciA8IDApCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcign
Tm9UZXN0aW5nQnVpbGRSZXF1ZXN0cycpOwogCisgICAgJHJlcGV0aXRpb25fdHlwZSA9ICR0ZXN0
X2dyb3VwWyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ107CisgICAgYXNzZXJ0KGluX2FycmF5
KCRyZXBldGl0aW9uX3R5cGUsIFsnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCddKSk7CisgICAg
JGlzX2FsdGVybmF0aW5nX3R5cGUgPSAkcmVwZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZyc7
CisgICAgaWYgKCRpc19hbHRlcm5hdGluZ190eXBlICYmICRjb21taXRfc2V0X2lkKQorICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0NvbW1pdFNldE5vdFN1cHBvcnRlZEZvckFsdGVybmF0aW5nUmVw
ZXRpdGlvblR5cGUnKTsKKworICAgICRleGlzdGluZ190ZXN0X3R5cGVfYnVpbGRfcmVxdWVzdHMg
PSBhcnJheV9maWx0ZXIoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCBmdW5jdGlvbigkYnVpbGRf
cmVxdWVzdCkgeworICAgICAgICByZXR1cm4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3JkZXIn
XSA+PSAwOworICAgIH0pOworCisgICAgaWYgKCRpc19hbHRlcm5hdGluZ190eXBlKQorICAgICAg
ICBhZGRfYWx0ZXJuYXRpbmdfYnVpbGRfcmVxdWVzdHMoJGRiLCAkZXhpc3RpbmdfdGVzdF90eXBl
X2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVu
dF9vcmRlcik7CisgICAgZWxzZSB7CisgICAgICAgIGlmICgkY29tbWl0X3NldF9pZCkKKyAgICAg
ICAgICAgIGFkZF9zZXF1ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9jb21taXRfc2V0KCRkYiwg
JGV4aXN0aW5nX3Rlc3RfdHlwZV9idWlsZF9yZXF1ZXN0cywgJGFkZGl0aW9uYWxfYnVpbGRfcmVx
dWVzdF9jb3VudCwgJGNvbW1pdF9zZXRfaWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
ZGRfc2VxdWVudGlhbF9idWlsZF9yZXF1ZXN0c19mb3JfYWxsX2NvbW1pdF9zZXRzKCRkYiwgJGV4
aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAk
dGVzdF9ncm91cF9pZCk7CisgICAgfQorCisgICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKK30KKwor
ZnVuY3Rpb24gYWRkX2FsdGVybmF0aW5nX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGV4aXN0aW5nX2J1
aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkb3JkZXIpCit7
CiAgICAgJGNvbW1pdF9zZXRzID0gYXJyYXkoKTsKICAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21t
aXRfc2V0ID0gYXJyYXkoKTsKICAgICBmb3JlYWNoICgkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMg
YXMgJGJ1aWxkX3JlcXVlc3QpIHsKLSAgICAgICAgaWYgKCRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0
X29yZGVyJ10gPCAwKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICRyZXF1ZXN0ZWRf
Y29tbWl0X3NldCA9ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXTsKICAgICAg
ICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHJlcXVlc3RlZF9jb21taXRfc2V0LCAkYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDQsMTkgKzY4
LDc5IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGFkZGl0aW9u
YWxfYnVpbGRfcmVxdWVzdF9jb3VudDsgJGkrKykgewogICAgICAgICBmb3JlYWNoICgkY29tbWl0
X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKICAgICAgICAgICAgICRidWlsZF9yZXF1ZXN0ID0gJGJ1
aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF07Ci0gICAgICAgICAgICAkZGIt
Pmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgKLSAgICAgICAg
ICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3RyaWdnZXJh
YmxlJ10sCi0gICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnlfZ3JvdXAnID0+ICRidWlsZF9yZXF1
ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXSwKLSAgICAgICAgICAgICAgICAncGxhdGZv
cm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3JtJ10sCi0gICAgICAgICAgICAg
ICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwKLSAgICAgICAgICAg
ICAgICAnZ3JvdXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2dyb3VwJ10sCi0gICAgICAg
ICAgICAgICAgJ29yZGVyJyA9PiArKyRjdXJyZW50X29yZGVyLAotICAgICAgICAgICAgICAgICdj
b21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J10pKTsKKyAg
ICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9yZXF1ZXN0X3dpdGhfbmV3X29yZGVyKCRkYiwgJGJ1
aWxkX3JlcXVlc3QsICsrJG9yZGVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAkZGItPmNvbW1p
dF90cmFuc2FjdGlvbigpOworfQogCi0gICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKK2Z1bmN0aW9u
IGFkZF9zZXF1ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9hbGxfY29tbWl0X3NldHMoJGRiLCAk
ZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQs
ICR0ZXN0X2dyb3VwX2lkKQoreworICAgICRvcmRlcl9zaGlmdF9ieV9jb21taXRfc2V0ID0gYXJy
YXkoKTsKKyAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0ID0gYXJyYXkoKTsKKyAgICBm
b3JlYWNoICgkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMgYXMgJGxhc3RfZXhpc3RpbmdfYnVpbGRf
cmVxdWVzdCkgeworICAgICAgICAkY29tbWl0X3NldF9mb3JfY3VycmVudF9yZXF1ZXN0ID0gJGxh
c3RfZXhpc3RpbmdfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J107CisgICAgICAg
ICRpc19leGlzdGluZ19jb21taXRfc2V0ID0gYXJyYXlfa2V5X2V4aXN0cygkY29tbWl0X3NldF9m
b3JfY3VycmVudF9yZXF1ZXN0LCAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KTsKKyAgICAg
ICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF9mb3JfY3VycmVudF9y
ZXF1ZXN0XSA9ICRsYXN0X2V4aXN0aW5nX2J1aWxkX3JlcXVlc3Q7CisgICAgICAgIGlmICgkaXNf
ZXhpc3RpbmdfY29tbWl0X3NldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAkb3Jk
ZXJfc2hpZnRfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF9mb3JfY3VycmVudF9yZXF1ZXN0XSA9
IChjb3VudCgkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KSAtIDEpICogJGFkZGl0aW9uYWxf
YnVpbGRfcmVxdWVzdF9jb3VudDsKKyAgICB9CisKKyAgICAkZGItPmJlZ2luX3RyYW5zYWN0aW9u
KCk7CisgICAgZm9yZWFjaCAoYXJyYXlfcmV2ZXJzZSgkb3JkZXJfc2hpZnRfYnlfY29tbWl0X3Nl
dCwgdHJ1ZSkgYXMgJGNvbW1pdF9zZXQgPT4gJGluY3JlbWVudCkgeworICAgICAgICBpZiAoISRp
bmNyZW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgJGRiLT5xdWVyeSgnVVBE
QVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X29yZGVyID0gcmVxdWVzdF9vcmRlciArICQx
CisgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2NvbW1pdF9zZXQgPSAkMiBBTkQgcmVxdWVzdF9n
cm91cCA9ICQzJywKKyAgICAgICAgICAgIGFycmF5KCRpbmNyZW1lbnQsICRjb21taXRfc2V0LCAk
dGVzdF9ncm91cF9pZCkpOworICAgIH0KKyAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRidWlsZF9y
ZXF1ZXN0X2J5X2NvbW1pdF9zZXQpIGFzICRjb21taXRfc2V0KSB7CisgICAgICAgICRsYXN0X2V4
aXN0aW5nX2J1aWxkX3JlcXVlc3QgPSAkYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0WyRjb21t
aXRfc2V0XTsKKyAgICAgICAgJGxhc3RfZXhpc3Rpbmdfb3JkZXIgPSAkbGFzdF9leGlzdGluZ19i
dWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ107CisgICAgICAgICRvcmRlcl9zaGlmdCA9IGFy
cmF5X2dldCgkb3JkZXJfc2hpZnRfYnlfY29tbWl0X3NldCwgJGNvbW1pdF9zZXQsIDApOworICAg
ICAgICBmb3IgKCRpID0gMTsgJGkgPD0gJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudDsg
JGkrKykKKyAgICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9yZXF1ZXN0X3dpdGhfbmV3X29yZGVy
KCRkYiwgJGxhc3RfZXhpc3RpbmdfYnVpbGRfcmVxdWVzdCwgJGxhc3RfZXhpc3Rpbmdfb3JkZXIg
KyAkaSArICRvcmRlcl9zaGlmdCk7CisgICAgfQorICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9u
KCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9zZXF1ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9jb21t
aXRfc2V0KCRkYiwgJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9y
ZXF1ZXN0X2NvdW50LCAkdGFyZ2V0X2NvbW1pdF9zZXRfaWQpCit7CisgICAgJGZvdW5kX3Rhcmdl
dCA9IGZhbHNlOworICAgIGZvcmVhY2ggKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkY3Vy
cmVudF9idWlsZF9yZXF1ZXN0KSB7CisgICAgICAgIGlmICgkY3VycmVudF9idWlsZF9yZXF1ZXN0
WydyZXF1ZXN0X2NvbW1pdF9zZXQnXSA9PSAkdGFyZ2V0X2NvbW1pdF9zZXRfaWQpIHsKKyAgICAg
ICAgICAgICRmb3VuZF90YXJnZXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKCEkZm91bmRfdGFyZ2V0KQorICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ05vQ29tbWl0U2V0SW5UZXN0R3JvdXAnKTsKKworICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rp
b24oKTsKKyAgICBmb3JlYWNoIChhcnJheV9yZXZlcnNlKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0
cywgdHJ1ZSkgYXMgJGN1cnJlbnRfYnVpbGRfcmVxdWVzdCkgeworICAgICAgICBpZiAoJGN1cnJl
bnRfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J10gPT0gJHRhcmdldF9jb21taXRf
c2V0X2lkKSB7CisgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWls
ZF9yZXF1ZXN0X2NvdW50OyAkaSsrKQorICAgICAgICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9y
ZXF1ZXN0X3dpdGhfbmV3X29yZGVyKCRkYiwgJGN1cnJlbnRfYnVpbGRfcmVxdWVzdCwgJGN1cnJl
bnRfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9vcmRlciddICsgJGkgKyAxKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGRiLT5xdWVyeSgnVVBEQVRF
IGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X29yZGVyID0gcmVxdWVzdF9vcmRlciArICQxIFdI
RVJFIHJlcXVlc3RfaWQgPSAkMicsCisgICAgICAgICAgICAgICAgYXJyYXkoJGFkZGl0aW9uYWxf
YnVpbGRfcmVxdWVzdF9jb3VudCwgJGN1cnJlbnRfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9pZCdd
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKK30K
KworZnVuY3Rpb24gZHVwbGljYXRlX2J1aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3JkZXIoJGRiLCAk
YnVpbGRfcmVxdWVzdCwgJG9yZGVyX292ZXJ3cml0ZSkKK3sKKyAgICAkZGItPmluc2VydF9yb3co
J2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgKKyAgICAgICAgJ3RyaWdnZXJhYmxl
JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF90cmlnZ2VyYWJsZSddLAorICAgICAgICAncmVw
b3NpdG9yeV9ncm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcmVwb3NpdG9yeV9ncm91
cCddLAorICAgICAgICAncGxhdGZvcm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRm
b3JtJ10sCisgICAgICAgICd0ZXN0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF90ZXN0J10s
CisgICAgICAgICdncm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfZ3JvdXAnXSwKKyAg
ICAgICAgJ29yZGVyJyA9PiAkb3JkZXJfb3ZlcndyaXRlLAorICAgICAgICAnY29tbWl0X3NldCcg
PT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddKSk7CiB9CiAKIG1haW4oKTsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggMjhhMTYx
MzAwODRlOGM0ZGFlMTRiZDI5ZjUwZmZlOGJjZGU4YWM5NC4uMmRjNzQ3Y2JkZTI2NzllM2Y5NmFk
NTkwMGIwNmRmMzJhMzc4ZTFhMyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlz
aXMtdGFzay5waHAKQEAgLTEwLDYgKzEwLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkYXV0
aG9yID0gcmVtb3RlX3VzZXJfbmFtZSgkZGF0YSk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRh
dGEsICduYW1lJyk7CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdy
ZXBldGl0aW9uQ291bnQnKTsKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gYXJyYXlfZ2V0KCRkYXRh
LCAncmVwZXRpdGlvblR5cGUnLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAkbmVlZHNfbm90aWZpY2F0
aW9uID0gYXJyYXlfZ2V0KCRkYXRhLCAnbmVlZHNOb3RpZmljYXRpb24nLCBGYWxzZSk7CiAgICAg
JHRlc3RfZ3JvdXBfbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3RHcm91cE5hbWUnKTsKICAg
ICAkcmV2aXNpb25fc2V0X2xpc3QgPSBhcnJheV9nZXQoJGRhdGEsICdyZXZpc2lvblNldHMnKTsK
QEAgLTIwLDYgKzIxLDkgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBpZiAoISRuYW1lKQogICAg
ICAgICBleGl0X3dpdGhfZXJyb3IoJ01pc3NpbmdOYW1lJywgYXJyYXkoJ25hbWUnID0+ICRuYW1l
KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5h
dGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRS
ZXBldGl0aW9uVHlwZScsIGFycmF5KCdyZXBldGl0aW9uVHlwZScgPT4gJHJlcGV0aXRpb25fdHlw
ZSkpOworCiAgICAgJHJhbmdlID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRhLCBhcnJheSgnc3Rh
cnRSdW4nID0+ICdpbnQnLCAnZW5kUnVuJyA9PiAnaW50JykpOwogCiAgICAgJHN0YXJ0X3J1biA9
IGVuc3VyZV9yb3dfYnlfaWQoJGRiLCAndGVzdF9ydW5zJywgJ3J1bicsICRyYW5nZVsnc3RhcnRS
dW4nXSwgJ0ludmFsaWRTdGFydFJ1bicsICRyYW5nZSk7CkBAIC04NSw3ICs4OSw3IEBAIGZ1bmN0
aW9uIG1haW4oKSB7CiAgICAgICAgICR0cmlnZ2VyYWJsZV9pZCA9ICR0cmlnZ2VyYWJsZVsnaWQn
XTsKICAgICAgICAgJHRlc3RfaWQgPSAkdHJpZ2dlcmFibGVbJ3Rlc3QnXTsKICAgICAgICAgJGNv
bW1pdF9zZXRzID0gY29tbWl0X3NldHNfZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdnZXJh
YmxlX2lkLCAkcmV2aXNpb25fc2V0X2xpc3QpOwotICAgICAgICBjcmVhdGVfdGVzdF9ncm91cF9h
bmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkdGVzdF9ncm91
cF9uYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRjb25maWdbJ2NvbmZpZ19wbGF0Zm9y
bSddLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pOwor
ICAgICAgICBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0
X3NldHMsICR0YXNrX2lkLCAkdGVzdF9ncm91cF9uYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVf
aWQsICRjb25maWdbJ2NvbmZpZ19wbGF0Zm9ybSddLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291
bnQsICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogICAgIH0KIAogICAg
ICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocCBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3Qt
Z3JvdXAucGhwCmluZGV4IDc0MjUzZmJlNzg2NTliYTJmNmUwOTk5MzMxMDFiYjhhMjlmMzExZGUu
LmQyM2IyZmY5NjY4MWM4ZmE4OGVjMGY5NzNkMTBlYmZmMzcyODg4NTMgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3Qt
Z3JvdXAucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdl
ZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCkBAIC0xOCw2ICsxOCw3IEBAIGZ1bmN0aW9uIG1h
aW4oKQogICAgICR0YXNrX2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICd0YXNrJyk7CiAgICAg
JHRhc2tfbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ3Rhc2tOYW1lJyk7CiAgICAgJHJlcGV0aXRp
b25fY291bnQgPSAkYXJndW1lbnRzWydyZXBldGl0aW9uQ291bnQnXTsKKyAgICAkcmVwZXRpdGlv
bl90eXBlID0gYXJyYXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlvblR5cGUnLCAnYWx0ZXJuYXRpbmcn
KTsKICAgICAkbmVlZHNfbm90aWZpY2F0aW9uID0gYXJyYXlfZ2V0KCRkYXRhLCAnbmVlZHNOb3Rp
ZmljYXRpb24nLCBGYWxzZSk7CiAgICAgJHBsYXRmb3JtX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAn
cGxhdGZvcm0nKTsKICAgICAkdGVzdF9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3QnKTsKQEAg
LTQyLDYgKzQzLDkgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgZWxzZSBpZiAoJHJlcGV0aXRpb25f
Y291bnQgPCAxKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uQ291
bnQnLCBhcnJheSgncmVwZXRpdGlvbkNvdW50JyA9PiAkcmVwZXRpdGlvbl9jb3VudCkpOwogCisg
ICAgaWYgKCFpbl9hcnJheSgkcmVwZXRpdGlvbl90eXBlLCBhcnJheSgnYWx0ZXJuYXRpbmcnLCAn
c2VxdWVudGlhbCcpKSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwZXRpdGlv
blR5cGUnLCBhcnJheSgncmVwZXRpdGlvblR5cGUnID0+ICRyZXBldGl0aW9uX3R5cGUpKTsKKwog
ICAgICR0cmlnZ2VyYWJsZV9pZCA9IE5VTEw7CiAgICAgaWYgKCR0YXNrX2lkKSB7CiAgICAgICAg
ICR0YXNrID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190YXNrcycsICd0YXNrJywg
YXJyYXkoJ2lkJyA9PiAkdGFza19pZCkpOwpAQCAtODYsNyArOTAsNyBAQCBmdW5jdGlvbiBtYWlu
KCkKICAgICBpZiAoJHRhc2tfbmFtZSkKICAgICAgICAgJHRhc2tfaWQgPSAkZGItPmluc2VydF9y
b3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnbmFtZScgPT4gJHRhc2tfbmFtZSwg
J2F1dGhvcicgPT4gJGF1dGhvcikpOwogCi0gICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3Jv
dXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUs
ICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0
aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pOworICAgICRncm91cF9pZCA9IGNyZWF0
ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tf
aWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3Rf
aWQsICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0
aW9uKTsKIAogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFw
aS91cGRhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggMzU1ZTZjODVmMTIzYjJjMzU0NDcxMWJmYjYx
NzQwMDA3OTM3NjlhYy4uMzE3NWQ3MTBhN2M3YzY0NTRiZmI3OTYxNmVkZWQ2ODMyOTM5Zjk0NCAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFw
aS91cGRhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAKQEAgLTIwLDYgKzIwLDkg
QEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgJHZhbHVlc1snbWF5X25lZWRfbW9yZV9yZXF1
ZXN0cyddID0gRkFMU0U7CiAgICAgfQogCisgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2NhbmNl
bCcsICRkYXRhKSkKKyAgICAgICAgJHZhbHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0g
RkFMU0U7CisKICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnbWF5TmVlZE1vcmVSZXF1ZXN0cycs
ICRkYXRhKSkKICAgICAgICAgICR2YWx1ZXNbJ21heV9uZWVkX21vcmVfcmVxdWVzdHMnXSA9ICRk
YXRhWydtYXlOZWVkTW9yZVJlcXVlc3RzJ107CiAKQEAgLTQ0LDcgKzQ3LDcgQEAgZnVuY3Rpb24g
bWFpbigpIHsKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb1VwZGF0ZVRlc3RHcm91
cCcsIGFycmF5KCdpZCcgPT4gJHRlc3RfZ3JvdXBfaWQsICd2YWx1ZXMnID0+ICR2YWx1ZXMpKTsK
ICAgICB9CiAKLSAgICBpZiAoYXJyYXlfZ2V0KCRkYXRhLCAnaGlkZGVuJykpIHsKKyAgICBpZiAo
YXJyYXlfZ2V0KCRkYXRhLCAnaGlkZGVuJykgfHwgYXJyYXlfZ2V0KCRkYXRhLCAnY2FuY2VsJykp
IHsKICAgICAgICAgJGRiLT5xdWVyeV9hbmRfZ2V0X2FmZmVjdGVkX3Jvd3MoJ1VQREFURSBidWls
ZF9yZXF1ZXN0cyBTRVQgcmVxdWVzdF9zdGF0dXMgPSAkMQogICAgICAgICAgICAgV0hFUkUgcmVx
dWVzdF9ncm91cCA9ICQyIEFORCByZXF1ZXN0X3N0YXR1cyA9ICQzJywgYXJyYXkoJ2NhbmNlbGVk
JywgJHRlc3RfZ3JvdXBfaWQsICdwZW5kaW5nJykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25l
bnQtYmFzZS5qcwppbmRleCBjNTZlMmIwMDkxNzE4YzA5MDcyNzcxNjI0NDVmN2M5ZWU3YTQ4OTJk
Li5iZDcxNzE3ZDI4ZjUxNmY5MDk3NmRhOTlmMWIzMzQ3YjhhYTYzOGM5IDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJh
c2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9u
LWNvbXBvbmVudC1iYXNlLmpzCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBjbGFzcyBDb21tb25Db21w
b25lbnRCYXNlIHsKICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoQ29tbW9uQ29tcG9u
ZW50QmFzZS5fY29udGV4dC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7CiAgICAgfQogCi0gICAg
Y3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFs
LCB0YWJJbmRleD1udWxsKQorICAgIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNr
LCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXggPSBudWxsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIENvbW1vbkNvbXBvbmVudEJhc2UuY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2Fs
bGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleCk7CiAgICAgfQogCi0gICAgc3Rh
dGljIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRl
cm5hbCwgdGFiSW5kZXg9bnVsbCkKKyAgICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50LCB0aXRs
ZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleCA9IG51bGwpCiAgICAg
ewogICAgICAgICB2YXIgdGl0bGUgPSB0aXRsZU9yQ2FsbGJhY2s7CiAgICAgICAgIGlmIChjYWxs
YmFjayA9PT0gdW5kZWZpbmVkKSB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1m
b3JtLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1
c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5qcwppbmRleCA4N2IxN2MxNDZkNDUz
ZTAyYTMwM2RmMmE5MjQyMjM0ZTRhOGU0YzY5Li4yZmJkYWIzZTJkMDY2MGNmNjdmYWRkZWYwNTE0
OWMwOGJhMTc2NjE5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20t
Y29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3Mg
Q3VzdG9tQ29uZmlndXJhdGlvblRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsK
ICAgICAgICAgY29uc3QgdGVzdCA9IGNvbmZpZ3VyYXRvci50ZXN0cygpWzBdOyAvLyBGSVhNRTog
QWRkIHRoZSBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIG11bHRpcGxlIHRlc3RzLgogICAgICAgICBj
b25zb2xlLmFzc2VydCghIXRoaXMuX2hhc1Rhc2sgPT09ICF0YXNrTmFtZSk7CiAgICAgICAgIGlm
ICghdGhpcy5faGFzVGFzaykKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0
VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0
cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tOYW1lLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOwor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGVzdEdyb3Vw
TmFtZSwgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9yZXBldGl0aW9uVHlwZSwgY29tbWl0
U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbiwgdGFza05hbWUp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRl
c3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMs
IHBsYXRmb3JtLCB0ZXN0LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGVzdEdyb3VwTmFtZSwgdGhpcy5f
cmVwZXRpdGlvbkNvdW50LCB0aGlzLl9yZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxhdGZv
cm0sIHRlc3QsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgfQogCiAgICAgZGlkQ29u
c3RydWN0U2hhZG93VHJlZSgpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUt
dGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IDA4MWNhOWQyN2QzZGI4YzkzMjBkYjAyODIwNzJlNTcy
MWQ3ZGY2YWMuLjFmMzcwNTA1M2JlNDg1MDc4NjFhM2RlMzBhYTU4ZmFlNTE1MmQ4MGYgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0
b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCkBA
IC0yNyw3ICsyNyw4IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBU
ZXN0R3JvdXBGb3JtIHsKIAogICAgIHN0YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlz
LmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRo
aXMuX25hbWUsIHRoaXMuX2NvbXB1dGVDb21taXRTZXRNYXAoKSwgdGhpcy5fbm90aWZ5T25Db21w
bGV0aW9uKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhp
cy5fbmFtZSwgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9yZXBldGl0aW9uVHlwZSwKKyAg
ICAgICAgICAgIHRoaXMuX2NvbXB1dGVDb21taXRTZXRNYXAoKSwgdGhpcy5fbm90aWZ5T25Db21w
bGV0aW9uKTsKICAgICB9CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdy
b3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVu
dHMvdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IGE0M2VkZjM1MDhiY2YwNzQ2MjVkYjk5NjRmNjA0
ZGUxODA4Mjk2NGYuLjk4OTI0MTAxMDk5NmVjMzQyNDNiYTEyZTg1Y2IyNWYwY2VhMDgwNmIgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90
ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcwpAQCAtMjcsNyArMjcsOCBAQCBjbGFzcyBU
ZXN0R3JvdXBGb3JtIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAKICAgICBzdGFydFRlc3Rpbmco
KQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhp
cy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICBj
b25zdCByZXBldGl0aW9uVHlwZVNlbGVjdCA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBl
Jyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3Jl
cGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGVTZWxlY3QudmFsdWUsIHRoaXMuX25vdGlmeU9u
Q29tcGxldGlvbik7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC02NSw3
ICs2NiwxMSBAQCBjbGFzcyBUZXN0R3JvdXBGb3JtIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAg
ICAgICAgICAgICAgICAgPG9wdGlvbj45PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgPG9wdGlv
bj4xMDwvb3B0aW9uPgogICAgICAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICBpdGVyYXRp
b25zIHBlciBzZXQKKyAgICAgICAgICAgIDxsYWJlbD5pdGVyYXRpb25zIHBlciBzZXQgaW48L2xh
YmVsPgorICAgICAgICAgICAgPHNlbGVjdCBpZD0icmVwZXRpdGlvbi10eXBlIj4KKyAgICAgICAg
ICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIHZhbHVlPSJhbHRlcm5hdGluZyI+YWx0ZXJuYXRlIChB
QkFCKTwvb3B0aW9uPgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNlcXVlbnRpYWwi
PnNlcXVlbmNlIChBQUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAg
ICAgICA8aW5wdXQgaWQ9Im5vdGlmeS1vbi1jb21wbGV0aW9uLWNoZWNrYm94IiB0eXBlPSJjaGVj
a2JveCIgY2hlY2tlZC8+Tm90aWZ5IG9uIGNvbXBsZXRpb24KICAgICAgICAgYDsKICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFs
eXNpcy10YXNrLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
YW5hbHlzaXMtdGFzay5qcwppbmRleCAxNzc2YTgxN2JjMzE5OTY5Mjk3MmE0MGFhNGVkNjhjMWE5
NWNkZWVlLi42YTA4NWNhY2UyYzc1N2U4OTM4MmRkZmVhMTA1MTA5NzM1OWZhYTBkIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10
YXNrLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2Fu
YWx5c2lzLXRhc2suanMKQEAgLTMyNCw3ICszMjQsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0
ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgfQogCi0g
ICAgc3RhdGljIGFzeW5jIGNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdy
b3VwTmFtZT1udWxsLCByZXBldGl0aW9uQ291bnQ9MCwgbm90aWZ5T25Db21wbGV0aW9uPWZhbHNl
KQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRl
c3RHcm91cE5hbWUgPSBudWxsLCByZXBldGl0aW9uQ291bnQgPSAwLCByZXBldGl0aW9uVHlwZSA9
ICdhbHRlcm5hdGluZycsIG5vdGlmeU9uQ29tcGxldGlvbiA9IGZhbHNlKQogICAgIHsKICAgICAg
ICAgY29uc3QgcGFyYW1ldGVycyA9IHtuYW1lLCBzdGFydFJ1bjogc3RhcnRQb2ludC5pZCwgZW5k
UnVuOiBlbmRQb2ludC5pZH07CiAgICAgICAgIGlmICh0ZXN0R3JvdXBOYW1lKSB7CkBAIC0zMzMs
NiArMzMzLDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAg
ICAgICAgICAgICBwYXJhbWV0ZXJzWydyZXBldGl0aW9uQ291bnQnXSA9IHJlcGV0aXRpb25Db3Vu
dDsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3Rlc3RHcm91cE5hbWUnXSA9IHRlc3RHcm91cE5h
bWU7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzWyduZWVkc05vdGlmaWNhdGlvbiddID0gbm90aWZ5
T25Db21wbGV0aW9uOworICAgICAgICAgICAgcGFyYW1ldGVyc1sncmVwZXRpdGlvblR5cGUnXSA9
IHJlcGV0aXRpb25UeXBlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCBwYXJh
bWV0ZXJzKTsKICAgICAgICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzcG9uc2Uu
dGFza0lkLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCmluZGV4IGYwOTVlMGQ3YWJlODZhMDI2
NTIxNTE2MTI3ODRkMjFkMTAzYTU2MTYuLjgyMzAyNjZhNjRkNjQxMDU3ZDlmZjBiNzRmYjhhOWMz
ZDMyMjNhN2IgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
bW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcwpAQCAtMTgsNyArMTgsNyBAQCBjbGFzcyBC
dWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9wbGF0
Zm9ybSA9IG9iamVjdC5wbGF0Zm9ybTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIW9iamVjdC50
ZXN0IHx8IG9iamVjdC50ZXN0IGluc3RhbmNlb2YgVGVzdCk7CiAgICAgICAgIHRoaXMuX3Rlc3Qg
PSBvYmplY3QudGVzdDsKLSAgICAgICAgdGhpcy5fb3JkZXIgPSBvYmplY3Qub3JkZXI7CisgICAg
ICAgIHRoaXMuX29yZGVyID0gK29iamVjdC5vcmRlcjsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
b2JqZWN0LmNvbW1pdFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CiAgICAgICAgIHRoaXMuX2Nv
bW1pdFNldCA9IG9iamVjdC5jb21taXRTZXQ7CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IG9iamVj
dC5zdGF0dXM7CkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERh
dGFNb2RlbE9iamVjdCB7CiAKICAgICB1cGRhdGVTaW5nbGV0b24ob2JqZWN0KQogICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fb3JkZXIgPT0gb2JqZWN0Lm9yZGVyKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoK3RoaXMuX29yZGVyIDw9ICtvYmplY3Qub3JkZXIpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb21taXRTZXQgPT0gb2JqZWN0LmNvbW1pdFNldCk7CiAK
ICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gb2JqZWN0LnRlc3RHcm91cDsKQEAgLTQ0LDYgKzQ0
LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAg
ICAgdGhpcy5fc3RhdHVzVXJsID0gb2JqZWN0LnVybDsKICAgICAgICAgdGhpcy5fYnVpbGRJZCA9
IG9iamVjdC5idWlsZDsKICAgICAgICAgdGhpcy5fc3RhdHVzRGVzY3JpcHRpb24gPSBvYmplY3Qu
c3RhdHVzRGVzY3JpcHRpb247CisgICAgICAgIHRoaXMuX29yZGVyID0gK29iamVjdC5vcmRlcjsK
ICAgICB9CiAKICAgICB0cmlnZ2VyYWJsZSgpIHsgcmV0dXJuIHRoaXMuX3RyaWdnZXJhYmxlOyB9
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
dGVzdC1ncm91cC5qcwppbmRleCA5N2U4YmM4ZWUzY2RhOWE2ZjY0MTYyMzUzNGU2N2ZiODAwMzk5
ODJiLi44ZDM3YzM4OWVmMWQ0OWIxODRlNTQyNTAyYTBmN2I1YzU5MWFkNjU5IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3Jv
dXAuanMKQEAgLTExLDcgKzExLDggQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9i
amVjdCB7CiAgICAgICAgIHRoaXMuX2lzSGlkZGVuID0gb2JqZWN0LmhpZGRlbjsKICAgICAgICAg
dGhpcy5fbmVlZHNOb3RpZmljYXRpb24gPSBvYmplY3QubmVlZHNOb3RpZmljYXRpb247CiAgICAg
ICAgIHRoaXMuX21heU5lZWRNb3JlUmVxdWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0
czsKLSAgICAgICAgdGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9IG9iamVjdC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50OworICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0g
K29iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAgICB0aGlzLl9yZXBldGl0aW9u
VHlwZSA9IG9iamVjdC5yZXBldGl0aW9uVHlwZTsKICAgICAgICAgdGhpcy5fYnVpbGRSZXF1ZXN0
cyA9IFtdOwogICAgICAgICB0aGlzLl9vcmRlckJ1aWxkUmVxdWVzdHNMYXppbHkgPSBuZXcgTGF6
aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4uLmJ1aWxkUmVxdWVzdHMpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBidWlsZFJlcXVlc3RzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIoKSAtIGIub3JkZXIo
KSk7CkBAIC0zNiw3ICszNyw4IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmpl
Y3QgewogICAgICAgICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5uZWVkc05vdGlm
aWNhdGlvbjsKICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VudEF0ID0gb2JqZWN0Lm5vdGlm
aWNhdGlvblNlbnRBdCA/IG5ldyBEYXRlKG9iamVjdC5ub3RpZmljYXRpb25TZW50QXQpIDogbnVs
bDsKICAgICAgICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IG9iamVjdC5tYXlOZWVkTW9y
ZVJlcXVlc3RzOwotICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gb2JqZWN0
LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9u
Q291bnQgPSArb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX3Jl
cGV0aXRpb25UeXBlID0gb2JqZWN0LnJlcGV0aXRpb25UeXBlOwogICAgIH0KIAogICAgIHRhc2so
KSB7IHJldHVybiBBbmFseXNpc1Rhc2suZmluZEJ5SWQodGhpcy5fdGFza0lkKTsgfQpAQCAtNDYs
NiArNDgsNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICBu
ZWVkc05vdGlmaWNhdGlvbigpIHsgcmV0dXJuIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uOyB9CiAg
ICAgbWF5TmVlZE1vcmVSZXF1ZXN0cygpIHsgcmV0dXJuIHRoaXMuX21heU5lZWRNb3JlUmVxdWVz
dHM7IH0KICAgICBpbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgeyByZXR1cm4gdGhpcy5faW5pdGlh
bFJlcGV0aXRpb25Db3VudDsgfQorICAgIHJlcGV0aXRpb25UeXBlKCkgeyByZXR1cm4gdGhpcy5f
cmVwZXRpdGlvblR5cGU7IH0KICAgICBub3RpZmljYXRpb25TZW50QXQoKSB7IHJldHVybiB0aGlz
Ll9ub3RpZmljYXRpb25TZW50QXQ7IH0KICAgICBhdXRob3IoKSB7IHJldHVybiB0aGlzLl9hdXRo
b3JOYW1lOyB9CiAgICAgYWRkQnVpbGRSZXF1ZXN0KHJlcXVlc3QpCkBAIC04MSwxMSArODQsMTAg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9vcmRlckJ1aWxkUmVxdWVzdHNMYXppbHkuZXZhbHVhdGUoLi4udGhpcy5fYnVpbGRS
ZXF1ZXN0cyk7CiAgICAgfQogCi0gICAgcmVwZXRpdGlvbkNvdW50KCkKKyAgICByZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9i
dWlsZFJlcXVlc3RzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBjb25z
dCBjb21taXRTZXQgPSB0aGlzLl9idWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwogICAgICAg
ICBsZXQgY291bnQgPSAwOwogICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgdGhpcy5fYnVp
bGRSZXF1ZXN0cykgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QuaXNUZXN0KCkgJiYgcmVxdWVz
dC5jb21taXRTZXQoKSA9PSBjb21taXRTZXQpCkBAIC05NCw2ICs5NiwxMDUgQEAgY2xhc3MgVGVz
dEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBjb3VudDsKICAg
ICB9CiAKKyAgICBoYXNSZXRyaWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVl
c3RlZENvbW1pdFNldHMoKS5zb21lKGNvbW1pdFNldCA9PiB0aGlzLnJlcGV0aXRpb25Db3VudEZv
ckNvbW1pdFNldChjb21taXRTZXQpID4gdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwor
ICAgIH0KKworICAgIGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkVG9SZWFjaEluaXRpYWxSZXBl
dGl0aW9uQ291bnQoY29tbWl0U2V0KQorICAgIHsKKyAgICAgICAgY29uc3QgcG90ZW50aWFsbHlT
dWNjZXNzZnVsQ291bnQgPSB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmls
dGVyKAorICAgICAgICAgICAgKHJlcXVlc3QpID0+IHJlcXVlc3QuaXNUZXN0KCkgJiYgKHJlcXVl
c3QuaGFzQ29tcGxldGVkKCkgfHwgIXJlcXVlc3QuaGFzRmluaXNoZWQoKSkpLmxlbmd0aDsKKyAg
ICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRoaXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIC0g
cG90ZW50aWFsbHlTdWNjZXNzZnVsQ291bnQpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxUZXN0
Q291bnQoY29tbWl0U2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdHNGb3JD
b21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoKHJlcXVlc3QpID0+IHJlcXVlc3QuaXNUZXN0KCkg
JiYgcmVxdWVzdC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoCisgICAgfQorCisgICAgaXNGaXJzdFRl
c3RSZXF1ZXN0KGJ1aWxkUmVxdWVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vcmRl
cmVkQnVpbGRSZXF1ZXN0cygpLmZpbHRlcigocmVxdWVzdCkgPT4gcmVxdWVzdC5pc1Rlc3QoKSlb
MF0gPT0gYnVpbGRSZXF1ZXN0CisgICAgfQorCisgICAgcHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1
aWxkUmVxdWVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IG9yZGVyZWRCdWlsZFJlcXVlc3RzID0g
dGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0
SW5kZXggPSBvcmRlcmVkQnVpbGRSZXF1ZXN0cy5pbmRleE9mKGJ1aWxkUmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBvcmRlcmVkQnVpbGRSZXF1ZXN0c1tidWlsZFJlcXVlc3RJbmRleCAtIDFdOwor
ICAgIH0KKworICAgIHJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KQorICAgIHsKKyAg
ICAgICAgY29uc3QgcmV0cnlDb3VudCA9IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0
KGNvbW1pdFNldCkgLSB0aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQocmV0cnlDb3VudCA+PSAwKTsKKyAgICAgICAgcmV0dXJuIHJldHJ5Q291bnQ7
CisgICAgfQorCisgICAgcmV0cnlDb3VudHNBcmVTYW1lRm9yQWxsQ29tbWl0U2V0cygpCisgICAg
eworICAgICAgICBjb25zdCByZXRyeUNvdW50Rm9yRmlyc3RDb21taXRTZXQgPSB0aGlzLnJldHJ5
Q291bnRGb3JDb21taXRTZXQodGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF0pOworICAgICAg
ICByZXR1cm4gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCkuZXZlcnkoY29tbWl0U2V0ID0+IHRo
aXMucmV0cnlDb3VudEZvckNvbW1pdFNldChjb21taXRTZXQpID09IHJldHJ5Q291bnRGb3JGaXJz
dENvbW1pdFNldCk7CisgICAgfQorCisgICAgYXN5bmMgX2NyZWF0ZUFsdGVybmF0aW5nUmV0cmll
c0ZvclRlc3RHcm91cChtYXhSZXRyeUZhY3RvcikKKyAgICB7CisgICAgICAgIGNvbnN0IHJldHJ5
TGltaXQgPSBtYXhSZXRyeUZhY3RvciAqIHRoaXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpOwor
ICAgICAgICBjb25zdCBhZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRlZCA9IHRoaXMucmVxdWVzdGVk
Q29tbWl0U2V0cygpLnJlZHVjZSgKKyAgICAgICAgICAgIChjdXJyZW50TWF4LCBjb21taXRTZXQp
ID0+IE1hdGgubWF4KHRoaXMuYWRkaXRpb25hbFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlh
bFJlcGV0aXRpb25Db3VudChjb21taXRTZXQpLCBjdXJyZW50TWF4KSwgMCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkIDw9IHRoaXMuaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpKTsKKworICAgICAgICBjb25zdCB3aWxsRXhjZWVkUmV0cnlMaW1pdCA9
IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAgICAg
ICBhZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRlZCArIHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29t
bWl0U2V0KGNvbW1pdFNldCkgPiByZXRyeUxpbWl0KTsKKworICAgICAgICBpZiAoIWFkZGl0aW9u
YWxSZXBldGl0aW9uTmVlZGVkIHx8IHdpbGxFeGNlZWRSZXRyeUxpbWl0KQorICAgICAgICAgICAg
cmV0dXJuIHtyZXRyeUNvdW50OiAwLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX07CisKKyAg
ICAgICAgY29uc3QgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRoaXMucmVxdWVzdGVkQ29t
bWl0U2V0cygpLnNvbWUoKHNldCkgPT4KKyAgICAgICAgICAgIHRoaXMucmVxdWVzdHNGb3JDb21t
aXRTZXQoc2V0KS5zb21lKChyZXF1ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpICYmICFyZXF1ZXN0
Lmhhc0ZpbmlzaGVkKCkpKTsKKworICAgICAgICBjb25zdCBlYWNoQ29tbWl0U2V0SGFzQ29tcGxl
dGVkQXRMZWFzdE9uZVRlc3QgPSB0aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKS5ldmVyeSh0aGlz
LnN1Y2Nlc3NmdWxUZXN0Q291bnQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgaWYgKGhhc1VuZmlu
aXNoZWRCdWlsZFJlcXVlc3QgJiYgIWVhY2hDb21taXRTZXRIYXNDb21wbGV0ZWRBdExlYXN0T25l
VGVzdCkKKyAgICAgICAgICAgIHJldHVybiB7cmV0cnlDb3VudDogMCwgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZX07CisKKyAgICAgICAgaWYoIWVhY2hDb21taXRTZXRIYXNDb21wbGV0ZWRBdExl
YXN0T25lVGVzdCkKKyAgICAgICAgICAgIHJldHVybiB7cmV0cnlDb3VudDogMCwgbWF5TmVlZE1v
cmVSZXF1ZXN0czogZmFsc2V9OworCisgICAgICAgIGF3YWl0IHRoaXMuYWRkTW9yZUJ1aWxkUmVx
dWVzdHMoYWRkaXRpb25hbFJlcGV0aXRpb25OZWVkZWQpOworICAgICAgICByZXR1cm4ge3JldHJ5
Q291bnQ6IGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBm
YWxzZX07CisgICAgfQorCisgICAgYXN5bmMgX2NyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVz
dEdyb3VwKG1heFJldHJ5RmFjdG9yKQorICAgIHsKKyAgICAgICAgY29uc3QgcmV0cnlMaW1pdCA9
IG1heFJldHJ5RmFjdG9yICogdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCk7CisgICAgICAg
IGNvbnN0IGxhc3RJdGVtID0gKGFycmF5KSA9PiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsKKyAg
ICAgICAgY29uc3QgY29tbWl0U2V0cyA9IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpOworICAg
ICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmV2ZXJ5KChjdXJyZW50U2V0LCBpbmRleCkg
PT4KKyAgICAgICAgICAgICFpbmRleCB8fCBsYXN0SXRlbSh0aGlzLnJlcXVlc3RzRm9yQ29tbWl0
U2V0KGNvbW1pdFNldHNbaW5kZXggLSAxXSkpLm9yZGVyKCkgPCB0aGlzLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KGN1cnJlbnRTZXQpWzBdLm9yZGVyKCkpKTsKKworICAgICAgICBjb25zdCBhbGxUZXN0
UmVxdWVzdHNIYXZlRmFpbGVkRm9yU29tZUNvbW1pdFNldCA9IGNvbW1pdFNldHMuc29tZShjb21t
aXRTZXQgPT4KKyAgICAgICAgICAgIHRoaXMucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0
KS5ldmVyeShyZXF1ZXN0ID0+ICFyZXF1ZXN0LmlzVGVzdCgpIHx8IHJlcXVlc3QuaGFzRmFpbGVk
KCkpKTsKKworICAgICAgICBpZiAoYWxsVGVzdFJlcXVlc3RzSGF2ZUZhaWxlZEZvclNvbWVDb21t
aXRTZXQpCisgICAgICAgICAgICByZXR1cm4ge3JldHJ5Q291bnQ6IDAsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IGZhbHNlfTsKKworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBjb21taXRT
ZXRzKSB7CisgICAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzZnVsVGVzdENvdW50KGNvbW1pdFNl
dCkgPj0gdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsUmVwZXRpdGlvbiA9IHRoaXMuYWRk
aXRpb25hbFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudChjb21t
aXRTZXQpOworCisgICAgICAgICAgICBpZiAoYWRkaXRpb25hbFJlcGV0aXRpb24gKyB0aGlzLnJl
cGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpID4gcmV0cnlMaW1pdCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGRNb3JlQnVp
bGRSZXF1ZXN0cyhhZGRpdGlvbmFsUmVwZXRpdGlvbiwgY29tbWl0U2V0KTsKKyAgICAgICAgICAg
IHJldHVybiB7cmV0cnlDb3VudDogYWRkaXRpb25hbFJlcGV0aXRpb24sIG1heU5lZWRNb3JlUmVx
dWVzdHM6IGZhbHNlfTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB7cmV0cnlDb3VudDog
MCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9OworICAgIH0KKwogICAgIHJlcXVlc3RlZENv
bW1pdFNldHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVSZXF1ZXN0ZWRD
b21taXRTZXRzTGF6aWx5LmV2YWx1YXRlKC4uLnRoaXMuX29yZGVyZWRCdWlsZFJlcXVlc3RzKCkp
OwpAQCAtMTAyLDcgKzIwMyw2IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmpl
Y3QgewogICAgIHN0YXRpYyBfY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHMoLi4ub3JkZXJlZEJ1
aWxkUmVxdWVzdHMpCiAgICAgewogICAgICAgICBjb25zdCByZXF1ZXN0ZWRDb21taXRTZXRzID0g
W107Ci0gICAgICAgIGNvbnN0IGNvbW1pdFNldExhYmVsTWFwID0gbmV3IE1hcDsKICAgICAgICAg
Zm9yIChjb25zdCByZXF1ZXN0IG9mIG9yZGVyZWRCdWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAg
ICBjb25zdCBzZXQgPSByZXF1ZXN0LmNvbW1pdFNldCgpOwogICAgICAgICAgICAgaWYgKCFyZXF1
ZXN0ZWRDb21taXRTZXRzLmluY2x1ZGVzKHNldCkpCkBAIC0yMTksNiArMzE5LDE0IEBAIGNsYXNz
IFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsKICAgICB9CiAK
KyAgICBhc3luYyBjYW5jZWxQZW5kaW5nUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CisgICAgICAgICAgICBncm91cDogdGhpcy5pZCgp
LAorICAgICAgICAgICAgY2FuY2VsOiB0cnVlLAorICAgICAgICB9KTsKKyAgICB9CisKICAgICBh
c3luYyBkaWRTZW5kTm90aWZpY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhd2FpdCB0
aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoewpAQCAtMjI4LDExICszMzYsMTQgQEAgY2xhc3MgVGVz
dEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAg
IGFzeW5jIGFkZE1vcmVCdWlsZFJlcXVlc3RzKGFkZENvdW50KQorICAgIGFzeW5jIGFkZE1vcmVC
dWlsZFJlcXVlc3RzKGFkZENvdW50LCBjb21taXRTZXQgPSBudWxsKQogICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIWNvbW1pdFNldCB8fCB0aGlzLnJlcGV0aXRpb25UeXBlKCkgPT0gJ3Nl
cXVlbnRpYWwnKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbW1pdFNldCB8fCBjb21taXRT
ZXQgaW5zdGFuY2VvZiBDb21taXRTZXQpOwogICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fdXBk
YXRlQnVpbGRSZXF1ZXN0KHsKICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAgICAgICAg
ICAgICBhZGRDb3VudCwKKyAgICAgICAgICAgIGNvbW1pdFNldDogY29tbWl0U2V0ID8gY29tbWl0
U2V0LmlkKCkgOiBudWxsCiAgICAgICAgIH0sICdhZGQtYnVpbGQtcmVxdWVzdHMnKTsKICAgICB9
CiAKQEAgLTI0NCwzOSArMzU1LDY1IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRP
YmplY3QgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0aFRhc2so
dGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29t
bWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVXaXRo
VGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50
LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAg
IGNvbnN0IHJldmlzaW9uU2V0cyA9IENvbW1pdFNldC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0
cyhjb21taXRTZXRzKTsKLSAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2tOYW1lLCBuYW1lOiBn
cm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0
aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNv
bXBsZXRpb259OwotICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMpLnRoZW4oKGRhdGEpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKTsKLSAgICAg
ICAgfSkudGhlbigodGFzaykgPT4gewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JU
YXNrKHRhc2suaWQoKSkudGhlbigoKSA9PiB0YXNrKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNv
bnN0IGRhdGEgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1n
cm91cCcsIHsKKyAgICAgICAgICAgIHRhc2tOYW1lLCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3Jt
OiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3VudCwgcmV2aXNp
b25TZXRzLAorICAgICAgICAgICAgcmVwZXRpdGlvblR5cGUsIG5lZWRzTm90aWZpY2F0aW9uOiAh
IW5vdGlmeU9uQ29tcGxldGlvbn0pOworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlz
aXNUYXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSwgLyogaWdub3JlQ2FjaGUgKi8gdHJ1ZSk7
CisgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSk7CisgICAgICAgIHJl
dHVybiB0YXNrOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJh
dGlvbih0YXNrLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlV2l0
aEN1c3RvbUNvbmZpZ3VyYXRpb24odGFzaywgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0
aW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0U2V0cy5sZW5ndGggPT0g
Mik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IENvbW1pdFNldC5yZXZpc2lvblNldHNG
cm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2s6
IHRhc2suaWQoKSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVz
dDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291bnQsIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmlj
YXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9ufTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9
PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEZvclRhc2soZGF0YVsndGFza0lkJ10s
IHRydWUpOwotICAgICAgICB9KTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgeworICAgICAgICAgICAgdGFz
azogdGFzay5pZCgpLCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0
ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsCisgICAgICAg
ICAgICByZXZpc2lvblNldHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlv
bn0pOworICAgICAgICBhd2FpdCB0aGlzLmZldGNoQnlJZChkYXRhWyd0ZXN0R3JvdXBJZCddLCAv
KiBpZ25vcmVDYWNoZSAqLyB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbEJ5VGFz
ayhkYXRhWyd0YXNrSWQnXSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZUFuZFJlZmV0Y2hU
ZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5
T25Db21wbGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vw
cyh0YXNrLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRz
LCBub3RpZnlPbkNvbXBsZXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb21t
aXRTZXRzLmxlbmd0aCA9PSAyKTsKICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0
U2V0LnJldmlzaW9uU2V0c0Zyb21Db21taXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7Ci0gICAg
ICAgICAgICB0YXNrOiB0YXNrLmlkKCksCi0gICAgICAgICAgICBuYW1lOiBuYW1lLAotICAgICAg
ICAgICAgcmVwZXRpdGlvbkNvdW50OiByZXBldGl0aW9uQ291bnQsCi0gICAgICAgICAgICByZXZp
c2lvblNldHM6IHJldmlzaW9uU2V0cywKLSAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiAh
IW5vdGlmeU9uQ29tcGxldGlvbiwKLSAgICAgICAgfSkudGhlbigoZGF0YSkgPT4gdGhpcy5mZXRj
aEZvclRhc2soZGF0YVsndGFza0lkJ10sIHRydWUpKTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3
YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgeworICAg
ICAgICAgICAgdGFzazogdGFzay5pZCgpLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRp
b25UeXBlLCByZXZpc2lvblNldHMsCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogISFu
b3RpZnlPbkNvbXBsZXRpb24KKyAgICAgICAgfSk7CisgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hC
eUlkKGRhdGFbJ3Rlc3RHcm91cElkJ10sIC8qIGlnbm9yZUNhY2hlICovIHRydWUpOworICAgICAg
ICByZXR1cm4gdGhpcy5maW5kQWxsQnlUYXNrKGRhdGFbJ3Rhc2tJZCddKTsKKyAgICB9CisKKyAg
ICBhc3luYyBzY2hlZHVsZVJldHJpZXNJZk5lY2Vzc2FyeShtYXhSZXRyeUZhY3RvcikKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFsnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCddLmlu
Y2x1ZGVzKHRoaXMucmVwZXRpdGlvblR5cGUoKSkpOworICAgICAgICBpZiAodGhpcy5yZXBldGl0
aW9uVHlwZSgpID09ICdhbHRlcm5hdGluZycpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3Jl
YXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKG1heFJldHJ5RmFjdG9yKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKG1heFJl
dHJ5RmFjdG9yKTsKKyAgICB9CisKKyAgICBhc3luYyByZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0
c0ZsYWcobWF4UmV0cnlGYWN0b3IpCisgICAgeworICAgICAgICBpZiAoIXRoaXMubWF5TmVlZE1v
cmVSZXF1ZXN0cygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgaWYgKHRoaXMu
aXNIaWRkZW4oKSkgeworICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVp
bGRSZXF1ZXN0cygpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zdCB7cmV0cnlDb3VudCwgbWF5TmVlZE1vcmVSZXF1ZXN0c30gPSBhd2FpdCB0aGlzLnNj
aGVkdWxlUmV0cmllc0lmTmVjZXNzYXJ5KG1heFJldHJ5RmFjdG9yKTsKKworICAgICAgICBpZiAo
IW1heU5lZWRNb3JlUmVxdWVzdHMpCisgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyTWF5TmVl
ZE1vcmVCdWlsZFJlcXVlc3RzKCk7CisKKyAgICAgICAgcmV0dXJuIHJldHJ5Q291bnQ7CiAgICAg
fQogCiAgICAgc3RhdGljIGZpbmRBbGxCeVRhc2sodGFza0lkKQpAQCAtMjg0LDYgKzQyMSwxMyBA
QCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJu
IFRlc3RHcm91cC5hbGwoKS5maWx0ZXIoKHRlc3RHcm91cCkgPT4gdGVzdEdyb3VwLl90YXNrSWQg
PT0gdGFza0lkKTsKICAgICB9CiAKKyAgICBzdGF0aWMgYXN5bmMgZmV0Y2hCeUlkKHRlc3RHcm91
cElkLCBpZ25vcmVDYWNoZSA9IGZhbHNlKQorICAgIHsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3
YWl0IHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvdGVzdC1ncm91cHMvJHt0ZXN0R3JvdXBJZH1gLCB7
IH0sIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgdGhpcy5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRU
ZXN0R3JvdXBzKGRhdGEpOworICAgICAgICByZXR1cm4gdGhpcy5maW5kQnlJZCh0ZXN0R3JvdXBJ
ZCk7CisgICAgfQorCiAgICAgc3RhdGljIGZldGNoRm9yVGFzayh0YXNrSWQsIGlnbm9yZUNhY2hl
ID0gZmFsc2UpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnL2FwaS90
ZXN0LWdyb3VwcycsIHt0YXNrOiB0YXNrSWR9LCBpZ25vcmVDYWNoZSkudGhlbih0aGlzLl9jcmVh
dGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFn
ZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMt
dGFzay1wYWdlLmpzCmluZGV4IDNmNGZlZmZmMjdhNDM4MzY0MzA1YmJiODNkN2IxNmIzMjQwNWVj
NzEuLmJkNWNhNDE2ZWM5MjBhYjg4ZTFjNWUzMWJjOWE2ZGU5ZjA3MmM4YzYgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1w
YWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5h
bHlzaXMtdGFzay1wYWdlLmpzCkBAIC0yNCw4ICsyNCw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza0No
YXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogCiAgICAgZGlkQ29uc3RydWN0U2hhZG93
VHJlZSgpCiAgICAgewotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbign
c3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3Rp
ZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25l
d1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlP
bkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbign
c3RhcnRUZXN0aW5nJywgKG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNv
bW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0
aXRpb25UeXBlLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgICAgIH0p
OwogICAgIH0KIApAQCAtMTA2LDggKzEwNiw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Jlc3VsdHNQ
YW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJlcG9zaXRvcnlQaWNrZXIuYWRk
RXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKSk7CiAg
ICAgICAgIHRoaXMucGFydCgnY29tbWl0LXZpZXdlcicpLnNldFNob3dSZXBvc2l0b3J5TmFtZShm
YWxzZSk7CiAKLSAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0
VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25D
b21wbGV0aW9uKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0
R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21w
bGV0aW9uKTsKKyAgICAgICAgdGhpcy5wYXJ0KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0
VGVzdGluZycsIChuYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRT
ZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4geworICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9u
VHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pOwogICAgICAgICB9KTsKICAg
ICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQ
YW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9
IGN1cnJlbnRHcm91cDsKICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMucGFydCgnZm9ybScpOwog
ICAgICAgICBpZiAoIWZvcm0uaGFzQ29tbWl0U2V0cygpICYmIGN1cnJlbnRHcm91cCkKLSAgICAg
ICAgICAgIGZvcm0uc2V0Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3VycmVu
dEdyb3VwLnBsYXRmb3JtKCksIGN1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291bnQoKSwgY3VycmVu
dEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSk7CisgICAgICAgICAgICBmb3JtLnNldENvbmZp
Z3VyYXRpb25zKGN1cnJlbnRHcm91cC50ZXN0KCksIGN1cnJlbnRHcm91cC5wbGF0Zm9ybSgpLCBj
dXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCBjdXJyZW50R3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpKTsKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9
CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5l
IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIGA7CiAgICAg
fQotfTsKK30KIAogQ29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdhbmFseXNpcy10YXNrLWNv
bmZpZ3VyYXRvci1wYW5lJywgQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSk7CiAKQEAgLTI2
NywxNCArMjY3LDE0IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0ZW5kcyBD
b21wb25lbnRCYXNlIHsKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuY29udGVudCgnaGlkZS1idXR0b24nKS5vbmNsaWNrID0gKCkgPT4gdGhpcy5kaXNw
YXRjaEFjdGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsIHRoaXMuX2N1cnJlbnRUZXN0
R3JvdXApOwotICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbign
c3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7
Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsIHRoaXMu
X2N1cnJlbnRUZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKTsK
KyAgICAgICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVz
dGluZycsIChyZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRp
b24pID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3Vw
JywgdGhpcy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlw
ZSwgbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMucGFydCgn
YmlzZWN0LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25D
b3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgIHRoaXMucGFydCgnYmlzZWN0
LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewogICAgICAgICAgICAgY29u
c3QgYmlzZWN0aW5nQ29tbWl0U2V0ID0gdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0QnlUZXN0R3Jv
dXAuZ2V0KHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwogICAgICAgICAgICAgY29uc3QgW29uZUNv
bW1pdFNldCwgYW5vdGhlckNvbW1pdFNldF0gPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKTsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSBbb25lQ29t
bWl0U2V0LCBiaXNlY3RpbmdDb21taXRTZXQsIGFub3RoZXJDb21taXRTZXRdOwotICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhpcy5fY3VycmVudFRl
c3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24p
OworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgdGhp
cy5fY3VycmVudFRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0
aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0z
NjUsMjggKzM2NSw0NiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVuZHMg
Q29tcG9uZW50QmFzZSB7CiAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb250ZW50KCd0
ZXN0LWdyb3VwLWxpc3QnKS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTsKICAgICAgICAgaWYg
KHNlbGVjdGVkKQogICAgICAgICAgICAgc2VsZWN0ZWQuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0
ZWQnKTsKLSAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkKLSAgICAgICAgICAgIHRoaXMuX3Rlc3RH
cm91cE1hcC5nZXQoY3VycmVudEdyb3VwKS5saXN0SXRlbS5jbGFzc0xpc3QuYWRkKCdzZWxlY3Rl
ZCcpOwogCiAgICAgICAgIGlmIChjdXJyZW50R3JvdXApIHsKKyAgICAgICAgICAgIHRoaXMuX3Rl
c3RHcm91cE1hcC5nZXQoY3VycmVudEdyb3VwKS5saXN0SXRlbS5jbGFzc0xpc3QuYWRkKCdzZWxl
Y3RlZCcpOwogICAgICAgICAgICAgdGhpcy5wYXJ0KCdyZXRyeS1mb3JtJykuc2V0UmVwZXRpdGlv
bkNvdW50KGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwogICAgICAgICAg
ICAgdGhpcy5wYXJ0KCdiaXNlY3QtZm9ybScpLnNldFJlcGV0aXRpb25Db3VudChjdXJyZW50R3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKLSAgICAgICAgICAgIGNvbnN0IHN0YXR1c1N1
bW1hcnkgPSBgJHtjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpfSByZXF1ZXN0
ZWQsICR7Y3VycmVudEdyb3VwLnJlcGV0aXRpb25Db3VudCgpIC0gY3VycmVudEdyb3VwLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKX0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7Ci0gICAgICAgICAg
ICB0aGlzLmNvbnRlbnQoJ3N0YXR1cy1zdW1tYXJ5JykuaW5uZXJIVE1MID0gc3RhdHVzU3VtbWFy
eTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5oYXNSZXRyaWVzKCkpCisgICAgICAg
ICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncmV0cnktc3VtbWFyeScp
LCB0aGlzLl9yZXRyeVN1bW1hcnkoY3VycmVudEdyb3VwKSk7CiAKICAgICAgICAgICAgIGNvbnN0
IGF1dGhvcmVkQnkgPSBjdXJyZW50R3JvdXAuYXV0aG9yKCkgPyBgYnkgIiR7Y3VycmVudEdyb3Vw
LmF1dGhvcigpfSJgIDogJyc7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3Vt
bWFyeScpLmlubmVySFRNTCA9IGBTY2hlZHVsZWQgJHthdXRob3JlZEJ5fSBhdCAke2N1cnJlbnRH
cm91cC5jcmVhdGVkQXQoKX1gCisgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5j
b250ZW50KCdyZXF1ZXN0LXN1bW1hcnknKSwgYFNjaGVkdWxlZCAke2F1dGhvcmVkQnl9IGF0ICR7
Y3VycmVudEdyb3VwLmNyZWF0ZWRBdCgpfWApCisKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVw
bGFjZSh0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJyksIGN1cnJlbnRHcm91cC5pc0hpZGRlbigp
ID8gJ1VuaGlkZScgOiAnSGlkZScpOworCisgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2Uo
dGhpcy5jb250ZW50KCdwZW5kaW5nLXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKSwKKyAgICAgICAg
ICAgICAgICBjdXJyZW50R3JvdXAuaGFzUGVuZGluZygpID8gJyhjYW5jZWxzIHBlbmRpbmcgcmVx
dWVzdHMpJyA6IFtdKTsKICAgICAgICAgfQorCiAgICAgICAgIHRoaXMuY29udGVudCgncmV0cnkt
Zm9ybScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOwogICAg
ICAgICB0aGlzLmNvbnRlbnQoJ2Jpc2VjdC1mb3JtJykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRH
cm91cCAmJiB0aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRlc3RHcm91cC5nZXQoY3VycmVudEdy
b3VwKSA/IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1bW1h
cnknKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5yZXBldGl0
aW9uQ291bnQoKSA+IGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgPyBudWxs
IDogJ25vbmUnOwotICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFyeScpLnN0eWxl
LmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDogJ25vbmUnOworICAgIH0KIAotICAgICAg
ICBjb25zdCBoaWRlQnV0dG9uID0gdGhpcy5jb250ZW50KCdoaWRlLWJ1dHRvbicpOwotICAgICAg
ICBoaWRlQnV0dG9uLnRleHRDb250ZW50ID0gY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5p
c0hpZGRlbigpID8gJ1VuaGlkZScgOiAnSGlkZSc7Ci0gICAgICAgIGhpZGVCdXR0b24uc3R5bGUu
ZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CisgICAgX3JldHJ5U3VtbWFy
eSh0ZXN0R3JvdXApCisgICAgeworICAgICAgICBpZiAoIXRlc3RHcm91cC5oYXNSZXRyaWVzKCkp
CisgICAgICAgICAgICByZXR1cm4gJyc7CiAKLSAgICAgICAgdGhpcy5jb250ZW50KCdwZW5kaW5n
LXJlcXVlc3QtY2FuY2VsLXdhcm5pbmcnKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwICYm
IGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyBudWxsIDogJ25vbmUnOworICAgICAgICBpZiAo
dGVzdEdyb3VwLnJldHJ5Q291bnRzQXJlU2FtZUZvckFsbENvbW1pdFNldHMoKSkgeworICAgICAg
ICAgICAgY29uc3QgcmV0cnlDb3VudCA9IHRlc3RHcm91cC5yZXRyeUNvdW50Rm9yQ29tbWl0U2V0
KHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF0pOworICAgICAgICAgICAgcmV0dXJu
IGAke3Rlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJlcXVlc3RlZCwgJHtyZXRy
eUNvdW50fSBhZGRlZCBkdWUgdG8gZmFpbHVyZXMuYDsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bnN0IHJldHJ5U3VtbWFyeVBhcnRzID0gdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKQor
ICAgICAgICAgICAgLm1hcCgoY29tbWl0U2V0KSA9PiAoe2NvbW1pdFNldCwgcmV0cnlDb3VudDog
dGVzdEdyb3VwLnJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KX0pKQorICAgICAgICAg
ICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5yZXRyeUNvdW50KQorICAgICAgICAgICAgLm1hcCgo
aXRlbSkgPT4gYCR7aXRlbS5yZXRyeUNvdW50fSBhZGRlZCB0byAke3Rlc3RHcm91cC5sYWJlbEZv
ckNvbW1pdFNldChpdGVtLmNvbW1pdFNldCl9IGNvbmZpZ3VyYXRpb25gKTsKKworICAgICAgICBj
b25zdCByZXRyeVN1bW1hcnkgPSBuZXcgSW50bC5MaXN0Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2xv
bmcnLCB0eXBlOiAnY29uanVuY3Rpb24nfSkuZm9ybWF0KHJldHJ5U3VtbWFyeVBhcnRzKTsKKwor
ICAgICAgICByZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVx
dWVzdGVkLCAke3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAgICAg
c3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC0zOTYsNyArNDE0LDcgQEAgY2xhc3MgQW5hbHlzaXNU
YXNrVGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPGRp
diBpZD0idGVzdC1ncm91cC1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1y
ZXN1bHRzLXZpZXdlciBpZD0icmVzdWx0cy12aWV3ZXIiPjwvdGVzdC1ncm91cC1yZXN1bHRzLXZp
ZXdlcj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZSBpZD0icmV2
aXNpb24tdGFibGUiPjwvdGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZT4KLSAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJzdGF0dXMtc3VtbWFyeSIgY2xhc3M9InN1bW1hcnkiPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9InJldHJ5LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5Ij48L2Rpdj4K
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyZXF1ZXN0LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5
Ij48L2Rpdj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1mb3JtIGlkPSJyZXRyeS1mb3Jt
Ij5SZXRyeTwvdGVzdC1ncm91cC1mb3JtPgogICAgICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLWZv
cm0gaWQ9ImJpc2VjdC1mb3JtIj5CaXNlY3Q8L3Rlc3QtZ3JvdXAtZm9ybT4KQEAgLTU1Niw4ICs1
NzQsOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsK
ICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdzaG93SGlkZGVuVGVzdEdyb3Vwcycs
ICgpID0+IHRoaXMuX3Nob3dBbGxUZXN0R3JvdXBzKCkpOwogICAgICAgICBncm91cFBhbmUubGlz
dGVuVG9BY3Rpb24oJ3JlbmFtZVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIG5ld05hbWUpID0+IHRo
aXMuX3VwZGF0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwLCBuZXdOYW1lKSk7CiAgICAgICAgIGdy
b3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsICh0ZXN0
R3JvdXApID0+IHRoaXMuX2hpZGVDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCkpOwotICAgICAg
ICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwg
cmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX3JldHJ5Q3VycmVu
dFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9u
KSk7Ci0gICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3VwJywg
KHRlc3RHcm91cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRp
b24pID0+IHRoaXMuX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRz
LCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOworICAgICAgICBncm91cFBh
bmUubGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwgcmVwZXRpdGlv
bkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRy
eUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25U
eXBlLCBub3RpZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0
aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9u
Q291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX2Jpc2Vj
dEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQs
IHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pKTsKIAogICAgICAgICB0aGlzLnBh
cnQoJ2NhdXNlLWxpc3QnKS5saXN0ZW5Ub0FjdGlvbignYWRkSXRlbScsIChyZXBvc2l0b3J5LCBy
ZXZpc2lvbikgPT4gewogICAgICAgICAgICAgdGhpcy5fYXNzb2NpYXRlQ29tbWl0KCdjYXVzZScs
IHJlcG9zaXRvcnksIHJldmlzaW9uKTsKQEAgLTgzMiwxOSArODUwLDIyIEBAIGNsYXNzIEFuYWx5
c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9KTsKICAgICB9
CiAKLSAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50
LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0
ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxl
dGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSAodGhpcy5fdGVzdEdy
b3VwcyB8fCBbXSkubWFwKChncm91cCkgPT4gZ3JvdXAubmFtZSgpKTsKICAgICAgICAgY29uc3Qg
bmV3TmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbih0ZXN0R3JvdXAu
bmFtZSgpLCBuZXcgU2V0KGV4aXN0aW5nTmFtZXMpKTsKICAgICAgICAgY29uc3QgY29tbWl0U2V0
TGlzdCA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAgIGNvbnN0IHBs
YXRmb3JtID0gdGhpcy5fdGFzay5wbGF0Zm9ybSgpIHx8IHRlc3RHcm91cC5wbGF0Zm9ybSgpOwot
ICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRo
aXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBuZXdOYW1lLCByZXBldGl0aW9u
Q291bnQsIGNvbW1pdFNldExpc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50
aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3Ip
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBU
ZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZv
cm0sIHRlc3RHcm91cC50ZXN0KCksIG5ld05hbWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlv
bkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25Db21wbGV0aW9u
KTsKKyAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKKyAg
ICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3Jl
YXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9
CiAgICAgfQogCi0gICAgYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBj
b21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3lu
YyBfYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRp
b25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRlc3RHcm91cC50YXNrKCkpOwogICAgICAgICBjb25zdCBleGlz
dGluZ1Rlc3RHcm91cE5hbWVzID0gbmV3IFNldCgodGhpcy5fdGVzdEdyb3VwcyB8fCBbXSkubWFw
KCh0ZXN0R3JvdXApID0+IHRlc3RHcm91cC5uYW1lKCkpKTsKQEAgLTg1NCw4ICs4NzUsOSBAQCBj
bGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAg
ICAgIGNvbnN0IGN1cnJlbnRDb21taXRTZXQgPSBjb21taXRTZXRzW2ldOwogICAgICAgICAgICAg
Y29uc3QgdGVzdEdyb3VwTmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lv
bihDb21taXRTZXQuZGlmZihwcmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldCksIGV4
aXN0aW5nVGVzdEdyb3VwTmFtZXMpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0
R3JvdXBzKHRlc3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
W3ByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9u
KTsKLSAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHModGVzdEdy
b3Vwcyk7CisgICAgICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91
cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXAudGFzaygpLCB0ZXN0R3JvdXBO
YW1lLAorICAgICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBl
LCBbcHJldmlvdXNDb21taXRTZXQsIGN1cnJlbnRDb21taXRTZXRdLCBub3RpZnlPbkNvbXBsZXRp
b24pOworICAgICAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBz
KTsKICAgICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgICAgICAgICAgICBhbGVydCgn
RmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtODYzLDcgKzg4NSw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2Ug
ZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9CiAgICAgfQogCi0gICAgX2NyZWF0
ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKQorICAgIGFzeW5j
IF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QodGVzdEdyb3VwTmFt
ZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlP
bkNvbXBsZXRpb24pCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFzRHVwbGljYXRlVGVzdEdy
b3VwTmFtZSh0ZXN0R3JvdXBOYW1lKSkgewogICAgICAgICAgICAgYWxlcnQoYFRoZXJlIGlzIGFs
cmVhZHkgYSB0ZXN0IGdyb3VwIG5hbWVkICIke3Rlc3RHcm91cE5hbWV9ImApOwpAQCAtODg5LDEz
ICs5MTEsMTUgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGlu
ZyB7CiAgICAgICAgIGZvciAobGV0IGxhYmVsIGluIGNvbW1pdFNldE1hcCkKICAgICAgICAgICAg
IGNvbW1pdFNldHMucHVzaChjb21taXRTZXRNYXBbbGFiZWxdKTsKIAotICAgICAgICByZXR1cm4g
VGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRoaXMuX3Rhc2ssIHRlc3RHcm91
cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKQot
ICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJpbmQodGhpcyksIGZ1
bmN0aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0aGlzLl90
YXNrLCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21t
aXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rp
ZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsK
ICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcg
KyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAgX2NyZWF0ZUN1
c3RvbVRlc3RHcm91cChyZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMs
IHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUN1
c3RvbVRlc3RHcm91cCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25U
eXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgbm90aWZ5T25Db21wbGV0aW9uKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGFzay5pc0N1c3RvbSgpKTsKICAgICAg
ICAgaWYgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwTmFtZSkpIHsK
QEAgLTkwMywxMCArOTI3LDEzIEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdl
V2l0aEhlYWRpbmcgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
VGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRm
b3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5v
dGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdy
b3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3Rv
bUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUs
CisgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0
U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoVGVz
dEdyb3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAg
ICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7
Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgX2hhc0R1cGxpY2F0ZVRlc3RH
cm91cE5hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcwppbmRleCBkMGFmMTczZGFhZDMyYjQ1YjIyZDhiYTk1
M2ExNmVjMTk2MjZhYzNkLi5iNThjZTI2ODZjZDFkZjlkMjliZmU2ZDQwYzljOWNlMGU0NDhiOGJj
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2No
YXJ0LXBhbmUuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdl
cy9jaGFydC1wYW5lLmpzCkBAIC0xMjAsMTEgKzEyMCwxNCBAQCBjbGFzcyBDaGFydFBhbmUgZXh0
ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgY29uc3QgY3JlYXRlV2l0aFRlc3RHcm91cENo
ZWNrYm94ID0gdGhpcy5jb250ZW50KCdjcmVhdGUtd2l0aC10ZXN0LWdyb3VwJyk7CiAgICAgICAg
IGNvbnN0IHJlcGV0aXRpb25Db3VudCA9IHRoaXMuY29udGVudCgnY29uZmlybS1yZXBldGl0aW9u
Jyk7CiAgICAgICAgIGNvbnN0IG5vdGlmeU9uQ29tcGxldGlvbiA9IHRoaXMuY29udGVudCgnbm90
aWZ5LW9uLWNvbXBsZXRpb24nKTsKKyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGUgPSB0aGlz
LmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlwZScpOwogICAgICAgICBjcmVhdGVXaXRoVGVzdEdyb3Vw
Q2hlY2tib3gub25jaGFuZ2UgPSAoKSA9PiB7CisgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxk
IGludm9rZSAiZW5xdWV1ZVRvUmVuZGVyIiBpbnN0ZWFkLgogICAgICAgICAgICAgY29uc3Qgc2hv
dWxkRGlzYWJsZSA9ICFjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3guY2hlY2tlZDsKICAgICAg
ICAgICAgIHJlcGV0aXRpb25Db3VudC5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CiAgICAgICAg
ICAgICBub3RpZnlPbkNvbXBsZXRpb24uZGlzYWJsZWQgPSBzaG91bGREaXNhYmxlOwotICAgICAg
ICB9CisgICAgICAgICAgICByZXBldGl0aW9uVHlwZS5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7
CisgICAgICAgIH07CiAgICAgfQogCiAgICAgc2VyaWFsaXplU3RhdGUoKQpAQCAtMjQzLDEwICsy
NDYsMTEgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAg
IGNvbnN0IGNyZWF0ZVdpdGhUZXN0R3JvdXAgPSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRl
c3QtZ3JvdXAnKS5jaGVja2VkOwogICAgICAgICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlz
LmNvbnRlbnQoJ2NvbmZpcm0tcmVwZXRpdGlvbicpLnZhbHVlOwogICAgICAgICBjb25zdCBub3Rp
ZnlPbkNvbXBsZXRpb24gPSB0aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJykuY2hl
Y2tlZDsKKyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0
aXRpb24tdHlwZScpLnZhbHVlOwogCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBjb25zdCBh
bmFseXNpc1Rhc2sgPSBhd2FpdCAoY3JlYXRlV2l0aFRlc3RHcm91cCA/Ci0gICAgICAgICAgICAg
ICAgQW5hbHlzaXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZp
cm0nLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgOiBBbmFseXNpc1Rhc2su
Y3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7CisgICAgICAgICAgICAgICAgQW5h
bHlzaXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCBy
ZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pIDogQW5h
bHlzaXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCkpOwogICAgICAgICAg
ICAgbmV3V2luZG93LmxvY2F0aW9uLmhyZWYgPSByb3V0ZXIudXJsKCdhbmFseXNpcy90YXNrLycg
KyBhbmFseXNpc1Rhc2suaWQoKSk7CiAgICAgICAgICAgICB0aGlzLmZldGNoQW5hbHlzaXNUYXNr
cyh0cnVlKTsKICAgICAgICAgfSBjYXRjaChlcnJvcikgewpAQCAtNTg5LDcgKzU5MywxNiBAQCBj
bGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxvcHRpb24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxh
YmVsPml0ZXJhdGlvbnM8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJl
bD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJub3RpZnktb24tY29tcGxldGlvbiIgY2hlY2tl
ZD4gTm90aWZ5IG9uIGNvbXBsZXRpb248L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAg
PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bGFiZWw+SW48L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz
ZWxlY3QgaWQ9InJlcGV0aXRpb24tdHlwZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9ImFsdGVybmF0aW5nIiBzZWxlY3RlZD5hbHRlcm5hdGUgKEFCQUIp
PC9vcHRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9
InNlcXVlbnRpYWwiPnNlcXVlbmNlIChBQUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwvc2VsZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFi
ZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24iIGNoZWNr
ZWQ+Tm90aWZ5IG9uIGNvbXBsZXRpb248L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAg
PC9saT4KICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICA8
dWwgY2xhc3M9ImNoYXJ0LXBhbmUtZmlsdGVyaW5nLW9wdGlvbnMgcG9wb3ZlciIgc3R5bGU9ImRp
c3BsYXk6bm9uZSI+CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5k
ZXggMzAxZmQyYTI5MDY1MWQ1MTI4YzM1MjNhZjQ5ODIwZjIwM2JjNjZhMy4uMGE4ZTQzZTQ5NjQ0
NDVlZTM3MDQwNGM3MWM5MTU2YTkyY2JlNTgzMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5
c2lzLXRhc2stcGFnZS5qcwpAQCAtMjIsMTQgKzIyLDE0IEBAIGNsYXNzIENyZWF0ZUFuYWx5c2lz
VGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB0aGlzLnBhcnQoJ2Zv
cm0nKS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fY3JlYXRlQW5hbHlzaXNU
YXNrV2l0aEdyb3VwLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIF9jcmVhdGVBbmFseXNpc1Rh
c2tXaXRoR3JvdXAocmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBw
bGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBf
Y3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdyb3VwKHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNv
bXBsZXRpb24sIHRhc2tOYW1lKQogICAgIHsKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhU
YXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNv
dW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pLnRoZW4oKHRhc2spID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7
dGFzay5pZCgpfWApOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGFzayA9IGF3
YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRl
c3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMs
IG5vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5y
b3V0ZXIoKS51cmwoYGFuYWx5c2lzL3Rhc2svJHt0YXNrLmlkKCl9YCk7Ci0gICAgICAgIH0sIChl
cnJvcikgPT4geworICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQo
J0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAg
fSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZW5kZXIoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1
ZXN0cy10ZXN0cy5qcwppbmRleCBmZDQwNDM0NDIzNzBmNDUzZjFmZDNlZTdiN2FhNWE1MWZmYWMx
YjIxLi45Yzc3NmYwZjA1NTk5ZDhjM2VhNDc1OWUwYWE2ZGUwNjFlZTNlODFmIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0
cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtNTY2LDYgKzU2Niw2MiBAQCBkZXNjcmliZSgn
L2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7
CiAKKyAgICBpdCgnc2hvdWxkIHN0aWxsIHJldHVybiBidWlsZCByZXF1ZXN0cyBhc3NvY2lhdGVk
IHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJsZSB3aGVuIHRlc3QgZ3JvdXAgaGFzIGFsbCBidWlsZCBy
ZXF1ZXN0cyBmaW5pc2hlZCB3aXRoICJtYXlOZWVkTW9yZVJlcXVlc3QiIGZsYWcgdG8gYmUgdHJ1
ZXMnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRl
ZCcsICdmYWlsZWQnXSwgdHJ1ZSwgbnVsbCwgbnVsbCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7Cisg
ICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOworICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydi
dWlsZFJlcXVlc3RzJywgJ2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2Fk
ZWRGaWxlcyddKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0
U2V0cyddLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChj
b250ZW50Wydjb21taXRTZXRzJ11bMF0uaWQpLCA0MDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLCBbCisgICAg
ICAgICAgICB7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGws
IHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sCisgICAgICAgICAgICB7Y29t
bWl0OiAnOTMxMTYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVp
bGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCksIDQwMik7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRl
bXMsIFsKKyAgICAgICAgICAgIHtjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBw
YXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAg
ICAgICAgIHtjb21taXQ6ICc5NjMzNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwg
cmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCksIDg3ODMy
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5yZXBv
c2l0b3J5LCAnOScpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0
cyddWzBdLnJldmlzaW9uLCAnMTAuMTEgMTVBMjg0Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChwYXJzZUludChjb250ZW50Wydjb21taXRzJ11bMV0uaWQpLCA5MzExNik7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmVwb3NpdG9yeSwgJzEx
Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2
aXNpb24sICcxOTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNv
bnRlbnRbJ2NvbW1pdHMnXVsyXS5pZCksIDk2MzM2KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicp
OworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ10u
bGVuZ3RoLCA0KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250
ZW50WydidWlsZFJlcXVlc3RzJ11bMF0uaWQpLCA3MDApOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5vcmRlciksIDAp
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVswXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFy
c2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLmNvbW1pdFNldCksIDQwMSk7CisgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnN0
YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRl
bnRbJ2J1aWxkUmVxdWVzdHMnXVswXS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uaWQpLCA3
MDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1
aWxkUmVxdWVzdHMnXVsxXS5vcmRlciksIDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVx
dWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAg
IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzFdLmNvbW1pdFNldCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS50ZXN0LCAn
MjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMl0uaWQpLCA3MDIpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5vcmRlciksIDIpOwor
ICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsy
XS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJ
bnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAg
IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnN0YXR1
cywgJ2NvbXBsZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVsyXS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBT
dHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQpLCA3MDMp
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXVszXS5vcmRlciksIDMpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNd
LmNvbW1pdFNldCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzNdLnN0YXR1cywgJ2ZhaWxlZCcpOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS50ZXN0LCAnMjAwJyk7
CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9u
IG9wdGlvbicsICgpID0+IHsKICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0
cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0aW9uPXRydWUnKTsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZC1yb290LXRl
c3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2Fk
LXJvb3QtdGVzdHMuanMKaW5kZXggM2FjMGNlOWUzNzg1MWMxZjVkZDJiOGI1MzJjZDM0NjNhMWRh
NjNiMC4uNjc1ZDU5NDg3NGNhMTZkYzdlODk2NjgwNGNmZWY0MTg2NWYyNTJkYyAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3Qt
dGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
dXBsb2FkLXJvb3QtdGVzdHMuanMKQEAgLTY1LDcgKzY1LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVz
dEdyb3VwV2loUGF0Y2goKQogICAgICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNl
dDsKICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIy
Jyk7CiAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCwgJzgwMjI5
Jyk7Ci0gICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNr
JywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0
LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3Jv
dXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5h
dGluZycsIFtzZXQxLCBzZXQyXSk7CiAgICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICBy
ZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVu
KChncm91cCkgPT4gewpAQCAtMTA3LDcgKzEwNyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91
cFdpdGhQYXRjaEFuZE93bmVkQ29tbWl0cygpCiAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHdlYmtpdCwgJzE5MjczNicpOwogICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9y
UmVwb3NpdG9yeShvd25lZFNKQywgJ293bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5MjczNicpOwog
Ci0gICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywg
UGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAn
c29tZSBncm91cCcsIDIsIFtzZXQxLCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAu
Y3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEu
c29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGlu
ZycsIFtzZXQxLCBzZXQyXSk7CiAgICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1
cm4gVGVzdEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChn
cm91cCkgPT4gewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1y
ZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBkY2UwOWNiYWIzNTBhMjJhODMxZDViZjk5MjE3YWU3MDk5
NzI2OTgyLi5mOWM0NDY0NWEyYTc0Mzc0ZGI5YzU1NTk0MDk4Y2EyM2I5MmI3MzVjIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
cwpAQCAtMTIzLDYgKzEyMywxMSBAQCBhc3luYyBmdW5jdGlvbiBhZGRUcmlnZ2VyYWJsZUFuZENy
ZWF0ZVRhc2sobmFtZSwgd2Via2l0UmV2aXNpb25zKQogICAgIGF3YWl0IGNyZWF0ZUFuYWx5c2lz
VGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMpOwogfQogCitmdW5jdGlvbiBhc3NlcnRPcmRlck9m
UmVxdWVzdHMocmVxdWVzdHMsIGV4cGVjdGVkT3JkZXIpCit7CisgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0cy5tYXAocmVxdWVzdCA9PiByZXF1ZXN0Lm9yZGVyKCkpLCBleHBlY3RlZE9yZGVy
KTsKK30KKwogZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBm
dW5jdGlvbigpIHsKICAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzLCAnbm9kZScpOwogICAgIGJl
Zm9yZUVhY2goKCkgPT4gewpAQCAtMTM0LDcgKzEzOSw4IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IHdl
YmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5
Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIzJ319XTsKICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKLSAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
ICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2Nr
RGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAg
ICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIs
IHJldmlzaW9uU2V0cywgY29tbWl0U2V0OiBudWxsfSk7CiAgICAgICAgIGNvbnN0IGluc2VydGVk
R3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKIAogICAgICAgICBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRl
ZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKQEAgLTE0NCwxNSArMTUwLDE3
IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rp
b24oKSB7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOwotICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkp
LCAyKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoK2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogCiAgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWls
ZC1yZXF1ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pOwogCiAg
ICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBk
YXRlZEdyb3Vwcy5sZW5ndGgsIDEpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJ
bnQodXBkYXRlZEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnQoKSksIDQpOwotICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocGFyc2VJbnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCkpLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdy
b3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0ucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1p
dFNldCksIDQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0u
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CiAgICAgICAgIGZvciAoY29uc3Qg
Y29tbWl0U2V0IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7CiAg
ICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0
c0ZvckNvbW1pdFNldChjb21taXRTZXQpOwpAQCAtMTc0LDEwICsxODIsMzA4IEBAIGRlc2NyaWJl
KCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7Ci0gICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCkpLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5y
ZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAg
ICAgYXdhaXQgZ3JvdXAudXBkYXRlSGlkZGVuRmxhZyh0cnVlKTsKIAogICAgICAgICBhd2FpdCBh
c3NlcnRUaHJvd3MoJ0Nhbm5vdEFkZFRvSGlkZGVuVGVzdEdyb3VwJywgYXN5bmMgKCkgPT4gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3Vw
OiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyfSkpCiAgICAgfSk7CisKKyAgICBpdCgnc2hv
dWxkIHJlamVjdCB3aXRoICJDb21taXRTZXROb3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGluZ1JlcGV0
aXRpb25UeXBlIiB3aGVuIGFkZGluZyBidWlsZCByZXF1ZXN0cyBmb3Igb25lIGNvbW1pdCBzZXQg
aW4gYW4gYWx0ZXJuYXRpbmcgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdh
aXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29u
c3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRz
ID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAg
ICAgIG5hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tE
YXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAg
ICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBl
dGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0
IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2Fp
dCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAn
OiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAg
ICBjb25zdCBpZ25vcmVDYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBh
d2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIGlnbm9yZUNhY2hl
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5hdGlu
ZycpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpLmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3Jv
dXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAg
IGNvbnN0IGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOwor
ICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQo
Zmlyc3RDb21taXRTZXQpLCBbMCwgMl0pOworICAgICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQg
PSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZS
ZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMSwg
M10pOworCisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygnQ29tbWl0U2V0Tm90U3VwcG9ydGVk
Rm9yQWx0ZXJuYXRpbmdSZXBldGl0aW9uVHlwZScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLAorICAgICAg
ICAgICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0
OiBzZWNvbmRDb21taXRTZXQuaWQoKX0pCisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQo
J3Nob3VsZCBiZSBhYmxlIHRvIGJ1aWxkIHJlcXVlc3RzIGZvciBmaXJzdCBjb21taXQgc2V0IHdp
dGggb3JkZXIgc2hpZnRlZCBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2sn
KTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29u
c3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0s
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCBy
ZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBw
bGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAor
ICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlv
bjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOwor
ICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisK
KyAgICAgICAgY29uc3QgaWdub3JlQ2FjaGUgPSB0cnVlOworICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25v
cmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CisgICAgICAgIGxldCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
Lmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAu
cmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGxl
dCBmaXJzdENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAg
ICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0
Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNlY29uZENvbW1pdFNldCA9IGdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3Rz
KGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisK
KyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVl
c3RzJywKKyAgICAgICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwg
Y29tbWl0U2V0OiBmaXJzdENvbW1pdFNldC5pZCgpfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRl
ZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwg
aWdub3JlQ2FjaGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5s
ZW5ndGgsIDEpOworICAgICAgICBncm91cCA9IHVwZGF0ZWRHcm91cHNbMF07CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50
aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKCkubGVuZ3RoLCAyKTsKKworICAgICAgICBmaXJzdENvbW1pdFNldCA9IGdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDEsIDIsIDNdKTsKKyAg
ICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOwor
ICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQo
c2Vjb25kQ29tbWl0U2V0KSwgWzQsIDVdKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90
IG1vZGlmeSB0aGUgb3JkZXIgb2YgcHJlY2VkaW5nIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5n
IG5ldyBidWlsZCByZXF1ZXN0cyBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgp
ID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRh
c2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJl
cG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAg
Y29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjIn
fX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25z
dCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1n
cm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2sn
LCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAy
LAorICAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmlj
YXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9
KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCdd
OworCisgICAgICAgIGNvbnN0IGlnbm9yZUNhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgdGVz
dEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwg
aWdub3JlQ2FjaGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICBsZXQgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRp
YWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKS5sZW5ndGgsIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dy
b3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAgICAg
ICBsZXQgZmlyc3RDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07Cisg
ICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChm
aXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAgICAgIGxldCBzZWNvbmRDb21taXRTZXQgPSBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1
ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwgM10p
OworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1y
ZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6
IDIsIGNvbW1pdFNldDogc2Vjb25kQ29tbWl0U2V0LmlkKCl9KTsKKworICAgICAgICBjb25zdCB1
cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJ
ZCddLCBpZ25vcmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3Jv
dXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3Nl
cXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKS5sZW5ndGgsIDIpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMo
Z3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAg
ICAgICBzZWNvbmRDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07Cisg
ICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChz
ZWNvbmRDb21taXRTZXQpLCBbMiwgMywgNCwgNV0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3Vs
ZCBzaGlmdCB0aGUgb3JkZXIgb2YgZm9sbG93aW5nIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5n
IHJldHJ5IGZvciBhIHNwZWNpZmljIGNvbW1pdCBzZXQgaW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3Jv
dXAgd2l0aCAzIGNvbW1pdCBzZXRzJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRU
cmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5u
YW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZp
c2lvbjogJzE5MTYyMyd9fSwKKyAgICAgICAgICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246
ICcxOTI3MzYnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJ
LnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rl
c3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEu
c29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAn
c2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3Vw
SWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgaWdub3JlQ2FjaGUg
PSB0cnVlOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNo
Rm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25vcmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGxldCBncm91cCA9IHRl
c3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNl
cnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisgICAgICAgIGZvciAo
Y29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0
KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGxldCBmaXJzdENvbW1pdFNldCA9IGdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdy
b3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAg
ICAgbGV0IHNlY29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsK
KyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0
KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisgICAgICAgIGxldCB0aGlyZENvbW1pdFNldCA9
IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJl
cXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29tbWl0U2V0KSwgWzQsIDVd
KTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQt
cmVxdWVzdHMnLAorICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50
OiAyLCBjb21taXRTZXQ6IGZpcnN0Q29tbWl0U2V0LmlkKCl9KTsKKworICAgICAgICBjb25zdCB1
cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJ
ZCddLCBpZ25vcmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3Jv
dXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKCt1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9u
VHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisKKyAgICAgICAgZmlyc3RDb21taXRT
ZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVy
T2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFsw
LCAxLCAyLCAzXSk7CisgICAgICAgIHNlY29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFs0LCA1XSk7CisgICAgICAgIHRoaXJk
Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3Nl
cnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRT
ZXQpLCBbNiwgN10pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaGlmdCB0aGUgb3JkZXIg
b2YgYnVpbGQgcmVxdWVzdHMgd2hlbiBhZGRpbmcgcmV0cnkgZm9yIGFsbCBjb21taXQgc2V0cyBp
biBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCB3aXRoIDMgY29tbWl0IHNldHMnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNr
Jyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNv
bnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319
LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319LAorICAgICAgICAgICAge1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MjczNid9fV07CisgICAgICAgIGNvbnN0IHJlc3Vs
dCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywK
KyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRm
b3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAg
ICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAg
ICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAg
ICAgICBjb25zdCBpZ25vcmVDYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIGlnbm9yZUNh
Y2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgbGV0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVu
Z3RoLCAzKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBl
dGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZp
cnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBh
c3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21t
aXRTZXQpLCBbMCwgMV0pOworICAgICAgICBsZXQgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAucmVx
dWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3Jv
dXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKyAgICAg
ICAgbGV0IHRoaXJkQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOwor
ICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQo
dGhpcmRDb21taXRTZXQpLCBbNCwgNV0pOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3JvdXA6IGlu
c2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDJ9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25v
cmVDYWNoZSk7CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwn
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMo
KS5sZW5ndGgsIDMpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVx
dWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMSwgMiwgM10pOworICAgICAg
ICBzZWNvbmRDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAg
ICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNv
bmRDb21taXRTZXQpLCBbNCwgNSwgNiwgN10pOworICAgICAgICB0aGlyZENvbW1pdFNldCA9IGdy
b3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVl
c3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29tbWl0U2V0KSwgWzgsIDksIDEw
LCAxMV0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiTm9Db21taXRT
ZXRJblRlc3RHcm91cCIgaWYgY29tbWl0IHNldCBpcyBub3QgaW4gYSBzZXF1ZW50aWFsIHRlc3Qg
Z3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3Jl
YXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnku
YWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0
JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319
XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1l
OiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0
OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywg
cmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsn
dGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQg
VGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
Lm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAy
KTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAgICAgICBjb25zdCBmaXJzdENv
bW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0
T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0
KSwgWzAsIDFdKTsKKyAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAu
cmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKworICAgICAg
ICBjb25zdCBjb21taXRTZXQgPSBmaXJzdENvbW1pdFNldC5pZCgpICsgc2Vjb25kQ29tbWl0U2V0
LmlkKCkgKyAxOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ05vQ29tbWl0U2V0SW5UZXN0
R3JvdXAnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENv
dW50OiAyLCBjb21taXRTZXR9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hv
dWxkIHJlamVjdCB3aXRoICJJbnZhbGlkQ29tbWl0U2V0IiBpZiBjb21taXQgc2V0IGlkIGlzIG5v
dCBhbiBpbnRlZ2VyIGZvciBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsK
KyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRv
cnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3Qg
cmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtb
d2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0
ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAor
ICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZv
cm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQo
KSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50
OiAyLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAg
ICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAg
ICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywg
eydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOwor
CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygp
LCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRp
dGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAgICAgICBmb3IgKGNvbnN0
IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1p
dFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9ICdpbnZhbGlkJzsKKyAgICAg
ICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkQ29tbWl0U2V0JywgKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0
cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0fSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxp
ZENvbW1pdFNldCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdlciBmb3IgYW4gYWx0
ZXJuYXRpbmcgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0
ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFt
ZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0
ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0
Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRz
Tm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTog
J2FsdGVybmF0aW5nJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3Jv
dXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdy
b3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0ZXN0
R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5h
dGluZycpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpLmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAg
ICAgY29uc3QgY29tbWl0U2V0ID0gJ2ludmFsaWQnOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJv
d3MoJ0ludmFsaWRDb21taXRTZXQnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRl
ZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21taXRTZXR9KQorICAgICAgICB9KTsKKyAgICB9KTsK
IH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lz
LXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDJiMjc1MGFh
N2EyZGQzYmM3OTVhNzY3Mjc2NGJhYWEzZWI4NGQxYjYuLjJhMTcxNzhlNDM0MjMyMmVmY2MwYmZm
ZDI3ZjI5ODIzNWY0MzI2ZGIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtNjgyLDQgKzY4MiwxMTkgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzayB3aXRoIG5vZGUgcHJp
dmlsZWdlZCBhcGknLCBmdW5jdGkKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29t
bWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwg
JzE5MTYyMicpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNv
bW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycp
OwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhbiBhbmFseXNp
cyB0YXNrIHdpdGggYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IDE7Cisg
ICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0OworCisgICAgICAgIGNvbnN0IGRiID0g
VGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywg
e25hbWU6ICdTdWl0ZSd9KTsKKyAgICAgICAgY29uc3QgdGVzdFJvdyA9IGF3YWl0IGRiLnNlbGVj
dEZpcnN0Um93KCd0ZXN0cycsIHtuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RJ
ZCA9IHRlc3RSb3cuaWQ7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywg
e2lkOiB3ZWJraXRJZCwgbmFtZTogJ1dlYktpdCd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0
KCdwbGF0Zm9ybXMnLCB7aWQ6IHBsYXRmb3JtSWQsIG5hbWU6ICdzb21lIHBsYXRmb3JtJ30pOwor
ICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxlcycsIHtpZDogMTIzNCwg
bmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJp
Z2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCB7aWQ6IDIzNDUsIG5hbWU6ICd3ZWJraXQtb25s
eScsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2Vy
dCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHdlYmtpdElkLCBncm91
cDogMjM0NX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3Vy
YXRpb25zJywge3Rlc3Q6IHRlc3RJZCwgcGxhdGZvcm06IHBsYXRmb3JtSWQsIHRyaWdnZXJhYmxl
OiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVw
b3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAg
ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBh
bm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2go
KTsKKworICAgICAgICBjb25zdCB0ZXN0ID0gVGVzdC5maW5kQnlJZCh0ZXN0SWQpOworICAgICAg
ICBjb25zdCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAg
ICAgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29u
ZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3MoKVswXS5pZCgpLCBwbGF0Zm9ybTog
c29tZVBsYXRmb3JtLmlkKCl9KTsKKyAgICAgICAgY29uc3QgdGVzdFJ1bnMgPSBhd2FpdCBkYi5z
ZWxlY3RSb3dzKCd0ZXN0X3J1bnMnLCB7Y29uZmlnOiBjb25maWdSb3dbJ2lkJ119KTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RSdW5zLmxlbmd0aCwgMik7CisKKyAgICAgICAgY29u
c3Qgb25lUmV2aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIyJ319Owor
ICAgICAgICBjb25zdCBhbm90aGVyUmV2aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9u
OiAnMTkxNjIzJ319OworCisgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHtuYW1lOiAnY29uZmlybScs
IHJlcGV0aXRpb25Db3VudDogMiwKKyAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJt
JywgcmV2aXNpb25TZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sCisg
ICAgICAgICAgICBzdGFydFJ1bjogdGVzdFJ1bnNbMF1bJ2lkJ10sIGVuZFJ1bjogdGVzdFJ1bnNb
MV1bJ2lkJ10sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVl
bnRpYWwnfSk7CisKKyAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5mZXRj
aEJ5SWQoY29udGVudFsndGFza0lkJ10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFz
ay5uYW1lKCksICdjb25maXJtJyk7CisgICAgICAgIGFzc2VydCghdGFzay5oYXNSZXN1bHRzKCkp
OworICAgICAgICBhc3NlcnQodGFzay5oYXNQZW5kaW5nUmVxdWVzdHMoKSk7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5idWdzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbCh0YXNrLmNhdXNlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3Ry
aWN0RXF1YWwodGFzay5maXhlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
YXNrLmNoYW5nZVR5cGUoKSwgbnVsbCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNr
LnBsYXRmb3JtKCkubGFiZWwoKSwgJ3NvbWUgcGxhdGZvcm0nKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRhc2subWV0cmljKCkudGVzdCgpLmxhYmVsKCksICdTdWl0ZScpOworCisgICAg
ICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2su
aWQoKSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CisgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubmFtZSgpLCAnQ29uZmlybScpOworICAgICAgICBhc3Nl
cnQub2sodGVzdEdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJykKKyAgICAg
ICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMo
KSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAucmVwZXRpdGlvbkNv
dW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGJ1aWxkUmVx
dWVzdHMgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChidWlsZFJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChidWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2VydChi
dWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzFdLmNvbW1p
dFNldCgpKSk7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVx
dWFscyhidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29uc3QgZmly
c3RDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25z
dCBzZWNvbmRDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOworICAgICAg
ICBjb25zdCB3ZWJraXRSZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZCh3ZWJraXRJZCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBv
c2l0b3J5KHdlYmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdl
YmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0
KCdzaG91bGQgcmVqZWN0IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgd2hlbiByZXBldGl0
aW9uIHR5cGUgaXMgbm90ICJhbHRlcm5hdGluZyIgb3IgInNlcXVlbnRpYWwiJywgYXN5bmMgKCkg
PT4geworICAgICAgICBjb25zdCB3ZWJraXRJZCA9IDE7CisgICAgICAgIGNvbnN0IHBsYXRmb3Jt
SWQgPSAxOworICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZUlkID0gMTIzNDsKKworICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0
KCd0ZXN0cycsIHtuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RSb3cgPSBhd2Fp
dCBkYi5zZWxlY3RGaXJzdFJvdygndGVzdHMnLCB7bmFtZTogJ1N1aXRlJ30pOworICAgICAgICBj
b25zdCB0ZXN0SWQgPSB0ZXN0Um93LmlkOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9z
aXRvcmllcycsIHtpZDogd2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0
IGRiLmluc2VydCgncGxhdGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0
Zm9ybSd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7
aWQ6IDEyMzQsIG5hbWU6ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5p
bnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAn
d2Via2l0LW9ubHknLCB0cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2Fp
dCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJr
aXRJZCwgZ3JvdXA6IDIzNDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJs
ZV9jb25maWd1cmF0aW9ucycsIHt0ZXN0OiB0ZXN0SWQsIHBsYXRmb3JtOiBwbGF0Zm9ybUlkLCB0
cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBhZGRCdWlsZGVyRm9y
UmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblswXSk7CisKKyAgICAgICAgYXdhaXQgVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9u
KTsKKyAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQvJywgYW5vdGhlclJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAgIGF3YWl0IE1hbmlm
ZXN0LmZldGNoKCk7CisKKyAgICAgICAgY29uc3QgdGVzdCA9IFRlc3QuZmluZEJ5SWQodGVzdElk
KTsKKyAgICAgICAgY29uc3Qgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxhdGZv
cm1JZCk7CisgICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93
KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdC5tZXRyaWNzKClbMF0uaWQoKSwg
cGxhdGZvcm06IHNvbWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0g
YXdhaXQgZGIuc2VsZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCdd
fSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisg
ICAgICAgIGNvbnN0IG9uZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5
MTYyMid9fTsKKyAgICAgICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06
IHtyZXZpc2lvbjogJzE5MTYyMyd9fTsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZh
bGlkUmVwZXRpdGlvblR5cGUnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7CisgICAgICAgICAgICAg
ICAgbmFtZTogJ2NvbmZpcm0nLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogMiwK
KyAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCisgICAgICAgICAgICAg
ICAgcmV2aXNpb25TZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sCisg
ICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdpbnZhbGlkLW1vZGUnLAorICAgICAgICAg
ICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwKKyAgICAgICAgICAgICAgICBlbmRS
dW46IHRlc3RSdW5zWzFdWydpZCddLAorICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlCisgICAgICAgICAgICB9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5k
ZXggNjdkODRhZGFmNTk2YTE3MGJkZGZlYWYyMjQyMGYyYzI1MDVlMTNkNi4uNWQyZmVjOGM4Njlm
NzEwM2VlNDBiNTFhZWNlMjY0MTIyNmE1NjBjMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10
ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC03LDYgKzcsOCBAQCBjb25z
dCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNv
bnN0IFRlbXBvcmFyeUZpbGUgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZW1wb3JhcnktZmlsZS5q
cycpLlRlbXBvcmFyeUZpbGU7CiBjb25zdCBhZGRXb3JrZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFdvcmtlckZvclJlcG9ydDsKIGNv
bnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJh
dGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKK2NvbnN0IGFzc2VydFRocm93cyA9IHJlcXVp
cmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYXNzZXJ0VGhyb3dzOworCiAK
IGZ1bmN0aW9uIGNyZWF0ZUFuYWx5c2lzVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMgPSBbIjE5
MTYyMiIsICIxOTE2MjMiXSkKIHsKQEAgLTQwMCw3ICs0MDIsNyBAQCBkZXNjcmliZSgnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNv
bnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBncm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGFzc2Vy
dC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBjb25zdCByZXF1
ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNDQ3LDcgKzQ0OSw3IEBAIGRlc2NyaWJlKCcv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAg
ICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGNvbnN0
IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00ODUsNyArNDg3LDcgQEAgZGVzY3Jp
YmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwog
ICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCks
IDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVl
ZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91
cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMik7CkBAIC01MjQsNyArNTI2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVl
c3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CkBAIC01NTYsNyArNTU4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02
MDMsNyArNjA1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91
cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdy
b3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAg
Y29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02NDUsNyArNjQ3LDcg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91
cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
bkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vaygh
Z3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVz
dHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02OTQsNyArNjk2LDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAg
ICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIp
OworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNO
b3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5i
dWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgNCk7CkBAIC03NDMsNyArNzQ1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBn
cm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFz
c2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCks
IFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTgwOCw3
ICs4MTAsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgp
LCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlm
aWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCks
IFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtODgzLDcgKzg4NSw3IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAg
ICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5z
b21lVGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0
Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBA
IC05NjYsNyArOTY4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1n
cm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNb
MF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9u
Q291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVl
ZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
dGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlk
KE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTEwNjAsNyArMTA2Miw3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAg
ICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7
CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRC
eUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91
cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpKSk7CkBAIC0xMTU3LDcgKzExNTksNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7
CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZv
cm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTIzNSw3ICsxMjM3
LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAg
IGFzc2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29uc3QgcmVx
dWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDIpOwpAQCAtMTI2NCw3ICsxMjY2LDcgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAu
bmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVp
bGRSZXF1ZXN0cygpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAyKTsKQEAgLTEzMDgsNyArMTMxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBUZXN0R3JvdXAuc29y
dEJ5TmFtZSh0ZXN0R3JvdXBzKTsKIAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHNbMF0ubmFtZSgpLCAndGVzdDEnKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwg
MSk7CiAgICAgICAgICAgICBsZXQgcmVxdWVzdHMgPSB0ZXN0R3JvdXBzWzBdLmJ1aWxkUmVxdWVz
dHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIp
OwogICAgICAgICAgICAgbGV0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKQEAgLTEz
MjEsNyArMTMyMyw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3Jv
dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5y
ZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOwogCiAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5uYW1lKCksICd0ZXN0MicpOwotICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0ucmVwZXRpdGlvbkNvdW50KCks
IDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0uaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIHJlcXVlc3RzID0gdGVzdEdyb3Vw
c1sxXS5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVx
dWVzdHMubGVuZ3RoLCA0KTsKICAgICAgICAgICAgIHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRT
ZXQoKTsKQEAgLTEzMzYsNCArMTMzOCwxNTQgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CiAg
ICAgICAgIH0pOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBzZXF1ZW50aWFs
IHRlc3QgZ3JvdXAgd2l0aCBhbiBhbmFseXNpcyB0YXNrJywgYXN5bmMgKCkgPT4geworICAgICAg
ICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAg
ICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4g
cmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lv
blNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQu
aWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2Fp
dCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAg
ICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAg
ICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJldmlzaW9uU2V0cywgcmVwZXRpdGlv
blR5cGU6ICdzZXF1ZW50aWFsJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7CisgICAgICAgIGNvbnN0
IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25z
dCBbYW5hbHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFseXNp
c1Rhc2suZmV0Y2hCeUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChh
bmFseXNpc1Rhc2submFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVw
ZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKQorICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVl
ZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRS
ZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0
KTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzJdLm9yZGVyKCksIDIpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIp
CisgICAgICAgIGFzc2VydChyZXF1ZXN0c1swXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNb
MV0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzJdLmNvbW1pdFNldCgp
LmVxdWFscyhyZXF1ZXN0c1szXS5jb21taXRTZXQoKSkpOworCisgICAgICAgIGNvbnN0IHNldDAg
PSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3Rz
WzJdLmNvbW1pdFNldCgpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDAucmVw
b3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChz
ZXQwLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChz
ZXQxLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAn
MTkxNjIzJyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbiBhbHRlcm5hdGlu
ZyB0ZXN0IGdyb3VwIHdpdGggYW4gYW5hbHlzaXMgdGFzaycsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAg
ICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+
IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNp
b25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAg
ICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1v
Y2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAg
ICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRzLCByZXBldGl0
aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7CisgICAgICAgIGNv
bnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBj
b25zdCBbYW5hbHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFs
eXNpc1Rhc2suZmV0Y2hCeUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hGb3JU
YXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChhbmFseXNpc1Rhc2submFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGlu
c2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFs
UmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVwZXRpdGlvblR5cGUoKSwgJ2FsdGVybmF0aW5nJykKKyAgICAgICAgYXNzZXJ0Lm9rKGdyb3Vw
Lm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1
aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzBdLm9yZGVyKCks
IDApOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMV0ub3JkZXIoKSwgMSk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3Ro
LCAyKQorICAgICAgICBhc3NlcnQocmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVl
c3RzWzJdLmNvbW1pdFNldCgpKSk7CisgICAgICAgIGFzc2VydChyZXF1ZXN0c1sxXS5jb21taXRT
ZXQoKS5lcXVhbHMocmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBz
ZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHNldDEgPSByZXF1
ZXN0c1sxXS5jb21taXRTZXQoKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQw
LnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoc2V0MS5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHNldDEuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgJzE5MTYyMycpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBzZXF1ZW50
aWFsIHRlc3QgZ3JvdXAgaW4gYW4gZXhpc3RpbmcgYW5hbHlzaXMgdGFzaycsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgY29uc3QgdGFza0lkID0gYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVU
YXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3QgaWdub3JlQ2FjaGUgPSB0cnVlOworCisg
ICAgICAgIGxldCBbYW5hbHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxs
KFtBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHRhc2tJZCksIFRlc3RHcm91cC5mZXRjaEZvclRhc2so
dGFza0lkLCBpZ25vcmVDYWNoZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFuYWx5
c2lzVGFzay5uYW1lKCksICdzb21lIHRhc2snKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRlc3RHcm91cHMubGVuZ3RoLCAwKTsKKworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0
b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dl
YktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Myd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNr
OiB0YXNrSWQsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwg
cmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291
bnQ6IDJ9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3Jv
dXBJZCddOworCisgICAgICAgIFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJv
bWlzZS5hbGwoW0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgaWdub3JlQ2FjaGUpXSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChhbmFseXNpc1Rhc2submFtZSgpLCAnc29tZSB0YXNrJyk7
CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpCisgICAg
ICAgIGFzc2VydC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3Qg
cmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZXF1ZXN0c1swXS5vcmRlcigpLCAwKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVl
c3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNb
Ml0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1szXS5v
cmRlcigpLCAzKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpLmxlbmd0aCwgMikKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1p
dFNldCgpLmVxdWFscyhyZXF1ZXN0c1sxXS5jb21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQo
cmVxdWVzdHNbMl0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7
CisKKyAgICAgICAgY29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAg
ICBjb25zdCBzZXQxID0gcmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5k
ZWVwU3RyaWN0RXF1YWwoc2V0MC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91
bGQgcmVqZWN0IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgaWYgdGVzdCBtb2RlIGlzIG5v
dCAiYWx0ZXJuYXRpbmciIG9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
YXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAg
Y29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJl
cG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25T
ZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0Lmlk
KCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworCisgICAgICAgIGF3YWl0IGFzc2VydFRocm93
cygnSW52YWxpZFJlcGV0aXRpb25UeXBlJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0
JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybTogTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAg
ICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2lu
dmFsaWQtbW9kZScsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSkKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoICJJbnZhbGlkUmVwZXRp
dGlvblR5cGUiIHdoaWxlIGNyZWF0aW5nIHRlc3QgZ3JvdXAgZnJvbSBleGlzdGluZyBhbmFseXNp
cyB0YXNrIHdpdGggcmVwZXRpdGlvbiB0eXBlIGlzIG5vdCAiYWx0ZXJuYXRpbmciIG9yICJzZXF1
ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGFza0lkID0gYXdhaXQgYWRk
VHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Vi
a2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnku
bmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tb
d2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2
aXNpb246ICcxOTE2MjMnfX1dOworCisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygnSW52YWxp
ZFJlcGV0aXRpb25UeXBlJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0JywgdGFzazog
dGFza0lkLAorICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNO
b3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywgcmVwZXRp
dGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxl
Z2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMu
anMKaW5kZXggNDUwNmMzYjI3ZjA1ZjIzMmFiNDBjNWU2YWM3NGU3YWQ1ZjQyZDU5OC4uYjZkY2Fl
MmYyMTg2NTJmYzkyOTdkZGNhNTM4NzIwNWYzYmM5YjMwOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1n
cm91cC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xNjgsNyArMTY4
LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0
aW9uKCl7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7CiAgICAg
ICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogCkBAIC0xOTMsNyAr
MTkzLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1
bmN0aW9uKCl7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CiAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSwgZmFsc2UpOwog
ICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApAQCAtMjc2
LDQgKzI3Niw4NiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3Vw
JywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNb
MF0ubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh1cGRhdGVkR3JvdXBzWzBdLmlzSGlkZGVuKCksIHRydWUpOwogICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGNhbmNlbCBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwIGFu
ZCBjbGVhciB0aGUgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcnLCBhc3luYyAoKSA9PiB7
CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7
CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0
b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0
IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgY29uc3QgcmVz
dWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksCisgICAgICAgICAgICB0ZXN0OiBNb2Nr
RGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5
cGU6ICdhbHRlcm5hdGluZycsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRl
ZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5hdGluZycpOwor
CisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdy
b3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9
KTsKKworICAgICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZv
clRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1
cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxl
dCB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGxldCBi
dWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBh
c3NlcnQoYnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7CisgICAgICAgIGFzc2VydChidWls
ZFJlcXVlc3RzWzFdLmlzUGVuZGluZygpKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJ
LnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0ZWRHcm91cElk
LCBjYW5jZWw6IHRydWV9KTsKKworICAgICAgICB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdy
b3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgdGVzdEdyb3Vw
ID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KHRlc3RHcm91
cC5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5fb3Jk
ZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVx
dWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVz
dHNbMF0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
YnVpbGRSZXF1ZXN0c1sxXS5zdGF0dXMoKSwgJ2NhbmNlbGVkJyk7CisgICAgfSk7CisKKyAgICBp
dCgnc2hvdWxkIGJlIGFibGUgdG8gY2FuY2VsIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIGFuZCBj
bGVhciB0aGUgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7Cisg
ICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5
KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJl
dmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgY29uc3QgcmVzdWx0
ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAor
ICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZv
cm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksCisgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0
YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6
ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3Jv
dXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcs
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisK
KyAgICAgICAgbGV0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBk
YXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRl
ZEdyb3Vwc1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgdGVz
dEdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgYnVpbGRS
ZXF1ZXN0cyA9IHRlc3RHcm91cC5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0
KGJ1aWxkUmVxdWVzdHNbMF0uaXNQZW5kaW5nKCkpOworICAgICAgICBhc3NlcnQoYnVpbGRSZXF1
ZXN0c1sxXS5pc1BlbmRpbmcoKSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgY2Fu
Y2VsOiB0cnVlfSk7CisKKyAgICAgICAgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIHRlc3RHcm91cCA9IHVw
ZGF0ZWRHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5
TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydCh0ZXN0R3JvdXAuaGFz
RmluaXNoZWQoKSk7CisgICAgICAgIGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuX29yZGVyZWRC
dWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Rz
Lmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBd
LnN0YXR1cygpLCAnY2FuY2VsZWQnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdHNbMV0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgIH0pOwogfSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5q
cwppbmRleCBlY2ZlYzhkMTZlOTM0ZDU3ZDMyNzE4ODhlYzU2M2IzNDQ2ZWFiNGJhLi5mMjRmNDMz
MWEwYjQxMGM3MGJjZGI4OWIwMDhkYzk2NWQxOWI0MGEzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcwpAQCAtNTMsNyArNTMsNyBAQCBhc3luYyBmdW5jdGlvbiBhc3Nl
cnRUaHJvd3MoZXhwZWN0ZWRFcnJvciwgdGVzdEZ1bmN0aW9uKQogewogICAgIGxldCB0aHJvd25F
eGNlcHRpb24gPSBmYWxzZTsKICAgICB0cnkgewotICAgICAgICAgICAgYXdhaXQgdGVzdEZ1bmN0
aW9uKCkKKyAgICAgICAgYXdhaXQgdGVzdEZ1bmN0aW9uKCk7CiAgICAgfSBjYXRjaChlcnJvcikg
ewogICAgICAgICB0aHJvd25FeGNlcHRpb24gPSB0cnVlOwogICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZXJyb3IsIGV4cGVjdGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4
IDY4MWFmY2M0Y2Y2YWQwZTU5MmVjYjYwMTFhNjFjYjFjZjk0Y2VkMWIuLmVhZWU4MWEzNDBiMTg2
MmIxZmExMmIzNjcyNjdkY2E4NTNjMWMzNjQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAg
LTY0LDEyICs2NCwxNCBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgndGVz
dF9ydW5zJywge2lkOiA4MDEsIGNvbmZpZzogMzAxLCBidWlsZDogOTAxLCBtZWFuX2NhY2hlOiAx
MDB9KSwKICAgICAgICAgXSk7CiAgICAgfSwKLSAgICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRi
LCBzdGF0dXNMaXN0LCBuZWVkc05vdGlmaWNhdGlvbj10cnVlLCB1cmxMaXN0PVtdKQorICAgIGFk
ZE1vY2tEYXRhOiBmdW5jdGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0g
dHJ1ZSwgdXJsTGlzdCA9IG51bGwsIGNvbW1pdFNldExpc3QgPSBudWxsLCByZXBldGl0aW9uVHlw
ZSA9ICdhbHRlcm5hdGluZycsIG1heU5lZWRNb3JlUmVxdWVzdHMgPSBmYWxzZSkKICAgICB7CiAg
ICAgICAgIGlmICghc3RhdHVzTGlzdCkKICAgICAgICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRp
bmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXTsKICAgICAgICAgaWYgKCF1cmxM
aXN0KQogICAgICAgICAgICAgdXJsTGlzdCA9IFtudWxsLCBudWxsLCBudWxsLCBudWxsXTsKKyAg
ICAgICAgaWYgKCFjb21taXRTZXRMaXN0KQorICAgICAgICAgICAgY29tbWl0U2V0TGlzdCA9IFs0
MDEsIDQwMiwgNDAxLCA0MDJdOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAg
ICAgICAgdGhpcy5hZGRNb2NrQ29uZmlndXJhdGlvbihkYiksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ2NvbW1pdF9zZXRzJywge2lkOiA0MDF9KSwKQEAgLTgxLDE0ICs4MywxNSBAQCBNb2NrRGF0
YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7aWQ6IDUwMCwg
cGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzaycsCiAgICAgICAgICAg
ICAgICAgc3RhcnRfcnVuOiA4MDEsIHN0YXJ0X3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToy
Ny4xWicsCiAgICAgICAgICAgICAgICAgZW5kX3J1bjogODAxLCBlbmRfcnVuX3RpbWU6ICcyMDE1
LTEwLTI3VDEyOjA1OjI3LjFaJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190
ZXN0X2dyb3VwcycsIHtpZDogNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAn
LCBpbml0aWFsX3JlcGV0aXRpb25fY291bnQ6IDQsIG5lZWRzX25vdGlmaWNhdGlvbjogbmVlZHNO
b3RpZmljYXRpb259KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7
aWQ6IDcwMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB1cmw6IHVybExpc3RbMF0sIHRyaWdnZXJh
YmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIw
MCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xpc3Rb
MV0sIHVybDogdXJsTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6
IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMSwgY29t
bWl0X3NldDogNDAyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywg
e2lkOiA3MDIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdXJsOiB1cmxMaXN0WzJdLCB0cmlnZ2Vy
YWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAy
MDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAyLCBjb21taXRfc2V0OiA0MDF9KSwKLSAgICAgICAgICAg
IGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMywgc3RhdHVzOiBzdGF0dXNMaXN0
WzNdLCB1cmw6IHVybExpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3Vw
OiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIGNv
bW1pdF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dy
b3VwcycsIHtpZDogNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAnLCBpbml0
aWFsX3JlcGV0aXRpb25fY291bnQ6IDIsCisgICAgICAgICAgICAgICAgbmVlZHNfbm90aWZpY2F0
aW9uOiBuZWVkc05vdGlmaWNhdGlvbiwgcmVwZXRpdGlvbl90eXBlOiByZXBldGl0aW9uVHlwZSwg
bWF5X25lZWRfbW9yZV9yZXF1ZXN0czogbWF5TmVlZE1vcmVSZXF1ZXN0c30pLAorICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xp
c3RbMF0sIHVybDogdXJsTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3Jv
dXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMCwg
Y29tbWl0X3NldDogY29tbWl0U2V0TGlzdFswXX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdi
dWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHVybDogdXJs
TGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRm
b3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMSwgY29tbWl0X3NldDogY29t
bWl0U2V0TGlzdFsxXX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycs
IHtpZDogNzAyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHVybDogdXJsTGlzdFsyXSwgdHJpZ2dl
cmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDog
MjAwLCBncm91cDogNjAwLCBvcmRlcjogMiwgY29tbWl0X3NldDogY29tbWl0U2V0TGlzdFsyXX0p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAzLCBzdGF0
dXM6IHN0YXR1c0xpc3RbM10sIHVybDogdXJsTGlzdFszXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJl
cG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAw
LCBvcmRlcjogMywgY29tbWl0X3NldDogY29tbWl0U2V0TGlzdFszXX0pLAogICAgICAgICBdKTsK
ICAgICB9LAotICAgIGFkZE1vY2tCdWlsZFJlcXVlc3RzV2l0aFJvb3RzKGRiLCBzdGF0dXNMaXN0
LCBuZWVkc05vdGlmaWNhdGlvbj10cnVlLCBhZGRNb2NrQ29uZmlndXJhdGlvbj10cnVlKQorICAg
IGFkZE1vY2tCdWlsZFJlcXVlc3RzV2l0aFJvb3RzKGRiLCBzdGF0dXNMaXN0LCBuZWVkc05vdGlm
aWNhdGlvbiA9IHRydWUsIGFkZE1vY2tDb25maWd1cmF0aW9uID0gdHJ1ZSkKICAgICB7CiAgICAg
ICAgIGNvbnN0IHNldHVwU3RlcHMgPSBhZGRNb2NrQ29uZmlndXJhdGlvbiA/IFt0aGlzLmFkZE1v
Y2tDb25maWd1cmF0aW9uKGRiKV0gOiBbXTsKICAgICAgICAgaWYgKCFzdGF0dXNMaXN0KQpAQCAt
MjAxLDEwICsyMDQsMTAgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnlf
Z3JvdXAgPSAyMDAxOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNjAxLCB0YXNrOiA1MDAsIG5h
bWU6ICdhbm90aGVyIHRlc3QgZ3JvdXAnLCBhdXRob3IsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3Vu
dDogNH0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEz
LCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBw
bGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwMn0pLAog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEwLCBzdGF0dXM6
IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwg
dGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAotICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEyLCBzdGF0dXM6IHN0YXR1c0xp
c3RbMl0sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3Jv
dXA6IDYwMSwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzExLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHRy
aWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwg
b3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF9yZXF1ZXN0cycsIHtpZDogNzEyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxl
LCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDIs
IGNvbW1pdF9zZXQ6IDQwMX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0
cycsIHtpZDogNzEzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlLCByZXBvc2l0
b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMsIGNvbW1pdF9z
ZXQ6IDQwMn0pLAogICAgICAgICBdKTsKICAgICB9LAogICAgIGFkZFRlc3RHcm91cFdpdGhPd25l
ZENvbW1pdHMoZGIsIHN0YXR1c0xpc3QpCkBAIC00ODQsNyArNDg3LDYgQEAgTW9ja0RhdGEgPSB7
CiAgICAgICAgICAgICAgICAgInNjaGVkdWxlciI6IFsiQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJr
LVRlc3RzLUZvcmNlU2NoZWR1bGVyIiwgIlNjaGVkdWxlciJdLAogICAgICAgICAgICAgICAgICJ3
ayI6IFtvcHRpb25zLndlYmtpdFJldmlzaW9uIHx8ICcxOTE2MjInLCAiVW5rbm93biJdLAogICAg
ICAgICAgICAgICAgICJvcyI6IFtvcHRpb25zLm9zeFJldmlzaW9uIHx8ICcxMC4xMSAxNUEyODQn
LCAiVW5rbm93biJdLAotICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29y
a2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciAoZGVwcmVjYXRlZCkiXSwKICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3Jr
ZXIiXQogICAgICAgICAgICAgfQogICAgICAgICB9OwpAQCAtNTE5LDcgKzUyMSw2IEBAIE1vY2tE
YXRhID0gewogICAgICAgICAgICAgICAgICJwcm9qZWN0IjogWycnLCAiVW5rbm93biJdLAogICAg
ICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogWycnLCAiVW5rbm93biJdLAogICAgICAgICAgICAg
ICAgICJyZXZpc2lvbiI6IFsnJywgIlVua25vd24iXSwKLSAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3JrZXIgKGRlcHJlY2F0
ZWQpIl0sCiAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1l
IHx8ICJib3QyMDIiLCAiV29ya2VyIl0KICAgICAgICAgICAgIH0KICAgICAgICAgfTsgICAKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVp
bGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCmluZGV4IGI0ODcw
YmIyYjA4NmM0OWI4MjcxNTQ4NTZlMTVmNmY2NGUwMDdkMmEuLmRjMzU5MjhjY2UxYjdjOWMwZDFl
NzMxYWYxZTY4NWJlNWFiNzZhODEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmln
Z2VyYWJsZS10ZXN0cy5qcwpAQCAtNjg5LDEyICs2ODksMTUgQEAgZGVzY3JpYmUoJ0J1aWxkYm90
VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1szXS5yZXNvbHZlKE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRlcklkOiBN
b2NrRGF0YS5idWlsZGVySURGb3JOYW1lKCdzb21lIGJ1aWxkZXIgMicpLCBidWlsZFJlcXVlc3RJ
ZDogNzAwfSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JS
ZXF1ZXN0KCk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxl
bmd0aCwgNSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgJy9hcGkvdjIvZm9yY2Vz
Y2hlZHVsZXJzL2ZvcmNlLXNvbWUtYnVpbGRlci0yJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLmRhdGEsIHsnaWQnOiAn
NzAxJywgJ2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgogICAg
ICAgICAgICAgICAgICAgICB7J3drJzogJzE5MjczNicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAn
YnVpbGQtcmVxdWVzdC1pZCc6ICc3MDEnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Utc29tZS1i
dWlsZGVyLTInfX0pOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0u
cmVzb2x2ZSgnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA2KTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1s1XS5tZXRob2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCAnL2FwaS92Mi9mb3JjZXNjaGVkdWxlcnMv
Zm9yY2Utc29tZS1idWlsZGVyLTEnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0uZGF0YSwgeydpZCc6ICc3MTEnLCAnanNv
bnJwYyc6ICcyLjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFtcyc6CkBAIC04MzMsNyArODM2
LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGZy
b20gbXVsdGlwbGUgdGVzdCBncm91cHMgcnVubmluZyBzaW11bHRlbm91c2x5JywgKCkgPT4gewor
ICAgICAgICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdyb3VwcyBydW5u
aW5nIHNpbXVsdGFuZW91c2x5JywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0
U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1v
dGVBUEkucmVxdWVzdHM7CiAKQEAgLTEwNjQsNiArMTA2Nyw3IEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5kYXRhLCB7J2lkJzogJzcxMCcs
ICdqc29ucnBjJzogJzIuMCcsICdtZXRob2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKICAgICAgICAg
ICAgICAgICAgICAgeyd3ayc6ICcxOTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxk
LXJlcXVlc3QtaWQnOiAnNzEwJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRl
ci0xJ319KTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29s
dmUoJ09LJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIApAQCAtMTM1Niw3ICsxMzYw
LDM0MCBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICAnYnVpbGQtcmVxdWVzdC1pZCc6ICc5MDAnLCAnZm9yY2VzY2hlZHVsZXIn
OiAnZm9yY2Utc29tZS1idWlsZGVyLTInfX0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgn
c2hvdWxkIG5vdCByZXVzZSB0aGUgcm9vdCB3aGVuIGEgYnVpbGQgcmVxdWVzdCB3aXRoIHNhbWUg
Y29tbWl0IHNldCBpcyBhdmFpYWxibGUgYnV0IHRoZSBidWlsZCByZXF1ZXN0IGhhcyBiZWVuIHNj
aGVkdWxlZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1
aWxkIHJlcXVlc3Qgb24gYSBidWlsZGVyIHdoZW4gaXRzIHJlY2VudCBidWlsZHMgaGFkIG5vdCBi
ZWVuIGZldGNoZWQgeWV0JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBU
ZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2Nr
RGF0YShkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOwor
ICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3Qg
Y29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsK
KyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAg
Y29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3
b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdn
ZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29y
a2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCku
dGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJl
cXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0
YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkp
OworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworICAgICAgICAgICAgYXdhaXQg
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VU
Jyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1swXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOwor
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKyAgICAg
ICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsK
KyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFd
Lm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVp
bGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNv
bHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxk
RGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDY5OCwgYnVpbGRUYWc6IDEyM30pLAor
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBi
dWlsZFJlcXVlc3RJZDogNjk5LCBidWlsZFRhZzogMTI0fSldfSk7CisgICAgICAgICAgICBhd2Fp
dCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdQ
T1NUJyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1syXS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXIt
MScpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0uZGF0YSwgeydpZCc6ICc3MDAnLCAnanNvbnJwYyc6ICcyLjAnLCAnbWV0aG9k
JzogJ2ZvcmNlJywgJ3BhcmFtcyc6CisgICAgICAgICAgICAgICAgICAgIHsnd2snOiAnMTkxNjIy
JywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcwMCcsICdmb3Jj
ZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMSd9fSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoJ09LJyk7CisgICAgICAgICAgICBhc3NlcnQo
IUJ1aWxkUmVxdWVzdC5maW5kQnlJZCg2OTkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo
J3Nob3VsZCBkZWZlciBzY2hlZHVsaW5nIHJlcXVlc3RzIGZyb20gbmV4dCBjb25maWd1cmF0aW9u
IGluIHNlcXVlbnRpYWwgdGVzdCBncm91cCB1bnRpbCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9u
IG1lZXRzIHRoZSBpbml0aWFsIHJlcXVlc3RlZCBpdGVyYXRpb24gY291bnQnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAg
ICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdmYWls
ZWQnLCAncGVuZGluZycsICdwZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRw
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAg
ICAgICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpOwor
ICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3Qg
Y29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7Cisg
ICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNv
bnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29y
ZCd9OworICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2Vy
YWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtl
ckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxl
LmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAg
ICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0s
ICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWls
ZGJvdEJ1aWxkZXJzKCkpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisg
ICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2Qs
ICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7Cisg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VU
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51
cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJykpOworICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmws
IE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoeydidWlsZHMnIDogWworICAg
ICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWls
ZFJlcXVlc3RJZDogNzAwLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0Rh
dGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1
aWxkVGFnOiAxMjR9KV19KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3Nv
bWUgYnVpbGRlciAyJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sz
XS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzRdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21l
LWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVz
b2x2ZSh7fSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1s1XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzVdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZSBidWls
ZGVyIDInKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnJlc29sdmUo
e30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0
aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzZdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0ucmVzb2x2ZSh7
J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEo
e3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAg
ICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRS
ZXF1ZXN0SWQ6IDcwMSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS51cmwsIE1vY2tEYXRhLnJl
Y2VudEJ1aWxkc1VybCgnc29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzddLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBzeW5j
T25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5n
dGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCks
ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygp
LCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOworCisgICAgICAgICAgICBhd2FpdCBCdWls
ZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdX
aXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0
dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIz
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSku
c3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMv
YnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5n
Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG90aGVy
IGJ1aWxkIHJlcXVlc3Qgb24gYSBidWlsZGVyIGlmIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIGlz
IHNjaGVkdWxlZCBvbiBpdCBhbmQgd2FpdGluZyBmb3IgcmV0cnknLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAg
IGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2ZhaWxlZCcsICdjb21wbGV0ZWQnLCAn
cGVuZGluZycsICdwZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Vi
a2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAgICAgICAg
ICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpOworICAgICAg
ICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpOworCisgICAg
ICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgICAgICBjb25zdCBjb25m
aWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAg
ICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25z
dCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQn
fTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFi
bGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJ
bmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5p
bml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAg
ICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAn
R0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRi
b3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAg
ICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dF
VCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0u
dXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwg
TW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxk
UmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwgYnVp
bGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3Nv
bWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5y
ZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMu
bGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWls
ZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29s
dmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGRE
YXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAwLCBidWlsZFRhZzogMTIzfSksCisg
ICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1
aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAgICAgYXdh
aXQgc3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxs
KCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmlu
ZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1
c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5z
dGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEwKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzExKS5zdGF0
dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzEyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKwor
ICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsK
KworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0
YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1
aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdodHRw
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVu
ZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MDMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0YXR1cygpLCAncGVuZGlu
ZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTIp
LnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3QgZnJvbSBhbm90
aGVyIHRlc3QgZ3JvdXAgb24gYSBidWlsZGVyIHdoaWNoIGlzIHVzZWQgYnkgYW4gYWx0ZXJuYXRp
bmcgdGVzdCBncm91cCBuZWVkaW5nIG1vcmUgcmV0cmllcycsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdh
aXQgUHJvbWlzZS5hbGwoW01vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdj
b21wbGV0ZWQnLCAnZmFpbGVkJywgJ2NvbXBsZXRlZCddLCB0cnVlLAorICAgICAgICAgICAgICAg
IFsnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEnLCAnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAgICAgICAg
ICAgICAgICAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMn
LCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLF0sCisg
ICAgICAgICAgICAgICAgWzQwMSwgNDAyLCA0MDEsIDQwMl0sICdhbHRlcm5hdGluZycsIHRydWUp
LAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKSwK
KyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKwor
ICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0
aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9n
Z2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXIn
LCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9
IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwg
TW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHN5
bmNPbmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxl
LnN5bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwo
KSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29t
ZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJl
c29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1
ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5s
ZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWls
ZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29s
dmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGRE
YXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTIzfSksCisg
ICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1
aWxkUmVxdWVzdElkOiA3MDMsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAgICAgYXdh
aXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0
YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1v
Y2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCkKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCBNb2NrRGF0YS5yZWNl
bnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBN
b2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcw
MiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVp
bGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSld
fSk7CisKKyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNV
cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3Rh
dHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMv
YnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcxMCkuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMSkuc3RhdHVzKCksICdwZW5kaW5n
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMiku
c3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisKKyAgICAgICAgICAgIGF3
YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxl
ZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIp
LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAzKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEwKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzExKS5zdGF0dXMoKSwg
J3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzEyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0IGZy
b20gYW5vdGhlciB0ZXN0IGdyb3VwIG9uIGEgYnVpbGRlciB3aGljaCBpcyB1c2VkIGJ5IGEgc2Vx
dWVudGlhbCB0ZXN0IGdyb3VwIG5lZWRpbmcgbW9yZSByZXRyaWVzJywgYXN5bmMgKCkgPT4gewor
ICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAg
ICBhd2FpdCBQcm9taXNlLmFsbChbTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVk
JywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY29tcGxldGVkJ10sIHRydWUsCisgICAgICAgICAg
ICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMScs
ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMicsCisgICAg
ICAgICAgICAgICAgICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRz
LzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcs
XSwKKyAgICAgICAgICAgICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVlbnRpYWwnLCB0
cnVlKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91cChk
YiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7
CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZp
Z1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9j
a0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29y
a2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFi
bGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICBjb25z
dCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2Vy
YWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJz
VVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwo
J3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sw
XS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUt
YnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5y
ZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1
aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30p
LAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAw
LCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgTW9j
a0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2Fp
dCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEu
cmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAg
ICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElk
OiA3MDIsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hl
ZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEy
NH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3Rh
dHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEy
MycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMp
LnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0YXR1cygpLCAncGVu
ZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MTIpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOworCisgICAgICAgICAg
ICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVz
dFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdm
YWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9i
dWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53
ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMCkuc3RhdHVzKCksICdwZW5kaW5nJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMSkuc3RhdHVz
KCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcxMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHJldXNlIHRoZSByb290IHdoZW4gYSBi
dWlsZCByZXF1ZXN0IHdpdGggc2FtZSBjb21taXQgc2V0IGlzIGF2YWlsYWJsZSBidXQgdGhlIGJ1
aWxkIHJlcXVlc3QgaGFzIGJlZW4gc2NoZWR1bGVkJywgYXN5bmMgKCkgPT4gewogICAgICAgICAg
ICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMoVGVzdFNlcnZl
ci5kYXRhYmFzZSgpKTsKICAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CiAgICAg
ICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoUGF0
Y2hBY2NlcHRpbmdCdWlsZGVyKCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRi
b3QtaW50ZWdyYXRpb24tdGVzdHMuanMKaW5kZXggNmZjN2E3YWM1YmMzN2E0MTA0NzJmZTgyYjJj
OWI1NDEwZWE4ZjRkMy4uNmRhZjUzNTRkZDJmNzIwNzQ3Zjk2ZDUzYmM0YTMxY2UwNWQ4ODI2NyAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1z
eW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0
cy5qcwpAQCAtMTczLDcgKzE3Myw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cCh0YXNrX25h
bWU9J2N1c3RvbSB0YXNrJykgewogICAgIHNldDEuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdl
YmtpdCwgJzE5MTYyMicpOwogICAgIGNvbnN0IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0Owog
ICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MjczNicpOwotICAg
IHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0u
ZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91
cCcsIDIsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4geworICAgIHJldHVybiBUZXN0R3Jv
dXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5h
dGluZycsIFtzZXQxLCBzZXQyXSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVz
dEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KTsKIH0KQEAgLTE5Myw3
ICsxOTMsNyBAQCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXBXaXRoUGF0Y2goKQogICAg
IHNldDEuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MTYyMicsIHVwbG9hZGVk
UGF0Y2hGaWxlKTsKICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICBz
ZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTE2MjInKTsKLSAgICBjb25z
dCB0YXNrID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBs
YXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3Nv
bWUgZ3JvdXAnLCAyLCBbc2V0MSwgc2V0Ml0pOworICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBUZXN0
R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRl
cm5hdGluZycsIFtzZXQxLCBzZXQyXSk7CiAKICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxC
eVRhc2sodGFzay5pZCgpKVswXTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBmdW5jdGlvbiBjcmVh
dGVUZXN0R3JvdXBXaWhPd25lZENvbW1pdCgpCiAgICAgY29uc3Qgc2V0MiA9IG5ldyBDdXN0b21D
b21taXRTZXQ7CiAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTky
NzM2Jyk7CiAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRTSkMsICdvd25l
ZC1qc2MtOTE5MScsIG51bGwsICcxOTI3MzYnKTsKLSAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0
ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQ
bGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCBbc2V0MSwgc2V0Ml0pLnRo
ZW4oKHRhc2spID0+IHsKKyAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdjdXN0
b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpLCBz
b21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCAnYWx0ZXJuYXRpbmcnLCBbc2V0MSwgc2V0Ml0pLnRo
ZW4oKHRhc2spID0+IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5maW5kQWxsQnlUYXNrKHRh
c2suaWQoKSlbMF07CiAgICAgfSk7CiB9CkBAIC0xNDA5LDcgKzE0MDksNyBAQCBkZXNjcmliZSgn
c3luYy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydChidWlsZFJl
cXVlc3QuaXNCdWlsZCgpKTsKICAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVz
dCgpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Quc3RhdHVz
TGFiZWwoKSwgJ0NvbXBsZXRlZCcpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1
aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
Iy9idWlsZGVycy8xL2J1aWxkcy8xMjMnKTsKICAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChi
dWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKIAogICAgICAgICAgICAgY29uc3Qgb3RoZXJC
dWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOwpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMKaW5kZXgg
ODgyMmFmYjhjMGVkMjIzODFmNzQyMzc2YWZhMzA2ZGEyOWNjNTgyMC4uNTMxYjhkOTVjYjEwYTll
ZDY3ZDc5MjA5NmJjMDM0N2ViZDBmNzE0MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCkBAIC0xNDMsNiArMTQzLDcgQEAg
Y2xhc3MgQnVpbGRib3RTeW5jZXIgewogCiAgICAgICAgIGxldCBoYXNQZW5kaW5nQnVpbGRzV2l0
aG91dFdvcmtlck5hbWVTcGVjaWZpZWQgPSBmYWxzZTsKICAgICAgICAgbGV0IHVzZWRXb3JrZXJz
ID0gbmV3IFNldDsKKyAgICAgICAgY29uc3QgbGF0ZXN0RW50cnlCeVdvcmtlck5hbWUgPSBuZXcg
TWFwOwogICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB0aGlzLl9lbnRyeUxpc3QpIHsKICAgICAg
ICAgICAgIGxldCBlbnRyeVByZXZlbnRzTmV3UmVxdWVzdCA9IGVudHJ5LmlzUGVuZGluZygpOwog
ICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW5Qcm9ncmVzcygpKSB7CkBAIC0xNTUsNiArMTU2LDI4
IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgICAgICAgICAgICAgaGFzUGVuZGlu
Z0J1aWxkc1dpdGhvdXRXb3JrZXJOYW1lU3BlY2lmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB1c2VkV29ya2Vycy5hZGQoZW50cnkud29ya2VyTmFtZSgpKTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghZW50cnkuaXNQZW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChlbnRyeS53b3JrZXJOYW1lKCksICdOb24tcGVuZGluZyBlbnRyeSBtdXN0IGhh
dmUgYSB3b3JrZXIgbmFtZScpOworICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RGaW5pc2hlZEVu
dHJ5ID0gbGF0ZXN0RW50cnlCeVdvcmtlck5hbWUuZ2V0KGVudHJ5Lndvcmtlck5hbWUoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFsYXN0RmluaXNoZWRFbnRyeSB8fCArbGFzdEZpbmlzaGVkRW50
cnkuYnVpbGRUYWcoKSA8ICtlbnRyeS5idWlsZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBs
YXRlc3RFbnRyeUJ5V29ya2VyTmFtZS5zZXQoZW50cnkud29ya2VyTmFtZSgpLCBlbnRyeSkKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IFtuYW1lLCBlbnRyeV0g
b2YgbGF0ZXN0RW50cnlCeVdvcmtlck5hbWUuZW50cmllcygpKSB7CisgICAgICAgICAgICBjb25z
dCBsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QgPSBCdWlsZFJlcXVlc3QuZmluZEJ5SWQoZW50cnku
YnVpbGRSZXF1ZXN0SWQoKSk7CisgICAgICAgICAgICBpZiAoIWxhdGVzdEFjdGl2ZUJ1aWxkUmVx
dWVzdCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChsYXRlc3RB
Y3RpdmVCdWlsZFJlcXVlc3QudGVzdEdyb3VwSWQoKSA9PSBuZXdSZXF1ZXN0LnRlc3RHcm91cElk
KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3Jv
dXAgPSBsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QudGVzdEdyb3VwKCk7CisgICAgICAgICAgICBp
ZiAoIXRlc3RHcm91cCkgeworICAgICAgICAgICAgICAgIC8vIFVubGlrZWx5IHRvIGhpdCB0aGlz
IGNvbmRpdGlvbiwganVzdCBpbiBjYXNlIHNvbWUgYnVpbGQgcmVxdWVzdHMgYXJlIGNyZWF0ZWQg
d2l0aG91dCB0ZXN0IGdyb3VwIGZldGNoZWQuCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkgJiYg
IXRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB1c2VkV29ya2Vycy5hZGQobmFtZSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXRoaXMuX3dvcmtlckxpc3QgfHwgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRXb3Jr
ZXJOYW1lU3BlY2lmaWVkKSB7CkBAIC0xOTIsNyArMjE1LDcgQEAgY2xhc3MgQnVpbGRib3RTeW5j
ZXIgewogICAgICAgICAgICAgICAgICAgICBpZiAoKCF0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQg
fHwgdGhpcy5fbGFzdENvbXBsZXRlZEJ1aWxkLmJ1aWxkVGFnKCkgPCBlbnRyeS5idWlsZFRhZygp
KSAmJiBlbnRyeS5oYXNGaW5pc2hlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5f
bGFzdENvbXBsZXRlZEJ1aWxkID0gZW50cnk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxldCBlbnRyeUxpc3QgPSBbXTsKICAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpZCBpbiBlbnRyeUJ5UmVxdWVzdCkKICAgICAgICAgICAgICAg
ICAgICAgZW50cnlMaXN0LnB1c2goZW50cnlCeVJlcXVlc3RbaWRdKTsKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5q
cwppbmRleCBkNjJjZGUwMjljMTc3OTE3M2M1ZjIxZWQ4NmFhZjFhMWMwM2RhOGEyLi5lOWZlNGVm
NTdhOWRmYjE5OWEwMDg4YWQxM2YxOGE2NGVmYjEzOWIwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCkBA
IC03LDcgKzcsNyBAQCByZXF1aXJlKCcuL3YzLW1vZGVscy5qcycpOwogbGV0IEJ1aWxkYm90U3lu
Y2VyID0gcmVxdWlyZSgnLi9idWlsZGJvdC1zeW5jZXInKS5CdWlsZGJvdFN5bmNlcjsKIAogY2xh
c3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7Ci0gICAgY29uc3RydWN0b3IoY29uZmlnLCByZW1vdGUs
IGJ1aWxkYm90UmVtb3RlLCB3b3JrZXJJbmZvLCBsb2dnZXIpCisgICAgY29uc3RydWN0b3IoY29u
ZmlnLCByZW1vdGUsIGJ1aWxkYm90UmVtb3RlLCB3b3JrZXJJbmZvLCBtYXhSZXRyeUZhY3Rvciwg
bG9nZ2VyKQogICAgIHsKICAgICAgICAgdGhpcy5fbmFtZSA9IGNvbmZpZy50cmlnZ2VyYWJsZU5h
bWU7CiAgICAgICAgIGFzc2VydCh0eXBlb2YodGhpcy5fbmFtZSkgPT0gJ3N0cmluZycsICd0cmln
Z2VyYWJsZU5hbWUgbXVzdCBiZSBzcGVjaWZpZWQnKTsKQEAgLTI1LDYgKzI1LDcgQEAgY2xhc3Mg
QnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAKICAgICAgICAgdGhpcy5fc3luY2VycyA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX2xvZ2dlciA9IGxvZ2dlciB8fCB7bG9nOiAoKSA9PiB7IH0sIGVycm9yOiAo
KSA9PiB7IH19OworICAgICAgICB0aGlzLl9tYXhSZXRyeUZhY3RvciA9IG1heFJldHJ5RmFjdG9y
OwogICAgIH0KIAogICAgIGdldEJ1aWxkZXJOYW1lVG9JRE1hcCgpCkBAIC04NSwxMyArODYsMjIg
QEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgIGNvbnN0IHZhbGlkUmVxdWVz
dHMgPSB0aGlzLl92YWxpZGF0ZVJlcXVlc3RzKGJ1aWxkUmVxdWVzdHMpOwogICAgICAgICBjb25z
dCBidWlsZFJlcXVlc3RzQnlHcm91cCA9IEJ1aWxkYm90VHJpZ2dlcmFibGUuX3Rlc3RHcm91cE1h
cEZvckJ1aWxkUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAgICAgICAgIGxldCB1cGRhdGVzID0g
YXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVzdHNCeUdyb3Vw
KTsKLSAgICAgICAgbGV0IHJvb3RSZXVzZVVwZGF0ZXMgPSB7fQorICAgICAgICBsZXQgcm9vdFJl
dXNlVXBkYXRlcyA9IHsgfTsKICAgICAgICAgdGhpcy5fbG9nZ2VyLmxvZygnU2NoZWR1bGluZyBi
dWlsZHMnKTsKICAgICAgICAgY29uc3QgdGVzdEdyb3VwTGlzdCA9IEFycmF5LmZyb20oYnVpbGRS
ZXF1ZXN0c0J5R3JvdXAudmFsdWVzKCkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEu
Z3JvdXBPcmRlciAtIGIuZ3JvdXBPcmRlcjsgfSk7CiAKLSAgICAgICAgYXdhaXQgUHJvbWlzZS5h
bGwodGVzdEdyb3VwTGlzdC5tYXAoKGdyb3VwKSA9PiBbZ3JvdXAsIHRoaXMuX25leHRSZXF1ZXN0
SW5Hcm91cChncm91cCwgdXBkYXRlcyldKQotICAgICAgICAgICAgLmZpbHRlcigoW2dyb3VwLCBy
ZXF1ZXN0XSkgPT4gdmFsaWRSZXF1ZXN0cy5oYXMocmVxdWVzdCkpCi0gICAgICAgICAgICAubWFw
KChbZ3JvdXAsIHJlcXVlc3RdKSA9PiB0aGlzLl9zY2hlZHVsZVJlcXVlc3QoZ3JvdXAsIHJlcXVl
c3QsIHJvb3RSZXVzZVVwZGF0ZXMpKSk7CisgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5
LmZyb20oYnVpbGRSZXF1ZXN0c0J5R3JvdXAua2V5cygpKS5tYXAodGVzdEdyb3VwSWQgPT4gVGVz
dEdyb3VwLmZldGNoQnlJZCh0ZXN0R3JvdXBJZCwgdHJ1ZSkpKTsKKyAgICAgICAgZm9yIChjb25z
dCBncm91cCBvZiB0ZXN0R3JvdXBMaXN0KSB7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0g
dGhpcy5fbmV4dFJlcXVlc3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKTsKKyAgICAgICAgICAgIGlm
ICghdmFsaWRSZXF1ZXN0cy5oYXMocmVxdWVzdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGNvbnN0IHNob3VsZERlZmVyID0gdGhpcy5fc2hvdWxkRGVmZXJTZXF1
ZW50aWFsVGVzdFJlcXVlc3RXaXRoTmV3Q29tbWl0U2V0KHJlcXVlc3QpOworICAgICAgICAgICAg
aWYgKHNob3VsZERlZmVyKQorICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coYERlZmVy
IHNjaGVkdWxpbmcgYnVpbGQgcmVxdWVzdCAiJHtyZXF1ZXN0LmlkKCl9IiB1bnRpbCBjb21wbGV0
ZWQgYnVpbGQgcmVxdWVzdHMgZm9yIHByZXZpb3VzIGNvbmZpZ3VyYXRpb24gbWVldCB0aGUgZXhw
ZWN0YXRpb24gb3IgZXhoYXVzdCByZXRyeS5gKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBhd2FpdCB0aGlzLl9zY2hlZHVsZVJlcXVlc3QoZ3JvdXAsIHJlcXVlc3QsIHJvb3RS
ZXVzZVVwZGF0ZXMpOworICAgICAgICB9CiAKICAgICAgICAgLy8gUHVsbCBhbGwgYnVpbGRib3Rz
IGZvciB0aGUgc2Vjb25kIHRpbWUgc2luY2UgdGhlIHByZXZpb3VzIHN0ZXAgbWF5IGhhdmUgc2No
ZWR1bGVkIG1vcmUgYnVpbGRzCiAgICAgICAgIHVwZGF0ZXMgPSBhd2FpdCB0aGlzLl9wdWxsQnVp
bGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXF1ZXN0c0J5R3JvdXApOwpAQCAtMTIzLDExICsxMzMs
MzcgQEAgY2xhc3MgQnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fc2NoZWR1bGVSZXF1ZXN0SWZX
b3JrZXJJc0F2YWlsYWJsZShidWlsZFJlcXVlc3QsIHRlc3RHcm91cC5yZXF1ZXN0cywKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUoYnVpbGRS
ZXF1ZXN0LCB0ZXN0R3JvdXAucmVxdWVzdHMsCiAgICAgICAgICAgICBidWlsZFJlcXVlc3QuaXNC
dWlsZCgpID8gdGVzdEdyb3VwLmJ1aWxkU3luY2VyIDogdGVzdEdyb3VwLnRlc3RTeW5jZXIsCiAg
ICAgICAgICAgICBidWlsZFJlcXVlc3QuaXNCdWlsZCgpID8gdGVzdEdyb3VwLmJ1aWxkV29ya2Vy
TmFtZSA6IHRlc3RHcm91cC50ZXN0V29ya2VyTmFtZSk7CiAgICAgfQogCisgICAgX3Nob3VsZERl
ZmVyU2VxdWVudGlhbFRlc3RSZXF1ZXN0V2l0aE5ld0NvbW1pdFNldChidWlsZFJlcXVlc3QpCisg
ICAgeworICAgICAgICBpZiAoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBidWlsZFJlcXVlc3QudGVz
dEdyb3VwKCk7CisgICAgICAgIGlmICh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSAhPSAnc2Vx
dWVudGlhbCcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRlc3RH
cm91cC5pc0ZpcnN0VGVzdFJlcXVlc3QoYnVpbGRSZXF1ZXN0KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBjb25zdCBwcmVjZWRpbmdCdWlsZFJlcXVlc3QgPSB0ZXN0R3Jv
dXAucHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxkUmVxdWVzdCk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHByZWNlZGluZ0J1aWxkUmVxdWVzdCAmJiAhcHJlY2VkaW5nQnVpbGRSZXF1ZXN0Lmlz
QnVpbGQoKSk7CisKKyAgICAgICAgY29uc3QgcHJldmlvdXNDb21taXRTZXQgPSBwcmVjZWRpbmdC
dWlsZFJlcXVlc3QuY29tbWl0U2V0KCkKKyAgICAgICAgaWYgKHByZXZpb3VzQ29tbWl0U2V0ID09
PSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgcmV0cnlMaW1pdCA9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCkgKiB0aGlzLl9tYXhSZXRyeUZhY3RvcjsKKyAgICAgICAgaWYgKHRlc3RHcm91cC5yZXBl
dGl0aW9uQ291bnRGb3JDb21taXRTZXQocHJldmlvdXNDb21taXRTZXQpID4gcmV0cnlMaW1pdCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdGVzdEdyb3VwLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKSA+IHRlc3RHcm91cC5zdWNjZXNzZnVsVGVzdENvdW50KHBy
ZXZpb3VzQ29tbWl0U2V0KTsKKyAgICB9CisKICAgICBfdmFsaWRhdGVSZXF1ZXN0cyhidWlsZFJl
cXVlc3RzKQogICAgIHsKICAgICAgICAgY29uc3QgdGVzdFBsYXRmb3JtUGFpcnMgPSB7fTsKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9tZWFzdXJlbWVudC1z
ZXQtYW5hbHl6ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvbWVhc3Vy
ZW1lbnQtc2V0LWFuYWx5emVyLmpzCmluZGV4IGFiODZhMWQ0ZTMzNzk0YmU3OGNmYmJlMGY3NjU5
OWVhODU3YmViYWYuLmNjNjUwY2E5NDVkYmFlZGY5Yjk1ZDRmZTBkOWNhMTU4NzkyODJhZTIgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9tZWFzdXJlbWVudC1z
ZXQtYW5hbHl6ZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL21l
YXN1cmVtZW50LXNldC1hbmFseXplci5qcwpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIE1lYXN1
cmVtZW50U2V0QW5hbHl6ZXIgewogICAgICAgICBjb25zdCBzdGFydENvbW1pdFNldCA9IHJhbmdl
V2l0aE1vc3RTaWduaWZpY2FudENoYW5nZS5zdGFydFBvaW50LmNvbW1pdFNldCgpOwogICAgICAg
ICBjb25zdCBlbmRDb21taXRTZXQgPSByYW5nZVdpdGhNb3N0U2lnbmlmaWNhbnRDaGFuZ2UuZW5k
UG9pbnQuY29tbWl0U2V0KCk7CiAgICAgICAgIGNvbnN0IHN1bW1hcnkgPSBgUG90ZW50aWFsICR7
cmFuZ2VXaXRoTW9zdFNpZ25pZmljYW50Q2hhbmdlLnZhbHVlQ2hhbmdlU3VtbWFyeS5jaGFuZ2VM
YWJlbH0gb24gJHtwbGF0Zm9ybS5uYW1lKCl9IGJldHdlZW4gJHtDb21taXRTZXQuZGlmZihzdGFy
dENvbW1pdFNldCwgZW5kQ29tbWl0U2V0KX1gOwotICAgICAgICBjb25zdCBjb25maXJtaW5nVGFz
a0FyZ3VtZW50cyA9IFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKG1ldHJpYy50
ZXN0KCksIHBsYXRmb3JtKSA/IFsnQ29uZmlybScsIDQsIHRydWVdIDogW107CisgICAgICAgIGNv
bnN0IGNvbmZpcm1pbmdUYXNrQXJndW1lbnRzID0gVHJpZ2dlcmFibGUuZmluZEJ5VGVzdENvbmZp
Z3VyYXRpb24obWV0cmljLnRlc3QoKSwgcGxhdGZvcm0pID8gWydDb25maXJtJywgNCwgJ2FsdGVy
bmF0aW5nJywgdHJ1ZV0gOiBbXTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIGl0ZXJhdGlvbiBj
b3VudCBzaG91bGQgYmUgc21hcnRlciB0aGFuIGhhcmQtY29kaW5nLgogICAgICAgICBjb25zdCBh
bmFseXNpc1Rhc2sgPSBhd2FpdCBBbmFseXNpc1Rhc2suY3JlYXRlKHN1bW1hcnksIHJhbmdlV2l0
aE1vc3RTaWduaWZpY2FudENoYW5nZS5zdGFydFBvaW50LApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVx
dWVzdHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNWJhMjI0NWNiMDJhZTRl
OTMzMTI2Yjc4OTZhNmIyOGEzMjFlNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZh
aWxlZC1idWlsZC1yZXF1ZXN0cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWFz
eW5jIGZ1bmN0aW9uIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dp
dGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCBtYXhpbXVtUmV0cnlGYWN0b3IpCi17Ci0gICAg
Zm9yIChjb25zdCB0ZXN0R3JvdXAgb2YgdGVzdEdyb3VwcykgewotICAgICAgICBpZiAoIXRlc3RH
cm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBpZiAodGVzdEdyb3VwLmlzSGlkZGVuKCkpIHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RH
cm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
ID0gMDsKLSAgICAgICAgbGV0IGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRT
ZXQgPSB0cnVlOwotICAgICAgICBsZXQgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNl
OwotICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29t
bWl0U2V0cygpKSB7Ci0gICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+
IGJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEJ1
aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4g
YnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAoIWNv
bXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50KQotICAgICAgICAgICAgICAgIGhhc0NvbXBsZXRlZEJ1
aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSBmYWxzZTsKLQotICAgICAgICAgICAgaGFzQ29t
cGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCAmPSAoY29tcGxldGVkQnVpbGRSZXF1
ZXN0Q291bnQgPiAwKTsKLSAgICAgICAgICAgIGNvbnN0IHVuZmluaXNoZWRCdWlsZFJlcXVlc3RD
b3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+ICFidWlsZFJlcXVl
c3QuaGFzRmluaXNoZWQoKSkubGVuZ3RoOwotICAgICAgICAgICAgLy8gInBvdGVudGlhbGx5U3Vj
Y2Vzc2Z1bENvdW50IiBtaWdodCBiZSBsYXJnZXIgdGhhbiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpIGFzIHVzZXIgbWF5IGFkZCBidWlsZCByZXF1ZXN0cyBtYW51YWxseS4KLSAg
ICAgICAgICAgIGNvbnN0IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gY29tcGxldGVkQnVp
bGRSZXF1ZXN0Q291bnQgKyB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7Ci0gICAgICAgICAg
ICBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQsIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRp
YWxseVN1Y2Nlc3NmdWxDb3VudCk7Ci0KLSAgICAgICAgICAgIGlmICh1bmZpbmlzaGVkQnVpbGRS
ZXF1ZXN0Q291bnQpCi0gICAgICAgICAgICAgICAgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgd2lsbEV4Y2VlZE1heGltdW1SZXRyeSA9
IHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnQoKSArIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3Vu
dCA+IG1heGltdW1SZXRyeUZhY3RvciAqIHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
IDw9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwotICAgICAgICBpZiAobWF4
TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhh
c1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVh
Y2hDb21taXRTZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAobWF4TWlz
c2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc0Nv
bXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpIHsKLSAgICAgICAgICAgIGF3YWl0
IHRlc3RHcm91cC5hZGRNb3JlQnVpbGRSZXF1ZXN0cyhtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291
bnQpOwotICAgICAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZl
dGNoVGFzaygpOwotICAgICAgICAgICAgY29uc29sZS5sb2coYEFkZGVkICR7bWF4TWlzc2luZ0J1
aWxkUmVxdWVzdENvdW50fSBidWlsZCByZXF1ZXN0KHMpIHRvICIke3Rlc3RHcm91cC5uYW1lKCl9
IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lzVGFzay5pZCgpfSAtICIke2FuYWx5c2lzVGFz
ay5uYW1lKCl9ImApOwotICAgICAgICB9Ci0gICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1h
eU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOwotICAgIH0KLX0KLQotaWYgKHR5cGVvZiBtb2R1bGUg
IT09ICd1bmRlZmluZWQnKQotICAgIG1vZHVsZS5leHBvcnRzLmNyZWF0ZUFkZGl0aW9uYWxCdWls
ZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9IGNyZWF0ZUFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dG9vbHMvcnVuLWFuYWx5c2lzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1
bi1hbmFseXNpcy5qcwppbmRleCBkNjBmODFlMTJiZDg3N2I3ZTUwNmMwZWQwMzY1YmRjZjcwNTU4
ODhmLi5jYTVkMGY0NDA0NzBkNzk3NmI1MzUxOTY3MjYxNjlmNGYwMzZjMTIzIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMuanMKQEAgLTYsNyArNiw2
IEBAIGNvbnN0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3RlLmpzJykuUmVtb3RlQVBJ
OwogY29uc3QgTWVhc3VyZW1lbnRTZXRBbmFseXplciA9IHJlcXVpcmUoJy4vanMvbWVhc3VyZW1l
bnQtc2V0LWFuYWx5emVyLmpzJykuTWVhc3VyZW1lbnRTZXRBbmFseXplcjsKIGNvbnN0IEFuYWx5
c2lzUmVzdWx0c05vdGlmaWVyID0gcmVxdWlyZSgnLi9qcy9hbmFseXNpcy1yZXN1bHRzLW5vdGlm
aWVyLmpzJykuQW5hbHlzaXNSZXN1bHRzTm90aWZpZXI7CiBjb25zdCBTdWJwcm9jZXNzID0gcmVx
dWlyZSgnLi9qcy9zdWJwcm9jZXNzLmpzJykuU3VicHJvY2VzczsKLWNvbnN0IGNyZWF0ZUFkZGl0
aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9IHJlcXVp
cmUoJy4vanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJykuY3JlYXRlQWRkaXRpb25hbEJ1
aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzOwogcmVxdWlyZSgnLi9q
cy92My1tb2RlbHMuanMnKTsKIGdsb2JhbC5Qcml2aWxlZ2VkQVBJID0gcmVxdWlyZSgnLi9qcy9w
cml2aWxlZ2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEk7CiAKQEAgLTQ5LDEyICs0OCwyNiBAQCBh
c3luYyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0aW9ucykKICAgICAgICAgY29uc29sZS5lcnJv
cihgRmFpbGVkIHRvIGFuYWx5emUgbWVhc3VyZW1lbnQgc2V0cyBkdWUgdG8gJHtlcnJvcn1gKTsK
ICAgICB9CiAKKyAgICBjb25zdCBtYXhSZXRyeUZhY3RvciA9IG9wdGlvbnNbJy0tbWF4LXJldHJ5
LWZhY3RvciddOworICAgIGNvbnN0IHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3RzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoQWxsVGhhdE1heU5lZWRNb3JlUmVxdWVzdHMoKTsKICAgICB0cnkg
ewotICAgICAgICBjb25zdCBub3RpZmljYXRpb25Db25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRG
aWxlU3luYyhvcHRpb25zWyctLW5vdGlmaWNhdGlvbi1jb25maWctanNvbiddLCAndXRmLTgnKSk7
Ci0gICAgICAgIGNvbnN0IG1heGltdW1SZXRyeUZhY3RvciA9IG9wdGlvbnNbJy0tbWF4LXJldHJ5
LWZhY3RvciddOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzTWF5TmVlZE1vcmVSZXF1ZXN0cyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEFsbFRoYXRNYXlOZWVkTW9yZVJlcXVlc3RzKCk7Ci0gICAg
ICAgIGF3YWl0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhG
YWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzTWF5TmVlZE1vcmVSZXF1ZXN0cywgbWF4aW11bVJldHJ5
RmFjdG9yKTsKKyAgICAgICAgZm9yIChjb25zdCB0ZXN0R3JvdXAgb2YgdGVzdEdyb3Vwc01heU5l
ZWRNb3JlUmVxdWVzdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IHJldHJ5Q291bnQgPSBhd2FpdCB0
ZXN0R3JvdXAucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKG1heFJldHJ5RmFjdG9yKTsK
KyAgICAgICAgICAgIGlmICghcmV0cnlDb3VudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IHRlc3RHcm91cC5mZXRjaFRh
c2soKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBZGRlZCAke3JldHJ5Q291bnR9IGJ1aWxk
IHJlcXVlc3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0iIG9mIGFuYWx5c2lzIHRhc2s6ICR7
YW5hbHlzaXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNrLm5hbWUoKX0iYCk7CisgICAgICAg
IH0KKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsK
KyAgICAgICAgaWYgKHR5cGVvZihlcnJvci5zdGFjaykgPT0gJ3N0cmluZycpIHsKKyAgICAgICAg
ICAgIGZvciAobGV0IGxpbmUgb2YgZXJyb3Iuc3RhY2suc3BsaXQoJ1xuJykpCisgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihsaW5lKTsKKyAgICAgICAgfQorICAgIH0KIAorICAgIHRyeSB7
CisgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbkNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZp
bGVTeW5jKG9wdGlvbnNbJy0tbm90aWZpY2F0aW9uLWNvbmZpZy1qc29uJ10sICd1dGYtOCcpKTsK
ICAgICAgICAgY29uc3QgdGVzdEdyb3Vwc05lZWROb3RpZmljYXRpb24gPSBhd2FpdCBUZXN0R3Jv
dXAuZmV0Y2hBbGxXaXRoTm90aWZpY2F0aW9uUmVhZHkoKTsKICAgICAgICAgY29uc3Qgbm90aWZp
Y2F0aW9uUmVtb3RlQVBJID0gbmV3IFJlbW90ZUFQSShub3RpZmljYXRpb25Db25maWcubm90aWZp
Y2F0aW9uU2VydmVyQ29uZmlnKTsKICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uTWVzc2FnZUNv
bmZpZyA9IG5vdGlmaWNhdGlvbkNvbmZpZy5ub3RpZmljYXRpb25NZXNzYWdlQ29uZmlnOwpAQCAt
NjMsNyArNzYsNyBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0aW9ucykKIAogICAg
ICAgICBhd2FpdCBub3RpZmllci5zZW5kTm90aWZpY2F0aW9uc0ZvclRlc3RHcm91cHModGVzdEdy
b3Vwc05lZWROb3RpZmljYXRpb24pOwogICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGNv
bnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZXRyeSB0ZXN0IGdyb3VwcyBkdWUgdG8gJHtlcnJvcn1g
KTsKKyAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHNlbmQgbm90aWZpY2F0aW9uIGZv
ciB0ZXN0IGdyb3VwcyBkdWUgdG8gJHtlcnJvcn1gKTsKICAgICB9CiAKICAgICBjb25zb2xlLmxv
ZyhgU2xlZXBpbmcgZm9yICR7c2Vjb25kc1RvU2xlZXB9IHNlY29uZHMuYCk7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWlsZGJvdC5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzCmluZGV4IDZmMzUwZWIy
NDgyY2Y2ZDE0OGNhODQxNDBhMmNkMDRkOGUzMDZlNDIuLjcwYTJhNGUzZDQyMzUwYmQyZmExYjM0
MzI4NzRkZjY4NTVlYzUzZDYgMTAwNzU1Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9zeW5jLWJ1aWxkYm90LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9zeW5jLWJ1aWxkYm90LmpzCkBAIC0xMiw2ICsxMiw3IEBAIGZ1bmN0aW9uIG1haW4oYXJndikK
ICAgICAgICAge25hbWU6ICctLXNlcnZlci1jb25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwK
ICAgICAgICAge25hbWU6ICctLWJ1aWxkYm90LWNvbmZpZy1qc29uJywgcmVxdWlyZWQ6IHRydWV9
LAogICAgICAgICB7bmFtZTogJy0tc2Vjb25kcy10by1zbGVlcCcsIHR5cGU6IHBhcnNlRmxvYXQs
IGRlZmF1bHQ6IDEyMH0sCisgICAgICAgIHtuYW1lOiAnLS1tYXgtcmV0cnktZmFjdG9yJywgdHlw
ZTogcGFyc2VGbG9hdCwgZGVmYXVsdDogM30sCiAgICAgXSk7CiAgICAgaWYgKCFvcHRpb25zKQog
ICAgICAgICByZXR1cm47CkBAIC0yNCw2ICsyNSw3IEBAIGZ1bmN0aW9uIHN5bmNMb29wKG9wdGlv
bnMpCiAgICAgbGV0IHNlcnZlckNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9w
dGlvbnNbJy0tc2VydmVyLWNvbmZpZy1qc29uJ10sICd1dGY4JykpOwogICAgIGxldCBidWlsZGJv
dENvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNbJy0tYnVpbGRib3Qt
Y29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7CiAgICAgbGV0IGJ1aWxkYm90UmVtb3RlID0gbmV3IFJl
bW90ZUFQSShidWlsZGJvdENvbmZpZy5zZXJ2ZXIpOworICAgIGNvbnN0IG1heFJldHJ5RmFjdG9y
ID0gb3B0aW9uc1snLS1tYXgtcmV0cnktZmFjdG9yJ107CiAKICAgICAvLyB2MyBtb2RlbHMgdXNl
IHRoZSBnbG9iYWwgUmVtb3RlQVBJIHRvIGFjY2VzcyB0aGUgcGVyZiBkYXNoYm9hcmQuCiAgICAg
Z2xvYmFsLlJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkoc2VydmVyQ29uZmlnLnNlcnZlcik7CkBA
IC0zMSw3ICszMyw3IEBAIGZ1bmN0aW9uIHN5bmNMb29wKG9wdGlvbnMpCiAgICAgY29uc29sZS5s
b2coYEZldGNoaW5nIHRoZSBtYW5pZmVzdC4uLmApOwogCiAgICAgY29uc3QgbWFrZVRyaWdnZXJh
YmxlID0gZnVuY3Rpb24gKCkgewotICAgICAgICByZXR1cm4gbmV3IEJ1aWxkYm90VHJpZ2dlcmFi
bGUoYnVpbGRib3RDb25maWcsIGdsb2JhbC5SZW1vdGVBUEksIGJ1aWxkYm90UmVtb3RlLCBzZXJ2
ZXJDb25maWcud29ya2VyLCBjb25zb2xlKQorICAgICAgICByZXR1cm4gbmV3IEJ1aWxkYm90VHJp
Z2dlcmFibGUoYnVpbGRib3RDb25maWcsIGdsb2JhbC5SZW1vdGVBUEksIGJ1aWxkYm90UmVtb3Rl
LCBzZXJ2ZXJDb25maWcud29ya2VyLCBtYXhSZXRyeUZhY3RvciwgY29uc29sZSkKICAgICB9Owog
CiAgICAgTWFuaWZlc3QuZmV0Y2goKS50aGVuKCgpID0+IHsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCmlu
ZGV4IDhkMjhhYzRmYWZjNDhlYWExNzgyYzVkZjFlYWI3NzcwOTJkODdmMTQuLjJlNjcwYjA3OTUx
MTRlYjY3NTUyNWMyZGY3YmVhMTM4ZDMzOGU3YzAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAt
MzA3LDcgKzMwNyw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAg
ICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayB3aXRoIGNvbmZpcm1pbmcgcmVwZXRp
dGlvbiBjb3VudCBzcGVjaWZpZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBb
c3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAg
ICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQs
ICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdj
b25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVybmF0aW5n
JywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1h
cGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2
ZSh7CkBAIC0zMTgsNyArMzE4LDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsK
ICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRh
LCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7
bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0
cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICBzdGFy
dFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRva2VuOiAnYWJj
JywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246
ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0x
Jywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTMyOSw3ICszMjksNyBA
QCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91bGQg
Y3JlYXRlIGFuYWx5c2lzIHRhc2sgYW5kIHRlc3QgZ3JvdXBzIHdpdGggIm5lZWRzTm90aWZpY2F0
aW9uIiBzZXQgdG8gZmFsc2UgaWYgc3BlY2lmaWVkIGluIGNyZWF0aW9uJywgYXN5bmMgKCkgPT4g
ewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IG1vY2tTdGFydEFu
ZEVuZFBvaW50cygpOwotICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScs
IHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsIGZhbHNlKTsKKyAgICAgICAgICAg
IEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0Nv
bmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCBmYWxzZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC0zNDAsNyArMzQwLDcgQEAgZGVzY3JpYmUo
J0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291
bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50
OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRp
bmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5h
bWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAg
ICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZp
c2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzog
e3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDog
bnVsbH19LApAQCAtMzUxLDcgKzM1MSw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9
PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBzeW5jIHRoZSBuZXcgYW5hbHlzaXMgdGFzayBzdGF0
dXMgb25jZSBpdCBpcyBjcmVhdGVkJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY29uc3Qg
W3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IG1vY2tTdGFydEFuZEVuZFBvaW50cygpOwotICAgICAg
ICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmly
bScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsIHRydWUpOworICAgICAgICAg
ICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlzaXNUYXNrLmNyZWF0ZSgnY29uZmlybScs
IHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQsICdhbHRlcm5hdGluZycsIHRydWUp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2dlbmVy
YXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoewpAQCAt
MzYyLDcgKzM2Miw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAg
ICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFs
eXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAy
KTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6
ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdj
b25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVw
ZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEs
IGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLCB0b2tlbjogJ2FiYycsIHJldmlz
aW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0
LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScsIG93bmVy
UmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBAIC00MTIsNyArNDEyLDcgQEAgZGVzY3Jp
YmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKIAogICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBh
biByZWplY3RlZCBwcm9taXNlIHdoZW4gYW5hbHlzaXMgdGFzayBjcmVhdGlvbiBmYWlsZWQnLCBh
c3luYyAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0g
bW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBjb25zdCBjcmVhdGluZ1Byb21p
c2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQs
ICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBjcmVhdGluZ1Byb21pc2Ug
PSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdD
b25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC00MjMsNyArNDIzLDcgQEAgZGVzY3JpYmUo
J0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291
bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6
IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5n
JywKICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1l
OiAnQ29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAg
ICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHty
ZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51
bGx9fSwKQEAgLTQ1NywxMSArNDU3LDExIEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rhc2snLCAoKSA9
PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayB3aXRoIGNvbmZp
cm1pbmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCAoKSA9PiB7CiAgICAgICAgICAgICBj
b25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0g
ICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5k
UG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3Jl
YXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVy
bmF0aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJs
LCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50
OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBzdGFydFJ1bjog
MSwgZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2VyJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNz
d29yZCcsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgd29ya2VyTmFt
ZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCByZXBldGl0aW9uVHlwZTog
J2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScs
IHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiAn
d2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdpb3MtcmV2aXNpb24tMScs
IG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMu
anMKaW5kZXggODc5ODZkMzZmNTZmYzUzZjg5ZGFjMGVjZTUwOWExNDk3YWIzNzFjZS4uMDM0MmFj
MDFhNGFmNWRiY2MxNTY5NjIyYTJkYjFkNjVhN2MyNjI3MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0
cy5qcwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVz
dChwbGF0Zm9ybSwgdGVzdCkKIAogICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZW5zdXJlU2luZ2xl
dG9uKCcxNjczMy0nICsgcGxhdGZvcm0uaWQoKSwgeyd0cmlnZ2VyYWJsZSc6IE1vY2tNb2RlbHMu
dHJpZ2dlcmFibGUsCiAgICAgICAgIHJlcG9zaXRvcnlHcm91cDogTW9ja01vZGVscy5zdm5SZXBv
c2l0b3J5R3JvdXAsCi0gICAgICAgICdjb21taXRTZXQnOiBjb21taXRTZXQsICdzdGF0dXMnOiAn
cGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAndGVzdCc6IHRlc3R9KTsKKyAgICAgICAg
J2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywgJ3BsYXRmb3JtJzog
cGxhdGZvcm0sICd0ZXN0JzogdGVzdCwgb3JkZXI6IDB9KTsKIH0KIAogZnVuY3Rpb24gY3JlYXRl
U2FtcGxlQnVpbGRSZXF1ZXN0V2l0aFBhdGNoKHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNl
dC1hbmFseXplci10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcwppbmRleCAwN2ZjYjNkYjNkZTZiMTJl
NmI5NDdjYzYzMGNkMDdiYjZhMDRmYmJhLi4wOTA3YTBiMDE2YTA1MTQ4MzQ3ZGNiM2Y0NzdlMmE5
MjU5OGFhZmJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0
cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzCkBA
IC0yMzUsNiArMjM1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9
PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAgICAg
IHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNh
dGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5n
JywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAzNSwg
b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAg
eycxMSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1d
CiAgICAgICAgICAgICB9KTsKQEAgLTI5NCw2ICsyOTUsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1l
bnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6
IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAg
ICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRp
b25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3sn
MTEnOiB7cmV2aXNpb246IDM1LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAog
ICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA0NCwgb3duZXJSZXZpc2lvbjog
bnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0pOwpAQCAtNTI2LDYgKzUyOCw3IEBA
IGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywgKCkgPT4gewogICAgICAgICAgICAg
ICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAn
Q29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisgICAg
ICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAgICAgICAg
ICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjogNDAsIG93bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246
IDQ5LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7
CkBAIC02MTgsNiArNjIxLDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAo
KSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiA0LAogICAgICAgICAgICAg
ICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAgICAgICAgICBuZWVkc05vdGlm
aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7JzExJzoge3JldmlzaW9uOiAz
LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAgICAgICAgICAg
ICB7JzExJzoge3JldmlzaW9uOiA4LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19
XQogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMt
dGVzdHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MmQ4MGRjYTVlZjhmMDgz
NTg5YzY1NDFiYTI0NTZhZmQxMjg2MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjUyICsw
LDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7
Ci1yZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKLWNvbnN0IE1vY2tNb2RlbHMg
PSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcycpLk1vY2tNb2RlbHM7Ci1j
b25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBp
LmpzJykuTW9ja1JlbW90ZUFQSTsKLWNvbnN0IE5vZGVQcml2aWxlZ2VkQVBJID0gcmVxdWlyZSgn
Li4vdG9vbHMvanMvcHJpdmlsZWdlZC1hcGknKS5Qcml2aWxlZ2VkQVBJOwotY29uc3QgY3JlYXRl
QWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzID0g
cmVxdWlyZSgnLi4vdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJykuY3JlYXRl
QWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzOwot
Ci0KLWZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKLSAgICBjb25zdCBuZWVkc05v
dGlmaWNhdGlvbiA9IGNvbmZpZy5uZWVkc05vdGlmaWNhdGlvbjsKLSAgICBjb25zdCBpbml0aWFs
UmVwZXRpdGlvbkNvdW50ID0gY29uZmlnLmluaXRpYWxSZXBldGl0aW9uQ291bnQ7Ci0gICAgY29u
c3QgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGNvbmZpZy5tYXlOZWVkTW9yZVJlcXVlc3RzOwotICAg
IGNvbnN0IGhpZGRlbiA9IGNvbmZpZy5oaWRkZW47Ci0gICAgY29uc3Qgc3RhdHVzTGlzdCA9IGNv
bmZpZy5zdGF0dXNMaXN0OwotCi0gICAgcmV0dXJuIHsKLSAgICAgICAgInRlc3RHcm91cHMiOiBb
ewotICAgICAgICAgICAgImlkIjogIjIxMjgiLAotICAgICAgICAgICAgInRhc2siOiAiMTM3NiIs
Ci0gICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgIm5hbWUiOiAiQ29u
ZmlybSIsCi0gICAgICAgICAgICAiYXV0aG9yIjogInJuaXdhIiwKLSAgICAgICAgICAgICJjcmVh
dGVkQXQiOiAxNDU4Njg4NTE0MDAwLAotICAgICAgICAgICAgaGlkZGVuLAotICAgICAgICAgICAg
bmVlZHNOb3RpZmljYXRpb24sCi0gICAgICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFsiMTY5ODUi
LCAiMTY5ODYiLCAiMTY5ODciLCAiMTY5ODgiLCAiMTY5ODkiLCAiMTY5OTAiXSwKLSAgICAgICAg
ICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYiXSwKLSAgICAgICAgICAgICJub3RpZmlj
YXRpb25TZW50QXQiOiBudWxsLAotICAgICAgICAgICAgaW5pdGlhbFJlcGV0aXRpb25Db3VudCwK
LSAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMKLSAgICAgICAgfV0sCi0gICAgICAgICJi
dWlsZFJlcXVlc3RzIjogW3sKLSAgICAgICAgICAgICJpZCI6ICIxNjk4NSIsCi0gICAgICAgICAg
ICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAidGVzdCI6ICI4NDQiLAotICAgICAg
ICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIs
Ci0gICAgICAgICAgICAib3JkZXIiOiAiMCIsCi0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQy
NTUiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMF0sCi0gICAgICAgICAgICAi
dXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51bGwsCi0gICAgICAgICAgICAiY3Jl
YXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAi
MTY5ODYiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAotICAgICAgICAgICAgInRl
c3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCi0gICAgICAgICAgICAi
dGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9yZGVyIjogIjEiLAotICAgICAgICAg
ICAgImNvbW1pdFNldCI6ICI0MjU2IiwKLSAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0
WzFdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAgICAgICAgICAiYnVpbGQiOiBudWxs
LAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKLSAgICAgICAgfSwgewot
ICAgICAgICAgICAgImlkIjogIjE2OTg3IiwKLSAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIz
IiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAgICAgICAgICAicGxhdGZvcm0iOiAi
MzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKLSAgICAgICAgICAgICJvcmRl
ciI6ICIyIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCi0gICAgICAgICAgICAi
c3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKLSAgICAgICAgICAgICJ1cmwiOiBudWxsLAotICAgICAg
ICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0
MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICIxNjk4OCIsCi0gICAgICAgICAg
ICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAidGVzdCI6ICI4NDQiLAotICAgICAg
ICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIs
Ci0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAgICAgICAiY29tbWl0U2V0IjogIjQy
NTYiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10sCi0gICAgICAgICAgICAi
dXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51bGwsCi0gICAgICAgICAgICAiY3Jl
YXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAi
MTY5ODkiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAotICAgICAgICAgICAgInRl
c3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCi0gICAgICAgICAgICAi
dGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAg
ICAgImNvbW1pdFNldCI6ICI0MjU1IiwKLSAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0
WzRdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAgICAgICAgICAiYnVpbGQiOiBudWxs
LAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKLSAgICAgICAgfSwgewot
ICAgICAgICAgICAgImlkIjogIjE2OTkwIiwKLSAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIz
IiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAgICAgICAgICAicGxhdGZvcm0iOiAi
MzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKLSAgICAgICAgICAgICJvcmRl
ciI6ICIzIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NiIsCi0gICAgICAgICAgICAi
c3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKLSAgICAgICAgICAgICJ1cmwiOiBudWxsLAotICAgICAg
ICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0
MDAwCi0gICAgICAgIH1dLAotICAgICAgICAiY29tbWl0U2V0cyI6IFt7Ci0gICAgICAgICAgICAi
aWQiOiAiNDI1NSIsCi0gICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4
NzgzMiJ9LCB7ImNvbW1pdCI6ICI5MzExNiJ9XSwKLSAgICAgICAgICAgICJjdXN0b21Sb290cyI6
IFtdLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAiNDI1NiIsCi0gICAgICAgICAg
ICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1pdCI6ICI5NjMz
NiJ9XSwKLSAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtdLAotICAgICAgICB9XSwKLSAgICAg
ICAgImNvbW1pdHMiOiBbewotICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKLSAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIjkiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4
NCIsCi0gICAgICAgICAgICAidGltZSI6IDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlk
IjogIjkzMTE2IiwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwKLSAgICAgICAgICAg
ICJyZXZpc2lvbiI6ICIxOTE2MjIiLAotICAgICAgICAgICAgInRpbWUiOiAxNDQ1OTQ1ODE2ODc4
Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICI4NzgzMiIsCi0gICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICI5IiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQi
LAotICAgICAgICAgICAgInRpbWUiOiAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6
ICI5NjMzNiIsCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCi0gICAgICAgICAgICAi
cmV2aXNpb24iOiAiMTkyNzM2IiwKLSAgICAgICAgICAgICJ0aW1lIjogMTQ0ODIyNTMyNTY1MAot
ICAgICAgICB9XSwKLSAgICAgICAgInVwbG9hZGVkRmlsZXMiOiBbXSwKLSAgICAgICAgInN0YXR1
cyI6ICJPSyIKLSAgICB9OwotfQotCi1kZXNjcmliZSgnY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVx
dWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywgKCkgPT4gewotICAgIGxldCBy
ZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KG51bGwsIE5vZGVQcml2aWxlZ2VkQVBJKTsK
LSAgICBNb2NrTW9kZWxzLmluamVjdCgpOwotICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAg
ICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgnd29ya2VyX25hbWUnLCAncGFzc3dvcmQnKTsKLSAg
ICB9KTsKLQotICAgIGl0KCdzaG91bGQgYWRkIG9uZSBtb3JlIGJ1aWxkIHJlcXVlc3Qgd2hlbiBv
bmUgb2YgdGhlIGV4aXN0aW5nIHJlcXVlc3RzIGZhaWxlZCcsIGFzeW5jICgpID0+IHsKLSAgICAg
ICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5p
dGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVu
OiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRl
ZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0g
ICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAg
ICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNo
ZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0
c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7
Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6
ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgn
LCBhZGRDb3VudDogMX0pOwotICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7Ci0KLSAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOwotICAgIH0pOwotCi0gICAgaXQoJ3No
b3VsZCBhZGQgMiBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gMiBmYWlsZWQgYnVpbGQgcmVxdWVz
dCBmb3VuZCBmb3IgYSBjb21taXQgc2V0JywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0
ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAot
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRl
ZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMo
ZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vw
c1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKLSAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1l
Jywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAy
fSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKLQotICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDIpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2Fw
aS90ZXN0LWdyb3Vwcy8yMTI4Jyk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBzY2hl
ZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWxsIHJlcXVlc3RzIGZvciBhIGNvbW1pdCBz
ZXQgaGFkIGZhaWxlZCcsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29u
ZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDog
MywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAg
IHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVk
IiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVU
ZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRl
c3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAg
ICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVx
dWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmls
ZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChy
ZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dv
cmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNl
fSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKLSAgICB9KTsKLQotICAgIGl0KCdz
aG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAibWF5X25lZWRfbW9y
ZV9yZXF1ZXN0cyIgaXMgbm90IHNldCcsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVz
dEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRp
b25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2UsIGhpZGRlbjogZmFsc2UsCi0g
ICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVk
IiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OwotICAgICAgICBjb25zdCBk
YXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRl
c3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vwcyhk
YXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBz
V2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IHNjaGVk
dWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiBidWlsZCByZXF1ZXN0IGlzIGhpZGRlbicsIGFz
eW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZSwgaGlkZGVuOiB0cnVlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21w
bGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3Jv
dXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVN
b2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBz
LCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUt
dGVzdC1ncm91cCcpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEs
IHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywg
Z3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKLSAgICAgICAgcmVx
dWVzdHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1
bGUgbW9yZSBidWlsZCByZXF1ZXN0IHdoZW4gd2VcJ3ZlIGFscmVhZHkgaGl0IHRoZSBtYXhpbXVt
IHJldHJ5IGNvdW50JywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25m
aWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAz
LCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAg
c3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQi
LCAiZmFpbGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RH
cm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdy
b3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNy
ZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0
cyh0ZXN0R3JvdXBzLCAxLjUpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVn
ZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3Jk
OiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0p
OwotICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hv
dWxkIG5vdCBzY2hlZHVsZSBtb3JlIHdoZW4gYWRkaXRpb25hbCBidWlsZCByZXF1ZXN0cyBhcmUg
c3RpbGwgcGVuZGluZycsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29u
ZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDog
MiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAg
IHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVk
IiwgInBlbmRpbmciLCAicGVuZGluZyJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRl
c3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVz
dEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAg
IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1
ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxl
Z2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29y
ZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9
KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwotCi0gICAgaXQoJ3No
b3VsZCBub3QgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0IGZsYWcgd2hlbiBvbmUgY29tbWl0IHNl
dCBoYXMgbm90IGdvdCBhIHN1Y2Nlc3NmdWwgcnVuIGJ1dCBoYXZlIHBlbmRpbmcgYnVpbGRzJywg
YXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3Rp
ZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJl
cXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJj
b21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJw
ZW5kaW5nIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91
cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1v
ZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25h
bEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMs
IDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICB9KTsK
LX0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVz
dC1ncm91cHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90
ZXN0LWdyb3Vwcy10ZXN0cy5qcwppbmRleCA1YWE5MWU4YWEwMmUxMWE2NjQ1MWQzMWQ5NjM2OTZj
ZWQ4ZDQ5ODNlLi5lYjY2MjExMThiNTExMDI4NjY1NmU5ZWEyOGI4OGNmYTkwOWRkYTcxIDEwMDY0
NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10
ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdy
b3Vwcy10ZXN0cy5qcwpAQCAtNyw3ICs3LDcgQEAgY29uc3QgTm9kZVByaXZpbGVnZWRBUEkgPSBy
ZXF1aXJlKCcuLi90b29scy9qcy9wcml2aWxlZ2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEkKIGNv
bnN0IE1vY2tNb2RlbHMgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcycp
Lk1vY2tNb2RlbHM7CiBjb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMv
bW9jay1yZW1vdGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQSTsKIAotZnVuY3Rpb24gc2FtcGxlVGVz
dEdyb3VwKG5lZWRzTm90aWZpY2F0aW9uPXRydWUsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ9Miwg
bWF5TmVlZE1vcmVSZXF1ZXN0cz10cnVlKSB7CitmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAobmVl
ZHNOb3RpZmljYXRpb24gPSB0cnVlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gMiwgbWF5TmVl
ZE1vcmVSZXF1ZXN0cyA9IHRydWUpIHsKICAgICByZXR1cm4gewogICAgICAgICAidGVzdEdyb3Vw
cyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiMjEyOCIsCkBAIC0xMDksNiArMTA5LDE0MCBAQCBm
dW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAobmVlZHNOb3RpZmljYXRpb249dHJ1ZSwgaW5pdGlhbFJl
cGV0aXRpb25Db3VudD0yLCBtYXlOZQogICAgIH07CiB9CiAKK2Z1bmN0aW9uIHNhbXBsZVRlc3RH
cm91cEZvclJldHJ5KGNvbmZpZykgeworICAgIGNvbnN0IG5lZWRzTm90aWZpY2F0aW9uID0gY29u
ZmlnLm5lZWRzTm90aWZpY2F0aW9uOworICAgIGNvbnN0IGluaXRpYWxSZXBldGl0aW9uQ291bnQg
PSBjb25maWcuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICBjb25zdCBtYXlOZWVkTW9yZVJl
cXVlc3RzID0gY29uZmlnLm1heU5lZWRNb3JlUmVxdWVzdHM7CisgICAgY29uc3QgaGlkZGVuID0g
Y29uZmlnLmhpZGRlbjsKKyAgICBjb25zdCBzdGF0dXNMaXN0ID0gY29uZmlnLnN0YXR1c0xpc3Q7
CisgICAgY29uc3QgY29tbWl0U2V0TGlzdCA9IGNvbmZpZy5jb21taXRTZXRMaXN0IHx8IFsnNDI1
NScsICc0MjU2JywgJzQyNTUnLCAnNDI1NicsICc0MjU1JywgJzQyNTYnXTsKKyAgICBjb25zdCBy
ZXBldGl0aW9uVHlwZSA9IGNvbmZpZy5yZXBldGl0aW9uVHlwZSB8fCAnYWx0ZXJuYXRpbmcnOwor
CisgICAgcmV0dXJuIHsKKyAgICAgICAgInRlc3RHcm91cHMiOiBbeworICAgICAgICAgICAgImlk
IjogIjIxMjgiLAorICAgICAgICAgICAgInRhc2siOiAiMTM3NiIsCisgICAgICAgICAgICAicGxh
dGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgIm5hbWUiOiAiQ29uZmlybSIsCisgICAgICAgICAg
ICAiYXV0aG9yIjogInJuaXdhIiwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0
MDAwLAorICAgICAgICAgICAgaGlkZGVuLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb24s
CisgICAgICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFsiMTY5ODUiLCAiMTY5ODYiLCAiMTY5ODci
LCAiMTY5ODgiLCAiMTY5ODkiLCAiMTY5OTAiXSwKKyAgICAgICAgICAgICJjb21taXRTZXRzIjog
WyI0MjU1IiwgIjQyNTYiXSwKKyAgICAgICAgICAgICJub3RpZmljYXRpb25TZW50QXQiOiBudWxs
LAorICAgICAgICAgICAgaW5pdGlhbFJlcGV0aXRpb25Db3VudCwKKyAgICAgICAgICAgIG1heU5l
ZWRNb3JlUmVxdWVzdHMsCisgICAgICAgICAgICByZXBldGl0aW9uVHlwZQorICAgICAgICB9XSwK
KyAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbeworICAgICAgICAgICAgImlkIjogIjE2OTg1IiwK
KyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0
NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91
cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIwIiwKKyAgICAgICAgICAgICJjb21t
aXRTZXQiOiBjb21taXRTZXRMaXN0WzBdLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xp
c3RbMF0sCisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51
bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7
CisgICAgICAgICAgICAiaWQiOiAiMTY5ODYiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjog
IjMiLAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICIzMSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9y
ZGVyIjogIjEiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbMV0sCisg
ICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsxXSwKKyAgICAgICAgICAgICJ1cmwiOiBu
dWxsLAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQi
OiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk4NyIs
CisgICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4
NDQiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3Jv
dXAiOiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiMiIsCisgICAgICAgICAgICAiY29t
bWl0U2V0IjogY29tbWl0U2V0TGlzdFsyXSwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNM
aXN0WzJdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBu
dWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfSwg
eworICAgICAgICAgICAgImlkIjogIjE2OTg4IiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6
ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0i
OiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJv
cmRlciI6ICIzIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzNdLAor
ICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10sCisgICAgICAgICAgICAidXJsIjog
bnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0
IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiMTY5ODki
LAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRlc3QiOiAi
ODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAidGVzdEdy
b3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjQiLAorICAgICAgICAgICAgImNv
bW1pdFNldCI6IGNvbW1pdFNldExpc3RbNF0sCisgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVz
TGlzdFs0XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAgImJ1aWxkIjog
bnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk5MCIsCisgICAgICAgICAgICAidHJpZ2dlcmFibGUi
OiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAgInBsYXRmb3Jt
IjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAgICAgICAgICAi
b3JkZXIiOiAiNSIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFs1XSwK
KyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzVdLAorICAgICAgICAgICAgInVybCI6
IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRB
dCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfV0sCisgICAgICAgICJjb21taXRTZXRzIjogW3sK
KyAgICAgICAgICAgICJpZCI6ICI0MjU1IiwKKyAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjog
W3siY29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0IjogIjkzMTE2In1dLAorICAgICAgICAgICAg
ImN1c3RvbVJvb3RzIjogW10sCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICI0MjU2
IiwKKyAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjogW3siY29tbWl0IjogIjg3ODMyIn0sIHsi
Y29tbWl0IjogIjk2MzM2In1dLAorICAgICAgICAgICAgImN1c3RvbVJvb3RzIjogW10sCisgICAg
ICAgIH1dLAorICAgICAgICAiY29tbWl0cyI6IFt7CisgICAgICAgICAgICAiaWQiOiAiODc4MzIi
LAorICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIsCisgICAgICAgICAgICAicmV2aXNpb24i
OiAiMTAuMTEgMTVBMjg0IiwKKyAgICAgICAgICAgICJ0aW1lIjogMAorICAgICAgICB9LCB7Cisg
ICAgICAgICAgICAiaWQiOiAiOTMxMTYiLAorICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiMTEi
LAorICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MTYyMiIsCisgICAgICAgICAgICAidGltZSI6
IDE0NDU5NDU4MTY4NzgKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjg3ODMyIiwK
KyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAorICAgICAgICAgICAgInJldmlzaW9uIjog
IjEwLjExIDE1QTI4NCIsCisgICAgICAgICAgICAidGltZSI6IDAKKyAgICAgICAgfSwgeworICAg
ICAgICAgICAgImlkIjogIjk2MzM2IiwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwK
KyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTI3MzYiLAorICAgICAgICAgICAgInRpbWUiOiAx
NDQ4MjI1MzI1NjUwCisgICAgICAgIH1dLAorICAgICAgICAidXBsb2FkZWRGaWxlcyI6IFtdLAor
ICAgICAgICAic3RhdHVzIjogIk9LIgorICAgIH07Cit9CisKIGRlc2NyaWJlKCdUZXN0R3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgTW9ja01vZGVscy5pbmplY3QoKTsKICAgICBjb25zdCByZXF1
ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KCdodHRwczovL3BlcmYud2Via2l0Lm9yZycsIEJy
b3dzZXJQcml2aWxlZ2VkQVBJKTsKQEAgLTI0OSw3ICszODMsNyBAQCBkZXNjcmliZSgnVGVzdEdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlzSGlk
ZGVuKCksIGZhbHNlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5uZWVkc05vdGlm
aWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrZ3JvdXAuY3JlYXRl
ZEF0KCksIDE0NTg2ODg1MTQwMDApOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJl
cGV0aXRpb25Db3VudCgpLCBzYW1wbGVUZXN0R3JvdXAoKVsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0
aCAvIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgc2FtcGxlVGVzdEdyb3VwKClbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGggLyAyKTsK
ICAgICAgICAgICAgIGFzc2VydC5vayhncm91cC5oYXNQZW5kaW5nKCkpOwogICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vaygh
Z3JvdXAuaGFzU3RhcnRlZCgpKTsKQEAgLTQ2Miw3ICs1OTYsNyBAQCBkZXNjcmliZSgnVGVzdEdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9z
aXRvcnkoTW9ja01vZGVscy53ZWJraXQsICcxOTE2MjMnKTsKICAgICAgICAgICAgIHNldDIuc2V0
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeSwgJzgwMjI5
Jyk7CiAKLSAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRh
c2soJ3NvbWUtdGFzaycsIE1vY2tNb2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVU
ZXN0LCAnc29tZS1ncm91cCcsIDQsIFtzZXQxLCBzZXQyXSwgdHJ1ZSk7CisgICAgICAgICAgICBj
b25zdCBwcm9taXNlID0gVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdzb21lLXRhc2snLCBNb2Nr
TW9kZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVscy5zb21lVGVzdCwgJ3NvbWUtZ3JvdXAnLCA0
LCAnYWx0ZXJuYXRpbmcnLCBbc2V0MSwgc2V0Ml0sIHRydWUsICdhbHRlcm5hdGluZycpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNz
cmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzFdLnJlc29sdmUoewpAQCAtNDc1LDcg
KzYwOSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJdLmRhdGEsIHt0YXNrTmFtZTogJ3NvbWUtdGFz
aycsIG5hbWU6ICdzb21lLWdyb3VwJywgcGxhdGZvcm06IDY1LCB0ZXN0OiAxLAogICAgICAgICAg
ICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtvd25lclJl
dmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICIxOTE2MjIifSwKICAgICAgICAg
ICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZp
c2lvbjogIjgwMjI5In19LCB7JzExJzoge293bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxs
LCByZXZpc2lvbjogIjE5MTYyMyJ9LAotICAgICAgICAgICAgICAgICAgICAnMTYnOiB7b3duZXJS
ZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiODAyMjkifX1dLCBuZWVkc05v
dGlmaWNhdGlvbjogdHJ1ZSwgdG9rZW46ICdhYmMnfSk7CisgICAgICAgICAgICAgICAgICAgICcx
Nic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9
fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5n
JywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0u
dXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJyk7CiAgICAgICAgICAgICBy
ZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAgICAgICAgICB0YXNrSWQ6IDEyMywKQEAgLTQ4
Niw2ICs2MjAsMTk2IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJsLCAnL2FwaS9hbmFseXNpcy10YXNrcz9p
ZD0xMjMnKTsKICAgICAgICAgfSk7Ci0gICAgfSkKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdy
ZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJl
cXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QobnVsbCwgTm9kZVByaXZpbGVnZWRBUEkpOwor
ICAgICAgICBNb2NrTW9kZWxzLmluamVjdCgpOworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK
KyAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKCd3b3JrZXJfbmFtZScsICdwYXNz
d29yZCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGFkZCBvbmUgbW9yZSBi
dWlsZCByZXF1ZXN0IHdoZW4gb25lIG9mIHRoZSBleGlzdGluZyByZXF1ZXN0cyBmYWlsZWQnLCBh
c3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNO
b3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9y
ZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xp
c3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxl
VGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRl
c3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vwcyhk
YXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVz
dHNGbGFnKDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdl
ZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNz
d29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDog
bnVsbH0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisgICAgICAgICAg
ICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoJ3Nob3VsZCBhZGQgdHdvIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiB0d28g
ZmFpbGVkIGJ1aWxkIHJlcXVlc3QgZm91bmQgZm9yIGEgY29tbWl0IHNldCcsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlv
bjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6
IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21w
bGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwg
ImZhaWxlZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JS
ZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRl
c3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAg
ICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0u
ZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dv
cmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBudWxsfSk7CisgICAg
ICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVy
bCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gIm1heV9uZWVkX21v
cmVfcmVxdWVzdHMiIGlzIG5vdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVw
ZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZSwgaGlkZGVuOiBmYWxz
ZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAi
Y29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OworICAgICAg
ICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZp
Zyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2Rl
bHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBd
LnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hv
dWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYSB0ZXN0IGdyb3VwIGlz
IGhpZGRlbicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZp
ZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9
IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RH
cm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9y
ZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDEpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3Jr
ZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0
czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0
cyB3aGVuIGFsbCByZXF1ZXN0cyBmb3IgYSBjb21taXQgc2V0IGhhZCBmYWlsZWQnLCBhc3luYyAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmlj
YXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVl
c3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsi
Y29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIs
ICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9y
UmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBU
ZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAg
ICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOwor
ICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwg
e3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBn
cm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAgICAg
cmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gZG9pbmcgc28gd2lsbCBleGNl
ZWQgdGhlIHJldHJ5IGxpbWl0JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVz
dEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRp
b25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAg
ICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFp
bGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hl
ZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlO
ZWVkTW9yZVJlcXVlc3RzRmxhZygxLjUpOworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcv
cHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdv
cmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVl
c3RzOiBmYWxzZX0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVl
c3RzIHdoZW4gYWRkaXRpb25hbCBidWlsZCByZXF1ZXN0cyBhcmUgc3RpbGwgcGVuZGluZycsIGFz
eW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05v
dGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3Jl
UmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlz
dDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAicGVuZGlu
ZyIsICJwZW5kaW5nIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91
cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygz
KTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10
ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRh
dGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3Jk
JywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAg
ICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3No
b3VsZCBub3QgY2xlYXIgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcgd2hlbiBvbmUgY29t
bWl0IHNldCBoYXMgbm90IGdvdCBhIHN1Y2Nlc3NmdWwgcnVuIGJ1dCBoYXZlIHBlbmRpbmcgYnVp
bGRzJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0g
e25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5
TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBz
dGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIs
ICJwZW5kaW5nIiwgInBlbmRpbmciXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxl
VGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRl
c3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vwcyhk
YXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVz
dHNGbGFnKDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMCk7
CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgcmV0cnkgYnVpbGQg
cmVxdWVzdHMgYW5kIGNsZWFyICJtYXkgbmVlZCBtb3JlIHJlcXVlc3RzIiBmbGFnIHdoZW4gYWxs
IHJlcXVlc3RzIGZvciBhIGNvbmZpZ3VyYXRpb24gaGFkIGZhaWxlZCBmb3IgYSBzZXF1ZW50aWFs
IHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBD
b25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50
OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAgICAgICAgICAgICAgIGhpZGRlbjog
ZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICAgICAgc3Rh
dHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBl
bmRpbmciLCAicGVuZGluZyJdLAorICAgICAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1
NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAgICAg
ICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcp
OworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5y
ZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMyk7CisKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3
b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBh
ZGRDb3VudDogMiwgY29tbWl0U2V0OiAnNDI1NSd9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBd
LnJlc29sdmUoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vw
cy8yMTI4Jyk7CisgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHNhbXBsZVRlc3RHcm91
cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZykpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVt
b3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmws
ICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScs
IHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJl
cXVlc3RzOiBmYWxzZX0pCisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmV0cnkg
dGhlIHNlY29uZCBjb25maWd1cmF0aW9uIChCKSBpZiB0aGUgZmlyc3QgY29uZmlndXJhdGlvbiAo
QSkgcmVhY2hlZCB0aGUgcmV0cnkgbGltaXQgYnV0IGhhZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1
bCBpdGVyYXRpb24gZm9yIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4gewor
ICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1
ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVl
bnRpYWwnLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXSwKKyAgICAgICAg
ICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTUnLCAn
NDI1NicsICc0MjU2J119OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdy
b3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsK
KyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFn
KDIpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
YWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVl
c3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDog
J3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDEsIGNvbW1pdFNldDogJzQyNTYn
fSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCdzaG91bGQgY2xlYXIgdGVzdCBncm91cCAibWF5IG5lZWQgbW9yZSByZXF1ZXN0
cyIgZmxhZyBpbiBzZXF1ZW50aWFsIG1vZGUgaWYgYWxsIGluaXRpYWxseSBzY2hlZHVsZWQgQSBy
ZXBldGl0aW9ucyBmYWlsZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0
R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlv
bkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAgICAgICAgICAgICAgIGhp
ZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsCisgICAgICAgICAgICAg
ICAgc3RhdHVzTGlzdDogWyJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwg
InBlbmRpbmciLCAicGVuZGluZyJdLAorICAgICAgICAgICAgICAgIGNvbW1pdFNldExpc3Q6IFsn
NDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQyNTYnXX07CisKKyAgICAg
ICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25m
aWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9k
ZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1sw
XS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMik7CisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtl
cl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZl
KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY2xlYXIgYSBzZXF1ZW50aWFs
IHRlc3QgZ3JvdXAgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcgd2hlbiBpbml0aWFsIHJl
cXVlc3RlZCByZXBldGl0aW9uIGlzIHNhdGlzZmllZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGlu
aXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsCisgICAg
ICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywK
KyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAi
Y29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIl0sCisgICAgICAgICAg
ICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2JywgJzQy
NTYnLCAnNDI1NiddfTsKKworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91
cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygz
KTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10
ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRh
dGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3Jk
JywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAg
ICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9KTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429216</attachid>
            <date>2021-05-20 13:59:04 -0700</date>
            <delta_ts>2021-05-23 17:18:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210520135903.patch</filename>
            <type>text/plain</type>
            <size>228901</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjIwCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA3MmNlNDQ2MTkwN2RiNTU5Y2M2NjhhYWZhMjZkOGRmYmIxZWQyNTllLi5kOTFlZmVkZjMw
MDkzMzI1Y2MxMjc3ZTY5MGI5MTk1ZTdhMGQ2ODcyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMjEtMDUtMDMgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUn
IHRvICdhbmFseXNpc190ZXN0X2dyb3VwcycgdGFibGUgdG8gc3RvcmUgcmVwZXRpdGlvbiB0eXBl
IHdoaWNoIGRlZmF1bHRzIHRvICdhbHRlcm5hdGluZycuCisgICAgICAgIEFkZCBzdXBwb3J0IHRv
IHNjaGVkdWxlICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZyB3aGljaCBzY2hlZHVsZXMgYWxsIGl0
ZXJhdGlvbnMgZm9yIHRoZSBmaXJzdCBjb25maWd1cmF0aW9uIChBKQorICAgICAgICBiZWZvcmUg
dGhlIGl0ZXJhdGlvbnMgZm9yIHRoZSBzZWNvbmQgY29uZmlndXJhdGlvbiAoQikuCisgICAgICAg
IEJlZm9yZSB0aGlzIHBhdGNoLCBhbGwgQS9CIHRlc3RpbmcgYWx0ZXJuYXRlZCBiZXR3ZWVuIHR3
byBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggaXRlcmF0aW9uLgorICAgICAgICBB
ZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKworICAgICAgICBV
cGRhdGUgc3luY2luZyBzY3JpcHQgdG8gbm90IHByb2NlZWQgd2l0aCBuZXh0IGNvbmZpZ3VyYXRp
b24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkCisgICAg
ICAgIG1vcmUgaXRlcmF0aW9ucyB0aGFuIHRoZSBpbml0aWFsbHkgcmVxdWVzdGVkIG9yIHJldHJp
ZXMgZXhjZWVkZWQgdGhlIGxpc3QuCisKKyAgICAgICAgRml4IGEgcG90ZW50aWFsIHJhY2UgaW4g
c3luY2luZyBzY3JpcHQgdGhhdCAnUHJvbWlzZS5hbGwnIG1heSBjYXVzZSB0ZXN0IGdyb3VwIG5v
dCBzY2hlZHVsZWQgaW4gb3JkZXIuCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL3Rlc3QtZ3Jv
dXAtZm9ybS10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAg
KiBpbml0LWRhdGFiYXNlLnNxbDogQWRkZWQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZp
ZWxkIHRvICdhbmFseXNpc190ZXN0X2dyb3VwcycgdGFibGUuCisgICAgICAgICogbWlncmF0ZS1k
YXRhYmFzZS5zcWw6IFVwZGF0ZWQgbWlncmF0aW9uIHNjcmlwdCB0byBjb25kaXRpb25hbGx5IGFk
ZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZScgZmllbGQuCisgICAgICAgICogcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgZmllbGQgaW4gYXBpIHJl
dHVybiB2YWx1ZS4KKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRj
aGVyLnBocDogRmV0Y2hpbmcgYnVpbGQgcmVxdWVzdHMgdW5kZXIgYSB0cmlnZ2VyYWJsZSBzaG91
bGQgaW5jbHVkZSB0ZXN0CisgICAgICAgIGdyb3VwIHdpdGggYWxsIHRlc3QgZ3JvdXBzIGZpbmlz
aGVkIGJ1dCBzdGlsbCBuZWVkIHJldHJ5LiBUaGlzIHdpbGwgYWxsb3cgc3luY2luZyBzY3JpcHQg
dG8gcmVzb2x2ZSB0aGUgYnVpbGQKKyAgICAgICAgcmVxdWVzdCBieSBJRCBhbmQgYmxvY2sgb3Ro
ZXIgcmVxdWVzdCB0byBiZSBzY2hlZHVsZWQgb24gdGhlIGJ1aWxkZXIuCisgICAgICAgICogcHVi
bGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHA6IEFkZGVkIGNvZGUgdG8gY3JlYXRl
IGJ1aWxkIHJlcXVlc3RzIGJhc2VkIG9uIHRlc3QgbW9kZS4KKyAgICAgICAgKiBwdWJsaWMvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocDogQWRkZWQgc3VwcG9ydCB0byBvbmx5
IGFkZCBidWlsZCByZXF1ZXN0cyB0byBvbmUgY29tbWl0IHNldC4KKyAgICAgICAgKiBwdWJsaWMv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhwOiBBZGRlZCAncmVwZXRpdGlv
blR5cGUnIHN1cHBvcnQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10
ZXN0LWdyb3VwLnBocDogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAq
IHB1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHA6CisgICAgICAgICog
cHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanM6CisgICAgICAgICogcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzOiBB
ZGRlZCAncmVwZXRpdGlvblR5cGUnIHN1cHBvcnQuCisgICAgICAgIChDdXN0b21Db25maWd1cmF0
aW9uVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0aW5nKToKKyAgICAgICAgKiBwdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzOgorICAgICAg
ICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0aW5nKToKKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAg
IChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFzay5hc3lu
YyBjcmVhdGUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrKToKKyAgICAgICAgKiBwdWJsaWMvdjMv
bW9kZWxzL2J1aWxkLXJlcXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAg
ICAoQnVpbGRSZXF1ZXN0LnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOiBBbGxvdyBidWlsZCBy
ZXF1ZXN0IG9yZGVyIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKToKKyAgICAgICAgKFRlc3RHcm91cC5w
cm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
cmVwZXRpdGlvblR5cGUpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5yZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQpOiBSZWZhY3RvcmVkIGByZXBldGl0aW9uQ291bnRgIHNpbmNlIHJl
cGV0aXRpb24gbWF5IGJlIGRpZmZlcmVudAorICAgICAgICBiZXR3ZWVuIGNvbmZpZ3VyYXRpb25z
LgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5oYXNSZXRyaWVzKTogQSBoZWxwZXIgZnVu
Y3Rpb24gdG8gdGVsbCBpZiBhIHRlc3QgZ3JvdXAgaGFzIHJldHJ5IHJ1bnMuCisgICAgICAgIChU
ZXN0R3JvdXAucHJvdG90eXBlLmFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkVG9SZWFjaEluaXRp
YWxSZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5zdWNjZXNz
ZnVsVGVzdENvdW50KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaXNGaXJzdFRlc3RS
ZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucHJlY2VkaW5nQnVpbGRSZXF1
ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmV0cnlDb3VudEZvckNvbW1pdFNl
dCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJldHJ5Q291bnRzQXJlU2FtZUZvckFs
bENvbW1pdFNldHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBfY3JlYXRl
QWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgX2NyZWF0
ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFz
eW5jIGNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBl
LmFzeW5jIGRpZFNlbmROb3RpZmljYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5hc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMg
Y3JlYXRlV2l0aFRhc2spOgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0
b21Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZl
dGNoVGVzdEdyb3Vwcyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHNjaGVk
dWxlUmV0cmllc0lmTmVjZXNzYXJ5KTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVkLWJ1aWxkLXJl
cXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHJlc29s
dmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgZmV0
Y2hCeUlkKTogQWRkZWQgc3VwcG9ydCB0byBmZXRjaCB0ZXN0IGdyb3VwIGJ5IElELgorICAgICAg
ICAqIHB1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFs
eXNpc1Rhc2tDaGFydFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAg
ICAgICAoQW5hbHlzaXNUYXNrUmVzdWx0c1BhbmUucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRv
d1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZS5wcm90b3R5cGUu
c2V0VGVzdEdyb3Vwcyk6CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKToK
KyAgICAgICAgKEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUucHJvdG90eXBlLmRpZENvbnN0cnVj
dFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5
cGUuX3JlbmRlckN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrVGVzdEdy
b3VwUGFuZS5wcm90b3R5cGUuX3JldHJ5U3VtbWFyeSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQ
YWdlLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKToKKyAgICAgICAgKEFuYWx5c2lz
VGFza1BhZ2UucHJvdG90eXBlLmFzeW5jIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3Jv
dXApOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5zZXQgY29uc3QpOgorICAgICAgICAoQW5h
bHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5
aW5nQ29tbWl0U2V0TGlzdCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5h
c3luYyBfY3JlYXRlQ3VzdG9tVGVzdEdyb3VwKToKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMv
Y2hhcnQtcGFuZS5qczoKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0
U2hhZG93VHJlZSk6CisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLmFzeW5jIF9hbmFseXpl
UmFuZ2UpOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1w
YWdlLmpzOgorICAgICAgICAoQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuYXN5bmMg
X2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91cCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2Fw
aS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogQWRkZWQgYSB1bml0IHRlc3QuCisgICAgICAgICog
c2VydmVyLXRlc3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3Rz
LgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2Vy
dmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzOiBB
ZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1j
cmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4K
KyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAt
dGVzdHMuanM6IFVwZGF0ZWQgYW5kIGFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVy
LXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGFzeW5jIGFz
c2VydFRocm93cyk6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEu
anM6CisgICAgICAgIChNb2NrRGF0YS5hZGRNb2NrRGF0YSk6CisgICAgICAgIChNb2NrRGF0YS5z
ZXQgYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMpOgorICAgICAgICAoTW9ja0RhdGEuc2V0
IGFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKToKKyAgICAgICAgKE1vY2tEYXRhLnNldCBtb2NrVGVz
dFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcik6CisgICAgICAgIChNb2NrRGF0YS5zYW1wbGVC
dWlsZERhdGEpOgorICAgICAgICAqIHNlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2Vy
YWJsZS10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBz
ZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogVXBk
YXRlZCB1bml0IHRlc3RzLgorICAgICAgICAoYXN5bmMgY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNo
KToKKyAgICAgICAgKGNyZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KToKKyAgICAgICAgKiB0
b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanM6CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90
b3R5cGUuc2NoZWR1bGVSZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKToKKyAgICAgICAgKEJ1aWxk
Ym90U3luY2VyLnByb3RvdHlwZS5wdWxsQnVpbGRib3QpOgorICAgICAgICAqIHRvb2xzL2pzL2J1
aWxkYm90LXRyaWdnZXJhYmxlLmpzOgorICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZSk6Cisg
ICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBzeW5jT25jZSk6Cisg
ICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5hc3luYyBfc2NoZWR1bGVSZXF1
ZXN0KToKKyAgICAgICAgKEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLl9zaG91bGREZWZl
clNlcXVlbnRpYWxUZXN0aW5nUmVxdWVzdFdpdGhOZXdDb21taXRTZXQpOgorICAgICAgICAqIHRv
b2xzL2pzL21lYXN1cmVtZW50LXNldC1hbmFseXplci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50
U2V0QW5hbHl6ZXIucHJvdG90eXBlLmFzeW5jIF9hbmFseXplTWVhc3VyZW1lbnRTZXQpOgorICAg
ICAgICAoTWVhc3VyZW1lbnRTZXRBbmFseXplcik6CisgICAgICAgICogdG9vbHMvanMvcmV0cnkt
ZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHRvb2xzL3J1bi1h
bmFseXNpcy5qczogVXNlIHVwZGF0ZWQgQVBJIHRvIHJldHJ5LgorICAgICAgICAoYXN5bmMgYW5h
bHlzaXNMb29wKToKKyAgICAgICAgKGFzeW5jIHByb2Nlc3NUZXN0R3JvdXBNYXlOZWVkTW9yZVJl
cXVlc3RzKToKKyAgICAgICAgKiB0b29scy9zeW5jLWJ1aWxkYm90LmpzOiBBZGRlZCBjb21tYW5k
IGxpbmUgb3B0aW9uICctLW1heC1yZXRyeS1mYWN0b3InLgorICAgICAgICAqIHVuaXQtdGVzdHMv
YW5hbHlzaXMtdGFzay10ZXN0cy5qczogVXBkYXRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHVu
aXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisg
ICAgICAgIChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHVuaXQtdGVzdHMv
bWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMv
cmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOiBNb3ZlZCB1bml0IHRlc3RzIHRv
IHRlc3QtZ3JvdXAtdGVzdHMuanMuCisgICAgICAgICogdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10
ZXN0cy5qczogQWRkZWQgdW5pdCB0ZXN0cyBmcm9tICdyZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanMnLgorCiAyMDIxLTA1LTA3ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFw
cGxlLmNvbT4KICAgICAgICAgCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzeW5jaW5nIHJlcG8g
d2l0aCBjb21taXQgcmV2aXNpb24gbGFiZWwuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMK
aW5kZXggYjRhYjIxMjVjNDYzMDRmNTZjNDc4NzcxYmViNmMyMzNhMDkzYmU4YS4uZjk2MDExMzgy
MzRhMWQ5YzU2NmEzODBhNjVjZTU5MDg0MjgzMGI0YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGVzdC1ncm91cC1mb3JtLXRlc3RzLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3Rlc3QtZ3JvdXAtZm9ybS10
ZXN0cy5qcwpAQCAtMTgsMTAgKzE4LDI1IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXBGb3JtVGVzdHMn
LCAoKSA9PiB7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmxpc3RlblRvQWN0aW9uKCdzdGFy
dFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CiAgICAgICAgICAgICBl
eHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRl
bnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRv
LmVxbChbWzQsIHRydWVdXSk7CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQs
ICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgaXQo
J211c3QgZGlzcGF0Y2ggInN0YXJ0VGVzdGluZyIgYWN0aW9uIHdpdGggdGhlIHJlcGV0aXRpb24g
dHlwZSB1c2VyIHNlbGVjdHMgb24gIlN0YXJ0IEEvQiB0ZXN0aW5nIicsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAg
Y29uc3QgdGVzdEdyb3VwRm9ybSA9IGF3YWl0IGNyZWF0ZVRlc3RHcm91cEZvcm1XaXRoQ29udGV4
dChjb250ZXh0KTsKKyAgICAgICAgY29uc3QgY2FsbHMgPSBbXTsKKyAgICAgICAgdGVzdEdyb3Vw
Rm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1
c2goYXJncykpOworICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CisgICAgICAgIHRl
c3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2soKTsKKyAgICAgICAgZXhw
ZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOworICAgICAgICBj
b25zdCB0eXBlRm9ybSA9IHRlc3RHcm91cEZvcm0uY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7
CisgICAgICAgIHR5cGVGb3JtLnZhbHVlID0gJ3NlcXVlbnRpYWwnOworICAgICAgICB0eXBlRm9y
bS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOworICAgICAgICB0ZXN0R3JvdXBG
b3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7CisgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0sIFs0LCAnc2VxdWVudGlhbCcsIHRy
dWVdXSk7CisgICAgfSk7CisKICAgICBpdCgnbXVzdCB1cGRhdGUgdGhlIHJlcGV0aXRpb24gY291
bnQgd2hlbiB0aGUgdXNlciBzZWxlY3RlZCBhIGRpZmZlcmVudCBjb3VudCcsICgpID0+IHsKICAg
ICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKICAgICAgICAgcmV0
dXJuIGNyZWF0ZVRlc3RHcm91cEZvcm1XaXRoQ29udGV4dChjb250ZXh0KS50aGVuKCh0ZXN0R3Jv
dXBGb3JtKSA9PiB7CkBAIC0yOSwxMiArNDQsMTIgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1U
ZXN0cycsICgpID0+IHsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24o
J3N0YXJ0VGVzdGluZycsICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAg
ICAgIGV4cGVjdChjYWxscykudG8uZXFsKHt9KTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0u
Y29udGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKFtbNCwgdHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFs
KFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgICAgIGNvbnN0IGNvdW50Rm9y
bSA9IHRlc3RHcm91cEZvcm0uY29udGVudCgncmVwZXRpdGlvbi1jb3VudCcpOwogICAgICAgICAg
ICAgY291bnRGb3JtLnZhbHVlID0gJzYnOwogICAgICAgICAgICAgY291bnRGb3JtLmRpc3BhdGNo
RXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNv
bnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMp
LnRvLmVxbChbWzQsIHRydWVdLCBbNiwgdHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxs
cykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0sIFs2LCAnYWx0ZXJuYXRpbmcnLCB0
cnVlXV0pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtNDUsNyArNjAsNyBAQCBkZXNjcmli
ZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywgKCkgPT4gewogICAgICAgICAgICAgdGVzdEdyb3VwRm9y
bS5saXN0ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1c2go
YXJncykpOwogICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAgICAg
ICAgdGVzdEdyb3VwRm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAgICAg
ICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXV0pOworICAgICAgICAgICAgZXhw
ZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOwogICAgICAgICAg
ICAgY29uc3QgY291bnRGb3JtID0gdGVzdEdyb3VwRm9ybS5jb250ZW50KCdyZXBldGl0aW9uLWNv
dW50Jyk7CiAgICAgICAgICAgICBjb3VudEZvcm0udmFsdWUgPSAnNic7CiAgICAgICAgICAgICBj
b3VudEZvcm0uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKQEAgLTUzLDcgKzY4
LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+IHsKICAgICAgICAgICAg
IG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IG5vdGlmeU9uQ29tcGxldGlvbkNoZWNrYm94LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFu
Z2UnKSk7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicp
LmNsaWNrKCk7Ci0gICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdLCBb
NiwgZmFsc2VdXSk7CisgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsICdhbHRl
cm5hdGluZycsIHRydWVdLCBbNiwgJ2FsdGVybmF0aW5nJywgZmFsc2VdXSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogCkBAIC03NiwxMCArOTEsMTAgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1U
ZXN0cycsICgpID0+IHsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmxpc3RlblRvQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CiAgICAg
ICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAgICAgICAgICAgIHRl
c3RHcm91cEZvcm0uY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLmNsaWNrKCk7Ci0g
ICAgICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVlXV0pOworICAgICAg
ICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV1d
KTsKICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLnNldFJlcGV0aXRpb25Db3VudCg4KTsK
ICAgICAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdi
dXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtb
NCwgdHJ1ZV0sIFs4LCB0cnVlXV0pOworICAgICAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8u
ZXFsKFtbNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0sIFs4LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0p
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCmluZGV4IGY2OGI1ZjBjMDMzYTIyNjQzMDdjMmY4
M2YzZDRmYjc0YmRiMTUzZWQuLmU3NmRjYmM5MjlhMmIxY2Y1ZDIyMDc0MzdjZGZhNDg2ZTViYWVi
ZGUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNx
bAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTI5
LDYgKzI5LDcgQEAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVz
IENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyB1cGxvYWRlZF9maWxlcyBDQVNDQURFOwog
RFJPUCBUQUJMRSBJRiBFWElTVFMgYnVncyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMg
YW5hbHlzaXNfdGVzdF9ncm91cHMgQ0FTQ0FERTsKK0RST1AgVFlQRSBJRiBFWElTVFMgYW5hbHlz
aXNfdGVzdF9ncm91cF9yZXBldGl0aW9uX3R5cGUgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJ
U1RTIGNvbW1pdF9zZXRzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRfc2V0
X2l0ZW1zIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWlsZF9yZXF1ZXN0cyBDQVND
QURFOwpAQCAtMjgyLDYgKzI4Myw3IEBAIENSRUFURSBUQUJMRSB1cGxvYWRlZF9maWxlcyAoCiBD
UkVBVEUgSU5ERVggZmlsZV9hdXRob3JfaW5kZXggT04gdXBsb2FkZWRfZmlsZXMoZmlsZV9hdXRo
b3IpOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBmaWxlX3NoYTI1Nl9pbmRleCBPTiB1cGxvYWRlZF9m
aWxlcyhmaWxlX3NoYTI1NikgV0hFUkUgZmlsZV9kZWxldGVkX2F0IGlzIE5VTEw7CiAKK0NSRUFU
RSBUWVBFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIGFzIEVOVU0gKCdhbHRl
cm5hdGluZycsICdzZXF1ZW50aWFsJyk7CiBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91
cHMgKAogICAgIHRlc3Rncm91cF9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCiAgICAgdGVzdGdyb3Vw
X3Rhc2sgaW50ZWdlciBSRUZFUkVOQ0VTIGFuYWx5c2lzX3Rhc2tzIE5PVCBOVUxMLApAQCAtMjky
LDYgKzI5NCw3IEBAIENSRUFURSBUQUJMRSBhbmFseXNpc190ZXN0X2dyb3VwcyAoCiAgICAgdGVz
dGdyb3VwX25lZWRzX25vdGlmaWNhdGlvbiBib29sZWFuIE5PVCBOVUxMIERFRkFVTFQgRkFMU0Us
CiAgICAgdGVzdGdyb3VwX25vdGlmaWNhdGlvbl9zZW50X2F0IHRpbWVzdGFtcCBERUZBVUxUIE5V
TEwsCiAgICAgdGVzdGdyb3VwX2luaXRpYWxfcmVwZXRpdGlvbl9jb3VudCBpbnRlZ2VyIE5PVCBO
VUxMLAorICAgIHRlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUgYW5hbHlzaXNfdGVzdF9ncm91cF9y
ZXBldGl0aW9uX3R5cGUgTk9UIE5VTEwgREVGQVVMVCAnYWx0ZXJuYXRpbmcnLAogICAgIHRlc3Rn
cm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzIGJvb2xlYW4gREVGQVVMVCBGQUxTRSwKICAgICBD
T05TVFJBSU5UIHRlc3Rncm91cF9uYW1lX211c3RfYmVfdW5pcXVlX2Zvcl9lYWNoX3Rhc2sgVU5J
UVVFKHRlc3Rncm91cF90YXNrLCB0ZXN0Z3JvdXBfbmFtZSkpOwogQ1JFQVRFIElOREVYIHRlc3Rn
cm91cF90YXNrX2luZGV4IE9OIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzKHRlc3Rncm91cF90YXNrKTsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNx
bCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbAppbmRleCAw
ZWE5MTMzZGE2ZWRlMzI1ZGRmNmMyMWQ4YjkzN2ZiNzM1NjQyNTlhLi5hNjEzMTE5YmFiOWE0MjY0
MzZkZmJkMTk3NjVjNGJiOWQzZTBlZTVkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L21pZ3JhdGUtZGF0YWJhc2Uuc3FsCkBAIC0xLDEwICsxLDE2IEBACiBETyAkJAogCiBCRUdJTgor
CitJRiBOT1QgRVhJU1RTIChTRUxFQ1QgTlVMTCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZSA9
ICdhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25fdHlwZScpIFRIRU4KKyAgICBDUkVBVEUg
VFlQRSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25fdHlwZSBhcyBFTlVNICgnYWx0ZXJu
YXRpbmcnLCAnc2VxdWVudGlhbCcpOworRU5EIElGOworCiBBTFRFUiBUQUJMRSBidWlsZF9yZXF1
ZXN0cyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgcmVxdWVzdF9zdGF0dXNfZGVzY3JpcHRpb24g
dmFyY2hhcigxMDI0KSBERUZBVUxUIE5VTEw7CiBBTFRFUiBUQUJMRSBwbGF0Zm9ybXMgQUREIENP
TFVNTiAgSUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91cCBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxh
dGZvcm1fZ3JvdXBzIERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIGNvbW1pdHMgQUREIENPTFVN
TiBJRiBOT1QgRVhJU1RTIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyIHZhcmNoYXIoNjQpIERF
RkFVTFQgTlVMTDsKLUFMVEVSIFRBQkxFIGNvbW1pdHMgRFJPUCBDT05TVFJBSU5UIGNvbW1pdF9z
dHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlOworQUxURVIgVEFC
TEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgQUREIENPTFVNTiBJRiBOT1QgRVhJU1RTIHRlc3Rncm91
cF9yZXBldGl0aW9uX3R5cGUgYW5hbHlzaXNfdGVzdF9ncm91cF9yZXBldGl0aW9uX3R5cGUgTk9U
IE5VTEwgREVGQVVMVCAnYWx0ZXJuYXRpbmcnOworQUxURVIgVEFCTEUgY29tbWl0cyBEUk9QIENP
TlNUUkFJTlQgSUYgRVhJU1RTIGNvbW1pdF9zdHJpbmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5
X211c3RfYmVfdW5pcXVlOwogQUxURVIgVEFCTEUgY29tbWl0cyBBREQgQ09OU1RSQUlOVCBjb21t
aXRfc3RyaW5nX2lkZW50aWZpZXJfaW5fcmVwb3NpdG9yeV9tdXN0X2JlX3VuaXF1ZSBVTklRVUUo
Y29tbWl0X3JlcG9zaXRvcnksIGNvbW1pdF9yZXZpc2lvbl9pZGVudGlmaWVyKTsKIAogQ1JFQVRF
IFRBQkxFIElGIE5PVCBFWElTVFMgcGxhdGZvcm1fZ3JvdXBzICgKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocCBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAppbmRleCAwMzFhNWM0
YWI5ODdiNzkzMjZjODEyMjAzMGZkZGU5ZGNiNDk3NjIwLi42ODQ3ZjQ4NzQyOGY1MzhlNWEzNDhh
MTk5ZGUyNzk1ZDVkNzdkNmU4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCkBAIC05NCw2ICs5NCw3IEBAIGZ1bmN0aW9uIGZv
cm1hdF90ZXN0X2dyb3VwKCRncm91cF9yb3cpIHsKICAgICAgICAgJ25lZWRzTm90aWZpY2F0aW9u
JyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfbmVlZHNfbm90aWZp
Y2F0aW9uJ10pLAogICAgICAgICAnbWF5TmVlZE1vcmVSZXF1ZXN0cycgPT4gRGF0YWJhc2U6Omlz
X3RydWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMnXSksCiAg
ICAgICAgICdpbml0aWFsUmVwZXRpdGlvbkNvdW50JyA9PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBf
aW5pdGlhbF9yZXBldGl0aW9uX2NvdW50J10sCisgICAgICAgICdyZXBldGl0aW9uVHlwZScgPT4g
JGdyb3VwX3Jvd1sndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZSddLAogICAgICAgICAnYnVpbGRS
ZXF1ZXN0cycgPT4gYXJyYXkoKSwKICAgICAgICAgJ2NvbW1pdFNldHMnID0+IGFycmF5KCksCiAg
ICAgKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAppbmRleCBiMmMwNWU3YjI1
MjA5N2YxMTVmZmRiYzQxYTExYzNlNGJkMTkwMmNkLi40ZDY1NzYxYjQ0M2RhNDBhYTU0ZDA5MGEz
YzJiMjA5MWRlNWJlNmE1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCkBA
IC00Niw3ICs0Niw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdHNGZXRjaGVyIHsKICAgICAgICAgICAg
IChTRUxFQ1QgdGVzdGdyb3VwX2lkLCB0ZXN0Z3JvdXBfdGFzaywgKGNhc2Ugd2hlbiB0ZXN0Z3Jv
dXBfYXV0aG9yIGlzIG5vdCBudWxsIHRoZW4gMCBlbHNlIDEgZW5kKSBhcyBhdXRob3Jfb3JkZXIs
IHRlc3Rncm91cF9jcmVhdGVkX2F0CiAgICAgICAgICAgICAgICAgRlJPTSBhbmFseXNpc190ZXN0
X2dyb3VwcyBXSEVSRSBFWElTVFMKICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00g
YnVpbGRfcmVxdWVzdHMgV0hFUkUgdGVzdGdyb3VwX2lkID0gcmVxdWVzdF9ncm91cCBBTkQgcmVx
dWVzdF9zdGF0dXMKLSAgICAgICAgICAgICAgICAgICAgICAgIElOIChcJ3BlbmRpbmdcJywgXCdz
Y2hlZHVsZWRcJywgXCdydW5uaW5nXCcpKSkgQVMgdGVzdF9ncm91cHMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIElOIChcJ3BlbmRpbmdcJywgXCdzY2hlZHVsZWRcJywgXCdydW5uaW5nXCcpKSBP
UiB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyA9IFRSVUUpIEFTIHRlc3RfZ3JvdXBz
CiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X3RyaWdnZXJhYmxlID0gJDEgQU5EIHJlcXVlc3Rf
Z3JvdXAgPSB0ZXN0X2dyb3Vwcy50ZXN0Z3JvdXBfaWQKICAgICAgICAgICAgIE9SREVSIEJZIGF1
dGhvcl9vcmRlciwgdGVzdGdyb3VwX2NyZWF0ZWRfYXQsIHJlcXVlc3Rfb3JkZXInLCBhcnJheSgk
dHJpZ2dlcmFibGVfaWQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKaW5k
ZXggZTg1MzBhNmJiNzFlNDJjZmYyOGNlMzE5YzhiNTg1ZTYyZGQyM2YxYy4uNzc3N2UxYWQ2MmFm
ZGFjNzZjNzMxNDMzNTIyYzFiMjZhMDI3Yzg0YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJz
LnBocApAQCAtNCwyMSArNCwzMSBAQCByZXF1aXJlX29uY2UoJ3JlcG9zaXRvcnktZ3JvdXAtZmlu
ZGVyLnBocCcpOwogcmVxdWlyZV9vbmNlKCdjb21taXQtbG9nLWZldGNoZXIucGhwJyk7CiAKICMg
RklYTUU6IFNob3VsZCBjcmVhdGUgYSBoZWxwZXIgY2xhc3MgZm9yIGJlbG93IDMgaGVscGVyIGZ1
bmN0aW9ucyB0byBhdm9pZCBwYXNzaW5nIGxvbmcgYXJndW1lbnQgbGlzdC4KLWZ1bmN0aW9uIGNy
ZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRh
c2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRl
c3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkbmVlZHNfbm90aWZpY2F0aW9uKSB7Ci0KK2Z1bmN0
aW9uIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0
cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9p
ZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNf
bm90aWZpY2F0aW9uKQoreworICAgIGFzc2VydChpbl9hcnJheSgkcmVwZXRpdGlvbl90eXBlLCBh
cnJheSgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpKSk7CiAgICAgbGlzdCAoJGJ1aWxkX2Nv
bmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmlndXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21t
aXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3VyYXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0
cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3Jv
dXBzJywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25h
bWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9
PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50JyA9PiAkcmVw
ZXRpdGlvbl9jb3VudCkpOworICAgICAgICBhcnJheSgndGFzaycgPT4gJHRhc2tfaWQsICduYW1l
JyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvciwgJ25lZWRzX25vdGlmaWNhdGlvbicgPT4g
JG5lZWRzX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICdpbml0aWFsX3JlcGV0aXRpb25fY291
bnQnID0+ICRyZXBldGl0aW9uX2NvdW50LCAncmVwZXRpdGlvbl90eXBlJyA9PiAkcmVwZXRpdGlv
bl90eXBlKSk7CiAKICAgICAkYnVpbGRfY291bnQgPSBjb3VudCgkYnVpbGRfY29uZmlndXJhdGlv
bl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxkX2NvdW50OwogICAgIGZvcmVhY2goJGJ1aWxk
X2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkYnVpbGRfY29uZmlndXJhdGlvbikKICAgICAgICAgaW5z
ZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkYnVpbGRfY29uZmlndXJh
dGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCBOVUxMLCAkZ3Jv
dXBfaWQpOwogCi0gICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRpb25fY291bnQ7ICRpKysp
IHsKLSAgICAgICAgZm9yZWFjaCgkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29u
ZmlndXJhdGlvbikKLSAgICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1
cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJhdGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJGdyb3VwX2lkKTsKKyAgICBpZiAoJHJlcGV0aXRp
b25fdHlwZSA9PSAnc2VxdWVudGlhbCcpIHsKKyAgICAgICAgZm9yZWFjaCAoJHRlc3RfY29uZmln
dXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgIGZvciAo
JGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKQorICAgICAgICAgICAgICAgIGlu
c2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJHRlc3RfY29uZmlndXJh
dGlvbiwgJG9yZGVyKyssICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwg
JGdyb3VwX2lkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydCgkcmVw
ZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZycpOworICAgICAgICBmb3IgKCRpID0gMDsgJGkg
PCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgeworICAgICAgICAgICAgZm9yZWFjaCAoJHRlc3Rf
Y29uZmlndXJhdGlvbl9saXN0IGFzICR0ZXN0X2NvbmZpZ3VyYXRpb24pCisgICAgICAgICAgICAg
ICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25m
aWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0
X2lkLCAkZ3JvdXBfaWQpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAkZ3JvdXBfaWQ7
CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVn
ZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKaW5kZXggNTcwZTkw
MmY1ZDJlMWRmM2ZjMmI2YjZhZmEyMzNhYmZiNTAwMzY0Ny4uOTU3YTlmNDczMTQ1NzA1ZmFjNTIy
ZGI3Mjk1Y2NiODA3YzI0NGNhNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVl
c3RzLnBocApAQCAtNywxMyArNywxNSBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICRkYiA9IGNv
bm5lY3QoKTsKICAgICAkZGF0YSA9IGVuc3VyZV9wcml2aWxlZ2VkX2FwaV9kYXRhX2FuZF90b2tl
bl9vcl93b3JrZXIoJGRiKTsKIAotICAgICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQg
PSBhcnJheV9nZXQoJGRhdGEsICdhZGRDb3VudCcpOwotICAgIGlmICghJGFkZGl0aW9uYWxfYnVp
bGRfcmVxdWVzdF9jb3VudCkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXF1ZXN0Q291bnRO
b3RTcGVjaWZpZWQnKTsKKyAgICAkYXJndW1lbnRzID0gdmFsaWRhdGVfYXJndW1lbnRzKCRkYXRh
LCBhcnJheSgKKyAgICAgICAgJ2FkZENvdW50JyA9PiAnaW50JywKKyAgICAgICAgJ2dyb3VwJyA9
PiAnaW50JywKKyAgICAgICAgJ2NvbW1pdFNldCcgPT4gJ2ludD8nLAorICAgICkpOwogCi0gICAg
JHRlc3RfZ3JvdXBfaWQgPSBhcnJheV9nZXQoJGRhdGEsICdncm91cCcpOwotICAgIGlmICghJHRl
c3RfZ3JvdXBfaWQpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcignVGVzdEdyb3VwTm90U3BlY2lm
aWVkJyk7CisgICAgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCA9ICRhcmd1bWVudHNb
J2FkZENvdW50J107CisgICAgJHRlc3RfZ3JvdXBfaWQgPSAkYXJndW1lbnRzWydncm91cCddOwor
ICAgICRjb21taXRfc2V0X2lkID0gYXJyYXlfZ2V0KCRhcmd1bWVudHMsICdjb21taXRTZXQnKTsK
IAogICAgICR0ZXN0X2dyb3VwID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190ZXN0
X2dyb3VwcycsICd0ZXN0Z3JvdXAnLCBhcnJheSgnaWQnID0+ICR0ZXN0X2dyb3VwX2lkKSk7CiAg
ICAgaWYgKCEkdGVzdF9ncm91cCkKQEAgLTI4LDExICszMCwzMyBAQCBmdW5jdGlvbiBtYWluKCkg
ewogICAgIGlmICgkY3VycmVudF9vcmRlciA8IDApCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcign
Tm9UZXN0aW5nQnVpbGRSZXF1ZXN0cycpOwogCisgICAgJHJlcGV0aXRpb25fdHlwZSA9ICR0ZXN0
X2dyb3VwWyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ107CisgICAgYXNzZXJ0KGluX2FycmF5
KCRyZXBldGl0aW9uX3R5cGUsIFsnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCddKSk7CisgICAg
JGlzX2FsdGVybmF0aW5nX3R5cGUgPSAkcmVwZXRpdGlvbl90eXBlID09ICdhbHRlcm5hdGluZyc7
CisgICAgaWYgKCRpc19hbHRlcm5hdGluZ190eXBlICYmICRjb21taXRfc2V0X2lkKQorICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0NvbW1pdFNldE5vdFN1cHBvcnRlZEZvckFsdGVybmF0aW5nUmVw
ZXRpdGlvblR5cGUnKTsKKworICAgICRleGlzdGluZ190ZXN0X3R5cGVfYnVpbGRfcmVxdWVzdHMg
PSBhcnJheV9maWx0ZXIoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCBmdW5jdGlvbigkYnVpbGRf
cmVxdWVzdCkgeworICAgICAgICByZXR1cm4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3JkZXIn
XSA+PSAwOworICAgIH0pOworCisgICAgaWYgKCRpc19hbHRlcm5hdGluZ190eXBlKQorICAgICAg
ICBhZGRfYWx0ZXJuYXRpbmdfYnVpbGRfcmVxdWVzdHMoJGRiLCAkZXhpc3RpbmdfdGVzdF90eXBl
X2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVu
dF9vcmRlcik7CisgICAgZWxzZSB7CisgICAgICAgIGlmICgkY29tbWl0X3NldF9pZCkKKyAgICAg
ICAgICAgIGFkZF9zZXF1ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9jb21taXRfc2V0KCRkYiwg
JGV4aXN0aW5nX3Rlc3RfdHlwZV9idWlsZF9yZXF1ZXN0cywgJGFkZGl0aW9uYWxfYnVpbGRfcmVx
dWVzdF9jb3VudCwgJGNvbW1pdF9zZXRfaWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
ZGRfc2VxdWVudGlhbF9idWlsZF9yZXF1ZXN0c19mb3JfYWxsX2NvbW1pdF9zZXRzKCRkYiwgJGV4
aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAk
dGVzdF9ncm91cF9pZCk7CisgICAgfQorCisgICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKK30KKwor
ZnVuY3Rpb24gYWRkX2FsdGVybmF0aW5nX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGV4aXN0aW5nX2J1
aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkb3JkZXIpCit7
CiAgICAgJGNvbW1pdF9zZXRzID0gYXJyYXkoKTsKICAgICAkYnVpbGRfcmVxdWVzdF9ieV9jb21t
aXRfc2V0ID0gYXJyYXkoKTsKICAgICBmb3JlYWNoICgkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMg
YXMgJGJ1aWxkX3JlcXVlc3QpIHsKLSAgICAgICAgaWYgKCRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0
X29yZGVyJ10gPCAwKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICRyZXF1ZXN0ZWRf
Y29tbWl0X3NldCA9ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXTsKICAgICAg
ICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHJlcXVlc3RlZF9jb21taXRfc2V0LCAkYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDQsMTkgKzY4
LDc3IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGFkZGl0aW9u
YWxfYnVpbGRfcmVxdWVzdF9jb3VudDsgJGkrKykgewogICAgICAgICBmb3JlYWNoICgkY29tbWl0
X3NldHMgYXMgJGNvbW1pdF9zZXQpIHsKICAgICAgICAgICAgICRidWlsZF9yZXF1ZXN0ID0gJGJ1
aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF07Ci0gICAgICAgICAgICAkZGIt
Pmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgKLSAgICAgICAg
ICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3RyaWdnZXJh
YmxlJ10sCi0gICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnlfZ3JvdXAnID0+ICRidWlsZF9yZXF1
ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXSwKLSAgICAgICAgICAgICAgICAncGxhdGZv
cm0nID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3JtJ10sCi0gICAgICAgICAgICAg
ICAgJ3Rlc3QnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwKLSAgICAgICAgICAg
ICAgICAnZ3JvdXAnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2dyb3VwJ10sCi0gICAgICAg
ICAgICAgICAgJ29yZGVyJyA9PiArKyRjdXJyZW50X29yZGVyLAotICAgICAgICAgICAgICAgICdj
b21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRfc2V0J10pKTsKKyAg
ICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9yZXF1ZXN0X3dpdGhfbmV3X29yZGVyKCRkYiwgJGJ1
aWxkX3JlcXVlc3QsICsrJG9yZGVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAkZGItPmNvbW1p
dF90cmFuc2FjdGlvbigpOworfQogCi0gICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKK2Z1bmN0aW9u
IGFkZF9zZXF1ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9hbGxfY29tbWl0X3NldHMoJGRiLCAk
ZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQs
ICR0ZXN0X2dyb3VwX2lkKQoreworICAgICRvcmRlcl9zaGlmdF9ieV9jb21taXRfc2V0ID0gYXJy
YXkoKTsKKyAgICAkbGFzdF9idWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQgPSBhcnJheSgpOwor
ICAgIGZvcmVhY2ggKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkY3VycmVudF9idWlsZF9y
ZXF1ZXN0KSB7CisgICAgICAgICRjb21taXRfc2V0X2Zvcl9jdXJyZW50X3JlcXVlc3QgPSAkY3Vy
cmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXTsKKyAgICAgICAgaWYgKCFh
cnJheV9rZXlfZXhpc3RzKCRjb21taXRfc2V0X2Zvcl9jdXJyZW50X3JlcXVlc3QsICRsYXN0X2J1
aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCkpCisgICAgICAgICAgICAkb3JkZXJfc2hpZnRfYnlf
Y29tbWl0X3NldFskY29tbWl0X3NldF9mb3JfY3VycmVudF9yZXF1ZXN0XSA9IGNvdW50KCRsYXN0
X2J1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCkgKiAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0
X2NvdW50OworICAgICAgICAkbGFzdF9idWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXRbJGNvbW1p
dF9zZXRfZm9yX2N1cnJlbnRfcmVxdWVzdF0gPSAkY3VycmVudF9idWlsZF9yZXF1ZXN0OworICAg
IH0KKworICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsKKyAgICBmb3JlYWNoIChhcnJheV9y
ZXZlcnNlKCRvcmRlcl9zaGlmdF9ieV9jb21taXRfc2V0LCB0cnVlKSBhcyAkY29tbWl0X3NldCA9
PiAkc2hpZnQpIHsKKyAgICAgICAgaWYgKCEkc2hpZnQpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgJGRiLT5xdWVyeSgnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X29y
ZGVyID0gcmVxdWVzdF9vcmRlciArICQxCisgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2NvbW1p
dF9zZXQgPSAkMiBBTkQgcmVxdWVzdF9ncm91cCA9ICQzJywKKyAgICAgICAgICAgIGFycmF5KCRz
aGlmdCwgJGNvbW1pdF9zZXQsICR0ZXN0X2dyb3VwX2lkKSk7CisgICAgfQorICAgIGZvcmVhY2gg
KGFycmF5X2tleXMoJGxhc3RfYnVpbGRfcmVxdWVzdF9ieV9jb21taXRfc2V0KSBhcyAkY29tbWl0
X3NldCkgeworICAgICAgICAkY3VycmVudF9idWlsZF9yZXF1ZXN0ID0gJGxhc3RfYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0WyRjb21taXRfc2V0XTsKKyAgICAgICAgJGxhc3RfZXhpc3Rpbmdf
b3JkZXIgPSAkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVyJ107CisgICAgICAg
ICRvcmRlcl9zaGlmdCA9ICRvcmRlcl9zaGlmdF9ieV9jb21taXRfc2V0WyRjb21taXRfc2V0XTsK
KyAgICAgICAgZm9yICgkaSA9IDEsICRzdGFydGluZ19vcmRlciA9ICRsYXN0X2V4aXN0aW5nX29y
ZGVyICsgJG9yZGVyX3NoaWZ0OyAkaSA8PSAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50
OyAkaSsrKQorICAgICAgICAgICAgZHVwbGljYXRlX2J1aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3Jk
ZXIoJGRiLCAkY3VycmVudF9idWlsZF9yZXF1ZXN0LCAkc3RhcnRpbmdfb3JkZXIgKyAkaSk7Cisg
ICAgfQorICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9z
ZXF1ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9jb21taXRfc2V0KCRkYiwgJGV4aXN0aW5nX2J1
aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkdGFyZ2V0X2Nv
bW1pdF9zZXRfaWQpCit7CisgICAgJGZvdW5kX3RhcmdldCA9IGZhbHNlOworICAgIGZvcmVhY2gg
KCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkY3VycmVudF9idWlsZF9yZXF1ZXN0KSB7Cisg
ICAgICAgIGlmICgkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXSA9
PSAkdGFyZ2V0X2NvbW1pdF9zZXRfaWQpIHsKKyAgICAgICAgICAgICRmb3VuZF90YXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCEkZm91
bmRfdGFyZ2V0KQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ05vQ29tbWl0U2V0SW5UZXN0R3Jv
dXAnKTsKKworICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsKKyAgICBmb3JlYWNoIChhcnJh
eV9yZXZlcnNlKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cywgdHJ1ZSkgYXMgJGN1cnJlbnRfYnVp
bGRfcmVxdWVzdCkgeworICAgICAgICBpZiAoJGN1cnJlbnRfYnVpbGRfcmVxdWVzdFsncmVxdWVz
dF9jb21taXRfc2V0J10gPT0gJHRhcmdldF9jb21taXRfc2V0X2lkKSB7CisgICAgICAgICAgICBm
b3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50OyAkaSsrKQor
ICAgICAgICAgICAgICAgIGR1cGxpY2F0ZV9idWlsZF9yZXF1ZXN0X3dpdGhfbmV3X29yZGVyKCRk
YiwgJGN1cnJlbnRfYnVpbGRfcmVxdWVzdCwgJGN1cnJlbnRfYnVpbGRfcmVxdWVzdFsncmVxdWVz
dF9vcmRlciddICsgJGkgKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgJGRiLT5xdWVyeSgnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1
ZXN0X29yZGVyID0gcmVxdWVzdF9vcmRlciArICQxIFdIRVJFIHJlcXVlc3RfaWQgPSAkMicsCisg
ICAgICAgICAgICAgICAgYXJyYXkoJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCwgJGN1
cnJlbnRfYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9pZCddKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKK30KKworZnVuY3Rpb24gZHVwbGljYXRlX2J1
aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3JkZXIoJGRiLCAkYnVpbGRfcmVxdWVzdCwgJG9yZGVyX292
ZXJ3cml0ZSkKK3sKKyAgICAkZGItPmluc2VydF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVl
c3QnLCBhcnJheSgKKyAgICAgICAgJ3RyaWdnZXJhYmxlJyA9PiAkYnVpbGRfcmVxdWVzdFsncmVx
dWVzdF90cmlnZ2VyYWJsZSddLAorICAgICAgICAncmVwb3NpdG9yeV9ncm91cCcgPT4gJGJ1aWxk
X3JlcXVlc3RbJ3JlcXVlc3RfcmVwb3NpdG9yeV9ncm91cCddLAorICAgICAgICAncGxhdGZvcm0n
ID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3BsYXRmb3JtJ10sCisgICAgICAgICd0ZXN0JyA9
PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF90ZXN0J10sCisgICAgICAgICdncm91cCcgPT4gJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfZ3JvdXAnXSwKKyAgICAgICAgJ29yZGVyJyA9PiAkb3JkZXJf
b3ZlcndyaXRlLAorICAgICAgICAnY29tbWl0X3NldCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVl
c3RfY29tbWl0X3NldCddKSk7CiB9CiAKIG1haW4oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2su
cGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggMjhhMTYxMzAwODRlOGM0ZGFlMTRiZDI5ZjUwZmZl
OGJjZGU4YWM5NC4uMmRjNzQ3Y2JkZTI2NzllM2Y5NmFkNTkwMGIwNmRmMzJhMzc4ZTFhMyAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKQEAgLTEwLDYgKzEw
LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAkYXV0aG9yID0gcmVtb3RlX3VzZXJfbmFtZSgk
ZGF0YSk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRhdGEsICduYW1lJyk7CiAgICAgJHJlcGV0
aXRpb25fY291bnQgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uQ291bnQnKTsKKyAgICAk
cmVwZXRpdGlvbl90eXBlID0gYXJyYXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlvblR5cGUnLCAnYWx0
ZXJuYXRpbmcnKTsKICAgICAkbmVlZHNfbm90aWZpY2F0aW9uID0gYXJyYXlfZ2V0KCRkYXRhLCAn
bmVlZHNOb3RpZmljYXRpb24nLCBGYWxzZSk7CiAgICAgJHRlc3RfZ3JvdXBfbmFtZSA9IGFycmF5
X2dldCgkZGF0YSwgJ3Rlc3RHcm91cE5hbWUnKTsKICAgICAkcmV2aXNpb25fc2V0X2xpc3QgPSBh
cnJheV9nZXQoJGRhdGEsICdyZXZpc2lvblNldHMnKTsKQEAgLTIwLDYgKzIxLDkgQEAgZnVuY3Rp
b24gbWFpbigpIHsKICAgICBpZiAoISRuYW1lKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ01p
c3NpbmdOYW1lJywgYXJyYXkoJ25hbWUnID0+ICRuYW1lKSk7CiAKKyAgICBpZiAoIWluX2FycmF5
KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQor
ICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdy
ZXBldGl0aW9uVHlwZScgPT4gJHJlcGV0aXRpb25fdHlwZSkpOworCiAgICAgJHJhbmdlID0gdmFs
aWRhdGVfYXJndW1lbnRzKCRkYXRhLCBhcnJheSgnc3RhcnRSdW4nID0+ICdpbnQnLCAnZW5kUnVu
JyA9PiAnaW50JykpOwogCiAgICAgJHN0YXJ0X3J1biA9IGVuc3VyZV9yb3dfYnlfaWQoJGRiLCAn
dGVzdF9ydW5zJywgJ3J1bicsICRyYW5nZVsnc3RhcnRSdW4nXSwgJ0ludmFsaWRTdGFydFJ1bics
ICRyYW5nZSk7CkBAIC04NSw3ICs4OSw3IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgICAgICR0
cmlnZ2VyYWJsZV9pZCA9ICR0cmlnZ2VyYWJsZVsnaWQnXTsKICAgICAgICAgJHRlc3RfaWQgPSAk
dHJpZ2dlcmFibGVbJ3Rlc3QnXTsKICAgICAgICAgJGNvbW1pdF9zZXRzID0gY29tbWl0X3NldHNf
ZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdnZXJhYmxlX2lkLCAkcmV2aXNpb25fc2V0X2xp
c3QpOwotICAgICAgICBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAk
Y29tbWl0X3NldHMsICR0YXNrX2lkLCAkdGVzdF9ncm91cF9uYW1lLCAkYXV0aG9yLCAkdHJpZ2dl
cmFibGVfaWQsICRjb25maWdbJ2NvbmZpZ19wbGF0Zm9ybSddLCAkdGVzdF9pZCwgJHJlcGV0aXRp
b25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pOworICAgICAgICBjcmVhdGVfdGVzdF9ncm91
cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkdGVzdF9n
cm91cF9uYW1lLCAkYXV0aG9yLCAkdHJpZ2dlcmFibGVfaWQsICRjb25maWdbJ2NvbmZpZ19wbGF0
Zm9ybSddLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9uX3R5cGUsICRu
ZWVkc19ub3RpZmljYXRpb24pOwogICAgIH0KIAogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9u
KCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVn
ZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCmluZGV4IDc0MjUzZmJl
Nzg2NTliYTJmNmUwOTk5MzMxMDFiYjhhMjlmMzExZGUuLmQyM2IyZmY5NjY4MWM4ZmE4OGVjMGY5
NzNkMTBlYmZmMzcyODg4NTMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAu
cGhwCkBAIC0xOCw2ICsxOCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgICR0YXNrX2lkID0gYXJy
YXlfZ2V0KCRhcmd1bWVudHMsICd0YXNrJyk7CiAgICAgJHRhc2tfbmFtZSA9IGFycmF5X2dldCgk
ZGF0YSwgJ3Rhc2tOYW1lJyk7CiAgICAgJHJlcGV0aXRpb25fY291bnQgPSAkYXJndW1lbnRzWydy
ZXBldGl0aW9uQ291bnQnXTsKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gYXJyYXlfZ2V0KCRkYXRh
LCAncmVwZXRpdGlvblR5cGUnLCAnYWx0ZXJuYXRpbmcnKTsKICAgICAkbmVlZHNfbm90aWZpY2F0
aW9uID0gYXJyYXlfZ2V0KCRkYXRhLCAnbmVlZHNOb3RpZmljYXRpb24nLCBGYWxzZSk7CiAgICAg
JHBsYXRmb3JtX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAncGxhdGZvcm0nKTsKICAgICAkdGVzdF9p
ZCA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3QnKTsKQEAgLTQyLDYgKzQzLDkgQEAgZnVuY3Rpb24g
bWFpbigpCiAgICAgZWxzZSBpZiAoJHJlcGV0aXRpb25fY291bnQgPCAxKQogICAgICAgICBleGl0
X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uQ291bnQnLCBhcnJheSgncmVwZXRpdGlvbkNv
dW50JyA9PiAkcmVwZXRpdGlvbl9jb3VudCkpOwogCisgICAgaWYgKCFpbl9hcnJheSgkcmVwZXRp
dGlvbl90eXBlLCBhcnJheSgnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCcpKSkKKyAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwZXRpdGlvblR5cGUnLCBhcnJheSgncmVwZXRpdGlv
blR5cGUnID0+ICRyZXBldGl0aW9uX3R5cGUpKTsKKwogICAgICR0cmlnZ2VyYWJsZV9pZCA9IE5V
TEw7CiAgICAgaWYgKCR0YXNrX2lkKSB7CiAgICAgICAgICR0YXNrID0gJGRiLT5zZWxlY3RfZmly
c3Rfcm93KCdhbmFseXNpc190YXNrcycsICd0YXNrJywgYXJyYXkoJ2lkJyA9PiAkdGFza19pZCkp
OwpAQCAtODYsNyArOTAsNyBAQCBmdW5jdGlvbiBtYWluKCkKICAgICBpZiAoJHRhc2tfbmFtZSkK
ICAgICAgICAgJHRhc2tfaWQgPSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rh
c2snLCBhcnJheSgnbmFtZScgPT4gJHRhc2tfbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvcikpOwog
Ci0gICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRk
YiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9p
ZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3Rp
ZmljYXRpb24pOworICAgICRncm91cF9pZCA9IGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9y
ZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9yLCAkdHJp
Z2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2NvdW50LCAk
cmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9uKTsKIAogICAgICRkYi0+Y29tbWl0
X3RyYW5zYWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAK
aW5kZXggMzU1ZTZjODVmMTIzYjJjMzU0NDcxMWJmYjYxNzQwMDA3OTM3NjlhYy4uMzE3NWQ3MTBh
N2M3YzY0NTRiZmI3OTYxNmVkZWQ2ODMyOTM5Zjk0NCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRh
dGUtdGVzdC1ncm91cC5waHAKQEAgLTIwLDYgKzIwLDkgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAg
ICAgICAgJHZhbHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gRkFMU0U7CiAgICAgfQog
CisgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2NhbmNlbCcsICRkYXRhKSkKKyAgICAgICAgJHZh
bHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gRkFMU0U7CisKICAgICBpZiAoYXJyYXlf
a2V5X2V4aXN0cygnbWF5TmVlZE1vcmVSZXF1ZXN0cycsICRkYXRhKSkKICAgICAgICAgICR2YWx1
ZXNbJ21heV9uZWVkX21vcmVfcmVxdWVzdHMnXSA9ICRkYXRhWydtYXlOZWVkTW9yZVJlcXVlc3Rz
J107CiAKQEAgLTQ0LDcgKzQ3LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdGYWlsZWRUb1VwZGF0ZVRlc3RHcm91cCcsIGFycmF5KCdpZCcgPT4gJHRlc3Rf
Z3JvdXBfaWQsICd2YWx1ZXMnID0+ICR2YWx1ZXMpKTsKICAgICB9CiAKLSAgICBpZiAoYXJyYXlf
Z2V0KCRkYXRhLCAnaGlkZGVuJykpIHsKKyAgICBpZiAoYXJyYXlfZ2V0KCRkYXRhLCAnaGlkZGVu
JykgfHwgYXJyYXlfZ2V0KCRkYXRhLCAnY2FuY2VsJykpIHsKICAgICAgICAgJGRiLT5xdWVyeV9h
bmRfZ2V0X2FmZmVjdGVkX3Jvd3MoJ1VQREFURSBidWlsZF9yZXF1ZXN0cyBTRVQgcmVxdWVzdF9z
dGF0dXMgPSAkMQogICAgICAgICAgICAgV0hFUkUgcmVxdWVzdF9ncm91cCA9ICQyIEFORCByZXF1
ZXN0X3N0YXR1cyA9ICQzJywgYXJyYXkoJ2NhbmNlbGVkJywgJHRlc3RfZ3JvdXBfaWQsICdwZW5k
aW5nJykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcwppbmRleCBjNTZlMmIw
MDkxNzE4YzA5MDcyNzcxNjI0NDVmN2M5ZWU3YTQ4OTJkLi5iZDcxNzE3ZDI4ZjUxNmY5MDk3NmRh
OTlmMWIzMzQ3YjhhYTYzOGM5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCkBAIC0x
MzUsMTIgKzEzNSwxMiBAQCBjbGFzcyBDb21tb25Db21wb25lbnRCYXNlIHsKICAgICAgICAgICAg
IGVsZW1lbnQuYXBwZW5kQ2hpbGQoQ29tbW9uQ29tcG9uZW50QmFzZS5fY29udGV4dC5jcmVhdGVU
ZXh0Tm9kZShjb250ZW50KSk7CiAgICAgfQogCi0gICAgY3JlYXRlTGluayhjb250ZW50LCB0aXRs
ZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQorICAgIGNy
ZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCwg
dGFiSW5kZXggPSBudWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIENvbW1vbkNvbXBvbmVudEJh
c2UuY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVy
bmFsLCB0YWJJbmRleCk7CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZUxpbmsoY29udGVudCwg
dGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXg9bnVsbCkKKyAg
ICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBp
c0V4dGVybmFsLCB0YWJJbmRleCA9IG51bGwpCiAgICAgewogICAgICAgICB2YXIgdGl0bGUgPSB0
aXRsZU9yQ2FsbGJhY2s7CiAgICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMv
Y3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3Qt
Z3JvdXAtZm9ybS5qcwppbmRleCA4N2IxN2MxNDZkNDUzZTAyYTMwM2RmMmE5MjQyMjM0ZTRhOGU0
YzY5Li4yZmJkYWIzZTJkMDY2MGNmNjdmYWRkZWYwNTE0OWMwOGJhMTc2NjE5IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNv
bmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJhdGlvbi10ZXN0LWdyb3Vw
LWZvcm0uanMKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3MgQ3VzdG9tQ29uZmlndXJhdGlvblRlc3RH
cm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgY29uc3QgdGVzdCA9IGNv
bmZpZ3VyYXRvci50ZXN0cygpWzBdOyAvLyBGSVhNRTogQWRkIHRoZSBzdXBwb3J0IGZvciBzcGVj
aWZ5aW5nIG11bHRpcGxlIHRlc3RzLgogICAgICAgICBjb25zb2xlLmFzc2VydCghIXRoaXMuX2hh
c1Rhc2sgPT09ICF0YXNrTmFtZSk7CiAgICAgICAgIGlmICghdGhpcy5faGFzVGFzaykKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRp
b25Db3VudCwgdGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRhc2tO
YW1lLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGVzdEdyb3VwTmFtZSwgdGhpcy5fcmVwZXRpdGlvbkNv
dW50LCB0aGlzLl9yZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRo
aXMuX25vdGlmeU9uQ29tcGxldGlvbiwgdGFza05hbWUpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9u
Q291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0aGlzLl9u
b3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc3Rh
cnRUZXN0aW5nJywgdGVzdEdyb3VwTmFtZSwgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlzLl9y
ZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9u
Q29tcGxldGlvbik7CiAgICAgfQogCiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3Vz
dG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4
IDA4MWNhOWQyN2QzZGI4YzkzMjBkYjAyODIwNzJlNTcyMWQ3ZGY2YWMuLjFmMzcwNTA1M2JlNDg1
MDc4NjFhM2RlMzBhYTU4ZmFlNTE1MmQ4MGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3Jt
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9j
dXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCkBAIC0yNyw3ICsyNyw4IEBAIGNsYXNzIEN1
c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKIAogICAgIHN0
YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRl
c3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX25hbWUsIHRoaXMuX2NvbXB1dGVD
b21taXRTZXRNYXAoKSwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fbmFtZSwgdGhpcy5fcmVwZXRpdGlv
bkNvdW50LCB0aGlzLl9yZXBldGl0aW9uVHlwZSwKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVD
b21taXRTZXRNYXAoKSwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICB9CiAKICAgICBk
aWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCmlu
ZGV4IGE0M2VkZjM1MDhiY2YwNzQ2MjVkYjk5NjRmNjA0ZGUxODA4Mjk2NGYuLjk4OTI0MTAxMDk5
NmVjMzQyNDNiYTEyZTg1Y2IyNWYwY2VhMDgwNmIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAt
Zm9ybS5qcwpAQCAtMjcsNyArMjcsOCBAQCBjbGFzcyBUZXN0R3JvdXBGb3JtIGV4dGVuZHMgQ29t
cG9uZW50QmFzZSB7CiAKICAgICBzdGFydFRlc3RpbmcoKQogICAgIHsKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlz
Ll9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZVNlbGVj
dCA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlv
blR5cGVTZWxlY3QudmFsdWUsIHRoaXMuX25vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgfQogCiAg
ICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC02NSw3ICs2NiwxMSBAQCBjbGFzcyBUZXN0R3Jv
dXBGb3JtIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICAgICAgPG9wdGlvbj45
PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgPG9wdGlvbj4xMDwvb3B0aW9uPgogICAgICAgICAg
ICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICBpdGVyYXRpb25zIHBlciBzZXQKKyAgICAgICAgICAg
IDxsYWJlbD5pdGVyYXRpb25zIHBlciBzZXQgaW48L2xhYmVsPgorICAgICAgICAgICAgPHNlbGVj
dCBpZD0icmVwZXRpdGlvbi10eXBlIj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVk
IHZhbHVlPSJhbHRlcm5hdGluZyI+YWx0ZXJuYXRlIChBQkFCKTwvb3B0aW9uPgorICAgICAgICAg
ICAgICAgIDxvcHRpb24gdmFsdWU9InNlcXVlbnRpYWwiPnNlcXVlbmNlIChBQUJCKTwvb3B0aW9u
PgorICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICA8aW5wdXQgaWQ9Im5vdGlmeS1v
bi1jb21wbGV0aW9uLWNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZC8+Tm90aWZ5IG9u
IGNvbXBsZXRpb24KICAgICAgICAgYDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcwppbmRleCAx
Nzc2YTgxN2JjMzE5OTY5Mjk3MmE0MGFhNGVkNjhjMWE5NWNkZWVlLi42YTA4NWNhY2UyYzc1N2U4
OTM4MmRkZmVhMTA1MTA5NzM1OWZhYTBkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMKQEAgLTMyNCw3
ICszMjQsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgfQogCi0gICAgc3RhdGljIGFzeW5jIGNyZWF0ZShu
YW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdyb3VwTmFtZT1udWxsLCByZXBldGl0aW9u
Q291bnQ9MCwgbm90aWZ5T25Db21wbGV0aW9uPWZhbHNlKQorICAgIHN0YXRpYyBhc3luYyBjcmVh
dGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRlc3RHcm91cE5hbWUgPSBudWxsLCByZXBl
dGl0aW9uQ291bnQgPSAwLCByZXBldGl0aW9uVHlwZSA9ICdhbHRlcm5hdGluZycsIG5vdGlmeU9u
Q29tcGxldGlvbiA9IGZhbHNlKQogICAgIHsKICAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHtu
YW1lLCBzdGFydFJ1bjogc3RhcnRQb2ludC5pZCwgZW5kUnVuOiBlbmRQb2ludC5pZH07CiAgICAg
ICAgIGlmICh0ZXN0R3JvdXBOYW1lKSB7CkBAIC0zMzMsNiArMzMzLDcgQEAgY2xhc3MgQW5hbHlz
aXNUYXNrIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzWydy
ZXBldGl0aW9uQ291bnQnXSA9IHJlcGV0aXRpb25Db3VudDsKICAgICAgICAgICAgIHBhcmFtZXRl
cnNbJ3Rlc3RHcm91cE5hbWUnXSA9IHRlc3RHcm91cE5hbWU7CiAgICAgICAgICAgICBwYXJhbWV0
ZXJzWyduZWVkc05vdGlmaWNhdGlvbiddID0gbm90aWZ5T25Db21wbGV0aW9uOworICAgICAgICAg
ICAgcGFyYW1ldGVyc1sncmVwZXRpdGlvblR5cGUnXSA9IHJlcGV0aXRpb25UeXBlOwogICAgICAg
ICB9CiAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgcmV0dXJu
IEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzcG9uc2UudGFza0lkLCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVl
c3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1y
ZXF1ZXN0LmpzCmluZGV4IGYwOTVlMGQ3YWJlODZhMDI2NTIxNTE2MTI3ODRkMjFkMTAzYTU2MTYu
LjgyMzAyNjZhNjRkNjQxMDU3ZDlmZjBiNzRmYjhhOWMzZDMyMjNhN2IgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVx
dWVzdC5qcwpAQCAtMTgsNyArMTgsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRh
TW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9wbGF0Zm9ybSA9IG9iamVjdC5wbGF0Zm9ybTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIW9iamVjdC50ZXN0IHx8IG9iamVjdC50ZXN0IGluc3Rh
bmNlb2YgVGVzdCk7CiAgICAgICAgIHRoaXMuX3Rlc3QgPSBvYmplY3QudGVzdDsKLSAgICAgICAg
dGhpcy5fb3JkZXIgPSBvYmplY3Qub3JkZXI7CisgICAgICAgIHRoaXMuX29yZGVyID0gK29iamVj
dC5vcmRlcjsKICAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0LmNvbW1pdFNldCBpbnN0YW5j
ZW9mIENvbW1pdFNldCk7CiAgICAgICAgIHRoaXMuX2NvbW1pdFNldCA9IG9iamVjdC5jb21taXRT
ZXQ7CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IG9iamVjdC5zdGF0dXM7CkBAIC0zMSw3ICszMSw3
IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAKICAgICB1
cGRhdGVTaW5nbGV0b24ob2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fb3JkZXIgPT0gb2JqZWN0Lm9yZGVyKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoK3RoaXMu
X29yZGVyIDw9ICtvYmplY3Qub3JkZXIpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9j
b21taXRTZXQgPT0gb2JqZWN0LmNvbW1pdFNldCk7CiAKICAgICAgICAgY29uc3QgdGVzdEdyb3Vw
ID0gb2JqZWN0LnRlc3RHcm91cDsKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0
IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgdGhpcy5fc3RhdHVzVXJsID0gb2Jq
ZWN0LnVybDsKICAgICAgICAgdGhpcy5fYnVpbGRJZCA9IG9iamVjdC5idWlsZDsKICAgICAgICAg
dGhpcy5fc3RhdHVzRGVzY3JpcHRpb24gPSBvYmplY3Quc3RhdHVzRGVzY3JpcHRpb247CisgICAg
ICAgIHRoaXMuX29yZGVyID0gK29iamVjdC5vcmRlcjsKICAgICB9CiAKICAgICB0cmlnZ2VyYWJs
ZSgpIHsgcmV0dXJuIHRoaXMuX3RyaWdnZXJhYmxlOyB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwppbmRleCA5N2U4
YmM4ZWUzY2RhOWE2ZjY0MTYyMzUzNGU2N2ZiODAwMzk5ODJiLi44NDUxZjNmMmY3M2UzYmYyODQz
MjA0MTc4N2QyYmU3MDk0ZTkxNDZkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKQEAgLTExLDcgKzExLDggQEAg
Y2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX2lz
SGlkZGVuID0gb2JqZWN0LmhpZGRlbjsKICAgICAgICAgdGhpcy5fbmVlZHNOb3RpZmljYXRpb24g
PSBvYmplY3QubmVlZHNOb3RpZmljYXRpb247CiAgICAgICAgIHRoaXMuX21heU5lZWRNb3JlUmVx
dWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0czsKLSAgICAgICAgdGhpcy5faW5pdGlh
bFJlcGV0aXRpb25Db3VudCA9IG9iamVjdC5pbml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgICAg
ICB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gK29iamVjdC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50OworICAgICAgICB0aGlzLl9yZXBldGl0aW9uVHlwZSA9IG9iamVjdC5yZXBldGl0aW9u
VHlwZTsKICAgICAgICAgdGhpcy5fYnVpbGRSZXF1ZXN0cyA9IFtdOwogICAgICAgICB0aGlzLl9v
cmRlckJ1aWxkUmVxdWVzdHNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4u
LmJ1aWxkUmVxdWVzdHMpID0+IHsKICAgICAgICAgICAgIHJldHVybiBidWlsZFJlcXVlc3RzLnNv
cnQoKGEsIGIpID0+IGEub3JkZXIoKSAtIGIub3JkZXIoKSk7CkBAIC0zNiw3ICszNyw4IEBAIGNs
YXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlzLl9uZWVk
c05vdGlmaWNhdGlvbiA9IG9iamVjdC5uZWVkc05vdGlmaWNhdGlvbjsKICAgICAgICAgdGhpcy5f
bm90aWZpY2F0aW9uU2VudEF0ID0gb2JqZWN0Lm5vdGlmaWNhdGlvblNlbnRBdCA/IG5ldyBEYXRl
KG9iamVjdC5ub3RpZmljYXRpb25TZW50QXQpIDogbnVsbDsKICAgICAgICAgdGhpcy5fbWF5TmVl
ZE1vcmVSZXF1ZXN0cyA9IG9iamVjdC5tYXlOZWVkTW9yZVJlcXVlc3RzOwotICAgICAgICB0aGlz
Ll9pbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7
CisgICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSArb2JqZWN0LmluaXRpYWxS
ZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25UeXBlID0gb2JqZWN0LnJl
cGV0aXRpb25UeXBlOwogICAgIH0KIAogICAgIHRhc2soKSB7IHJldHVybiBBbmFseXNpc1Rhc2su
ZmluZEJ5SWQodGhpcy5fdGFza0lkKTsgfQpAQCAtNDYsNiArNDgsNyBAQCBjbGFzcyBUZXN0R3Jv
dXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICBuZWVkc05vdGlmaWNhdGlvbigpIHsgcmV0
dXJuIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uOyB9CiAgICAgbWF5TmVlZE1vcmVSZXF1ZXN0cygp
IHsgcmV0dXJuIHRoaXMuX21heU5lZWRNb3JlUmVxdWVzdHM7IH0KICAgICBpbml0aWFsUmVwZXRp
dGlvbkNvdW50KCkgeyByZXR1cm4gdGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudDsgfQorICAg
IHJlcGV0aXRpb25UeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVwZXRpdGlvblR5cGU7IH0KICAgICBu
b3RpZmljYXRpb25TZW50QXQoKSB7IHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25TZW50QXQ7IH0K
ICAgICBhdXRob3IoKSB7IHJldHVybiB0aGlzLl9hdXRob3JOYW1lOyB9CiAgICAgYWRkQnVpbGRS
ZXF1ZXN0KHJlcXVlc3QpCkBAIC04MSwxMSArODQsMTAgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vcmRlckJ1aWxkUmVxdWVz
dHNMYXppbHkuZXZhbHVhdGUoLi4udGhpcy5fYnVpbGRSZXF1ZXN0cyk7CiAgICAgfQogCi0gICAg
cmVwZXRpdGlvbkNvdW50KCkKKyAgICByZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0
U2V0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9idWlsZFJlcXVlc3RzLmxlbmd0aCkKICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0aGlzLl9idWls
ZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOwogICAgICAgICBsZXQgY291bnQgPSAwOwogICAgICAg
ICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgdGhpcy5fYnVpbGRSZXF1ZXN0cykgewogICAgICAgICAg
ICAgaWYgKHJlcXVlc3QuaXNUZXN0KCkgJiYgcmVxdWVzdC5jb21taXRTZXQoKSA9PSBjb21taXRT
ZXQpCkBAIC05NCw2ICs5Niw0OSBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKICAgICAgICAgcmV0dXJuIGNvdW50OwogICAgIH0KIAorICAgIGhhc1JldHJpZXMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoY29t
bWl0U2V0ID0+IHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiB0
aGlzLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CisgICAgfQorCisgICAgYWRkaXRpb25hbFJl
cGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudChjb21taXRTZXQpCisg
ICAgeworICAgICAgICBjb25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9IHRoaXMucmVx
dWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5maWx0ZXIoCisgICAgICAgICAgICAocmVxdWVz
dCkgPT4gcmVxdWVzdC5pc1Rlc3QoKSAmJiAocmVxdWVzdC5oYXNDb21wbGV0ZWQoKSB8fCAhcmVx
dWVzdC5oYXNGaW5pc2hlZCgpKSkubGVuZ3RoOworICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwg
dGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3Vu
dCk7CisgICAgfQorCisgICAgc3VjY2Vzc2Z1bFRlc3RDb3VudChjb21taXRTZXQpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRl
cigocmVxdWVzdCkgPT4gcmVxdWVzdC5pc1Rlc3QoKSAmJiByZXF1ZXN0Lmhhc0NvbXBsZXRlZCgp
KS5sZW5ndGg7CisgICAgfQorCisgICAgaXNGaXJzdFRlc3RSZXF1ZXN0KGJ1aWxkUmVxdWVzdCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpLmZpbHRl
cigocmVxdWVzdCkgPT4gcmVxdWVzdC5pc1Rlc3QoKSlbMF0gPT0gYnVpbGRSZXF1ZXN0OworICAg
IH0KKworICAgIHByZWNlZGluZ0J1aWxkUmVxdWVzdChidWlsZFJlcXVlc3QpCisgICAgeworICAg
ICAgICBjb25zdCBvcmRlcmVkQnVpbGRSZXF1ZXN0cyA9IHRoaXMuX29yZGVyZWRCdWlsZFJlcXVl
c3RzKCk7CisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdEluZGV4ID0gb3JkZXJlZEJ1aWxkUmVx
dWVzdHMuaW5kZXhPZihidWlsZFJlcXVlc3QpOworICAgICAgICBjb25zb2xlLmFzc2VydChidWls
ZFJlcXVlc3RJbmRleCA+PSAwKTsKKyAgICAgICAgcmV0dXJuIG9yZGVyZWRCdWlsZFJlcXVlc3Rz
W2J1aWxkUmVxdWVzdEluZGV4IC0gMV07CisgICAgfQorCisgICAgcmV0cnlDb3VudEZvckNvbW1p
dFNldChjb21taXRTZXQpCisgICAgeworICAgICAgICBjb25zdCByZXRyeUNvdW50ID0gdGhpcy5y
ZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSAtIHRoaXMuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChyZXRyeUNvdW50ID49IDApOwor
ICAgICAgICByZXR1cm4gcmV0cnlDb3VudDsKKyAgICB9CisKKyAgICByZXRyeUNvdW50c0FyZVNh
bWVGb3JBbGxDb21taXRTZXRzKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHJldHJ5Q291bnRGb3JG
aXJzdENvbW1pdFNldCA9IHRoaXMucmV0cnlDb3VudEZvckNvbW1pdFNldCh0aGlzLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVswXSk7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RlZENvbW1pdFNl
dHMoKS5ldmVyeShjb21taXRTZXQgPT4gdGhpcy5yZXRyeUNvdW50Rm9yQ29tbWl0U2V0KGNvbW1p
dFNldCkgPT0gcmV0cnlDb3VudEZvckZpcnN0Q29tbWl0U2V0KTsKKyAgICB9CisKICAgICByZXF1
ZXN0ZWRDb21taXRTZXRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlUmVx
dWVzdGVkQ29tbWl0U2V0c0xhemlseS5ldmFsdWF0ZSguLi50aGlzLl9vcmRlcmVkQnVpbGRSZXF1
ZXN0cygpKTsKQEAgLTEwMiw3ICsxNDcsNiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0IHsKICAgICBzdGF0aWMgX2NvbXB1dGVSZXF1ZXN0ZWRDb21taXRTZXRzKC4uLm9y
ZGVyZWRCdWlsZFJlcXVlc3RzKQogICAgIHsKICAgICAgICAgY29uc3QgcmVxdWVzdGVkQ29tbWl0
U2V0cyA9IFtdOwotICAgICAgICBjb25zdCBjb21taXRTZXRMYWJlbE1hcCA9IG5ldyBNYXA7CiAg
ICAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiBvcmRlcmVkQnVpbGRSZXF1ZXN0cykgewogICAg
ICAgICAgICAgY29uc3Qgc2V0ID0gcmVxdWVzdC5jb21taXRTZXQoKTsKICAgICAgICAgICAgIGlm
ICghcmVxdWVzdGVkQ29tbWl0U2V0cy5pbmNsdWRlcyhzZXQpKQpAQCAtMjE5LDYgKzI2MywxNCBA
QCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgfSk7CiAg
ICAgfQogCisgICAgYXN5bmMgY2FuY2VsUGVuZGluZ1JlcXVlc3RzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAgICAgICAgZ3JvdXA6IHRo
aXMuaWQoKSwKKyAgICAgICAgICAgIGNhbmNlbDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgfQor
CiAgICAgYXN5bmMgZGlkU2VuZE5vdGlmaWNhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
YXdhaXQgdGhpcy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKQEAgLTIyOCwxMSArMjgwLDE0IEBAIGNs
YXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsKICAgICB9
CiAKLSAgICBhc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRDb3VudCkKKyAgICBhc3luYyBh
ZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRDb3VudCwgY29tbWl0U2V0ID0gbnVsbCkKICAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb21taXRTZXQgfHwgdGhpcy5yZXBldGl0aW9uVHlwZSgp
ID09ICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb21taXRTZXQgfHwg
Y29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKICAgICAgICAgcmV0dXJuIGF3YWl0IHRo
aXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CiAgICAgICAgICAgICBncm91cDogdGhpcy5pZCgpLAog
ICAgICAgICAgICAgYWRkQ291bnQsCisgICAgICAgICAgICBjb21taXRTZXQ6IGNvbW1pdFNldCA/
IGNvbW1pdFNldC5pZCgpIDogbnVsbAogICAgICAgICB9LCAnYWRkLWJ1aWxkLXJlcXVlc3RzJyk7
CiAgICAgfQogCkBAIC0yNDQsMzkgKzI5OSwxMjEgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMg
TGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVX
aXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNv
dW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNy
ZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0
aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24p
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxlbmd0aCA9PSAyKTsK
ICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlzaW9uU2V0c0Zyb21D
b21taXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFza05hbWUs
IG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQo
KSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMsIG5lZWRzTm90aWZpY2F0aW9uOiAhIW5v
dGlmeU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFtcykudGhlbigoZGF0YSkgPT4gewotICAgICAg
ICAgICAgcmV0dXJuIEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsndGFza0lkJ10sIHRydWUp
OwotICAgICAgICB9KS50aGVuKCh0YXNrKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5m
ZXRjaEZvclRhc2sodGFzay5pZCgpKS50aGVuKCgpID0+IHRhc2spOwotICAgICAgICB9KTsKKyAg
ICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywgeworICAgICAgICAgICAgdGFza05hbWUsIG5hbWU6IGdyb3VwTmFtZSwg
cGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50
LCByZXZpc2lvblNldHMsCisgICAgICAgICAgICByZXBldGl0aW9uVHlwZSwgbmVlZHNOb3RpZmlj
YXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9ufSk7CisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2Fp
dCBBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKGRhdGFbJ3Rhc2tJZCddLCAvKiBpZ25vcmVDYWNoZSAq
LyB0cnVlKTsKKyAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEZvclRhc2sodGFzay5pZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHRhc2s7CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZVdpdGhDdXN0b21D
b25maWd1cmF0aW9uKHRhc2ssIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25D
b3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKQorICAgIHN0YXRpYyBhc3luYyBj
cmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0YXNrLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBO
YW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBub3RpZnlP
bkNvbXBsZXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmxl
bmd0aCA9PSAyKTsKICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gQ29tbWl0U2V0LnJldmlz
aW9uU2V0c0Zyb21Db21taXRTZXRzKGNvbW1pdFNldHMpOwotICAgICAgICBjb25zdCBwYXJhbXMg
PSB7dGFzazogdGFzay5pZCgpLCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5p
ZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzLCBuZWVk
c05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRpb259OwotICAgICAgICByZXR1cm4gUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMpLnRoZW4o
KGRhdGEpID0+IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0
YXNrSWQnXSwgdHJ1ZSk7Ci0gICAgICAgIH0pOworICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQg
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7CisgICAgICAg
ICAgICB0YXNrOiB0YXNrLmlkKCksIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3Jt
LmlkKCksIHRlc3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwK
KyAgICAgICAgICAgIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25D
b21wbGV0aW9ufSk7CisgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hCeUlkKGRhdGFbJ3Rlc3RHcm91
cElkJ10sIC8qIGlnbm9yZUNhY2hlICovIHRydWUpOworICAgICAgICByZXR1cm4gdGhpcy5maW5k
QWxsQnlUYXNrKGRhdGFbJ3Rhc2tJZCddKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlQW5k
UmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRz
LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZUFuZFJlZmV0Y2hU
ZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNv
bW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMg
PSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAg
ICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcs
IHsKLSAgICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwKLSAgICAgICAgICAgIG5hbWU6IG5hbWUs
Ci0gICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IHJlcGV0aXRpb25Db3VudCwKLSAgICAgICAg
ICAgIHJldmlzaW9uU2V0czogcmV2aXNpb25TZXRzLAotICAgICAgICAgICAgbmVlZHNOb3RpZmlj
YXRpb246ICEhbm90aWZ5T25Db21wbGV0aW9uLAotICAgICAgICB9KS50aGVuKChkYXRhKSA9PiB0
aGlzLmZldGNoRm9yVGFzayhkYXRhWyd0YXNrSWQnXSwgdHJ1ZSkpOworICAgICAgICBjb25zdCBk
YXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LCB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCksIG5hbWUsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIHJldmlzaW9uU2V0cywKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbgorICAgICAgICB9KTsKKyAgICAgICAgYXdhaXQgdGhp
cy5mZXRjaEJ5SWQoZGF0YVsndGVzdEdyb3VwSWQnXSwgLyogaWdub3JlQ2FjaGUgKi8gdHJ1ZSk7
CisgICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGxCeVRhc2soZGF0YVsndGFza0lkJ10pOworICAg
IH0KKworICAgIGFzeW5jIHJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZyhtYXhSZXRyeUZh
Y3RvcikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBpZiAodGhpcy5pc0hpZGRlbigpKSB7Cisg
ICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHtyZXRyeUNv
dW50LCBzdG9wRnV0dXJlUmV0cmllc30gPSBhd2FpdCB0aGlzLnNjaGVkdWxlUmV0cmllc0lmTmVj
ZXNzYXJ5KG1heFJldHJ5RmFjdG9yKTsKKworICAgICAgICBpZiAoc3RvcEZ1dHVyZVJldHJpZXMp
CisgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7
CisKKyAgICAgICAgcmV0dXJuIHJldHJ5Q291bnQ7CisgICAgfQorCisgICAgYXN5bmMgc2NoZWR1
bGVSZXRyaWVzSWZOZWNlc3NhcnkobWF4UmV0cnlGYWN0b3IpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydChbJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnXS5pbmNsdWRlcyh0aGlzLnJl
cGV0aXRpb25UeXBlKCkpKTsKKyAgICAgICAgY29uc3QgcmV0cnlMaW1pdCA9IG1heFJldHJ5RmFj
dG9yICogdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCk7CisgICAgICAgIGlmICh0aGlzLnJl
cGV0aXRpb25UeXBlKCkgPT0gJ2FsdGVybmF0aW5nJykKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVBbHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3JvdXAocmV0cnlMaW1pdCk7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jcmVhdGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91cChyZXRy
eUxpbWl0KTsKKyAgICB9CisKKyAgICBhc3luYyBfY3JlYXRlQWx0ZXJuYXRpbmdSZXRyaWVzRm9y
VGVzdEdyb3VwKHJldHJ5TGltaXQpCisgICAgeworICAgICAgICBjb25zdCBhZGRpdGlvbmFsUmVw
ZXRpdGlvbk5lZWRlZCA9IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnJlZHVjZSgKKyAgICAg
ICAgICAgIChjdXJyZW50TWF4LCBjb21taXRTZXQpID0+IE1hdGgubWF4KHRoaXMuYWRkaXRpb25h
bFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudChjb21taXRTZXQp
LCBjdXJyZW50TWF4KSwgMCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFkZGl0aW9uYWxSZXBl
dGl0aW9uTmVlZGVkIDw9IHRoaXMuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKKworICAgICAg
ICBjb25zdCB3aWxsRXhjZWVkUmV0cnlMaW1pdCA9IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygp
LnNvbWUoY29tbWl0U2V0ID0+CisgICAgICAgICAgICBhZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRl
ZCArIHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkgPiByZXRyeUxp
bWl0KTsKKworICAgICAgICBpZiAoIWFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkIHx8IHdpbGxF
eGNlZWRSZXRyeUxpbWl0KQorICAgICAgICAgICAgcmV0dXJuIHtyZXRyeUNvdW50OiAwLCBzdG9w
RnV0dXJlUmV0cmllczogdHJ1ZX07CisKKyAgICAgICAgY29uc3QgaGFzVW5maW5pc2hlZEJ1aWxk
UmVxdWVzdCA9IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoKHNldCkgPT4KKyAgICAg
ICAgICAgIHRoaXMucmVxdWVzdHNGb3JDb21taXRTZXQoc2V0KS5zb21lKChyZXF1ZXN0KSA9PiBy
ZXF1ZXN0LmlzVGVzdCgpICYmICFyZXF1ZXN0Lmhhc0ZpbmlzaGVkKCkpKTsKKworICAgICAgICBj
b25zdCBlYWNoQ29tbWl0U2V0SGFzQ29tcGxldGVkQXRMZWFzdE9uZVRlc3QgPSB0aGlzLnJlcXVl
c3RlZENvbW1pdFNldHMoKS5ldmVyeSh0aGlzLnN1Y2Nlc3NmdWxUZXN0Q291bnQuYmluZCh0aGlz
KSk7CisKKyAgICAgICAgaWYgKGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgJiYgIWVhY2hDb21t
aXRTZXRIYXNDb21wbGV0ZWRBdExlYXN0T25lVGVzdCkKKyAgICAgICAgICAgIHJldHVybiB7cmV0
cnlDb3VudDogMCwgc3RvcEZ1dHVyZVJldHJpZXM6IGZhbHNlfTsKKworICAgICAgICBpZighZWFj
aENvbW1pdFNldEhhc0NvbXBsZXRlZEF0TGVhc3RPbmVUZXN0KQorICAgICAgICAgICAgcmV0dXJu
IHtyZXRyeUNvdW50OiAwLCBzdG9wRnV0dXJlUmV0cmllczogdHJ1ZX07CisKKyAgICAgICAgYXdh
aXQgdGhpcy5hZGRNb3JlQnVpbGRSZXF1ZXN0cyhhZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRlZCk7
CisgICAgICAgIHJldHVybiB7cmV0cnlDb3VudDogYWRkaXRpb25hbFJlcGV0aXRpb25OZWVkZWQs
IHN0b3BGdXR1cmVSZXRyaWVzOiB0cnVlfTsKKyAgICB9CisKKyAgICBhc3luYyBfY3JlYXRlU2Vx
dWVudGlhbFJldHJpZXNGb3JUZXN0R3JvdXAocmV0cnlMaW1pdCkKKyAgICB7CisgICAgICAgIGNv
bnN0IGxhc3RJdGVtID0gKGFycmF5KSA9PiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsKKyAgICAg
ICAgY29uc3QgY29tbWl0U2V0cyA9IHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChjb21taXRTZXRzLmV2ZXJ5KChjdXJyZW50U2V0LCBpbmRleCkgPT4K
KyAgICAgICAgICAgICFpbmRleCB8fCBsYXN0SXRlbSh0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0
KGNvbW1pdFNldHNbaW5kZXggLSAxXSkpLm9yZGVyKCkgPCB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0
U2V0KGN1cnJlbnRTZXQpWzBdLm9yZGVyKCkpKTsKKworICAgICAgICBjb25zdCBhbGxUZXN0UmVx
dWVzdHNIYXZlRmFpbGVkRm9yU29tZUNvbW1pdFNldCA9IGNvbW1pdFNldHMuc29tZShjb21taXRT
ZXQgPT4KKyAgICAgICAgICAgIHRoaXMucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KS5l
dmVyeShyZXF1ZXN0ID0+ICFyZXF1ZXN0LmlzVGVzdCgpIHx8IHJlcXVlc3QuaGFzRmFpbGVkKCkp
KTsKKworICAgICAgICBpZiAoYWxsVGVzdFJlcXVlc3RzSGF2ZUZhaWxlZEZvclNvbWVDb21taXRT
ZXQpCisgICAgICAgICAgICByZXR1cm4ge3JldHJ5Q291bnQ6IDAsIHN0b3BGdXR1cmVSZXRyaWVz
OiB0cnVlfTsKKworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBjb21taXRTZXRzKSB7
CisgICAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzZnVsVGVzdENvdW50KGNvbW1pdFNldCkgPj0g
dGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsUmVwZXRpdGlvbiA9IHRoaXMuYWRkaXRpb25h
bFJlcGV0aXRpb25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudChjb21taXRTZXQp
OworCisgICAgICAgICAgICBpZiAoYWRkaXRpb25hbFJlcGV0aXRpb24gKyB0aGlzLnJlcGV0aXRp
b25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpID4gcmV0cnlMaW1pdCkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGRNb3JlQnVpbGRSZXF1
ZXN0cyhhZGRpdGlvbmFsUmVwZXRpdGlvbiwgY29tbWl0U2V0KTsKKyAgICAgICAgICAgIHJldHVy
biB7cmV0cnlDb3VudDogYWRkaXRpb25hbFJlcGV0aXRpb24sIHN0b3BGdXR1cmVSZXRyaWVzOiB0
cnVlfTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB7cmV0cnlDb3VudDogMCwgc3RvcEZ1
dHVyZVJldHJpZXM6IHRydWV9OwogICAgIH0KIAogICAgIHN0YXRpYyBmaW5kQWxsQnlUYXNrKHRh
c2tJZCkKQEAgLTI4NCw2ICs0MjEsMTMgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxl
ZE9iamVjdCB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuYWxsKCkuZmlsdGVyKCh0ZXN0R3Jv
dXApID0+IHRlc3RHcm91cC5fdGFza0lkID09IHRhc2tJZCk7CiAgICAgfQogCisgICAgc3RhdGlj
IGFzeW5jIGZldGNoQnlJZCh0ZXN0R3JvdXBJZCwgaWdub3JlQ2FjaGUgPSBmYWxzZSkKKyAgICB7
CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNhY2hlZEZldGNoKGAvYXBpL3Rlc3Qt
Z3JvdXBzLyR7dGVzdEdyb3VwSWR9YCwgeyB9LCBpZ25vcmVDYWNoZSk7CisgICAgICAgIHRoaXMu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZmluZEJ5SWQodGVzdEdyb3VwSWQpOworICAgIH0KKwogICAgIHN0YXRpYyBmZXRjaEZv
clRhc2sodGFza0lkLCBpZ25vcmVDYWNoZSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuY2FjaGVkRmV0Y2goJy9hcGkvdGVzdC1ncm91cHMnLCB7dGFzazogdGFza0lkfSwgaWdu
b3JlQ2FjaGUpLnRoZW4odGhpcy5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzLmJp
bmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwppbmRleCAzZjRmZWZmZjI3YTQz
ODM2NDMwNWJiYjgzZDdiMTZiMzI0MDVlYzcxLi5mYmQwNDBiZjFlM2VmOGM0Y2IyOTg3MWRkZDAy
YTFjMTFlMGI1YzcwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwpAQCAtMjQsOCArMjQs
OCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsK
IAogICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQogICAgIHsKLSAgICAgICAgdGhpcy5wYXJ0
KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQs
IG5hbWUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7Ci0gICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291
bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgdGhpcy5wYXJ0
KCdmb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIChuYW1lLCByZXBldGl0aW9u
Q291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikg
PT4geworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFt
ZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlP
bkNvbXBsZXRpb24pOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTEwNiw4ICsxMDYsOCBAQCBj
bGFzcyBBbmFseXNpc1Rhc2tSZXN1bHRzUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAg
ICAgICByZXBvc2l0b3J5UGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHRo
aXMuZW5xdWV1ZVRvUmVuZGVyKCkpOwogICAgICAgICB0aGlzLnBhcnQoJ2NvbW1pdC12aWV3ZXIn
KS5zZXRTaG93UmVwb3NpdG9yeU5hbWUoZmFsc2UpOwogCi0gICAgICAgIHRoaXMucGFydCgnZm9y
bScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBuYW1l
LCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEFjdGlvbignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBj
b21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgIHRoaXMucGFydCgnZm9y
bScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAobmFtZSwgcmVwZXRpdGlvbkNvdW50
LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJl
cGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21w
bGV0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgY2xhc3Mg
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAg
ICAgICB0aGlzLl9jdXJyZW50R3JvdXAgPSBjdXJyZW50R3JvdXA7CiAgICAgICAgIGNvbnN0IGZv
cm0gPSB0aGlzLnBhcnQoJ2Zvcm0nKTsKICAgICAgICAgaWYgKCFmb3JtLmhhc0NvbW1pdFNldHMo
KSAmJiBjdXJyZW50R3JvdXApCi0gICAgICAgICAgICBmb3JtLnNldENvbmZpZ3VyYXRpb25zKGN1
cnJlbnRHcm91cC50ZXN0KCksIGN1cnJlbnRHcm91cC5wbGF0Zm9ybSgpLCBjdXJyZW50R3JvdXAu
cmVwZXRpdGlvbkNvdW50KCksIGN1cnJlbnRHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpOwor
ICAgICAgICAgICAgZm9ybS5zZXRDb25maWd1cmF0aW9ucyhjdXJyZW50R3JvdXAudGVzdCgpLCBj
dXJyZW50R3JvdXAucGxhdGZvcm0oKSwgY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSwgY3VycmVudEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSk7CiAgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCkBAIC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAg
ICAgICAgfQogICAgICAgICBgOwogICAgIH0KLX07Cit9CiAKIENvbXBvbmVudEJhc2UuZGVmaW5l
RWxlbWVudCgnYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3ItcGFuZScsIEFuYWx5c2lzVGFza0Nv
bmZpZ3VyYXRvclBhbmUpOwogCkBAIC0yNjcsMTQgKzI2NywxNCBAQCBjbGFzcyBBbmFseXNpc1Rh
c2tUZXN0R3JvdXBQYW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgZGlkQ29uc3RydWN0
U2hhZG93VHJlZSgpCiAgICAgewogICAgICAgICB0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJyku
b25jbGljayA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3RvZ2dsZVRlc3RHcm91cFZpc2li
aWxpdHknLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsKLSAgICAgICAgdGhpcy5wYXJ0KCdyZXRy
eS1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQs
IG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlv
bigncmV0cnlUZXN0R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCByZXBldGl0aW9uQ291
bnQsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgIHRoaXMucGFydCgncmV0cnktZm9ybScp
Lmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCByZXBldGl0
aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoQWN0aW9uKCdyZXRyeVRlc3RHcm91cCcsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAsIHJlcGV0
aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgICAg
IH0pOwotICAgICAgICB0aGlzLnBhcnQoJ2Jpc2VjdC1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0
YXJ0VGVzdGluZycsIChyZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewor
ICAgICAgICB0aGlzLnBhcnQoJ2Jpc2VjdC1mb3JtJykubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVz
dGluZycsIChyZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRp
b24pID0+IHsKICAgICAgICAgICAgIGNvbnN0IGJpc2VjdGluZ0NvbW1pdFNldCA9IHRoaXMuX2Jp
c2VjdGluZ0NvbW1pdFNldEJ5VGVzdEdyb3VwLmdldCh0aGlzLl9jdXJyZW50VGVzdEdyb3VwKTsK
ICAgICAgICAgICAgIGNvbnN0IFtvbmVDb21taXRTZXQsIGFub3RoZXJDb21taXRTZXRdID0gdGhp
cy5fY3VycmVudFRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAgICAgICBj
b25zdCBjb21taXRTZXRzID0gW29uZUNvbW1pdFNldCwgYmlzZWN0aW5nQ29tbWl0U2V0LCBhbm90
aGVyQ29tbWl0U2V0XTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2Jpc2VjdFRl
c3RHcm91cCcsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25D
b3VudCwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rp
b24oJ2Jpc2VjdFRlc3RHcm91cCcsIHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAsIGNvbW1pdFNldHMs
IHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAg
ICAgICAgIH0pOwogICAgIH0KIApAQCAtMzY1LDI4ICszNjUsNDYgQEAgY2xhc3MgQW5hbHlzaXNU
YXNrVGVzdEdyb3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBjb25zdCBz
ZWxlY3RlZCA9IHRoaXMuY29udGVudCgndGVzdC1ncm91cC1saXN0JykucXVlcnlTZWxlY3Rvcign
LnNlbGVjdGVkJyk7CiAgICAgICAgIGlmIChzZWxlY3RlZCkKICAgICAgICAgICAgIHNlbGVjdGVk
LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7Ci0gICAgICAgIGlmIChjdXJyZW50R3JvdXAp
Ci0gICAgICAgICAgICB0aGlzLl90ZXN0R3JvdXBNYXAuZ2V0KGN1cnJlbnRHcm91cCkubGlzdEl0
ZW0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKIAogICAgICAgICBpZiAoY3VycmVudEdyb3Vw
KSB7CisgICAgICAgICAgICB0aGlzLl90ZXN0R3JvdXBNYXAuZ2V0KGN1cnJlbnRHcm91cCkubGlz
dEl0ZW0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKICAgICAgICAgICAgIHRoaXMucGFydCgn
cmV0cnktZm9ybScpLnNldFJlcGV0aXRpb25Db3VudChjdXJyZW50R3JvdXAuaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpKTsKICAgICAgICAgICAgIHRoaXMucGFydCgnYmlzZWN0LWZvcm0nKS5zZXRS
ZXBldGl0aW9uQ291bnQoY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7Ci0g
ICAgICAgICAgICBjb25zdCBzdGF0dXNTdW1tYXJ5ID0gYCR7Y3VycmVudEdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKX0gcmVxdWVzdGVkLCAke2N1cnJlbnRHcm91cC5yZXBldGl0aW9uQ291
bnQoKSAtIGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IGFkZGVkIGR1ZSB0
byBmYWlsdXJlcy5gOwotICAgICAgICAgICAgdGhpcy5jb250ZW50KCdzdGF0dXMtc3VtbWFyeScp
LmlubmVySFRNTCA9IHN0YXR1c1N1bW1hcnk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50R3Jv
dXAuaGFzUmV0cmllcygpKQorICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlz
LmNvbnRlbnQoJ3JldHJ5LXN1bW1hcnknKSwgdGhpcy5fcmV0cnlTdW1tYXJ5KGN1cnJlbnRHcm91
cCkpOwogCiAgICAgICAgICAgICBjb25zdCBhdXRob3JlZEJ5ID0gY3VycmVudEdyb3VwLmF1dGhv
cigpID8gYGJ5ICIke2N1cnJlbnRHcm91cC5hdXRob3IoKX0iYCA6ICcnOwotICAgICAgICAgICAg
dGhpcy5jb250ZW50KCdyZXF1ZXN0LXN1bW1hcnknKS5pbm5lckhUTUwgPSBgU2NoZWR1bGVkICR7
YXV0aG9yZWRCeX0gYXQgJHtjdXJyZW50R3JvdXAuY3JlYXRlZEF0KCl9YAorICAgICAgICAgICAg
dGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncmVxdWVzdC1zdW1tYXJ5JyksIGBTY2hl
ZHVsZWQgJHthdXRob3JlZEJ5fSBhdCAke2N1cnJlbnRHcm91cC5jcmVhdGVkQXQoKX1gKQorCisg
ICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdoaWRlLWJ1dHRvbicp
LCBjdXJyZW50R3JvdXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnKTsKKworICAgICAg
ICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgncGVuZGluZy1yZXF1ZXN0LWNh
bmNlbC13YXJuaW5nJyksCisgICAgICAgICAgICAgICAgY3VycmVudEdyb3VwLmhhc1BlbmRpbmco
KSA/ICcoY2FuY2VscyBwZW5kaW5nIHJlcXVlc3RzKScgOiBbXSk7CiAgICAgICAgIH0KKwogICAg
ICAgICB0aGlzLmNvbnRlbnQoJ3JldHJ5LWZvcm0nKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdy
b3VwID8gbnVsbCA6ICdub25lJzsKICAgICAgICAgdGhpcy5jb250ZW50KCdiaXNlY3QtZm9ybScp
LnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgdGhpcy5fYmlzZWN0aW5nQ29tbWl0U2V0
QnlUZXN0R3JvdXAuZ2V0KGN1cnJlbnRHcm91cCkgPyBudWxsIDogJ25vbmUnOwotICAgICAgICB0
aGlzLmNvbnRlbnQoJ3N0YXR1cy1zdW1tYXJ5Jykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91
cCAmJiBjdXJyZW50R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgPiBjdXJyZW50R3JvdXAuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpID8gbnVsbCA6ICdub25lJzsKLSAgICAgICAgdGhpcy5jb250ZW50
KCdyZXF1ZXN0LXN1bW1hcnknKS5zdHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6
ICdub25lJzsKKyAgICB9CiAKLSAgICAgICAgY29uc3QgaGlkZUJ1dHRvbiA9IHRoaXMuY29udGVu
dCgnaGlkZS1idXR0b24nKTsKLSAgICAgICAgaGlkZUJ1dHRvbi50ZXh0Q29udGVudCA9IGN1cnJl
bnRHcm91cCAmJiBjdXJyZW50R3JvdXAuaXNIaWRkZW4oKSA/ICdVbmhpZGUnIDogJ0hpZGUnOwot
ICAgICAgICBoaWRlQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgPyBudWxsIDog
J25vbmUnOworICAgIF9yZXRyeVN1bW1hcnkodGVzdEdyb3VwKQorICAgIHsKKyAgICAgICAgaWYg
KCF0ZXN0R3JvdXAuaGFzUmV0cmllcygpKQorICAgICAgICAgICAgcmV0dXJuICcnOwogCi0gICAg
ICAgIHRoaXMuY29udGVudCgncGVuZGluZy1yZXF1ZXN0LWNhbmNlbC13YXJuaW5nJykuc3R5bGUu
ZGlzcGxheSA9IGN1cnJlbnRHcm91cCAmJiBjdXJyZW50R3JvdXAuaGFzUGVuZGluZygpID8gbnVs
bCA6ICdub25lJzsKKyAgICAgICAgaWYgKHRlc3RHcm91cC5yZXRyeUNvdW50c0FyZVNhbWVGb3JB
bGxDb21taXRTZXRzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IHJldHJ5Q291bnQgPSB0ZXN0R3Jv
dXAucmV0cnlDb3VudEZvckNvbW1pdFNldCh0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpfSByZXF1ZXN0ZWQsICR7cmV0cnlDb3VudH0gYWRkZWQgZHVlIHRvIGZhaWx1cmVzLmA7
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCByZXRyeVN1bW1hcnlQYXJ0cyA9IHRlc3RHcm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkKKyAgICAgICAgICAgIC5tYXAoKGNvbW1pdFNldCkgPT4g
KHtjb21taXRTZXQsIHJldHJ5Q291bnQ6IHRlc3RHcm91cC5yZXRyeUNvdW50Rm9yQ29tbWl0U2V0
KGNvbW1pdFNldCl9KSkKKyAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ucmV0cnlD
b3VudCkKKyAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGAke2l0ZW0ucmV0cnlDb3VudH0gYWRk
ZWQgdG8gJHt0ZXN0R3JvdXAubGFiZWxGb3JDb21taXRTZXQoaXRlbS5jb21taXRTZXQpfWApOwor
CisgICAgICAgIGNvbnN0IHJldHJ5U3VtbWFyeSA9IG5ldyBJbnRsLkxpc3RGb3JtYXQoJ2VuJywg
e3N0eWxlOiAnbG9uZycsIHR5cGU6ICdjb25qdW5jdGlvbid9KS5mb3JtYXQocmV0cnlTdW1tYXJ5
UGFydHMpOworCisgICAgICAgIHJldHVybiBgJHt0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpfSByZXF1ZXN0ZWQsICR7cmV0cnlTdW1tYXJ5fSBkdWUgdG8gZmFpbHVyZXMuYDsKICAg
ICB9CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKQEAgLTM5Niw3ICs0MTQsNyBAQCBjbGFz
cyBBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAg
ICAgICAgICA8ZGl2IGlkPSJ0ZXN0LWdyb3VwLWRldGFpbHMiPgogICAgICAgICAgICAgICAgIDx0
ZXN0LWdyb3VwLXJlc3VsdHMtdmlld2VyIGlkPSJyZXN1bHRzLXZpZXdlciI+PC90ZXN0LWdyb3Vw
LXJlc3VsdHMtdmlld2VyPgogICAgICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLXJldmlzaW9uLXRh
YmxlIGlkPSJyZXZpc2lvbi10YWJsZSI+PC90ZXN0LWdyb3VwLXJldmlzaW9uLXRhYmxlPgotICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9InN0YXR1cy1zdW1tYXJ5IiBjbGFzcz0ic3VtbWFyeSI+PC9k
aXY+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0icmV0cnktc3VtbWFyeSIgY2xhc3M9InN1bW1h
cnkiPjwvZGl2PgogICAgICAgICAgICAgICAgIDxkaXYgaWQ9InJlcXVlc3Qtc3VtbWFyeSIgY2xh
c3M9InN1bW1hcnkiPjwvZGl2PgogICAgICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLWZvcm0gaWQ9
InJldHJ5LWZvcm0iPlJldHJ5PC90ZXN0LWdyb3VwLWZvcm0+CiAgICAgICAgICAgICAgICAgPHRl
c3QtZ3JvdXAtZm9ybSBpZD0iYmlzZWN0LWZvcm0iPkJpc2VjdDwvdGVzdC1ncm91cC1mb3JtPgpA
QCAtNTU2LDggKzU3NCw4IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0
aEhlYWRpbmcgewogICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rpb24oJ3Nob3dIaWRkZW5U
ZXN0R3JvdXBzJywgKCkgPT4gdGhpcy5fc2hvd0FsbFRlc3RHcm91cHMoKSk7CiAgICAgICAgIGdy
b3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmVuYW1lVGVzdEdyb3VwJywgKHRlc3RHcm91cCwgbmV3
TmFtZSkgPT4gdGhpcy5fdXBkYXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3JvdXAsIG5ld05hbWUpKTsK
ICAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCd0b2dnbGVUZXN0R3JvdXBWaXNpYmls
aXR5JywgKHRlc3RHcm91cCkgPT4gdGhpcy5faGlkZUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3Vw
KSk7Ci0gICAgICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmV0cnlUZXN0R3JvdXAnLCAo
dGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4gdGhpcy5f
cmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlP
bkNvbXBsZXRpb24pKTsKLSAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdiaXNlY3RU
ZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlm
eU9uQ29tcGxldGlvbikgPT4gdGhpcy5fYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAs
IGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSk7CisgICAg
ICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbigncmV0cnlUZXN0R3JvdXAnLCAodGVzdEdyb3Vw
LCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pID0+
IHRoaXMuX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikpOworICAgICAgICBncm91cFBhbmUu
bGlzdGVuVG9BY3Rpb24oJ2Jpc2VjdFRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIGNvbW1pdFNldHMs
IHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikgPT4g
dGhpcy5fYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0
aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikpOwogCiAgICAg
ICAgIHRoaXMucGFydCgnY2F1c2UtbGlzdCcpLmxpc3RlblRvQWN0aW9uKCdhZGRJdGVtJywgKHJl
cG9zaXRvcnksIHJldmlzaW9uKSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9hc3NvY2lhdGVDb21t
aXQoJ2NhdXNlJywgcmVwb3NpdG9yeSwgcmV2aXNpb24pOwpAQCAtODMyLDE5ICs4NTAsMjIgQEAg
Y2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAg
IH0pOwogICAgIH0KIAotICAgIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCByZXBl
dGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfcmV0cnlDdXJyZW50
VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90
aWZ5T25Db21wbGV0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgZXhpc3RpbmdOYW1lcyA9ICh0
aGlzLl90ZXN0R3JvdXBzIHx8IFtdKS5tYXAoKGdyb3VwKSA9PiBncm91cC5uYW1lKCkpOwogICAg
ICAgICBjb25zdCBuZXdOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVXaXRob3V0Q29sbGlzaW9u
KHRlc3RHcm91cC5uYW1lKCksIG5ldyBTZXQoZXhpc3RpbmdOYW1lcykpOwogICAgICAgICBjb25z
dCBjb21taXRTZXRMaXN0ID0gdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKTsKICAgICAg
ICAgY29uc3QgcGxhdGZvcm0gPSB0aGlzLl90YXNrLnBsYXRmb3JtKCkgfHwgdGVzdEdyb3VwLnBs
YXRmb3JtKCk7Ci0gICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZp
Z3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3RHcm91cC50ZXN0KCksIG5ld05hbWUs
IHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25Db21wbGV0aW9uKQotICAg
ICAgICAgICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0
aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3Vw
cyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90
YXNrLCBwbGF0Zm9ybSwgdGVzdEdyb3VwLnRlc3QoKSwgbmV3TmFtZSwKKyAgICAgICAgICAgICAg
ICByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRMaXN0LCBub3RpZnlP
bkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzKHRlc3RH
cm91cHMpOworICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0Zh
aWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7
CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhc3luYyBfYmlzZWN0Q3VycmVudFRlc3RHcm91cCh0
ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9u
KQorICAgIGFzeW5jIF9iaXNlY3RDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgY29tbWl0U2V0
cywgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGVzdEdyb3VwLnRhc2soKSk7CiAgICAgICAg
IGNvbnN0IGV4aXN0aW5nVGVzdEdyb3VwTmFtZXMgPSBuZXcgU2V0KCh0aGlzLl90ZXN0R3JvdXBz
IHx8IFtdKS5tYXAoKHRlc3RHcm91cCkgPT4gdGVzdEdyb3VwLm5hbWUoKSkpOwpAQCAtODU0LDgg
Kzg3NSw5IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcg
ewogICAgICAgICAgICAgY29uc3QgY3VycmVudENvbW1pdFNldCA9IGNvbW1pdFNldHNbaV07CiAg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVXaXRo
b3V0Q29sbGlzaW9uKENvbW1pdFNldC5kaWZmKHByZXZpb3VzQ29tbWl0U2V0LCBjdXJyZW50Q29t
bWl0U2V0KSwgZXhpc3RpbmdUZXN0R3JvdXBOYW1lcyk7CiAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlQW5k
UmVmZXRjaFRlc3RHcm91cHModGVzdEdyb3VwLnRhc2soKSwgdGVzdEdyb3VwTmFtZSwgcmVwZXRp
dGlvbkNvdW50LCBbcHJldmlvdXNDb21taXRTZXQsIGN1cnJlbnRDb21taXRTZXRdLCBub3RpZnlP
bkNvbXBsZXRpb24pOwotICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RpZEZldGNoVGVzdEdy
b3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cC50YXNrKCks
IHRlc3RHcm91cE5hbWUsCisgICAgICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudCwgcmVw
ZXRpdGlvblR5cGUsIFtwcmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldF0sIG5vdGlm
eU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBz
KHRlc3RHcm91cHMpOwogICAgICAgICAgICAgfSBjYXRjaChlcnJvcikgewogICAgICAgICAgICAg
ICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NjMsNyArODg1LDcgQEAgY2xhc3MgQW5hbHlz
aXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBfY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91
cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24p
CisgICAgYXN5bmMgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0
ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRN
YXAsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBs
aWNhdGVUZXN0R3JvdXBOYW1lKHRlc3RHcm91cE5hbWUpKSB7CiAgICAgICAgICAgICBhbGVydChg
VGhlcmUgaXMgYWxyZWFkeSBhIHRlc3QgZ3JvdXAgbmFtZWQgIiR7dGVzdEdyb3VwTmFtZX0iYCk7
CkBAIC04ODksMTMgKzkxMSwxNSBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFn
ZVdpdGhIZWFkaW5nIHsKICAgICAgICAgZm9yIChsZXQgbGFiZWwgaW4gY29tbWl0U2V0TWFwKQog
ICAgICAgICAgICAgY29tbWl0U2V0cy5wdXNoKGNvbW1pdFNldE1hcFtsYWJlbF0pOwogCi0gICAg
ICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFz
aywgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNv
bXBsZXRpb24pCi0gICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHMuYmlu
ZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3Jv
dXBzKHRoaXMuX3Rhc2ssIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlv
blR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cHMpOworICAgICAgICB9IGNhdGNo
IChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVz
dCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKLSAg
ICBfY3JlYXRlQ3VzdG9tVGVzdEdyb3VwKHJlcGV0aXRpb25Db3VudCwgdGVzdEdyb3VwTmFtZSwg
Y29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3lu
YyBfY3JlYXRlQ3VzdG9tVGVzdEdyb3VwKHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBs
ZXRpb24pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90YXNrLmlzQ3VzdG9t
KCkpOwogICAgICAgICBpZiAodGhpcy5faGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3Jv
dXBOYW1lKSkgewpAQCAtOTAzLDEwICs5MjcsMTMgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBl
eHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5f
dGFzaywgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29t
bWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKQotICAgICAgICAgICAgLnRoZW4odGhpcy5fZGlk
RmV0Y2hUZXN0R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICB0
cnkgeworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVh
dGVXaXRoQ3VzdG9tQ29uZmlndXJhdGlvbih0aGlzLl90YXNrLCBwbGF0Zm9ybSwgdGVzdCwgdGVz
dEdyb3VwTmFtZSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25U
eXBlLCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgdGhpcy5f
ZGlkRmV0Y2hUZXN0R3JvdXBzKHRlc3RHcm91cHMpOworICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDog
JyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFzRHVw
bGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCmluZGV4IGQwYWYxNzNkYWFkMzJi
NDViMjJkOGJhOTUzYTE2ZWMxOTYyNmFjM2QuLmI1OGNlMjY4NmNkMWRmOWQyOWJmZTZkNDBjOWM5
Y2UwZTQ0OGI4YmMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTEyMCwxMSArMTIwLDE0IEBAIGNsYXNzIENo
YXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICBjb25zdCBjcmVhdGVXaXRo
VGVzdEdyb3VwQ2hlY2tib3ggPSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAn
KTsKICAgICAgICAgY29uc3QgcmVwZXRpdGlvbkNvdW50ID0gdGhpcy5jb250ZW50KCdjb25maXJt
LXJlcGV0aXRpb24nKTsKICAgICAgICAgY29uc3Qgbm90aWZ5T25Db21wbGV0aW9uID0gdGhpcy5j
b250ZW50KCdub3RpZnktb24tY29tcGxldGlvbicpOworICAgICAgICBjb25zdCByZXBldGl0aW9u
VHlwZSA9IHRoaXMuY29udGVudCgncmVwZXRpdGlvbi10eXBlJyk7CiAgICAgICAgIGNyZWF0ZVdp
dGhUZXN0R3JvdXBDaGVja2JveC5vbmNoYW5nZSA9ICgpID0+IHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBzaG91bGQgaW52b2tlICJlbnF1ZXVlVG9SZW5kZXIiIGluc3RlYWQuCiAgICAgICAgICAg
ICBjb25zdCBzaG91bGREaXNhYmxlID0gIWNyZWF0ZVdpdGhUZXN0R3JvdXBDaGVja2JveC5jaGVj
a2VkOwogICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LmRpc2FibGVkID0gc2hvdWxkRGlzYWJs
ZTsKICAgICAgICAgICAgIG5vdGlmeU9uQ29tcGxldGlvbi5kaXNhYmxlZCA9IHNob3VsZERpc2Fi
bGU7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlLmRpc2FibGVkID0gc2hv
dWxkRGlzYWJsZTsKKyAgICAgICAgfTsKICAgICB9CiAKICAgICBzZXJpYWxpemVTdGF0ZSgpCkBA
IC0yNDMsMTAgKzI0NiwxMSBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNl
IHsKICAgICAgICAgY29uc3QgY3JlYXRlV2l0aFRlc3RHcm91cCA9IHRoaXMuY29udGVudCgnY3Jl
YXRlLXdpdGgtdGVzdC1ncm91cCcpLmNoZWNrZWQ7CiAgICAgICAgIGNvbnN0IHJlcGV0aXRpb25D
b3VudCA9IHRoaXMuY29udGVudCgnY29uZmlybS1yZXBldGl0aW9uJykudmFsdWU7CiAgICAgICAg
IGNvbnN0IG5vdGlmeU9uQ29tcGxldGlvbiA9IHRoaXMuY29udGVudCgnbm90aWZ5LW9uLWNvbXBs
ZXRpb24nKS5jaGVja2VkOworICAgICAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IHRoaXMuY29u
dGVudCgncmVwZXRpdGlvbi10eXBlJykudmFsdWU7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IChjcmVhdGVXaXRoVGVzdEdyb3VwID8KLSAg
ICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBv
aW50LCAnQ29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSA6IEFu
YWx5c2lzVGFzay5jcmVhdGUobmFtZSwgc3RhcnRQb2ludCwgZW5kUG9pbnQpKTsKKyAgICAgICAg
ICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAn
Q29uZmlybScsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxl
dGlvbikgOiBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7
CiAgICAgICAgICAgICBuZXdXaW5kb3cubG9jYXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5
c2lzL3Rhc2svJyArIGFuYWx5c2lzVGFzay5pZCgpKTsKICAgICAgICAgICAgIHRoaXMuZmV0Y2hB
bmFseXNpc1Rhc2tzKHRydWUpOwogICAgICAgICB9IGNhdGNoKGVycm9yKSB7CkBAIC01ODksNyAr
NTkzLDE2IEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj4xMDwvb3B0aW9uPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bGFiZWw+aXRlcmF0aW9uczwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Im5vdGlmeS1vbi1jb21wbGV0
aW9uIiBjaGVja2VkPiBOb3RpZnkgb24gY29tcGxldGlvbjwvbGFiZWw+CisgICAgICAgICAgICAg
ICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD5JbjwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHNlbGVjdCBpZD0icmVwZXRpdGlvbi10eXBlIj4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYWx0ZXJuYXRpbmciIHNlbGVjdGVkPmFsdGVy
bmF0ZSAoQUJBQik8L29wdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0ic2VxdWVudGlhbCI+c2VxdWVuY2UgKEFBQkIpPC9vcHRpb24+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8
L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJub3RpZnktb24tY29tcGxl
dGlvbiIgY2hlY2tlZD5Ob3RpZnkgb24gY29tcGxldGlvbjwvbGFiZWw+CiAgICAgICAgICAgICAg
ICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAg
ICAgICAgICAgIDx1bCBjbGFzcz0iY2hhcnQtcGFuZS1maWx0ZXJpbmctb3B0aW9ucyBwb3BvdmVy
IiBzdHlsZT0iZGlzcGxheTpub25lIj4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2st
cGFnZS5qcwppbmRleCAzMDFmZDJhMjkwNjUxZDUxMjhjMzUyM2FmNDk4MjBmMjAzYmM2NmEzLi4w
YThlNDNlNDk2NDQ0NWVlMzcwNDA0YzcxYzkxNTZhOTJjYmU1ODMyIDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNr
LXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9j
cmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCkBAIC0yMiwxNCArMjIsMTQgQEAgY2xhc3MgQ3Jl
YXRlQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIHRo
aXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9jcmVh
dGVBbmFseXNpc1Rhc2tXaXRoR3JvdXAuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgX2NyZWF0
ZUFuYWx5c2lzVGFza1dpdGhHcm91cChyZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNv
bW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCB0YXNrTmFtZSwgbm90aWZ5T25Db21wbGV0aW9uKQor
ICAgIGFzeW5jIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3JvdXAodGVzdEdyb3VwTmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3Qs
IG5vdGlmeU9uQ29tcGxldGlvbiwgdGFza05hbWUpCiAgICAgewotICAgICAgICBUZXN0R3JvdXAu
Y3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCB0ZXN0R3JvdXBOYW1lLCBy
ZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikudGhlbigodGFz
aykgPT4gewotICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIoKS51cmwoYGFuYWx5
c2lzL3Rhc2svJHt0YXNrLmlkKCl9YCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb25z
dCB0YXNrID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKHRhc2tOYW1lLCBwbGF0Zm9y
bSwgdGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwg
Y29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAgICAgICAgIGxvY2F0aW9uLmhy
ZWYgPSB0aGlzLnJvdXRlcigpLnVybChgYW5hbHlzaXMvdGFzay8ke3Rhc2suaWQoKX1gKTsKLSAg
ICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAg
ICAgICBhbGVydCgnRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3Ip
OwotICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlbmRlcigpCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1
ZXN0cy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBp
LWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmluZGV4IGZkNDA0MzQ0MjM3MGY0NTNmMWZkM2VlN2I3
YWE1YTUxZmZhYzFiMjEuLjljNzc2ZjBmMDU1OTlkOGMzZWE0NzU5ZTBhYTZkZTA2MWVlM2U4MWYg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1
aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCkBAIC01NjYsNiArNTY2LDYyIEBA
IGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9
KTsKICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQgc3RpbGwgcmV0dXJuIGJ1aWxkIHJlcXVlc3Rz
IGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyaWdnZXJhYmxlIHdoZW4gdGVzdCBncm91cCBoYXMg
YWxsIGJ1aWxkIHJlcXVlc3RzIGZpbmlzaGVkIHdpdGggIm1heU5lZWRNb3JlUmVxdWVzdCIgZmxh
ZyB0byBiZSB0cnVlcycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRk
TW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQn
LCAnY29tcGxldGVkJywgJ2ZhaWxlZCddLCB0cnVlLCBudWxsLCBudWxsLCAnYWx0ZXJuYXRpbmcn
LCB0cnVlKTsKKyAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0
Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoT2JqZWN0LmtleXMoY29udGVudCku
c29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1
cycsICd1cGxvYWRlZEZpbGVzJ10pOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250
ZW50Wydjb21taXRTZXRzJ10ubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5pZCksIDQwMSk7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLnJldmlzaW9uSXRl
bXMsIFsKKyAgICAgICAgICAgIHtjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBw
YXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAg
ICAgICAgIHtjb21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwg
cmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0U2V0cyddWzFdLmlkKSwgNDAyKTsK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0u
cmV2aXNpb25JdGVtcywgWworICAgICAgICAgICAge2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3du
ZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51
bGx9LAorICAgICAgICAgICAge2NvbW1pdDogJzk2MzM2JywgY29tbWl0T3duZXI6IG51bGwsIHBh
dGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9XSk7CisKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5ndGgsIDMpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzBd
LmlkKSwgODc4MzIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0
cyddWzBdLnJlcG9zaXRvcnksICc5Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250
ZW50Wydjb21taXRzJ11bMF0ucmV2aXNpb24sICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5pZCksIDkzMTE2
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5yZXBv
c2l0b3J5LCAnMTEnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1p
dHMnXVsxXS5yZXZpc2lvbiwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cGFyc2VJbnQoY29udGVudFsnY29tbWl0cyddWzJdLmlkKSwgOTYzMzYpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzJdLnJlcG9zaXRvcnksICcxMScpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzJdLnJldmlzaW9u
LCAnMTkyNzM2Jyk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXS5sZW5ndGgsIDQpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBh
cnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5pZCksIDcwMCk7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBd
Lm9yZGVyKSwgMCk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJp
Y3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0uY29tbWl0U2V0KSwg
NDAxKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bMF0uc3RhdHVzLCAnY29tcGxldGVkJyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnRlc3QsICcyMDAnKTsKKworICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVsxXS5pZCksIDcwMSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLm9yZGVyKSwgMSk7CisgICAgICAgIGFzc2VydC5k
ZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnBsYXRmb3JtLCAnNjUn
KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMV0uY29tbWl0U2V0KSwgNDAyKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJp
Y3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uc3RhdHVzLCAnY29tcGxldGVkJyk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzFdLnRlc3QsICcyMDAnKTsKKworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNl
SW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5pZCksIDcwMik7CisgICAgICAgIGFzc2Vy
dC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLm9y
ZGVyKSwgMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzJdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uY29tbWl0U2V0KSwgNDAx
KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMl0uc3RhdHVzLCAnY29tcGxldGVkJyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnRlc3QsICcyMDAnKTsKKworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsz
XS5pZCksIDcwMyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLm9yZGVyKSwgMyk7CisgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnNjUnKTsK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJl
cXVlc3RzJ11bM10uY29tbWl0U2V0KSwgNDAyKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uc3RhdHVzLCAnZmFpbGVkJyk7CisgICAg
ICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRl
c3QsICcyMDAnKTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91bGQgc3VwcG9ydCB1c2VMZWdhY3lJ
ZFJlc29sdXRpb24gb3B0aW9uJywgKCkgPT4gewogICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRk
TW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1
aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdD91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScpOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBs
b2FkLXJvb3QtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qcwppbmRleCAzYWMwY2U5ZTM3ODUxYzFmNWRkMmI4YjUz
MmNkMzQ2M2ExZGE2M2IwLi42NzVkNTk0ODc0Y2ExNmRjN2U4OTY2ODA0Y2ZlZjQxODY1ZjI1MmRj
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS11
cGxvYWQtcm9vdC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FwaS11cGxvYWQtcm9vdC10ZXN0cy5qcwpAQCAtNjUsNyArNjUsNyBAQCBmdW5jdGlv
biBjcmVhdGVUZXN0R3JvdXBXaWhQYXRjaCgpCiAgICAgICAgIGNvbnN0IHNldDIgPSBuZXcgQ3Vz
dG9tQ29tbWl0U2V0OwogICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJr
aXQsICcxOTE2MjInKTsKICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoc2hh
cmVkLCAnODAyMjknKTsKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygn
Y3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKTsKKyAgICAgICAgcmV0
dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5k
QnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywg
MiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJdKTsKICAgICB9KS50aGVuKCh0YXNrKSA9PiB7
CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBdOwog
ICAgIH0pLnRoZW4oKGdyb3VwKSA9PiB7CkBAIC0xMDcsNyArMTA3LDcgQEAgZnVuY3Rpb24gY3Jl
YXRlVGVzdEdyb3VwV2l0aFBhdGNoQW5kT3duZWRDb21taXRzKCkKICAgICAgICAgc2V0Mi5zZXRS
ZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkyNzM2Jyk7CiAgICAgICAgIHNldDIuc2V0
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkU0pDLCAnb3duZWQtanNjLTkxOTEnLCBudWxsLCAn
MTkyNzM2Jyk7CiAKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3Vz
dG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwg
c29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKTsKKyAgICAgICAgcmV0dXJu
IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJ
ZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwg
J2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJdKTsKICAgICB9KS50aGVuKCh0YXNrKSA9PiB7CiAg
ICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBdOwogICAg
IH0pLnRoZW4oKGdyb3VwKSA9PiB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGkt
YWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCmluZGV4IGRjZTA5Y2JhYjM1MGEyMmE4MzFkNWJm
OTkyMTdhZTcwOTk3MjY5ODIuLmY5YzQ0NjQ1YTJhNzQzNzRkYjljNTU1OTQwOThjYTIzYjkyYjcz
NWMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJp
dmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVl
c3RzLXRlc3RzLmpzCkBAIC0xMjMsNiArMTIzLDExIEBAIGFzeW5jIGZ1bmN0aW9uIGFkZFRyaWdn
ZXJhYmxlQW5kQ3JlYXRlVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMpCiAgICAgYXdhaXQgY3Jl
YXRlQW5hbHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlzaW9ucyk7CiB9CiAKK2Z1bmN0aW9uIGFz
c2VydE9yZGVyT2ZSZXF1ZXN0cyhyZXF1ZXN0cywgZXhwZWN0ZWRPcmRlcikKK3sKKyAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlcXVlc3RzLm1hcChyZXF1ZXN0ID0+IHJlcXVlc3Qub3JkZXIoKSksIGV4
cGVjdGVkT3JkZXIpOworfQorCiBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1y
ZXF1ZXN0cycsIGZ1bmN0aW9uKCkgewogICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMsICdub2Rl
Jyk7CiAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CkBAIC0xMzQsNyArMTM5LDggQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+
IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKICAgICAgICAgY29uc3QgcmV2aXNp
b25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOwogICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAotICAgICAg
ICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1v
Y2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVl
ZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30p
OworICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSwKKyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRp
b25Db3VudDogMiwgcmV2aXNpb25TZXRzLCBjb21taXRTZXQ6IG51bGx9KTsKICAgICAgICAgY29u
c3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwogCiAgICAgICAgIGF3
YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91
cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOwpAQCAtMTQ0
LDE1ICsxNTAsMTcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVz
dHMnLCBmdW5jdGlvbigpIHsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwog
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsK
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwg
dHJ1ZSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5yZXBldGl0
aW9uQ291bnQoKSksIDIpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKSwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29t
bWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNl
dCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMik7CiAKICAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50
OiAyfSk7CiAKICAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CiAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7Ci0gICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpKSwgNCk7Ci0g
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludCh1cGRhdGVkR3JvdXBzWzBdLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBv
ZiB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrdXBkYXRlZEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSwgNCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrdXBkYXRl
ZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKICAgICAgICAg
Zm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0ZWRDb21taXRT
ZXRzKCkpIHsKICAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB1cGRhdGVkR3JvdXBz
WzBdLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCk7CkBAIC0xNzQsMTAgKzE4MiwzMDgg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlv
bigpIHsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOwotICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkp
LCAyKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoK2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOwogICAgICAgICBhd2FpdCBncm91cC51cGRhdGVIaWRkZW5GbGFnKHRydWUpOwogCiAgICAg
ICAgIGF3YWl0IGFzc2VydFRocm93cygnQ2Fubm90QWRkVG9IaWRkZW5UZXN0R3JvdXAnLCBhc3lu
YyAoKSA9PiBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVz
dHMnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDJ9KSkKICAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkNvbW1pdFNldE5vdFN1cHBvcnRlZEZvckFsdGVy
bmF0aW5nUmVwZXRpdGlvblR5cGUiIHdoZW4gYWRkaW5nIGJ1aWxkIHJlcXVlc3RzIGZvciBvbmUg
Y29tbWl0IHNldCBpbiBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4gewor
ICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOwor
ICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9y
eSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCBy
ZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3Vs
dCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywg
eworICAgICAgICAgICAgbmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0
Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJ
ZCgpLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291
bnQ6IDIsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLCByZXZpc2lvblNldHN9KTsKKyAg
ICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisg
ICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3Vw
Jywgeydncm91cCc6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0p
OworCisgICAgICAgIGNvbnN0IGlnbm9yZUNhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgdGVz
dEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwg
aWdub3JlQ2FjaGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCks
IDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwg
J2FsdGVybmF0aW5nJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0
ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQg
b2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7
CisKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0Zv
ckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAyXSk7CisgICAgICAgIGNvbnN0IHNlY29u
ZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNz
ZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1p
dFNldCksIFsxLCAzXSk7CisKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdDb21taXRTZXRO
b3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGluZ1JlcGV0aXRpb25UeXBlJywgKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0
cycsCisgICAgICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAy
LCBjb21taXRTZXQ6IHNlY29uZENvbW1pdFNldC5pZCgpfSkKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQgcmVxdWVzdHMgZm9yIGZpcnN0IGNv
bW1pdCBzZXQgd2l0aCBvcmRlciBzaGlmdGVkIGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwJywg
YXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2so
J3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZp
bHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOwor
ICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjog
JzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAg
ICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3Ro
ZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCByZXBldGl0aW9u
Q291bnQ6IDIsCisgICAgICAgICAgICB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRz
Tm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNp
b25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdy
b3VwSWQnXTsKKworICAgICAgICBjb25zdCBpZ25vcmVDYWNoZSA9IHRydWU7CisgICAgICAgIGNv
bnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFz
a0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgbGV0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAy
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdz
ZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRD
b21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2Yg
Z3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisK
KyAgICAgICAgbGV0IGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
WzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21t
aXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBsZXQgc2Vjb25kQ29tbWl0
U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRl
ck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwg
WzIsIDNdKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQt
YnVpbGQtcmVxdWVzdHMnLAorICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFk
ZENvdW50OiAyLCBjb21taXRTZXQ6IGZpcnN0Q29tbWl0U2V0LmlkKCl9KTsKKworICAgICAgICBj
b25zdCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRb
J3Rhc2tJZCddLCBpZ25vcmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRh
dGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUo
KSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0g
Z3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVx
dWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMSwg
MiwgM10pOworICAgICAgICBzZWNvbmRDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0Zv
ckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbNCwgNV0pOworICAgIH0pOworCisgICAgaXQo
J3Nob3VsZCBub3QgbW9kaWZ5IHRoZSBvcmRlciBvZiBwcmVjZWRpbmcgYnVpbGQgcmVxdWVzdHMg
d2hlbiBhZGRpbmcgbmV3IGJ1aWxkIHJlcXVlc3RzIGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3Vw
JywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRh
c2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgp
LmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBd
OworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lv
bjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07Cisg
ICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2Ny
ZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAn
b3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCByZXBldGl0
aW9uQ291bnQ6IDIsCisgICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJl
dmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rl
c3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgaWdub3JlQ2FjaGUgPSB0cnVlOworICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRb
J3Rhc2tJZCddLCBpZ25vcmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGxldCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgp
LCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVz
dGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0
IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIp
OworCisgICAgICAgIGxldCBmaXJzdENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNlY29uZENv
bW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0
T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNl
dCksIFsyLCAzXSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
YWRkLWJ1aWxkLXJlcXVlc3RzJywKKyAgICAgICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91cElk
LCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBzZWNvbmRDb21taXRTZXQuaWQoKX0pOworCisgICAg
ICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgZ3JvdXAgPSB1cGRhdGVkR3JvdXBz
WzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9u
VHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMik7CisKKyAgICAgICAgZmlyc3RDb21taXRT
ZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVy
T2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFsw
LCAxXSk7CisgICAgICAgIHNlY29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9y
Q29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzLCA0LCA1XSk7CisgICAgfSk7CisKKyAg
ICBpdCgnc2hvdWxkIHNoaWZ0IHRoZSBvcmRlciBvZiBmb2xsb3dpbmcgYnVpbGQgcmVxdWVzdHMg
d2hlbiBhZGRpbmcgcmV0cnkgZm9yIGEgc3BlY2lmaWMgY29tbWl0IHNldCBpbiBhIHNlcXVlbnRp
YWwgdGVzdCBncm91cCB3aXRoIDMgY29tbWl0IHNldHMnLCBhc3luYyAoKSA9PiB7CisgICAgICAg
IGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAg
IGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiBy
ZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9u
U2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5p
ZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319LAorICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MjczNid9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAg
IHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICB0ZXN0
OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRp
dGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGlu
c2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBp
Z25vcmVDYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgbGV0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAzKTsKKyAg
ICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
KQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291bnRG
b3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZpcnN0Q29tbWl0U2V0
ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9m
UmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwg
MV0pOworICAgICAgICBsZXQgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNG
b3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKyAgICAgICAgbGV0IHRoaXJk
Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3Nl
cnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRT
ZXQpLCBbNCwgNV0pOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3JvdXBJ
ZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldDogZmlyc3RDb21taXRTZXQuaWQoKX0pOworCisgICAg
ICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJl
c3VsdFsndGFza0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgZ3JvdXAgPSB1cGRhdGVkR3JvdXBz
WzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0uaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAzKTsKKworICAgICAgICBm
aXJzdENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAg
YXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29t
bWl0U2V0KSwgWzAsIDEsIDIsIDNdKTsKKyAgICAgICAgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMo
Z3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzQsIDVdKTsKKyAg
ICAgICAgdGhpcmRDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMl07Cisg
ICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldCh0
aGlyZENvbW1pdFNldCksIFs2LCA3XSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNoaWZ0
IHRoZSBvcmRlciBvZiBidWlsZCByZXF1ZXN0cyB3aGVuIGFkZGluZyByZXRyeSBmb3IgYWxsIGNv
bW1pdCBzZXRzIGluIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIHdpdGggMyBjb21taXQgc2V0cycs
IGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNr
KCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5m
aWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsK
KyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246
ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX0sCisgICAg
ICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAgICAg
Y29uc3QgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRl
c3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0
YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHJlcGV0aXRpb25Db3Vu
dDogMiwKKyAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3Rp
ZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNl
dHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJ
ZCddOworCisgICAgICAgIGNvbnN0IGlnbm9yZUNhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3Qg
dGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQn
XSwgaWdub3JlQ2FjaGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5s
ZW5ndGgsIDEpOworICAgICAgICBsZXQgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVl
bnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKS5sZW5ndGgsIDMpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
K2dyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAg
ICAgICBsZXQgZmlyc3RDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07
CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNl
dChmaXJzdENvbW1pdFNldCksIFswLCAxXSk7CisgICAgICAgIGxldCBzZWNvbmRDb21taXRTZXQg
PSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZS
ZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwg
M10pOworICAgICAgICBsZXQgdGhpcmRDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKClbMl07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0Zv
ckNvbW1pdFNldCh0aGlyZENvbW1pdFNldCksIFs0LCA1XSk7CisKKyAgICAgICAgYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywKKyAgICAgICAgICAg
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pOworCisgICAgICAgIGNvbnN0
IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFz
a0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgZ3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwg
Mik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAn
c2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisKKyAgICAgICAgZmlyc3RDb21taXRTZXQgPSBncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0
cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxLCAyLCAz
XSk7CisgICAgICAgIHNlY29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMo
KVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KHNlY29uZENvbW1pdFNldCksIFs0LCA1LCA2LCA3XSk7CisgICAgICAgIHRoaXJkQ29t
bWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3NlcnRP
cmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRTZXQp
LCBbOCwgOSwgMTAsIDExXSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRo
ICJOb0NvbW1pdFNldEluVGVzdEdyb3VwIiBpZiBjb21taXQgc2V0IGlzIG5vdCBpbiBhIHNlcXVl
bnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dl
cmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0g
UmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgp
ID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246
ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0
JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9y
bUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90
aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTogJ3Nl
cXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElk
ID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6IGluc2VydGVkR3JvdXBJ
ZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwn
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMo
KS5sZW5ndGgsIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1
ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNv
bnN0IGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAg
ICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmly
c3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSBn
cm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1
ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwgM10p
OworCisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGZpcnN0Q29tbWl0U2V0LmlkKCkgKyBzZWNv
bmRDb21taXRTZXQuaWQoKSArIDE7CisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygnTm9Db21t
aXRTZXRJblRlc3RHcm91cCcsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3JvdXA6IGluc2VydGVkR3Jv
dXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggIkludmFsaWRDb21taXRTZXQiIGlmIGNvbW1pdCBz
ZXQgaWQgaXMgbm90IGFuIGludGVnZXIgZm9yIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwJywgYXN5
bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3Nv
bWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRl
cigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAg
ICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5
MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAg
IGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVz
dC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRh
c2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEu
c29tZVRlc3RJZCgpLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBl
dGl0aW9uQ291bnQ6IDIsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0
c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElk
J107CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRl
c3QtZ3JvdXAnLCB7J2dyb3VwJzogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiB0cnVlfSk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5tYXlOZWVkTW9y
ZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMik7CisgICAgICAg
IGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gJ2ludmFs
aWQnOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0ludmFsaWRDb21taXRTZXQnLCAoKSA9
PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1
aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21t
aXRTZXR9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3
aXRoICJJbnZhbGlkQ29tbWl0U2V0IiBpZiBjb21taXQgc2V0IGlkIGlzIG5vdCBhbiBpbnRlZ2Vy
IGZvciBhbiBhbHRlcm5hdGluZyB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBh
d2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNl
dHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAg
ICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAg
ICAgICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3Qg
aW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6
IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsn
dGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5s
ZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUo
KSwgJ2FsdGVybmF0aW5nJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1
ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRT
ZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAy
KTsKKworICAgICAgICBjb25zdCBjb21taXRTZXQgPSAnaW52YWxpZCc7CisgICAgICAgIGF3YWl0
IGFzc2VydFRocm93cygnSW52YWxpZENvbW1pdFNldCcsICgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLCB7Z3Jv
dXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1pdFNldH0pCisgICAgICAgIH0p
OworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVh
dGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKaW5k
ZXggMmIyNzUwYWE3YTJkZDNiYzc5NWE3NjcyNzY0YmFhYTNlYjg0ZDFiNi4uMmExNzE3OGU0MzQy
MzIyZWZjYzBiZmZkMjdmMjk4MjM1ZjQzMjZkYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlzaXMtdGFz
ay10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCkBAIC02ODIsNCArNjgy
LDExOSBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrIHdp
dGggbm9kZSBwcml2aWxlZ2VkIGFwaScsIGZ1bmN0aQogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXRSZXBvc2l0b3J5KS5y
ZXZpc2lvbigpLCAnMTkxNjIyJyk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZWNvbmRD
b21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXRSZXBvc2l0b3J5KS5yZXZpc2lvbigp
LCAnMTkxNjIzJyk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRl
IGFuIGFuYWx5c2lzIHRhc2sgd2l0aCBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgp
ID0+IHsKKyAgICAgICAgY29uc3Qgd2Via2l0SWQgPSAxOworICAgICAgICBjb25zdCBwbGF0Zm9y
bUlkID0gMTsKKyAgICAgICAgY29uc3QgdHJpZ2dlcmFibGVJZCA9IDEyMzQ7CisKKyAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGF3YWl0IGRiLmluc2Vy
dCgndGVzdHMnLCB7bmFtZTogJ1N1aXRlJ30pOworICAgICAgICBjb25zdCB0ZXN0Um93ID0gYXdh
aXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RzJywge25hbWU6ICdTdWl0ZSd9KTsKKyAgICAgICAg
Y29uc3QgdGVzdElkID0gdGVzdFJvdy5pZDsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7aWQ6IHdlYmtpdElkLCBuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBhd2Fp
dCBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogcGxhdGZvcm1JZCwgbmFtZTogJ3NvbWUgcGxh
dGZvcm0nfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywg
e2lkOiAxMjM0LCBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZSd9KTsKKyAgICAgICAgYXdhaXQgZGIu
aW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjM0NSwgbmFtZTog
J3dlYmtpdC1vbmx5JywgdHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdh
aXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogd2Vi
a2l0SWQsIGdyb3VwOiAyMzQ1fSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFi
bGVfY29uZmlndXJhdGlvbnMnLCB7dGVzdDogdGVzdElkLCBwbGF0Zm9ybTogcGxhdGZvcm1JZCwg
dHJpZ2dlcmFibGU6IHRyaWdnZXJhYmxlSWR9KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZv
clJlcG9ydChyZXBvcnRXaXRoUmV2aXNpb25bMF0pOworCisgICAgICAgIGF3YWl0IFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lv
bik7CisgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkv
cmVwb3J0LycsIGFub3RoZXJSZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBNYW5p
ZmVzdC5mZXRjaCgpOworCisgICAgICAgIGNvbnN0IHRlc3QgPSBUZXN0LmZpbmRCeUlkKHRlc3RJ
ZCk7CisgICAgICAgIGNvbnN0IHNvbWVQbGF0Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlkKHBsYXRm
b3JtSWQpOworICAgICAgICBjb25zdCBjb25maWdSb3cgPSBhd2FpdCBkYi5zZWxlY3RGaXJzdFJv
dygndGVzdF9jb25maWd1cmF0aW9ucycsIHttZXRyaWM6IHRlc3QubWV0cmljcygpWzBdLmlkKCks
IHBsYXRmb3JtOiBzb21lUGxhdGZvcm0uaWQoKX0pOworICAgICAgICBjb25zdCB0ZXN0UnVucyA9
IGF3YWl0IGRiLnNlbGVjdFJvd3MoJ3Rlc3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1snaWQn
XX0pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsKKwor
ICAgICAgICBjb25zdCBvbmVSZXZpc2lvblNldCA9IHtbd2Via2l0SWRdOiB7cmV2aXNpb246ICcx
OTE2MjInfX07CisgICAgICAgIGNvbnN0IGFub3RoZXJSZXZpc2lvblNldCA9IHtbd2Via2l0SWRd
OiB7cmV2aXNpb246ICcxOTE2MjMnfX07CisKKyAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6
ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdEdyb3VwTmFt
ZTogJ0NvbmZpcm0nLCByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlz
aW9uU2V0XSwKKyAgICAgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwgZW5kUnVu
OiB0ZXN0UnVuc1sxXVsnaWQnXSwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25U
eXBlOiAnc2VxdWVudGlhbCd9KTsKKworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQgQW5hbHlz
aXNUYXNrLmZldGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0YXNrLm5hbWUoKSwgJ2NvbmZpcm0nKTsKKyAgICAgICAgYXNzZXJ0KCF0YXNrLmhh
c1Jlc3VsdHMoKSk7CisgICAgICAgIGFzc2VydCh0YXNrLmhhc1BlbmRpbmdSZXF1ZXN0cygpKTsK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmJ1Z3MoKSwgW10pOworICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suY2F1c2VzKCksIFtdKTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbCh0YXNrLmZpeGVzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRhc2suY2hhbmdlVHlwZSgpLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRhc2sucGxhdGZvcm0oKS5sYWJlbCgpLCAnc29tZSBwbGF0Zm9ybScpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5tZXRyaWMoKS50ZXN0KCkubGFiZWwoKSwgJ1N1aXRl
Jyk7CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZv
clRhc2sodGFzay5pZCgpKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5uYW1lKCksICdDb25maXJtJyk7Cisg
ICAgICAgIGFzc2VydC5vayh0ZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRp
YWwnKQorICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cC5y
ZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgY29u
c3QgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAg
ICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVz
dHNbMV0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMl0uY29t
bWl0U2V0KCkuZXF1YWxzKGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAg
ICBjb25zdCBmaXJzdENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7Cisg
ICAgICAgIGNvbnN0IHNlY29uZENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0
KCk7CisgICAgICAgIGNvbnN0IHdlYmtpdFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlk
KHdlYmtpdElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNv
bW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJl
cG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOworICAgIH0p
OworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZFJlcGV0aXRpb25UeXBlIiB3
aGVuIHJlcGV0aXRpb24gdHlwZSBpcyBub3QgImFsdGVybmF0aW5nIiBvciAic2VxdWVudGlhbCIn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29u
c3QgcGxhdGZvcm1JZCA9IDE7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0Owor
CisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhd2Fp
dCBkYi5pbnNlcnQoJ3Rlc3RzJywge25hbWU6ICdTdWl0ZSd9KTsKKyAgICAgICAgY29uc3QgdGVz
dFJvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0cycsIHtuYW1lOiAnU3VpdGUnfSk7
CisgICAgICAgIGNvbnN0IHRlc3RJZCA9IHRlc3RSb3cuaWQ7CisgICAgICAgIGF3YWl0IGRiLmlu
c2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB3ZWJraXRJZCwgbmFtZTogJ1dlYktpdCd9KTsKKyAg
ICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdwbGF0Zm9ybXMnLCB7aWQ6IHBsYXRmb3JtSWQsIG5hbWU6
ICdzb21lIHBsYXRmb3JtJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdn
ZXJhYmxlcycsIHtpZDogMTIzNCwgbmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnfSk7CisgICAgICAg
IGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCB7aWQ6IDIz
NDUsIG5hbWU6ICd3ZWJraXQtb25seScsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7Cisg
ICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9z
aXRvcnk6IHdlYmtpdElkLCBncm91cDogMjM0NX0pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQo
J3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywge3Rlc3Q6IHRlc3RJZCwgcGxhdGZvcm06IHBs
YXRmb3JtSWQsIHRyaWdnZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFk
ZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKTsKKworICAgICAgICBhd2Fp
dCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRX
aXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAg
YXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICBjb25zdCB0ZXN0ID0gVGVzdC5maW5k
QnlJZCh0ZXN0SWQpOworICAgICAgICBjb25zdCBzb21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5k
QnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2Vs
ZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3Mo
KVswXS5pZCgpLCBwbGF0Zm9ybTogc29tZVBsYXRmb3JtLmlkKCl9KTsKKyAgICAgICAgY29uc3Qg
dGVzdFJ1bnMgPSBhd2FpdCBkYi5zZWxlY3RSb3dzKCd0ZXN0X3J1bnMnLCB7Y29uZmlnOiBjb25m
aWdSb3dbJ2lkJ119KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RSdW5zLmxlbmd0
aCwgMik7CisKKyAgICAgICAgY29uc3Qgb25lUmV2aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3Jl
dmlzaW9uOiAnMTkxNjIyJ319OworICAgICAgICBjb25zdCBhbm90aGVyUmV2aXNpb25TZXQgPSB7
W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIzJ319OworICAgICAgICBhd2FpdCBhc3NlcnRU
aHJvd3MoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHsKKyAg
ICAgICAgICAgICAgICBuYW1lOiAnY29uZmlybScsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlv
bkNvdW50OiAyLAorICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKKyAg
ICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFtvbmVSZXZpc2lvblNldCwgYW5vdGhlclJldmlz
aW9uU2V0XSwKKyAgICAgICAgICAgICAgICByZXBldGl0aW9uVHlwZTogJ2ludmFsaWQtbW9kZScs
CisgICAgICAgICAgICAgICAgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLAorICAgICAgICAg
ICAgICAgIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sCisgICAgICAgICAgICAgICAgbmVlZHNO
b3RpZmljYXRpb246IHRydWUKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0pOworICAgIH0pOwog
fSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10
ZXN0cy5qcwppbmRleCA2N2Q4NGFkYWY1OTZhMTcwYmRkZmVhZjIyNDIwZjJjMjUwNWUxM2Q2Li5i
YjIyNDI5NjMwNTJkMThmMDU3N2FkZGQ0NGNlM2MzNjFkZjE0NGQ5IDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10
ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTcsNiAr
Nyw4IEBAIGNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZl
ci5qcycpOwogY29uc3QgVGVtcG9yYXJ5RmlsZSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBv
cmFyeS1maWxlLmpzJykuVGVtcG9yYXJ5RmlsZTsKIGNvbnN0IGFkZFdvcmtlckZvclJlcG9ydCA9
IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYWRkV29ya2VyRm9y
UmVwb3J0OwogY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OworY29uc3QgYXNzZXJ0VGhy
b3dzID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hc3NlcnRU
aHJvd3M7CisKIAogZnVuY3Rpb24gY3JlYXRlQW5hbHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlz
aW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQogewpAQCAtNDAwLDcgKzQwMiw3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAg
ICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAg
IGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00NDcsNyArNDQ5LDcgQEAg
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgZ3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAg
ICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTQ4NSw3ICs0ODcs
NyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdy
b3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0
aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1
ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAgLTUyNCw3ICs1MjYsNyBAQCBkZXNjcmli
ZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAg
ICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwg
MSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3Vw
LmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAyKTsKQEAgLTU1Niw3ICs1NTgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVn
ZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAg
ICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlv
bigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVz
dHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCA0KTsKQEAgLTYwMyw3ICs2MDUsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0
ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3Jv
dXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAg
ICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY0
NSw3ICs2NDcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3Vw
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBp
bnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBj
b25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTY5NCw3ICs2OTYsNyBA
QCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0
aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3Vw
SWQpOwotICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9u
Q291bnQoKSwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFn
cm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0
cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKQEAgLTc0Myw3ICs3NDUsNyBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkp
OwpAQCAtODA4LDcgKzgxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRl
c3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRp
dGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3NlcnQub2soIWdyb3Vw
Lm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5k
QnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC04ODMsNyArODg1LDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAg
ICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAy
KTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlk
KE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9y
bUlkKCkpKTsKQEAgLTk2Niw3ICs5NjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgp
LCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7
CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZv
cm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTA2MCw3ICsxMDYy
LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0
aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7
CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25D
b3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCks
IFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3Nl
cnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTExNTcsNyArMTE1OSw3IEBAIGRlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAg
ICBhc3NlcnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21l
VGVzdElkKCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9y
bSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC0x
MjM1LDcgKzEyMzcsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOwogICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAx
KTsKICAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAg
ICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBAIC0xMjY0LDcgKzEyNjYsNyBAQCBk
ZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkg
ewogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAg
ICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0
Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29uc3QgcmVxdWVzdHMg
PSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDIpOwpAQCAtMTMwOCw3ICsxMzEwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIFRl
c3RHcm91cC5zb3J0QnlOYW1lKHRlc3RHcm91cHMpOwogCiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwc1swXS5uYW1lKCksICd0ZXN0MScpOwotICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0ucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMF0uaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGxldCByZXF1ZXN0cyA9IHRlc3RHcm91cHNbMF0u
YnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMik7CiAgICAgICAgICAgICBsZXQgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNl
dCgpOwpAQCAtMTMyMSw3ICsxMzIzLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7CiAKICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzWzFdLm5hbWUoKSwgJ3Rlc3Qy
Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5yZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vw
c1sxXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgcmVxdWVzdHMg
PSB0ZXN0R3JvdXBzWzFdLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgc2V0MCA9IHJlcXVlc3Rz
WzBdLmNvbW1pdFNldCgpOwpAQCAtMTMzNiw0ICsxMzM4LDE1NCBAQCBkZXNjcmliZSgnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcx
OTI3MzYnKTsKICAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBh
IHNlcXVlbnRpYWwgdGVzdCBncm91cCB3aXRoIGFuIGFuYWx5c2lzIHRhc2snLCBhc3luYyAoKSA9
PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNr
Jyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNv
bnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319
LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3Vw
JywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBs
YXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVz
dElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRz
LCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsKKyAg
ICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisg
ICAgICAgIGNvbnN0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlzZS5h
bGwoW0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpCisgICAgICAgIGFzc2VydC5v
ayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBn
cm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1swXS5v
cmRlcigpLCAwKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFdLm9yZGVy
KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3JkZXIoKSwg
Mik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigpLCAzKTsK
KworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygp
Lmxlbmd0aCwgMikKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVxdWFs
cyhyZXF1ZXN0c1sxXS5jb21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQocmVxdWVzdHNbMl0u
Y29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAg
Y29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBzZXQx
ID0gcmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1
YWwoc2V0MC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0
cmljdEVxdWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0
LmRlZXBTdHJpY3RFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjIn
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY3JlYXRlIGFu
IGFsdGVybmF0aW5nIHRlc3QgZ3JvdXAgd2l0aCBhbiBhbmFseXNpcyB0YXNrJywgYXN5bmMgKCkg
PT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFz
aycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVw
b3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBj
b25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9
fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCBy
ZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBw
bGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRl
c3RJZCgpLAorICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXZpc2lvblNl
dHMsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsK
KyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwor
CisgICAgICAgIGNvbnN0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlz
ZS5hbGwoW0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91
cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnYWx0ZXJuYXRpbmcnKQorICAgICAgICBhc3Nl
cnQub2soZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CisgICAgICAgIGNvbnN0IHJlcXVlc3Rz
ID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVx
dWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNb
MF0ub3JkZXIoKSwgMCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sxXS5v
cmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzJdLm9yZGVy
KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbM10ub3JkZXIoKSwg
Myk7CisKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNl
dHMoKS5sZW5ndGgsIDIpCisgICAgICAgIGFzc2VydChyZXF1ZXN0c1swXS5jb21taXRTZXQoKS5l
cXVhbHMocmVxdWVzdHNbMl0uY29tbWl0U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3Rz
WzFdLmNvbW1pdFNldCgpLmVxdWFscyhyZXF1ZXN0c1szXS5jb21taXRTZXQoKSkpOworCisgICAg
ICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3Qg
c2V0MSA9IHJlcXVlc3RzWzFdLmNvbW1pdFNldCgpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChzZXQwLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRl
ZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkx
NjIyJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0
ZSBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCBpbiBhbiBleGlzdGluZyBhbmFseXNpcyB0YXNrJywg
YXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCB0YXNrSWQgPSBhd2FpdCBhZGRUcmlnZ2VyYWJs
ZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCBpZ25vcmVDYWNoZSA9
IHRydWU7CisKKyAgICAgICAgbGV0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQg
UHJvbWlzZS5hbGwoW0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQodGFza0lkKSwgVGVzdEdyb3VwLmZl
dGNoRm9yVGFzayh0YXNrSWQsIGlnbm9yZUNhY2hlKV0pOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoYW5hbHlzaXNUYXNrLm5hbWUoKSwgJ3NvbWUgdGFzaycpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDApOworCisgICAgICAgIGNvbnN0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAn
dGVzdCcsIHRhc2s6IHRhc2tJZCwgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCks
IHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiB0cnVlLCByZXZpc2lvblNldHMsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJl
cGV0aXRpb25Db3VudDogMn0pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgW2FuYWx5c2lzVGFzaywgdGVzdEdyb3Vwc10g
PSBhd2FpdCBQcm9taXNlLmFsbChbQW5hbHlzaXNUYXNrLmZldGNoQnlJZChyZXN1bHRbJ3Rhc2tJ
ZCddKSwgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25vcmVDYWNo
ZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdz
b21lIHRhc2snKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50
aWFsJykKKyAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CisKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocmVxdWVzdHNbMV0ub3JkZXIoKSwgMSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChyZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJl
cXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKQorICAgICAgICBhc3NlcnQocmVxdWVz
dHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzFdLmNvbW1pdFNldCgpKSk7CisgICAg
ICAgIGFzc2VydChyZXF1ZXN0c1syXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbM10uY29t
bWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0
KCk7CisgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1syXS5jb21taXRTZXQoKTsKKyAgICAg
ICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5yZXBvc2l0b3JpZXMoKSwgW3dl
YmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDEuY3VzdG9tUm9vdHMo
KSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0
MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOworICAgIH0pOworCisg
ICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZFJlcGV0aXRpb25UeXBlIiBpZiByZXBl
dGl0aW9uIHR5cGUgaXMgbm90ICJhbHRlcm5hdGluZyIgb3IgInNlcXVlbnRpYWwiJywgYXN5bmMg
KCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUg
dGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigo
cmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAg
ICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Mid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisKKyAgICAgICAg
YXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRpdGlvblR5cGUnLCAoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3Jv
dXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLAorICAgICAgICAgICAg
ICAgIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksCisgICAgICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJl
cGV0aXRpb25UeXBlOiAnaW52YWxpZC1tb2RlJywgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lv
blNldHN9KQorICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdp
dGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgd2hlbiBjcmVhdGluZyBhIHRlc3QgZ3JvdXAgd2l0
aCBhIGJhZCByZXBldGl0aW9uIHR5cGUgZm9yIGFuIGV4aXN0aW5nIGFuYWx5c2lzIHRhc2snLCBh
c3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRhc2tJZCA9IGF3YWl0IGFkZFRyaWdnZXJhYmxl
QW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9z
aXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAn
V2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgp
XToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIzJ319XTsKKworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0ludmFsaWRSZXBldGl0aW9u
VHlwZScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwKKyAg
ICAgICAgICAgICAgICBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDog
TW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2ludmFsaWQtbW9kZScsIHJlcGV0aXRpb25Db3VudDog
MiwgcmV2aXNpb25TZXRzfSkKKyAgICAgICAgfSk7CisgICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBk
YXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCmluZGV4IDQ1
MDZjM2IyN2YwNWYyMzJhYjQwYzVlNmFjNzRlN2FkNWY0MmQ1OTguLmI2ZGNhZTJmMjE4NjUyZmM5
Mjk3ZGRjYTUzODcyMDVmM2JjOWIzMDggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMu
anMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2Vk
LWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwpAQCAtMTY4LDcgKzE2OCw3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewogICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICBj
b25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCksIHRydWUpOwogICAgICAgICBhc3NlcnQu
b2soIWdyb3VwLm5vdGlmaWNhdGlvblNlbnRBdCgpKTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIGRl
c2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewog
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAg
ICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCksIGZhbHNlKTsKICAgICAgICAgYXNz
ZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQoKSk7CiAKQEAgLTI3Niw0ICsyNzYsODYg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
KCl7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRN
b3JlUmVxdWVzdHMoKSwgZmFsc2UpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRl
ZEdyb3Vwc1swXS5pc0hpZGRlbigpLCB0cnVlKTsKICAgICB9KTsKKworICAgIGl0KCdzaG91bGQg
YmUgYWJsZSB0byBjYW5jZWwgYW4gYWx0ZXJuYXRpbmcgdGVzdCBncm91cCBhbmQgY2xlYXIgdGhl
ICJtYXkgbmVlZCBtb3JlIHJlcXVlc3RzIiBmbGFnJywgYXN5bmMgKCkgPT4geworICAgICAgICBh
d2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNl
dHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAg
ICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2Nr
RGF0YS5zb21lUGxhdGZvcm1JZCgpLAorICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRl
c3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJu
YXRpbmcnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0g
cmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2Fp
dCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnYWx0ZXJuYXRpbmcnKTsKKworICAgICAgICBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91
cDogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAg
ICAgbGV0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3Vs
dFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdy
b3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vw
c1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgdGVzdEdyb3Vw
ID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0
cyA9IHRlc3RHcm91cC5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxk
UmVxdWVzdHNbMF0uaXNQZW5kaW5nKCkpOworICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0c1sx
XS5pc1BlbmRpbmcoKSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgY2FuY2VsOiB0
cnVlfSk7CisKKyAgICAgICAgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZv
clRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIHRlc3RHcm91cCA9IHVwZGF0ZWRH
cm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1v
cmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydCh0ZXN0R3JvdXAuaGFzRmluaXNo
ZWQoKSk7CisgICAgICAgIGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuX29yZGVyZWRCdWlsZFJl
cXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0
aCwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzBdLnN0YXR1
cygpLCAnY2FuY2VsZWQnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVz
dHNbMV0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBi
ZSBhYmxlIHRvIGNhbmNlbCBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCBhbmQgY2xlYXIgdGhlICJt
YXkgbmVlZCBtb3JlIHJlcXVlc3RzIiBmbGFnJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2Fp
dCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25z
dCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3Np
dG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMg
PSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAg
IHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpLAorICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJ
ZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlh
bCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRl
c3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdy
b3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlk
KCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5t
YXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisKKyAgICAgICAgYXdhaXQg
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGlu
c2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGxl
dCB1cGRhdGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rh
c2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0u
bWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgbGV0IHRlc3RHcm91cCA9IHVw
ZGF0ZWRHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5
TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgbGV0IGJ1aWxkUmVxdWVzdHMgPSB0
ZXN0R3JvdXAuX29yZGVyZWRCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVl
c3RzWzBdLmlzUGVuZGluZygpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMV0uaXNQ
ZW5kaW5nKCkpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Vw
ZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGNhbmNlbDogdHJ1ZX0p
OworCisgICAgICAgIHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBk
YXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBz
WzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVx
dWVzdHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkp
OworICAgICAgICBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVpbGRSZXF1ZXN0
cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXMoKSwg
J2NhbmNlbGVkJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzFd
LnN0YXR1cygpLCAnY2FuY2VsZWQnKTsKKyAgICB9KTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMKaW5kZXggZWNm
ZWM4ZDE2ZTkzNGQ1N2QzMjcxODg4ZWM1NjNiMzQ0NmVhYjRiYS4uZjI0ZjQzMzFhMGI0MTBjNzBi
Y2RiODliMDA4ZGM5NjVkMTliNDBhMyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJh
dGlvbnMuanMKQEAgLTUzLDcgKzUzLDcgQEAgYXN5bmMgZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGV4
cGVjdGVkRXJyb3IsIHRlc3RGdW5jdGlvbikKIHsKICAgICBsZXQgdGhyb3duRXhjZXB0aW9uID0g
ZmFsc2U7CiAgICAgdHJ5IHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RGdW5jdGlvbigpCisgICAg
ICAgIGF3YWl0IHRlc3RGdW5jdGlvbigpOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgICAg
dGhyb3duRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVycm9y
LCBleHBlY3RlZEVycm9yKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcwppbmRleCA2ODFhZmNjNGNm
NmFkMGU1OTJlY2I2MDExYTYxY2IxY2Y5NGNlZDFiLi5lYWVlODFhMzQwYjE4NjJiMWZhMTJiMzY3
MjY3ZGNhODUzYzFjMzY0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCkBAIC02NCwxMiArNjQs
MTQgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfcnVucycsIHtp
ZDogODAxLCBjb25maWc6IDMwMSwgYnVpbGQ6IDkwMSwgbWVhbl9jYWNoZTogMTAwfSksCiAgICAg
ICAgIF0pOwogICAgIH0sCi0gICAgYWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVzTGlz
dCwgbmVlZHNOb3RpZmljYXRpb249dHJ1ZSwgdXJsTGlzdD1bXSkKKyAgICBhZGRNb2NrRGF0YTog
ZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0LCBuZWVkc05vdGlmaWNhdGlvbiA9IHRydWUsIHVybExp
c3QgPSBudWxsLCBjb21taXRTZXRMaXN0ID0gbnVsbCwgcmVwZXRpdGlvblR5cGUgPSAnYWx0ZXJu
YXRpbmcnLCBtYXlOZWVkTW9yZVJlcXVlc3RzID0gZmFsc2UpCiAgICAgewogICAgICAgICBpZiAo
IXN0YXR1c0xpc3QpCiAgICAgICAgICAgICBzdGF0dXNMaXN0ID0gWydwZW5kaW5nJywgJ3BlbmRp
bmcnLCAncGVuZGluZycsICdwZW5kaW5nJ107CiAgICAgICAgIGlmICghdXJsTGlzdCkKICAgICAg
ICAgICAgIHVybExpc3QgPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07CisgICAgICAgIGlmICgh
Y29tbWl0U2V0TGlzdCkKKyAgICAgICAgICAgIGNvbW1pdFNldExpc3QgPSBbNDAxLCA0MDIsIDQw
MSwgNDAyXTsKICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgIHRoaXMu
YWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIpLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRf
c2V0cycsIHtpZDogNDAxfSksCkBAIC04MSwxNCArODMsMTUgQEAgTW9ja0RhdGEgPSB7CiAgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1MDAsIHBsYXRmb3JtOiA2
NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2snLAogICAgICAgICAgICAgICAgIHN0YXJ0
X3J1bjogODAxLCBzdGFydF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonLAogICAg
ICAgICAgICAgICAgIGVuZF9ydW46IDgwMSwgZW5kX3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjow
NToyNy4xWid9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMn
LCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9y
ZXBldGl0aW9uX2NvdW50OiA0LCBuZWVkc19ub3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0aW9u
fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDAsIHN0
YXR1czogc3RhdHVzTGlzdFswXSwgdXJsOiB1cmxMaXN0WzBdLCB0cmlnZ2VyYWJsZTogMTAwMCwg
cmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2
MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgn
YnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB1cmw6IHVy
bExpc3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0
Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQw
Mn0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAyLCBz
dGF0dXM6IHN0YXR1c0xpc3RbMl0sIHVybDogdXJsTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEwMDAs
IHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDog
NjAwLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdXJsOiB1
cmxMaXN0WzNdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxh
dGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0
MDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6
IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9yZXBldGl0
aW9uX2NvdW50OiAyLAorICAgICAgICAgICAgICAgIG5lZWRzX25vdGlmaWNhdGlvbjogbmVlZHNO
b3RpZmljYXRpb24sIHJlcGV0aXRpb25fdHlwZTogcmVwZXRpdGlvblR5cGUsIG1heV9uZWVkX21v
cmVfcmVxdWVzdHM6IG1heU5lZWRNb3JlUmVxdWVzdHN9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB1cmw6
IHVybExpc3RbMF0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBw
bGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6
IGNvbW1pdFNldExpc3RbMF19KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVz
dHMnLCB7aWQ6IDcwMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB1cmw6IHVybExpc3RbMV0sIHRy
aWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRl
c3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3Rb
MV19KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwg
c3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB1cmw6IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAw
LCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6
IDYwMCwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3RbMl19KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMywgc3RhdHVzOiBzdGF0dXNM
aXN0WzNdLCB1cmw6IHVybExpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dy
b3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMs
IGNvbW1pdF9zZXQ6IGNvbW1pdFNldExpc3RbM119KSwKICAgICAgICAgXSk7CiAgICAgfSwKLSAg
ICBhZGRNb2NrQnVpbGRSZXF1ZXN0c1dpdGhSb290cyhkYiwgc3RhdHVzTGlzdCwgbmVlZHNOb3Rp
ZmljYXRpb249dHJ1ZSwgYWRkTW9ja0NvbmZpZ3VyYXRpb249dHJ1ZSkKKyAgICBhZGRNb2NrQnVp
bGRSZXF1ZXN0c1dpdGhSb290cyhkYiwgc3RhdHVzTGlzdCwgbmVlZHNOb3RpZmljYXRpb24gPSB0
cnVlLCBhZGRNb2NrQ29uZmlndXJhdGlvbiA9IHRydWUpCiAgICAgewogICAgICAgICBjb25zdCBz
ZXR1cFN0ZXBzID0gYWRkTW9ja0NvbmZpZ3VyYXRpb24gPyBbdGhpcy5hZGRNb2NrQ29uZmlndXJh
dGlvbihkYildIDogW107CiAgICAgICAgIGlmICghc3RhdHVzTGlzdCkKQEAgLTIwMSwxMCArMjA0
LDEwIEBAIE1vY2tEYXRhID0gewogICAgICAgICBjb25zdCByZXBvc2l0b3J5X2dyb3VwID0gMjAw
MTsKICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgIGRiLmluc2VydCgn
YW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMSwgdGFzazogNTAwLCBuYW1lOiAnYW5vdGhl
ciB0ZXN0IGdyb3VwJywgYXV0aG9yLCBpbml0aWFsX3JlcGV0aXRpb25fY291bnQ6IDR9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMywgc3RhdHVzOiBz
dGF0dXNMaXN0WzNdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRl
c3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKICAgICAgICAgICAg
IGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMCwgc3RhdHVzOiBzdGF0dXNMaXN0
WzBdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3Vw
OiA2MDEsIG9yZGVyOiAwLCBjb21taXRfc2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2Vy
dCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmln
Z2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9y
ZGVyOiAyLCBjb21taXRfc2V0OiA0MDF9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRf
cmVxdWVzdHMnLCB7aWQ6IDcxMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZSwg
cmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAxLCBj
b21taXRfc2V0OiA0MDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMn
LCB7aWQ6IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9y
eV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAyLCBjb21taXRfc2V0
OiA0MDF9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcx
Mywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwg
cGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwK
ICAgICAgICAgXSk7CiAgICAgfSwKICAgICBhZGRUZXN0R3JvdXBXaXRoT3duZWRDb21taXRzKGRi
LCBzdGF0dXNMaXN0KQpAQCAtNDg0LDcgKzQ4Nyw2IEBAIE1vY2tEYXRhID0gewogICAgICAgICAg
ICAgICAgICJzY2hlZHVsZXIiOiBbIkFCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3Jj
ZVNjaGVkdWxlciIsICJTY2hlZHVsZXIiXSwKICAgICAgICAgICAgICAgICAid2siOiBbb3B0aW9u
cy53ZWJraXRSZXZpc2lvbiB8fCAnMTkxNjIyJywgIlVua25vd24iXSwKICAgICAgICAgICAgICAg
ICAib3MiOiBbb3B0aW9ucy5vc3hSZXZpc2lvbiB8fCAnMTAuMTEgMTVBMjg0JywgIlVua25vd24i
XSwKLSAgICAgICAgICAgICAgICAid29ya2VybmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwg
ImJvdDIwMiIsICJXb3JrZXIgKGRlcHJlY2F0ZWQpIl0sCiAgICAgICAgICAgICAgICAgIndvcmtl
cm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIiLCAiV29ya2VyIl0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKQEAgLTUxOSw3ICs1MjEsNiBAQCBNb2NrRGF0YSA9IHsKICAg
ICAgICAgICAgICAgICAicHJvamVjdCI6IFsnJywgIlVua25vd24iXSwKICAgICAgICAgICAgICAg
ICAicmVwb3NpdG9yeSI6IFsnJywgIlVua25vd24iXSwKICAgICAgICAgICAgICAgICAicmV2aXNp
b24iOiBbJycsICJVbmtub3duIl0sCi0gICAgICAgICAgICAgICAgIndvcmtlcm5hbWUiOiBbb3B0
aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIiLCAiV29ya2VyIChkZXByZWNhdGVkKSJdLAogICAg
ICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29ya2VyTmFtZSB8fCAiYm90MjAy
IiwgIldvcmtlciJdCiAgICAgICAgICAgICB9CiAgICAgICAgIH07ICAgCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdn
ZXJhYmxlLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90
b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcwppbmRleCBiNDg3MGJiMmIwODZjNDli
ODI3MTU0ODU2ZTE1ZjZmNjRlMDA3ZDJhLi5kYzM1OTI4Y2NlMWI3YzljMGQxZTczMWFmMWU2ODVi
ZTVhYjc2YTgxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFibGUtdGVz
dHMuanMKQEAgLTY4OSwxMiArNjg5LDE1IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxl
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
M10ucmVzb2x2ZShNb2NrRGF0YS5ydW5uaW5nQnVpbGQoe2J1aWxkZXJJZDogTW9ja0RhdGEuYnVp
bGRlcklERm9yTmFtZSgnc29tZSBidWlsZGVyIDInKSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwog
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzRdLm1ldGhvZCwgJ1BPU1QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9m
b3JjZS1zb21lLWJ1aWxkZXItMicpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5kYXRhLCB7J2lkJzogJzcwMScsICdqc29u
cnBjJzogJzIuMCcsICdtZXRob2QnOiAnZm9yY2UnLCAncGFyYW1zJzoKICAgICAgICAgICAgICAg
ICAgICAgeyd3ayc6ICcxOTI3MzYnLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVl
c3QtaWQnOiAnNzAxJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRlci0yJ319
KTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoJ09L
Jyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9k
LCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzVdLnVybCwgJy9hcGkvdjIvZm9yY2VzY2hlZHVsZXJzL2ZvcmNlLXNvbWUt
YnVpbGRlci0xJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzVdLmRhdGEsIHsnaWQnOiAnNzExJywgJ2pzb25ycGMnOiAnMi4w
JywgJ21ldGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgpAQCAtODMzLDcgKzgzNiw3IEBAIGRlc2Ny
aWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11bHRpcGxl
IHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0ZW5vdXNseScsICgpID0+IHsKKyAgICAgICAgaXQo
J3Nob3VsZCByZWNvdmVyIGZyb20gbXVsdGlwbGUgdGVzdCBncm91cHMgcnVubmluZyBzaW11bHRh
bmVvdXNseScsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwogICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzOwogCkBAIC0xMDY0LDYgKzEwNjcsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJs
ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0uZGF0YSwgeydpZCc6ICc3MTAnLCAnanNvbnJwYyc6
ICcyLjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFtcyc6CiAgICAgICAgICAgICAgICAgICAg
IHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlk
JzogJzcxMCcsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1zb21lLWJ1aWxkZXItMSd9fSk7CiAg
ICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKCdPSycpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKQEAgLTEzNTYsNyArMTM2MCwzNDAgQEAgZGVz
Y3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAg
ICAgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnOTAwJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLXNv
bWUtYnVpbGRlci0yJ319KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3Qg
cmV1c2UgdGhlIHJvb3Qgd2hlbiBhIGJ1aWxkIHJlcXVlc3Qgd2l0aCBzYW1lIGNvbW1pdCBzZXQg
aXMgYXZhaWFsYmxlIGJ1dCB0aGUgYnVpbGQgcmVxdWVzdCBoYXMgYmVlbiBzY2hlZHVsZWQnLCBh
c3luYyAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0
IG9uIGEgYnVpbGRlciB3aGVuIGl0cyByZWNlbnQgYnVpbGRzIGhhZCBub3QgYmVlbiBmZXRjaGVk
IHlldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
cGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKTsKKyAgICAgICAgICAg
IGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1v
Y2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAg
ICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtl
ckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAg
ICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25m
aWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxv
Z2dlcik7CisgICAgICAgICAgICB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4g
dHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVz
b2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RC
dWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCBN
b2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisgICAgICAgICAgICBhd2Fp
dCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzFdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIp
KTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxk
cycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3Vs
dHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA2OTgsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAg
ICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0
SWQ6IDY5OSwgYnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnUE9TVCcpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJs
LCAnL2FwaS92Mi9mb3JjZXNjaGVkdWxlcnMvZm9yY2Utc29tZS1idWlsZGVyLTEnKTsKKworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJd
LmRhdGEsIHsnaWQnOiAnNzAwJywgJ2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScs
ICdwYXJhbXMnOgorICAgICAgICAgICAgICAgICAgICB7J3drJzogJzE5MTYyMicsICdvcyc6ICcx
MC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MDAnLCAnZm9yY2VzY2hlZHVsZXIn
OiAnZm9yY2Utc29tZS1idWlsZGVyLTEnfX0pOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1syXS5yZXNvbHZlKCdPSycpOworICAgICAgICAgICAgYXNzZXJ0KCFCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNjk5KSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZGVm
ZXIgc2NoZWR1bGluZyByZXF1ZXN0cyBmcm9tIG5leHQgY29uZmlndXJhdGlvbiBpbiBzZXF1ZW50
aWFsIHRlc3QgZ3JvdXAgdW50aWwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBtZWV0cyB0aGUg
aW5pdGlhbCByZXF1ZXN0ZWQgaXRlcmF0aW9uIGNvdW50JywgYXN5bmMgKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2Fp
dCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ3BlbmRp
bmcnLCAncGVuZGluZyddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLCBudWxsLCBudWxsXSwKKyAgICAgICAgICAgICAg
ICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVlbnRpYWwnLCB0cnVlKTsKKyAgICAgICAgICAg
IGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1v
Y2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOworICAgICAgICAgICAg
Y29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25zdCB3b3JrZXJJ
bmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAg
ICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmln
LCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dn
ZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2Vy
cygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICBhc3Nl
cnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9j
a0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVy
cygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAgICAgICAgICAg
YXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1v
Y2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0
YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicpKTsKKyAgICAgICAgICAgIE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1v
Y2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0YS5y
ZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6
IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVk
QnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAxLCBidWlsZFRhZzogMTI0
fSldfSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sz
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIg
MicsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7
fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwg
Nik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5t
ZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzRdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEn
KSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoe30pOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9k
LCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1s1XS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJykpOwor
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5yZXNvbHZlKHt9KTsKKworICAg
ICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0ubWV0aG9kLCAn
R0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2
XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7Cisg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnJlc29sdmUoeydidWlsZHMnIDog
WworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAw
LCBidWlsZFJlcXVlc3RJZDogNzAwLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAg
TW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3
MDEsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzddLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNV
cmwoJ3NvbWUgYnVpbGRlciAyJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s3XS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgc3luY09uY2U7CisKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMo
KSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWls
ZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3BlbmRpbmcn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5z
dGF0dXMoKSwgJ3BlbmRpbmcnKTsKKworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZl
dGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxk
ZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdo
dHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAn
ZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBvdGhlciBidWlsZCByZXF1
ZXN0IG9uIGEgYnVpbGRlciBpZiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCBpcyBzY2hlZHVsZWQg
b24gaXQgYW5kIHdhaXRpbmcgZm9yIHJldHJ5JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBNb2Nr
RGF0YS5hZGRNb2NrRGF0YShkYiwgWydmYWlsZWQnLCAnY29tcGxldGVkJywgJ3BlbmRpbmcnLCAn
cGVuZGluZyddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9i
dWlsZGVycy8yL2J1aWxkcy8xMjQnLCBudWxsLCBudWxsXSwKKyAgICAgICAgICAgICAgICBbNDAx
LCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVlbnRpYWwnLCB0cnVlKTsKKyAgICAgICAgICAgIGF3YWl0
IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKTsKKworICAgICAgICAgICAgYXdh
aXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNv
bnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5m
byA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAg
ICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywg
VGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2Vy
KTsKKyAgICAgICAgICAgIGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMo
KS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0
UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tE
YXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMo
KSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3
YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0Rh
dGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJl
Y2VudEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAg
IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDog
NzAwLCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRC
dWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9
KV19KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3Ro
LCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJd
Lm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXIt
MScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7fSk7
CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCkK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikp
OworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHsnYnVpbGRz
JyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0
czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAg
ICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJ
ZDogNzAxLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNl
OworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwg
OCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCku
c3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMv
YnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwoKSwgJ2h0
dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdw
ZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcxMCkuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMSkuc3RhdHVzKCksICdwZW5k
aW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcx
Mikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisKKyAgICAgICAgICAg
IGF3YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0
U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2Zh
aWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1
aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMo
KSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmlu
ZEJ5SWQoNzEwKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzExKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEyKS5zdGF0dXMoKSwg
J3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo
J3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0IGZyb20gYW5vdGhlciB0ZXN0IGdy
b3VwIG9uIGEgYnVpbGRlciB3aGljaCBpcyB1c2VkIGJ5IGFuIGFsdGVybmF0aW5nIHRlc3QgZ3Jv
dXAgbmVlZGluZyBtb3JlIHJldHJpZXMnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGF3YWl0IFByb21pc2Uu
YWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywg
J2ZhaWxlZCcsICdjb21wbGV0ZWQnXSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICBbJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIxJywgJ2h0dHA6Ly9idWlsZC53
ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIyJywKKyAgICAgICAgICAgICAgICAgJ2h0
dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJywgJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0JyxdLAorICAgICAgICAgICAg
ICAgIFs0MDEsIDQwMiwgNDAxLCA0MDJdLCAnYWx0ZXJuYXRpbmcnLCB0cnVlKSwKKyAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91cChkYiksCisgICAgICAgICAg
ICBdKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAg
IGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWls
ZGVyKCk7CisgICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAg
ICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6
ICdwYXNzd29yZCd9OworICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRi
b3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVB
UEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRy
aWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgp
KTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRh
Lm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNl
dCgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgs
IDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0u
bWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0x
JykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsK
KworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikp
OworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRz
JyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0
czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAg
ICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJ
ZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1v
dGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1
aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzJdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJs
KCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmlu
aXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDIsIGJ1aWxkVGFn
OiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVz
dWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAg
ICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCksICdodHRw
Oi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAnY29t
cGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIv
YnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTIpLnN0YXR1cygpLCAn
cGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJ
ZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJl
cXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRo
VHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwo
KSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVz
KCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVp
bGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcxMCkuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMSkuc3RhdHVzKCksICdwZW5kaW5nJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMikuc3Rh
dHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIGEgYnVpbGQgcmVxdWVzdCBmcm9tIGFub3RoZXIg
dGVzdCBncm91cCBvbiBhIGJ1aWxkZXIgd2hpY2ggaXMgdXNlZCBieSBhIHNlcXVlbnRpYWwgdGVz
dCBncm91cCBuZWVkaW5nIG1vcmUgcmV0cmllcycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgUHJv
bWlzZS5hbGwoW01vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0
ZWQnLCAnZmFpbGVkJywgJ2NvbXBsZXRlZCddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEnLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAgICAgICAgICAgICAg
ICAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLF0sCisgICAgICAg
ICAgICAgICAgWzQwMSwgNDAxLCA0MDIsIDQwMl0sICdzZXF1ZW50aWFsJywgdHJ1ZSksCisgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpLAorICAgICAg
ICAgICAgXSk7CisgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAg
ICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xl
QnVpbGRlcigpOworICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7Cisg
ICAgICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3
b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1
aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVt
b3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2Ug
PSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09u
Y2UoKSk7CisgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2Nr
RGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEku
cmVzZXQoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVz
dCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVu
Z3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxk
ZXItMScpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7
fSk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwg
Mik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5t
ZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzFdLnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScs
IDIpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1
aWxkcycgOiBbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jl
c3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDIsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1
ZXN0SWQ6IDcwMywgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRp
bmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxk
c1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzNdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRh
LmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWls
ZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEo
e3Jlc3VsdHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDMsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKwor
ICAgICAgICAgICAgYXdhaXQgc3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwg
J2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVy
cy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzEwKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzExKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEyKS5zdGF0dXMo
KSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmlu
ZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKworICAgICAgICAgICAgYXdhaXQgQnVp
bGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmln
V2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAnZmFpbGVkJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVz
VXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0
YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0YXR1cygpLCAncGVuZGlu
ZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTIp
LnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIG5vdCByZXVzZSB0aGUgcm9vdCB3aGVuIGEgYnVpbGQgcmVxdWVz
dCB3aXRoIHNhbWUgY29tbWl0IHNldCBpcyBhdmFpbGFibGUgYnV0IHRoZSBidWlsZCByZXF1ZXN0
IGhhcyBiZWVuIHNjaGVkdWxlZCcsIGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1v
Y2tEYXRhLmFkZE1vY2tCdWlsZFJlcXVlc3RzV2l0aFJvb3RzKFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KSk7CiAgICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOwogICAgICAgICAgICAgY29u
c3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFBhdGNoQWNjZXB0aW5n
QnVpbGRlcigpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0
aW9uLXRlc3RzLmpzCmluZGV4IDZmYzdhN2FjNWJjMzdhNDEwNDcyZmU4MmIyYzliNTQxMGVhOGY0
ZDMuLjZkYWY1MzU0ZGQyZjcyMDc0N2Y5NmQ1M2JjNGEzMWNlMDVkODgyNjcgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJv
dC1pbnRlZ3JhdGlvbi10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKQEAgLTE3
Myw3ICsxNzMsNyBAQCBmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXAodGFza19uYW1lPSdjdXN0b20g
dGFzaycpIHsKICAgICBzZXQxLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTE2
MjInKTsKICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICBzZXQyLnNl
dFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTI3MzYnKTsKLSAgICByZXR1cm4gVGVz
dEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1v
Y2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCBbc2V0
MSwgc2V0Ml0pLnRoZW4oKHRhc2spID0+IHsKKyAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdp
dGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0
Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCAnYWx0ZXJuYXRpbmcnLCBbc2V0
MSwgc2V0Ml0pLnRoZW4oKHRhc2spID0+IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5maW5k
QWxsQnlUYXNrKHRhc2suaWQoKSlbMF07CiAgICAgfSk7CiB9CkBAIC0xOTMsNyArMTkzLDcgQEAg
YXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNoKCkKICAgICBzZXQxLnNldFJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTE2MjInLCB1cGxvYWRlZFBhdGNoRmlsZSk7
CiAgICAgY29uc3Qgc2V0MiA9IG5ldyBDdXN0b21Db21taXRTZXQ7CiAgICAgc2V0Mi5zZXRSZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7Ci0gICAgY29uc3QgdGFzayA9IGF3
YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5k
QnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywg
MiwgW3NldDEsIHNldDJdKTsKKyAgICBjb25zdCB0YXNrID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0
ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQ
bGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCAnYWx0ZXJuYXRpbmcnLCBb
c2V0MSwgc2V0Ml0pOwogCiAgICAgcmV0dXJuIFRlc3RHcm91cC5maW5kQWxsQnlUYXNrKHRhc2su
aWQoKSlbMF07CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3Vw
V2loT3duZWRDb21taXQoKQogICAgIGNvbnN0IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0Owog
ICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MjczNicpOwogICAg
IHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkU0pDLCAnb3duZWQtanNjLTkxOTEn
LCBudWxsLCAnMTkyNzM2Jyk7Ci0gICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygn
Y3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
KSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKS50aGVuKCh0YXNrKSA9
PiB7CisgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQ
bGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdz
b21lIGdyb3VwJywgMiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJdKS50aGVuKCh0YXNrKSA9
PiB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBd
OwogICAgIH0pOwogfQpAQCAtMTQwOSw3ICsxNDA5LDcgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRi
b3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVp
bGQoKSk7CiAgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdD
b21wbGV0ZWQnKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3Qu
c3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxk
UmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMv
MS9idWlsZHMvMTIzJyk7CiAgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0
LmJ1aWxkSWQoKSwgbnVsbCk7CiAKICAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0
ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCmluZGV4IDg4MjJhZmI4YzBl
ZDIyMzgxZjc0MjM3NmFmYTMwNmRhMjljYzU4MjAuLjllYjhjNmM5MWFmNTBmYzIwMjA2NmRlNWM4
MmM0MWQ5YjRkNDA5ZWMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy9idWlsZGJvdC1zeW5jZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwpAQCAtMTQzLDYgKzE0Myw3IEBAIGNsYXNzIEJ1aWxk
Ym90U3luY2VyIHsKIAogICAgICAgICBsZXQgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRXb3JrZXJO
YW1lU3BlY2lmaWVkID0gZmFsc2U7CiAgICAgICAgIGxldCB1c2VkV29ya2VycyA9IG5ldyBTZXQ7
CisgICAgICAgIGNvbnN0IGxhdGVzdEVudHJ5QnlXb3JrZXJOYW1lID0gbmV3IE1hcDsKICAgICAg
ICAgZm9yIChsZXQgZW50cnkgb2YgdGhpcy5fZW50cnlMaXN0KSB7CiAgICAgICAgICAgICBsZXQg
ZW50cnlQcmV2ZW50c05ld1JlcXVlc3QgPSBlbnRyeS5pc1BlbmRpbmcoKTsKICAgICAgICAgICAg
IGlmIChlbnRyeS5pc0luUHJvZ3Jlc3MoKSkgewpAQCAtMTU1LDYgKzE1NiwyOCBAQCBjbGFzcyBC
dWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdCdWlsZHNXaXRo
b3V0V29ya2VyTmFtZVNwZWNpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgdXNlZFdvcmtl
cnMuYWRkKGVudHJ5Lndvcmtlck5hbWUoKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIWVudHJ5LmlzUGVuZGluZygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZW50cnkud29ya2VyTmFtZSgpLCAnTm9uLXBlbmRpbmcgZW50cnkgbXVzdCBoYXZlIGEgd29ya2Vy
IG5hbWUnKTsKKyAgICAgICAgICAgICAgICBjb25zdCBsYXN0RmluaXNoZWRFbnRyeSA9IGxhdGVz
dEVudHJ5QnlXb3JrZXJOYW1lLmdldChlbnRyeS53b3JrZXJOYW1lKCkpOworICAgICAgICAgICAg
ICAgIGlmICghbGFzdEZpbmlzaGVkRW50cnkgfHwgK2xhc3RGaW5pc2hlZEVudHJ5LmJ1aWxkVGFn
KCkgPCArZW50cnkuYnVpbGRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgbGF0ZXN0RW50cnlC
eVdvcmtlck5hbWUuc2V0KGVudHJ5Lndvcmtlck5hbWUoKSwgZW50cnkpCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBbbmFtZSwgZW50cnldIG9mIGxhdGVzdEVu
dHJ5QnlXb3JrZXJOYW1lLmVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgbGF0ZXN0QWN0
aXZlQnVpbGRSZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKGVudHJ5LmJ1aWxkUmVxdWVz
dElkKCkpOworICAgICAgICAgICAgaWYgKCFsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3QpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobGF0ZXN0QWN0aXZlQnVpbGRS
ZXF1ZXN0LnRlc3RHcm91cElkKCkgPT0gbmV3UmVxdWVzdC50ZXN0R3JvdXBJZCgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gbGF0ZXN0
QWN0aXZlQnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpOworICAgICAgICAgICAgaWYgKCF0ZXN0R3Jv
dXApIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVxdWVzdCBtaWdodCBiZSBmb3IgYSB2ZXJ5
IG9sZCB0ZXN0IGdyb3VwIHdlIGRpZG4ndCBmZXRjaC4KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZXN0R3JvdXAuaGFzRmluaXNoZWQo
KSAmJiAhdGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIHVzZWRXb3JrZXJzLmFkZChuYW1lKTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghdGhpcy5fd29ya2VyTGlzdCB8fCBoYXNQZW5kaW5nQnVpbGRzV2l0aG91
dFdvcmtlck5hbWVTcGVjaWZpZWQpIHsKQEAgLTE5Miw3ICsyMTUsNyBAQCBjbGFzcyBCdWlsZGJv
dFN5bmNlciB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgoIXRoaXMuX2xhc3RDb21wbGV0ZWRC
dWlsZCB8fCB0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQuYnVpbGRUYWcoKSA8IGVudHJ5LmJ1aWxk
VGFnKCkpICYmIGVudHJ5Lmhhc0ZpbmlzaGVkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQgPSBlbnRyeTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgbGV0IGVudHJ5TGlzdCA9IFtdOwog
ICAgICAgICAgICAgICAgIGZvciAobGV0IGlkIGluIGVudHJ5QnlSZXF1ZXN0KQogICAgICAgICAg
ICAgICAgICAgICBlbnRyeUxpc3QucHVzaChlbnRyeUJ5UmVxdWVzdFtpZF0pOwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxl
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJh
YmxlLmpzCmluZGV4IGQ2MmNkZTAyOWMxNzc5MTczYzVmMjFlZDg2YWFmMWExYzAzZGE4YTIuLmIy
ZWIwNTVkNjBjZTI0NzgyZTQzYTllY2QwYzJhMmNmYTg2YWNmYjIgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUu
anMKQEAgLTcsNyArNyw3IEBAIHJlcXVpcmUoJy4vdjMtbW9kZWxzLmpzJyk7CiBsZXQgQnVpbGRi
b3RTeW5jZXIgPSByZXF1aXJlKCcuL2J1aWxkYm90LXN5bmNlcicpLkJ1aWxkYm90U3luY2VyOwog
CiBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKLSAgICBjb25zdHJ1Y3Rvcihjb25maWcsIHJl
bW90ZSwgYnVpbGRib3RSZW1vdGUsIHdvcmtlckluZm8sIGxvZ2dlcikKKyAgICBjb25zdHJ1Y3Rv
cihjb25maWcsIHJlbW90ZSwgYnVpbGRib3RSZW1vdGUsIHdvcmtlckluZm8sIG1heFJldHJ5RmFj
dG9yLCBsb2dnZXIpCiAgICAgewogICAgICAgICB0aGlzLl9uYW1lID0gY29uZmlnLnRyaWdnZXJh
YmxlTmFtZTsKICAgICAgICAgYXNzZXJ0KHR5cGVvZih0aGlzLl9uYW1lKSA9PSAnc3RyaW5nJywg
J3RyaWdnZXJhYmxlTmFtZSBtdXN0IGJlIHNwZWNpZmllZCcpOwpAQCAtMjUsNiArMjUsNyBAQCBj
bGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKIAogICAgICAgICB0aGlzLl9zeW5jZXJzID0gbnVs
bDsKICAgICAgICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2VyIHx8IHtsb2c6ICgpID0+IHsgfSwgZXJy
b3I6ICgpID0+IHsgfX07CisgICAgICAgIHRoaXMuX21heFJldHJ5RmFjdG9yID0gbWF4UmV0cnlG
YWN0b3I7CiAgICAgfQogCiAgICAgZ2V0QnVpbGRlck5hbWVUb0lETWFwKCkKQEAgLTg1LDEzICs4
NiwyMiBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgY29uc3QgdmFsaWRS
ZXF1ZXN0cyA9IHRoaXMuX3ZhbGlkYXRlUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAgICAgICAg
IGNvbnN0IGJ1aWxkUmVxdWVzdHNCeUdyb3VwID0gQnVpbGRib3RUcmlnZ2VyYWJsZS5fdGVzdEdy
b3VwTWFwRm9yQnVpbGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKICAgICAgICAgbGV0IHVwZGF0
ZXMgPSBhd2FpdCB0aGlzLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXF1ZXN0c0J5
R3JvdXApOwotICAgICAgICBsZXQgcm9vdFJldXNlVXBkYXRlcyA9IHt9CisgICAgICAgIGxldCBy
b290UmV1c2VVcGRhdGVzID0geyB9OwogICAgICAgICB0aGlzLl9sb2dnZXIubG9nKCdTY2hlZHVs
aW5nIGJ1aWxkcycpOwogICAgICAgICBjb25zdCB0ZXN0R3JvdXBMaXN0ID0gQXJyYXkuZnJvbShi
dWlsZFJlcXVlc3RzQnlHcm91cC52YWx1ZXMoKSkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1
cm4gYS5ncm91cE9yZGVyIC0gYi5ncm91cE9yZGVyOyB9KTsKIAotICAgICAgICBhd2FpdCBQcm9t
aXNlLmFsbCh0ZXN0R3JvdXBMaXN0Lm1hcCgoZ3JvdXApID0+IFtncm91cCwgdGhpcy5fbmV4dFJl
cXVlc3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKV0pCi0gICAgICAgICAgICAuZmlsdGVyKChbZ3Jv
dXAsIHJlcXVlc3RdKSA9PiB2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0KSkKLSAgICAgICAgICAg
IC5tYXAoKFtncm91cCwgcmVxdWVzdF0pID0+IHRoaXMuX3NjaGVkdWxlUmVxdWVzdChncm91cCwg
cmVxdWVzdCwgcm9vdFJldXNlVXBkYXRlcykpKTsKKyAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwo
QXJyYXkuZnJvbShidWlsZFJlcXVlc3RzQnlHcm91cC5rZXlzKCkpLm1hcCh0ZXN0R3JvdXBJZCA9
PiBUZXN0R3JvdXAuZmV0Y2hCeUlkKHRlc3RHcm91cElkLCAvKiBpZ25vcmVDYWNoZSAqLyB0cnVl
KSkpOworICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRlc3RHcm91cExpc3QpIHsKKyAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLl9uZXh0UmVxdWVzdEluR3JvdXAoZ3JvdXAsIHVw
ZGF0ZXMpOworICAgICAgICAgICAgaWYgKCF2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0KSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY29uc3Qgc2hvdWxkRGVmZXIg
PSB0aGlzLl9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0UmVxdWVzdEZvck5ld0NvbW1pdFNldChy
ZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmIChzaG91bGREZWZlcikKKyAgICAgICAgICAgICAgICB0
aGlzLl9sb2dnZXIubG9nKGBEZWZlciBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3QgIiR7cmVxdWVz
dC5pZCgpfSIgdW50aWwgY29tcGxldGVkIGJ1aWxkIHJlcXVlc3RzIGZvciBwcmV2aW91cyBjb25m
aWd1cmF0aW9uIG1lZXQgdGhlIGV4cGVjdGF0aW9uIG9yIGV4aGF1c3QgcmV0cnkuYCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2NoZWR1bGVSZXF1ZXN0
KGdyb3VwLCByZXF1ZXN0LCByb290UmV1c2VVcGRhdGVzKTsKKyAgICAgICAgfQogCiAgICAgICAg
IC8vIFB1bGwgYWxsIGJ1aWxkYm90cyBmb3IgdGhlIHNlY29uZCB0aW1lIHNpbmNlIHRoZSBwcmV2
aW91cyBzdGVwIG1heSBoYXZlIHNjaGVkdWxlZCBtb3JlIGJ1aWxkcwogICAgICAgICB1cGRhdGVz
ID0gYXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVzdHNCeUdy
b3VwKTsKQEAgLTEyMywxMSArMTMzLDM3IEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFibGUgewog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGF3YWl0IHRo
aXMuX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUoYnVpbGRSZXF1ZXN0LCB0ZXN0
R3JvdXAucmVxdWVzdHMsCisgICAgICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZVJlcXVlc3RJZldv
cmtlcklzQXZhaWxhYmxlKGJ1aWxkUmVxdWVzdCwgdGVzdEdyb3VwLnJlcXVlc3RzLAogICAgICAg
ICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRlc3RHcm91cC5idWlsZFN5bmNlciA6IHRl
c3RHcm91cC50ZXN0U3luY2VyLAogICAgICAgICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/
IHRlc3RHcm91cC5idWlsZFdvcmtlck5hbWUgOiB0ZXN0R3JvdXAudGVzdFdvcmtlck5hbWUpOwog
ICAgIH0KIAorICAgIF9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0UmVxdWVzdEZvck5ld0NvbW1p
dFNldChidWlsZFJlcXVlc3QpCisgICAgeworICAgICAgICBpZiAoYnVpbGRSZXF1ZXN0LmlzQnVp
bGQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCB0ZXN0R3Jv
dXAgPSBidWlsZFJlcXVlc3QudGVzdEdyb3VwKCk7CisgICAgICAgIGlmICh0ZXN0R3JvdXAucmVw
ZXRpdGlvblR5cGUoKSAhPSAnc2VxdWVudGlhbCcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKHRlc3RHcm91cC5pc0ZpcnN0VGVzdFJlcXVlc3QoYnVpbGRSZXF1ZXN0
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBwcmVjZWRpbmdC
dWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAucHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxkUmVxdWVz
dCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByZWNlZGluZ0J1aWxkUmVxdWVzdCAmJiAhcHJl
Y2VkaW5nQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisKKyAgICAgICAgY29uc3QgcHJldmlvdXND
b21taXRTZXQgPSBwcmVjZWRpbmdCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCkKKyAgICAgICAgaWYg
KHByZXZpb3VzQ29tbWl0U2V0ID09PSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgcmV0cnlMaW1pdCA9IHRlc3RHcm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgKiB0aGlzLl9tYXhSZXRyeUZhY3RvcjsKKyAgICAg
ICAgaWYgKHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQocHJldmlvdXNDb21t
aXRTZXQpID4gcmV0cnlMaW1pdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICByZXR1cm4gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSA+IHRlc3RHcm91cC5z
dWNjZXNzZnVsVGVzdENvdW50KHByZXZpb3VzQ29tbWl0U2V0KTsKKyAgICB9CisKICAgICBfdmFs
aWRhdGVSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKQogICAgIHsKICAgICAgICAgY29uc3QgdGVzdFBs
YXRmb3JtUGFpcnMgPSB7fTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzCmluZGV4IGFiODZhMWQ0
ZTMzNzk0YmU3OGNmYmJlMGY3NjU5OWVhODU3YmViYWYuLmNjNjUwY2E5NDVkYmFlZGY5Yjk1ZDRm
ZTBkOWNhMTU4NzkyODJhZTIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL2pzL21lYXN1cmVtZW50LXNldC1hbmFseXplci5qcwpAQCAtMTA4LDcg
KzEwOCw3IEBAIGNsYXNzIE1lYXN1cmVtZW50U2V0QW5hbHl6ZXIgewogICAgICAgICBjb25zdCBz
dGFydENvbW1pdFNldCA9IHJhbmdlV2l0aE1vc3RTaWduaWZpY2FudENoYW5nZS5zdGFydFBvaW50
LmNvbW1pdFNldCgpOwogICAgICAgICBjb25zdCBlbmRDb21taXRTZXQgPSByYW5nZVdpdGhNb3N0
U2lnbmlmaWNhbnRDaGFuZ2UuZW5kUG9pbnQuY29tbWl0U2V0KCk7CiAgICAgICAgIGNvbnN0IHN1
bW1hcnkgPSBgUG90ZW50aWFsICR7cmFuZ2VXaXRoTW9zdFNpZ25pZmljYW50Q2hhbmdlLnZhbHVl
Q2hhbmdlU3VtbWFyeS5jaGFuZ2VMYWJlbH0gb24gJHtwbGF0Zm9ybS5uYW1lKCl9IGJldHdlZW4g
JHtDb21taXRTZXQuZGlmZihzdGFydENvbW1pdFNldCwgZW5kQ29tbWl0U2V0KX1gOwotICAgICAg
ICBjb25zdCBjb25maXJtaW5nVGFza0FyZ3VtZW50cyA9IFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RD
b25maWd1cmF0aW9uKG1ldHJpYy50ZXN0KCksIHBsYXRmb3JtKSA/IFsnQ29uZmlybScsIDQsIHRy
dWVdIDogW107CisgICAgICAgIGNvbnN0IGNvbmZpcm1pbmdUYXNrQXJndW1lbnRzID0gVHJpZ2dl
cmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24obWV0cmljLnRlc3QoKSwgcGxhdGZvcm0pID8g
WydDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZV0gOiBbXTsKIAogICAgICAgICAvLyBG
SVhNRTogVGhlIGl0ZXJhdGlvbiBjb3VudCBzaG91bGQgYmUgc21hcnRlciB0aGFuIGhhcmQtY29k
aW5nLgogICAgICAgICBjb25zdCBhbmFseXNpc1Rhc2sgPSBhd2FpdCBBbmFseXNpc1Rhc2suY3Jl
YXRlKHN1bW1hcnksIHJhbmdlV2l0aE1vc3RTaWduaWZpY2FudENoYW5nZS5zdGFydFBvaW50LApk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxl
ZC1idWlsZC1yZXF1ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9y
ZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkwNWJhMjI0NWNiMDJhZTRlOTMzMTI2Yjc4OTZhNmIyOGEzMjFlNDUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJl
cXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCBtYXhpbXVt
UmV0cnlGYWN0b3IpCi17Ci0gICAgZm9yIChjb25zdCB0ZXN0R3JvdXAgb2YgdGVzdEdyb3Vwcykg
ewotICAgICAgICBpZiAoIXRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAodGVzdEdyb3VwLmlzSGlkZGVuKCkpIHsKLSAg
ICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgbWF4TWlz
c2luZ0J1aWxkUmVxdWVzdENvdW50ID0gMDsKLSAgICAgICAgbGV0IGhhc0NvbXBsZXRlZEJ1aWxk
UmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSB0cnVlOwotICAgICAgICBsZXQgaGFzVW5maW5pc2hl
ZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOwotICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0
ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7Ci0gICAgICAgICAgICBjb25zdCBidWls
ZFJlcXVlc3RzID0gdGVzdEdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmls
dGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7Ci0KLSAgICAgICAg
ICAgIGNvbnN0IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0
ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7
Ci0gICAgICAgICAgICBpZiAoIWNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50KQotICAgICAgICAg
ICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSBmYWxzZTsK
LQotICAgICAgICAgICAgaGFzQ29tcGxldGVkQnVpbGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCAm
PSAoY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgPiAwKTsKLSAgICAgICAgICAgIGNvbnN0IHVu
ZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJl
cXVlc3QpID0+ICFidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSkubGVuZ3RoOwotICAgICAgICAg
ICAgLy8gInBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50IiBtaWdodCBiZSBsYXJnZXIgdGhhbiB0
ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIGFzIHVzZXIgbWF5IGFkZCBidWlsZCBy
ZXF1ZXN0cyBtYW51YWxseS4KLSAgICAgICAgICAgIGNvbnN0IHBvdGVudGlhbGx5U3VjY2Vzc2Z1
bENvdW50ID0gY29tcGxldGVkQnVpbGRSZXF1ZXN0Q291bnQgKyB1bmZpbmlzaGVkQnVpbGRSZXF1
ZXN0Q291bnQ7Ci0gICAgICAgICAgICBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPSBNYXRo
Lm1heChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQsIHRlc3RHcm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCkgLSBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCk7Ci0KLSAgICAgICAgICAg
IGlmICh1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQpCi0gICAgICAgICAgICAgICAgaGFzVW5m
aW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgd2ls
bEV4Y2VlZE1heGltdW1SZXRyeSA9IHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnQoKSArIG1heE1p
c3NpbmdCdWlsZFJlcXVlc3RDb3VudCA+IG1heGltdW1SZXRyeUZhY3RvciAqIHRlc3RHcm91cC5p
bml0aWFsUmVwZXRpdGlvbkNvdW50KCk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQobWF4TWlz
c2luZ0J1aWxkUmVxdWVzdENvdW50IDw9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCkpOwotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhj
ZWVkTWF4aW11bVJldHJ5ICYmIGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgJiYgIWhhc0NvbXBs
ZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ICYmICF3aWxsRXhjZWVk
TWF4aW11bVJldHJ5ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQp
IHsKLSAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5hZGRNb3JlQnVpbGRSZXF1ZXN0cyhtYXhN
aXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQpOwotICAgICAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNr
ID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOwotICAgICAgICAgICAgY29uc29sZS5sb2co
YEFkZGVkICR7bWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50fSBidWlsZCByZXF1ZXN0KHMpIHRv
ICIke3Rlc3RHcm91cC5uYW1lKCl9IiBvZiBhbmFseXNpcyB0YXNrOiAke2FuYWx5c2lzVGFzay5p
ZCgpfSAtICIke2FuYWx5c2lzVGFzay5uYW1lKCl9ImApOwotICAgICAgICB9Ci0gICAgICAgIGF3
YWl0IHRlc3RHcm91cC5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOwotICAgIH0KLX0K
LQotaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKQotICAgIG1vZHVsZS5leHBvcnRz
LmNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1
ZXN0cyA9IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWls
ZWRSZXF1ZXN0czsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcwppbmRleCBkNjBmODFlMTJiZDg3N2I3
ZTUwNmMwZWQwMzY1YmRjZjcwNTU4ODhmLi5jYTVkMGY0NDA0NzBkNzk3NmI1MzUxOTY3MjYxNjlm
NGYwMzZjMTIzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVu
LWFuYWx5c2lzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tYW5h
bHlzaXMuanMKQEAgLTYsNyArNiw2IEBAIGNvbnN0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMv
cmVtb3RlLmpzJykuUmVtb3RlQVBJOwogY29uc3QgTWVhc3VyZW1lbnRTZXRBbmFseXplciA9IHJl
cXVpcmUoJy4vanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzJykuTWVhc3VyZW1lbnRTZXRB
bmFseXplcjsKIGNvbnN0IEFuYWx5c2lzUmVzdWx0c05vdGlmaWVyID0gcmVxdWlyZSgnLi9qcy9h
bmFseXNpcy1yZXN1bHRzLW5vdGlmaWVyLmpzJykuQW5hbHlzaXNSZXN1bHRzTm90aWZpZXI7CiBj
b25zdCBTdWJwcm9jZXNzID0gcmVxdWlyZSgnLi9qcy9zdWJwcm9jZXNzLmpzJykuU3VicHJvY2Vz
czsKLWNvbnN0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhG
YWlsZWRSZXF1ZXN0cyA9IHJlcXVpcmUoJy4vanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
JykuY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJl
cXVlc3RzOwogcmVxdWlyZSgnLi9qcy92My1tb2RlbHMuanMnKTsKIGdsb2JhbC5Qcml2aWxlZ2Vk
QVBJID0gcmVxdWlyZSgnLi9qcy9wcml2aWxlZ2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEk7CiAK
QEAgLTQ5LDEyICs0OCwyNiBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0aW9ucykK
ICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGFuYWx5emUgbWVhc3VyZW1lbnQgc2V0
cyBkdWUgdG8gJHtlcnJvcn1gKTsKICAgICB9CiAKKyAgICBjb25zdCBtYXhSZXRyeUZhY3RvciA9
IG9wdGlvbnNbJy0tbWF4LXJldHJ5LWZhY3RvciddOworICAgIGNvbnN0IHRlc3RHcm91cHNNYXlO
ZWVkTW9yZVJlcXVlc3RzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoQWxsVGhhdE1heU5lZWRNb3Jl
UmVxdWVzdHMoKTsKICAgICB0cnkgewotICAgICAgICBjb25zdCBub3RpZmljYXRpb25Db25maWcg
PSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyctLW5vdGlmaWNhdGlvbi1jb25m
aWctanNvbiddLCAndXRmLTgnKSk7Ci0gICAgICAgIGNvbnN0IG1heGltdW1SZXRyeUZhY3RvciA9
IG9wdGlvbnNbJy0tbWF4LXJldHJ5LWZhY3RvciddOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
TWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEFsbFRoYXRNYXlOZWVk
TW9yZVJlcXVlc3RzKCk7Ci0gICAgICAgIGF3YWl0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzTWF5TmVlZE1vcmVS
ZXF1ZXN0cywgbWF4aW11bVJldHJ5RmFjdG9yKTsKKyAgICAgICAgZm9yIChjb25zdCB0ZXN0R3Jv
dXAgb2YgdGVzdEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMpIHsKKyAgICAgICAgICAgIGNvbnN0
IHJldHJ5Q291bnQgPSBhd2FpdCB0ZXN0R3JvdXAucmVzb2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNG
bGFnKG1heFJldHJ5RmFjdG9yKTsKKyAgICAgICAgICAgIGlmICghcmV0cnlDb3VudCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3
YWl0IHRlc3RHcm91cC5mZXRjaFRhc2soKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBZGRl
ZCAke3JldHJ5Q291bnR9IGJ1aWxkIHJlcXVlc3QocykgdG8gIiR7dGVzdEdyb3VwLm5hbWUoKX0i
IG9mIGFuYWx5c2lzIHRhc2s6ICR7YW5hbHlzaXNUYXNrLmlkKCl9IC0gIiR7YW5hbHlzaXNUYXNr
Lm5hbWUoKX0iYCk7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBj
b25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgaWYgKHR5cGVvZihlcnJvci5zdGFjaykgPT0g
J3N0cmluZycpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGxpbmUgb2YgZXJyb3Iuc3RhY2suc3Bs
aXQoJ1xuJykpCisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihsaW5lKTsKKyAgICAgICAg
fQorICAgIH0KIAorICAgIHRyeSB7CisgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbkNvbmZpZyA9
IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNbJy0tbm90aWZpY2F0aW9uLWNvbmZp
Zy1qc29uJ10sICd1dGYtOCcpKTsKICAgICAgICAgY29uc3QgdGVzdEdyb3Vwc05lZWROb3RpZmlj
YXRpb24gPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hBbGxXaXRoTm90aWZpY2F0aW9uUmVhZHkoKTsK
ICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUmVtb3RlQVBJID0gbmV3IFJlbW90ZUFQSShub3Rp
ZmljYXRpb25Db25maWcubm90aWZpY2F0aW9uU2VydmVyQ29uZmlnKTsKICAgICAgICAgY29uc3Qg
bm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZyA9IG5vdGlmaWNhdGlvbkNvbmZpZy5ub3RpZmljYXRp
b25NZXNzYWdlQ29uZmlnOwpAQCAtNjMsNyArNzYsNyBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNp
c0xvb3Aob3B0aW9ucykKIAogICAgICAgICBhd2FpdCBub3RpZmllci5zZW5kTm90aWZpY2F0aW9u
c0ZvclRlc3RHcm91cHModGVzdEdyb3Vwc05lZWROb3RpZmljYXRpb24pOwogICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZXRyeSB0ZXN0IGdy
b3VwcyBkdWUgdG8gJHtlcnJvcn1gKTsKKyAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRv
IHNlbmQgbm90aWZpY2F0aW9uIGZvciB0ZXN0IGdyb3VwcyBkdWUgdG8gJHtlcnJvcn1gKTsKICAg
ICB9CiAKICAgICBjb25zb2xlLmxvZyhgU2xlZXBpbmcgZm9yICR7c2Vjb25kc1RvU2xlZXB9IHNl
Y29uZHMuYCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3lu
Yy1idWlsZGJvdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxk
Ym90LmpzCmluZGV4IDZmMzUwZWIyNDgyY2Y2ZDE0OGNhODQxNDBhMmNkMDRkOGUzMDZlNDIuLjcw
YTJhNGUzZDQyMzUwYmQyZmExYjM0MzI4NzRkZjY4NTVlYzUzZDYgMTAwNzU1Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzCkBAIC0xMiw2ICsxMiw3IEBA
IGZ1bmN0aW9uIG1haW4oYXJndikKICAgICAgICAge25hbWU6ICctLXNlcnZlci1jb25maWctanNv
bicsIHJlcXVpcmVkOiB0cnVlfSwKICAgICAgICAge25hbWU6ICctLWJ1aWxkYm90LWNvbmZpZy1q
c29uJywgcmVxdWlyZWQ6IHRydWV9LAogICAgICAgICB7bmFtZTogJy0tc2Vjb25kcy10by1zbGVl
cCcsIHR5cGU6IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDEyMH0sCisgICAgICAgIHtuYW1lOiAnLS1t
YXgtcmV0cnktZmFjdG9yJywgdHlwZTogcGFyc2VGbG9hdCwgZGVmYXVsdDogM30sCiAgICAgXSk7
CiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1cm47CkBAIC0yNCw2ICsyNSw3IEBAIGZ1
bmN0aW9uIHN5bmNMb29wKG9wdGlvbnMpCiAgICAgbGV0IHNlcnZlckNvbmZpZyA9IEpTT04ucGFy
c2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNbJy0tc2VydmVyLWNvbmZpZy1qc29uJ10sICd1dGY4
JykpOwogICAgIGxldCBidWlsZGJvdENvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5j
KG9wdGlvbnNbJy0tYnVpbGRib3QtY29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7CiAgICAgbGV0IGJ1
aWxkYm90UmVtb3RlID0gbmV3IFJlbW90ZUFQSShidWlsZGJvdENvbmZpZy5zZXJ2ZXIpOworICAg
IGNvbnN0IG1heFJldHJ5RmFjdG9yID0gb3B0aW9uc1snLS1tYXgtcmV0cnktZmFjdG9yJ107CiAK
ICAgICAvLyB2MyBtb2RlbHMgdXNlIHRoZSBnbG9iYWwgUmVtb3RlQVBJIHRvIGFjY2VzcyB0aGUg
cGVyZiBkYXNoYm9hcmQuCiAgICAgZ2xvYmFsLlJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkoc2Vy
dmVyQ29uZmlnLnNlcnZlcik7CkBAIC0zMSw3ICszMyw3IEBAIGZ1bmN0aW9uIHN5bmNMb29wKG9w
dGlvbnMpCiAgICAgY29uc29sZS5sb2coYEZldGNoaW5nIHRoZSBtYW5pZmVzdC4uLmApOwogCiAg
ICAgY29uc3QgbWFrZVRyaWdnZXJhYmxlID0gZnVuY3Rpb24gKCkgewotICAgICAgICByZXR1cm4g
bmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoYnVpbGRib3RDb25maWcsIGdsb2JhbC5SZW1vdGVBUEks
IGJ1aWxkYm90UmVtb3RlLCBzZXJ2ZXJDb25maWcud29ya2VyLCBjb25zb2xlKQorICAgICAgICBy
ZXR1cm4gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoYnVpbGRib3RDb25maWcsIGdsb2JhbC5SZW1v
dGVBUEksIGJ1aWxkYm90UmVtb3RlLCBzZXJ2ZXJDb25maWcud29ya2VyLCBtYXhSZXRyeUZhY3Rv
ciwgY29uc29sZSkKICAgICB9OwogCiAgICAgTWFuaWZlc3QuZmV0Y2goKS50aGVuKCgpID0+IHsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lz
LXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFs
eXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDhkMjhhYzRmYWZjNDhlYWExNzgyYzVkZjFlYWI3Nzcw
OTJkODdmMTQuLjJlNjcwYjA3OTUxMTRlYjY3NTUyNWMyZGY3YmVhMTM4ZDMzOGU3YzAgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2st
dGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlz
aXMtdGFzay10ZXN0cy5qcwpAQCAtMzA3LDcgKzMwNyw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rh
c2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5hbHlzaXMgdGFzayB3
aXRoIGNvbmZpcm1pbmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCBhc3luYyAoKSA9PiB7
CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5k
RW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywg
c3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBB
bmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25m
aXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sw
XS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC0zMTgsNyArMzE4LDcgQEAgZGVzY3JpYmUoJ0Fu
YWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2Fp
dEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmws
ICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6
IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQs
IG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywK
ICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAn
Q29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBbCiAgICAgICAgICAgICAgICAg
ICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAgICAgICAgICcyMic6IHtyZXZp
c2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9
fSwKQEAgLTMyOSw3ICszMjksNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewog
CiAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIGFuYWx5c2lzIHRhc2sgYW5kIHRlc3QgZ3JvdXBz
IHdpdGggIm5lZWRzTm90aWZpY2F0aW9uIiBzZXQgdG8gZmFsc2UgaWYgc3BlY2lmaWVkIGluIGNy
ZWF0aW9uJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVu
ZFBvaW50XSA9IG1vY2tTdGFydEFuZEVuZFBvaW50cygpOwotICAgICAgICAgICAgQW5hbHlzaXNU
YXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQs
IGZhbHNlKTsKKyAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFy
dFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCBmYWxzZSk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUt
Y3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC0zNDAs
NyArMzQwLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lz
LXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwot
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2Nv
bmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25m
aXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBl
bmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lv
blNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1y
ZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAg
ICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJl
dmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzUxLDcgKzM1MSw3IEBAIGRlc2NyaWJl
KCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBzeW5jIHRoZSBu
ZXcgYW5hbHlzaXMgdGFzayBzdGF0dXMgb25jZSBpdCBpcyBjcmVhdGVkJywgYXN5bmMgKCkgPT4g
ewogICAgICAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IG1vY2tTdGFydEFu
ZEVuZFBvaW50cygpOwotICAgICAgICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlz
aXNUYXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScs
IDQsIHRydWUpOworICAgICAgICAgICAgY29uc3QgY3JlYXRpbmdQcm9taXNlID0gQW5hbHlzaXNU
YXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQs
ICdhbHRlcm5hdGluZycsIHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAn
L3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVl
c3RzWzBdLnJlc29sdmUoewpAQCAtMzYyLDcgKzM2Miw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rh
c2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1
ZXN0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVk
c05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVz
dHNbMV0uZGF0YSwge25hbWU6ICdjb25maXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05v
dGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAgICAg
ICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZpcm0n
LCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7JzEx
Jzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBw
YXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246ICdp
b3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBAIC00
MTIsNyArNDEyLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKIAogICAgICAg
ICBpdCgnc2hvdWxkIHJldHVybiBhbiByZWplY3RlZCBwcm9taXNlIHdoZW4gYW5hbHlzaXMgdGFz
ayBjcmVhdGlvbiBmYWlsZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3Rh
cnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAg
ICBjb25zdCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywg
c3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBj
b25zdCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3Rh
cnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUt
Y3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC00MjMs
NyArNDIzLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lz
LXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwot
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2Nv
bmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZp
cm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0
aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5k
UnVuOiAyLCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25T
ZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2
aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZp
c2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTQ1NywxMSArNDU3LDExIEBAIGRlc2NyaWJl
KCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5h
bHlzaXMgdGFzayB3aXRoIGNvbmZpcm1pbmcgcmVwZXRpdGlvbiBjb3VudCBzcGVjaWZpZWQnLCAo
KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0
YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25m
aXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAg
ICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2ludCwgZW5kUG9pbnQs
ICdDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10
YXNrJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge25hbWU6ICdjb25m
aXJtJywgcmVwZXRpdGlvbkNvdW50OiA0LCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2VyJywg
d29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsCisgICAgICAgICAgICAgICAgc3RhcnRSdW46IDEs
IGVuZFJ1bjogMiwgd29ya2VyTmFtZTogJ3dvcmtlcicsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dv
cmQnLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICB0ZXN0
R3JvdXBOYW1lOiAnQ29uZmlybScsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAg
ICB7JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBu
dWxsLCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNp
b246ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0s
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJv
dC1zeW5jZXItdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9i
dWlsZGJvdC1zeW5jZXItdGVzdHMuanMKaW5kZXggODc5ODZkMzZmNTZmYzUzZjg5ZGFjMGVjZTUw
OWExNDk3YWIzNzFjZS4uMDM0MmFjMDFhNGFmNWRiY2MxNTY5NjIyYTJkYjFkNjVhN2MyNjI3MyAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qt
c3luY2VyLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwpAQCAtMTg3LDcgKzE4Nyw3IEBAIGZ1bmN0aW9uIGNy
ZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChwbGF0Zm9ybSwgdGVzdCkKIAogICAgIHJldHVybiBCdWls
ZFJlcXVlc3QuZW5zdXJlU2luZ2xldG9uKCcxNjczMy0nICsgcGxhdGZvcm0uaWQoKSwgeyd0cmln
Z2VyYWJsZSc6IE1vY2tNb2RlbHMudHJpZ2dlcmFibGUsCiAgICAgICAgIHJlcG9zaXRvcnlHcm91
cDogTW9ja01vZGVscy5zdm5SZXBvc2l0b3J5R3JvdXAsCi0gICAgICAgICdjb21taXRTZXQnOiBj
b21taXRTZXQsICdzdGF0dXMnOiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAndGVz
dCc6IHRlc3R9KTsKKyAgICAgICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdw
ZW5kaW5nJywgJ3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdCwgb3JkZXI6IDB9KTsK
IH0KIAogZnVuY3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0V2l0aFBhdGNoKHBsYXRmb3Jt
LCB0ZXN0LCBvcmRlcikKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC1hbmFseXplci10ZXN0cy5qcwpp
bmRleCAwN2ZjYjNkYjNkZTZiMTJlNmI5NDdjYzYzMGNkMDdiYjZhMDRmYmJhLi4wOTA3YTBiMDE2
YTA1MTQ4MzQ3ZGNiM2Y0NzdlMmE5MjU5OGFhZmJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0
LWFuYWx5emVyLXRlc3RzLmpzCkBAIC0yMzUsNiArMjM1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVt
ZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50
OiA0LAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAgICAg
ICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBldGl0
aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6IFt7
JzExJzoge3JldmlzaW9uOiAzNSwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwK
ICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogNDQsIG93bmVyUmV2aXNpb246
IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAgICAgICB9KTsKQEAgLTI5NCw2ICsyOTUsNyBA
QCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAgICAgICAg
ICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3VwTmFtZTog
J0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAg
ICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAg
ICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2aXNpb246IDM1LCBvd25lclJldmlzaW9uOiBu
dWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9u
OiA0NCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAgICAgIH0p
OwpAQCAtNTI2LDYgKzUyOCw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5emVyJywg
KCkgPT4gewogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAgICAgICAg
ICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVlZHNOb3Rp
ZmljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5h
dGluZycsCiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZpc2lvbjog
NDAsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAg
ICAgIHsnMTEnOiB7cmV2aXNpb246IDQ5LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVs
bH19XQogICAgICAgICAgICAgfSk7CkBAIC02MTgsNiArNjIxLDcgQEAgZGVzY3JpYmUoJ01lYXN1
cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNv
dW50OiA0LAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywKICAgICAg
ICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICByZXBl
dGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lvblNldHM6
IFt7JzExJzoge3JldmlzaW9uOiAzLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19
LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3JldmlzaW9uOiA4LCBvd25lclJldmlzaW9u
OiBudWxsLCBwYXRjaDogbnVsbH19XQogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1m
YWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA4MmQ4MGRjYTVlZjhmMDgzNTg5YzY1NDFiYTI0NTZhZmQxMjg2MjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotY29uc3QgYXNzZXJ0
ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Ci1yZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMn
KTsKLWNvbnN0IE1vY2tNb2RlbHMgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVs
cy5qcycpLk1vY2tNb2RlbHM7Ci1jb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQSTsKLWNvbnN0IE5vZGVQcml2
aWxlZ2VkQVBJID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvcHJpdmlsZWdlZC1hcGknKS5Qcml2aWxl
Z2VkQVBJOwotY29uc3QgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBz
V2l0aEZhaWxlZFJlcXVlc3RzID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1
aWxkLXJlcXVlc3RzJykuY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBz
V2l0aEZhaWxlZFJlcXVlc3RzOwotCi0KLWZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcp
IHsKLSAgICBjb25zdCBuZWVkc05vdGlmaWNhdGlvbiA9IGNvbmZpZy5uZWVkc05vdGlmaWNhdGlv
bjsKLSAgICBjb25zdCBpbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gY29uZmlnLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQ7Ci0gICAgY29uc3QgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGNvbmZpZy5tYXlO
ZWVkTW9yZVJlcXVlc3RzOwotICAgIGNvbnN0IGhpZGRlbiA9IGNvbmZpZy5oaWRkZW47Ci0gICAg
Y29uc3Qgc3RhdHVzTGlzdCA9IGNvbmZpZy5zdGF0dXNMaXN0OwotCi0gICAgcmV0dXJuIHsKLSAg
ICAgICAgInRlc3RHcm91cHMiOiBbewotICAgICAgICAgICAgImlkIjogIjIxMjgiLAotICAgICAg
ICAgICAgInRhc2siOiAiMTM3NiIsCi0gICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAg
ICAgICAgICAgIm5hbWUiOiAiQ29uZmlybSIsCi0gICAgICAgICAgICAiYXV0aG9yIjogInJuaXdh
IiwKLSAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwLAotICAgICAgICAgICAg
aGlkZGVuLAotICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb24sCi0gICAgICAgICAgICAiYnVp
bGRSZXF1ZXN0cyI6IFsiMTY5ODUiLCAiMTY5ODYiLCAiMTY5ODciLCAiMTY5ODgiLCAiMTY5ODki
LCAiMTY5OTAiXSwKLSAgICAgICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYiXSwK
LSAgICAgICAgICAgICJub3RpZmljYXRpb25TZW50QXQiOiBudWxsLAotICAgICAgICAgICAgaW5p
dGlhbFJlcGV0aXRpb25Db3VudCwKLSAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMKLSAg
ICAgICAgfV0sCi0gICAgICAgICJidWlsZFJlcXVlc3RzIjogW3sKLSAgICAgICAgICAgICJpZCI6
ICIxNjk4NSIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAi
dGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAg
ICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMCIsCi0gICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xp
c3RbMF0sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51
bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7
Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODYiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjog
IjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9y
ZGVyIjogIjEiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKLSAgICAgICAgICAg
ICJzdGF0dXMiOiBzdGF0dXNMaXN0WzFdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAg
ICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1
MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTg3IiwKLSAgICAgICAg
ICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAg
ICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4
IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIyIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAi
NDI1NSIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKLSAgICAgICAgICAg
ICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJj
cmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6
ICIxNjk4OCIsCi0gICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAi
dGVzdCI6ICI4NDQiLAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAg
ICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xp
c3RbM10sCi0gICAgICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51
bGwsCi0gICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7
Ci0gICAgICAgICAgICAiaWQiOiAiMTY5ODkiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjog
IjMiLAotICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICIzMSIsCi0gICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9y
ZGVyIjogIjMiLAotICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKLSAgICAgICAgICAg
ICJzdGF0dXMiOiBzdGF0dXNMaXN0WzRdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAg
ICAgICAgICAiYnVpbGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1
MTQwMDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTkwIiwKLSAgICAgICAg
ICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAg
ICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4
IiwKLSAgICAgICAgICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAi
NDI1NiIsCi0gICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKLSAgICAgICAgICAg
ICJ1cmwiOiBudWxsLAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJj
cmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCi0gICAgICAgIH1dLAotICAgICAgICAiY29tbWl0U2V0
cyI6IFt7Ci0gICAgICAgICAgICAiaWQiOiAiNDI1NSIsCi0gICAgICAgICAgICAicmV2aXNpb25J
dGVtcyI6IFt7ImNvbW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1pdCI6ICI5MzExNiJ9XSwKLSAgICAg
ICAgICAgICJjdXN0b21Sb290cyI6IFtdLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQi
OiAiNDI1NiIsCi0gICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4Nzgz
MiJ9LCB7ImNvbW1pdCI6ICI5NjMzNiJ9XSwKLSAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtd
LAotICAgICAgICB9XSwKLSAgICAgICAgImNvbW1pdHMiOiBbewotICAgICAgICAgICAgImlkIjog
Ijg3ODMyIiwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAotICAgICAgICAgICAgInJl
dmlzaW9uIjogIjEwLjExIDE1QTI4NCIsCi0gICAgICAgICAgICAidGltZSI6IDAKLSAgICAgICAg
fSwgewotICAgICAgICAgICAgImlkIjogIjkzMTE2IiwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5
IjogIjExIiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTE2MjIiLAotICAgICAgICAgICAg
InRpbWUiOiAxNDQ1OTQ1ODE2ODc4Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICI4
NzgzMiIsCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICI5IiwKLSAgICAgICAgICAgICJyZXZp
c2lvbiI6ICIxMC4xMSAxNUEyODQiLAotICAgICAgICAgICAgInRpbWUiOiAwCi0gICAgICAgIH0s
IHsKLSAgICAgICAgICAgICJpZCI6ICI5NjMzNiIsCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICIxMSIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTkyNzM2IiwKLSAgICAgICAgICAgICJ0
aW1lIjogMTQ0ODIyNTMyNTY1MAotICAgICAgICB9XSwKLSAgICAgICAgInVwbG9hZGVkRmlsZXMi
OiBbXSwKLSAgICAgICAgInN0YXR1cyI6ICJPSyIKLSAgICB9OwotfQotCi1kZXNjcmliZSgnY3Jl
YXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3Rz
JywgKCkgPT4gewotICAgIGxldCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KG51bGws
IE5vZGVQcml2aWxlZ2VkQVBJKTsKLSAgICBNb2NrTW9kZWxzLmluamVjdCgpOwotICAgIGJlZm9y
ZUVhY2goKCkgPT4gewotICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgnd29ya2VyX25h
bWUnLCAncGFzc3dvcmQnKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgYWRkIG9uZSBtb3Jl
IGJ1aWxkIHJlcXVlc3Qgd2hlbiBvbmUgb2YgdGhlIGV4aXN0aW5nIHJlcXVlc3RzIGZhaWxlZCcs
IGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90
aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsi
Y29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJmYWlsZWQiXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAo
dGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5f
Y3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVB
ZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVz
dEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwot
Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
YWRkLWJ1aWxkLXJlcXVlc3RzJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNb
MF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFz
c3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMX0pOwotICAgICAgICByZXF1ZXN0c1sw
XS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVz
dCgpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOwot
ICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBhZGQgMiBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4g
MiBmYWlsZWQgYnVpbGQgcmVxdWVzdCBmb3VuZCBmb3IgYSBjb21taXQgc2V0JywgYXN5bmMgKCkg
PT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246
IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0
cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQi
LCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxl
ZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25m
aWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNG
cm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWls
ZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsK
LSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVx
dWVzdHMnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29y
a2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3Vw
OiAnMjEyOCcsIGFkZENvdW50OiAyfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsK
LQotICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7Ci0gICAgfSk7Ci0KLSAg
ICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWxsIHJl
cXVlc3RzIGZvciBhIGNvbW1pdCBzZXQgaGFkIGZhaWxlZCcsIGFzeW5jICgpID0+IHsKLSAgICAg
ICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5p
dGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVu
OiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIs
ICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAgICAg
IGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAg
Y29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0
R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRl
c3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotCi0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKLSAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtl
cl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsK
LSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVz
dHMgd2hlbiAibWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgaXMgbm90IHNldCcsIGFzeW5jICgpID0+
IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFs
c2UsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIs
ICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVk
Il19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZp
Zyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zy
b21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxk
UmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwot
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICB9KTsKLQotICAg
IGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiBidWlsZCBy
ZXF1ZXN0IGlzIGhpZGRlbicsIGFzeW5jICgpID0+IHsKLSAgICAgICAgY29uc3QgdGVzdEdyb3Vw
Q29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiB0cnVlLAotICAgICAgICAg
ICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21w
bGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNh
bXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBz
ID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0g
ICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWls
ZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9w
cml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwotICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQ
YXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czog
ZmFsc2V9KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwotCi0gICAg
aXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0IHdoZW4gd2VcJ3ZlIGFs
cmVhZHkgaGl0IHRoZSBtYXhpbXVtIHJldHJ5IGNvdW50JywgYXN5bmMgKCkgPT4gewotICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0
aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46
IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVk
IiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29u
c3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25z
dCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91
cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdy
b3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAxLjUpOwotICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7Ci0gICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJf
bmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVk
TW9yZVJlcXVlc3RzOiBmYWxzZX0pOwotICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7Ci0g
ICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIHdoZW4gYWRkaXRpb25h
bCBidWlsZCByZXF1ZXN0cyBhcmUgc3RpbGwgcGVuZGluZycsIGFzeW5jICgpID0+IHsKLSAgICAg
ICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5p
dGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVu
OiBmYWxzZSwKLSAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRl
ZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgInBlbmRpbmciLCAicGVuZGluZyJdfTsKLSAgICAgICAg
Y29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RH
cm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVz
dEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOwotICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2Vy
X25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVl
ZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKLSAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwot
ICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3QgY2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0IGZs
YWcgd2hlbiBvbmUgY29tbWl0IHNldCBoYXMgbm90IGdvdCBhIHN1Y2Nlc3NmdWwgcnVuIGJ1dCBo
YXZlIHBlbmRpbmcgYnVpbGRzJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3Jv
dXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNv
dW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAg
ICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJm
YWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2Ft
cGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAg
ICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxl
ZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAwKTsKLSAgICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwppbmRleCA1YWE5MWU4YWEw
MmUxMWE2NjQ1MWQzMWQ5NjM2OTZjZWQ4ZDQ5ODNlLi5lYjY2MjExMThiNTExMDI4NjY1NmU5ZWEy
OGI4OGNmYTkwOWRkYTcxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwpAQCAtNyw3ICs3LDcgQEAgY29uc3Qg
Tm9kZVByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuLi90b29scy9qcy9wcml2aWxlZ2VkLWFwaS5q
cycpLlByaXZpbGVnZWRBUEkKIGNvbnN0IE1vY2tNb2RlbHMgPSByZXF1aXJlKCcuL3Jlc291cmNl
cy9tb2NrLXYzLW1vZGVscy5qcycpLk1vY2tNb2RlbHM7CiBjb25zdCBNb2NrUmVtb3RlQVBJID0g
cmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQSTsK
IAotZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5lZWRzTm90aWZpY2F0aW9uPXRydWUsIGluaXRp
YWxSZXBldGl0aW9uQ291bnQ9MiwgbWF5TmVlZE1vcmVSZXF1ZXN0cz10cnVlKSB7CitmdW5jdGlv
biBzYW1wbGVUZXN0R3JvdXAobmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50ID0gMiwgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IHRydWUpIHsKICAgICByZXR1cm4g
ewogICAgICAgICAidGVzdEdyb3VwcyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiMjEyOCIsCkBA
IC0xMDksNiArMTA5LDE0MCBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAobmVlZHNOb3RpZmlj
YXRpb249dHJ1ZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudD0yLCBtYXlOZQogICAgIH07CiB9CiAK
K2Z1bmN0aW9uIHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KGNvbmZpZykgeworICAgIGNvbnN0IG5l
ZWRzTm90aWZpY2F0aW9uID0gY29uZmlnLm5lZWRzTm90aWZpY2F0aW9uOworICAgIGNvbnN0IGlu
aXRpYWxSZXBldGl0aW9uQ291bnQgPSBjb25maWcuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAg
ICBjb25zdCBtYXlOZWVkTW9yZVJlcXVlc3RzID0gY29uZmlnLm1heU5lZWRNb3JlUmVxdWVzdHM7
CisgICAgY29uc3QgaGlkZGVuID0gY29uZmlnLmhpZGRlbjsKKyAgICBjb25zdCBzdGF0dXNMaXN0
ID0gY29uZmlnLnN0YXR1c0xpc3Q7CisgICAgY29uc3QgY29tbWl0U2V0TGlzdCA9IGNvbmZpZy5j
b21taXRTZXRMaXN0IHx8IFsnNDI1NScsICc0MjU2JywgJzQyNTUnLCAnNDI1NicsICc0MjU1Jywg
JzQyNTYnXTsKKyAgICBjb25zdCByZXBldGl0aW9uVHlwZSA9IGNvbmZpZy5yZXBldGl0aW9uVHlw
ZSB8fCAnYWx0ZXJuYXRpbmcnOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRlc3RHcm91cHMi
OiBbeworICAgICAgICAgICAgImlkIjogIjIxMjgiLAorICAgICAgICAgICAgInRhc2siOiAiMTM3
NiIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgIm5hbWUiOiAi
Q29uZmlybSIsCisgICAgICAgICAgICAiYXV0aG9yIjogInJuaXdhIiwKKyAgICAgICAgICAgICJj
cmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwLAorICAgICAgICAgICAgaGlkZGVuLAorICAgICAgICAg
ICAgbmVlZHNOb3RpZmljYXRpb24sCisgICAgICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFsiMTY5
ODUiLCAiMTY5ODYiLCAiMTY5ODciLCAiMTY5ODgiLCAiMTY5ODkiLCAiMTY5OTAiXSwKKyAgICAg
ICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYiXSwKKyAgICAgICAgICAgICJub3Rp
ZmljYXRpb25TZW50QXQiOiBudWxsLAorICAgICAgICAgICAgaW5pdGlhbFJlcGV0aXRpb25Db3Vu
dCwKKyAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMsCisgICAgICAgICAgICByZXBldGl0
aW9uVHlwZQorICAgICAgICB9XSwKKyAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbeworICAgICAg
ICAgICAgImlkIjogIjE2OTg1IiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAg
ICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAor
ICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIw
IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzBdLAorICAgICAgICAg
ICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMF0sCisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAg
ICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4
ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiMTY5ODYiLAorICAgICAg
ICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAg
ICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIx
MjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjEiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6
IGNvbW1pdFNldExpc3RbMV0sCisgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsxXSwK
KyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAg
ICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAg
ICAgICAgICJpZCI6ICIxNjk4NyIsCisgICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisg
ICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwK
KyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAi
MiIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFsyXSwKKyAgICAgICAg
ICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzJdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisg
ICAgICAgICAgICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2
ODg1MTQwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTg4IiwKKyAgICAg
ICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisg
ICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIy
MTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIzIiwKKyAgICAgICAgICAgICJjb21taXRTZXQi
OiBjb21taXRTZXRMaXN0WzNdLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10s
CisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisg
ICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAg
ICAgICAgICAiaWQiOiAiMTY5ODkiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAor
ICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIs
CisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjog
IjQiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbNF0sCisgICAgICAg
ICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs0XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAor
ICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4
Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk5MCIsCisgICAg
ICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAor
ICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAi
MjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiNSIsCisgICAgICAgICAgICAiY29tbWl0U2V0
IjogY29tbWl0U2V0TGlzdFs1XSwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzVd
LAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAor
ICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfV0sCisgICAg
ICAgICJjb21taXRTZXRzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICI0MjU1IiwKKyAgICAgICAg
ICAgICJyZXZpc2lvbkl0ZW1zIjogW3siY29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0IjogIjkz
MTE2In1dLAorICAgICAgICAgICAgImN1c3RvbVJvb3RzIjogW10sCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICJpZCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjogW3si
Y29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0IjogIjk2MzM2In1dLAorICAgICAgICAgICAgImN1
c3RvbVJvb3RzIjogW10sCisgICAgICAgIH1dLAorICAgICAgICAiY29tbWl0cyI6IFt7CisgICAg
ICAgICAgICAiaWQiOiAiODc4MzIiLAorICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIsCisg
ICAgICAgICAgICAicmV2aXNpb24iOiAiMTAuMTEgMTVBMjg0IiwKKyAgICAgICAgICAgICJ0aW1l
IjogMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiOTMxMTYiLAorICAgICAgICAg
ICAgInJlcG9zaXRvcnkiOiAiMTEiLAorICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MTYyMiIs
CisgICAgICAgICAgICAidGltZSI6IDE0NDU5NDU4MTY4NzgKKyAgICAgICAgfSwgeworICAgICAg
ICAgICAgImlkIjogIjg3ODMyIiwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAorICAg
ICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4NCIsCisgICAgICAgICAgICAidGltZSI6
IDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjk2MzM2IiwKKyAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIjExIiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTI3MzYiLAor
ICAgICAgICAgICAgInRpbWUiOiAxNDQ4MjI1MzI1NjUwCisgICAgICAgIH1dLAorICAgICAgICAi
dXBsb2FkZWRGaWxlcyI6IFtdLAorICAgICAgICAic3RhdHVzIjogIk9LIgorICAgIH07Cit9CisK
IGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgTW9ja01vZGVscy5pbmpl
Y3QoKTsKICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KCdodHRwczov
L3BlcmYud2Via2l0Lm9yZycsIEJyb3dzZXJQcml2aWxlZ2VkQVBJKTsKQEAgLTI0OSw3ICszODMs
NyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGdyb3VwLmlzSGlkZGVuKCksIGZhbHNlKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChncm91cC5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCgrZ3JvdXAuY3JlYXRlZEF0KCksIDE0NTg2ODg1MTQwMDApOwotICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBzYW1wbGVUZXN0R3JvdXAoKVsn
YnVpbGRSZXF1ZXN0cyddLmxlbmd0aCAvIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgc2FtcGxlVGVzdEdyb3VwKClbJ2J1aWxkUmVx
dWVzdHMnXS5sZW5ndGggLyAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayhncm91cC5oYXNQZW5k
aW5nKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5oYXNGaW5pc2hlZCgpKTsKICAg
ICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAuaGFzU3RhcnRlZCgpKTsKQEAgLTQ2Miw3ICs1OTYs
NyBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc2V0
Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQsICcxOTE2MjMnKTsK
ICAgICAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMuc2hh
cmVkUmVwb3NpdG9yeSwgJzgwMjI5Jyk7CiAKLSAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBU
ZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUtdGFzaycsIE1vY2tNb2RlbHMuc29tZVBsYXRm
b3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29tZS1ncm91cCcsIDQsIFtzZXQxLCBzZXQyXSwg
dHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gVGVzdEdyb3VwLmNyZWF0ZVdpdGhU
YXNrKCdzb21lLXRhc2snLCBNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVscy5zb21l
VGVzdCwgJ3NvbWUtZ3JvdXAnLCA0LCAnYWx0ZXJuYXRpbmcnLCBbc2V0MSwgc2V0Ml0sIHRydWUs
ICdhbHRlcm5hdGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzFd
LnJlc29sdmUoewpAQCAtNDc1LDcgKzYwOSw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzJdLmRhdGEs
IHt0YXNrTmFtZTogJ3NvbWUtdGFzaycsIG5hbWU6ICdzb21lLWdyb3VwJywgcGxhdGZvcm06IDY1
LCB0ZXN0OiAxLAogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwgcmV2aXNpb25T
ZXRzOiBbeycxMSc6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246
ICIxOTE2MjIifSwKICAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19LCB7JzExJzoge293bmVyUmV2aXNp
b246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMyJ9LAotICAgICAgICAgICAg
ICAgICAgICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9u
OiAiODAyMjkifX1dLCBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgdG9rZW46ICdhYmMnfSk7Cisg
ICAgICAgICAgICAgICAgICAgICcxNic6IHtvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVs
bCwgcmV2aXNpb246ICI4MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0
aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgdG9rZW46ICdhYmMnfSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdy
b3VwJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAgICAgICAg
ICB0YXNrSWQ6IDEyMywKQEAgLTQ4Niw2ICs2MjAsMTk2IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10ubWV0
aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJsLCAn
L2FwaS9hbmFseXNpcy10YXNrcz9pZD0xMjMnKTsKICAgICAgICAgfSk7Ci0gICAgfSkKKyAgICB9
KTsKKworICAgIGRlc2NyaWJlKCdyZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcnLCAoKSA9
PiB7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QobnVsbCwg
Tm9kZVByaXZpbGVnZWRBUEkpOworICAgICAgICBNb2NrTW9kZWxzLmluamVjdCgpOworICAgICAg
ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJl
KCd3b3JrZXJfbmFtZScsICdwYXNzd29yZCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIGFkZCBvbmUgbW9yZSBidWlsZCByZXF1ZXN0IHdoZW4gb25lIG9mIHRoZSBleGlzdGlu
ZyByZXF1ZXN0cyBmYWlsZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0
R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlv
bkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAg
ICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21w
bGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAg
ICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsK
KyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zy
b21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVz
b2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29y
a2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRk
Q291bnQ6IDEsIGNvbW1pdFNldDogbnVsbH0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIx
MjgnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBhZGQgdHdvIG1vcmUgYnVp
bGQgcmVxdWVzdHMgd2hlbiB0d28gZmFpbGVkIGJ1aWxkIHJlcXVlc3QgZm91bmQgZm9yIGEgY29t
bWl0IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZp
ZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAg
ICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21w
bGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEg
PSBzYW1wbGVUZXN0R3JvdXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAg
Y29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0
R3JvdXBzKGRhdGEpOworICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1v
cmVSZXF1ZXN0c0ZsYWcoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVu
Z3RoLCAxKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9w
cml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdv
cmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMiwgY29t
bWl0U2V0OiBudWxsfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisKKyAg
ICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVl
c3RzIHdoZW4gIm1heV9uZWVkX21vcmVfcmVxdWVzdHMiIGlzIG5vdCBzZXQnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiBmYWxzZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNv
bXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQi
LCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZv
clJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0g
VGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAg
ICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3Rz
IHdoZW4gYSB0ZXN0IGdyb3VwIGlzIGhpZGRlbicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRp
YWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQi
LCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OworICAg
ICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENv
bmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVN
b2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBz
WzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1l
OiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4
JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBd
LnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1
bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuIGFsbCByZXF1ZXN0cyBmb3IgYSBjb21taXQgc2V0
IGhhZCBmYWlsZWQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBD
b25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50
OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAg
ICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAi
ZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRh
ID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVz
dEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1heU5lZWRN
b3JlUmVxdWVzdHNGbGFnKDMpOworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOwogCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmls
ZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBh
c3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBm
YWxzZX0pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsK
KworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdo
ZW4gZG9pbmcgc28gd2lsbCBleGNlZWQgdGhlIHJldHJ5IGxpbWl0JywgYXN5bmMgKCkgPT4gewor
ICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1
ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRl
ZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIl19
OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RH
cm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9j
cmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0
R3JvdXBzWzBdLnJlc29sdmVNYXlOZWVkTW9yZVJlcXVlc3RzRmxhZygxLjUpOworICAgICAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5h
bWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIx
MjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAgICAgICAgcmVxdWVzdHNb
MF0ucmVzb2x2ZSgpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hl
ZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaXRpb25hbCBidWlsZCByZXF1ZXN0cyBh
cmUgc3RpbGwgcGVuZGluZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RH
cm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9u
Q291bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAg
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxl
ZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OworICAgICAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hl
ZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlO
ZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3Jr
ZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0
czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3QgY2xlYXIgIm1heSBuZWVkIG1vcmUgcmVxdWVz
dHMiIGZsYWcgd2hlbiBvbmUgY29tbWl0IHNldCBoYXMgbm90IGdvdCBhIHN1Y2Nlc3NmdWwgcnVu
IGJ1dCBoYXZlIHBlbmRpbmcgYnVpbGRzJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29u
c3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJl
cGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxz
ZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAi
Y29tcGxldGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciXX07CisgICAgICAgICAg
ICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsK
KyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zy
b21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVz
b2x2ZU1heU5lZWRNb3JlUmVxdWVzdHNGbGFnKDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
c2NoZWR1bGUgcmV0cnkgYnVpbGQgcmVxdWVzdHMgYW5kIGNsZWFyICJtYXkgbmVlZCBtb3JlIHJl
cXVlc3RzIiBmbGFnIHdoZW4gYWxsIHJlcXVlc3RzIGZvciBhIGNvbmZpZ3VyYXRpb24gaGFkIGZh
aWxlZCBmb3IgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBp
bml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLAorICAg
ICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcs
CisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZh
aWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAicGVuZGluZyJdLAorICAgICAgICAgICAgICAg
IGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2Jywg
JzQyNTYnXX07CisKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBGb3JS
ZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRl
c3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAg
ICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMyk7CisK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0u
ZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dv
cmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiAnNDI1NSd9KTsKKyAg
ICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0u
dXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgICAgICAgICByZXF1ZXN0c1sxXS5y
ZXNvbHZlKHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZykpOworCisgICAg
ICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0c1syXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAn
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0YSwge3dvcmtl
ck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDog
JzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pCisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCdzaG91bGQgcmV0cnkgdGhlIHNlY29uZCBjb25maWd1cmF0aW9uIChCKSBpZiB0aGUg
Zmlyc3QgY29uZmlndXJhdGlvbiAoQSkgcmVhY2hlZCB0aGUgcmV0cnkgbGltaXQgYnV0IGhhZCBh
dCBsZWFzdCBvbmUgc3VjY2Vzc2Z1bCBpdGVyYXRpb24gZm9yIGEgc2VxdWVudGlhbCB0ZXN0IGdy
b3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0g
e25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5
TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCBy
ZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6
IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIs
ICJmYWlsZWQiXSwKKyAgICAgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1
NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgICAgICBjb25z
dCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAg
ICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRj
aGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0ucmVzb2x2ZU1h
eU5lZWRNb3JlUmVxdWVzdHNGbGFnKDIpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25h
bWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6
IDEsIGNvbW1pdFNldDogJzQyNTYnfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZl
KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY2xlYXIgdGVzdCBncm91cCAi
bWF5IG5lZWQgbW9yZSByZXF1ZXN0cyIgZmxhZyBpbiBzZXF1ZW50aWFsIG1vZGUgaWYgYWxsIGlu
aXRpYWxseSBzY2hlZHVsZWQgQSByZXBldGl0aW9ucyBmYWlsZWQnLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZh
bHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVl
LAorICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVu
dGlhbCcsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJmYWlsZWQiLCAiZmFpbGVkIiwg
ImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAicGVuZGluZyJdLAorICAgICAgICAgICAg
ICAgIGNvbW1pdFNldExpc3Q6IFsnNDI1NScsICc0MjU1JywgJzQyNTUnLCAnNDI1NicsICc0MjU2
JywgJzQyNTYnXX07CisKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXBG
b3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9
IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAg
ICAgICAgICAgdGVzdEdyb3Vwc1swXS5yZXNvbHZlTWF5TmVlZE1vcmVSZXF1ZXN0c0ZsYWcoMik7
CisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVz
dC1ncm91cCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRh
LCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcs
IGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgY2xlYXIgYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMi
IGZsYWcgd2hlbiBpbml0aWFsIHJlcXVlc3RlZCByZXBldGl0aW9uIGlzIHNhdGlzZmllZCcsIGFz
eW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05v
dGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3Jl
UmVxdWVzdHM6IHRydWUsCisgICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSwgcmVwZXRpdGlv
blR5cGU6ICdzZXF1ZW50aWFsJywKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBs
ZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiY29t
cGxldGVkIl0sCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TGlzdDogWyc0MjU1JywgJzQyNTUn
LCAnNDI1NicsICc0MjU2JywgJzQyNTYnLCAnNDI1NiddfTsKKworICAgICAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAg
ICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hl
ZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnJlc29sdmVNYXlO
ZWVkTW9yZVJlcXVlc3RzRmxhZygzKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3Jr
ZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0
czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429490</attachid>
            <date>2021-05-23 17:18:45 -0700</date>
            <delta_ts>2021-05-24 17:56:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223886-20210523171844.patch</filename>
            <type>text/plain</type>
            <size>252718</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTAxCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzNDQ0OTc3MDdkZTY2MTNkNTM0NDJhYWU4OTUyZjE5OWI2ZTIxYmI4Li4xMzc5Y2YxNDk3
MDQ2ODlmYTI0NDE5MGVkNzQyOGM4M2U1YWM2OGY1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMjEtMDUtMDMgIERld2VpIFpodSAgPGRld2VpX3po
dUBhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYgZGFzaGJvYXJkXSBBZGQgc2VxdWVudGlhbCBt
b2RlIGZvciBwZXJmIGRhc2hib2FyZCBBL0IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUn
IHRvICdhbmFseXNpc190ZXN0X2dyb3VwcycgdGFibGUgdG8gc3RvcmUgcmVwZXRpdGlvbiB0eXBl
IHdoaWNoIGRlZmF1bHRzIHRvICdhbHRlcm5hdGluZycuCisgICAgICAgIEFkZCBzdXBwb3J0IHRv
IHNjaGVkdWxlICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZyB3aGljaCBzY2hlZHVsZXMgYWxsIGl0
ZXJhdGlvbnMgZm9yIHRoZSBmaXJzdCBjb25maWd1cmF0aW9uIChBKQorICAgICAgICBiZWZvcmUg
dGhlIGl0ZXJhdGlvbnMgZm9yIHRoZSBzZWNvbmQgY29uZmlndXJhdGlvbiAoQikuCisgICAgICAg
IEJlZm9yZSB0aGlzIHBhdGNoLCBhbGwgQS9CIHRlc3RpbmcgYWx0ZXJuYXRlZCBiZXR3ZWVuIHR3
byBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggaXRlcmF0aW9uLgorICAgICAgICBB
ZGQgcmV0cnkgbG9naWMgZm9yICdzZXF1ZW50aWFsJyBBL0IgdGVzdGluZy4KKworICAgICAgICBV
cGRhdGUgc3luY2luZyBzY3JpcHQgdG8gbm90IHByb2NlZWQgd2l0aCBuZXh0IGNvbmZpZ3VyYXRp
b24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkCisgICAg
ICAgIG1vcmUgaXRlcmF0aW9ucyB0aGFuIHRoZSBpbml0aWFsbHkgcmVxdWVzdGVkIG9yIHJldHJp
ZXMgZXhjZWVkZWQgdGhlIGxpc3QuCisKKyAgICAgICAgRml4IGEgcG90ZW50aWFsIHJhY2UgaW4g
c3luY2luZyBzY3JpcHQgdGhhdCAnUHJvbWlzZS5hbGwnIG1heSBjYXVzZSB0ZXN0IGdyb3VwIG5v
dCBzY2hlZHVsZWQgaW4gb3JkZXIuCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL3Rlc3QtZ3Jv
dXAtZm9ybS10ZXN0cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAg
KiBpbml0LWRhdGFiYXNlLnNxbDogQWRkZWQgJ3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnIGZp
ZWxkIHRvICdhbmFseXNpc190ZXN0X2dyb3VwcycgdGFibGUuCisgICAgICAgICogbWlncmF0ZS1k
YXRhYmFzZS5zcWw6IFVwZGF0ZWQgbWlncmF0aW9uIHNjcmlwdCB0byBjb25kaXRpb25hbGx5IGFk
ZCAndGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZScgZmllbGQuCisgICAgICAgICogcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHA6IEFkZGVkICdyZXBldGl0aW9uVHlwZScgZmllbGQgaW4gYXBpIHJl
dHVybiB2YWx1ZS4KKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRj
aGVyLnBocDogRmV0Y2hpbmcgYnVpbGQgcmVxdWVzdHMgdW5kZXIgYSB0cmlnZ2VyYWJsZSBzaG91
bGQgaW5jbHVkZSB0ZXN0CisgICAgICAgIGdyb3VwIHdpdGggYWxsIHRlc3QgZ3JvdXBzIGZpbmlz
aGVkIGJ1dCBzdGlsbCBuZWVkIHJldHJ5LiBUaGlzIHdpbGwgYWxsb3cgc3luY2luZyBzY3JpcHQg
dG8gcmVzb2x2ZSB0aGUgYnVpbGQKKyAgICAgICAgcmVxdWVzdCBieSBJRCBhbmQgYmxvY2sgb3Ro
ZXIgcmVxdWVzdCB0byBiZSBzY2hlZHVsZWQgb24gdGhlIGJ1aWxkZXIuCisgICAgICAgICogcHVi
bGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHA6IEFkZGVkIGNvZGUgdG8gY3JlYXRl
IGJ1aWxkIHJlcXVlc3RzIGJhc2VkIG9uIHRlc3QgbW9kZS4KKyAgICAgICAgKiBwdWJsaWMvcHJp
dmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocDogQWRkZWQgc3VwcG9ydCB0byBvbmx5
IGFkZCBidWlsZCByZXF1ZXN0cyB0byBvbmUgY29tbWl0IHNldC4KKyAgICAgICAgKiBwdWJsaWMv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhwOiBBZGRlZCAncmVwZXRpdGlv
blR5cGUnIHN1cHBvcnQuCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10
ZXN0LWdyb3VwLnBocDogQWRkZWQgJ3JlcGV0aXRpb25UeXBlJyBzdXBwb3J0LgorICAgICAgICAq
IHB1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHA6CisgICAgICAgICog
cHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanM6CisgICAgICAgICogcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1mb3JtLmpzOiBB
ZGRlZCAncmVwZXRpdGlvblR5cGUnIHN1cHBvcnQuCisgICAgICAgIChDdXN0b21Db25maWd1cmF0
aW9uVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0aW5nKToKKyAgICAgICAgKiBwdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzOgorICAgICAg
ICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc3RhcnRUZXN0aW5nKToKKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAg
IChUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zdGFydFRlc3RpbmcpOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFzay5hc3lu
YyBjcmVhdGUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrKToKKyAgICAgICAgKiBwdWJsaWMvdjMv
bW9kZWxzL2J1aWxkLXJlcXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAg
ICAoQnVpbGRSZXF1ZXN0LnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOiBBbGxvdyBidWlsZCBy
ZXF1ZXN0IG9yZGVyIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKToKKyAgICAgICAgKFRlc3RHcm91cC5w
cm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
cmVwZXRpdGlvblR5cGUpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5yZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQpOiBSZWZhY3RvcmVkIGByZXBldGl0aW9uQ291bnRgIHNpbmNlIHJl
cGV0aXRpb24gbWF5IGJlIGRpZmZlcmVudAorICAgICAgICBiZXR3ZWVuIGNvbmZpZ3VyYXRpb25z
LgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5oYXNSZXRyaWVzKTogQSBoZWxwZXIgZnVu
Y3Rpb24gdG8gdGVsbCBpZiBhIHRlc3QgZ3JvdXAgaGFzIHJldHJ5IHJ1bnMuCisgICAgICAgIChU
ZXN0R3JvdXAucHJvdG90eXBlLmFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkVG9SZWFjaEluaXRp
YWxSZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5zdWNjZXNz
ZnVsVGVzdENvdW50KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuaXNGaXJzdFRlc3RS
ZXF1ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucHJlY2VkaW5nQnVpbGRSZXF1
ZXN0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUucmV0cnlDb3VudEZvckNvbW1pdFNl
dCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJldHJ5Q291bnRzQXJlU2FtZUZvckFs
bENvbW1pdFNldHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYyBfY3JlYXRl
QWx0ZXJuYXRpbmdSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMgX2NyZWF0
ZVNlcXVlbnRpYWxSZXRyaWVzRm9yVGVzdEdyb3VwKTogTW92ZWQgZnJvbSAncmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzJyBtb2R1bGUuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFz
eW5jIGNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBl
LmFzeW5jIGRpZFNlbmROb3RpZmljYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5hc3luYyBhZGRNb3JlQnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAuYXN5bmMg
Y3JlYXRlV2l0aFRhc2spOgorICAgICAgICAoVGVzdEdyb3VwLmFzeW5jIGNyZWF0ZVdpdGhDdXN0
b21Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBjcmVhdGVBbmRSZWZl
dGNoVGVzdEdyb3Vwcyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jIHNjaGVk
dWxlTW9yZVJlcXVlc3RzT3JDbGVhckZsYWcpOiBNb3ZlZCBmcm9tICdyZXRyeS1mYWlsZWQtYnVp
bGQtcmVxdWVzdHMnIG1vZHVsZS4KKyAgICAgICAgKFRlc3RHcm91cC5hc3luYyBmZXRjaEJ5SWQp
OiBBZGRlZCBzdXBwb3J0IHRvIGZldGNoIHRlc3QgZ3JvdXAgYnkgSUQuCisgICAgICAgICogcHVi
bGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFz
a0NoYXJ0UGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6CisgICAgICAgIChB
bmFseXNpc1Rhc2tSZXN1bHRzUGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6
CisgICAgICAgIChBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lLnByb3RvdHlwZS5zZXRUZXN0
R3JvdXBzKToKKyAgICAgICAgKEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvclBhbmUpOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93
VHJlZSk6CisgICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5lLnByb3RvdHlwZS5fcmVu
ZGVyQ3VycmVudFRlc3RHcm91cCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tUZXN0R3JvdXBQYW5l
LnByb3RvdHlwZS5fcmV0cnlTdW1tYXJ5KToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJv
dG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFn
ZS5wcm90b3R5cGUuYXN5bmMgX3JldHJ5Q3VycmVudFRlc3RHcm91cCk6CisgICAgICAgIChBbmFs
eXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfYmlzZWN0Q3VycmVudFRlc3RHcm91cCk6Cisg
ICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnNldCBjb25zdCk6CisgICAgICAgIChBbmFseXNpc1Rh
c2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21t
aXRTZXRMaXN0KToKKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLmFzeW5jIF9j
cmVhdGVDdXN0b21UZXN0R3JvdXApOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9jaGFydC1w
YW5lLmpzOgorICAgICAgICAoQ2hhcnRQYW5lLnByb3RvdHlwZS5kaWRDb25zdHJ1Y3RTaGFkb3dU
cmVlKToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUuYXN5bmMgX2FuYWx5emVSYW5nZSk6
CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanM6
CisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5hc3luYyBfY3JlYXRl
QW5hbHlzaXNUYXNrV2l0aEdyb3VwKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvYXBpLWJ1aWxk
LXJlcXVlc3RzLXRlc3RzLmpzOiBBZGRlZCBhIHVuaXQgdGVzdC4KKyAgICAgICAgKiBzZXJ2ZXIt
dGVzdHMvYXBpLXVwbG9hZC1yb290LXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAg
ICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qczogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanM6IEFkZGVkIHVu
aXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10
ZXN0LWdyb3VwLXRlc3RzLmpzOiBVcGRhdGVkIGFuZCBhZGRlZCB1bml0IHRlc3RzLgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5q
czogVXBkYXRlZCBhbmQgYWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMv
cmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzOgorICAgICAgICAoYXN5bmMgYXNzZXJ0VGhy
b3dzKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qczoKKyAg
ICAgICAgKE1vY2tEYXRhLmFkZE1vY2tEYXRhKToKKyAgICAgICAgKE1vY2tEYXRhLnNldCBhZGRN
b2NrQnVpbGRSZXF1ZXN0c1dpdGhSb290cyk6CisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkQW5v
dGhlck1vY2tUZXN0R3JvdXApOgorICAgICAgICAoTW9ja0RhdGEuc2V0IG1vY2tUZXN0U3luY0Nv
bmZpZ1dpdGhTaW5nbGVCdWlsZGVyKToKKyAgICAgICAgKE1vY2tEYXRhLnNhbXBsZUJ1aWxkRGF0
YSk6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRl
c3RzLmpzOiBVcGRhdGVkIGFuZCBhZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10
ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzOiBVcGRhdGVkIHVu
aXQgdGVzdHMuCisgICAgICAgIChhc3luYyBjcmVhdGVUZXN0R3JvdXBXaXRoUGF0Y2gpOgorICAg
ICAgICAoY3JlYXRlVGVzdEdyb3VwV2loT3duZWRDb21taXQpOgorICAgICAgICAqIHRvb2xzL2pz
L2J1aWxkYm90LXN5bmNlci5qczoKKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3RvdHlwZS5z
Y2hlZHVsZVJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUpOgorICAgICAgICAoQnVpbGRib3RTeW5j
ZXIucHJvdG90eXBlLnB1bGxCdWlsZGJvdCk6CisgICAgICAgICogdG9vbHMvanMvYnVpbGRib3Qt
dHJpZ2dlcmFibGUuanM6CisgICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlKToKKyAgICAgICAg
KEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLmFzeW5jIHN5bmNPbmNlKToKKyAgICAgICAg
KEJ1aWxkYm90VHJpZ2dlcmFibGUucHJvdG90eXBlLmFzeW5jIF9zY2hlZHVsZVJlcXVlc3QpOgor
ICAgICAgICAoQnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuX3Nob3VsZERlZmVyU2VxdWVu
dGlhbFRlc3RpbmdSZXF1ZXN0V2l0aE5ld0NvbW1pdFNldCk6CisgICAgICAgICogdG9vbHMvanMv
bWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzOgorICAgICAgICAoTWVhc3VyZW1lbnRTZXRBbmFs
eXplci5wcm90b3R5cGUuYXN5bmMgX2FuYWx5emVNZWFzdXJlbWVudFNldCk6CisgICAgICAgIChN
ZWFzdXJlbWVudFNldEFuYWx5emVyKToKKyAgICAgICAgKiB0b29scy9qcy9yZXRyeS1mYWlsZWQt
YnVpbGQtcmVxdWVzdHMuanM6IFJlbW92ZWQuCisgICAgICAgICogdG9vbHMvcnVuLWFuYWx5c2lz
LmpzOiBVc2UgdXBkYXRlZCBBUEkgdG8gcmV0cnkuCisgICAgICAgIChhc3luYyBhbmFseXNpc0xv
b3ApOgorICAgICAgICAoYXN5bmMgcHJvY2Vzc1Rlc3RHcm91cE1heU5lZWRNb3JlUmVxdWVzdHMp
OgorICAgICAgICAqIHRvb2xzL3N5bmMtYnVpbGRib3QuanM6IEFkZGVkIGNvbW1hbmQgbGluZSBv
cHRpb24gJy0tbWF4LXJldHJ5LWZhY3RvcicuCisgICAgICAgICogdW5pdC10ZXN0cy9hbmFseXNp
cy10YXNrLXRlc3RzLmpzOiBVcGRhdGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogdW5pdC10ZXN0
cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanM6IFVwZGF0ZWQgdW5pdCB0ZXN0cy4KKyAgICAgICAg
KGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdCk6CisgICAgICAgICogdW5pdC10ZXN0cy9tZWFzdXJl
bWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanM6CisgICAgICAgICogdW5pdC10ZXN0cy9yZXRyeS1m
YWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IE1vdmVkIHVuaXQgdGVzdHMgdG8gdGVzdC1n
cm91cC10ZXN0cy5qcy4KKyAgICAgICAgKiB1bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpz
OiBBZGRlZCB1bml0IHRlc3RzIGZyb20gJ3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcycuCisKIDIwMjEtMDUtMTkgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGEgYnVnIHRoYXQgaW5jb3JyZWN0IHRpbWVzdGFtcCBpcyByZXBvcnRlZCBm
b3IgR2l0IHJlcG9zaXRvcmllcy4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9icm93c2VyLXRlc3RzL3Rlc3QtZ3JvdXAtZm9ybS10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL3Rlc3QtZ3JvdXAtZm9ybS10ZXN0cy5qcwppbmRleCBi
NGFiMjEyNWM0NjMwNGY1NmM0Nzg3NzFiZWI2YzIzM2EwOTNiZThhLi5mOTYwMTEzODIzNGExZDlj
NTY2YTM4MGE2NWNlNTkwODQyODMwYjRhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvYnJvd3Nlci10ZXN0cy90ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvdGVzdC1ncm91cC1mb3JtLXRlc3RzLmpz
CkBAIC0xOCwxMCArMTgsMjUgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cEZvcm1UZXN0cycsICgpID0+
IHsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0YXJ0VGVzdGlu
ZycsICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAgICAgIGV4cGVjdChj
YWxscykudG8uZXFsKHt9KTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgnc3Rh
cnQtYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtb
NCwgdHJ1ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVy
bmF0aW5nJywgdHJ1ZV1dKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBpdCgnbXVzdCBk
aXNwYXRjaCAic3RhcnRUZXN0aW5nIiBhY3Rpb24gd2l0aCB0aGUgcmVwZXRpdGlvbiB0eXBlIHVz
ZXIgc2VsZWN0cyBvbiAiU3RhcnQgQS9CIHRlc3RpbmciJywgYXN5bmMgKCkgPT4geworICAgICAg
ICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICBjb25zdCB0
ZXN0R3JvdXBGb3JtID0gYXdhaXQgY3JlYXRlVGVzdEdyb3VwRm9ybVdpdGhDb250ZXh0KGNvbnRl
eHQpOworICAgICAgICBjb25zdCBjYWxscyA9IFtdOworICAgICAgICB0ZXN0R3JvdXBGb3JtLmxp
c3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdz
KSk7CisgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKHt9KTsKKyAgICAgICAgdGVzdEdyb3Vw
Rm9ybS5jb250ZW50KCdzdGFydC1idXR0b24nKS5jbGljaygpOworICAgICAgICBleHBlY3QoY2Fs
bHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CisgICAgICAgIGNvbnN0IHR5
cGVGb3JtID0gdGVzdEdyb3VwRm9ybS5jb250ZW50KCdyZXBldGl0aW9uLXR5cGUnKTsKKyAgICAg
ICAgdHlwZUZvcm0udmFsdWUgPSAnc2VxdWVudGlhbCc7CisgICAgICAgIHR5cGVGb3JtLmRpc3Bh
dGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CisgICAgICAgIHRlc3RHcm91cEZvcm0uY29u
dGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2soKTsKKyAgICAgICAgZXhwZWN0KGNhbGxzKS50by5l
cWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXSwgWzQsICdzZXF1ZW50aWFsJywgdHJ1ZV1dKTsK
KyAgICB9KTsKKwogICAgIGl0KCdtdXN0IHVwZGF0ZSB0aGUgcmVwZXRpdGlvbiBjb3VudCB3aGVu
IHRoZSB1c2VyIHNlbGVjdGVkIGEgZGlmZmVyZW50IGNvdW50JywgKCkgPT4gewogICAgICAgICBj
b25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOwogICAgICAgICByZXR1cm4gY3Jl
YXRlVGVzdEdyb3VwRm9ybVdpdGhDb250ZXh0KGNvbnRleHQpLnRoZW4oKHRlc3RHcm91cEZvcm0p
ID0+IHsKQEAgLTI5LDEyICs0NCwxMiBAQCBkZXNjcmliZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywg
KCkgPT4gewogICAgICAgICAgICAgdGVzdEdyb3VwRm9ybS5saXN0ZW5Ub0FjdGlvbignc3RhcnRU
ZXN0aW5nJywgKC4uLmFyZ3MpID0+IGNhbGxzLnB1c2goYXJncykpOwogICAgICAgICAgICAgZXhw
ZWN0KGNhbGxzKS50by5lcWwoe30pOwogICAgICAgICAgICAgdGVzdEdyb3VwRm9ybS5jb250ZW50
KCdzdGFydC1idXR0b24nKS5jbGljaygpOwotICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5l
cWwoW1s0LCB0cnVlXV0pOworICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCAn
YWx0ZXJuYXRpbmcnLCB0cnVlXV0pOwogICAgICAgICAgICAgY29uc3QgY291bnRGb3JtID0gdGVz
dEdyb3VwRm9ybS5jb250ZW50KCdyZXBldGl0aW9uLWNvdW50Jyk7CiAgICAgICAgICAgICBjb3Vu
dEZvcm0udmFsdWUgPSAnNic7CiAgICAgICAgICAgICBjb3VudEZvcm0uZGlzcGF0Y2hFdmVudChu
ZXcgRXZlbnQoJ2NoYW5nZScpKTsKICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgn
c3RhcnQtYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFs
KFtbNCwgdHJ1ZV0sIFs2LCB0cnVlXV0pOworICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5l
cWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXSwgWzYsICdhbHRlcm5hdGluZycsIHRydWVdXSk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogCkBAIC00NSw3ICs2MCw3IEBAIGRlc2NyaWJlKCdUZXN0
R3JvdXBGb3JtVGVzdHMnLCAoKSA9PiB7CiAgICAgICAgICAgICB0ZXN0R3JvdXBGb3JtLmxpc3Rl
blRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7
CiAgICAgICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAgICAgICAgICAgICB0ZXN0
R3JvdXBGb3JtLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLmNsaWNrKCk7Ci0gICAgICAgICAgICBl
eHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdXSk7CisgICAgICAgICAgICBleHBlY3QoY2Fs
bHMpLnRvLmVxbChbWzQsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAgICAgICAgICBjb25z
dCBjb3VudEZvcm0gPSB0ZXN0R3JvdXBGb3JtLmNvbnRlbnQoJ3JlcGV0aXRpb24tY291bnQnKTsK
ICAgICAgICAgICAgIGNvdW50Rm9ybS52YWx1ZSA9ICc2JzsKICAgICAgICAgICAgIGNvdW50Rm9y
bS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOwpAQCAtNTMsNyArNjgsNyBAQCBk
ZXNjcmliZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywgKCkgPT4gewogICAgICAgICAgICAgbm90aWZ5
T25Db21wbGV0aW9uQ2hlY2tib3guY2hlY2tlZCA9IGZhbHNlOwogICAgICAgICAgICAgbm90aWZ5
T25Db21wbGV0aW9uQ2hlY2tib3guZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsK
ICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgnc3RhcnQtYnV0dG9uJykuY2xpY2so
KTsKLSAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgdHJ1ZV0sIFs2LCBmYWxz
ZV1dKTsKKyAgICAgICAgICAgIGV4cGVjdChjYWxscykudG8uZXFsKFtbNCwgJ2FsdGVybmF0aW5n
JywgdHJ1ZV0sIFs2LCAnYWx0ZXJuYXRpbmcnLCBmYWxzZV1dKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiAKQEAgLTc2LDEwICs5MSwxMCBAQCBkZXNjcmliZSgnVGVzdEdyb3VwRm9ybVRlc3RzJywg
KCkgPT4gewogICAgICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0ubGlzdGVuVG9BY3Rpb24oJ3N0
YXJ0VGVzdGluZycsICguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKICAgICAgICAgICAg
ICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbCh7fSk7CiAgICAgICAgICAgICAgICAgdGVzdEdyb3Vw
Rm9ybS5jb250ZW50KCkucXVlcnlTZWxlY3RvcignYnV0dG9uJykuY2xpY2soKTsKLSAgICAgICAg
ICAgICAgICBleHBlY3QoY2FsbHMpLnRvLmVxbChbWzQsIHRydWVdXSk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXV0pOwogICAg
ICAgICAgICAgICAgIHRlc3RHcm91cEZvcm0uc2V0UmVwZXRpdGlvbkNvdW50KDgpOwogICAgICAg
ICAgICAgICAgIHRlc3RHcm91cEZvcm0uY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicp
LmNsaWNrKCk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0LCB0cnVl
XSwgWzgsIHRydWVdXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGNhbGxzKS50by5lcWwoW1s0
LCAnYWx0ZXJuYXRpbmcnLCB0cnVlXSwgWzgsICdhbHRlcm5hdGluZycsIHRydWVdXSk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvaW5pdC1kYXRhYmFzZS5zcWwKaW5kZXggZjY4YjVmMGMwMzNhMjI2NDMwN2MyZjgzZjNkNGZi
NzRiZGIxNTNlZC4uZTc2ZGNiYzkyOWEyYjFjZjVkMjIwNzQzN2NkZmE0ODZlNWJhZWJkZSAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbApAQCAtMjksNiArMjks
NyBAQCBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMgQ0FTQ0FE
RTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIHVwbG9hZGVkX2ZpbGVzIENBU0NBREU7CiBEUk9QIFRB
QkxFIElGIEVYSVNUUyBidWdzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBhbmFseXNp
c190ZXN0X2dyb3VwcyBDQVNDQURFOworRFJPUCBUWVBFIElGIEVYSVNUUyBhbmFseXNpc190ZXN0
X2dyb3VwX3JlcGV0aXRpb25fdHlwZSBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMgY29t
bWl0X3NldHMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1pdF9zZXRfaXRlbXMg
Q0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGJ1aWxkX3JlcXVlc3RzIENBU0NBREU7CkBA
IC0yODIsNiArMjgzLDcgQEAgQ1JFQVRFIFRBQkxFIHVwbG9hZGVkX2ZpbGVzICgKIENSRUFURSBJ
TkRFWCBmaWxlX2F1dGhvcl9pbmRleCBPTiB1cGxvYWRlZF9maWxlcyhmaWxlX2F1dGhvcik7CiBD
UkVBVEUgVU5JUVVFIElOREVYIGZpbGVfc2hhMjU2X2luZGV4IE9OIHVwbG9hZGVkX2ZpbGVzKGZp
bGVfc2hhMjU2KSBXSEVSRSBmaWxlX2RlbGV0ZWRfYXQgaXMgTlVMTDsKIAorQ1JFQVRFIFRZUEUg
YW5hbHlzaXNfdGVzdF9ncm91cF9yZXBldGl0aW9uX3R5cGUgYXMgRU5VTSAoJ2FsdGVybmF0aW5n
JywgJ3NlcXVlbnRpYWwnKTsKIENSRUFURSBUQUJMRSBhbmFseXNpc190ZXN0X2dyb3VwcyAoCiAg
ICAgdGVzdGdyb3VwX2lkIHNlcmlhbCBQUklNQVJZIEtFWSwKICAgICB0ZXN0Z3JvdXBfdGFzayBp
bnRlZ2VyIFJFRkVSRU5DRVMgYW5hbHlzaXNfdGFza3MgTk9UIE5VTEwsCkBAIC0yOTIsNiArMjk0
LDcgQEAgQ1JFQVRFIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBf
bmVlZHNfbm90aWZpY2F0aW9uIGJvb2xlYW4gTk9UIE5VTEwgREVGQVVMVCBGQUxTRSwKICAgICB0
ZXN0Z3JvdXBfbm90aWZpY2F0aW9uX3NlbnRfYXQgdGltZXN0YW1wIERFRkFVTFQgTlVMTCwKICAg
ICB0ZXN0Z3JvdXBfaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50IGludGVnZXIgTk9UIE5VTEwsCisg
ICAgdGVzdGdyb3VwX3JlcGV0aXRpb25fdHlwZSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRp
b25fdHlwZSBOT1QgTlVMTCBERUZBVUxUICdhbHRlcm5hdGluZycsCiAgICAgdGVzdGdyb3VwX21h
eV9uZWVkX21vcmVfcmVxdWVzdHMgYm9vbGVhbiBERUZBVUxUIEZBTFNFLAogICAgIENPTlNUUkFJ
TlQgdGVzdGdyb3VwX25hbWVfbXVzdF9iZV91bmlxdWVfZm9yX2VhY2hfdGFzayBVTklRVUUodGVz
dGdyb3VwX3Rhc2ssIHRlc3Rncm91cF9uYW1lKSk7CiBDUkVBVEUgSU5ERVggdGVzdGdyb3VwX3Rh
c2tfaW5kZXggT04gYW5hbHlzaXNfdGVzdF9ncm91cHModGVzdGdyb3VwX3Rhc2spOwpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUtZGF0YWJhc2Uuc3FsCmluZGV4IDBlYTkxMzNk
YTZlZGUzMjVkZGY2YzIxZDhiOTM3ZmI3MzU2NDI1OWEuLmE2MTMxMTliYWI5YTQyNjQzNmRmYmQx
OTc2NWM0YmI5ZDNlMGVlNWQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9t
aWdyYXRlLWRhdGFiYXNlLnNxbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvbWlncmF0
ZS1kYXRhYmFzZS5zcWwKQEAgLTEsMTAgKzEsMTYgQEAKIERPICQkCiAKIEJFR0lOCisKK0lGIE5P
VCBFWElTVFMgKFNFTEVDVCBOVUxMIEZST00gcGdfdHlwZSBXSEVSRSB0eXBuYW1lID0gJ2FuYWx5
c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlJykgVEhFTgorICAgIENSRUFURSBUWVBFIGFu
YWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIGFzIEVOVU0gKCdhbHRlcm5hdGluZycs
ICdzZXF1ZW50aWFsJyk7CitFTkQgSUY7CisKIEFMVEVSIFRBQkxFIGJ1aWxkX3JlcXVlc3RzIEFE
RCBDT0xVTU4gSUYgTk9UIEVYSVNUUyByZXF1ZXN0X3N0YXR1c19kZXNjcmlwdGlvbiB2YXJjaGFy
KDEwMjQpIERFRkFVTFQgTlVMTDsKIEFMVEVSIFRBQkxFIHBsYXRmb3JtcyBBREQgQ09MVU1OICBJ
RiBOT1QgRVhJU1RTIHBsYXRmb3JtX2dyb3VwIGludGVnZXIgUkVGRVJFTkNFUyBwbGF0Zm9ybV9n
cm91cHMgREVGQVVMVCBOVUxMOwogQUxURVIgVEFCTEUgY29tbWl0cyBBREQgQ09MVU1OIElGIE5P
VCBFWElTVFMgY29tbWl0X3JldmlzaW9uX2lkZW50aWZpZXIgdmFyY2hhcig2NCkgREVGQVVMVCBO
VUxMOwotQUxURVIgVEFCTEUgY29tbWl0cyBEUk9QIENPTlNUUkFJTlQgY29tbWl0X3N0cmluZ19p
ZGVudGlmaWVyX2luX3JlcG9zaXRvcnlfbXVzdF9iZV91bmlxdWU7CitBTFRFUiBUQUJMRSBhbmFs
eXNpc190ZXN0X2dyb3VwcyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgdGVzdGdyb3VwX3JlcGV0
aXRpb25fdHlwZSBhbmFseXNpc190ZXN0X2dyb3VwX3JlcGV0aXRpb25fdHlwZSBOT1QgTlVMTCBE
RUZBVUxUICdhbHRlcm5hdGluZyc7CitBTFRFUiBUQUJMRSBjb21taXRzIERST1AgQ09OU1RSQUlO
VCBJRiBFWElTVFMgY29tbWl0X3N0cmluZ19pZGVudGlmaWVyX2luX3JlcG9zaXRvcnlfbXVzdF9i
ZV91bmlxdWU7CiBBTFRFUiBUQUJMRSBjb21taXRzIEFERCBDT05TVFJBSU5UIGNvbW1pdF9zdHJp
bmdfaWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlIFVOSVFVRShjb21taXRf
cmVwb3NpdG9yeSwgY29tbWl0X3JldmlzaW9uX2lkZW50aWZpZXIpOwogCiBDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBwbGF0Zm9ybV9ncm91cHMgKApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCmluZGV4IDAzMWE1YzRhYjk4N2I3
OTMyNmM4MTIyMDMwZmRkZTlkY2I0OTc2MjAuLjY4NDdmNDg3NDI4ZjUzOGU1YTM0OGExOTlkZTI3
OTVkNWQ3N2Q2ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
YXBpL3Rlc3QtZ3JvdXBzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FwaS90ZXN0LWdyb3Vwcy5waHAKQEAgLTk0LDYgKzk0LDcgQEAgZnVuY3Rpb24gZm9ybWF0X3Rl
c3RfZ3JvdXAoJGdyb3VwX3JvdykgewogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERh
dGFiYXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24n
XSksCiAgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgk
Z3JvdXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwKICAgICAgICAg
J2luaXRpYWxSZXBldGl0aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9pbml0aWFs
X3JlcGV0aXRpb25fY291bnQnXSwKKyAgICAgICAgJ3JlcGV0aXRpb25UeXBlJyA9PiAkZ3JvdXBf
cm93Wyd0ZXN0Z3JvdXBfcmVwZXRpdGlvbl90eXBlJ10sCiAgICAgICAgICdidWlsZFJlcXVlc3Rz
JyA9PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwKICAgICApOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxk
LXJlcXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9p
bmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IGIyYzA1ZTdiMjUyMDk3ZjEx
NWZmZGJjNDFhMTFjM2U0YmQxOTAyY2QuLjRkNjU3NjFiNDQzZGE0MGFhNTRkMDkwYTNjMmIyMDkx
ZGU1YmU2YTUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5j
bHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgKFNFTEVD
VCB0ZXN0Z3JvdXBfaWQsIHRlc3Rncm91cF90YXNrLCAoY2FzZSB3aGVuIHRlc3Rncm91cF9hdXRo
b3IgaXMgbm90IG51bGwgdGhlbiAwIGVsc2UgMSBlbmQpIGFzIGF1dGhvcl9vcmRlciwgdGVzdGdy
b3VwX2NyZWF0ZWRfYXQKICAgICAgICAgICAgICAgICBGUk9NIGFuYWx5c2lzX3Rlc3RfZ3JvdXBz
IFdIRVJFIEVYSVNUUwogICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBidWlsZF9y
ZXF1ZXN0cyBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSByZXF1ZXN0X2dyb3VwIEFORCByZXF1ZXN0X3N0
YXR1cwotICAgICAgICAgICAgICAgICAgICAgICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxl
ZFwnLCBcJ3J1bm5pbmdcJykpKSBBUyB0ZXN0X2dyb3VwcworICAgICAgICAgICAgICAgICAgICAg
ICAgSU4gKFwncGVuZGluZ1wnLCBcJ3NjaGVkdWxlZFwnLCBcJ3J1bm5pbmdcJykpIE9SIHRlc3Rn
cm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzID0gVFJVRSkgQVMgdGVzdF9ncm91cHMKICAgICAg
ICAgICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVzdF9ncm91cCA9
IHRlc3RfZ3JvdXBzLnRlc3Rncm91cF9pZAogICAgICAgICAgICAgT1JERVIgQlkgYXV0aG9yX29y
ZGVyLCB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCwgcmVxdWVzdF9vcmRlcicsIGFycmF5KCR0cmlnZ2Vy
YWJsZV9pZCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAppbmRleCBlODUz
MGE2YmI3MWU0MmNmZjI4Y2UzMTljOGI1ODVlNjJkZDIzZjFjLi43Nzc3ZTFhZDYyYWZkYWM3NmM3
MzE0MzM1MjJjMWIyNmEwMjdjODRhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCkBA
IC00LDIxICs0LDMxIEBAIHJlcXVpcmVfb25jZSgncmVwb3NpdG9yeS1ncm91cC1maW5kZXIucGhw
Jyk7CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hlci5waHAnKTsKIAogIyBGSVhNRTog
U2hvdWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVsb3cgMyBoZWxwZXIgZnVuY3Rpb25z
IHRvIGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0LgotZnVuY3Rpb24gY3JlYXRlX3Rl
c3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwg
JG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwg
JHJlcGV0aXRpb25fY291bnQsICRuZWVkc19ub3RpZmljYXRpb24pIHsKLQorZnVuY3Rpb24gY3Jl
YXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFz
a19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVz
dF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmlj
YXRpb24pCit7CisgICAgYXNzZXJ0KGluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdh
bHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKTsKICAgICBsaXN0ICgkYnVpbGRfY29uZmlndXJh
dGlvbl9saXN0LCAkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QpID0gaW5zZXJ0X2NvbW1pdF9zZXRz
X2FuZF9jb25zdHJ1Y3RfY29uZmlndXJhdGlvbl9saXN0KCRkYiwgJGNvbW1pdF9zZXRzKTsKIAog
ICAgICRncm91cF9pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAn
dGVzdGdyb3VwJywKLSAgICAgICAgYXJyYXkoJ3Rhc2snID0+ICR0YXNrX2lkLCAnbmFtZScgPT4g
JG5hbWUsICdhdXRob3InID0+ICRhdXRob3IsICduZWVkc19ub3RpZmljYXRpb24nID0+ICRuZWVk
c19ub3RpZmljYXRpb24sICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRyZXBldGl0aW9u
X2NvdW50KSk7CisgICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUnID0+ICRu
YW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAkbmVlZHNf
bm90aWZpY2F0aW9uLAorICAgICAgICAgICAgJ2luaXRpYWxfcmVwZXRpdGlvbl9jb3VudCcgPT4g
JHJlcGV0aXRpb25fY291bnQsICdyZXBldGl0aW9uX3R5cGUnID0+ICRyZXBldGl0aW9uX3R5cGUp
KTsKIAogICAgICRidWlsZF9jb3VudCA9IGNvdW50KCRidWlsZF9jb25maWd1cmF0aW9uX2xpc3Qp
OwogICAgICRvcmRlciA9IC0kYnVpbGRfY291bnQ7CiAgICAgZm9yZWFjaCgkYnVpbGRfY29uZmln
dXJhdGlvbl9saXN0IGFzICRidWlsZF9jb25maWd1cmF0aW9uKQogICAgICAgICBpbnNlcnRfYnVp
bGRfcmVxdWVzdF9mb3JfY29uZmlndXJhdGlvbigkZGIsICRidWlsZF9jb25maWd1cmF0aW9uLCAk
b3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsIE5VTEwsICRncm91cF9pZCk7
CiAKLSAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3VudDsgJGkrKykgewotICAg
ICAgICBmb3JlYWNoKCR0ZXN0X2NvbmZpZ3VyYXRpb25fbGlzdCBhcyAkdGVzdF9jb25maWd1cmF0
aW9uKQotICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24o
JGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAkb3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxh
dGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBfaWQpOworICAgIGlmICgkcmVwZXRpdGlvbl90eXBl
ID09ICdzZXF1ZW50aWFsJykgeworICAgICAgICBmb3JlYWNoICgkdGVzdF9jb25maWd1cmF0aW9u
X2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikgeworICAgICAgICAgICAgZm9yICgkaSA9IDA7
ICRpIDwgJHJlcGV0aXRpb25fY291bnQ7ICRpKyspCisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1
aWxkX3JlcXVlc3RfZm9yX2NvbmZpZ3VyYXRpb24oJGRiLCAkdGVzdF9jb25maWd1cmF0aW9uLCAk
b3JkZXIrKywgJHRyaWdnZXJhYmxlX2lkLCAkcGxhdGZvcm1faWQsICR0ZXN0X2lkLCAkZ3JvdXBf
aWQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KCRyZXBldGl0aW9u
X3R5cGUgPT0gJ2FsdGVybmF0aW5nJyk7CisgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBl
dGl0aW9uX2NvdW50OyAkaSsrKSB7CisgICAgICAgICAgICBmb3JlYWNoICgkdGVzdF9jb25maWd1
cmF0aW9uX2xpc3QgYXMgJHRlc3RfY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICBpbnNl
cnRfYnVpbGRfcmVxdWVzdF9mb3JfY29uZmlndXJhdGlvbigkZGIsICR0ZXN0X2NvbmZpZ3VyYXRp
b24sICRvcmRlcisrLCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQsICRn
cm91cF9pZCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuICRncm91cF9pZDsKIH0KZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkv
YWRkLWJ1aWxkLXJlcXVlc3RzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
cHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzLnBocAppbmRleCA1NzBlOTAyZjVkMmUx
ZGYzZmMyYjZiNmFmYTIzM2FiZmI1MDAzNjQ3Li45NTdhOWY0NzMxNDU3MDVmYWM1MjJkYjcyOTVj
Y2I4MDdjMjQ0Y2E3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhw
CkBAIC03LDEzICs3LDE1IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgJGRiID0gY29ubmVjdCgp
OwogICAgICRkYXRhID0gZW5zdXJlX3ByaXZpbGVnZWRfYXBpX2RhdGFfYW5kX3Rva2VuX29yX3dv
cmtlcigkZGIpOwogCi0gICAgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCA9IGFycmF5
X2dldCgkZGF0YSwgJ2FkZENvdW50Jyk7Ci0gICAgaWYgKCEkYWRkaXRpb25hbF9idWlsZF9yZXF1
ZXN0X2NvdW50KQotICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1JlcXVlc3RDb3VudE5vdFNwZWNp
ZmllZCcpOworICAgICRhcmd1bWVudHMgPSB2YWxpZGF0ZV9hcmd1bWVudHMoJGRhdGEsIGFycmF5
KAorICAgICAgICAnYWRkQ291bnQnID0+ICdpbnQnLAorICAgICAgICAnZ3JvdXAnID0+ICdpbnQn
LAorICAgICAgICAnY29tbWl0U2V0JyA9PiAnaW50PycsCisgICAgKSk7CiAKLSAgICAkdGVzdF9n
cm91cF9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ2dyb3VwJyk7Ci0gICAgaWYgKCEkdGVzdF9ncm91
cF9pZCkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdUZXN0R3JvdXBOb3RTcGVjaWZpZWQnKTsK
KyAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50ID0gJGFyZ3VtZW50c1snYWRkQ291
bnQnXTsKKyAgICAkdGVzdF9ncm91cF9pZCA9ICRhcmd1bWVudHNbJ2dyb3VwJ107CisgICAgJGNv
bW1pdF9zZXRfaWQgPSBhcnJheV9nZXQoJGFyZ3VtZW50cywgJ2NvbW1pdFNldCcpOwogCiAgICAg
JHRlc3RfZ3JvdXAgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBz
JywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gJHRlc3RfZ3JvdXBfaWQpKTsKICAgICBpZiAo
ISR0ZXN0X2dyb3VwKQpAQCAtMjgsMTEgKzMwLDMzIEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAg
aWYgKCRjdXJyZW50X29yZGVyIDwgMCkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb1Rlc3Rp
bmdCdWlsZFJlcXVlc3RzJyk7CiAKKyAgICAkcmVwZXRpdGlvbl90eXBlID0gJHRlc3RfZ3JvdXBb
J3Rlc3Rncm91cF9yZXBldGl0aW9uX3R5cGUnXTsKKyAgICBhc3NlcnQoaW5fYXJyYXkoJHJlcGV0
aXRpb25fdHlwZSwgWydhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJ10pKTsKKyAgICAkaXNfYWx0
ZXJuYXRpbmdfdHlwZSA9ICRyZXBldGl0aW9uX3R5cGUgPT0gJ2FsdGVybmF0aW5nJzsKKyAgICBp
ZiAoJGlzX2FsdGVybmF0aW5nX3R5cGUgJiYgJGNvbW1pdF9zZXRfaWQpCisgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignQ29tbWl0U2V0Tm90U3VwcG9ydGVkRm9yQWx0ZXJuYXRpbmdSZXBldGl0aW9u
VHlwZScpOworCisgICAgJGV4aXN0aW5nX3Rlc3RfdHlwZV9idWlsZF9yZXF1ZXN0cyA9IGFycmF5
X2ZpbHRlcigkZXhpc3RpbmdfYnVpbGRfcmVxdWVzdHMsIGZ1bmN0aW9uKCRidWlsZF9yZXF1ZXN0
KSB7CisgICAgICAgIHJldHVybiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9vcmRlciddID49IDA7
CisgICAgfSk7CisKKyAgICBpZiAoJGlzX2FsdGVybmF0aW5nX3R5cGUpCisgICAgICAgIGFkZF9h
bHRlcm5hdGluZ19idWlsZF9yZXF1ZXN0cygkZGIsICRleGlzdGluZ190ZXN0X3R5cGVfYnVpbGRf
cmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICRjdXJyZW50X29yZGVy
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCRjb21taXRfc2V0X2lkKQorICAgICAgICAgICAg
YWRkX3NlcXVlbnRpYWxfYnVpbGRfcmVxdWVzdHNfZm9yX2NvbW1pdF9zZXQoJGRiLCAkZXhpc3Rp
bmdfdGVzdF90eXBlX2J1aWxkX3JlcXVlc3RzLCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2Nv
dW50LCAkY29tbWl0X3NldF9pZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZF9zZXF1
ZW50aWFsX2J1aWxkX3JlcXVlc3RzX2Zvcl9hbGxfY29tbWl0X3NldHMoJGRiLCAkZXhpc3Rpbmdf
YnVpbGRfcmVxdWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICR0ZXN0X2dy
b3VwX2lkKTsKKyAgICB9CisKKyAgICBleGl0X3dpdGhfc3VjY2VzcygpOworfQorCitmdW5jdGlv
biBhZGRfYWx0ZXJuYXRpbmdfYnVpbGRfcmVxdWVzdHMoJGRiLCAkZXhpc3RpbmdfYnVpbGRfcmVx
dWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICRvcmRlcikKK3sKICAgICAk
Y29tbWl0X3NldHMgPSBhcnJheSgpOwogICAgICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQg
PSBhcnJheSgpOwogICAgIGZvcmVhY2ggKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkYnVp
bGRfcmVxdWVzdCkgewotICAgICAgICBpZiAoJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3JkZXIn
XSA8IDApCi0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgJHJlcXVlc3RlZF9jb21taXRf
c2V0ID0gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddOwogICAgICAgICBpZiAo
YXJyYXlfa2V5X2V4aXN0cygkcmVxdWVzdGVkX2NvbW1pdF9zZXQsICRidWlsZF9yZXF1ZXN0X2J5
X2NvbW1pdF9zZXQpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC00NCwxOSArNjgsNzcgQEAg
ZnVuY3Rpb24gbWFpbigpIHsKICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWls
ZF9yZXF1ZXN0X2NvdW50OyAkaSsrKSB7CiAgICAgICAgIGZvcmVhY2ggKCRjb21taXRfc2V0cyBh
cyAkY29tbWl0X3NldCkgewogICAgICAgICAgICAgJGJ1aWxkX3JlcXVlc3QgPSAkYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0WyRjb21taXRfc2V0XTsKLSAgICAgICAgICAgICRkYi0+aW5zZXJ0
X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KAotICAgICAgICAgICAgICAg
ICd0cmlnZ2VyYWJsZScgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfdHJpZ2dlcmFibGUnXSwK
LSAgICAgICAgICAgICAgICAncmVwb3NpdG9yeV9ncm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3RfcmVwb3NpdG9yeV9ncm91cCddLAotICAgICAgICAgICAgICAgICdwbGF0Zm9ybScgPT4g
JGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwKLSAgICAgICAgICAgICAgICAndGVz
dCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfdGVzdCddLAotICAgICAgICAgICAgICAgICdn
cm91cCcgPT4gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfZ3JvdXAnXSwKLSAgICAgICAgICAgICAg
ICAnb3JkZXInID0+ICsrJGN1cnJlbnRfb3JkZXIsCi0gICAgICAgICAgICAgICAgJ2NvbW1pdF9z
ZXQnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXSkpOworICAgICAgICAg
ICAgZHVwbGljYXRlX2J1aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3JkZXIoJGRiLCAkYnVpbGRfcmVx
dWVzdCwgKyskb3JkZXIpOwogICAgICAgICB9CiAgICAgfQogICAgICRkYi0+Y29tbWl0X3RyYW5z
YWN0aW9uKCk7Cit9CiAKLSAgICBleGl0X3dpdGhfc3VjY2VzcygpOworZnVuY3Rpb24gYWRkX3Nl
cXVlbnRpYWxfYnVpbGRfcmVxdWVzdHNfZm9yX2FsbF9jb21taXRfc2V0cygkZGIsICRleGlzdGlu
Z19idWlsZF9yZXF1ZXN0cywgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudCwgJHRlc3Rf
Z3JvdXBfaWQpCit7CisgICAgJG9yZGVyX3NoaWZ0X2J5X2NvbW1pdF9zZXQgPSBhcnJheSgpOwor
ICAgICRsYXN0X2J1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCA9IGFycmF5KCk7CisgICAgZm9y
ZWFjaCAoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzIGFzICRjdXJyZW50X2J1aWxkX3JlcXVlc3Qp
IHsKKyAgICAgICAgJGNvbW1pdF9zZXRfZm9yX2N1cnJlbnRfcmVxdWVzdCA9ICRjdXJyZW50X2J1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddOworICAgICAgICBpZiAoIWFycmF5X2tl
eV9leGlzdHMoJGNvbW1pdF9zZXRfZm9yX2N1cnJlbnRfcmVxdWVzdCwgJGxhc3RfYnVpbGRfcmVx
dWVzdF9ieV9jb21taXRfc2V0KSkKKyAgICAgICAgICAgICRvcmRlcl9zaGlmdF9ieV9jb21taXRf
c2V0WyRjb21taXRfc2V0X2Zvcl9jdXJyZW50X3JlcXVlc3RdID0gY291bnQoJGxhc3RfYnVpbGRf
cmVxdWVzdF9ieV9jb21taXRfc2V0KSAqICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7
CisgICAgICAgICRsYXN0X2J1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskY29tbWl0X3NldF9m
b3JfY3VycmVudF9yZXF1ZXN0XSA9ICRjdXJyZW50X2J1aWxkX3JlcXVlc3Q7CisgICAgfQorCisg
ICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2Uo
JG9yZGVyX3NoaWZ0X2J5X2NvbW1pdF9zZXQsIHRydWUpIGFzICRjb21taXRfc2V0ID0+ICRzaGlm
dCkgeworICAgICAgICBpZiAoISRzaGlmdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAkZGItPnF1ZXJ5KCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3JkZXIgPSBy
ZXF1ZXN0X29yZGVyICsgJDEKKyAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfY29tbWl0X3NldCA9
ICQyIEFORCByZXF1ZXN0X2dyb3VwID0gJDMnLAorICAgICAgICAgICAgYXJyYXkoJHNoaWZ0LCAk
Y29tbWl0X3NldCwgJHRlc3RfZ3JvdXBfaWQpKTsKKyAgICB9CisgICAgZm9yZWFjaCAoYXJyYXlf
a2V5cygkbGFzdF9idWlsZF9yZXF1ZXN0X2J5X2NvbW1pdF9zZXQpIGFzICRjb21taXRfc2V0KSB7
CisgICAgICAgICRjdXJyZW50X2J1aWxkX3JlcXVlc3QgPSAkbGFzdF9idWlsZF9yZXF1ZXN0X2J5
X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAgICAgICAkbGFzdF9leGlzdGluZ19vcmRlciA9
ICRjdXJyZW50X2J1aWxkX3JlcXVlc3RbJ3JlcXVlc3Rfb3JkZXInXTsKKyAgICAgICAgJG9yZGVy
X3NoaWZ0ID0gJG9yZGVyX3NoaWZ0X2J5X2NvbW1pdF9zZXRbJGNvbW1pdF9zZXRdOworICAgICAg
ICBmb3IgKCRpID0gMSwgJHN0YXJ0aW5nX29yZGVyID0gJGxhc3RfZXhpc3Rpbmdfb3JkZXIgKyAk
b3JkZXJfc2hpZnQ7ICRpIDw9ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKysp
CisgICAgICAgICAgICBkdXBsaWNhdGVfYnVpbGRfcmVxdWVzdF93aXRoX25ld19vcmRlcigkZGIs
ICRjdXJyZW50X2J1aWxkX3JlcXVlc3QsICRzdGFydGluZ19vcmRlciArICRpKTsKKyAgICB9Cisg
ICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKK30KKworZnVuY3Rpb24gYWRkX3NlcXVlbnRp
YWxfYnVpbGRfcmVxdWVzdHNfZm9yX2NvbW1pdF9zZXQoJGRiLCAkZXhpc3RpbmdfYnVpbGRfcmVx
dWVzdHMsICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQsICR0YXJnZXRfY29tbWl0X3Nl
dF9pZCkKK3sKKyAgICAkZm91bmRfdGFyZ2V0ID0gZmFsc2U7CisgICAgZm9yZWFjaCAoJGV4aXN0
aW5nX2J1aWxkX3JlcXVlc3RzIGFzICRjdXJyZW50X2J1aWxkX3JlcXVlc3QpIHsKKyAgICAgICAg
aWYgKCRjdXJyZW50X2J1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCddID09ICR0YXJn
ZXRfY29tbWl0X3NldF9pZCkgeworICAgICAgICAgICAgJGZvdW5kX3RhcmdldCA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoISRmb3VuZF90YXJn
ZXQpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9Db21taXRTZXRJblRlc3RHcm91cCcpOwor
CisgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKGFycmF5X3JldmVy
c2UoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzLCB0cnVlKSBhcyAkY3VycmVudF9idWlsZF9yZXF1
ZXN0KSB7CisgICAgICAgIGlmICgkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1p
dF9zZXQnXSA9PSAkdGFyZ2V0X2NvbW1pdF9zZXRfaWQpIHsKKyAgICAgICAgICAgIGZvciAoJGkg
PSAwOyAkaSA8ICRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspCisgICAgICAg
ICAgICAgICAgZHVwbGljYXRlX2J1aWxkX3JlcXVlc3Rfd2l0aF9uZXdfb3JkZXIoJGRiLCAkY3Vy
cmVudF9idWlsZF9yZXF1ZXN0LCAkY3VycmVudF9idWlsZF9yZXF1ZXN0WydyZXF1ZXN0X29yZGVy
J10gKyAkaSArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAkZGItPnF1ZXJ5KCdVUERBVEUgYnVpbGRfcmVxdWVzdHMgU0VUIHJlcXVlc3Rfb3Jk
ZXIgPSByZXF1ZXN0X29yZGVyICsgJDEgV0hFUkUgcmVxdWVzdF9pZCA9ICQyJywKKyAgICAgICAg
ICAgICAgICBhcnJheSgkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50LCAkY3VycmVudF9i
dWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2lkJ10pKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAkZGIt
PmNvbW1pdF90cmFuc2FjdGlvbigpOworfQorCitmdW5jdGlvbiBkdXBsaWNhdGVfYnVpbGRfcmVx
dWVzdF93aXRoX25ld19vcmRlcigkZGIsICRidWlsZF9yZXF1ZXN0LCAkb3JkZXJfb3ZlcndyaXRl
KQoreworICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFy
cmF5KAorICAgICAgICAndHJpZ2dlcmFibGUnID0+ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Ry
aWdnZXJhYmxlJ10sCisgICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkYnVpbGRfcmVxdWVz
dFsncmVxdWVzdF9yZXBvc2l0b3J5X2dyb3VwJ10sCisgICAgICAgICdwbGF0Zm9ybScgPT4gJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwKKyAgICAgICAgJ3Rlc3QnID0+ICRidWls
ZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwKKyAgICAgICAgJ2dyb3VwJyA9PiAkYnVpbGRfcmVx
dWVzdFsncmVxdWVzdF9ncm91cCddLAorICAgICAgICAnb3JkZXInID0+ICRvcmRlcl9vdmVyd3Jp
dGUsCisgICAgICAgICdjb21taXRfc2V0JyA9PiAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21t
aXRfc2V0J10pKTsKIH0KIAogbWFpbigpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFs
eXNpcy10YXNrLnBocAppbmRleCAyOGExNjEzMDA4NGU4YzRkYWUxNGJkMjlmNTBmZmU4YmNkZThh
Yzk0Li4yZGM3NDdjYmRlMjY3OWUzZjk2YWQ1OTAwYjA2ZGYzMmEzNzhlMWEzIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1h
bmFseXNpcy10YXNrLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3By
aXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpcy10YXNrLnBocApAQCAtMTAsNiArMTAsNyBAQCBm
dW5jdGlvbiBtYWluKCkgewogICAgICRhdXRob3IgPSByZW1vdGVfdXNlcl9uYW1lKCRkYXRhKTsK
ICAgICAkbmFtZSA9IGFycmF5X2dldCgkZGF0YSwgJ25hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9j
b3VudCA9IGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25Db3VudCcpOworICAgICRyZXBldGl0
aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBldGl0aW9uVHlwZScsICdhbHRlcm5hdGlu
ZycpOwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBhcnJheV9nZXQoJGRhdGEsICduZWVkc05v
dGlmaWNhdGlvbicsIEZhbHNlKTsKICAgICAkdGVzdF9ncm91cF9uYW1lID0gYXJyYXlfZ2V0KCRk
YXRhLCAndGVzdEdyb3VwTmFtZScpOwogICAgICRyZXZpc2lvbl9zZXRfbGlzdCA9IGFycmF5X2dl
dCgkZGF0YSwgJ3JldmlzaW9uU2V0cycpOwpAQCAtMjAsNiArMjEsOSBAQCBmdW5jdGlvbiBtYWlu
KCkgewogICAgIGlmICghJG5hbWUpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ05h
bWUnLCBhcnJheSgnbmFtZScgPT4gJG5hbWUpKTsKIAorICAgIGlmICghaW5fYXJyYXkoJHJlcGV0
aXRpb25fdHlwZSwgYXJyYXkoJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRpYWwnKSkpCisgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25UeXBlJywgYXJyYXkoJ3JlcGV0aXRp
b25UeXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlKSk7CisKICAgICAkcmFuZ2UgPSB2YWxpZGF0ZV9h
cmd1bWVudHMoJGRhdGEsIGFycmF5KCdzdGFydFJ1bicgPT4gJ2ludCcsICdlbmRSdW4nID0+ICdp
bnQnKSk7CiAKICAgICAkc3RhcnRfcnVuID0gZW5zdXJlX3Jvd19ieV9pZCgkZGIsICd0ZXN0X3J1
bnMnLCAncnVuJywgJHJhbmdlWydzdGFydFJ1biddLCAnSW52YWxpZFN0YXJ0UnVuJywgJHJhbmdl
KTsKQEAgLTg1LDcgKzg5LDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgJHRyaWdnZXJh
YmxlX2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwogICAgICAgICAkdGVzdF9pZCA9ICR0cmlnZ2Vy
YWJsZVsndGVzdCddOwogICAgICAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0c19mcm9tX3Jl
dmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdCk7Ci0g
ICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRf
c2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9p
ZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3Vu
dCwgJG5lZWRzX25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9i
dWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25h
bWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10s
ICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwgJG5lZWRzX25v
dGlmaWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzQyNTNmYmU3ODY1OWJh
MmY2ZTA5OTkzMzEwMWJiOGEyOWYzMTFkZS4uZDIzYjJmZjk2NjgxYzhmYTg4ZWMwZjk3M2QxMGVi
ZmYzNzI4ODg1MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKQEAg
LTE4LDYgKzE4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRhc2tfaWQgPSBhcnJheV9nZXQo
JGFyZ3VtZW50cywgJ3Rhc2snKTsKICAgICAkdGFza19uYW1lID0gYXJyYXlfZ2V0KCRkYXRhLCAn
dGFza05hbWUnKTsKICAgICAkcmVwZXRpdGlvbl9jb3VudCA9ICRhcmd1bWVudHNbJ3JlcGV0aXRp
b25Db3VudCddOworICAgICRyZXBldGl0aW9uX3R5cGUgPSBhcnJheV9nZXQoJGRhdGEsICdyZXBl
dGl0aW9uVHlwZScsICdhbHRlcm5hdGluZycpOwogICAgICRuZWVkc19ub3RpZmljYXRpb24gPSBh
cnJheV9nZXQoJGRhdGEsICduZWVkc05vdGlmaWNhdGlvbicsIEZhbHNlKTsKICAgICAkcGxhdGZv
cm1faWQgPSBhcnJheV9nZXQoJGRhdGEsICdwbGF0Zm9ybScpOwogICAgICR0ZXN0X2lkID0gYXJy
YXlfZ2V0KCRkYXRhLCAndGVzdCcpOwpAQCAtNDIsNiArNDMsOSBAQCBmdW5jdGlvbiBtYWluKCkK
ICAgICBlbHNlIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAgICAgICAgIGV4aXRfd2l0aF9l
cnJvcignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdyZXBldGl0aW9uQ291bnQnID0+
ICRyZXBldGl0aW9uX2NvdW50KSk7CiAKKyAgICBpZiAoIWluX2FycmF5KCRyZXBldGl0aW9uX3R5
cGUsIGFycmF5KCdhbHRlcm5hdGluZycsICdzZXF1ZW50aWFsJykpKQorICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ludmFsaWRSZXBldGl0aW9uVHlwZScsIGFycmF5KCdyZXBldGl0aW9uVHlwZScg
PT4gJHJlcGV0aXRpb25fdHlwZSkpOworCiAgICAgJHRyaWdnZXJhYmxlX2lkID0gTlVMTDsKICAg
ICBpZiAoJHRhc2tfaWQpIHsKICAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9maXJzdF9yb3co
J2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lkKSk7CkBAIC04
Niw3ICs5MCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgIGlmICgkdGFza19uYW1lKQogICAgICAg
ICAkdGFza19pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGFza3MnLCAndGFzaycsIGFy
cmF5KCduYW1lJyA9PiAkdGFza19uYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7CiAKLSAgICAk
Z3JvdXBfaWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29t
bWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJHRyaWdnZXJhYmxlX2lkLCAkcGxh
dGZvcm1faWQsICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJG5lZWRzX25vdGlmaWNhdGlv
bik7CisgICAgJGdyb3VwX2lkID0gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3Rz
KCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJs
ZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0
aW9uX3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogCiAgICAgJGRiLT5jb21taXRfdHJhbnNh
Y3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9w
cml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAppbmRleCAz
NTVlNmM4NWYxMjNiMmMzNTQ0NzExYmZiNjE3NDAwMDc5Mzc2OWFjLi4zMTc1ZDcxMGE3YzdjNjQ1
NGJmYjc5NjE2ZWRlZDY4MzI5MzlmOTQ0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocAorKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0
LWdyb3VwLnBocApAQCAtMjAsNiArMjAsOSBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICAk
dmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKICAgICB9CiAKKyAgICBp
ZiAoYXJyYXlfa2V5X2V4aXN0cygnY2FuY2VsJywgJGRhdGEpKQorICAgICAgICAkdmFsdWVzWydt
YXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSBGQUxTRTsKKwogICAgIGlmIChhcnJheV9rZXlfZXhp
c3RzKCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgJGRhdGEpKQogICAgICAgICAgJHZhbHVlc1snbWF5
X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gJGRhdGFbJ21heU5lZWRNb3JlUmVxdWVzdHMnXTsKIApA
QCAtNDQsNyArNDcsNyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0ZhaWxlZFRvVXBkYXRlVGVzdEdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9p
ZCwgJ3ZhbHVlcycgPT4gJHZhbHVlcykpOwogICAgIH0KIAotICAgIGlmIChhcnJheV9nZXQoJGRh
dGEsICdoaWRkZW4nKSkgeworICAgIGlmIChhcnJheV9nZXQoJGRhdGEsICdoaWRkZW4nKSB8fCBh
cnJheV9nZXQoJGRhdGEsICdjYW5jZWwnKSkgewogICAgICAgICAkZGItPnF1ZXJ5X2FuZF9nZXRf
YWZmZWN0ZWRfcm93cygnVVBEQVRFIGJ1aWxkX3JlcXVlc3RzIFNFVCByZXF1ZXN0X3N0YXR1cyA9
ICQxCiAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2dyb3VwID0gJDIgQU5EIHJlcXVlc3Rfc3Rh
dHVzID0gJDMnLCBhcnJheSgnY2FuY2VsZWQnLCAkdGVzdF9ncm91cF9pZCwgJ3BlbmRpbmcnKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFy
ZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCmluZGV4IGM1NmUyYjAwOTE3MThj
MDkwNzI3NzE2MjQ0NWY3YzllZTdhNDg5MmQuLmJkNzE3MTdkMjhmNTE2ZjkwOTc2ZGE5OWYxYjMz
NDdiOGFhNjM4YzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
c2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKQEAgLTEzNSwxMiAr
MTM1LDEyIEBAIGNsYXNzIENvbW1vbkNvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgZWxlbWVu
dC5hcHBlbmRDaGlsZChDb21tb25Db21wb25lbnRCYXNlLl9jb250ZXh0LmNyZWF0ZVRleHROb2Rl
KGNvbnRlbnQpKTsKICAgICB9CiAKLSAgICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxs
YmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCisgICAgY3JlYXRlTGlu
ayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRl
eCA9IG51bGwpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbW9uQ29tcG9uZW50QmFzZS5jcmVh
dGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRh
YkluZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9y
Q2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsLCB0YWJJbmRleD1udWxsKQorICAgIHN0YXRp
YyBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJu
YWwsIHRhYkluZGV4ID0gbnVsbCkKICAgICB7CiAgICAgICAgIHZhciB0aXRsZSA9IHRpdGxlT3JD
YWxsYmFjazsKICAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHsKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20t
Y29uZmlndXJhdGlvbi10ZXN0LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWNvbmZpZ3VyYXRpb24tdGVzdC1ncm91cC1m
b3JtLmpzCmluZGV4IDg3YjE3YzE0NmQ0NTNlMDJhMzAzZGYyYTkyNDIyMzRlNGE4ZTRjNjkuLjJm
YmRhYjNlMmQwNjYwY2Y2N2ZhZGRlZjA1MTQ5YzA4YmExNzY2MTkgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tY29uZmlndXJh
dGlvbi10ZXN0LWdyb3VwLWZvcm0uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1jb25maWd1cmF0aW9uLXRlc3QtZ3JvdXAtZm9ybS5q
cwpAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDdXN0b21Db25maWd1cmF0aW9uVGVzdEdyb3VwRm9y
bSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICBjb25zdCB0ZXN0ID0gY29uZmlndXJh
dG9yLnRlc3RzKClbMF07IC8vIEZJWE1FOiBBZGQgdGhlIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcg
bXVsdGlwbGUgdGVzdHMuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdGhpcy5faGFzVGFzayA9
PT0gIXRhc2tOYW1lKTsKICAgICAgICAgaWYgKCF0aGlzLl9oYXNUYXNrKQotICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEFjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50
LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUsIHRo
aXMuX25vdGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCdzdGFydFRlc3RpbmcnLCB0ZXN0R3JvdXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRo
aXMuX3JlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90
aWZ5T25Db21wbGV0aW9uLCB0YXNrTmFtZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycsIHRoaXMuX3JlcGV0aXRpb25Db3VudCwg
dGVzdEdyb3VwTmFtZSwgY29tbWl0U2V0cywgcGxhdGZvcm0sIHRlc3QsIHRoaXMuX25vdGlmeU9u
Q29tcGxldGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzdGFydFRlc3Rp
bmcnLCB0ZXN0R3JvdXBOYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX3JlcGV0aXRp
b25UeXBlLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGhpcy5fbm90aWZ5T25Db21wbGV0
aW9uKTsKICAgICB9CiAKICAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFi
bGUtdGVzdC1ncm91cC1mb3JtLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggMDgxY2E5
ZDI3ZDNkYjhjOTMyMGRiMDI4MjA3MmU1NzIxZDdkZjZhYy4uMWYzNzA1MDUzYmU0ODUwNzg2MWEz
ZGUzMGFhNThmYWU1MTUyZDgwZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6
YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKQEAgLTI3LDcgKzI3LDggQEAgY2xhc3MgQ3VzdG9taXph
YmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogCiAgICAgc3RhcnRUZXN0
aW5nKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3N0YXJ0VGVzdGluZycs
IHRoaXMuX3JlcGV0aXRpb25Db3VudCwgdGhpcy5fbmFtZSwgdGhpcy5fY29tcHV0ZUNvbW1pdFNl
dE1hcCgpLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLmRpc3BhdGNo
QWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9uYW1lLCB0aGlzLl9yZXBldGl0aW9uQ291bnQs
IHRoaXMuX3JlcGV0aXRpb25UeXBlLAorICAgICAgICAgICAgdGhpcy5fY29tcHV0ZUNvbW1pdFNl
dE1hcCgpLCB0aGlzLl9ub3RpZnlPbkNvbXBsZXRpb24pOwogICAgIH0KIAogICAgIGRpZENvbnN0
cnVjdFNoYWRvd1RyZWUoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMKaW5kZXggYTQz
ZWRmMzUwOGJjZjA3NDYyNWRiOTk2NGY2MDRkZTE4MDgyOTY0Zi4uOTg5MjQxMDEwOTk2ZWMzNDI0
M2JhMTJlODVjYjI1ZjBjZWEwODA2YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpz
CkBAIC0yNyw3ICsyNyw4IEBAIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0ZW5kcyBDb21wb25lbnRC
YXNlIHsKIAogICAgIHN0YXJ0VGVzdGluZygpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNo
QWN0aW9uKCdzdGFydFRlc3RpbmcnLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMuX25vdGlm
eU9uQ29tcGxldGlvbik7CisgICAgICAgIGNvbnN0IHJlcGV0aXRpb25UeXBlU2VsZWN0ID0gdGhp
cy5jb250ZW50KCdyZXBldGl0aW9uLXR5cGUnKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlv
bignc3RhcnRUZXN0aW5nJywgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZVNl
bGVjdC52YWx1ZSwgdGhpcy5fbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICB9CiAKICAgICBzdGF0
aWMgaHRtbFRlbXBsYXRlKCkKQEAgLTY1LDcgKzY2LDExIEBAIGNsYXNzIFRlc3RHcm91cEZvcm0g
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICA8b3B0aW9uPjk8L29wdGlv
bj4KICAgICAgICAgICAgICAgICA8b3B0aW9uPjEwPC9vcHRpb24+CiAgICAgICAgICAgICA8L3Nl
bGVjdD4KLSAgICAgICAgICAgIGl0ZXJhdGlvbnMgcGVyIHNldAorICAgICAgICAgICAgPGxhYmVs
Pml0ZXJhdGlvbnMgcGVyIHNldCBpbjwvbGFiZWw+CisgICAgICAgICAgICA8c2VsZWN0IGlkPSJy
ZXBldGl0aW9uLXR5cGUiPgorICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9
ImFsdGVybmF0aW5nIj5hbHRlcm5hdGUgKEFCQUIpPC9vcHRpb24+CisgICAgICAgICAgICAgICAg
PG9wdGlvbiB2YWx1ZT0ic2VxdWVudGlhbCI+c2VxdWVuY2UgKEFBQkIpPC9vcHRpb24+CisgICAg
ICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgIDxpbnB1dCBpZD0ibm90aWZ5LW9uLWNvbXBs
ZXRpb24tY2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkLz5Ob3RpZnkgb24gY29tcGxl
dGlvbgogICAgICAgICBgOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCmluZGV4IDE3NzZhODE3
YmMzMTk5NjkyOTcyYTQwYWE0ZWQ2OGMxYTk1Y2RlZWUuLjZhMDg1Y2FjZTJjNzU3ZTg5MzgyZGRm
ZWExMDUxMDk3MzU5ZmFhMGQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qcwpAQCAtMzI0LDcgKzMyNCw3
IEBAIGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICBy
ZXR1cm4gcmVzdWx0czsKICAgICB9CiAKLSAgICBzdGF0aWMgYXN5bmMgY3JlYXRlKG5hbWUsIHN0
YXJ0UG9pbnQsIGVuZFBvaW50LCB0ZXN0R3JvdXBOYW1lPW51bGwsIHJlcGV0aXRpb25Db3VudD0w
LCBub3RpZnlPbkNvbXBsZXRpb249ZmFsc2UpCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZShuYW1l
LCBzdGFydFBvaW50LCBlbmRQb2ludCwgdGVzdEdyb3VwTmFtZSA9IG51bGwsIHJlcGV0aXRpb25D
b3VudCA9IDAsIHJlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJywgbm90aWZ5T25Db21wbGV0
aW9uID0gZmFsc2UpCiAgICAgewogICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge25hbWUsIHN0
YXJ0UnVuOiBzdGFydFBvaW50LmlkLCBlbmRSdW46IGVuZFBvaW50LmlkfTsKICAgICAgICAgaWYg
KHRlc3RHcm91cE5hbWUpIHsKQEAgLTMzMyw2ICszMzMsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2sg
ZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlcGV0aXRp
b25Db3VudCddID0gcmVwZXRpdGlvbkNvdW50OwogICAgICAgICAgICAgcGFyYW1ldGVyc1sndGVz
dEdyb3VwTmFtZSddID0gdGVzdEdyb3VwTmFtZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnNbJ25l
ZWRzTm90aWZpY2F0aW9uJ10gPSBub3RpZnlPbkNvbXBsZXRpb247CisgICAgICAgICAgICBwYXJh
bWV0ZXJzWydyZXBldGl0aW9uVHlwZSddID0gcmVwZXRpdGlvblR5cGU7CiAgICAgICAgIH0KICAg
ICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdj
cmVhdGUtYW5hbHlzaXMtdGFzaycsIHBhcmFtZXRlcnMpOwogICAgICAgICByZXR1cm4gQW5hbHlz
aXNUYXNrLmZldGNoQnlJZChyZXNwb25zZS50YXNrSWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3Qu
anMKaW5kZXggZjA5NWUwZDdhYmU4NmEwMjY1MjE1MTYxMjc4NGQyMWQxMDNhNTYxNi4uODIzMDI2
NmE2NGQ2NDEwNTdkOWZmMGI3NGZiOGE5YzNkMzIyM2E3YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0Lmpz
CkBAIC0xOCw3ICsxOCw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9i
amVjdCB7CiAgICAgICAgIHRoaXMuX3BsYXRmb3JtID0gb2JqZWN0LnBsYXRmb3JtOwogICAgICAg
ICBjb25zb2xlLmFzc2VydCghb2JqZWN0LnRlc3QgfHwgb2JqZWN0LnRlc3QgaW5zdGFuY2VvZiBU
ZXN0KTsKICAgICAgICAgdGhpcy5fdGVzdCA9IG9iamVjdC50ZXN0OwotICAgICAgICB0aGlzLl9v
cmRlciA9IG9iamVjdC5vcmRlcjsKKyAgICAgICAgdGhpcy5fb3JkZXIgPSArb2JqZWN0Lm9yZGVy
OwogICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QuY29tbWl0U2V0IGluc3RhbmNlb2YgQ29t
bWl0U2V0KTsKICAgICAgICAgdGhpcy5fY29tbWl0U2V0ID0gb2JqZWN0LmNvbW1pdFNldDsKICAg
ICAgICAgdGhpcy5fc3RhdHVzID0gb2JqZWN0LnN0YXR1czsKQEAgLTMxLDcgKzMxLDcgQEAgY2xh
c3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKIAogICAgIHVwZGF0ZVNp
bmdsZXRvbihvYmplY3QpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vcmRl
ciA9PSBvYmplY3Qub3JkZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydCgrdGhpcy5fb3JkZXIg
PD0gK29iamVjdC5vcmRlcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbW1pdFNl
dCA9PSBvYmplY3QuY29tbWl0U2V0KTsKIAogICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSBvYmpl
Y3QudGVzdEdyb3VwOwpAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5k
cyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9zdGF0dXNVcmwgPSBvYmplY3QudXJs
OwogICAgICAgICB0aGlzLl9idWlsZElkID0gb2JqZWN0LmJ1aWxkOwogICAgICAgICB0aGlzLl9z
dGF0dXNEZXNjcmlwdGlvbiA9IG9iamVjdC5zdGF0dXNEZXNjcmlwdGlvbjsKKyAgICAgICAgdGhp
cy5fb3JkZXIgPSArb2JqZWN0Lm9yZGVyOwogICAgIH0KIAogICAgIHRyaWdnZXJhYmxlKCkgeyBy
ZXR1cm4gdGhpcy5fdHJpZ2dlcmFibGU7IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCmluZGV4IDk3ZThiYzhlZTNj
ZGE5YTZmNjQxNjIzNTM0ZTY3ZmI4MDAzOTk4MmIuLjhkN2NjMzRlODIzNjFjNGZlNDJiZDJhYmMw
OGI5MGYyY2M1NWQ0NzggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwpAQCAtMTEsNyArMTEsOCBAQCBjbGFzcyBU
ZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5faXNIaWRkZW4g
PSBvYmplY3QuaGlkZGVuOwogICAgICAgICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVj
dC5uZWVkc05vdGlmaWNhdGlvbjsKICAgICAgICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9
IG9iamVjdC5tYXlOZWVkTW9yZVJlcXVlc3RzOwotICAgICAgICB0aGlzLl9pbml0aWFsUmVwZXRp
dGlvbkNvdW50ID0gb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7CisgICAgICAgIHRoaXMu
X2luaXRpYWxSZXBldGl0aW9uQ291bnQgPSArb2JqZWN0LmluaXRpYWxSZXBldGl0aW9uQ291bnQ7
CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25UeXBlID0gb2JqZWN0LnJlcGV0aXRpb25UeXBlOwog
ICAgICAgICB0aGlzLl9idWlsZFJlcXVlc3RzID0gW107CiAgICAgICAgIHRoaXMuX29yZGVyQnVp
bGRSZXF1ZXN0c0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYnVpbGRS
ZXF1ZXN0cykgPT4gewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVxdWVzdHMuc29ydCgoYSwg
YikgPT4gYS5vcmRlcigpIC0gYi5vcmRlcigpKTsKQEAgLTM2LDcgKzM3LDggQEAgY2xhc3MgVGVz
dEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZp
Y2F0aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9ub3RpZmlj
YXRpb25TZW50QXQgPSBvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0ID8gbmV3IERhdGUob2JqZWN0
Lm5vdGlmaWNhdGlvblNlbnRBdCkgOiBudWxsOwogICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJl
cXVlc3RzID0gb2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7Ci0gICAgICAgIHRoaXMuX2luaXRp
YWxSZXBldGl0aW9uQ291bnQgPSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKKyAgICAg
ICAgdGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRp
b25Db3VudDsKKyAgICAgICAgdGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlv
blR5cGU7CiAgICAgfQogCiAgICAgdGFzaygpIHsgcmV0dXJuIEFuYWx5c2lzVGFzay5maW5kQnlJ
ZCh0aGlzLl90YXNrSWQpOyB9CkBAIC00Niw2ICs0OCw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRl
bmRzIExhYmVsZWRPYmplY3QgewogICAgIG5lZWRzTm90aWZpY2F0aW9uKCkgeyByZXR1cm4gdGhp
cy5fbmVlZHNOb3RpZmljYXRpb247IH0KICAgICBtYXlOZWVkTW9yZVJlcXVlc3RzKCkgeyByZXR1
cm4gdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0czsgfQogICAgIGluaXRpYWxSZXBldGl0aW9uQ291
bnQoKSB7IHJldHVybiB0aGlzLl9pbml0aWFsUmVwZXRpdGlvbkNvdW50OyB9CisgICAgcmVwZXRp
dGlvblR5cGUoKSB7IHJldHVybiB0aGlzLl9yZXBldGl0aW9uVHlwZTsgfQogICAgIG5vdGlmaWNh
dGlvblNlbnRBdCgpIHsgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvblNlbnRBdDsgfQogICAgIGF1
dGhvcigpIHsgcmV0dXJuIHRoaXMuX2F1dGhvck5hbWU7IH0KICAgICBhZGRCdWlsZFJlcXVlc3Qo
cmVxdWVzdCkKQEAgLTgxLDExICs4NCwxMCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29yZGVyQnVpbGRSZXF1ZXN0c0xhemls
eS5ldmFsdWF0ZSguLi50aGlzLl9idWlsZFJlcXVlc3RzKTsKICAgICB9CiAKLSAgICByZXBldGl0
aW9uQ291bnQoKQorICAgIHJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2J1aWxkUmVxdWVzdHMubGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHRoaXMuX2J1aWxkUmVxdWVz
dHNbMF0uY29tbWl0U2V0KCk7CiAgICAgICAgIGxldCBjb3VudCA9IDA7CiAgICAgICAgIGZvciAo
Y29uc3QgcmVxdWVzdCBvZiB0aGlzLl9idWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAgICBpZiAo
cmVxdWVzdC5pc1Rlc3QoKSAmJiByZXF1ZXN0LmNvbW1pdFNldCgpID09IGNvbW1pdFNldCkKQEAg
LTk0LDYgKzk2LDQ5IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgfQogCisgICAgaGFzUmV0cmllcygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCkuc29tZShjb21taXRTZXQg
PT4gdGhpcy5yZXBldGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSA+IHRoaXMuaW5p
dGlhbFJlcGV0aXRpb25Db3VudCgpKTsKKyAgICB9CisKKyAgICBhZGRpdGlvbmFsUmVwZXRpdGlv
bk5lZWRlZFRvUmVhY2hJbml0aWFsUmVwZXRpdGlvbkNvdW50KGNvbW1pdFNldCkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50ID0gdGhpcy5yZXF1ZXN0c0Zv
ckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigKKyAgICAgICAgICAgIChyZXF1ZXN0KSA9PiBy
ZXF1ZXN0LmlzVGVzdCgpICYmIChyZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpIHx8ICFyZXF1ZXN0Lmhh
c0ZpbmlzaGVkKCkpKS5sZW5ndGg7CisgICAgICAgIHJldHVybiBNYXRoLm1heCgwLCB0aGlzLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKSAtIHBvdGVudGlhbGx5U3VjY2Vzc2Z1bENvdW50KTsKKyAg
ICB9CisKKyAgICBzdWNjZXNzZnVsVGVzdENvdW50KGNvbW1pdFNldCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZmlsdGVyKChyZXF1
ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpICYmIHJlcXVlc3QuaGFzQ29tcGxldGVkKCkpLmxlbmd0
aDsKKyAgICB9CisKKyAgICBpc0ZpcnN0VGVzdFJlcXVlc3QoYnVpbGRSZXF1ZXN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX29yZGVyZWRCdWlsZFJlcXVlc3RzKCkuZmlsdGVyKChyZXF1
ZXN0KSA9PiByZXF1ZXN0LmlzVGVzdCgpKVswXSA9PSBidWlsZFJlcXVlc3Q7CisgICAgfQorCisg
ICAgcHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxkUmVxdWVzdCkKKyAgICB7CisgICAgICAgIGNv
bnN0IG9yZGVyZWRCdWlsZFJlcXVlc3RzID0gdGhpcy5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsK
KyAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0SW5kZXggPSBvcmRlcmVkQnVpbGRSZXF1ZXN0cy5p
bmRleE9mKGJ1aWxkUmVxdWVzdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkUmVxdWVz
dEluZGV4ID49IDApOworICAgICAgICByZXR1cm4gb3JkZXJlZEJ1aWxkUmVxdWVzdHNbYnVpbGRS
ZXF1ZXN0SW5kZXggLSAxXTsKKyAgICB9CisKKyAgICByZXRyeUNvdW50Rm9yQ29tbWl0U2V0KGNv
bW1pdFNldCkKKyAgICB7CisgICAgICAgIGNvbnN0IHJldHJ5Q291bnQgPSB0aGlzLnJlcGV0aXRp
b25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpIC0gdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJldHJ5Q291bnQgPj0gMCk7CisgICAgICAg
IHJldHVybiByZXRyeUNvdW50OworICAgIH0KKworICAgIHJldHJ5Q291bnRzQXJlU2FtZUZvckFs
bENvbW1pdFNldHMoKQorICAgIHsKKyAgICAgICAgY29uc3QgcmV0cnlDb3VudEZvckZpcnN0Q29t
bWl0U2V0ID0gdGhpcy5yZXRyeUNvdW50Rm9yQ29tbWl0U2V0KHRoaXMucmVxdWVzdGVkQ29tbWl0
U2V0cygpWzBdKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLmV2
ZXJ5KGNvbW1pdFNldCA9PiB0aGlzLnJldHJ5Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSA9
PSByZXRyeUNvdW50Rm9yRmlyc3RDb21taXRTZXQpOworICAgIH0KKwogICAgIHJlcXVlc3RlZENv
bW1pdFNldHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVSZXF1ZXN0ZWRD
b21taXRTZXRzTGF6aWx5LmV2YWx1YXRlKC4uLnRoaXMuX29yZGVyZWRCdWlsZFJlcXVlc3RzKCkp
OwpAQCAtMTAyLDcgKzE0Nyw2IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmpl
Y3QgewogICAgIHN0YXRpYyBfY29tcHV0ZVJlcXVlc3RlZENvbW1pdFNldHMoLi4ub3JkZXJlZEJ1
aWxkUmVxdWVzdHMpCiAgICAgewogICAgICAgICBjb25zdCByZXF1ZXN0ZWRDb21taXRTZXRzID0g
W107Ci0gICAgICAgIGNvbnN0IGNvbW1pdFNldExhYmVsTWFwID0gbmV3IE1hcDsKICAgICAgICAg
Zm9yIChjb25zdCByZXF1ZXN0IG9mIG9yZGVyZWRCdWlsZFJlcXVlc3RzKSB7CiAgICAgICAgICAg
ICBjb25zdCBzZXQgPSByZXF1ZXN0LmNvbW1pdFNldCgpOwogICAgICAgICAgICAgaWYgKCFyZXF1
ZXN0ZWRDb21taXRTZXRzLmluY2x1ZGVzKHNldCkpCkBAIC0yMTksNiArMjYzLDE0IEBAIGNsYXNz
IFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB9KTsKICAgICB9CiAK
KyAgICBhc3luYyBjYW5jZWxQZW5kaW5nUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CisgICAgICAgICAgICBncm91cDogdGhpcy5pZCgp
LAorICAgICAgICAgICAgY2FuY2VsOiB0cnVlLAorICAgICAgICB9KTsKKyAgICB9CisKICAgICBh
c3luYyBkaWRTZW5kTm90aWZpY2F0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhd2FpdCB0
aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoewpAQCAtMjI4LDExICsyODAsMTQgQEAgY2xhc3MgVGVz
dEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAg
IGFzeW5jIGFkZE1vcmVCdWlsZFJlcXVlc3RzKGFkZENvdW50KQorICAgIGFzeW5jIGFkZE1vcmVC
dWlsZFJlcXVlc3RzKGFkZENvdW50LCBjb21taXRTZXQgPSBudWxsKQogICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIWNvbW1pdFNldCB8fCB0aGlzLnJlcGV0aXRpb25UeXBlKCkgPT0gJ3Nl
cXVlbnRpYWwnKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbW1pdFNldCB8fCBjb21taXRT
ZXQgaW5zdGFuY2VvZiBDb21taXRTZXQpOwogICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fdXBk
YXRlQnVpbGRSZXF1ZXN0KHsKICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAgICAgICAg
ICAgICBhZGRDb3VudCwKKyAgICAgICAgICAgIGNvbW1pdFNldDogY29tbWl0U2V0ID8gY29tbWl0
U2V0LmlkKCkgOiBudWxsCiAgICAgICAgIH0sICdhZGQtYnVpbGQtcmVxdWVzdHMnKTsKICAgICB9
CiAKQEAgLTI0NCwzOSArMjk5LDExMiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVk
T2JqZWN0IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNyZWF0ZVdpdGhUYXNr
KHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlV2l0
aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOwogICAgICAg
ICBjb25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRzRnJvbUNvbW1pdFNl
dHMoY29tbWl0U2V0cyk7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNrTmFtZSwgbmFtZTog
Z3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBl
dGl0aW9uQ291bnQsIHJldmlzaW9uU2V0cywgbmVlZHNOb3RpZmljYXRpb246ICEhbm90aWZ5T25D
b21wbGV0aW9ufTsKLSAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2Ny
ZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gQW5hbHlzaXNUYXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSwgdHJ1ZSk7Ci0gICAg
ICAgIH0pLnRoZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoRm9y
VGFzayh0YXNrLmlkKCkpLnRoZW4oKCkgPT4gdGFzayk7Ci0gICAgICAgIH0pOworICAgICAgICBj
b25zdCBkYXRhID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3Qt
Z3JvdXAnLCB7CisgICAgICAgICAgICB0YXNrTmFtZSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9y
bTogcGxhdGZvcm0uaWQoKSwgdGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291bnQsIHJldmlz
aW9uU2V0cywKKyAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlLCBuZWVkc05vdGlmaWNhdGlvbjog
ISFub3RpZnlPbkNvbXBsZXRpb259KTsKKyAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFuYWx5
c2lzVGFzay5mZXRjaEJ5SWQoZGF0YVsndGFza0lkJ10sIC8qIGlnbm9yZUNhY2hlICovIHRydWUp
OworICAgICAgICBhd2FpdCB0aGlzLmZldGNoRm9yVGFzayh0YXNrLmlkKCkpOworICAgICAgICBy
ZXR1cm4gdGFzazsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3Vy
YXRpb24odGFzaywgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBj
b21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgc3RhdGljIGFzeW5jIGNyZWF0ZVdp
dGhDdXN0b21Db25maWd1cmF0aW9uKHRhc2ssIHBsYXRmb3JtLCB0ZXN0LCBncm91cE5hbWUsIHJl
cGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29tcGxl
dGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09
IDIpOwogICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBDb21taXRTZXQucmV2aXNpb25TZXRz
RnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cyk7Ci0gICAgICAgIGNvbnN0IHBhcmFtcyA9IHt0YXNr
OiB0YXNrLmlkKCksIG5hbWU6IGdyb3VwTmFtZSwgcGxhdGZvcm06IHBsYXRmb3JtLmlkKCksIHRl
c3Q6IHRlc3QuaWQoKSwgcmVwZXRpdGlvbkNvdW50LCByZXZpc2lvblNldHMsIG5lZWRzTm90aWZp
Y2F0aW9uOiAhIW5vdGlmeU9uQ29tcGxldGlvbn07Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHBhcmFtcykudGhlbigoZGF0YSkg
PT4gewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCdd
LCB0cnVlKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAgICAgIHRh
c2s6IHRhc2suaWQoKSwgbmFtZTogZ3JvdXBOYW1lLCBwbGF0Zm9ybTogcGxhdGZvcm0uaWQoKSwg
dGVzdDogdGVzdC5pZCgpLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLAorICAgICAg
ICAgICAgcmV2aXNpb25TZXRzLCBuZWVkc05vdGlmaWNhdGlvbjogISFub3RpZnlPbkNvbXBsZXRp
b259KTsKKyAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEJ5SWQoZGF0YVsndGVzdEdyb3VwSWQnXSwg
LyogaWdub3JlQ2FjaGUgKi8gdHJ1ZSk7CisgICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGxCeVRh
c2soZGF0YVsndGFza0lkJ10pOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVBbmRSZWZldGNo
VGVzdEdyb3Vwcyh0YXNrLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlm
eU9uQ29tcGxldGlvbikKKyAgICBzdGF0aWMgYXN5bmMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91
cHModGFzaywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0
cywgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29t
bWl0U2V0cy5sZW5ndGggPT0gMik7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IENvbW1p
dFNldC5yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKLSAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgewotICAg
ICAgICAgICAgdGFzazogdGFzay5pZCgpLAotICAgICAgICAgICAgbmFtZTogbmFtZSwKLSAgICAg
ICAgICAgIHJlcGV0aXRpb25Db3VudDogcmVwZXRpdGlvbkNvdW50LAotICAgICAgICAgICAgcmV2
aXNpb25TZXRzOiByZXZpc2lvblNldHMsCi0gICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjog
ISFub3RpZnlPbkNvbXBsZXRpb24sCi0gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHRoaXMuZmV0
Y2hGb3JUYXNrKGRhdGFbJ3Rhc2tJZCddLCB0cnVlKSk7CisgICAgICAgIGNvbnN0IGRhdGEgPSBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAg
ICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0
aW9uVHlwZSwgcmV2aXNpb25TZXRzLAorICAgICAgICAgICAgbmVlZHNOb3RpZmljYXRpb246ICEh
bm90aWZ5T25Db21wbGV0aW9uCisgICAgICAgIH0pOworICAgICAgICBhd2FpdCB0aGlzLmZldGNo
QnlJZChkYXRhWyd0ZXN0R3JvdXBJZCddLCAvKiBpZ25vcmVDYWNoZSAqLyB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZmluZEFsbEJ5VGFzayhkYXRhWyd0YXNrSWQnXSk7CisgICAgfQorCisg
ICAgYXN5bmMgc2NoZWR1bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZyhtYXhSZXRyeUZhY3RvcikK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKworICAgICAgICBpZiAodGhpcy5pc0hpZGRlbigpKSB7CisgICAgICAg
ICAgICBhd2FpdCB0aGlzLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKCk7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFsnYWx0
ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCddLmluY2x1ZGVzKHRoaXMucmVwZXRpdGlvblR5cGUoKSkp
OworICAgICAgICBjb25zdCByZXRyeUxpbWl0ID0gbWF4UmV0cnlGYWN0b3IgKiB0aGlzLmluaXRp
YWxSZXBldGl0aW9uQ291bnQoKTsKKyAgICAgICAgY29uc3Qge3JldHJ5Q291bnQsIHN0b3BGdXR1
cmVSZXRyaWVzfSA9IGF3YWl0ICh0aGlzLnJlcGV0aXRpb25UeXBlKCkgPT0gJ2FsdGVybmF0aW5n
JyA/CisgICAgICAgICAgICB0aGlzLl9jcmVhdGVBbHRlcm5hdGluZ1JldHJpZXNGb3JUZXN0R3Jv
dXAocmV0cnlMaW1pdCkgOiB0aGlzLl9jcmVhdGVTZXF1ZW50aWFsUmV0cmllc0ZvclRlc3RHcm91
cChyZXRyeUxpbWl0KSk7CisKKyAgICAgICAgaWYgKHN0b3BGdXR1cmVSZXRyaWVzKQorICAgICAg
ICAgICAgYXdhaXQgdGhpcy5jbGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworCisgICAg
ICAgIHJldHVybiByZXRyeUNvdW50OworICAgIH0KKworICAgIGFzeW5jIF9jcmVhdGVBbHRlcm5h
dGluZ1JldHJpZXNGb3JUZXN0R3JvdXAocmV0cnlMaW1pdCkKKyAgICB7CisgICAgICAgIGNvbnN0
IGFkZGl0aW9uYWxSZXBldGl0aW9uTmVlZGVkID0gdGhpcy5yZXF1ZXN0ZWRDb21taXRTZXRzKCku
cmVkdWNlKAorICAgICAgICAgICAgKGN1cnJlbnRNYXgsIGNvbW1pdFNldCkgPT4gTWF0aC5tYXgo
dGhpcy5hZGRpdGlvbmFsUmVwZXRpdGlvbk5lZWRlZFRvUmVhY2hJbml0aWFsUmVwZXRpdGlvbkNv
dW50KGNvbW1pdFNldCksIGN1cnJlbnRNYXgpLCAwKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
YWRkaXRpb25hbFJlcGV0aXRpb25OZWVkZWQgPD0gdGhpcy5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCkpOworCisgICAgICAgIGNvbnN0IHJldHJ5Q291bnQgPSB0aGlzLnJlcXVlc3RlZENvbW1pdFNl
dHMoKS5yZWR1Y2UoCisgICAgICAgICAgICAoY3VycmVudE1pbiwgY29tbWl0U2V0KSA9PiBNYXRo
Lm1pbihNYXRoLm1heChNYXRoLmZsb29yKHJldHJ5TGltaXQgLSB0aGlzLnJlcGV0aXRpb25Db3Vu
dEZvckNvbW1pdFNldChjb21taXRTZXQpKSwgMCksIGN1cnJlbnRNaW4pLCBhZGRpdGlvbmFsUmVw
ZXRpdGlvbk5lZWRlZCk7CisKKyAgICAgICAgaWYgKCFyZXRyeUNvdW50KQorICAgICAgICAgICAg
cmV0dXJuIHtyZXRyeUNvdW50OiAwLCBzdG9wRnV0dXJlUmV0cmllczogdHJ1ZX07CisKKyAgICAg
ICAgY29uc3QgZWFjaENvbW1pdFNldEhhc0NvbXBsZXRlZEF0TGVhc3RPbmVUZXN0ID0gdGhpcy5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCkuZXZlcnkodGhpcy5zdWNjZXNzZnVsVGVzdENvdW50LmJpbmQo
dGhpcykpOworICAgICAgICBpZiAoIWVhY2hDb21taXRTZXRIYXNDb21wbGV0ZWRBdExlYXN0T25l
VGVzdCkgeworICAgICAgICAgICAgY29uc3QgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IHRo
aXMucmVxdWVzdGVkQ29tbWl0U2V0cygpLnNvbWUoKHNldCkgPT4KKyAgICAgICAgICAgICAgICB0
aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNldCkuc29tZSgocmVxdWVzdCkgPT4gcmVxdWVzdC5p
c1Rlc3QoKSAmJiAhcmVxdWVzdC5oYXNGaW5pc2hlZCgpKSk7CisgICAgICAgICAgICByZXR1cm4g
e3JldHJ5Q291bnQ6IDAsIHN0b3BGdXR1cmVSZXRyaWVzOiAhaGFzVW5maW5pc2hlZEJ1aWxkUmVx
dWVzdH07CisgICAgICAgIH0KKworICAgICAgICBhd2FpdCB0aGlzLmFkZE1vcmVCdWlsZFJlcXVl
c3RzKHJldHJ5Q291bnQpOworICAgICAgICByZXR1cm4ge3JldHJ5Q291bnQsIHN0b3BGdXR1cmVS
ZXRyaWVzOiBmYWxzZX07CisgICAgfQorCisgICAgYXN5bmMgX2NyZWF0ZVNlcXVlbnRpYWxSZXRy
aWVzRm9yVGVzdEdyb3VwKHJldHJ5TGltaXQpCisgICAgeworICAgICAgICBjb25zdCBsYXN0SXRl
bSA9IChhcnJheSkgPT4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07CisgICAgICAgIGNvbnN0IGNv
bW1pdFNldHMgPSB0aGlzLnJlcXVlc3RlZENvbW1pdFNldHMoKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoY29tbWl0U2V0cy5ldmVyeSgoY3VycmVudFNldCwgaW5kZXgpID0+CisgICAgICAgICAg
ICAhaW5kZXggfHwgbGFzdEl0ZW0odGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXRz
W2luZGV4IC0gMV0pKS5vcmRlcigpIDwgdGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChjdXJyZW50
U2V0KVswXS5vcmRlcigpKSk7CisKKyAgICAgICAgY29uc3QgYWxsVGVzdFJlcXVlc3RzSGF2ZUZh
aWxlZEZvclNvbWVDb21taXRTZXQgPSBjb21taXRTZXRzLnNvbWUoY29tbWl0U2V0ID0+CisgICAg
ICAgICAgICB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkuZXZlcnkocmVxdWVz
dCA9PiAhcmVxdWVzdC5pc1Rlc3QoKSB8fCByZXF1ZXN0Lmhhc0ZhaWxlZCgpKSk7CisKKyAgICAg
ICAgaWYgKGFsbFRlc3RSZXF1ZXN0c0hhdmVGYWlsZWRGb3JTb21lQ29tbWl0U2V0KQorICAgICAg
ICAgICAgcmV0dXJuIHtyZXRyeUNvdW50OiAwLCBzdG9wRnV0dXJlUmV0cmllczogdHJ1ZX07CisK
KyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgY29tbWl0U2V0cykgeworICAgICAgICAg
ICAgaWYgKHRoaXMuc3VjY2Vzc2Z1bFRlc3RDb3VudChjb21taXRTZXQpID49IHRoaXMuaW5pdGlh
bFJlcGV0aXRpb25Db3VudCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBjb25zdCBhZGRpdGlvbmFsUmVwZXRpdGlvbiA9IHRoaXMuYWRkaXRpb25hbFJlcGV0aXRp
b25OZWVkZWRUb1JlYWNoSW5pdGlhbFJlcGV0aXRpb25Db3VudChjb21taXRTZXQpOworICAgICAg
ICAgICAgY29uc3QgcmV0cnlDb3VudCA9IE1hdGgubWluKE1hdGgubWF4KE1hdGguZmxvb3IocmV0
cnlMaW1pdCAtIHRoaXMucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCkpLCAw
KSwgYWRkaXRpb25hbFJlcGV0aXRpb24pOworICAgICAgICAgICAgaWYgKCFyZXRyeUNvdW50KQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhd2FpdCB0aGlzLmFkZE1v
cmVCdWlsZFJlcXVlc3RzKHJldHJ5Q291bnQsIGNvbW1pdFNldCk7CisgICAgICAgICAgICByZXR1
cm4ge3JldHJ5Q291bnQsIHN0b3BGdXR1cmVSZXRyaWVzOiBmYWxzZX07CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4ge3JldHJ5Q291bnQ6IDAsIHN0b3BGdXR1cmVSZXRyaWVzOiB0cnVlfTsK
ICAgICB9CiAKICAgICBzdGF0aWMgZmluZEFsbEJ5VGFzayh0YXNrSWQpCkBAIC0yODQsNiArNDEy
LDEzIEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICBy
ZXR1cm4gVGVzdEdyb3VwLmFsbCgpLmZpbHRlcigodGVzdEdyb3VwKSA9PiB0ZXN0R3JvdXAuX3Rh
c2tJZCA9PSB0YXNrSWQpOwogICAgIH0KIAorICAgIHN0YXRpYyBhc3luYyBmZXRjaEJ5SWQodGVz
dEdyb3VwSWQsIGlnbm9yZUNhY2hlID0gZmFsc2UpCisgICAgeworICAgICAgICBjb25zdCBkYXRh
ID0gYXdhaXQgdGhpcy5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdyb3Vwcy8ke3Rlc3RHcm91cElk
fWAsIHsgfSwgaWdub3JlQ2FjaGUpOworICAgICAgICB0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0
Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIHJldHVybiB0aGlzLmZpbmRCeUlkKHRlc3RH
cm91cElkKTsKKyAgICB9CisKICAgICBzdGF0aWMgZmV0Y2hGb3JUYXNrKHRhc2tJZCwgaWdub3Jl
Q2FjaGUgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcv
YXBpL3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRhc2tJZH0sIGlnbm9yZUNhY2hlKS50aGVuKHRoaXMu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vwcy5iaW5kKHRoaXMpKTsKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFz
ay1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFs
eXNpcy10YXNrLXBhZ2UuanMKaW5kZXggM2Y0ZmVmZmYyN2E0MzgzNjQzMDViYmI4M2Q3YjE2YjMy
NDA1ZWM3MS4uZmJkMDQwYmYxZTNlZjhjNGNiMjk4NzFkZGQwMmExYzExZTBiNWM3MCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10
YXNrLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdl
cy9hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAgLTI0LDggKzI0LDggQEAgY2xhc3MgQW5hbHlzaXNU
YXNrQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAKICAgICBkaWRDb25zdHJ1Y3RT
aGFkb3dUcmVlKCkKICAgICB7Ci0gICAgICAgIHRoaXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBuYW1lLCBjb21taXRTZXRNYXAs
IG5vdGlmeU9uQ29tcGxldGlvbikgPT4gewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlv
bignbmV3VGVzdEdyb3VwJywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXAsIG5v
dGlmeU9uQ29tcGxldGlvbik7CisgICAgICAgIHRoaXMucGFydCgnZm9ybScpLmxpc3RlblRvQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCAobmFtZSwgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlw
ZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hBY3Rpb24oJ25ld1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCkBAIC0xMDYsOCArMTA2LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrUmVz
dWx0c1BhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgcmVwb3NpdG9yeVBpY2tl
ci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLmVucXVldWVUb1JlbmRlcigp
KTsKICAgICAgICAgdGhpcy5wYXJ0KCdjb21taXQtdmlld2VyJykuc2V0U2hvd1JlcG9zaXRvcnlO
YW1lKGZhbHNlKTsKIAotICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbign
c3RhcnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgbmFtZSwgY29tbWl0U2V0TWFwLCBub3Rp
ZnlPbkNvbXBsZXRpb24pID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ25l
d1Rlc3RHcm91cCcsIG5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwLCBub3RpZnlP
bkNvbXBsZXRpb24pOworICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0ZW5Ub0FjdGlvbign
c3RhcnRUZXN0aW5nJywgKG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNv
bW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoQWN0aW9uKCduZXdUZXN0R3JvdXAnLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0
aXRpb25UeXBlLCBjb21taXRTZXRNYXAsIG5vdGlmeU9uQ29tcGxldGlvbik7CiAgICAgICAgIH0p
OwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza0NvbmZpZ3Vy
YXRvclBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgdGhpcy5fY3VycmVudEdy
b3VwID0gY3VycmVudEdyb3VwOwogICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5wYXJ0KCdmb3Jt
Jyk7CiAgICAgICAgIGlmICghZm9ybS5oYXNDb21taXRTZXRzKCkgJiYgY3VycmVudEdyb3VwKQot
ICAgICAgICAgICAgZm9ybS5zZXRDb25maWd1cmF0aW9ucyhjdXJyZW50R3JvdXAudGVzdCgpLCBj
dXJyZW50R3JvdXAucGxhdGZvcm0oKSwgY3VycmVudEdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCBj
dXJyZW50R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKTsKKyAgICAgICAgICAgIGZvcm0uc2V0
Q29uZmlndXJhdGlvbnMoY3VycmVudEdyb3VwLnRlc3QoKSwgY3VycmVudEdyb3VwLnBsYXRmb3Jt
KCksIGN1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIGN1cnJlbnRHcm91cC5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCkpOwogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwog
ICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza0NvbmZpZ3VyYXRv
clBhbmUgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgYDsK
ICAgICB9Ci19OworfQogCiBDb21wb25lbnRCYXNlLmRlZmluZUVsZW1lbnQoJ2FuYWx5c2lzLXRh
c2stY29uZmlndXJhdG9yLXBhbmUnLCBBbmFseXNpc1Rhc2tDb25maWd1cmF0b3JQYW5lKTsKIApA
QCAtMjY3LDE0ICsyNjcsMTQgQEAgY2xhc3MgQW5hbHlzaXNUYXNrVGVzdEdyb3VwUGFuZSBleHRl
bmRzIENvbXBvbmVudEJhc2UgewogICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQogICAgIHsK
ICAgICAgICAgdGhpcy5jb250ZW50KCdoaWRlLWJ1dHRvbicpLm9uY2xpY2sgPSAoKSA9PiB0aGlz
LmRpc3BhdGNoQWN0aW9uKCd0b2dnbGVUZXN0R3JvdXBWaXNpYmlsaXR5JywgdGhpcy5fY3VycmVu
dFRlc3RHcm91cCk7Ci0gICAgICAgIHRoaXMucGFydCgncmV0cnktZm9ybScpLmxpc3RlblRvQWN0
aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24p
ID0+IHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywg
dGhpcy5fY3VycmVudFRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRp
b24pOworICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5saXN0ZW5Ub0FjdGlvbignc3Rh
cnRUZXN0aW5nJywgKHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29t
cGxldGlvbikgPT4geworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbigncmV0cnlUZXN0
R3JvdXAnLCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRp
b25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pOwogICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5w
YXJ0KCdiaXNlY3QtZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRp
dGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHsKKyAgICAgICAgdGhpcy5wYXJ0KCdi
aXNlY3QtZm9ybScpLmxpc3RlblRvQWN0aW9uKCdzdGFydFRlc3RpbmcnLCAocmVwZXRpdGlvbkNv
dW50LCByZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB7CiAgICAgICAgICAg
ICBjb25zdCBiaXNlY3RpbmdDb21taXRTZXQgPSB0aGlzLl9iaXNlY3RpbmdDb21taXRTZXRCeVRl
c3RHcm91cC5nZXQodGhpcy5fY3VycmVudFRlc3RHcm91cCk7CiAgICAgICAgICAgICBjb25zdCBb
b25lQ29tbWl0U2V0LCBhbm90aGVyQ29tbWl0U2V0XSA9IHRoaXMuX2N1cnJlbnRUZXN0R3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpOwogICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0cyA9IFtv
bmVDb21taXRTZXQsIGJpc2VjdGluZ0NvbW1pdFNldCwgYW5vdGhlckNvbW1pdFNldF07Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAnLCB0aGlzLl9jdXJy
ZW50VGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxl
dGlvbik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdiaXNlY3RUZXN0R3JvdXAn
LCB0aGlzLl9jdXJyZW50VGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIHJl
cGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pOwogICAgICAgICB9KTsKICAgICB9CiAK
QEAgLTM2NSwyOCArMzY1LDQ2IEBAIGNsYXNzIEFuYWx5c2lzVGFza1Rlc3RHcm91cFBhbmUgZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNvbnRl
bnQoJ3Rlc3QtZ3JvdXAtbGlzdCcpLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpOwogICAgICAg
ICBpZiAoc2VsZWN0ZWQpCiAgICAgICAgICAgICBzZWxlY3RlZC5jbGFzc0xpc3QucmVtb3ZlKCdz
ZWxlY3RlZCcpOwotICAgICAgICBpZiAoY3VycmVudEdyb3VwKQotICAgICAgICAgICAgdGhpcy5f
dGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3JvdXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQoJ3Nl
bGVjdGVkJyk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkgeworICAgICAgICAgICAgdGhp
cy5fdGVzdEdyb3VwTWFwLmdldChjdXJyZW50R3JvdXApLmxpc3RJdGVtLmNsYXNzTGlzdC5hZGQo
J3NlbGVjdGVkJyk7CiAgICAgICAgICAgICB0aGlzLnBhcnQoJ3JldHJ5LWZvcm0nKS5zZXRSZXBl
dGl0aW9uQ291bnQoY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSk7CiAgICAg
ICAgICAgICB0aGlzLnBhcnQoJ2Jpc2VjdC1mb3JtJykuc2V0UmVwZXRpdGlvbkNvdW50KGN1cnJl
bnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpOwotICAgICAgICAgICAgY29uc3Qgc3Rh
dHVzU3VtbWFyeSA9IGAke2N1cnJlbnRHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCl9IHJl
cXVlc3RlZCwgJHtjdXJyZW50R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgLSBjdXJyZW50R3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpfSBhZGRlZCBkdWUgdG8gZmFpbHVyZXMuYDsKLSAgICAg
ICAgICAgIHRoaXMuY29udGVudCgnc3RhdHVzLXN1bW1hcnknKS5pbm5lckhUTUwgPSBzdGF0dXNT
dW1tYXJ5OworCisgICAgICAgICAgICBpZiAoY3VycmVudEdyb3VwLmhhc1JldHJpZXMoKSkKKyAg
ICAgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdyZXRyeS1zdW1t
YXJ5JyksIHRoaXMuX3JldHJ5U3VtbWFyeShjdXJyZW50R3JvdXApKTsKIAogICAgICAgICAgICAg
Y29uc3QgYXV0aG9yZWRCeSA9IGN1cnJlbnRHcm91cC5hdXRob3IoKSA/IGBieSAiJHtjdXJyZW50
R3JvdXAuYXV0aG9yKCl9ImAgOiAnJzsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgncmVxdWVz
dC1zdW1tYXJ5JykuaW5uZXJIVE1MID0gYFNjaGVkdWxlZCAke2F1dGhvcmVkQnl9IGF0ICR7Y3Vy
cmVudEdyb3VwLmNyZWF0ZWRBdCgpfWAKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0
aGlzLmNvbnRlbnQoJ3JlcXVlc3Qtc3VtbWFyeScpLCBgU2NoZWR1bGVkICR7YXV0aG9yZWRCeX0g
YXQgJHtjdXJyZW50R3JvdXAuY3JlYXRlZEF0KCl9YCkKKworICAgICAgICAgICAgdGhpcy5yZW5k
ZXJSZXBsYWNlKHRoaXMuY29udGVudCgnaGlkZS1idXR0b24nKSwgY3VycmVudEdyb3VwLmlzSGlk
ZGVuKCkgPyAnVW5oaWRlJyA6ICdIaWRlJyk7CisKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVw
bGFjZSh0aGlzLmNvbnRlbnQoJ3BlbmRpbmctcmVxdWVzdC1jYW5jZWwtd2FybmluZycpLAorICAg
ICAgICAgICAgICAgIGN1cnJlbnRHcm91cC5oYXNQZW5kaW5nKCkgPyAnKGNhbmNlbHMgcGVuZGlu
ZyByZXF1ZXN0cyknIDogW10pOwogICAgICAgICB9CisKICAgICAgICAgdGhpcy5jb250ZW50KCdy
ZXRyeS1mb3JtJykuc3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7
CiAgICAgICAgIHRoaXMuY29udGVudCgnYmlzZWN0LWZvcm0nKS5zdHlsZS5kaXNwbGF5ID0gY3Vy
cmVudEdyb3VwICYmIHRoaXMuX2Jpc2VjdGluZ0NvbW1pdFNldEJ5VGVzdEdyb3VwLmdldChjdXJy
ZW50R3JvdXApID8gbnVsbCA6ICdub25lJzsKLSAgICAgICAgdGhpcy5jb250ZW50KCdzdGF0dXMt
c3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdyb3VwLnJl
cGV0aXRpb25Db3VudCgpID4gY3VycmVudEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSA/
IG51bGwgOiAnbm9uZSc7Ci0gICAgICAgIHRoaXMuY29udGVudCgncmVxdWVzdC1zdW1tYXJ5Jyku
c3R5bGUuZGlzcGxheSA9IGN1cnJlbnRHcm91cCA/IG51bGwgOiAnbm9uZSc7CisgICAgfQogCi0g
ICAgICAgIGNvbnN0IGhpZGVCdXR0b24gPSB0aGlzLmNvbnRlbnQoJ2hpZGUtYnV0dG9uJyk7Ci0g
ICAgICAgIGhpZGVCdXR0b24udGV4dENvbnRlbnQgPSBjdXJyZW50R3JvdXAgJiYgY3VycmVudEdy
b3VwLmlzSGlkZGVuKCkgPyAnVW5oaWRlJyA6ICdIaWRlJzsKLSAgICAgICAgaGlkZUJ1dHRvbi5z
dHlsZS5kaXNwbGF5ID0gY3VycmVudEdyb3VwID8gbnVsbCA6ICdub25lJzsKKyAgICBfcmV0cnlT
dW1tYXJ5KHRlc3RHcm91cCkKKyAgICB7CisgICAgICAgIGlmICghdGVzdEdyb3VwLmhhc1JldHJp
ZXMoKSkKKyAgICAgICAgICAgIHJldHVybiAnJzsKIAotICAgICAgICB0aGlzLmNvbnRlbnQoJ3Bl
bmRpbmctcmVxdWVzdC1jYW5jZWwtd2FybmluZycpLnN0eWxlLmRpc3BsYXkgPSBjdXJyZW50R3Jv
dXAgJiYgY3VycmVudEdyb3VwLmhhc1BlbmRpbmcoKSA/IG51bGwgOiAnbm9uZSc7CisgICAgICAg
IGlmICh0ZXN0R3JvdXAucmV0cnlDb3VudHNBcmVTYW1lRm9yQWxsQ29tbWl0U2V0cygpKSB7Cisg
ICAgICAgICAgICBjb25zdCByZXRyeUNvdW50ID0gdGVzdEdyb3VwLnJldHJ5Q291bnRGb3JDb21t
aXRTZXQodGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXSk7CisgICAgICAgICAgICBy
ZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVxdWVzdGVkLCAk
e3JldHJ5Q291bnR9IGFkZGVkIGR1ZSB0byBmYWlsdXJlcy5gOworICAgICAgICB9CisKKyAgICAg
ICAgY29uc3QgcmV0cnlTdW1tYXJ5UGFydHMgPSB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpCisgICAgICAgICAgICAubWFwKChjb21taXRTZXQpID0+ICh7Y29tbWl0U2V0LCByZXRyeUNv
dW50OiB0ZXN0R3JvdXAucmV0cnlDb3VudEZvckNvbW1pdFNldChjb21taXRTZXQpfSkpCisgICAg
ICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnJldHJ5Q291bnQpCisgICAgICAgICAgICAu
bWFwKChpdGVtKSA9PiBgJHtpdGVtLnJldHJ5Q291bnR9IGFkZGVkIHRvICR7dGVzdEdyb3VwLmxh
YmVsRm9yQ29tbWl0U2V0KGl0ZW0uY29tbWl0U2V0KX1gKTsKKworICAgICAgICBjb25zdCByZXRy
eVN1bW1hcnkgPSBuZXcgSW50bC5MaXN0Rm9ybWF0KCdlbicsIHtzdHlsZTogJ2xvbmcnLCB0eXBl
OiAnY29uanVuY3Rpb24nfSkuZm9ybWF0KHJldHJ5U3VtbWFyeVBhcnRzKTsKKworICAgICAgICBy
ZXR1cm4gYCR7dGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKX0gcmVxdWVzdGVkLCAk
e3JldHJ5U3VtbWFyeX0gZHVlIHRvIGZhaWx1cmVzLmA7CiAgICAgfQogCiAgICAgc3RhdGljIGh0
bWxUZW1wbGF0ZSgpCkBAIC0zOTYsNyArNDE0LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrVGVzdEdy
b3VwUGFuZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPGRpdiBpZD0idGVz
dC1ncm91cC1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1yZXN1bHRzLXZp
ZXdlciBpZD0icmVzdWx0cy12aWV3ZXIiPjwvdGVzdC1ncm91cC1yZXN1bHRzLXZpZXdlcj4KICAg
ICAgICAgICAgICAgICA8dGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZSBpZD0icmV2aXNpb24tdGFi
bGUiPjwvdGVzdC1ncm91cC1yZXZpc2lvbi10YWJsZT4KLSAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJzdGF0dXMtc3VtbWFyeSIgY2xhc3M9InN1bW1hcnkiPjwvZGl2PgorICAgICAgICAgICAgICAg
IDxkaXYgaWQ9InJldHJ5LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5Ij48L2Rpdj4KICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJyZXF1ZXN0LXN1bW1hcnkiIGNsYXNzPSJzdW1tYXJ5Ij48L2Rpdj4K
ICAgICAgICAgICAgICAgICA8dGVzdC1ncm91cC1mb3JtIGlkPSJyZXRyeS1mb3JtIj5SZXRyeTwv
dGVzdC1ncm91cC1mb3JtPgogICAgICAgICAgICAgICAgIDx0ZXN0LWdyb3VwLWZvcm0gaWQ9ImJp
c2VjdC1mb3JtIj5CaXNlY3Q8L3Rlc3QtZ3JvdXAtZm9ybT4KQEAgLTU1Niw4ICs1NzQsOCBAQCBj
bGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAg
Z3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdzaG93SGlkZGVuVGVzdEdyb3VwcycsICgpID0+IHRo
aXMuX3Nob3dBbGxUZXN0R3JvdXBzKCkpOwogICAgICAgICBncm91cFBhbmUubGlzdGVuVG9BY3Rp
b24oJ3JlbmFtZVRlc3RHcm91cCcsICh0ZXN0R3JvdXAsIG5ld05hbWUpID0+IHRoaXMuX3VwZGF0
ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwLCBuZXdOYW1lKSk7CiAgICAgICAgIGdyb3VwUGFuZS5s
aXN0ZW5Ub0FjdGlvbigndG9nZ2xlVGVzdEdyb3VwVmlzaWJpbGl0eScsICh0ZXN0R3JvdXApID0+
IHRoaXMuX2hpZGVDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCkpOwotICAgICAgICBncm91cFBh
bmUubGlzdGVuVG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwgcmVwZXRpdGlv
bkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX3JldHJ5Q3VycmVudFRlc3RHcm91
cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3VudCwgbm90aWZ5T25Db21wbGV0aW9uKSk7Ci0gICAg
ICAgIGdyb3VwUGFuZS5saXN0ZW5Ub0FjdGlvbignYmlzZWN0VGVzdEdyb3VwJywgKHRlc3RHcm91
cCwgY29tbWl0U2V0cywgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRo
aXMuX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0
aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikpOworICAgICAgICBncm91cFBhbmUubGlzdGVu
VG9BY3Rpb24oJ3JldHJ5VGVzdEdyb3VwJywgKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBy
ZXBldGl0aW9uVHlwZSwgbm90aWZ5T25Db21wbGV0aW9uKSA9PiB0aGlzLl9yZXRyeUN1cnJlbnRU
ZXN0R3JvdXAodGVzdEdyb3VwLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBub3Rp
ZnlPbkNvbXBsZXRpb24pKTsKKyAgICAgICAgZ3JvdXBQYW5lLmxpc3RlblRvQWN0aW9uKCdiaXNl
Y3RUZXN0R3JvdXAnLCAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIHJl
cGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pID0+IHRoaXMuX2Jpc2VjdEN1cnJlbnRU
ZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRzLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRp
b25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pKTsKIAogICAgICAgICB0aGlzLnBhcnQoJ2NhdXNl
LWxpc3QnKS5saXN0ZW5Ub0FjdGlvbignYWRkSXRlbScsIChyZXBvc2l0b3J5LCByZXZpc2lvbikg
PT4gewogICAgICAgICAgICAgdGhpcy5fYXNzb2NpYXRlQ29tbWl0KCdjYXVzZScsIHJlcG9zaXRv
cnksIHJldmlzaW9uKTsKQEAgLTgzMiwxOSArODUwLDIyIEBAIGNsYXNzIEFuYWx5c2lzVGFza1Bh
Z2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBf
cmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50LCBub3RpZnlP
bkNvbXBsZXRpb24pCisgICAgYXN5bmMgX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAs
IHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikKICAg
ICB7CiAgICAgICAgIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSAodGhpcy5fdGVzdEdyb3VwcyB8fCBb
XSkubWFwKChncm91cCkgPT4gZ3JvdXAubmFtZSgpKTsKICAgICAgICAgY29uc3QgbmV3TmFtZSA9
IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbih0ZXN0R3JvdXAubmFtZSgpLCBu
ZXcgU2V0KGV4aXN0aW5nTmFtZXMpKTsKICAgICAgICAgY29uc3QgY29tbWl0U2V0TGlzdCA9IHRl
c3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAgIGNvbnN0IHBsYXRmb3JtID0g
dGhpcy5fdGFzay5wbGF0Zm9ybSgpIHx8IHRlc3RHcm91cC5wbGF0Zm9ybSgpOwotICAgICAgICBy
ZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ss
IHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBuZXdOYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldExpc3QsIG5vdGlmeU9uQ29tcGxldGlvbikKLSAgICAgICAgICAgIC50aGVuKHRoaXMu
X2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAu
Y3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3RH
cm91cC50ZXN0KCksIG5ld05hbWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50LCBy
ZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TGlzdCwgbm90aWZ5T25Db21wbGV0aW9uKTsKKyAgICAg
ICAgICAgIHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3
IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQog
Ci0gICAgYXN5bmMgX2Jpc2VjdEN1cnJlbnRUZXN0R3JvdXAodGVzdEdyb3VwLCBjb21taXRTZXRz
LCByZXBldGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfYmlzZWN0
Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIGNvbW1pdFNldHMsIHJlcGV0aXRpb25Db3VudCwg
cmVwZXRpdGlvblR5cGUsIG5vdGlmeU9uQ29tcGxldGlvbikKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRlc3RHcm91cC50YXNrKCkpOwogICAgICAgICBjb25zdCBleGlzdGluZ1Rlc3RH
cm91cE5hbWVzID0gbmV3IFNldCgodGhpcy5fdGVzdEdyb3VwcyB8fCBbXSkubWFwKCh0ZXN0R3Jv
dXApID0+IHRlc3RHcm91cC5uYW1lKCkpKTsKQEAgLTg1NCw4ICs4NzUsOSBAQCBjbGFzcyBBbmFs
eXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIGNvbnN0
IGN1cnJlbnRDb21taXRTZXQgPSBjb21taXRTZXRzW2ldOwogICAgICAgICAgICAgY29uc3QgdGVz
dEdyb3VwTmFtZSA9IENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbihDb21taXRT
ZXQuZGlmZihwcmV2aW91c0NvbW1pdFNldCwgY3VycmVudENvbW1pdFNldCksIGV4aXN0aW5nVGVz
dEdyb3VwTmFtZXMpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRl
c3RHcm91cC50YXNrKCksIHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgW3ByZXZpb3Vz
Q29tbWl0U2V0LCBjdXJyZW50Q29tbWl0U2V0XSwgbm90aWZ5T25Db21wbGV0aW9uKTsKLSAgICAg
ICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHModGVzdEdyb3Vwcyk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVB
bmRSZWZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXAudGFzaygpLCB0ZXN0R3JvdXBOYW1lLAorICAg
ICAgICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBbcHJldmlv
dXNDb21taXRTZXQsIGN1cnJlbnRDb21taXRTZXRdLCBub3RpZnlPbkNvbXBsZXRpb24pOworICAg
ICAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKICAgICAg
ICAgICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRv
IGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtODYzLDcgKzg4NSw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQ
YWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9CiAgICAgfQogCi0gICAgX2NyZWF0ZVRlc3RHcm91
cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291
bnQsIGNvbW1pdFNldE1hcCwgbm90aWZ5T25Db21wbGV0aW9uKQorICAgIGFzeW5jIF9jcmVhdGVU
ZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QodGVzdEdyb3VwTmFtZSwgcmVwZXRp
dGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0TWFwLCBub3RpZnlPbkNvbXBsZXRp
b24pCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZSh0
ZXN0R3JvdXBOYW1lKSkgewogICAgICAgICAgICAgYWxlcnQoYFRoZXJlIGlzIGFscmVhZHkgYSB0
ZXN0IGdyb3VwIG5hbWVkICIke3Rlc3RHcm91cE5hbWV9ImApOwpAQCAtODg5LDEzICs5MTEsMTUg
QEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAg
ICAgIGZvciAobGV0IGxhYmVsIGluIGNvbW1pdFNldE1hcCkKICAgICAgICAgICAgIGNvbW1pdFNl
dHMucHVzaChjb21taXRTZXRNYXBbbGFiZWxdKTsKIAotICAgICAgICByZXR1cm4gVGVzdEdyb3Vw
LmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRoaXMuX3Rhc2ssIHRlc3RHcm91cE5hbWUsIHJl
cGV0aXRpb25Db3VudCwgY29tbWl0U2V0cywgbm90aWZ5T25Db21wbGV0aW9uKQotICAgICAgICAg
ICAgLnRoZW4odGhpcy5fZGlkRmV0Y2hUZXN0R3JvdXBzLmJpbmQodGhpcyksIGZ1bmN0aW9uIChl
cnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3
YWl0IFRlc3RHcm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0aGlzLl90YXNrLCB0ZXN0
R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21taXRTZXRzLCBu
b3RpZnlPbkNvbXBsZXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RpZEZldGNoVGVz
dEdyb3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAg
ICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7
Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAgX2NyZWF0ZUN1c3RvbVRlc3RH
cm91cChyZXBldGl0aW9uQ291bnQsIHRlc3RHcm91cE5hbWUsIGNvbW1pdFNldHMsIHBsYXRmb3Jt
LCB0ZXN0LCBub3RpZnlPbkNvbXBsZXRpb24pCisgICAgYXN5bmMgX2NyZWF0ZUN1c3RvbVRlc3RH
cm91cCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJlcGV0aXRpb25UeXBlLCBjb21t
aXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgbm90aWZ5T25Db21wbGV0aW9uKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGFzay5pc0N1c3RvbSgpKTsKICAgICAgICAgaWYgKHRo
aXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwTmFtZSkpIHsKQEAgLTkwMywx
MCArOTI3LDEzIEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRp
bmcgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGVzdEdyb3Vw
LmNyZWF0ZVdpdGhDdXN0b21Db25maWd1cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0
LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMsIG5vdGlmeU9uQ29t
cGxldGlvbikKLSAgICAgICAgICAgIC50aGVuKHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5k
KHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNv
bnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3Vy
YXRpb24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5hbWUsCisgICAgICAg
ICAgICAgICAgcmVwZXRpdGlvbkNvdW50LCByZXBldGl0aW9uVHlwZSwgY29tbWl0U2V0cywgbm90
aWZ5T25Db21wbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcyh0
ZXN0R3JvdXBzKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGFsZXJ0
KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7Ci0gICAgICAg
IH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUo
bmFtZSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFn
ZXMvY2hhcnQtcGFuZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFn
ZXMvY2hhcnQtcGFuZS5qcwppbmRleCBkMGFmMTczZGFhZDMyYjQ1YjIyZDhiYTk1M2ExNmVjMTk2
MjZhYzNkLi5iNThjZTI2ODZjZDFkZjlkMjliZmU2ZDQwYzljOWNlMGU0NDhiOGJjIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUu
anMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1w
YW5lLmpzCkBAIC0xMjAsMTEgKzEyMCwxNCBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFy
dFBhbmVCYXNlIHsKICAgICAgICAgY29uc3QgY3JlYXRlV2l0aFRlc3RHcm91cENoZWNrYm94ID0g
dGhpcy5jb250ZW50KCdjcmVhdGUtd2l0aC10ZXN0LWdyb3VwJyk7CiAgICAgICAgIGNvbnN0IHJl
cGV0aXRpb25Db3VudCA9IHRoaXMuY29udGVudCgnY29uZmlybS1yZXBldGl0aW9uJyk7CiAgICAg
ICAgIGNvbnN0IG5vdGlmeU9uQ29tcGxldGlvbiA9IHRoaXMuY29udGVudCgnbm90aWZ5LW9uLWNv
bXBsZXRpb24nKTsKKyAgICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGUgPSB0aGlzLmNvbnRlbnQo
J3JlcGV0aXRpb24tdHlwZScpOwogICAgICAgICBjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3gu
b25jaGFuZ2UgPSAoKSA9PiB7CisgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGludm9rZSAi
ZW5xdWV1ZVRvUmVuZGVyIiBpbnN0ZWFkLgogICAgICAgICAgICAgY29uc3Qgc2hvdWxkRGlzYWJs
ZSA9ICFjcmVhdGVXaXRoVGVzdEdyb3VwQ2hlY2tib3guY2hlY2tlZDsKICAgICAgICAgICAgIHJl
cGV0aXRpb25Db3VudC5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CiAgICAgICAgICAgICBub3Rp
ZnlPbkNvbXBsZXRpb24uZGlzYWJsZWQgPSBzaG91bGREaXNhYmxlOwotICAgICAgICB9CisgICAg
ICAgICAgICByZXBldGl0aW9uVHlwZS5kaXNhYmxlZCA9IHNob3VsZERpc2FibGU7CisgICAgICAg
IH07CiAgICAgfQogCiAgICAgc2VyaWFsaXplU3RhdGUoKQpAQCAtMjQzLDEwICsyNDYsMTEgQEAg
Y2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIGNvbnN0IGNy
ZWF0ZVdpdGhUZXN0R3JvdXAgPSB0aGlzLmNvbnRlbnQoJ2NyZWF0ZS13aXRoLXRlc3QtZ3JvdXAn
KS5jaGVja2VkOwogICAgICAgICBjb25zdCByZXBldGl0aW9uQ291bnQgPSB0aGlzLmNvbnRlbnQo
J2NvbmZpcm0tcmVwZXRpdGlvbicpLnZhbHVlOwogICAgICAgICBjb25zdCBub3RpZnlPbkNvbXBs
ZXRpb24gPSB0aGlzLmNvbnRlbnQoJ25vdGlmeS1vbi1jb21wbGV0aW9uJykuY2hlY2tlZDsKKyAg
ICAgICAgY29uc3QgcmVwZXRpdGlvblR5cGUgPSB0aGlzLmNvbnRlbnQoJ3JlcGV0aXRpb24tdHlw
ZScpLnZhbHVlOwogCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBjb25zdCBhbmFseXNpc1Rh
c2sgPSBhd2FpdCAoY3JlYXRlV2l0aFRlc3RHcm91cCA/Ci0gICAgICAgICAgICAgICAgQW5hbHlz
aXNUYXNrLmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCByZXBl
dGl0aW9uQ291bnQsIG5vdGlmeU9uQ29tcGxldGlvbikgOiBBbmFseXNpc1Rhc2suY3JlYXRlKG5h
bWUsIHN0YXJ0UG9pbnQsIGVuZFBvaW50KSk7CisgICAgICAgICAgICAgICAgQW5hbHlzaXNUYXNr
LmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCByZXBldGl0aW9u
Q291bnQsIHJlcGV0aXRpb25UeXBlLCBub3RpZnlPbkNvbXBsZXRpb24pIDogQW5hbHlzaXNUYXNr
LmNyZWF0ZShuYW1lLCBzdGFydFBvaW50LCBlbmRQb2ludCkpOwogICAgICAgICAgICAgbmV3V2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSByb3V0ZXIudXJsKCdhbmFseXNpcy90YXNrLycgKyBhbmFseXNp
c1Rhc2suaWQoKSk7CiAgICAgICAgICAgICB0aGlzLmZldGNoQW5hbHlzaXNUYXNrcyh0cnVlKTsK
ICAgICAgICAgfSBjYXRjaChlcnJvcikgewpAQCAtNTg5LDcgKzU5MywxNiBAQCBjbGFzcyBDaGFy
dFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxvcHRpb24+MTA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPml0ZXJh
dGlvbnM8L2xhYmVsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJub3RpZnktb24tY29tcGxldGlvbiIgY2hlY2tlZD4gTm90aWZ5
IG9uIGNvbXBsZXRpb248L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
bGFiZWw+SW48L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9
InJlcGV0aXRpb24tdHlwZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRp
b24gdmFsdWU9ImFsdGVybmF0aW5nIiBzZWxlY3RlZD5hbHRlcm5hdGUgKEFCQUIpPC9vcHRpb24+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNlcXVlbnRp
YWwiPnNlcXVlbmNlIChBQUJCKTwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvc2VsZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0
IHR5cGU9ImNoZWNrYm94IiBpZD0ibm90aWZ5LW9uLWNvbXBsZXRpb24iIGNoZWNrZWQ+Tm90aWZ5
IG9uIGNvbXBsZXRpb248L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAg
ICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9
ImNoYXJ0LXBhbmUtZmlsdGVyaW5nLW9wdGlvbnMgcG9wb3ZlciIgc3R5bGU9ImRpc3BsYXk6bm9u
ZSI+CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2Vz
L2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggMzAxZmQy
YTI5MDY1MWQ1MTI4YzM1MjNhZjQ5ODIwZjIwM2JjNjZhMy4uMGE4ZTQzZTQ5NjQ0NDVlZTM3MDQw
NGM3MWM5MTU2YTkyY2JlNTgzMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2st
cGFnZS5qcwpAQCAtMjIsMTQgKzIyLDE0IEBAIGNsYXNzIENyZWF0ZUFuYWx5c2lzVGFza1BhZ2Ug
ZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB0aGlzLnBhcnQoJ2Zvcm0nKS5saXN0
ZW5Ub0FjdGlvbignc3RhcnRUZXN0aW5nJywgdGhpcy5fY3JlYXRlQW5hbHlzaXNUYXNrV2l0aEdy
b3VwLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3Jv
dXAocmVwZXRpdGlvbkNvdW50LCB0ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwg
dGVzdCwgdGFza05hbWUsIG5vdGlmeU9uQ29tcGxldGlvbikKKyAgICBhc3luYyBfY3JlYXRlQW5h
bHlzaXNUYXNrV2l0aEdyb3VwKHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRp
dGlvblR5cGUsIGNvbW1pdFNldHMsIHBsYXRmb3JtLCB0ZXN0LCBub3RpZnlPbkNvbXBsZXRpb24s
IHRhc2tOYW1lKQogICAgIHsKLSAgICAgICAgVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKHRhc2tO
YW1lLCBwbGF0Zm9ybSwgdGVzdCwgdGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21t
aXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pLnRoZW4oKHRhc2spID0+IHsKLSAgICAgICAgICAg
IGNvbnN0IHVybCA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgp
fWApOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IFRlc3RH
cm91cC5jcmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIHRlc3RHcm91cE5h
bWUsIHJlcGV0aXRpb25Db3VudCwgcmVwZXRpdGlvblR5cGUsIGNvbW1pdFNldHMsIG5vdGlmeU9u
Q29tcGxldGlvbik7CiAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5yb3V0ZXIoKS51
cmwoYGFuYWx5c2lzL3Rhc2svJHt0YXNrLmlkKCl9YCk7Ci0gICAgICAgIH0sIChlcnJvcikgPT4g
eworICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0
byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyArIGVycm9yKTsKLSAgICAgICAgfSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICByZW5kZXIoKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcwppbmRleCBmZDQwNDM0NDIzNzBmNDUzZjFmZDNlZTdiN2FhNWE1MWZmYWMxYjIxLi45Yzc3
NmYwZjA1NTk5ZDhjM2VhNDc1OWUwYWE2ZGUwNjFlZTNlODFmIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1y
ZXF1ZXN0cy10ZXN0cy5qcwpAQCAtNTY2LDYgKzU2Niw2MiBAQCBkZXNjcmliZSgnL2FwaS9idWls
ZC1yZXF1ZXN0cycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBp
dCgnc2hvdWxkIHN0aWxsIHJldHVybiBidWlsZCByZXF1ZXN0cyBhc3NvY2lhdGVkIHdpdGggYSBn
aXZlbiB0cmlnZ2VyYWJsZSB3aGVuIHRlc3QgZ3JvdXAgaGFzIGFsbCBidWlsZCByZXF1ZXN0cyBm
aW5pc2hlZCB3aXRoICJtYXlOZWVkTW9yZVJlcXVlc3QiIGZsYWcgdG8gYmUgdHJ1ZXMnLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWls
ZWQnXSwgdHJ1ZSwgbnVsbCwgbnVsbCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CisgICAgICAgIGNv
bnN0IGNvbnRlbnQgPSBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3Rh
dHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOworICAgICAgICBhc3NlcnQu
ZGVlcFN0cmljdEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVl
c3RzJywgJ2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcydd
KTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxl
bmd0aCwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50Wydj
b21taXRTZXRzJ11bMF0uaWQpLCA0MDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLCBbCisgICAgICAgICAgICB7
Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVz
QnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sCisgICAgICAgICAgICB7Y29tbWl0OiAnOTMx
MTYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNl
LCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50
KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsIFsKKyAg
ICAgICAgICAgIHtjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVs
bCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgIHtj
b21taXQ6ICc5NjMzNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNC
dWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChjb250ZW50Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCksIDg3ODMyKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5yZXBvc2l0b3J5LCAn
OScpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJl
dmlzaW9uLCAnMTAuMTEgMTVBMjg0Jyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJz
ZUludChjb250ZW50Wydjb21taXRzJ11bMV0uaWQpLCA5MzExNik7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmVwb3NpdG9yeSwgJzExJyk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2aXNpb24sICcx
OTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2Nv
bW1pdHMnXVsyXS5pZCksIDk2MzM2KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnRl
bnRbJ2NvbW1pdHMnXVsyXS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicpOworCisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoLCA0
KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMF0uaWQpLCA3MDApOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5vcmRlciksIDApOworICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5wbGF0
Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgIGFzc2Vy
dC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnN0YXR1cywgJ2Nv
bXBsZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXVswXS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0uaWQpLCA3MDEpOworICAg
ICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVsxXS5vcmRlciksIDEpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRl
bnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5k
ZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLmNvbW1p
dFNldCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzFdLnN0YXR1cywgJ2NvbXBsZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS50ZXN0LCAnMjAwJyk7CisK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZUludChjb250ZW50WydidWlsZFJl
cXVlc3RzJ11bMl0uaWQpLCA3MDIpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBh
cnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5vcmRlciksIDIpOworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5wbGF0Zm9y
bSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzJdLmNvbW1pdFNldCksIDQwMSk7CisgICAgICAgIGFzc2VydC5k
ZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnN0YXR1cywgJ2NvbXBs
ZXRlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVx
dWVzdHMnXVsyXS50ZXN0LCAnMjAwJyk7CisKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChwYXJzZUludChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQpLCA3MDMpOworICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlSW50KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVszXS5vcmRlciksIDMpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVszXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwocGFyc2VJbnQoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLmNvbW1pdFNl
dCksIDQwMik7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzNdLnN0YXR1cywgJ2ZhaWxlZCcpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmlj
dEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS50ZXN0LCAnMjAwJyk7CisgICAgfSk7
CisKICAgICBpdCgnc2hvdWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbics
ICgpID0+IHsKICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13
ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0aW9uPXRydWUnKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZC1yb290LXRlc3RzLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVz
dHMuanMKaW5kZXggM2FjMGNlOWUzNzg1MWMxZjVkZDJiOGI1MzJjZDM0NjNhMWRhNjNiMC4uNjc1
ZDU5NDg3NGNhMTZkYzdlODk2NjgwNGNmZWY0MTg2NWYyNTJkYyAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJv
b3QtdGVzdHMuanMKQEAgLTY1LDcgKzY1LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2lo
UGF0Y2goKQogICAgICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAg
ICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7CiAgICAg
ICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCwgJzgwMjI5Jyk7Ci0gICAg
ICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZv
cm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBn
cm91cCcsIDIsIFtzZXQxLCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRl
V2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBs
YXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGluZycsIFtz
ZXQxLCBzZXQyXSk7CiAgICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVz
dEdyb3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChncm91cCkg
PT4gewpAQCAtMTA3LDcgKzEwNyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpdGhQYXRj
aEFuZE93bmVkQ29tbWl0cygpCiAgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCwgJzE5MjczNicpOwogICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9y
eShvd25lZFNKQywgJ293bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5MjczNicpOwogCi0gICAgICAg
IHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0u
ZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91
cCcsIDIsIFtzZXQxLCBzZXQyXSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0
aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRm
b3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsICdhbHRlcm5hdGluZycsIFtzZXQx
LCBzZXQyXSk7CiAgICAgfSkudGhlbigodGFzaykgPT4gewogICAgICAgICByZXR1cm4gVGVzdEdy
b3VwLmZpbmRBbGxCeVRhc2sodGFzay5pZCgpKVswXTsKICAgICB9KS50aGVuKChncm91cCkgPT4g
ewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2
aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10
ZXN0cy5qcwppbmRleCBkY2UwOWNiYWIzNTBhMjJhODMxZDViZjk5MjE3YWU3MDk5NzI2OTgyLi5m
OWM0NDY0NWEyYTc0Mzc0ZGI5YzU1NTk0MDk4Y2EyM2I5MmI3MzVjIDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWls
ZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMTIz
LDYgKzEyMywxMSBAQCBhc3luYyBmdW5jdGlvbiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2so
bmFtZSwgd2Via2l0UmV2aXNpb25zKQogICAgIGF3YWl0IGNyZWF0ZUFuYWx5c2lzVGFzayhuYW1l
LCB3ZWJraXRSZXZpc2lvbnMpOwogfQogCitmdW5jdGlvbiBhc3NlcnRPcmRlck9mUmVxdWVzdHMo
cmVxdWVzdHMsIGV4cGVjdGVkT3JkZXIpCit7CisgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0
cy5tYXAocmVxdWVzdCA9PiByZXF1ZXN0Lm9yZGVyKCkpLCBleHBlY3RlZE9yZGVyKTsKK30KKwog
ZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbigp
IHsKICAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzLCAnbm9kZScpOwogICAgIGJlZm9yZUVhY2go
KCkgPT4gewpAQCAtMTM0LDcgKzEzOSw4IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRk
LWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnV2ViS2l0JylbMF07CiAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5p
ZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAn
MTkxNjIzJ319XTsKICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKLSAgICAgICAgICAgIHtuYW1lOiAndGVzdCcs
IHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxz
ZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICAg
ICAgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9u
U2V0cywgY29tbWl0U2V0OiBudWxsfSk7CiAgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9
IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKIAogICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNl
bmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKQEAgLTE0NCwxNSArMTUwLDE3IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIHRydWUpOwotICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocGFyc2VJbnQoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCkpLCAyKTsKLSAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlSW50KGdyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSksIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1
ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3Vw
LnJlcGV0aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogCiAg
ICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0
cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMn0pOwogCiAgICAgICAgIGNv
bnN0IHVwZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsn
dGFza0lkJ10sIHRydWUpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vw
cy5sZW5ndGgsIDEpOwotICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VJbnQodXBkYXRl
ZEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnQoKSksIDQpOwotICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocGFyc2VJbnQodXBkYXRlZEdyb3Vwc1swXS5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkp
LCAyKTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vwc1swXS5y
ZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3Vw
ZGF0ZWRHcm91cHNbMF0ucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK3VwZGF0ZWRHcm91cHNbMF0uaW5pdGlhbFJl
cGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1h
eU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CiAgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0
IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7CiAgICAgICAgICAg
ICBjb25zdCBidWlsZFJlcXVlc3RzID0gdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0c0ZvckNvbW1p
dFNldChjb21taXRTZXQpOwpAQCAtMTc0LDEwICsxODIsMzA4IEBAIGRlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbnN0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHBhcnNlSW50KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpKSwgMik7Ci0gICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChwYXJzZUludChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkpLCAy
KTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9u
Q291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgYXdhaXQg
Z3JvdXAudXBkYXRlSGlkZGVuRmxhZyh0cnVlKTsKIAogICAgICAgICBhd2FpdCBhc3NlcnRUaHJv
d3MoJ0Nhbm5vdEFkZFRvSGlkZGVuVGVzdEdyb3VwJywgYXN5bmMgKCkgPT4gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRl
ZEdyb3VwSWQsIGFkZENvdW50OiAyfSkpCiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVj
dCB3aXRoICJDb21taXRTZXROb3RTdXBwb3J0ZWRGb3JBbHRlcm5hdGluZ1JlcGV0aXRpb25UeXBl
IiB3aGVuIGFkZGluZyBidWlsZCByZXF1ZXN0cyBmb3Igb25lIGNvbW1pdCBzZXQgaW4gYW4gYWx0
ZXJuYXRpbmcgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0
ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFt
ZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHsKKyAgICAgICAgICAgIG5hbWU6
ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQ
bGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5l
ZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlw
ZTogJ2FsdGVybmF0aW5nJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVk
R3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRl
ZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCBp
Z25vcmVDYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5hdGluZycpOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0
aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRp
dGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGZp
cnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBh
c3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21t
aXRTZXQpLCBbMCwgMl0pOworICAgICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQgPSBncm91cC5y
ZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhn
cm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMSwgM10pOworCisg
ICAgICAgIGF3YWl0IGFzc2VydFRocm93cygnQ29tbWl0U2V0Tm90U3VwcG9ydGVkRm9yQWx0ZXJu
YXRpbmdSZXBldGl0aW9uVHlwZScsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMnLAorICAgICAgICAgICAgICAg
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0OiBzZWNvbmRD
b21taXRTZXQuaWQoKX0pCisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBi
ZSBhYmxlIHRvIGJ1aWxkIHJlcXVlc3RzIGZvciBmaXJzdCBjb21taXQgc2V0IHdpdGggb3JkZXIg
c2hpZnRlZCBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAg
ICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+
IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNp
b25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBh
d2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAg
ICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTog
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAg
ICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2Us
IHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlhbCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBj
b25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAg
Y29uc3QgaWdub3JlQ2FjaGUgPSB0cnVlOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25vcmVDYWNoZSk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGxldCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwg
Mik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlv
bkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGxldCBmaXJzdENv
bW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0
T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0
KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNlY29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJl
cXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENvbW1pdFNldCksIFsyLCAzXSk7CisKKyAgICAgICAg
YXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywKKyAg
ICAgICAgICAgIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0
OiBmaXJzdENvbW1pdFNldC5pZCgpfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgaWdub3JlQ2Fj
aGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEp
OworICAgICAgICBncm91cCA9IHVwZGF0ZWRHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVu
Z3RoLCAyKTsKKworICAgICAgICBmaXJzdENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3Rz
Rm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDEsIDIsIDNdKTsKKyAgICAgICAgc2Vj
b25kQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzFdOworICAgICAgICBh
c3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoc2Vjb25kQ29t
bWl0U2V0KSwgWzQsIDVdKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IG1vZGlmeSB0
aGUgb3JkZXIgb2YgcHJlY2VkaW5nIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5nIG5ldyBidWls
ZCByZXF1ZXN0cyBpbiBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkp
ID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQg
PSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisg
ICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9y
bTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgcmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAg
ICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZh
bHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAg
ICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAg
ICAgIGNvbnN0IGlnbm9yZUNhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgaWdub3JlQ2Fj
aGUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwor
ICAgICAgICBsZXQgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5n
dGgsIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiBncm91cC5yZXF1ZXN0ZWRD
b21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLnJlcGV0
aXRpb25Db3VudEZvckNvbW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAgICAgICBsZXQgZmly
c3RDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFz
c2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1p
dFNldCksIFswLCAxXSk7CisgICAgICAgIGxldCBzZWNvbmRDb21taXRTZXQgPSBncm91cC5yZXF1
ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91
cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRTZXQpLCBbMiwgM10pOworCisgICAg
ICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycs
CisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkQ291bnQ6IDIsIGNvbW1p
dFNldDogc2Vjb25kQ29tbWl0U2V0LmlkKCl9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25v
cmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0
aCwgMSk7CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwn
KTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMo
KS5sZW5ndGgsIDIpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVx
dWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMV0pOworICAgICAgICBzZWNv
bmRDb21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFz
c2VydE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21t
aXRTZXQpLCBbMiwgMywgNCwgNV0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaGlmdCB0
aGUgb3JkZXIgb2YgZm9sbG93aW5nIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWRkaW5nIHJldHJ5IGZv
ciBhIHNwZWNpZmljIGNvbW1pdCBzZXQgaW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAgd2l0aCAz
IGNvbW1pdCBzZXRzJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJs
ZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBv
c2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0g
J1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5
MTYyMyd9fSwKKyAgICAgICAgICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTI3MzYn
fX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNr
TmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwg
cmVwZXRpdGlvbkNvdW50OiAyLAorICAgICAgICAgICAgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJ
ZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25UeXBlOiAnc2VxdWVudGlh
bCcsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgaWdub3JlQ2FjaGUgPSB0cnVlOwor
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhy
ZXN1bHRbJ3Rhc2tJZCddLCBpZ25vcmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGxldCBncm91cCA9IHRlc3RHcm91cHNb
MF07CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3Vw
SWQpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoK2dyb3VwLmluaXRpYWxSZXBldGl0aW9u
Q291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9u
VHlwZSgpLCAnc2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisgICAgICAgIGZvciAoY29uc3QgY29t
bWl0U2V0IG9mIGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNl
dCksIDIpOworCisgICAgICAgIGxldCBmaXJzdENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENv
bW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFdKTsKKyAgICAgICAgbGV0IHNl
Y29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVsxXTsKKyAgICAgICAg
YXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHNlY29uZENv
bW1pdFNldCksIFsyLCAzXSk7CisgICAgICAgIGxldCB0aGlyZENvbW1pdFNldCA9IGdyb3VwLnJl
cXVlc3RlZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdy
b3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29tbWl0U2V0KSwgWzQsIDVdKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdhZGQtYnVpbGQtcmVxdWVzdHMn
LAorICAgICAgICAgICAge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBjb21t
aXRTZXQ6IGZpcnN0Q29tbWl0U2V0LmlkKCl9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3Jv
dXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25v
cmVDYWNoZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0
aCwgMSk7CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKCt1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwg
Mik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAn
c2VxdWVudGlhbCcpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVk
Q29tbWl0U2V0cygpLmxlbmd0aCwgMyk7CisKKyAgICAgICAgZmlyc3RDb21taXRTZXQgPSBncm91
cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMF07CisgICAgICAgIGFzc2VydE9yZGVyT2ZSZXF1ZXN0
cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChmaXJzdENvbW1pdFNldCksIFswLCAxLCAyLCAz
XSk7CisgICAgICAgIHNlY29uZENvbW1pdFNldCA9IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMo
KVsxXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29t
bWl0U2V0KHNlY29uZENvbW1pdFNldCksIFs0LCA1XSk7CisgICAgICAgIHRoaXJkQ29tbWl0U2V0
ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBhc3NlcnRPcmRlck9m
UmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21taXRTZXQpLCBbNiwg
N10pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaGlmdCB0aGUgb3JkZXIgb2YgYnVpbGQg
cmVxdWVzdHMgd2hlbiBhZGRpbmcgcmV0cnkgZm9yIGFsbCBjb21taXQgc2V0cyBpbiBhIHNlcXVl
bnRpYWwgdGVzdCBncm91cCB3aXRoIDMgY29tbWl0IHNldHMnLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAg
ICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9
PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlz
aW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtp
dC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319LAorICAgICAgICAgICAge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MjczNid9fV07CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAg
ICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2Nr
RGF0YS5zb21lUGxhdGZvcm1JZCgpLCByZXBldGl0aW9uQ291bnQ6IDIsCisgICAgICAgICAgICB0
ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVw
ZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0
IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25z
dCBpZ25vcmVDYWNoZSA9IHRydWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBU
ZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIGlnbm9yZUNhY2hlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
bGV0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgr
Z3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAzKTsK
KyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpKQorICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5yZXBldGl0aW9uQ291
bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgbGV0IGZpcnN0Q29tbWl0
U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzBdOworICAgICAgICBhc3NlcnRPcmRl
ck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBb
MCwgMV0pOworICAgICAgICBsZXQgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29t
bWl0U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVz
dHNGb3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKyAgICAgICAgbGV0IHRo
aXJkQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpWzJdOworICAgICAgICBh
c3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQodGhpcmRDb21t
aXRTZXQpLCBbNCwgNV0pOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsCisgICAgICAgICAgICB7Z3JvdXA6IGluc2VydGVkR3Jv
dXBJZCwgYWRkQ291bnQ6IDJ9KTsKKworICAgICAgICBjb25zdCB1cGRhdGVkR3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCBpZ25vcmVDYWNoZSk7
CisgICAgICAgIGdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUoKSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgs
IDMpOworCisgICAgICAgIGZpcnN0Q29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpWzBdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNGb3JD
b21taXRTZXQoZmlyc3RDb21taXRTZXQpLCBbMCwgMSwgMiwgM10pOworICAgICAgICBzZWNvbmRD
b21taXRTZXQgPSBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKClbMV07CisgICAgICAgIGFzc2Vy
dE9yZGVyT2ZSZXF1ZXN0cyhncm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChzZWNvbmRDb21taXRT
ZXQpLCBbNCwgNSwgNiwgN10pOworICAgICAgICB0aGlyZENvbW1pdFNldCA9IGdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKVsyXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJlcXVlc3RzKGdyb3Vw
LnJlcXVlc3RzRm9yQ29tbWl0U2V0KHRoaXJkQ29tbWl0U2V0KSwgWzgsIDksIDEwLCAxMV0pOwor
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiTm9Db21taXRTZXRJblRlc3RH
cm91cCIgaWYgY29tbWl0IHNldCBpcyBub3QgaW4gYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBh
c3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygn
c29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmls
dGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07Cisg
ICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAn
MTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10
ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIg
dGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0
YS5zb21lVGVzdElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJl
cGV0aXRpb25Db3VudDogMiwgcmVwZXRpdGlvblR5cGU6ICdzZXF1ZW50aWFsJywgcmV2aXNpb25T
ZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3Vw
SWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUt
dGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVz
dHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3Vw
LmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRN
b3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJyk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKTsKKyAgICAg
ICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpKQor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudEZvckNv
bW1pdFNldChjb21taXRTZXQpLCAyKTsKKworICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9
IGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKVswXTsKKyAgICAgICAgYXNzZXJ0T3JkZXJPZlJl
cXVlc3RzKGdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGZpcnN0Q29tbWl0U2V0KSwgWzAsIDFd
KTsKKyAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gZ3JvdXAucmVxdWVzdGVkQ29tbWl0
U2V0cygpWzFdOworICAgICAgICBhc3NlcnRPcmRlck9mUmVxdWVzdHMoZ3JvdXAucmVxdWVzdHNG
b3JDb21taXRTZXQoc2Vjb25kQ29tbWl0U2V0KSwgWzIsIDNdKTsKKworICAgICAgICBjb25zdCBj
b21taXRTZXQgPSBmaXJzdENvbW1pdFNldC5pZCgpICsgc2Vjb25kQ29tbWl0U2V0LmlkKCkgKyAx
OworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ05vQ29tbWl0U2V0SW5UZXN0R3JvdXAnLCAo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRk
LWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGFkZENvdW50OiAyLCBj
b21taXRTZXR9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVj
dCB3aXRoICJJbnZhbGlkQ29tbWl0U2V0IiBpZiBjb21taXQgc2V0IGlkIGlzIG5vdCBhbiBpbnRl
Z2VyIGZvciBhIHNlcXVlbnRpYWwgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
YXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAg
Y29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJl
cG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25T
ZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0Lmlk
KCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQg
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAg
ICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tE
YXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAg
ICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBl
dGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3Qg
aW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgeydncm91cCc6
IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsn
dGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5s
ZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCtncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5cGUo
KSwgJ3NlcXVlbnRpYWwnKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcXVl
c3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNl
dCBvZiBncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkpCisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29tbWl0U2V0KGNvbW1pdFNldCksIDIp
OworCisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9ICdpbnZhbGlkJzsKKyAgICAgICAgYXdhaXQg
YXNzZXJ0VGhyb3dzKCdJbnZhbGlkQ29tbWl0U2V0JywgKCkgPT4geworICAgICAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91
cDogaW5zZXJ0ZWRHcm91cElkLCBhZGRDb3VudDogMiwgY29tbWl0U2V0fSk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCAiSW52YWxpZENvbW1pdFNl
dCIgaWYgY29tbWl0IHNldCBpZCBpcyBub3QgYW4gaW50ZWdlciBmb3IgYW4gYWx0ZXJuYXRpbmcg
dGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2
MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFz
a05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCks
IHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0
aW5nJywgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJl
c3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1h
eU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0g
YXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCgrZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdhbHRlcm5hdGluZycpOwor
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpLmxl
bmd0aCwgMik7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGdyb3VwLnJlcXVlc3Rl
ZENvbW1pdFNldHMoKSkKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnRGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgMik7CisKKyAgICAgICAgY29uc3Qg
Y29tbWl0U2V0ID0gJ2ludmFsaWQnOworICAgICAgICBhd2FpdCBhc3NlcnRUaHJvd3MoJ0ludmFs
aWRDb21taXRTZXQnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQs
IGFkZENvdW50OiAyLCBjb21taXRTZXR9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVz
dHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQt
YXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRlc3RzLmpzCmluZGV4IDJiMjc1MGFhN2EyZGQzYmM3
OTVhNzY3Mjc2NGJhYWEzZWI4NGQxYjYuLjJhMTcxNzhlNDM0MjMyMmVmY2MwYmZmZDI3ZjI5ODIz
NWY0MzI2ZGIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUt
YW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAtNjgyLDQgKzY4MiwxMTkgQEAgZGVzY3JpYmUoJy9w
cml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzayB3aXRoIG5vZGUgcHJpdmlsZWdlZCBh
cGknLCBmdW5jdGkKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0Q29tbWl0U2V0LmNv
bW1pdEZvclJlcG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMicp
OwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJl
cG9zaXRvcnkod2Via2l0UmVwb3NpdG9yeSkucmV2aXNpb24oKSwgJzE5MTYyMycpOwogICAgIH0p
OworCisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhbiBhbmFseXNpcyB0YXNrIHdp
dGggYSBzZXF1ZW50aWFsIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0
IHdlYmtpdElkID0gMTsKKyAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IDE7CisgICAgICAgIGNv
bnN0IHRyaWdnZXJhYmxlSWQgPSAxMjM0OworCisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Rlc3RzJywge25hbWU6ICdT
dWl0ZSd9KTsKKyAgICAgICAgY29uc3QgdGVzdFJvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93
KCd0ZXN0cycsIHtuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RJZCA9IHRlc3RS
b3cuaWQ7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB3ZWJr
aXRJZCwgbmFtZTogJ1dlYktpdCd9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdwbGF0Zm9y
bXMnLCB7aWQ6IHBsYXRmb3JtSWQsIG5hbWU6ICdzb21lIHBsYXRmb3JtJ30pOworICAgICAgICBh
d2FpdCBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxlcycsIHtpZDogMTIzNCwgbmFtZTogJ3Rl
c3QtdHJpZ2dlcmFibGUnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dlcmFibGVf
cmVwb3NpdG9yeV9ncm91cHMnLCB7aWQ6IDIzNDUsIG5hbWU6ICd3ZWJraXQtb25seScsIHRyaWdn
ZXJhYmxlOiB0cmlnZ2VyYWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2VydCgndHJpZ2dl
cmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHdlYmtpdElkLCBncm91cDogMjM0NX0p
OworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywg
e3Rlc3Q6IHRlc3RJZCwgcGxhdGZvcm06IHBsYXRmb3JtSWQsIHRyaWdnZXJhYmxlOiB0cmlnZ2Vy
YWJsZUlkfSk7CisgICAgICAgIGF3YWl0IGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJl
dmlzaW9uWzBdKTsKKworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVw
b3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKworICAg
ICAgICBjb25zdCB0ZXN0ID0gVGVzdC5maW5kQnlJZCh0ZXN0SWQpOworICAgICAgICBjb25zdCBz
b21lUGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChwbGF0Zm9ybUlkKTsKKyAgICAgICAgY29u
c3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmlndXJhdGlv
bnMnLCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3MoKVswXS5pZCgpLCBwbGF0Zm9ybTogc29tZVBsYXRm
b3JtLmlkKCl9KTsKKyAgICAgICAgY29uc3QgdGVzdFJ1bnMgPSBhd2FpdCBkYi5zZWxlY3RSb3dz
KCd0ZXN0X3J1bnMnLCB7Y29uZmlnOiBjb25maWdSb3dbJ2lkJ119KTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RSdW5zLmxlbmd0aCwgMik7CisKKyAgICAgICAgY29uc3Qgb25lUmV2
aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIyJ319OworICAgICAgICBj
b25zdCBhbm90aGVyUmV2aXNpb25TZXQgPSB7W3dlYmtpdElkXToge3JldmlzaW9uOiAnMTkxNjIz
J319OworCisgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRp
b25Db3VudDogMiwKKyAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgcmV2aXNp
b25TZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sCisgICAgICAgICAg
ICBzdGFydFJ1bjogdGVzdFJ1bnNbMF1bJ2lkJ10sIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10s
IG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnfSk7
CisKKyAgICAgICAgY29uc3QgdGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoY29u
dGVudFsndGFza0lkJ10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5uYW1lKCks
ICdjb25maXJtJyk7CisgICAgICAgIGFzc2VydCghdGFzay5oYXNSZXN1bHRzKCkpOworICAgICAg
ICBhc3NlcnQodGFzay5oYXNQZW5kaW5nUmVxdWVzdHMoKSk7CisgICAgICAgIGFzc2VydC5kZWVw
U3RyaWN0RXF1YWwodGFzay5idWdzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RF
cXVhbCh0YXNrLmNhdXNlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwo
dGFzay5maXhlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLmNoYW5n
ZVR5cGUoKSwgbnVsbCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLnBsYXRmb3Jt
KCkubGFiZWwoKSwgJ3NvbWUgcGxhdGZvcm0nKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRhc2subWV0cmljKCkudGVzdCgpLmxhYmVsKCksICdTdWl0ZScpOworCisgICAgICAgIGNvbnN0
IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAg
IGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXAubmFtZSgpLCAnQ29uZmlybScpOworICAgICAgICBhc3NlcnQub2sodGVz
dEdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3VwLnJlcGV0aXRpb25UeXBlKCksICdzZXF1ZW50aWFsJykKKyAgICAgICAgZm9yIChj
b25zdCBjb21taXRTZXQgb2YgdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkKKyAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAucmVwZXRpdGlvbkNvdW50Rm9yQ29t
bWl0U2V0KGNvbW1pdFNldCksIDIpOworCisgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB0
ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVp
bGRSZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWls
ZFJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVp
bGRSZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1
aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChi
dWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2VydChidWlsZFJlcXVl
c3RzWzBdLmNvbW1pdFNldCgpLmVxdWFscyhidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgpKSk7
CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhidWls
ZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAgICAgY29uc3QgZmlyc3RDb21taXRT
ZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBzZWNvbmRD
b21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCB3
ZWJraXRSZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZCh3ZWJraXRJZCk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdl
YmtpdFJlcG9zaXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdFJlcG9z
aXRvcnkpLnJldmlzaW9uKCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQg
cmVqZWN0IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgd2hlbiByZXBldGl0aW9uIHR5cGUg
aXMgbm90ICJhbHRlcm5hdGluZyIgb3IgInNlcXVlbnRpYWwiJywgYXN5bmMgKCkgPT4geworICAg
ICAgICBjb25zdCB3ZWJraXRJZCA9IDE7CisgICAgICAgIGNvbnN0IHBsYXRmb3JtSWQgPSAxOwor
ICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZUlkID0gMTIzNDsKKworICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0ZXN0cycs
IHtuYW1lOiAnU3VpdGUnfSk7CisgICAgICAgIGNvbnN0IHRlc3RSb3cgPSBhd2FpdCBkYi5zZWxl
Y3RGaXJzdFJvdygndGVzdHMnLCB7bmFtZTogJ1N1aXRlJ30pOworICAgICAgICBjb25zdCB0ZXN0
SWQgPSB0ZXN0Um93LmlkOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycs
IHtpZDogd2Via2l0SWQsIG5hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGF3YWl0IGRiLmluc2Vy
dCgncGxhdGZvcm1zJywge2lkOiBwbGF0Zm9ybUlkLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KTsK
KyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDEyMzQs
IG5hbWU6ICd0ZXN0LXRyaWdnZXJhYmxlJ30pOworICAgICAgICBhd2FpdCBkYi5pbnNlcnQoJ3Ry
aWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMzQ1LCBuYW1lOiAnd2Via2l0LW9u
bHknLCB0cmlnZ2VyYWJsZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBkYi5pbnNl
cnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB3ZWJraXRJZCwgZ3Jv
dXA6IDIzNDV9KTsKKyAgICAgICAgYXdhaXQgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1
cmF0aW9ucycsIHt0ZXN0OiB0ZXN0SWQsIHBsYXRmb3JtOiBwbGF0Zm9ybUlkLCB0cmlnZ2VyYWJs
ZTogdHJpZ2dlcmFibGVJZH0pOworICAgICAgICBhd2FpdCBhZGRCdWlsZGVyRm9yUmVwb3J0KHJl
cG9ydFdpdGhSZXZpc2lvblswXSk7CisKKyAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAg
ICAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywg
YW5vdGhlclJlcG9ydFdpdGhSZXZpc2lvbik7CisgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNo
KCk7CisKKyAgICAgICAgY29uc3QgdGVzdCA9IFRlc3QuZmluZEJ5SWQodGVzdElkKTsKKyAgICAg
ICAgY29uc3Qgc29tZVBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQocGxhdGZvcm1JZCk7Cisg
ICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2Nv
bmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdC5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06
IHNvbWVQbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIu
c2VsZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworCisgICAgICAgIGNv
bnN0IG9uZVJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lvbjogJzE5MTYyMid9fTsK
KyAgICAgICAgY29uc3QgYW5vdGhlclJldmlzaW9uU2V0ID0ge1t3ZWJraXRJZF06IHtyZXZpc2lv
bjogJzE5MTYyMyd9fTsKKyAgICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRp
dGlvblR5cGUnLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7CisgICAgICAgICAgICAgICAgbmFtZTog
J2NvbmZpcm0nLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogMiwKKyAgICAgICAg
ICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCisgICAgICAgICAgICAgICAgcmV2aXNp
b25TZXRzOiBbb25lUmV2aXNpb25TZXQsIGFub3RoZXJSZXZpc2lvblNldF0sCisgICAgICAgICAg
ICAgICAgcmVwZXRpdGlvblR5cGU6ICdpbnZhbGlkLW1vZGUnLAorICAgICAgICAgICAgICAgIHN0
YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwKKyAgICAgICAgICAgICAgICBlbmRSdW46IHRlc3RS
dW5zWzFdWydpZCddLAorICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlCisg
ICAgICAgICAgICB9KQorICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUt
dGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXggNjdkODRh
ZGFmNTk2YTE3MGJkZGZlYWYyMjQyMGYyYzI1MDVlMTNkNi4uYmIyMjQyOTYzMDUyZDE4ZjA1Nzdh
ZGRkNDRjZTNjMzYxZGYxNDRkOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC03LDYgKzcsOCBAQCBjb25zdCBUZXN0U2Vy
dmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IFRlbXBv
cmFyeUZpbGUgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZW1wb3JhcnktZmlsZS5qcycpLlRlbXBv
cmFyeUZpbGU7CiBjb25zdCBhZGRXb3JrZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNl
cy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFdvcmtlckZvclJlcG9ydDsKIGNvbnN0IHByZXBh
cmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMn
KS5wcmVwYXJlU2VydmVyVGVzdDsKK2NvbnN0IGFzc2VydFRocm93cyA9IHJlcXVpcmUoJy4vcmVz
b3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuYXNzZXJ0VGhyb3dzOworCiAKIGZ1bmN0aW9u
IGNyZWF0ZUFuYWx5c2lzVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMgPSBbIjE5MTYyMiIsICIx
OTE2MjMiXSkKIHsKQEAgLTQwMCw3ICs0MDIsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3Vw
ID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5p
ZCgpLCBncm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBl
dGl0aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAu
aW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3Jv
dXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdy
b3VwLmJ1aWxkUmVxdWVzdHMoKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDQpOwpAQCAtNDQ3LDcgKzQ0OSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3Qg
Z3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmlkKCksIGdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChn
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwogICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3Rz
ID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC00ODUsNyArNDg3LDcgQEAgZGVzY3JpYmUoJy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCksIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmlj
YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJl
cXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7CkBAIC01MjQsNyArNTI2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0
IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDEpOworICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDEpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAg
ICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CkBA
IC01NTYsNyArNTU4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1n
cm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQo
KSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAg
ICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02MDMsNyArNjA1
LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRp
dGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5v
ayghZ3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVx
dWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02NDUsNyArNjQ3LDcgQEAgZGVzY3Jp
YmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwog
ICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCks
IDIpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVw
ZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVl
ZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91
cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgNCk7CkBAIC02OTQsNyArNjk2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxl
Z2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmljYXRp
b24oKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVl
c3RzKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNCk7CkBAIC03NDMsNyArNzQ1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRl
c3RHcm91cHNbMF07CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5y
ZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vaygh
Z3JvdXAubmVlZHNOb3RpZmljYXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwog
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3Jt
LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTgwOCw3ICs4MTAsNyBA
QCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOwotICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50
KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05vdGlmaWNhdGlvbigp
KTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmlu
ZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBs
YXRmb3JtSWQoKSkpOwpAQCAtODgzLDcgKzg4NSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3Jv
dXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3Vw
LmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Z3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAgICAgICBhc3Nl
cnQub2soIWdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCkpOwogICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElk
KCkpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQ
bGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBAIC05NjYsNyAr
OTY4LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsK
LSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwg
Mik7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3RpZmlj
YXRpb24oKSk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBU
ZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCkpKTsKQEAgLTEwNjAsNyArMTA2Miw3IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Ci0gICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tE
YXRhLnNvbWVUZXN0SWQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5uZWVkc05v
dGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5wbGF0
Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CkBA
IC0xMTU3LDcgKzExNTksNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRl
ZEdyb3VwSWQpOwotICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRp
b25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0
aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5u
ZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91
cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CiAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5
SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOwpAQCAtMTIzNSw3ICsxMjM3LDcgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAg
ICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5v
ayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBn
cm91cC5idWlsZFJlcXVlc3RzKCk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDIpOwpAQCAtMTI2NCw3ICsxMjY2LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5z
ZXJ0ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRp
b25Db3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxS
ZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubmVlZHNOb3Rp
ZmljYXRpb24oKSk7CiAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0
cygpOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKQEAg
LTEzMDgsNyArMTMxMCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3Qt
Z3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBUZXN0R3JvdXAuc29ydEJ5TmFtZSh0
ZXN0R3JvdXBzKTsKIAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNb
MF0ubmFtZSgpLCAndGVzdDEnKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0
R3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh0ZXN0R3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMSk7CiAgICAg
ICAgICAgICBsZXQgcmVxdWVzdHMgPSB0ZXN0R3JvdXBzWzBdLmJ1aWxkUmVxdWVzdHMoKTsKICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAg
ICAgICAgbGV0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKQEAgLTEzMjEsNyArMTMy
Myw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMycpOwogCiAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGVzdEdyb3Vwc1sxXS5uYW1lKCksICd0ZXN0MicpOwotICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0ucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHNbMV0uaW5pdGlhbFJlcGV0aXRp
b25Db3VudCgpLCAyKTsKICAgICAgICAgICAgIHJlcXVlc3RzID0gdGVzdEdyb3Vwc1sxXS5idWls
ZFJlcXVlc3RzKCk7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVu
Z3RoLCA0KTsKICAgICAgICAgICAgIHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKQEAg
LTEzMzYsNCArMTMzOCwxNTQgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChz
ZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CiAgICAgICAgIH0p
OwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBzZXF1ZW50aWFsIHRlc3QgZ3Jv
dXAgd2l0aCBhbiBhbmFseXNpcyB0YXNrJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBh
ZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3
ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9y
eS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBb
e1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFt
ZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29t
ZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAg
bmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJldmlzaW9uU2V0cywgcmVwZXRpdGlvblR5cGU6ICdz
ZXF1ZW50aWFsJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVk
R3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBbYW5hbHlz
aXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFseXNpc1Rhc2suZmV0
Y2hCeUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsn
dGFza0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhbmFseXNpc1Rh
c2submFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJ
ZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNv
dW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlvblR5
cGUoKSwgJ3NlcXVlbnRpYWwnKQorICAgICAgICBhc3NlcnQub2soZ3JvdXAubmVlZHNOb3RpZmlj
YXRpb24oKSk7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzJdLm9yZGVyKCksIDIpOworICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKS5sZW5ndGgsIDIpCisgICAgICAg
IGFzc2VydChyZXF1ZXN0c1swXS5jb21taXRTZXQoKS5lcXVhbHMocmVxdWVzdHNbMV0uY29tbWl0
U2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmVxdWFscyhy
ZXF1ZXN0c1szXS5jb21taXRTZXQoKSkpOworCisgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0
c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3RzWzJdLmNvbW1p
dFNldCgpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHNldDAucmVwb3NpdG9yaWVz
KCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLmN1c3Rv
bVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLnJlcG9z
aXRvcmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0
MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzZXQwLnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIzJyk7
CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbiBhbHRlcm5hdGluZyB0ZXN0IGdy
b3VwIHdpdGggYW4gYW5hbHlzaXMgdGFzaycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQg
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qg
d2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0g
W3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25h
bWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwKKyAgICAgICAgICAg
ICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25TZXRzLCByZXBldGl0aW9uVHlwZTog
J2FsdGVybmF0aW5nJywgcmVwZXRpdGlvbkNvdW50OiAyfSk7CisgICAgICAgIGNvbnN0IGluc2Vy
dGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCBbYW5h
bHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFseXNpc1Rhc2su
ZmV0Y2hCeUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3Vs
dFsndGFza0lkJ10sIHRydWUpXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhbmFseXNp
c1Rhc2submFtZSgpLCAnb3RoZXIgdGFzaycpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3Jv
dXBJZCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pbml0aWFsUmVwZXRpdGlv
bkNvdW50KCksIDIpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
blR5cGUoKSwgJ2FsdGVybmF0aW5nJykKKyAgICAgICAgYXNzZXJ0Lm9rKGdyb3VwLm5lZWRzTm90
aWZpY2F0aW9uKCkpOworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVz
dHMoKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CisK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMV0ub3JkZXIoKSwgMSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1syXS5vcmRlcigpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworCisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChncm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCkubGVuZ3RoLCAyKQorICAg
ICAgICBhc3NlcnQocmVxdWVzdHNbMF0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzJdLmNv
bW1pdFNldCgpKSk7CisgICAgICAgIGFzc2VydChyZXF1ZXN0c1sxXS5jb21taXRTZXQoKS5lcXVh
bHMocmVxdWVzdHNbM10uY29tbWl0U2V0KCkpKTsKKworICAgICAgICBjb25zdCBzZXQwID0gcmVx
dWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1sxXS5j
b21taXRTZXQoKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQwLnJlcG9zaXRv
cmllcygpLCBbd2Via2l0XSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MC5j
dXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2V0MS5y
ZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KHNldDEuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2V0
MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYy
MycpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBzZXF1ZW50aWFsIHRlc3Qg
Z3JvdXAgaW4gYW4gZXhpc3RpbmcgYW5hbHlzaXMgdGFzaycsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgY29uc3QgdGFza0lkID0gYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21l
IHRhc2snKTsKKyAgICAgICAgY29uc3QgaWdub3JlQ2FjaGUgPSB0cnVlOworCisgICAgICAgIGxl
dCBbYW5hbHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtBbmFseXNp
c1Rhc2suZmV0Y2hCeUlkKHRhc2tJZCksIFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFza0lkLCBp
Z25vcmVDYWNoZSldKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFuYWx5c2lzVGFzay5u
YW1lKCksICdzb21lIHRhc2snKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAwKTsKKworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgp
LmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBd
OworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lv
bjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07Cisg
ICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQs
IHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21l
VGVzdElkKCksCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmV2aXNpb25T
ZXRzLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXBldGl0aW9uQ291bnQ6IDJ9KTsK
KyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwor
CisgICAgICAgIFthbmFseXNpc1Rhc2ssIHRlc3RHcm91cHNdID0gYXdhaXQgUHJvbWlzZS5hbGwo
W0FuYWx5c2lzVGFzay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5mZXRj
aEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgaWdub3JlQ2FjaGUpXSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChhbmFseXNpc1Rhc2submFtZSgpLCAnc29tZSB0YXNrJyk7CisKKyAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29u
c3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3Jv
dXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdy
b3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChncm91cC5yZXBldGl0aW9uVHlwZSgpLCAnc2VxdWVudGlhbCcpCisgICAgICAgIGFzc2Vy
dC5vayhncm91cC5uZWVkc05vdGlmaWNhdGlvbigpKTsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMg
PSBncm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1sw
XS5vcmRlcigpLCAwKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlcXVlc3RzWzFdLm9y
ZGVyKCksIDEpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdHNbMl0ub3JkZXIo
KSwgMik7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0c1szXS5vcmRlcigpLCAz
KTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpLmxlbmd0aCwgMikKKyAgICAgICAgYXNzZXJ0KHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpLmVx
dWFscyhyZXF1ZXN0c1sxXS5jb21taXRTZXQoKSkpOworICAgICAgICBhc3NlcnQocmVxdWVzdHNb
Ml0uY29tbWl0U2V0KCkuZXF1YWxzKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpKSk7CisKKyAgICAg
ICAgY29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBz
ZXQxID0gcmVxdWVzdHNbMl0uY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwoc2V0MC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVl
cFN0cmljdEVxdWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBTdHJpY3RFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2
MjInKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHdlYmtpdCksICcxOTE2MjMnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0
IHdpdGggIkludmFsaWRSZXBldGl0aW9uVHlwZSIgaWYgcmVwZXRpdGlvbiB0eXBlIGlzIG5vdCAi
YWx0ZXJuYXRpbmciIG9yICJzZXF1ZW50aWFsIicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdh
aXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29u
c3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRz
ID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworCisgICAgICAgIGF3YWl0IGFzc2VydFRocm93cygn
SW52YWxpZFJlcGV0aXRpb25UeXBlJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZp
bGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0Jywg
dGFza05hbWU6ICdvdGhlciB0YXNrJywKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAg
ICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlwZTogJ2ludmFs
aWQtbW9kZScsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSkKKyAgICAgICAgfSk7
CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoICJJbnZhbGlkUmVwZXRpdGlv
blR5cGUiIHdoZW4gY3JlYXRpbmcgYSB0ZXN0IGdyb3VwIHdpdGggYSBiYWQgcmVwZXRpdGlvbiB0
eXBlIGZvciBhbiBleGlzdGluZyBhbmFseXNpcyB0YXNrJywgYXN5bmMgKCkgPT4geworICAgICAg
ICBjb25zdCB0YXNrSWQgPSBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUg
dGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigo
cmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAg
ICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Mid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisKKyAgICAgICAg
YXdhaXQgYXNzZXJ0VGhyb3dzKCdJbnZhbGlkUmVwZXRpdGlvblR5cGUnLCAoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3Jv
dXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsCisgICAgICAgICAgICAgICAgcGxhdGZv
cm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQo
KSwKKyAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwgcmVwZXRpdGlvblR5
cGU6ICdpbnZhbGlkLW1vZGUnLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pCisg
ICAgICAgIH0pOworICAgIH0pOwogfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3Rz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwppbmRleCA0NTA2YzNiMjdmMDVmMjMyYWI0MGM1
ZTZhYzc0ZTdhZDVmNDJkNTk4Li5iNmRjYWUyZjIxODY1MmZjOTI5N2RkY2E1Mzg3MjA1ZjNiYzli
MzA4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3Jv
dXAtdGVzdHMuanMKQEAgLTE2OCw3ICsxNjgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L3VwZGF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3Vu
dCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0
aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVkc05v
dGlmaWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRp
b25TZW50QXQoKSk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0
R3JvdXBzWzBdOwogICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0
ZWRHcm91cElkKTsKLSAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLnJlcGV0aXRpb25D
b3VudCgpLCAxKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLmluaXRpYWxSZXBl
dGl0aW9uQ291bnQoKSwgMSk7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5uZWVk
c05vdGlmaWNhdGlvbigpLCBmYWxzZSk7CiAgICAgICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZp
Y2F0aW9uU2VudEF0KCkpOwogCkBAIC0yNzYsNCArMjc2LDg2IEBAIGRlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewogICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwc1swXS5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNl
KTsKICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0uaXNIaWRkZW4o
KSwgdHJ1ZSk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY2FuY2VsIGFu
IGFsdGVybmF0aW5nIHRlc3QgZ3JvdXAgYW5kIGNsZWFyIHRoZSAibWF5IG5lZWQgbW9yZSByZXF1
ZXN0cyIgZmxhZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2
MjMnfX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0
YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQo
KSwKKyAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmlj
YXRpb246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywgcmV2aXNpb25TZXRz
fSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQn
XTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9y
VGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBz
WzBdOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91
cElkKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVz
dHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAucmVwZXRpdGlv
blR5cGUoKSwgJ2FsdGVybmF0aW5nJyk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwg
bWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGxldCB1cGRhdGVkR3JvdXBz
ID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsK
KyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZE1vcmVSZXF1
ZXN0cygpLCB0cnVlKTsKKyAgICAgICAgbGV0IHRlc3RHcm91cCA9IHVwZGF0ZWRHcm91cHNbMF07
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0
cygpLCB0cnVlKTsKKyAgICAgICAgbGV0IGJ1aWxkUmVxdWVzdHMgPSB0ZXN0R3JvdXAuX29yZGVy
ZWRCdWlsZFJlcXVlc3RzKCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVl
c3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzBdLmlzUGVuZGlu
ZygpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdHNbMV0uaXNQZW5kaW5nKCkpOworCisg
ICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3Vw
Jywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIGNhbmNlbDogdHJ1ZX0pOworCisgICAgICAgIHVw
ZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lk
J10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2Up
OworICAgICAgICBhc3NlcnQodGVzdEdyb3VwLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICBidWls
ZFJlcXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVpbGRSZXF1ZXN0cygpOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXMoKSwgJ2NhbmNlbGVkJyk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJlcXVlc3RzWzFdLnN0YXR1cygpLCAnY2Fu
Y2VsZWQnKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjYW5jZWwgYSBz
ZXF1ZW50aWFsIHRlc3QgZ3JvdXAgYW5kIGNsZWFyIHRoZSAibWF5IG5lZWQgbW9yZSByZXF1ZXN0
cyIgZmxhZycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRD
cmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9y
eS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJL
aXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7
cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMn
fX1dOworICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNr
TmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwK
KyAgICAgICAgICAgIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLCByZXZpc2lvblNldHN9KTsK
KyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwor
CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVz
dEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQp
OworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygp
LCBmYWxzZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChncm91cC5yZXBldGl0aW9uVHlw
ZSgpLCAnc2VxdWVudGlhbCcpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3
YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMo
KSwgdHJ1ZSk7CisgICAgICAgIGxldCB0ZXN0R3JvdXAgPSB1cGRhdGVkR3JvdXBzWzBdOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwg
dHJ1ZSk7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLl9vcmRlcmVkQnVp
bGRSZXF1ZXN0cygpOworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0cy5s
ZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7
CisgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3RzWzFdLmlzUGVuZGluZygpKTsKKworICAgICAg
ICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtn
cm91cDogaW5zZXJ0ZWRHcm91cElkLCBjYW5jZWw6IHRydWV9KTsKKworICAgICAgICB1cGRhdGVk
R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0
cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgdGVzdEdyb3VwID0gdXBkYXRlZEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKyAg
ICAgICAgYXNzZXJ0KHRlc3RHcm91cC5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgYnVpbGRSZXF1
ZXN0cyA9IHRlc3RHcm91cC5fb3JkZXJlZEJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0uc3RhdHVzKCksICdjYW5jZWxlZCcpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5zdGF0dXMoKSwgJ2NhbmNlbGVk
Jyk7CisgICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVz
b3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCmluZGV4IGVjZmVjOGQxNmU5MzRkNTdkMzI3MTg4
OGVjNTYzYjM0NDZlYWI0YmEuLmYyNGY0MzMxYTBiNDEwYzcwYmNkYjg5YjAwOGRjOTY1ZDE5YjQw
YTMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVz
b3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCkBAIC01Myw3ICs1
Myw3IEBAIGFzeW5jIGZ1bmN0aW9uIGFzc2VydFRocm93cyhleHBlY3RlZEVycm9yLCB0ZXN0RnVu
Y3Rpb24pCiB7CiAgICAgbGV0IHRocm93bkV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIHRyeSB7Ci0g
ICAgICAgICAgICBhd2FpdCB0ZXN0RnVuY3Rpb24oKQorICAgICAgICBhd2FpdCB0ZXN0RnVuY3Rp
b24oKTsKICAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAgICAgIHRocm93bkV4Y2VwdGlvbiA9IHRy
dWU7CiAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlcnJvciwgZXhwZWN0ZWRFcnJvcik7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNl
cy9tb2NrLWRhdGEuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jl
c291cmNlcy9tb2NrLWRhdGEuanMKaW5kZXggNjgxYWZjYzRjZjZhZDBlNTkyZWNiNjAxMWE2MWNi
MWNmOTRjZWQxYi4uZWFlZTgxYTM0MGIxODYyYjFmYTEyYjM2NzI2N2RjYTg1M2MxYzM2NCAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMv
bW9jay1kYXRhLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
cmVzb3VyY2VzL21vY2stZGF0YS5qcwpAQCAtNjQsMTIgKzY0LDE0IEBAIE1vY2tEYXRhID0gewog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X3J1bnMnLCB7aWQ6IDgwMSwgY29uZmlnOiAzMDEs
IGJ1aWxkOiA5MDEsIG1lYW5fY2FjaGU6IDEwMH0pLAogICAgICAgICBdKTsKICAgICB9LAotICAg
IGFkZE1vY2tEYXRhOiBmdW5jdGlvbiAoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9u
PXRydWUsIHVybExpc3Q9W10pCisgICAgYWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVz
TGlzdCwgbmVlZHNOb3RpZmljYXRpb24gPSB0cnVlLCB1cmxMaXN0ID0gbnVsbCwgY29tbWl0U2V0
TGlzdCA9IG51bGwsIHJlcGV0aXRpb25UeXBlID0gJ2FsdGVybmF0aW5nJywgbWF5TmVlZE1vcmVS
ZXF1ZXN0cyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgaWYgKCFzdGF0dXNMaXN0KQogICAgICAg
ICAgICAgc3RhdHVzTGlzdCA9IFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVu
ZGluZyddOwogICAgICAgICBpZiAoIXVybExpc3QpCiAgICAgICAgICAgICB1cmxMaXN0ID0gW251
bGwsIG51bGwsIG51bGwsIG51bGxdOworICAgICAgICBpZiAoIWNvbW1pdFNldExpc3QpCisgICAg
ICAgICAgICBjb21taXRTZXRMaXN0ID0gWzQwMSwgNDAyLCA0MDEsIDQwMl07CiAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICB0aGlzLmFkZE1vY2tDb25maWd1cmF0aW9u
KGRiKSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwMX0pLApA
QCAtODEsMTQgKzgzLDE1IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdh
bmFseXNpc190YXNrcycsIHtpZDogNTAwLCBwbGF0Zm9ybTogNjUsIG1ldHJpYzogMzAwLCBuYW1l
OiAnc29tZSB0YXNrJywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgwMSwgc3RhcnRfcnVu
X3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAgICAgICAgICBlbmRfcnVu
OiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCi0gICAgICAg
ICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRhc2s6IDUw
MCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3VudDogNCwg
bmVlZHNfbm90aWZpY2F0aW9uOiBuZWVkc05vdGlmaWNhdGlvbn0pLAotICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0s
IHVybDogdXJsTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIw
MDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMCwgY29tbWl0
X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lk
OiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFdLCB0cmlnZ2VyYWJs
ZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAs
IGdyb3VwOiA2MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKLSAgICAgICAgICAgIGRi
Lmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJd
LCB1cmw6IHVybExpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAy
MDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDIsIGNvbW1p
dF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtp
ZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHVybDogdXJsTGlzdFszXSwgdHJpZ2dlcmFi
bGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAw
LCBncm91cDogNjAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRhc2s6IDUwMCwgbmFt
ZTogJ3NvbWUgdGVzdCBncm91cCcsIGluaXRpYWxfcmVwZXRpdGlvbl9jb3VudDogMiwKKyAgICAg
ICAgICAgICAgICBuZWVkc19ub3RpZmljYXRpb246IG5lZWRzTm90aWZpY2F0aW9uLCByZXBldGl0
aW9uX3R5cGU6IHJlcGV0aXRpb25UeXBlLCBtYXlfbmVlZF9tb3JlX3JlcXVlc3RzOiBtYXlOZWVk
TW9yZVJlcXVlc3RzfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywg
e2lkOiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdXJsOiB1cmxMaXN0WzBdLCB0cmlnZ2Vy
YWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAy
MDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzBdfSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDEsIHN0YXR1
czogc3RhdHVzTGlzdFsxXSwgdXJsOiB1cmxMaXN0WzFdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVw
b3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAs
IG9yZGVyOiAxLCBjb21taXRfc2V0OiBjb21taXRTZXRMaXN0WzFdfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czogc3RhdHVzTGlzdFsy
XSwgdXJsOiB1cmxMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDog
MjAwMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAyLCBjb21t
aXRfc2V0OiBjb21taXRTZXRMaXN0WzJdfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdXJsOiB1cmxMaXN0
WzNdLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMSwgcGxhdGZvcm06
IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRfc2V0OiBjb21taXRT
ZXRMaXN0WzNdfSksCiAgICAgICAgIF0pOwogICAgIH0sCi0gICAgYWRkTW9ja0J1aWxkUmVxdWVz
dHNXaXRoUm9vdHMoZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uPXRydWUsIGFkZE1v
Y2tDb25maWd1cmF0aW9uPXRydWUpCisgICAgYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9vdHMo
ZGIsIHN0YXR1c0xpc3QsIG5lZWRzTm90aWZpY2F0aW9uID0gdHJ1ZSwgYWRkTW9ja0NvbmZpZ3Vy
YXRpb24gPSB0cnVlKQogICAgIHsKICAgICAgICAgY29uc3Qgc2V0dXBTdGVwcyA9IGFkZE1vY2tD
b25maWd1cmF0aW9uID8gW3RoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIpXSA6IFtdOwogICAg
ICAgICBpZiAoIXN0YXR1c0xpc3QpCkBAIC0yMDEsMTAgKzIwNCwxMCBAQCBNb2NrRGF0YSA9IHsK
ICAgICAgICAgY29uc3QgcmVwb3NpdG9yeV9ncm91cCA9IDIwMDE7CiAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBz
Jywge2lkOiA2MDEsIHRhc2s6IDUwMCwgbmFtZTogJ2Fub3RoZXIgdGVzdCBncm91cCcsIGF1dGhv
ciwgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dl
cmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRl
cjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3Jl
cXVlc3RzJywge2lkOiA3MTAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJpZ2dlcmFibGUsIHJl
cG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMCwgY29t
bWl0X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywg
e2lkOiA3MTIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlf
Z3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDog
NDAxfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTEs
IHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBs
YXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMSwgY29tbWl0X3NldDogNDAyfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTIsIHN0YXR1czog
c3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0
ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAxfSksCisgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlz
dFszXSwgdHJpZ2dlcmFibGUsIHJlcG9zaXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91
cDogNjAxLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgIF0pOwogICAgIH0s
CiAgICAgYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyhkYiwgc3RhdHVzTGlzdCkKQEAgLTQ4
NCw3ICs0ODcsNiBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAic2NoZWR1bGVyIjog
WyJBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVsZXIiLCAiU2NoZWR1
bGVyIl0sCiAgICAgICAgICAgICAgICAgIndrIjogW29wdGlvbnMud2Via2l0UmV2aXNpb24gfHwg
JzE5MTYyMicsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgIm9zIjogW29wdGlvbnMub3N4
UmV2aXNpb24gfHwgJzEwLjExIDE1QTI4NCcsICJVbmtub3duIl0sCi0gICAgICAgICAgICAgICAg
Indvcmtlcm5hbWUiOiBbb3B0aW9ucy53b3JrZXJOYW1lIHx8ICJib3QyMDIiLCAiV29ya2VyIChk
ZXByZWNhdGVkKSJdLAogICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29y
a2VyTmFtZSB8fCAiYm90MjAyIiwgIldvcmtlciJdCiAgICAgICAgICAgICB9CiAgICAgICAgIH07
CkBAIC01MTksNyArNTIxLDYgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICAgICAgInByb2pl
Y3QiOiBbJycsICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiBbJycs
ICJVbmtub3duIl0sCiAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogWycnLCAiVW5rbm93biJd
LAotICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lIjogW29wdGlvbnMud29ya2VyTmFtZSB8fCAi
Ym90MjAyIiwgIldvcmtlciAoZGVwcmVjYXRlZCkiXSwKICAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZSI6IFtvcHRpb25zLndvcmtlck5hbWUgfHwgImJvdDIwMiIsICJXb3JrZXIiXQogICAgICAg
ICAgICAgfQogICAgICAgICB9OyAgIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dl
cmFibGUtdGVzdHMuanMKaW5kZXggYjQ4NzBiYjJiMDg2YzQ5YjgyNzE1NDg1NmUxNWY2ZjY0ZTAw
N2QyYS4uOGY1NDA5YTE3YzIxMGY3YjI5MTY3MGRmNjRkMDU4Yjg0YzM5MDFhMSAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10
cmlnZ2VyYWJsZS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCkBAIC0zNCw3ICszNCw3
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhT
aW5nbGVCdWlsZGVyKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tM
b2dnZXI7CiAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13
b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgY29uc3QgdHJp
Z2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAg
ICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcs
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxv
Z2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3lu
Y2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dF
VCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90
QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOwpAQCAt
OTEsNyArOTEsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29u
ZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3
IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAgICAgbGV0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5
bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGxldCB0
cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAg
ICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcs
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxv
Z2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3lu
Y2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dF
VCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90
QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOwpAQCAt
MTQxLDcgKzE0MSw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOwogICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9
IG5ldyBNb2NrTG9nZ2VyOwogICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFt
ZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAg
IGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFi
bGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJ
bmZvLCAyLCBsb2dnZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFi
bGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOwogICAg
ICAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1v
Y2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVz
ZXQoKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tU
ZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CiAgICAgICAgICAgICBjb25zdCBsb2dn
ZXIgPSBuZXcgTW9ja0xvZ2dlcjsKICAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFt
ZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgY29u
c3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAg
ICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZp
ZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgMiwg
bG9nZ2VyKTsKICAgICAgICAgICAgIHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9
PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKICAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRS
ZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJv
dEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwogICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGRlc2NyaWJl
KCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgY29uc3Qg
Y29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7CiAg
ICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKICAgICAgICAgICAgIGNv
bnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29y
ZCd9OwotICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2Vy
YWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtl
ckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWls
ZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90
ZUFQSSwgd29ya2VySW5mbywgMiwgbG9nZ2VyKTsKICAgICAgICAgICAgIGNvbnN0IHN5bmNPbmNl
ID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNP
bmNlKCkpOwogICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9j
a0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJ
LnJlc2V0KCk7CkBAIC0zNDMsNyArMzQzLDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFi
bGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRh
Lm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOwogICAgICAgICAgICAgICAgIGxl
dCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKICAgICAgICAgICAgICAgICBsZXQgd29ya2VySW5m
byA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAg
ICAgICAgICAgbGV0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmln
LCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dn
ZXIpOworICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdn
ZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29y
a2VySW5mbywgMiwgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdn
ZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0
YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJ
LnJlc2V0KCk7CkBAIC00MTcsNyArNDE3LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFi
bGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7CiAgICAgICAgICAgICAgICAg
Y29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAgICAgY29uc3Qgd29y
a2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0g
ICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJs
ZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlcklu
Zm8sIGxvZ2dlcik7CisgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVp
bGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1v
dGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1Byb21p
c2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3lu
Y09uY2UoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwo
KSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXNldCgpOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGxldCBjb25maWcg
PSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwogICAgICAg
ICAgICAgICAgIGxldCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKICAgICAgICAgICAgICAgICBs
ZXQgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3Jk
J307Ci0gICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dl
cmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3Jr
ZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG5ldyBC
dWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1Jl
bW90ZUFQSSwgd29ya2VySW5mbywgMiwgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJv
bWlzZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5z
eW5jT25jZSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VS
TCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKICAgICAgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlc2V0KCk7CkBAIC01NjQsNyArNTY0LDcgQEAgZGVzY3JpYmUoJ0J1aWxk
Ym90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7CiAgICAg
ICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAg
ICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bh
c3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRi
b3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVB
UEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFi
bGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7CiAgICAgICAgICAgICAg
ICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJp
Z2dlcmFibGUuc3luY09uY2UoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJl
c29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90
QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAgICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOwpAQCAtNjY1LDcgKzY2NSw3IEBAIGRlc2Ny
aWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
IGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVy
cygpOwogICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwogICAg
ICAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFz
c3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0g
bmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBN
b2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgICAgIGNvbnN0
IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBsb2dnZXIpOwogICAg
ICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVu
KCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydFJl
cXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0
YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkp
OwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKQEAgLTY4OSwxMiArNjg5
LDE1IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZShNb2NrRGF0YS5y
dW5uaW5nQnVpbGQoe2J1aWxkZXJJZDogTW9ja0RhdGEuYnVpbGRlcklERm9yTmFtZSgnc29tZSBi
dWlsZGVyIDInKSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhvZCwgJ1BPU1QnKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1s0XS51cmwsICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXItMicp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s0XS5kYXRhLCB7J2lkJzogJzcwMScsICdqc29ucnBjJzogJzIuMCcsICdtZXRob2Qn
OiAnZm9yY2UnLCAncGFyYW1zJzoKICAgICAgICAgICAgICAgICAgICAgeyd3ayc6ICcxOTI3MzYn
LCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnNzAxJywgJ2ZvcmNl
c2NoZWR1bGVyJzogJ2ZvcmNlLXNvbWUtYnVpbGRlci0yJ319KTsKICAgICAgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoJ09LJyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgNik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnVybCwg
Jy9hcGkvdjIvZm9yY2VzY2hlZHVsZXJzL2ZvcmNlLXNvbWUtYnVpbGRlci0xJyk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVd
LmRhdGEsIHsnaWQnOiAnNzExJywgJ2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScs
ICdwYXJhbXMnOgpAQCAtNzcwLDcgKzc3Myw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJh
YmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tE
YXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CiAgICAgICAgICAgICAg
ICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAgICAgY29uc3Qg
d29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307
Ci0gICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2Vy
YWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtl
ckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcg
QnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tS
ZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1By
b21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUu
c3luY09uY2UoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUocmVx
dWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRh
Lm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEku
cmVzZXQoKTsKQEAgLTgzMyw3ICs4MzYsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJs
ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAg
ICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdyb3VwcyBydW5uaW5nIHNp
bXVsdGVub3VzbHknLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11
bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHknLCAoKSA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIGNv
bnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKIApAQCAtODQ4LDcgKzg1MSw3
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhT
aW5nbGVCdWlsZGVyKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tM
b2dnZXI7CiAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13
b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcmFi
bGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICAgICAg
dHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7CiAgICAg
ICAgICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4o
KCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0UmVx
dWVzdEFuZFJlc29sdmUocmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxk
ZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwogICAgICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKQEAgLTkxMiw3ICs5MTUsNyBAQCBkZXNjcmliZSgn
QnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBjb25z
dCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigp
OwogICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwogICAgICAg
ICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dv
cmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3
IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2Nr
UmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgICAgIGNvbnN0IHRy
aWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBsb2dnZXIpOwogICAgICAg
ICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgp
ID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydFJlcXVl
c3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5i
dWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwog
ICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKQEAgLTk4Miw3ICs5ODUsNyBA
QCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2lu
Z2xlQnVpbGRlcigpOwogICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9n
Z2VyOwogICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29y
a2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdn
ZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAg
ICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBsb2dn
ZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNl
cnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOwogICAgICAgICAgICAgICAg
IGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQn
LCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1
aWxkZXJzKCkpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKQEAgLTEw
MzksNyArMTA0Miw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2Vy
ID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtu
YW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAg
ICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7
CisgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2Vy
YWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtl
ckluZm8sIDIsIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2Vy
YWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEu
bW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXNldCgpOwpAQCAtMTA2NCw2ICsxMDY3LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFi
bGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLmRhdGEsIHsnaWQnOiAnNzEwJywgJ2pzb25ycGMn
OiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScsICdwYXJhbXMnOgogICAgICAgICAgICAgICAgICAg
ICB7J3drJzogJzE5MTYyMicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1p
ZCc6ICc3MTAnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Utc29tZS1idWlsZGVyLTEnfX0pOwog
ICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCkBAIC0xMDczLDcgKzEwNzcsNyBAQCBkZXNj
cmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGNv
bnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhQYXRjaEFjY2VwdGlu
Z0J1aWxkZXIoKTsKICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwog
ICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNz
d29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBC
dWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1Jl
bW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJh
YmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBsb2dnZXIpOwogICAgICAgICAgICAg
Y29uc3Qgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4g
dHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CiAgICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVz
b2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RC
dWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWlsZGVycygpKTsKICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKQEAgLTExNTIsNyArMTE1Niw3IEBAIGRlc2NyaWJl
KCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgY29uc3Qg
Y29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFBhdGNoQWNjZXB0aW5nQnVp
bGRlcigpOwogICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAg
ICAgICAgICBjb25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3Jk
OiAncGFzc3dvcmQnfTsKLSAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxk
Ym90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3Rl
QVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUg
PSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCks
IE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7CiAgICAgICAgICAgICBjb25z
dCBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmln
Z2VyYWJsZS5zeW5jT25jZSgpKTsKICAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZl
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxk
ZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOwogICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXNldCgpOwpAQCAtMTIzOCw3ICsxMjQyLDcgQEAgZGVzY3JpYmUoJ0J1
aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBjb25zdCBjb25m
aWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoUGF0Y2hBY2NlcHRpbmdCdWlsZGVy
KCk7CiAgICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKICAgICAgICAg
ICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdw
YXNzd29yZCd9OwotICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RU
cmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEks
IHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgMiwgbG9nZ2VyKTsKICAgICAgICAgICAgIGNvbnN0IHN5
bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJh
YmxlLnN5bmNPbmNlKCkpOwogICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNV
UkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlc2V0KCk7CkBAIC0xMzU2LDEzICsxMzYwLDQzOCBAQCBkZXNjcmliZSgnQnVp
bGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAnYnVpbGQt
cmVxdWVzdC1pZCc6ICc5MDAnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2Utc29tZS1idWlsZGVy
LTInfX0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIG5vdCByZXVzZSB0aGUg
cm9vdCB3aGVuIGEgYnVpbGQgcmVxdWVzdCB3aXRoIHNhbWUgY29tbWl0IHNldCBpcyBhdmFpYWxi
bGUgYnV0IHRoZSBidWlsZCByZXF1ZXN0IGhhcyBiZWVuIHNjaGVkdWxlZCcsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3Qgb24gYSBidWls
ZGVyIHdoZW4gaXRzIHJlY2VudCBidWlsZHMgaGFkIG5vdCBiZWVuIGZldGNoZWQgeWV0JywgYXN5
bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7
CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydwZW5kaW5nJywg
J3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOworICAgICAgICAgICAgYXdhaXQgTWFu
aWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9j
a1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxv
Z2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtu
YW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBj
b25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNl
cnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgMiwgbG9nZ2VyKTsK
KyAgICAgICAgICAgIHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigoKSA9PiB0cmlnZ2Vy
YWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RBbmRSZXNvbHZlKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWlsZGJvdEJ1aWxkZXJz
VVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXNldCgpOworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRh
LnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0u
dXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsK
KyAgICAgICAgICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwg
YnVpbGRSZXF1ZXN0SWQ6IDY5OCwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNjk5
LCBidWlsZFRhZzogMTI0fSldfSk7CisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdQT1NUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcvYXBp
L3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXItMScpOworCisgICAgICAgICAg
ICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0uZGF0YSwg
eydpZCc6ICc3MDAnLCAnanNvbnJwYyc6ICcyLjAnLCAnbWV0aG9kJzogJ2ZvcmNlJywgJ3BhcmFt
cyc6CisgICAgICAgICAgICAgICAgICAgIHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEwLjExIDE1
QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcwMCcsICdmb3JjZXNjaGVkdWxlcic6ICdmb3Jj
ZS1zb21lLWJ1aWxkZXItMSd9fSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLnJlc29sdmUoJ09LJyk7CisgICAgICAgICAgICBhc3NlcnQoIUJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg2OTkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBkZWZlciBzY2hl
ZHVsaW5nIHJlcXVlc3RzIGZyb20gbmV4dCBjb25maWd1cmF0aW9uIGluIHNlcXVlbnRpYWwgdGVz
dCBncm91cCB1bnRpbCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIG1lZXRzIHRoZSBpbml0aWFs
IHJlcXVlc3RlZCBpdGVyYXRpb24gY291bnQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tE
YXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAncGVuZGluZycsICdw
ZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1
aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAgICAgICAgICAgICAgIFs0MDEs
IDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpOworICAgICAgICAgICAgYXdhaXQg
TWFuaWZlc3QuZmV0Y2goKTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEu
bW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7CisgICAgICAgICAgICBjb25zdCBs
b2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7
bmFtZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAg
Y29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7
CisgICAgICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCku
dGhlbigoKSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJl
cXVlc3RBbmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0
YS5idWlsZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkp
OworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAgICBhd2Fp
dCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0Rh
dGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoe30pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnBl
bmRpbmdCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJykpOworICAgICAgICAgICAgTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnJlY2Vu
dEJ1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAw
LCBidWlsZFRhZzogMTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWls
ZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1l
dGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUgYnVpbGRlciAyJywg
MikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHt9KTsK
KworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA2KTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbNF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsK
KyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2ZSh7fSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVd
LnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZSBidWlsZGVyIDInKSk7CisgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnJlc29sdmUoe30pOworCisgICAgICAg
ICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgOCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS5tZXRob2QsICdHRVQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnVy
bCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisg
ICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDAsIGJ1
aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2Nr
RGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMSwg
YnVpbGRUYWc6IDEyNH0pXX0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgn
c29tZSBidWlsZGVyIDInLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzddLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAn
Y29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJz
LzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1
cygpLCAncGVuZGluZycpOworCisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hG
b3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMo
KS50cmlnZ2VyYWJsZU5hbWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdmYWls
ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAx
KS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgbm90IGRlZmVyIHNjaGVkdWxpbmcgcmVxdWVzdHMgZnJv
bSBuZXh0IGNvbmZpZ3VyYXRpb24gaW4gc2VxdWVudGlhbCB0ZXN0IGdyb3VwIGlmIGFsbCBpdGVy
YXRpb25zIGZvciBjdXJyZW50IGNvbmZpZ3VyYXRpb24gZmFpbGVkJywgYXN5bmMgKCkgPT4gewor
ICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAg
ICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydmYWlsZWQnLCAnZmFpbGVkJywgJ3Bl
bmRpbmcnLCAncGVuZGluZyddLCB0cnVlLAorICAgICAgICAgICAgICAgIFsnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnLCBudWxsLCBudWxsXSwKKyAgICAgICAgICAg
ICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVlbnRpYWwnLCB0cnVlKTsKKyAgICAgICAg
ICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9
IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOworICAgICAgICAg
ICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBjb25zdCB3b3Jr
ZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAg
ICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29u
ZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAy
LCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2VyYWJsZS5pbml0
U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CisgICAgICAgICAg
ICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VU
JywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RC
dWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKworICAgICAg
ICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VU
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51
cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBN
b2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicpKTsKKyAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3
YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCBNb2Nr
RGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxk
UmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICAgICAgTW9j
a0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1aWxkUmVxdWVzdElkOiA3MDEs
IGJ1aWxkVGFnOiAxMjR9KV19KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWlsZHNVcmwo
J3NvbWUgYnVpbGRlciAyJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1szXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0cy5sZW5ndGgsIDUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOworCisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRob2QsICdQT1NUJyk7CisgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmws
ICcvYXBpL3YyL2ZvcmNlc2NoZWR1bGVycy9mb3JjZS1zb21lLWJ1aWxkZXItMScpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLmRh
dGEsIHsnaWQnOiAnNzAyJywgJ2pzb25ycGMnOiAnMi4wJywgJ21ldGhvZCc6ICdmb3JjZScsICdw
YXJhbXMnOgorICAgICAgICAgICAgICAgICAgICB7J3drJzogJzE5MjczNicsICdvcyc6ICcxMC4x
MSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MDInLCAnZm9yY2VzY2hlZHVsZXInOiAn
Zm9yY2Utc29tZS1idWlsZGVyLTEnfX0pOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s0XS5yZXNvbHZlKCdPSycpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgNyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1s1XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxk
c1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzVdLnJlc29sdmUoe30pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbNl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNVcmwo
J3NvbWUgYnVpbGRlciAyJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2
XS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0cy5sZW5ndGgsIDkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29t
ZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzdd
LnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5ydW5u
aW5nQnVpbGREYXRhKHtidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzogMTI1fSksCisgICAg
ICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBi
dWlsZFJlcXVlc3RJZDogNzAxLCBidWlsZFRhZzogMTI0fSldfSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS5tZXRob2QsICdHRVQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzhdLnVybCwgTW9ja0Rh
dGEucmVjZW50QnVpbGRzVXJsKCdzb21lIGJ1aWxkZXIgMicsIDIpKTsKKyAgICAgICAgICAgIE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbOF0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAgIGF3YWl0
IHN5bmNPbmNlOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgp
Lmxlbmd0aCwgNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMCkuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJr
aXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXNVcmwo
KSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVz
KCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisKKyAgICAgICAgICAgIGF3YWl0IEJ1
aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZp
Z1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1
c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5z
dGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDEpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9i
dWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI1Jyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5k
aW5nJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG90
aGVyIGJ1aWxkIHJlcXVlc3Qgb24gYSBidWlsZGVyIGlmIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3Vw
IGlzIHNjaGVkdWxlZCBvbiBpdCBhbmQgd2FpdGluZyBmb3IgcmV0cnknLCBhc3luYyAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2ZhaWxlZCcsICdjb21wbGV0ZWQn
LCAncGVuZGluZycsICdwZW5kaW5nJ10sIHRydWUsCisgICAgICAgICAgICAgICAgWydodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcsIG51bGwsIG51bGxdLAorICAgICAg
ICAgICAgICAgIFs0MDEsIDQwMSwgNDAyLCA0MDJdLCAnc2VxdWVudGlhbCcsIHRydWUpOworICAg
ICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIpOworCisg
ICAgICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworCisgICAgICAgICAgICBjb25zdCBj
b25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwor
ICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICBj
b25zdCB3b3JrZXJJbmZvID0ge25hbWU6ICdzeW5jLXdvcmtlcicsIHBhc3N3b3JkOiAncGFzc3dv
cmQnfTsKKyAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dl
cmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3Jr
ZXJJbmZvLCAyLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3Qgc3luY09uY2UgPSB0cmlnZ2Vy
YWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7Cisg
ICAgICAgICAgICBhc3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdLCAnR0VUJywgTW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2Nr
QnVpbGRib3RCdWlsZGVycygpKTsKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsK
KworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhv
ZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbMF0udXJsLCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsK
KyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZSh7fSk7CisKKyAg
ICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdH
RVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFd
LnVybCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAg
ICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7J2J1aWxkcycgOiBb
CisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEs
IGJ1aWxkUmVxdWVzdElkOiA3MDAsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBN
b2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcw
MSwgYnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsIE1vY2tEYXRhLnBlbmRpbmdCdWlsZHNV
cmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1syXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHMubGVuZ3RoLCA0KQorICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgnc29t
ZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNd
LnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVk
QnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAwLCBidWlsZFRhZzogMTIz
fSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6
IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDEsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAgICAg
ICAgYXdhaXQgc3luY09uY2U7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ2NvbXBsZXRl
ZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEp
LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEwKS5zdGF0dXMoKSwgJ3BlbmRp
bmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEx
KS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzEyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcn
KTsKKworICAgICAgICAgICAgYXdhaXQgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUo
TW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVO
YW1lKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5n
dGgsIDgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3
MDApLnN0YXR1cygpLCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzVXJsKCks
ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygp
LCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0YXR1cygpLCAn
cGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJ
ZCg3MTIpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3QgZnJv
bSBhbm90aGVyIHRlc3QgZ3JvdXAgb24gYSBidWlsZGVyIHdoaWNoIGlzIHVzZWQgYnkgYW4gYWx0
ZXJuYXRpbmcgdGVzdCBncm91cCBuZWVkaW5nIG1vcmUgcmV0cmllcycsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAg
ICAgYXdhaXQgUHJvbWlzZS5hbGwoW01vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRl
ZCcsICdjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ2NvbXBsZXRlZCddLCB0cnVlLAorICAgICAgICAg
ICAgICAgIFsnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjEn
LCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjInLAorICAg
ICAgICAgICAgICAgICAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxk
cy8xMjMnLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQn
LF0sCisgICAgICAgICAgICAgICAgWzQwMSwgNDAyLCA0MDEsIDQwMl0sICdhbHRlcm5hdGluZycs
IHRydWUpLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3Vw
KGRiKSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2go
KTsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29u
ZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBN
b2NrTG9nZ2VyOworICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13
b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICBjb25zdCB0cmlnZ2Vy
YWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVB
UEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgMiwgbG9nZ2VyKTsKKyAgICAgICAgICAg
IGNvbnN0IHN5bmNPbmNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRy
aWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29s
dmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVp
bGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CisgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CisKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxk
c1VybCgnc29tZS1idWlsZGVyLTEnKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzBdLnJlc29sdmUoe30pOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsIE1vY2tEYXRhLnJlY2VudEJ1aWxkc1VybCgn
c29tZS1idWlsZGVyLTEnLCAyKSk7CisgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzFdLnJlc29sdmUoeydidWlsZHMnIDogWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlz
aGVkQnVpbGREYXRhKHtyZXN1bHRzOiAxLCBidWlsZFJlcXVlc3RJZDogNzAyLCBidWlsZFRhZzog
MTIzfSksCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3Vs
dHM6IDAsIGJ1aWxkUmVxdWVzdElkOiA3MDMsIGJ1aWxkVGFnOiAxMjR9KV19KTsKKworICAgICAg
ICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJs
LCBNb2NrRGF0YS5wZW5kaW5nQnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScpKTsKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSh7fSk7CisKKyAgICAgICAgICAg
IGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCkKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCBNb2Nr
RGF0YS5yZWNlbnRCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1
ZXN0SWQ6IDcwMiwgYnVpbGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZp
bmlzaGVkQnVpbGREYXRhKHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRh
ZzogMTI0fSldfSk7CisKKyAgICAgICAgICAgIGF3YWl0IHN5bmNPbmNlOworCisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdmYWls
ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAy
KS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWls
ZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJr
aXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMCkuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMSkuc3RhdHVzKCks
ICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcxMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CisKKyAgICAg
ICAgICAgIGF3YWl0IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1v
Y2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7CisKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMo
KSwgJ2ZhaWxlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDIpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVy
cy8yL2J1aWxkcy8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEwKS5zdGF0dXMoKSwgJ3BlbmRpbmcn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzExKS5z
dGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzEyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCBy
ZXF1ZXN0IGZyb20gYW5vdGhlciB0ZXN0IGdyb3VwIG9uIGEgYnVpbGRlciB3aGljaCBpcyB1c2Vk
IGJ5IGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwIG5lZWRpbmcgbW9yZSByZXRyaWVzJywgYXN5bmMg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Cisg
ICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
Y29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY29tcGxldGVkJ10sIHRydWUsCisg
ICAgICAgICAgICAgICAgWydodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVp
bGRzLzEyMScsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEy
MicsCisgICAgICAgICAgICAgICAgICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJz
LzIvYnVpbGRzLzEyMycsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVp
bGRzLzEyNCcsXSwKKyAgICAgICAgICAgICAgICBbNDAxLCA0MDEsIDQwMiwgNDAyXSwgJ3NlcXVl
bnRpYWwnLCB0cnVlKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rl
c3RHcm91cChkYiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0
LmZldGNoKCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0
U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAgICBjb25zdCBsb2dnZXIg
PSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFtZTog
J3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgY29uc3Qg
dHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIDIsIGxvZ2dlcik7CisgICAg
ICAgICAgICBjb25zdCBzeW5jT25jZSA9IHRyaWdnZXJhYmxlLmluaXRTeW5jZXJzKCkudGhlbigo
KSA9PiB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpKTsKKyAgICAgICAgICAgIGFzc2VydFJlcXVlc3RB
bmRSZXNvbHZlKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0sICdHRVQnLCBNb2NrRGF0YS5idWls
ZGJvdEJ1aWxkZXJzVVJMKCksIE1vY2tEYXRhLm1vY2tCdWlsZGJvdEJ1aWxkZXJzKCkpOworICAg
ICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworCisgICAgICAgICAgICBhd2FpdCBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsIE1vY2tEYXRhLnBlbmRp
bmdCdWlsZHNVcmwoJ3NvbWUtYnVpbGRlci0xJykpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5yZXNvbHZlKHt9KTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCBNb2NrRGF0YS5yZWNlbnRCdWls
ZHNVcmwoJ3NvbWUtYnVpbGRlci0xJywgMikpOworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1sxXS5yZXNvbHZlKHsnYnVpbGRzJyA6IFsKKyAgICAgICAgICAgICAgICBNb2NrRGF0
YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMSwgYnVpbGRSZXF1ZXN0SWQ6IDcwMiwgYnVp
bGRUYWc6IDEyM30pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmZpbmlzaGVkQnVpbGREYXRh
KHtyZXN1bHRzOiAwLCBidWlsZFJlcXVlc3RJZDogNzAzLCBidWlsZFRhZzogMTI0fSldfSk7CisK
KyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2Qs
ICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLnVybCwgTW9ja0RhdGEucGVuZGluZ0J1aWxkc1VybCgnc29tZS1idWlsZGVyLTEnKSk7Cisg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoe30pOworCisgICAg
ICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVy
bCwgTW9ja0RhdGEucmVjZW50QnVpbGRzVXJsKCdzb21lLWJ1aWxkZXItMScsIDIpKTsKKyAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7J2J1aWxkcycgOiBbCisg
ICAgICAgICAgICAgICAgTW9ja0RhdGEuZmluaXNoZWRCdWlsZERhdGEoe3Jlc3VsdHM6IDEsIGJ1
aWxkUmVxdWVzdElkOiA3MDIsIGJ1aWxkVGFnOiAxMjN9KSwKKyAgICAgICAgICAgICAgICBNb2Nr
RGF0YS5maW5pc2hlZEJ1aWxkRGF0YSh7cmVzdWx0czogMCwgYnVpbGRSZXF1ZXN0SWQ6IDcwMywg
YnVpbGRUYWc6IDEyNH0pXX0pOworCisgICAgICAgICAgICBhd2FpdCBzeW5jT25jZTsKKworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygp
LCAnZmFpbGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJz
LzIvYnVpbGRzLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDMpLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksICdodHRwOi8vYnVp
bGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTApLnN0YXR1cygpLCAncGVuZGluZycp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTEpLnN0
YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MTIpLnN0YXR1cygpLCAncGVuZGluZycpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOwor
CisgICAgICAgICAgICBhd2FpdCBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2Nr
RGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUp
OworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwg
OCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMiku
c3RhdHVzKCksICdmYWlsZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMv
YnVpbGRlcnMvMi9idWlsZHMvMTIzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgJ2h0
dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMi9idWlsZHMvMTI0Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMCkuc3RhdHVzKCksICdw
ZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcxMSkuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcxMikuc3RhdHVzKCksICdwZW5kaW5nJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5k
aW5nJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IHJldXNlIHRoZSBy
b290IHdoZW4gYSBidWlsZCByZXF1ZXN0IHdpdGggc2FtZSBjb21taXQgc2V0IGlzIGF2YWlsYWJs
ZSBidXQgdGhlIGJ1aWxkIHJlcXVlc3QgaGFzIGJlZW4gc2NoZWR1bGVkJywgYXN5bmMgKCkgPT4g
ewogICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0J1aWxkUmVxdWVzdHNXaXRoUm9v
dHMoVGVzdFNlcnZlci5kYXRhYmFzZSgpKTsKICAgICAgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZl
dGNoKCk7CiAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoUGF0Y2hBY2NlcHRpbmdCdWlsZGVyKCk7CiAgICAgICAgICAgICBjb25zdCBsb2dn
ZXIgPSBuZXcgTW9ja0xvZ2dlcjsKICAgICAgICAgICAgIGNvbnN0IHdvcmtlckluZm8gPSB7bmFt
ZTogJ3N5bmMtd29ya2VyJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgY29u
c3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHdvcmtlckluZm8sIGxvZ2dlcik7CisgICAg
ICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZp
ZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgMiwg
bG9nZ2VyKTsKICAgICAgICAgICAgIGNvbnN0IHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5p
dFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOwogICAgICAgICAg
ICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dF
VCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90
QnVpbGRlcnMoKSk7CiAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCk7CkBAIC0xNDQ5
LDcgKzE4NzgsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZp
Z1dpdGhQYXRjaEFjY2VwdGluZ0J1aWxkZXIoKTsKICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9
IG5ldyBNb2NrTG9nZ2VyOwogICAgICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAn
c3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICBjb25zdCB0
cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAg
ICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBsb2dn
ZXIpOwogICAgICAgICAgICAgY29uc3Qgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3lu
Y2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFibGUuc3luY09uY2UoKSk7CiAgICAgICAgICAgICBh
c3NlcnRSZXF1ZXN0QW5kUmVzb2x2ZShNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLCAnR0VUJywg
TW9ja0RhdGEuYnVpbGRib3RCdWlsZGVyc1VSTCgpLCBNb2NrRGF0YS5tb2NrQnVpbGRib3RCdWls
ZGVycygpKTsKICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKQEAgLTE1NzksNyAr
MjAwOCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewog
CiAgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAg
ICAgICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29y
ZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgY29uc3QgYnVpbGRib3RUcmlnZ2VyYWJs
ZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEko
KSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBidWlsZGJvdFRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmln
LCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBs
b2dnZXIpOwogICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlUHJvbWlzZSA9IGJ1aWxk
Ym90VHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IGJ1aWxkYm90VHJpZ2dlcmFi
bGUudXBkYXRlVHJpZ2dlcmFibGUoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFu
ZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxk
Ym90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRyaWdnZXJhYmxlUHJvbWlzZTsKQEAgLTE2MDYsNyArMjAzNSw3
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogCiAgICAg
ICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAg
ICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDogJ3Bh
c3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgY29uc3QgYnVpbGRib3RUcmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgd29ya2VySW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBi
dWlsZGJvdFRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCB3b3JrZXJJbmZvLCAyLCBsb2dnZXIp
OwogICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlUHJvbWlzZSA9IGJ1aWxkYm90VHJp
Z2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IGJ1aWxkYm90VHJpZ2dlcmFibGUudXBk
YXRlVHJpZ2dlcmFibGUoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEFuZFJlc29s
dmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXSwgJ0dFVCcsIE1vY2tEYXRhLmJ1aWxkYm90QnVp
bGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRyaWdnZXJhYmxlUHJvbWlzZTsKQEAgLTE2MjgsNyArMjA1Nyw3IEBAIGRl
c2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
Y29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxk
ZXIoKTsKICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwogICAgICAg
ICAgICAgY29uc3Qgd29ya2VySW5mbyA9IHtuYW1lOiAnc3luYy13b3JrZXInLCBwYXNzd29yZDog
J3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICBjb25zdCBidWlsZGJvdFRyaWdnZXJhYmxlID0gbmV3
IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2Nr
UmVtb3RlQVBJLCB3b3JrZXJJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgY29uc3QgYnVpbGRi
b3RUcmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgd29ya2VySW5mbywgMiwgbG9nZ2VyKTsKICAg
ICAgICAgICAgIGNvbnN0IGdldEJ1aWxkZXJOYW1lVG9JRE1hcFByb21pc2UgPSBidWlsZGJvdFRy
aWdnZXJhYmxlLmdldEJ1aWxkZXJOYW1lVG9JRE1hcCgpOwogICAgICAgICAgICAgYXNzZXJ0UmVx
dWVzdEFuZFJlc29sdmUoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXSwgJ0dFVCcsIE1vY2tEYXRh
LmJ1aWxkYm90QnVpbGRlcnNVUkwoKSwgTW9ja0RhdGEubW9ja0J1aWxkYm90QnVpbGRlcnMoKSk7
CiAgICAgICAgICAgICBnZXRCdWlsZGVyTmFtZVRvSURNYXBQcm9taXNlLnRoZW4oKGJ1aWxkZXJO
YW1lVG9JRE1hcCkgPT4gewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWlu
dGVncmF0aW9uLXRlc3RzLmpzCmluZGV4IDZmYzdhN2FjNWJjMzdhNDEwNDcyZmU4MmIyYzliNTQx
MGVhOGY0ZDMuLjZkYWY1MzU0ZGQyZjcyMDc0N2Y5NmQ1M2JjNGEzMWNlMDVkODgyNjcgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1i
dWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMK
QEAgLTE3Myw3ICsxNzMsNyBAQCBmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXAodGFza19uYW1lPSdj
dXN0b20gdGFzaycpIHsKICAgICBzZXQxLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQs
ICcxOTE2MjInKTsKICAgICBjb25zdCBzZXQyID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICBz
ZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTI3MzYnKTsKLSAgICByZXR1
cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRC
eUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAy
LCBbc2V0MSwgc2V0Ml0pLnRoZW4oKHRhc2spID0+IHsKKyAgICByZXR1cm4gVGVzdEdyb3VwLmNy
ZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNv
bWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCAnYWx0ZXJuYXRpbmcn
LCBbc2V0MSwgc2V0Ml0pLnRoZW4oKHRhc2spID0+IHsKICAgICAgICAgcmV0dXJuIFRlc3RHcm91
cC5maW5kQWxsQnlUYXNrKHRhc2suaWQoKSlbMF07CiAgICAgfSk7CiB9CkBAIC0xOTMsNyArMTkz
LDcgQEAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2l0aFBhdGNoKCkKICAgICBzZXQx
LnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTE2MjInLCB1cGxvYWRlZFBhdGNo
RmlsZSk7CiAgICAgY29uc3Qgc2V0MiA9IG5ldyBDdXN0b21Db21taXRTZXQ7CiAgICAgc2V0Mi5z
ZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0LCAnMTkxNjIyJyk7Ci0gICAgY29uc3QgdGFz
ayA9IGF3YWl0IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9y
bS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdy
b3VwJywgMiwgW3NldDEsIHNldDJdKTsKKyAgICBjb25zdCB0YXNrID0gYXdhaXQgVGVzdEdyb3Vw
LmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCAnYWx0ZXJuYXRp
bmcnLCBbc2V0MSwgc2V0Ml0pOwogCiAgICAgcmV0dXJuIFRlc3RHcm91cC5maW5kQWxsQnlUYXNr
KHRhc2suaWQoKSlbMF07CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgZnVuY3Rpb24gY3JlYXRlVGVz
dEdyb3VwV2loT3duZWRDb21taXQoKQogICAgIGNvbnN0IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0
U2V0OwogICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MjczNicp
OwogICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkU0pDLCAnb3duZWQtanNj
LTkxOTEnLCBudWxsLCAnMTkyNzM2Jyk7Ci0gICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRo
VGFzaygnY3VzdG9tIHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpKSwgc29tZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKS50aGVuKCh0
YXNrKSA9PiB7CisgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9tIHRh
c2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29tZVRl
c3QsICdzb21lIGdyb3VwJywgMiwgJ2FsdGVybmF0aW5nJywgW3NldDEsIHNldDJdKS50aGVuKCh0
YXNrKSA9PiB7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlk
KCkpWzBdOwogICAgIH0pOwogfQpAQCAtMTQwOSw3ICsxNDA5LDcgQEAgZGVzY3JpYmUoJ3N5bmMt
YnVpbGRib3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0
LmlzQnVpbGQoKSk7CiAgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7
CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVs
KCksICdDb21wbGV0ZWQnKTsKLSAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZFJl
cXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVp
bGRlcnMvMS9idWlsZHMvMTIzJyk7CiAgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwoYnVpbGRS
ZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CiAKICAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCmluZGV4IDg4MjJh
ZmI4YzBlZDIyMzgxZjc0MjM3NmFmYTMwNmRhMjljYzU4MjAuLjllYjhjNmM5MWFmNTBmYzIwMjA2
NmRlNWM4MmM0MWQ5YjRkNDA5ZWMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwpAQCAtMTQzLDYgKzE0Myw3IEBAIGNsYXNz
IEJ1aWxkYm90U3luY2VyIHsKIAogICAgICAgICBsZXQgaGFzUGVuZGluZ0J1aWxkc1dpdGhvdXRX
b3JrZXJOYW1lU3BlY2lmaWVkID0gZmFsc2U7CiAgICAgICAgIGxldCB1c2VkV29ya2VycyA9IG5l
dyBTZXQ7CisgICAgICAgIGNvbnN0IGxhdGVzdEVudHJ5QnlXb3JrZXJOYW1lID0gbmV3IE1hcDsK
ICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdGhpcy5fZW50cnlMaXN0KSB7CiAgICAgICAgICAg
ICBsZXQgZW50cnlQcmV2ZW50c05ld1JlcXVlc3QgPSBlbnRyeS5pc1BlbmRpbmcoKTsKICAgICAg
ICAgICAgIGlmIChlbnRyeS5pc0luUHJvZ3Jlc3MoKSkgewpAQCAtMTU1LDYgKzE1NiwyOCBAQCBj
bGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdCdWls
ZHNXaXRob3V0V29ya2VyTmFtZVNwZWNpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgdXNl
ZFdvcmtlcnMuYWRkKGVudHJ5Lndvcmtlck5hbWUoKSk7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIWVudHJ5LmlzUGVuZGluZygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoZW50cnkud29ya2VyTmFtZSgpLCAnTm9uLXBlbmRpbmcgZW50cnkgbXVzdCBoYXZlIGEg
d29ya2VyIG5hbWUnKTsKKyAgICAgICAgICAgICAgICBjb25zdCBsYXN0RmluaXNoZWRFbnRyeSA9
IGxhdGVzdEVudHJ5QnlXb3JrZXJOYW1lLmdldChlbnRyeS53b3JrZXJOYW1lKCkpOworICAgICAg
ICAgICAgICAgIGlmICghbGFzdEZpbmlzaGVkRW50cnkgfHwgK2xhc3RGaW5pc2hlZEVudHJ5LmJ1
aWxkVGFnKCkgPCArZW50cnkuYnVpbGRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgbGF0ZXN0
RW50cnlCeVdvcmtlck5hbWUuc2V0KGVudHJ5Lndvcmtlck5hbWUoKSwgZW50cnkpCisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBbbmFtZSwgZW50cnldIG9mIGxh
dGVzdEVudHJ5QnlXb3JrZXJOYW1lLmVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgbGF0
ZXN0QWN0aXZlQnVpbGRSZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKGVudHJ5LmJ1aWxk
UmVxdWVzdElkKCkpOworICAgICAgICAgICAgaWYgKCFsYXRlc3RBY3RpdmVCdWlsZFJlcXVlc3Qp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobGF0ZXN0QWN0aXZl
QnVpbGRSZXF1ZXN0LnRlc3RHcm91cElkKCkgPT0gbmV3UmVxdWVzdC50ZXN0R3JvdXBJZCgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0g
bGF0ZXN0QWN0aXZlQnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpOworICAgICAgICAgICAgaWYgKCF0
ZXN0R3JvdXApIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVxdWVzdCBtaWdodCBiZSBmb3Ig
YSB2ZXJ5IG9sZCB0ZXN0IGdyb3VwIHdlIGRpZG4ndCBmZXRjaC4KKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZXN0R3JvdXAuaGFzRmlu
aXNoZWQoKSAmJiAhdGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHVzZWRXb3JrZXJzLmFkZChuYW1lKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghdGhpcy5fd29ya2VyTGlzdCB8fCBoYXNQZW5kaW5nQnVpbGRz
V2l0aG91dFdvcmtlck5hbWVTcGVjaWZpZWQpIHsKQEAgLTE5Miw3ICsyMTUsNyBAQCBjbGFzcyBC
dWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgoIXRoaXMuX2xhc3RDb21w
bGV0ZWRCdWlsZCB8fCB0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQuYnVpbGRUYWcoKSA8IGVudHJ5
LmJ1aWxkVGFnKCkpICYmIGVudHJ5Lmhhc0ZpbmlzaGVkKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9sYXN0Q29tcGxldGVkQnVpbGQgPSBlbnRyeTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgbGV0IGVudHJ5TGlzdCA9
IFtdOwogICAgICAgICAgICAgICAgIGZvciAobGV0IGlkIGluIGVudHJ5QnlSZXF1ZXN0KQogICAg
ICAgICAgICAgICAgICAgICBlbnRyeUxpc3QucHVzaChlbnRyeUJ5UmVxdWVzdFtpZF0pOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdn
ZXJhYmxlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRy
aWdnZXJhYmxlLmpzCmluZGV4IGQ2MmNkZTAyOWMxNzc5MTczYzVmMjFlZDg2YWFmMWExYzAzZGE4
YTIuLmVjODc0N2I5MDFhMGVkMzY3MGQxOWE2NTMwMzVmZmRjMjBmNzg1N2YgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC10cmlnZ2VyYWJsZS5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dl
cmFibGUuanMKQEAgLTcsNyArNyw3IEBAIHJlcXVpcmUoJy4vdjMtbW9kZWxzLmpzJyk7CiBsZXQg
QnVpbGRib3RTeW5jZXIgPSByZXF1aXJlKCcuL2J1aWxkYm90LXN5bmNlcicpLkJ1aWxkYm90U3lu
Y2VyOwogCiBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKLSAgICBjb25zdHJ1Y3Rvcihjb25m
aWcsIHJlbW90ZSwgYnVpbGRib3RSZW1vdGUsIHdvcmtlckluZm8sIGxvZ2dlcikKKyAgICBjb25z
dHJ1Y3Rvcihjb25maWcsIHJlbW90ZSwgYnVpbGRib3RSZW1vdGUsIHdvcmtlckluZm8sIG1heFJl
dHJ5RmFjdG9yLCBsb2dnZXIpCiAgICAgewogICAgICAgICB0aGlzLl9uYW1lID0gY29uZmlnLnRy
aWdnZXJhYmxlTmFtZTsKICAgICAgICAgYXNzZXJ0KHR5cGVvZih0aGlzLl9uYW1lKSA9PSAnc3Ry
aW5nJywgJ3RyaWdnZXJhYmxlTmFtZSBtdXN0IGJlIHNwZWNpZmllZCcpOwpAQCAtMjUsNiArMjUs
NyBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKIAogICAgICAgICB0aGlzLl9zeW5jZXJz
ID0gbnVsbDsKICAgICAgICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2VyIHx8IHtsb2c6ICgpID0+IHsg
fSwgZXJyb3I6ICgpID0+IHsgfX07CisgICAgICAgIHRoaXMuX21heFJldHJ5RmFjdG9yID0gbWF4
UmV0cnlGYWN0b3I7CiAgICAgfQogCiAgICAgZ2V0QnVpbGRlck5hbWVUb0lETWFwKCkKQEAgLTg1
LDEzICs4NiwyMiBAQCBjbGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgY29uc3Qg
dmFsaWRSZXF1ZXN0cyA9IHRoaXMuX3ZhbGlkYXRlUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cyk7CiAg
ICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHNCeUdyb3VwID0gQnVpbGRib3RUcmlnZ2VyYWJsZS5f
dGVzdEdyb3VwTWFwRm9yQnVpbGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKICAgICAgICAgbGV0
IHVwZGF0ZXMgPSBhd2FpdCB0aGlzLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXF1
ZXN0c0J5R3JvdXApOwotICAgICAgICBsZXQgcm9vdFJldXNlVXBkYXRlcyA9IHt9CisgICAgICAg
IGxldCByb290UmV1c2VVcGRhdGVzID0geyB9OwogICAgICAgICB0aGlzLl9sb2dnZXIubG9nKCdT
Y2hlZHVsaW5nIGJ1aWxkcycpOwogICAgICAgICBjb25zdCB0ZXN0R3JvdXBMaXN0ID0gQXJyYXku
ZnJvbShidWlsZFJlcXVlc3RzQnlHcm91cC52YWx1ZXMoKSkuc29ydChmdW5jdGlvbiAoYSwgYikg
eyByZXR1cm4gYS5ncm91cE9yZGVyIC0gYi5ncm91cE9yZGVyOyB9KTsKIAotICAgICAgICBhd2Fp
dCBQcm9taXNlLmFsbCh0ZXN0R3JvdXBMaXN0Lm1hcCgoZ3JvdXApID0+IFtncm91cCwgdGhpcy5f
bmV4dFJlcXVlc3RJbkdyb3VwKGdyb3VwLCB1cGRhdGVzKV0pCi0gICAgICAgICAgICAuZmlsdGVy
KChbZ3JvdXAsIHJlcXVlc3RdKSA9PiB2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0KSkKLSAgICAg
ICAgICAgIC5tYXAoKFtncm91cCwgcmVxdWVzdF0pID0+IHRoaXMuX3NjaGVkdWxlUmVxdWVzdChn
cm91cCwgcmVxdWVzdCwgcm9vdFJldXNlVXBkYXRlcykpKTsKKyAgICAgICAgYXdhaXQgUHJvbWlz
ZS5hbGwoQXJyYXkuZnJvbShidWlsZFJlcXVlc3RzQnlHcm91cC5rZXlzKCkpLm1hcCh0ZXN0R3Jv
dXBJZCA9PiBUZXN0R3JvdXAuZmV0Y2hCeUlkKHRlc3RHcm91cElkLCAvKiBpZ25vcmVDYWNoZSAq
LyB0cnVlKSkpOworICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRlc3RHcm91cExpc3QpIHsK
KyAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLl9uZXh0UmVxdWVzdEluR3JvdXAoZ3Jv
dXAsIHVwZGF0ZXMpOworICAgICAgICAgICAgaWYgKCF2YWxpZFJlcXVlc3RzLmhhcyhyZXF1ZXN0
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY29uc3Qgc2hvdWxk
RGVmZXIgPSB0aGlzLl9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0UmVxdWVzdEZvck5ld0NvbW1p
dFNldChyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmIChzaG91bGREZWZlcikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9sb2dnZXIubG9nKGBEZWZlciBzY2hlZHVsaW5nIGJ1aWxkIHJlcXVlc3QgIiR7
cmVxdWVzdC5pZCgpfSIgdW50aWwgY29tcGxldGVkIGJ1aWxkIHJlcXVlc3RzIGZvciBwcmV2aW91
cyBjb25maWd1cmF0aW9uIG1lZXQgdGhlIGV4cGVjdGF0aW9uIG9yIGV4aGF1c3QgcmV0cnkuYCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2NoZWR1bGVS
ZXF1ZXN0KGdyb3VwLCByZXF1ZXN0LCByb290UmV1c2VVcGRhdGVzKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFB1bGwgYWxsIGJ1aWxkYm90cyBmb3IgdGhlIHNlY29uZCB0aW1lIHNpbmNlIHRo
ZSBwcmV2aW91cyBzdGVwIG1heSBoYXZlIHNjaGVkdWxlZCBtb3JlIGJ1aWxkcwogICAgICAgICB1
cGRhdGVzID0gYXdhaXQgdGhpcy5fcHVsbEJ1aWxkYm90T25BbGxTeW5jZXJzKGJ1aWxkUmVxdWVz
dHNCeUdyb3VwKTsKQEAgLTEyMywxMSArMTMzLDQxIEBAIGNsYXNzIEJ1aWxkYm90VHJpZ2dlcmFi
bGUgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGF3
YWl0IHRoaXMuX3NjaGVkdWxlUmVxdWVzdElmV29ya2VySXNBdmFpbGFibGUoYnVpbGRSZXF1ZXN0
LCB0ZXN0R3JvdXAucmVxdWVzdHMsCisgICAgICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZVJlcXVl
c3RJZldvcmtlcklzQXZhaWxhYmxlKGJ1aWxkUmVxdWVzdCwgdGVzdEdyb3VwLnJlcXVlc3RzLAog
ICAgICAgICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSA/IHRlc3RHcm91cC5idWlsZFN5bmNl
ciA6IHRlc3RHcm91cC50ZXN0U3luY2VyLAogICAgICAgICAgICAgYnVpbGRSZXF1ZXN0LmlzQnVp
bGQoKSA/IHRlc3RHcm91cC5idWlsZFdvcmtlck5hbWUgOiB0ZXN0R3JvdXAudGVzdFdvcmtlck5h
bWUpOwogICAgIH0KIAorICAgIF9zaG91bGREZWZlclNlcXVlbnRpYWxUZXN0UmVxdWVzdEZvck5l
d0NvbW1pdFNldChidWlsZFJlcXVlc3QpCisgICAgeworICAgICAgICBpZiAoYnVpbGRSZXF1ZXN0
LmlzQnVpbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCB0
ZXN0R3JvdXAgPSBidWlsZFJlcXVlc3QudGVzdEdyb3VwKCk7CisgICAgICAgIGlmICh0ZXN0R3Jv
dXAucmVwZXRpdGlvblR5cGUoKSAhPSAnc2VxdWVudGlhbCcpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaWYgKHRlc3RHcm91cC5pc0ZpcnN0VGVzdFJlcXVlc3QoYnVpbGRS
ZXF1ZXN0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBwcmVj
ZWRpbmdCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAucHJlY2VkaW5nQnVpbGRSZXF1ZXN0KGJ1aWxk
UmVxdWVzdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByZWNlZGluZ0J1aWxkUmVxdWVzdCAm
JiAhcHJlY2VkaW5nQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisKKyAgICAgICAgY29uc3QgcHJl
dmlvdXNDb21taXRTZXQgPSBwcmVjZWRpbmdCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCkKKyAgICAg
ICAgaWYgKHByZXZpb3VzQ29tbWl0U2V0ID09PSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgYWxsUmVxdWVzdHNGYWls
ZWRGb3JQcmV2aW91c0NvbW1pdFNldCA9IHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNvbW1pdFNldChw
cmV2aW91c0NvbW1pdFNldCkuZXZlcnkocmVxdWVzdCA9PiAhcmVxdWVzdC5pc1Rlc3QoKSB8fCBy
ZXF1ZXN0Lmhhc0ZhaWxlZCgpKTsKKyAgICAgICAgaWYgKGFsbFJlcXVlc3RzRmFpbGVkRm9yUHJl
dmlvdXNDb21taXRTZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29u
c3QgcmV0cnlMaW1pdCA9IHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgKiB0aGlz
Ll9tYXhSZXRyeUZhY3RvcjsKKyAgICAgICAgaWYgKHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnRG
b3JDb21taXRTZXQocHJldmlvdXNDb21taXRTZXQpID49IHJldHJ5TGltaXQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRlc3RHcm91cC5pbml0aWFsUmVwZXRp
dGlvbkNvdW50KCkgPiB0ZXN0R3JvdXAuc3VjY2Vzc2Z1bFRlc3RDb3VudChwcmV2aW91c0NvbW1p
dFNldCk7CisgICAgfQorCiAgICAgX3ZhbGlkYXRlUmVxdWVzdHMoYnVpbGRSZXF1ZXN0cykKICAg
ICB7CiAgICAgICAgIGNvbnN0IHRlc3RQbGF0Zm9ybVBhaXJzID0ge307CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVy
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL21lYXN1cmVtZW50LXNldC1h
bmFseXplci5qcwppbmRleCBhYjg2YTFkNGUzMzc5NGJlNzhjZmJiZTBmNzY1OTllYTg1N2JlYmFm
Li5jYzY1MGNhOTQ1ZGJhZWRmOWI5NWQ0ZmUwZDljYTE1ODc5MjgyYWUyIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVy
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9tZWFzdXJlbWVudC1z
ZXQtYW5hbHl6ZXIuanMKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBNZWFzdXJlbWVudFNldEFu
YWx5emVyIHsKICAgICAgICAgY29uc3Qgc3RhcnRDb21taXRTZXQgPSByYW5nZVdpdGhNb3N0U2ln
bmlmaWNhbnRDaGFuZ2Uuc3RhcnRQb2ludC5jb21taXRTZXQoKTsKICAgICAgICAgY29uc3QgZW5k
Q29tbWl0U2V0ID0gcmFuZ2VXaXRoTW9zdFNpZ25pZmljYW50Q2hhbmdlLmVuZFBvaW50LmNvbW1p
dFNldCgpOwogICAgICAgICBjb25zdCBzdW1tYXJ5ID0gYFBvdGVudGlhbCAke3JhbmdlV2l0aE1v
c3RTaWduaWZpY2FudENoYW5nZS52YWx1ZUNoYW5nZVN1bW1hcnkuY2hhbmdlTGFiZWx9IG9uICR7
cGxhdGZvcm0ubmFtZSgpfSBiZXR3ZWVuICR7Q29tbWl0U2V0LmRpZmYoc3RhcnRDb21taXRTZXQs
IGVuZENvbW1pdFNldCl9YDsKLSAgICAgICAgY29uc3QgY29uZmlybWluZ1Rhc2tBcmd1bWVudHMg
PSBUcmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihtZXRyaWMudGVzdCgpLCBwbGF0
Zm9ybSkgPyBbJ0NvbmZpcm0nLCA0LCB0cnVlXSA6IFtdOworICAgICAgICBjb25zdCBjb25maXJt
aW5nVGFza0FyZ3VtZW50cyA9IFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKG1l
dHJpYy50ZXN0KCksIHBsYXRmb3JtKSA/IFsnQ29uZmlybScsIDQsICdhbHRlcm5hdGluZycsIHRy
dWVdIDogW107CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBpdGVyYXRpb24gY291bnQgc2hvdWxk
IGJlIHNtYXJ0ZXIgdGhhbiBoYXJkLWNvZGluZy4KICAgICAgICAgY29uc3QgYW5hbHlzaXNUYXNr
ID0gYXdhaXQgQW5hbHlzaXNUYXNrLmNyZWF0ZShzdW1tYXJ5LCByYW5nZVdpdGhNb3N0U2lnbmlm
aWNhbnRDaGFuZ2Uuc3RhcnRQb2ludCwKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDViYTIyNDVjYjAyYWU0ZTkzMzEyNmI3ODk2
YTZiMjhhMzIxZTQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQt
cmVxdWVzdHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1hc3luYyBmdW5jdGlv
biBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVx
dWVzdHModGVzdEdyb3VwcywgbWF4aW11bVJldHJ5RmFjdG9yKQotewotICAgIGZvciAoY29uc3Qg
dGVzdEdyb3VwIG9mIHRlc3RHcm91cHMpIHsKLSAgICAgICAgaWYgKCF0ZXN0R3JvdXAubWF5TmVl
ZE1vcmVSZXF1ZXN0cygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHRl
c3RHcm91cC5pc0hpZGRlbigpKSB7Ci0gICAgICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuY2xlYXJN
YXlOZWVkTW9yZUJ1aWxkUmVxdWVzdHMoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgbGV0IG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA9IDA7Ci0gICAg
ICAgIGxldCBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ID0gdHJ1ZTsK
LSAgICAgICAgbGV0IGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgPSBmYWxzZTsKLSAgICAgICAg
Zm9yIChjb25zdCBjb21taXRTZXQgb2YgdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKSkg
ewotICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9IHRlc3RHcm91cC5yZXF1ZXN0c0Zv
ckNvbW1pdFNldChjb21taXRTZXQpLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiBidWlsZFJlcXVl
c3QuaXNUZXN0KCkpOwotCi0gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRCdWlsZFJlcXVlc3RD
b3VudCA9IGJ1aWxkUmVxdWVzdHMuZmlsdGVyKChidWlsZFJlcXVlc3QpID0+IGJ1aWxkUmVxdWVz
dC5oYXNDb21wbGV0ZWQoKSkubGVuZ3RoOwotICAgICAgICAgICAgaWYgKCFjb21wbGV0ZWRCdWls
ZFJlcXVlc3RDb3VudCkKLSAgICAgICAgICAgICAgICBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RG
b3JFYWNoQ29tbWl0U2V0ID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIGhhc0NvbXBsZXRlZEJ1aWxk
UmVxdWVzdEZvckVhY2hDb21taXRTZXQgJj0gKGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID4g
MCk7Ci0gICAgICAgICAgICBjb25zdCB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBidWls
ZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiAhYnVpbGRSZXF1ZXN0Lmhhc0Zpbmlz
aGVkKCkpLmxlbmd0aDsKLSAgICAgICAgICAgIC8vICJwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3Vu
dCIgbWlnaHQgYmUgbGFyZ2VyIHRoYW4gdGVzdEdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSBhcyB1c2VyIG1heSBhZGQgYnVpbGQgcmVxdWVzdHMgbWFudWFsbHkuCi0gICAgICAgICAgICBj
b25zdCBwb3RlbnRpYWxseVN1Y2Nlc3NmdWxDb3VudCA9IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENv
dW50ICsgdW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50OwotICAgICAgICAgICAgbWF4TWlzc2lu
Z0J1aWxkUmVxdWVzdENvdW50ID0gTWF0aC5tYXgobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50
LCB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpIC0gcG90ZW50aWFsbHlTdWNjZXNz
ZnVsQ291bnQpOwotCi0gICAgICAgICAgICBpZiAodW5maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50
KQotICAgICAgICAgICAgICAgIGhhc1VuZmluaXNoZWRCdWlsZFJlcXVlc3QgPSB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGNvbnN0IHdpbGxFeGNlZWRNYXhpbXVtUmV0cnkgPSB0ZXN0R3JvdXAu
cmVwZXRpdGlvbkNvdW50KCkgKyBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQgPiBtYXhpbXVt
UmV0cnlGYWN0b3IgKiB0ZXN0R3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpOwotCi0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCA8PSB0ZXN0R3Jv
dXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpKTsKLSAgICAgICAgaWYgKG1heE1pc3NpbmdCdWls
ZFJlcXVlc3RDb3VudCAmJiAhd2lsbEV4Y2VlZE1heGltdW1SZXRyeSAmJiBoYXNVbmZpbmlzaGVk
QnVpbGRSZXF1ZXN0ICYmICFoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKG1heE1pc3NpbmdCdWlsZFJl
cXVlc3RDb3VudCAmJiAhd2lsbEV4Y2VlZE1heGltdW1SZXRyeSAmJiBoYXNDb21wbGV0ZWRCdWls
ZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0KSB7Ci0gICAgICAgICAgICBhd2FpdCB0ZXN0R3JvdXAu
YWRkTW9yZUJ1aWxkUmVxdWVzdHMobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50KTsKLSAgICAg
ICAgICAgIGNvbnN0IGFuYWx5c2lzVGFzayA9IGF3YWl0IHRlc3RHcm91cC5mZXRjaFRhc2soKTsK
LSAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBZGRlZCAke21heE1pc3NpbmdCdWlsZFJlcXVlc3RD
b3VudH0gYnVpbGQgcmVxdWVzdChzKSB0byAiJHt0ZXN0R3JvdXAubmFtZSgpfSIgb2YgYW5hbHlz
aXMgdGFzazogJHthbmFseXNpc1Rhc2suaWQoKX0gLSAiJHthbmFseXNpc1Rhc2submFtZSgpfSJg
KTsKLSAgICAgICAgfQotICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuY2xlYXJNYXlOZWVkTW9yZUJ1
aWxkUmVxdWVzdHMoKTsKLSAgICB9Ci19Ci0KLWlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZp
bmVkJykKLSAgICBtb2R1bGUuZXhwb3J0cy5jcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMgPSBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1
ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHM7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1h
bmFseXNpcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMu
anMKaW5kZXggZDYwZjgxZTEyYmQ4NzdiN2U1MDZjMGVkMDM2NWJkY2Y3MDU1ODg4Zi4uMjU3M2Rh
ZjJjNDg1MWUzYTFkN2QxNmMzMDkwY2QzNzI5MzRmZjQ1YyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzCkBAIC02LDcgKzYsNiBAQCBjb25zdCBS
ZW1vdGVBUEkgPSByZXF1aXJlKCcuL2pzL3JlbW90ZS5qcycpLlJlbW90ZUFQSTsKIGNvbnN0IE1l
YXN1cmVtZW50U2V0QW5hbHl6ZXIgPSByZXF1aXJlKCcuL2pzL21lYXN1cmVtZW50LXNldC1hbmFs
eXplci5qcycpLk1lYXN1cmVtZW50U2V0QW5hbHl6ZXI7CiBjb25zdCBBbmFseXNpc1Jlc3VsdHNO
b3RpZmllciA9IHJlcXVpcmUoJy4vanMvYW5hbHlzaXMtcmVzdWx0cy1ub3RpZmllci5qcycpLkFu
YWx5c2lzUmVzdWx0c05vdGlmaWVyOwogY29uc3QgU3VicHJvY2VzcyA9IHJlcXVpcmUoJy4vanMv
c3VicHJvY2Vzcy5qcycpLlN1YnByb2Nlc3M7Ci1jb25zdCBjcmVhdGVBZGRpdGlvbmFsQnVpbGRS
ZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMgPSByZXF1aXJlKCcuL2pzL3Jl
dHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cycpLmNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3Rz
Rm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsKIHJlcXVpcmUoJy4vanMvdjMtbW9kZWxz
LmpzJyk7CiBnbG9iYWwuUHJpdmlsZWdlZEFQSSA9IHJlcXVpcmUoJy4vanMvcHJpdmlsZWdlZC1h
cGkuanMnKS5Qcml2aWxlZ2VkQVBJOwogCkBAIC00OSwxMiArNDgsMjYgQEAgYXN5bmMgZnVuY3Rp
b24gYW5hbHlzaXNMb29wKG9wdGlvbnMpCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0
byBhbmFseXplIG1lYXN1cmVtZW50IHNldHMgZHVlIHRvICR7ZXJyb3J9YCk7CiAgICAgfQogCisg
ICAgY29uc3QgbWF4UmV0cnlGYWN0b3IgPSBvcHRpb25zWyctLW1heC1yZXRyeS1mYWN0b3InXTsK
KyAgICBjb25zdCB0ZXN0R3JvdXBzTWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGF3YWl0IFRlc3RHcm91
cC5mZXRjaEFsbFRoYXRNYXlOZWVkTW9yZVJlcXVlc3RzKCk7CiAgICAgdHJ5IHsKLSAgICAgICAg
Y29uc3Qgbm90aWZpY2F0aW9uQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0
aW9uc1snLS1ub3RpZmljYXRpb24tY29uZmlnLWpzb24nXSwgJ3V0Zi04JykpOwotICAgICAgICBj
b25zdCBtYXhpbXVtUmV0cnlGYWN0b3IgPSBvcHRpb25zWyctLW1heC1yZXRyeS1mYWN0b3InXTsK
LSAgICAgICAgY29uc3QgdGVzdEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMgPSBhd2FpdCBUZXN0
R3JvdXAuZmV0Y2hBbGxUaGF0TWF5TmVlZE1vcmVSZXF1ZXN0cygpOwotICAgICAgICBhd2FpdCBj
cmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVz
dHModGVzdEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMsIG1heGltdW1SZXRyeUZhY3Rvcik7Cisg
ICAgICAgIGZvciAoY29uc3QgdGVzdEdyb3VwIG9mIHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVl
c3RzKSB7CisgICAgICAgICAgICBjb25zdCByZXRyeUNvdW50ID0gYXdhaXQgdGVzdEdyb3VwLnNj
aGVkdWxlTW9yZVJlcXVlc3RzT3JDbGVhckZsYWcobWF4UmV0cnlGYWN0b3IpOworICAgICAgICAg
ICAgaWYgKCFyZXRyeUNvdW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgY29uc3QgYW5hbHlzaXNUYXNrID0gYXdhaXQgdGVzdEdyb3VwLmZldGNoVGFzaygpOworICAg
ICAgICAgICAgY29uc29sZS5sb2coYEFkZGVkICR7cmV0cnlDb3VudH0gYnVpbGQgcmVxdWVzdChz
KSB0byAiJHt0ZXN0R3JvdXAubmFtZSgpfSIgb2YgYW5hbHlzaXMgdGFzazogJHthbmFseXNpc1Rh
c2suaWQoKX0gLSAiJHthbmFseXNpc1Rhc2submFtZSgpfSJgKTsKKyAgICAgICAgfQorICAgIH0g
Y2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICBp
ZiAodHlwZW9mKGVycm9yLnN0YWNrKSA9PSAnc3RyaW5nJykgeworICAgICAgICAgICAgZm9yIChs
ZXQgbGluZSBvZiBlcnJvci5zdGFjay5zcGxpdCgnXG4nKSkKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKGxpbmUpOworICAgICAgICB9CisgICAgfQogCisgICAgdHJ5IHsKKyAgICAgICAg
Y29uc3Qgbm90aWZpY2F0aW9uQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0
aW9uc1snLS1ub3RpZmljYXRpb24tY29uZmlnLWpzb24nXSwgJ3V0Zi04JykpOwogICAgICAgICBj
b25zdCB0ZXN0R3JvdXBzTmVlZE5vdGlmaWNhdGlvbiA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEFs
bFdpdGhOb3RpZmljYXRpb25SZWFkeSgpOwogICAgICAgICBjb25zdCBub3RpZmljYXRpb25SZW1v
dGVBUEkgPSBuZXcgUmVtb3RlQVBJKG5vdGlmaWNhdGlvbkNvbmZpZy5ub3RpZmljYXRpb25TZXJ2
ZXJDb25maWcpOwogICAgICAgICBjb25zdCBub3RpZmljYXRpb25NZXNzYWdlQ29uZmlnID0gbm90
aWZpY2F0aW9uQ29uZmlnLm5vdGlmaWNhdGlvbk1lc3NhZ2VDb25maWc7CkBAIC02Myw3ICs3Niw3
IEBAIGFzeW5jIGZ1bmN0aW9uIGFuYWx5c2lzTG9vcChvcHRpb25zKQogCiAgICAgICAgIGF3YWl0
IG5vdGlmaWVyLnNlbmROb3RpZmljYXRpb25zRm9yVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzTmVlZE5v
dGlmaWNhdGlvbik7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgY29uc29sZS5lcnJv
cihgRmFpbGVkIHRvIHJldHJ5IHRlc3QgZ3JvdXBzIGR1ZSB0byAke2Vycm9yfWApOworICAgICAg
ICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gc2VuZCBub3RpZmljYXRpb24gZm9yIHRlc3QgZ3Jv
dXBzIGR1ZSB0byAke2Vycm9yfWApOwogICAgIH0KIAogICAgIGNvbnNvbGUubG9nKGBTbGVlcGlu
ZyBmb3IgJHtzZWNvbmRzVG9TbGVlcH0gc2Vjb25kcy5gKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90LmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVpbGRib3QuanMKaW5kZXggNmYzNTBlYjI0ODJjZjZkMTQ4
Y2E4NDE0MGEyY2QwNGQ4ZTMwNmU0Mi4uNzBhMmE0ZTNkNDIzNTBiZDJmYTFiMzQzMjg3NGRmNjg1
NWVjNTNkNiAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMt
YnVpbGRib3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtYnVp
bGRib3QuanMKQEAgLTEyLDYgKzEyLDcgQEAgZnVuY3Rpb24gbWFpbihhcmd2KQogICAgICAgICB7
bmFtZTogJy0tc2VydmVyLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ6IHRydWV9LAogICAgICAgICB7
bmFtZTogJy0tYnVpbGRib3QtY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0sCiAgICAgICAg
IHtuYW1lOiAnLS1zZWNvbmRzLXRvLXNsZWVwJywgdHlwZTogcGFyc2VGbG9hdCwgZGVmYXVsdDog
MTIwfSwKKyAgICAgICAge25hbWU6ICctLW1heC1yZXRyeS1mYWN0b3InLCB0eXBlOiBwYXJzZUZs
b2F0LCBkZWZhdWx0OiAzfSwKICAgICBdKTsKICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI0LDYgKzI1LDcgQEAgZnVuY3Rpb24gc3luY0xvb3Aob3B0aW9ucykKICAgICBs
ZXQgc2VydmVyQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9uc1snLS1z
ZXJ2ZXItY29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7CiAgICAgbGV0IGJ1aWxkYm90Q29uZmlnID0g
SlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9uc1snLS1idWlsZGJvdC1jb25maWctanNv
biddLCAndXRmOCcpKTsKICAgICBsZXQgYnVpbGRib3RSZW1vdGUgPSBuZXcgUmVtb3RlQVBJKGJ1
aWxkYm90Q29uZmlnLnNlcnZlcik7CisgICAgY29uc3QgbWF4UmV0cnlGYWN0b3IgPSBvcHRpb25z
WyctLW1heC1yZXRyeS1mYWN0b3InXTsKIAogICAgIC8vIHYzIG1vZGVscyB1c2UgdGhlIGdsb2Jh
bCBSZW1vdGVBUEkgdG8gYWNjZXNzIHRoZSBwZXJmIGRhc2hib2FyZC4KICAgICBnbG9iYWwuUmVt
b3RlQVBJID0gbmV3IFJlbW90ZUFQSShzZXJ2ZXJDb25maWcuc2VydmVyKTsKQEAgLTMxLDcgKzMz
LDcgQEAgZnVuY3Rpb24gc3luY0xvb3Aob3B0aW9ucykKICAgICBjb25zb2xlLmxvZyhgRmV0Y2hp
bmcgdGhlIG1hbmlmZXN0Li4uYCk7CiAKICAgICBjb25zdCBtYWtlVHJpZ2dlcmFibGUgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShidWlsZGJv
dENvbmZpZywgZ2xvYmFsLlJlbW90ZUFQSSwgYnVpbGRib3RSZW1vdGUsIHNlcnZlckNvbmZpZy53
b3JrZXIsIGNvbnNvbGUpCisgICAgICAgIHJldHVybiBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShi
dWlsZGJvdENvbmZpZywgZ2xvYmFsLlJlbW90ZUFQSSwgYnVpbGRib3RSZW1vdGUsIHNlcnZlckNv
bmZpZy53b3JrZXIsIG1heFJldHJ5RmFjdG9yLCBjb25zb2xlKQogICAgIH07CiAKICAgICBNYW5p
ZmVzdC5mZXRjaCgpLnRoZW4oKCkgPT4gewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMKaW5kZXggOGQyOGFj
NGZhZmM0OGVhYTE3ODJjNWRmMWVhYjc3NzA5MmQ4N2YxNC4uMmU2NzBiMDc5NTExNGViNjc1NTI1
YzJkZjdiZWExMzhkMzM4ZTdjMCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCkBAIC0zMDcsNyArMzA3
LDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKIAogICAgICAgICBpdCgnc2hv
dWxkIGNyZWF0ZSBhbmFseXNpcyB0YXNrIHdpdGggY29uZmlybWluZyByZXBldGl0aW9uIGNvdW50
IHNwZWNpZmllZCcsIGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IFtzdGFydFBvaW50
LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQb2ludHMoKTsKLSAgICAgICAgICAgIEFuYWx5
c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0n
LCA0LCB0cnVlKTsKKyAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBz
dGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCB0cnVlKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0
ZS1jc3JmLXRva2VuJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKQEAgLTMx
OCw3ICszMTgsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywgKCkgPT4gewogICAgICAgICAg
ICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlz
aXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7
Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAn
Y29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsCisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29u
ZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNOb3RpZmljYXRpb246IHRydWUsIHJlcGV0
aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBl
bmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgdG9rZW46ICdhYmMnLCByZXZpc2lv
blNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1y
ZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9LAogICAgICAgICAg
ICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAnaW9zLXJldmlzaW9uLTEnLCBvd25lclJl
dmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAtMzI5LDcgKzMyOSw3IEBAIGRlc2NyaWJl
KCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW5h
bHlzaXMgdGFzayBhbmQgdGVzdCBncm91cHMgd2l0aCAibmVlZHNOb3RpZmljYXRpb24iIHNldCB0
byBmYWxzZSBpZiBzcGVjaWZpZWQgaW4gY3JlYXRpb24nLCBhc3luYyAoKSA9PiB7CiAgICAgICAg
ICAgICBjb25zdCBbc3RhcnRQb2ludCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRz
KCk7Ci0gICAgICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2lu
dCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgZmFsc2UpOworICAgICAgICAgICAgQW5hbHlzaXNU
YXNrLmNyZWF0ZSgnY29uZmlybScsIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCAnQ29uZmlybScsIDQs
ICdhbHRlcm5hdGluZycsIGZhbHNlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAgICAgICAgICByZXF1
ZXN0c1swXS5yZXNvbHZlKHsKQEAgLTM0MCw3ICszNDAsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNU
YXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVl
ZHNOb3RpZmljYXRpb246IGZhbHNlLAorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1
ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRz
Tm90aWZpY2F0aW9uOiBmYWxzZSwgcmVwZXRpdGlvblR5cGU6ICdhbHRlcm5hdGluZycsCiAgICAg
ICAgICAgICAgICAgc3RhcnRSdW46IDEsIGVuZFJ1bjogMiwgdGVzdEdyb3VwTmFtZTogJ0NvbmZp
cm0nLCB0b2tlbjogJ2FiYycsIHJldmlzaW9uU2V0czogWwogICAgICAgICAgICAgICAgICAgICB7
JzExJzoge3JldmlzaW9uOiAnd2Via2l0LXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxs
LCBwYXRjaDogbnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnMjInOiB7cmV2aXNpb246
ICdpb3MtcmV2aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCkBA
IC0zNTEsNyArMzUxLDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKIAogICAg
ICAgICBpdCgnc2hvdWxkIHN5bmMgdGhlIG5ldyBhbmFseXNpcyB0YXNrIHN0YXR1cyBvbmNlIGl0
IGlzIGNyZWF0ZWQnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBbc3RhcnRQb2lu
dCwgZW5kUG9pbnRdID0gbW9ja1N0YXJ0QW5kRW5kUG9pbnRzKCk7Ci0gICAgICAgICAgICBjb25z
dCBjcmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQ
b2ludCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCBj
cmVhdGluZ1Byb21pc2UgPSBBbmFseXNpc1Rhc2suY3JlYXRlKCdjb25maXJtJywgc3RhcnRQb2lu
dCwgZW5kUG9pbnQsICdDb25maXJtJywgNCwgJ2FsdGVybmF0aW5nJywgdHJ1ZSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10
b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CkBAIC0zNjIsNyArMzYy
LDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKICAgICAgICAgICAgIGF3YWl0
IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sn
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwotICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0n
LCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLAorICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCBy
ZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCByZXBldGl0aW9uVHlw
ZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAy
LCB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsIHRva2VuOiAnYWJjJywgcmV2aXNpb25TZXRzOiBb
CiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2aXNpb24t
MScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjog
bnVsbCwgcGF0Y2g6IG51bGx9fSwKQEAgLTQxMiw3ICs0MTIsNyBAQCBkZXNjcmliZSgnQW5hbHlz
aXNUYXNrJywgKCkgPT4gewogCiAgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIHJlamVjdGVk
IHByb21pc2Ugd2hlbiBhbmFseXNpcyB0YXNrIGNyZWF0aW9uIGZhaWxlZCcsIGFzeW5jICgpID0+
IHsKICAgICAgICAgICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRB
bmRFbmRQb2ludHMoKTsKLSAgICAgICAgICAgIGNvbnN0IGNyZWF0aW5nUHJvbWlzZSA9IEFuYWx5
c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0n
LCA0LCB0cnVlKTsKKyAgICAgICAgICAgIGNvbnN0IGNyZWF0aW5nUHJvbWlzZSA9IEFuYWx5c2lz
VGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0
LCAnYWx0ZXJuYXRpbmcnLCB0cnVlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAgICAgICAgICByZXF1
ZXN0c1swXS5yZXNvbHZlKHsKQEAgLTQyMyw3ICs0MjMsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNU
YXNrJywgKCkgPT4gewogICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzaycpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVl
ZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVl
c3RzWzFdLmRhdGEsIHtuYW1lOiAnY29uZmlybScsIHJlcGV0aXRpb25Db3VudDogNCwgbmVlZHNO
b3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAg
ICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDIsIHRlc3RHcm91cE5hbWU6ICdDb25maXJt
JywgdG9rZW46ICdhYmMnLCByZXZpc2lvblNldHM6IFsKICAgICAgICAgICAgICAgICAgICAgeycx
MSc6IHtyZXZpc2lvbjogJ3dlYmtpdC1yZXZpc2lvbi0xJywgb3duZXJSZXZpc2lvbjogbnVsbCwg
cGF0Y2g6IG51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAgJzIyJzoge3JldmlzaW9uOiAn
aW9zLXJldmlzaW9uLTEnLCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRjaDogbnVsbH19LApAQCAt
NDU3LDExICs0NTcsMTEgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsICgpID0+IHsKIAogICAg
ICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbmFseXNpcyB0YXNrIHdpdGggY29uZmlybWluZyByZXBl
dGl0aW9uIGNvdW50IHNwZWNpZmllZCcsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IFtzdGFy
dFBvaW50LCBlbmRQb2ludF0gPSBtb2NrU3RhcnRBbmRFbmRQb2ludHMoKTsKLSAgICAgICAgICAg
IEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZpcm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0Nv
bmZpcm0nLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUoJ2NvbmZp
cm0nLCBzdGFydFBvaW50LCBlbmRQb2ludCwgJ0NvbmZpcm0nLCA0LCAnYWx0ZXJuYXRpbmcnLCB0
cnVlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1
ZXN0c1swXS5kYXRhLCB7bmFtZTogJ2NvbmZpcm0nLCByZXBldGl0aW9uQ291bnQ6IDQsIG5lZWRz
Tm90aWZpY2F0aW9uOiB0cnVlLAotICAgICAgICAgICAgICAgIHN0YXJ0UnVuOiAxLCBlbmRSdW46
IDIsIHdvcmtlck5hbWU6ICd3b3JrZXInLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywKKyAg
ICAgICAgICAgICAgICBzdGFydFJ1bjogMSwgZW5kUnVuOiAyLCB3b3JrZXJOYW1lOiAnd29ya2Vy
Jywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRp
bmcnLAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywgcmV2aXNpb25T
ZXRzOiBbCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246ICd3ZWJraXQtcmV2
aXNpb24tMScsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICcyMic6IHtyZXZpc2lvbjogJ2lvcy1yZXZpc2lvbi0xJywgb3duZXJSZXZp
c2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fSwKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwppbmRleCA4
Nzk4NmQzNmY1NmZjNTNmODlkYWMwZWNlNTA5YTE0OTdhYjM3MWNlLi4wMzQyYWMwMWE0YWY1ZGJj
YzE1Njk2MjJhMmRiMWQ2NWE3YzI2MjczIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCkBAIC0x
ODcsNyArMTg3LDcgQEAgZnVuY3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KHBsYXRmb3Jt
LCB0ZXN0KQogCiAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5lbnN1cmVTaW5nbGV0b24oJzE2NzMz
LScgKyBwbGF0Zm9ybS5pZCgpLCB7J3RyaWdnZXJhYmxlJzogTW9ja01vZGVscy50cmlnZ2VyYWJs
ZSwKICAgICAgICAgcmVwb3NpdG9yeUdyb3VwOiBNb2NrTW9kZWxzLnN2blJlcG9zaXRvcnlHcm91
cCwKLSAgICAgICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywg
J3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdH0pOworICAgICAgICAnY29tbWl0U2V0
JzogY29tbWl0U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZvcm0nOiBwbGF0Zm9ybSwg
J3Rlc3QnOiB0ZXN0LCBvcmRlcjogMH0pOwogfQogCiBmdW5jdGlvbiBjcmVhdGVTYW1wbGVCdWls
ZFJlcXVlc3RXaXRoUGF0Y2gocGxhdGZvcm0sIHRlc3QsIG9yZGVyKQpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVy
LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1l
bnQtc2V0LWFuYWx5emVyLXRlc3RzLmpzCmluZGV4IDA3ZmNiM2RiM2RlNmIxMmU2Yjk0N2NjNjMw
Y2QwN2JiNmEwNGZiYmEuLjA5MDdhMGIwMTZhMDUxNDgzNDdkY2IzZjQ3N2UyYTkyNTk4YWFmYmIg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVt
ZW50LXNldC1hbmFseXplci10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXItdGVzdHMuanMKQEAgLTIzNSw2ICsy
MzUsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAgICAg
ICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdyb3Vw
TmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVl
LAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAgICAg
ICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2aXNpb246IDM1LCBvd25lclJldmlz
aW9uOiBudWxsLCBwYXRjaDogbnVsbH19LAogICAgICAgICAgICAgICAgICAgICB7JzExJzoge3Jl
dmlzaW9uOiA0NCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGx9fV0KICAgICAgICAg
ICAgIH0pOwpAQCAtMjk0LDYgKzI5NSw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldEFuYWx5
emVyJywgKCkgPT4gewogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogNCwKICAgICAg
ICAgICAgICAgICB0ZXN0R3JvdXBOYW1lOiAnQ29uZmlybScsCiAgICAgICAgICAgICAgICAgbmVl
ZHNOb3RpZmljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgcmVwZXRpdGlvblR5cGU6ICdh
bHRlcm5hdGluZycsCiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRzOiBbeycxMSc6IHtyZXZp
c2lvbjogMzUsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAg
ICAgICAgICAgIHsnMTEnOiB7cmV2aXNpb246IDQ0LCBvd25lclJldmlzaW9uOiBudWxsLCBwYXRj
aDogbnVsbH19XQogICAgICAgICAgICAgfSk7CkBAIC01MjYsNiArNTI4LDcgQEAgZGVzY3JpYmUo
J01lYXN1cmVtZW50U2V0QW5hbHl6ZXInLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVwZXRp
dGlvbkNvdW50OiA0LAogICAgICAgICAgICAgICAgIHRlc3RHcm91cE5hbWU6ICdDb25maXJtJywK
ICAgICAgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICByZXBldGl0aW9uVHlwZTogJ2FsdGVybmF0aW5nJywKICAgICAgICAgICAgICAgICByZXZpc2lv
blNldHM6IFt7JzExJzoge3JldmlzaW9uOiA0MCwgb3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6
IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgeycxMSc6IHtyZXZpc2lvbjogNDksIG93bmVy
UmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAgICAgICB9KTsKQEAgLTYxOCw2
ICs2MjEsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXRBbmFseXplcicsICgpID0+IHsKICAg
ICAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IDQsCiAgICAgICAgICAgICAgICAgdGVzdEdy
b3VwTmFtZTogJ0NvbmZpcm0nLAogICAgICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiB0
cnVlLAorICAgICAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLAogICAg
ICAgICAgICAgICAgIHJldmlzaW9uU2V0czogW3snMTEnOiB7cmV2aXNpb246IDMsIG93bmVyUmV2
aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX0sCiAgICAgICAgICAgICAgICAgICAgIHsnMTEnOiB7
cmV2aXNpb246IDgsIG93bmVyUmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsfX1dCiAgICAgICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgyZDgwZGNhNWVmOGYwODM1ODljNjU0MWJh
MjQ1NmFmZDEyODYyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVp
bGQtcmVxdWVzdHMtdGVzdHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTIgKzAsMCBAQAotJ3Vz
ZSBzdHJpY3QnOwotCi1jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKLXJlcXVpcmUo
Jy4uL3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOwotY29uc3QgTW9ja01vZGVscyA9IHJlcXVpcmUo
Jy4vcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJykuTW9ja01vZGVsczsKLWNvbnN0IE1vY2tS
ZW1vdGVBUEkgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMnKS5Nb2Nr
UmVtb3RlQVBJOwotY29uc3QgTm9kZVByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuLi90b29scy9q
cy9wcml2aWxlZ2VkLWFwaScpLlByaXZpbGVnZWRBUEk7Ci1jb25zdCBjcmVhdGVBZGRpdGlvbmFs
QnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMgPSByZXF1aXJlKCcu
Li90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMnKS5jcmVhdGVBZGRpdGlvbmFs
QnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHM7Ci0KLQotZnVuY3Rp
b24gc2FtcGxlVGVzdEdyb3VwKGNvbmZpZykgewotICAgIGNvbnN0IG5lZWRzTm90aWZpY2F0aW9u
ID0gY29uZmlnLm5lZWRzTm90aWZpY2F0aW9uOwotICAgIGNvbnN0IGluaXRpYWxSZXBldGl0aW9u
Q291bnQgPSBjb25maWcuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKLSAgICBjb25zdCBtYXlOZWVk
TW9yZVJlcXVlc3RzID0gY29uZmlnLm1heU5lZWRNb3JlUmVxdWVzdHM7Ci0gICAgY29uc3QgaGlk
ZGVuID0gY29uZmlnLmhpZGRlbjsKLSAgICBjb25zdCBzdGF0dXNMaXN0ID0gY29uZmlnLnN0YXR1
c0xpc3Q7Ci0KLSAgICByZXR1cm4gewotICAgICAgICAidGVzdEdyb3VwcyI6IFt7Ci0gICAgICAg
ICAgICAiaWQiOiAiMjEyOCIsCi0gICAgICAgICAgICAidGFzayI6ICIxMzc2IiwKLSAgICAgICAg
ICAgICJwbGF0Zm9ybSI6ICIzMSIsCi0gICAgICAgICAgICAibmFtZSI6ICJDb25maXJtIiwKLSAg
ICAgICAgICAgICJhdXRob3IiOiAicm5pd2EiLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0
NTg2ODg1MTQwMDAsCi0gICAgICAgICAgICBoaWRkZW4sCi0gICAgICAgICAgICBuZWVkc05vdGlm
aWNhdGlvbiwKLSAgICAgICAgICAgICJidWlsZFJlcXVlc3RzIjogWyIxNjk4NSIsICIxNjk4NiIs
ICIxNjk4NyIsICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCJdLAotICAgICAgICAgICAgImNvbW1p
dFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAotICAgICAgICAgICAgIm5vdGlmaWNhdGlvblNlbnRB
dCI6IG51bGwsCi0gICAgICAgICAgICBpbml0aWFsUmVwZXRpdGlvbkNvdW50LAotICAgICAgICAg
ICAgbWF5TmVlZE1vcmVSZXF1ZXN0cwotICAgICAgICB9XSwKLSAgICAgICAgImJ1aWxkUmVxdWVz
dHMiOiBbewotICAgICAgICAgICAgImlkIjogIjE2OTg1IiwKLSAgICAgICAgICAgICJ0cmlnZ2Vy
YWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAgICAgICAgICAicGxh
dGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKLSAgICAgICAg
ICAgICJvcmRlciI6ICIwIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCi0gICAg
ICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFswXSwKLSAgICAgICAgICAgICJ1cmwiOiBudWxs
LAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJjcmVhdGVkQXQiOiAx
NDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICIxNjk4NiIsCi0g
ICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAidGVzdCI6ICI4NDQi
LAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAgICJ0ZXN0R3JvdXAi
OiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMSIsCi0gICAgICAgICAgICAiY29tbWl0
U2V0IjogIjQyNTYiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMV0sCi0gICAg
ICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51bGwsCi0gICAgICAg
ICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7Ci0gICAgICAgICAg
ICAiaWQiOiAiMTY5ODciLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAotICAgICAg
ICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCi0gICAg
ICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9yZGVyIjogIjIiLAot
ICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKLSAgICAgICAgICAgICJzdGF0dXMiOiBz
dGF0dXNMaXN0WzJdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAgICAgICAgICAiYnVp
bGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKLSAgICAg
ICAgfSwgewotICAgICAgICAgICAgImlkIjogIjE2OTg4IiwKLSAgICAgICAgICAgICJ0cmlnZ2Vy
YWJsZSI6ICIzIiwKLSAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCi0gICAgICAgICAgICAicGxh
dGZvcm0iOiAiMzEiLAotICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKLSAgICAgICAg
ICAgICJvcmRlciI6ICIzIiwKLSAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NiIsCi0gICAg
ICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFszXSwKLSAgICAgICAgICAgICJ1cmwiOiBudWxs
LAotICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKLSAgICAgICAgICAgICJjcmVhdGVkQXQiOiAx
NDU4Njg4NTE0MDAwCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICIxNjk4OSIsCi0g
ICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCi0gICAgICAgICAgICAidGVzdCI6ICI4NDQi
LAotICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKLSAgICAgICAgICAgICJ0ZXN0R3JvdXAi
OiAiMjEyOCIsCi0gICAgICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAgICAgICAiY29tbWl0
U2V0IjogIjQyNTUiLAotICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNF0sCi0gICAg
ICAgICAgICAidXJsIjogbnVsbCwKLSAgICAgICAgICAgICJidWlsZCI6IG51bGwsCi0gICAgICAg
ICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAotICAgICAgICB9LCB7Ci0gICAgICAgICAg
ICAiaWQiOiAiMTY5OTAiLAotICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAotICAgICAg
ICAgICAgInRlc3QiOiAiODQ0IiwKLSAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCi0gICAg
ICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAotICAgICAgICAgICAgIm9yZGVyIjogIjMiLAot
ICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKLSAgICAgICAgICAgICJzdGF0dXMiOiBz
dGF0dXNMaXN0WzVdLAotICAgICAgICAgICAgInVybCI6IG51bGwsCi0gICAgICAgICAgICAiYnVp
bGQiOiBudWxsLAotICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKLSAgICAg
ICAgfV0sCi0gICAgICAgICJjb21taXRTZXRzIjogW3sKLSAgICAgICAgICAgICJpZCI6ICI0MjU1
IiwKLSAgICAgICAgICAgICJyZXZpc2lvbkl0ZW1zIjogW3siY29tbWl0IjogIjg3ODMyIn0sIHsi
Y29tbWl0IjogIjkzMTE2In1dLAotICAgICAgICAgICAgImN1c3RvbVJvb3RzIjogW10sCi0gICAg
ICAgIH0sIHsKLSAgICAgICAgICAgICJpZCI6ICI0MjU2IiwKLSAgICAgICAgICAgICJyZXZpc2lv
bkl0ZW1zIjogW3siY29tbWl0IjogIjg3ODMyIn0sIHsiY29tbWl0IjogIjk2MzM2In1dLAotICAg
ICAgICAgICAgImN1c3RvbVJvb3RzIjogW10sCi0gICAgICAgIH1dLAotICAgICAgICAiY29tbWl0
cyI6IFt7Ci0gICAgICAgICAgICAiaWQiOiAiODc4MzIiLAotICAgICAgICAgICAgInJlcG9zaXRv
cnkiOiAiOSIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTAuMTEgMTVBMjg0IiwKLSAgICAg
ICAgICAgICJ0aW1lIjogMAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiaWQiOiAiOTMxMTYi
LAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiMTEiLAotICAgICAgICAgICAgInJldmlzaW9u
IjogIjE5MTYyMiIsCi0gICAgICAgICAgICAidGltZSI6IDE0NDU5NDU4MTY4NzgKLSAgICAgICAg
fSwgewotICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5
IjogIjkiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4NCIsCi0gICAgICAg
ICAgICAidGltZSI6IDAKLSAgICAgICAgfSwgewotICAgICAgICAgICAgImlkIjogIjk2MzM2IiwK
LSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6
ICIxOTI3MzYiLAotICAgICAgICAgICAgInRpbWUiOiAxNDQ4MjI1MzI1NjUwCi0gICAgICAgIH1d
LAotICAgICAgICAidXBsb2FkZWRGaWxlcyI6IFtdLAotICAgICAgICAic3RhdHVzIjogIk9LIgot
ICAgIH07Ci19Ci0KLWRlc2NyaWJlKCdjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRl
c3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMnLCAoKSA9PiB7Ci0gICAgbGV0IHJlcXVlc3RzID0g
TW9ja1JlbW90ZUFQSS5pbmplY3QobnVsbCwgTm9kZVByaXZpbGVnZWRBUEkpOwotICAgIE1vY2tN
b2RlbHMuaW5qZWN0KCk7Ci0gICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIFByaXZpbGVn
ZWRBUEkuY29uZmlndXJlKCd3b3JrZXJfbmFtZScsICdwYXNzd29yZCcpOwotICAgIH0pOwotCi0g
ICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1vcmUgYnVpbGQgcmVxdWVzdCB3aGVuIG9uZSBvZiB0aGUg
ZXhpc3RpbmcgcmVxdWVzdHMgZmFpbGVkJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0
ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAot
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29u
c3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25z
dCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91
cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdy
b3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0KLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKLSAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9u
YW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50
OiAxfSk7Ci0gICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKLQotICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDIpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAn
L2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIGFkZCAy
IG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAyIGZhaWxlZCBidWlsZCByZXF1ZXN0IGZvdW5kIGZv
ciBhIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENv
bmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6
IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAg
ICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBs
ZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2Ft
cGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAg
ICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxl
ZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3By
aXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOwotICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQ
YXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgYWRkQ291bnQ6IDJ9KTsKLSAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotCi0gICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEku
d2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3Jv
dXBzLzIxMjgnKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUg
YnVpbGQgcmVxdWVzdHMgd2hlbiBhbGwgcmVxdWVzdHMgZm9yIGEgY29tbWl0IHNldCBoYWQgZmFp
bGVkJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVl
ZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVk
TW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlz
dDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxl
dGVkIiwgImZhaWxlZCJdfTsKLSAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0
ZXN0R3JvdXBDb25maWcpOwotICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9j
cmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Ci0gICAgICAgIGNyZWF0ZUFk
ZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0
R3JvdXBzLCAzKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7Ci0K
LSAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91
cGRhdGUtdGVzdC1ncm91cCcpOwotICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBd
LmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3
b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKLSAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3Qg
c2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuICJtYXlfbmVlZF9tb3JlX3JlcXVlc3Rz
IiBpcyBub3Qgc2V0JywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25m
aWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAz
LCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZSwgaGlkZGVuOiBmYWxzZSwKLSAgICAgICAgICAg
IHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxl
dGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1w
bGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9
IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAg
ICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVk
UmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDApOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBi
dWlsZCByZXF1ZXN0cyB3aGVuIGJ1aWxkIHJlcXVlc3QgaXMgaGlkZGVuJywgYXN5bmMgKCkgPT4g
ewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZh
bHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVl
LCBoaWRkZW46IHRydWUsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJm
YWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19
OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7
Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21G
ZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVx
dWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwotICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLQotICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3Vw
Jyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3dvcmtlck5h
bWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIx
MjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOwotICAgICAgICByZXF1ZXN0c1swXS5y
ZXNvbHZlKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1
aWxkIHJlcXVlc3Qgd2hlbiB3ZVwndmUgYWxyZWFkeSBoaXQgdGhlIG1heGltdW0gcmV0cnkgY291
bnQnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVk
c05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRN
b3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0
OiBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQi
LCAiZmFpbGVkIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RH
cm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0
ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRkaXRp
b25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91
cHMsIDEuNSk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotCi0g
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBk
YXRlLXRlc3QtZ3JvdXAnKTsKLSAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5k
YXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29y
ZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7Ci0gICAgICAg
IHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbm90IHNj
aGVkdWxlIG1vcmUgd2hlbiBhZGRpdGlvbmFsIGJ1aWxkIHJlcXVlc3RzIGFyZSBzdGlsbCBwZW5k
aW5nJywgYXN5bmMgKCkgPT4gewotICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVl
ZHNOb3RpZmljYXRpb246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAyLCBtYXlOZWVk
TW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAotICAgICAgICAgICAgc3RhdHVzTGlz
dDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAicGVuZGlu
ZyIsICJwZW5kaW5nIl19OwotICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRl
c3RHcm91cENvbmZpZyk7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2Ny
ZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKLSAgICAgICAgY3JlYXRlQWRk
aXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RH
cm91cHMsIDMpOwotICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLQot
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwJyk7Ci0gICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbMF0u
ZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3JkOiAncGFzc3dv
cmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOwotICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBj
bGVhciBtYXlOZWVkTW9yZVJlcXVlc3QgZmxhZyB3aGVuIG9uZSBjb21taXQgc2V0IGhhcyBub3Qg
Z290IGEgc3VjY2Vzc2Z1bCBydW4gYnV0IGhhdmUgcGVuZGluZyBidWlsZHMnLCBhc3luYyAoKSA9
PiB7Ci0gICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjog
ZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRy
dWUsIGhpZGRlbjogZmFsc2UsCi0gICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIs
ICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciXX07
Ci0gICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29uZmlnKTsK
LSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZl
dGNoZWRUZXN0R3JvdXBzKGRhdGEpOwotICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1
ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7Ci0gICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOwotICAgIH0pOwotfSk7CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBz
LXRlc3RzLmpzCmluZGV4IDVhYTkxZThhYTAyZTExYTY2NDUxZDMxZDk2MzY5NmNlZDhkNDk4M2Uu
Ljc2ZDEzMjEyYWNmMzk1YWZiMjUxMzIxYmUzZTNiYWRjMDBiZDQ5NTkgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3Rz
LmpzCkBAIC03LDcgKzcsNyBAQCBjb25zdCBOb2RlUHJpdmlsZWdlZEFQSSA9IHJlcXVpcmUoJy4u
L3Rvb2xzL2pzL3ByaXZpbGVnZWQtYXBpLmpzJykuUHJpdmlsZWdlZEFQSQogY29uc3QgTW9ja01v
ZGVscyA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJykuTW9ja01vZGVs
czsKIGNvbnN0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXJlbW90
ZS1hcGkuanMnKS5Nb2NrUmVtb3RlQVBJOwogCi1mdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAobmVl
ZHNOb3RpZmljYXRpb249dHJ1ZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudD0yLCBtYXlOZWVkTW9y
ZVJlcXVlc3RzPXRydWUpIHsKK2Z1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChuZWVkc05vdGlmaWNh
dGlvbiA9IHRydWUsIGluaXRpYWxSZXBldGl0aW9uQ291bnQgPSAyLCBtYXlOZWVkTW9yZVJlcXVl
c3RzID0gdHJ1ZSkgewogICAgIHJldHVybiB7CiAgICAgICAgICJ0ZXN0R3JvdXBzIjogW3sKICAg
ICAgICAgICAgICJpZCI6ICIyMTI4IiwKQEAgLTEwOSw2ICsxMDksMTQwIEBAIGZ1bmN0aW9uIHNh
bXBsZVRlc3RHcm91cChuZWVkc05vdGlmaWNhdGlvbj10cnVlLCBpbml0aWFsUmVwZXRpdGlvbkNv
dW50PTIsIG1heU5lCiAgICAgfTsKIH0KIAorZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwRm9yUmV0
cnkoY29uZmlnKSB7CisgICAgY29uc3QgbmVlZHNOb3RpZmljYXRpb24gPSBjb25maWcubmVlZHNO
b3RpZmljYXRpb247CisgICAgY29uc3QgaW5pdGlhbFJlcGV0aXRpb25Db3VudCA9IGNvbmZpZy5p
bml0aWFsUmVwZXRpdGlvbkNvdW50OworICAgIGNvbnN0IG1heU5lZWRNb3JlUmVxdWVzdHMgPSBj
b25maWcubWF5TmVlZE1vcmVSZXF1ZXN0czsKKyAgICBjb25zdCBoaWRkZW4gPSBjb25maWcuaGlk
ZGVuOworICAgIGNvbnN0IHN0YXR1c0xpc3QgPSBjb25maWcuc3RhdHVzTGlzdDsKKyAgICBjb25z
dCBjb21taXRTZXRMaXN0ID0gY29uZmlnLmNvbW1pdFNldExpc3QgfHwgWyc0MjU1JywgJzQyNTYn
LCAnNDI1NScsICc0MjU2JywgJzQyNTUnLCAnNDI1NiddOworICAgIGNvbnN0IHJlcGV0aXRpb25U
eXBlID0gY29uZmlnLnJlcGV0aXRpb25UeXBlIHx8ICdhbHRlcm5hdGluZyc7CisKKyAgICByZXR1
cm4geworICAgICAgICAidGVzdEdyb3VwcyI6IFt7CisgICAgICAgICAgICAiaWQiOiAiMjEyOCIs
CisgICAgICAgICAgICAidGFzayI6ICIxMzc2IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIz
MSIsCisgICAgICAgICAgICAibmFtZSI6ICJDb25maXJtIiwKKyAgICAgICAgICAgICJhdXRob3Ii
OiAicm5pd2EiLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAsCisgICAg
ICAgICAgICBoaWRkZW4sCisgICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbiwKKyAgICAgICAg
ICAgICJidWlsZFJlcXVlc3RzIjogWyIxNjk4NSIsICIxNjk4NiIsICIxNjk4NyIsICIxNjk4OCIs
ICIxNjk4OSIsICIxNjk5MCJdLAorICAgICAgICAgICAgImNvbW1pdFNldHMiOiBbIjQyNTUiLCAi
NDI1NiJdLAorICAgICAgICAgICAgIm5vdGlmaWNhdGlvblNlbnRBdCI6IG51bGwsCisgICAgICAg
ICAgICBpbml0aWFsUmVwZXRpdGlvbkNvdW50LAorICAgICAgICAgICAgbWF5TmVlZE1vcmVSZXF1
ZXN0cywKKyAgICAgICAgICAgIHJlcGV0aXRpb25UeXBlCisgICAgICAgIH1dLAorICAgICAgICAi
YnVpbGRSZXF1ZXN0cyI6IFt7CisgICAgICAgICAgICAiaWQiOiAiMTY5ODUiLAorICAgICAgICAg
ICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAg
ICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgi
LAorICAgICAgICAgICAgIm9yZGVyIjogIjAiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNv
bW1pdFNldExpc3RbMF0sCisgICAgICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFswXSwKKyAg
ICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAg
ICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICJpZCI6ICIxNjk4NiIsCisgICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAg
ICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAg
ICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiMSIs
CisgICAgICAgICAgICAiY29tbWl0U2V0IjogY29tbWl0U2V0TGlzdFsxXSwKKyAgICAgICAgICAg
ICJzdGF0dXMiOiBzdGF0dXNMaXN0WzFdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAg
ICAgICAgICAiYnVpbGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1
MTQwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTg3IiwKKyAgICAgICAg
ICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAg
ICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4
IiwKKyAgICAgICAgICAgICJvcmRlciI6ICIyIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBj
b21taXRTZXRMaXN0WzJdLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMl0sCisg
ICAgICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAg
ICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAg
ICAgICAiaWQiOiAiMTY5ODgiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAg
ICAgICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisg
ICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjMi
LAorICAgICAgICAgICAgImNvbW1pdFNldCI6IGNvbW1pdFNldExpc3RbM10sCisgICAgICAgICAg
ICAic3RhdHVzIjogc3RhdHVzTGlzdFszXSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAg
ICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4
NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk4OSIsCisgICAgICAg
ICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAg
ICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEy
OCIsCisgICAgICAgICAgICAib3JkZXIiOiAiNCIsCisgICAgICAgICAgICAiY29tbWl0U2V0Ijog
Y29tbWl0U2V0TGlzdFs0XSwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0WzRdLAor
ICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAorICAg
ICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfSwgeworICAgICAg
ICAgICAgImlkIjogIjE2OTkwIiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIzIiwKKyAg
ICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAor
ICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRlciI6ICI1
IiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiBjb21taXRTZXRMaXN0WzVdLAorICAgICAgICAg
ICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbNV0sCisgICAgICAgICAgICAidXJsIjogbnVsbCwKKyAg
ICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4
ODUxNDAwMAorICAgICAgICB9XSwKKyAgICAgICAgImNvbW1pdFNldHMiOiBbeworICAgICAgICAg
ICAgImlkIjogIjQyNTUiLAorICAgICAgICAgICAgInJldmlzaW9uSXRlbXMiOiBbeyJjb21taXQi
OiAiODc4MzIifSwgeyJjb21taXQiOiAiOTMxMTYifV0sCisgICAgICAgICAgICAiY3VzdG9tUm9v
dHMiOiBbXSwKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlkIjogIjQyNTYiLAorICAgICAg
ICAgICAgInJldmlzaW9uSXRlbXMiOiBbeyJjb21taXQiOiAiODc4MzIifSwgeyJjb21taXQiOiAi
OTYzMzYifV0sCisgICAgICAgICAgICAiY3VzdG9tUm9vdHMiOiBbXSwKKyAgICAgICAgfV0sCisg
ICAgICAgICJjb21taXRzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICI4NzgzMiIsCisgICAgICAg
ICAgICAicmVwb3NpdG9yeSI6ICI5IiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4xMSAx
NUEyODQiLAorICAgICAgICAgICAgInRpbWUiOiAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAg
ICJpZCI6ICI5MzExNiIsCisgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCisgICAgICAg
ICAgICAicmV2aXNpb24iOiAiMTkxNjIyIiwKKyAgICAgICAgICAgICJ0aW1lIjogMTQ0NTk0NTgx
Njg3OAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiODc4MzIiLAorICAgICAgICAg
ICAgInJlcG9zaXRvcnkiOiAiOSIsCisgICAgICAgICAgICAicmV2aXNpb24iOiAiMTAuMTEgMTVB
Mjg0IiwKKyAgICAgICAgICAgICJ0aW1lIjogMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAi
aWQiOiAiOTYzMzYiLAorICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiMTEiLAorICAgICAgICAg
ICAgInJldmlzaW9uIjogIjE5MjczNiIsCisgICAgICAgICAgICAidGltZSI6IDE0NDgyMjUzMjU2
NTAKKyAgICAgICAgfV0sCisgICAgICAgICJ1cGxvYWRlZEZpbGVzIjogW10sCisgICAgICAgICJz
dGF0dXMiOiAiT0siCisgICAgfTsKK30KKwogZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICBNb2NrTW9kZWxzLmluamVjdCgpOwogICAgIGNvbnN0IHJlcXVlc3RzID0gTW9j
a1JlbW90ZUFQSS5pbmplY3QoJ2h0dHBzOi8vcGVyZi53ZWJraXQub3JnJywgQnJvd3NlclByaXZp
bGVnZWRBUEkpOwpAQCAtMjQ5LDcgKzM4Myw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaXNIaWRkZW4oKSwgZmFs
c2UpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKCks
IHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtncm91cC5jcmVhdGVkQXQoKSwgMTQ1
ODY4ODUxNDAwMCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNv
dW50KCksIHNhbXBsZVRlc3RHcm91cCgpWydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoIC8gMik7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaW5pdGlhbFJlcGV0aXRpb25Db3VudCgpLCBz
YW1wbGVUZXN0R3JvdXAoKVsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCAvIDIpOwogICAgICAgICAg
ICAgYXNzZXJ0Lm9rKGdyb3VwLmhhc1BlbmRpbmcoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2so
IWdyb3VwLmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5oYXNT
dGFydGVkKCkpOwpAQCAtNDYyLDcgKzU5Niw3IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2Nr
TW9kZWxzLndlYmtpdCwgJzE5MTYyMycpOwogICAgICAgICAgICAgc2V0Mi5zZXRSZXZpc2lvbkZv
clJlcG9zaXRvcnkoTW9ja01vZGVscy5zaGFyZWRSZXBvc2l0b3J5LCAnODAyMjknKTsKIAotICAg
ICAgICAgICAgY29uc3QgcHJvbWlzZSA9IFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnc29tZS10
YXNrJywgTW9ja01vZGVscy5zb21lUGxhdGZvcm0sIE1vY2tNb2RlbHMuc29tZVRlc3QsICdzb21l
LWdyb3VwJywgNCwgW3NldDEsIHNldDJdLCB0cnVlKTsKKyAgICAgICAgICAgIGNvbnN0IHByb21p
c2UgPSBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2soJ3NvbWUtdGFzaycsIE1vY2tNb2RlbHMuc29t
ZVBsYXRmb3JtLCBNb2NrTW9kZWxzLnNvbWVUZXN0LCAnc29tZS1ncm91cCcsIDQsICdhbHRlcm5h
dGluZycsIFtzZXQxLCBzZXQyXSwgdHJ1ZSwgJ2FsdGVybmF0aW5nJyk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicp
OwogICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7CkBAIC00NzUsNyArNjA5LDcgQEAg
ZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVxdWVzdHNbMl0uZGF0YSwge3Rhc2tOYW1lOiAnc29tZS10YXNrJywgbmFtZTog
J3NvbWUtZ3JvdXAnLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDEsCiAgICAgICAgICAgICAgICAgcmVw
ZXRpdGlvbkNvdW50OiA0LCByZXZpc2lvblNldHM6IFt7JzExJzoge293bmVyUmV2aXNpb246IG51
bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjE5MTYyMiJ9LAogICAgICAgICAgICAgICAgICAg
ICAnMTYnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9uOiAiODAy
MjkifX0sIHsnMTEnOiB7b3duZXJSZXZpc2lvbjogbnVsbCwgcGF0Y2g6IG51bGwsIHJldmlzaW9u
OiAiMTkxNjIzIn0sCi0gICAgICAgICAgICAgICAgICAgICcxNic6IHtvd25lclJldmlzaW9uOiBu
dWxsLCBwYXRjaDogbnVsbCwgcmV2aXNpb246ICI4MDIyOSJ9fV0sIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLCB0b2tlbjogJ2FiYyd9KTsKKyAgICAgICAgICAgICAgICAgICAgJzE2Jzoge293bmVy
UmV2aXNpb246IG51bGwsIHBhdGNoOiBudWxsLCByZXZpc2lvbjogIjgwMjI5In19XSwgbmVlZHNO
b3RpZmljYXRpb246IHRydWUsIHJlcGV0aXRpb25UeXBlOiAnYWx0ZXJuYXRpbmcnLCB0b2tlbjog
J2FiYyd9KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzJd
LnJlc29sdmUoewogICAgICAgICAgICAgICAgIHRhc2tJZDogMTIzLApAQCAtNDg2LDYgKzYyMCwx
OTAgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1szXS51cmwsICcvYXBpL2FuYWx5c2lzLXRhc2tzP2lkPTEyMycpOwog
ICAgICAgICB9KTsKLSAgICB9KQorICAgIH0pOwogCisgICAgZGVzY3JpYmUoJ3NjaGVkdWxlTW9y
ZVJlcXVlc3RzT3JDbGVhckZsYWcnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0g
TW9ja1JlbW90ZUFQSS5pbmplY3QobnVsbCwgTm9kZVByaXZpbGVnZWRBUEkpOworICAgICAgICBN
b2NrTW9kZWxzLmluamVjdCgpOworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg
ICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKCd3b3JrZXJfbmFtZScsICdwYXNzd29yZCcpOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGFkZCBvbmUgbW9yZSBidWlsZCByZXF1
ZXN0IHdoZW4gb25lIG9mIHRoZSBleGlzdGluZyByZXF1ZXN0cyBmYWlsZWQnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRp
b246IGZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3Rz
OiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29t
cGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRl
ZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3Vw
Rm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAg
ICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygz
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2Fk
ZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0
c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdw
YXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRTZXQ6IG51bGx9KTsK
KyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICAgICAgYXdhaXQg
TW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
MV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgICAgIH0pOworCisgICAgICAg
IGl0KCdzaG91bGQgYWRkIHR3byBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gdHdvIGZhaWxlZCBi
dWlsZCByZXF1ZXN0IGZvdW5kIGZvciBhIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246IGZhbHNl
LCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBo
aWRkZW46IGZhbHNlLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwg
ImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQi
XX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVz
dEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRl
c3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygzKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1
ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIGFkZENvdW50OiAyLCBjb21taXRTZXQ6IG51bGx9KTsKKyAgICAgICAgICAg
IHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2Fw
aS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
bm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAibWF5X25lZWRfbW9yZV9yZXF1
ZXN0cyIgaXMgbm90IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RH
cm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9u
Q291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlLCBoaWRkZW46IGZhbHNlLAorICAg
ICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0
ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXX07CisgICAgICAgICAgICBj
b25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAg
ICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21G
ZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1
bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5v
dCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYSB0ZXN0IGdyb3VwIGlzIGhpZGRl
bicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtu
ZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IHRydWUsIGhpZGRlbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICBzdGF0
dXNMaXN0OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIs
ICJjb21wbGV0ZWQiLCAiZmFpbGVkIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBs
ZVRlc3RHcm91cEZvclJldHJ5KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMo
ZGF0YSk7CisgICAgICAgICAgICB0ZXN0R3JvdXBzWzBdLnNjaGVkdWxlTW9yZVJlcXVlc3RzT3JD
bGVhckZsYWcoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxl
Z2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFz
c3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZh
bHNlfSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hl
biBhbGwgcmVxdWVzdHMgZm9yIGEgY29tbWl0IHNldCBoYWQgZmFpbGVkJywgYXN5bmMgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9u
OiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czog
dHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBs
ZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFp
bGVkIl19OworICAgICAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cEZvclJldHJ5
KHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdy
b3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgICAg
ICB0ZXN0R3JvdXBzWzBdLnNjaGVkdWxlTW9yZVJlcXVlc3RzT3JDbGVhckZsYWcoMyk7CisgICAg
ICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91
cCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29y
a2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3Vw
OiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgICAgICByZXF1
ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgc2No
ZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB0byByZWFjaCB0aGUgcmV0cnkgbGltaXQgZXZlbiB0
aG91Z2ggY29tcGxldGVkIGl0ZXJhdGlvbnMgd2lsbCBub3QgbWVldCBleHBlY3RhdGlvbicsIGFz
eW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05v
dGlmaWNhdGlvbjogZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3Jl
UmVxdWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICAgICAgc3RhdHVzTGlz
dDogWyJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFp
bGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3Jv
dXBGb3JSZXRyeSh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3Vw
cyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOwor
ICAgICAgICAgICAgdGVzdEdyb3Vwc1swXS5zY2hlZHVsZU1vcmVSZXF1ZXN0c09yQ2xlYXJGbGFn
KDEuNSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVx
dWVzdHNbMF0uZGF0YSwge3dvcmtlck5hbWU6ICd3b3JrZXJfbmFtZScsIHdvcmtlclBhc3N3b3Jk
OiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBhZGRDb3VudDogMSwgY29tbWl0U2V0OiBudWxs
fSk7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiBh
ZGRpdGlvbmFsIGJ1aWxkIHJlcXVlc3RzIGFyZSBzdGlsbCBwZW5kaW5nJywgYXN5bmMgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9u
OiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czog
dHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBs
ZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRp
bmciXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnko
dGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3Jv
dXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAg
IHRlc3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygzKTsKKyAgICAg
ICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3Vw
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3Jr
ZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6
ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVl
c3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qg
Y2xlYXIgIm1heSBuZWVkIG1vcmUgcmVxdWVzdHMiIGZsYWcgd2hlbiBvbmUgY29tbWl0IHNldCBo
YXMgbm90IGdvdCBhIHN1Y2Nlc3NmdWwgcnVuIGJ1dCBoYXZlIHBlbmRpbmcgYnVpbGRzJywgYXN5
bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90
aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVS
ZXF1ZXN0czogdHJ1ZSwgaGlkZGVuOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBzdGF0dXNMaXN0
OiBbImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCIsICJwZW5kaW5n
IiwgInBlbmRpbmciXX07CisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3Vw
Rm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMg
PSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAg
ICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygz
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIHJldHJ5IGJ1aWxkIHJlcXVlc3Rz
IGFuZCBrZWVwICJtYXkgbmVlZCBtb3JlIHJlcXVlc3RzIiBmbGFnIHdoZW4gbm90IGFsbCByZXF1
ZXN0cyBmb3IgYSBjb25maWd1cmF0aW9uIGhhZCBmYWlsZWQgZm9yIGEgc2VxdWVudGlhbCB0ZXN0
IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmln
ID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywg
bWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNl
LCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgICAgIHN0YXR1c0xp
c3Q6IFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5n
IiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAn
NDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgICAgICBj
b25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAg
ICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21G
ZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1
bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygzKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
MF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtl
cl9uYW1lJywgd29ya2VyUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENv
dW50OiAyLCBjb21taXRTZXQ6ICc0MjU1J30pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIx
MjgnKTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzFdLnJlc29sdmUoc2FtcGxlVGVzdEdyb3VwRm9y
UmV0cnkodGVzdEdyb3VwQ29uZmlnKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgcmV0cnkgdGhlIHNlY29uZCBjb25maWd1cmF0aW9uIChCKSBpZiB0aGUgZmlyc3QgY29uZmln
dXJhdGlvbiAoQSkgcmVhY2hlZCB0aGUgcmV0cnkgbGltaXQgYnV0IGhhZCBhdCBsZWFzdCBvbmUg
c3VjY2Vzc2Z1bCBpdGVyYXRpb24gZm9yIGEgc2VxdWVudGlhbCB0ZXN0IGdyb3VwJywgYXN5bmMg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZp
Y2F0aW9uOiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1
ZXN0czogdHJ1ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlw
ZTogJ3NlcXVlbnRpYWwnLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVk
IiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiXSwK
KyAgICAgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1Jywg
JzQyNTUnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2Ft
cGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0
IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vw
cyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNP
ckNsZWFyRmxhZygyKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZp
bGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7d29ya2VyTmFtZTogJ3dvcmtlcl9uYW1lJywgd29ya2Vy
UGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGFkZENvdW50OiAxLCBjb21taXRT
ZXQ6ICc0MjU2J30pOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNsZWFyIHRlc3QgZ3JvdXAgIm1heSBuZWVkIG1v
cmUgcmVxdWVzdHMiIGZsYWcgaW4gc2VxdWVudGlhbCBtb2RlIGlmIGFsbCBpbml0aWFsbHkgc2No
ZWR1bGVkIEEgcmVwZXRpdGlvbnMgZmFpbGVkJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAg
Y29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgaW5pdGlh
bFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3NlcXVlbnRpYWwnLAorICAg
ICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAi
cGVuZGluZyIsICJwZW5kaW5nIiwgInBlbmRpbmciXSwKKyAgICAgICAgICAgICAgICBjb21taXRT
ZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU1JywgJzQyNTYnLCAnNDI1NicsICc0MjU2J119
OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwRm9yUmV0cnkodGVz
dEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgICAgIHRl
c3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNPckNsZWFyRmxhZygyKTsKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7
CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJO
YW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcy
MTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgICAgIHJlcXVlc3Rz
WzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBjbGVhciBh
IHNlcXVlbnRpYWwgdGVzdCBncm91cCAibWF5IG5lZWQgbW9yZSByZXF1ZXN0cyIgZmxhZyB3aGVu
IGluaXRpYWwgcmVxdWVzdGVkIHJlcGV0aXRpb24gaXMgc2F0aXNmaWVkJywgYXN5bmMgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9u
OiBmYWxzZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMiwgbWF5TmVlZE1vcmVSZXF1ZXN0czog
dHJ1ZSwKKyAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLCByZXBldGl0aW9uVHlwZTogJ3Nl
cXVlbnRpYWwnLAorICAgICAgICAgICAgICAgIHN0YXR1c0xpc3Q6IFsiY29tcGxldGVkIiwgImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiXSwK
KyAgICAgICAgICAgICAgICBjb21taXRTZXRMaXN0OiBbJzQyNTUnLCAnNDI1NScsICc0MjU2Jywg
JzQyNTYnLCAnNDI1NicsICc0MjU2J119OworCisgICAgICAgICAgICBjb25zdCBkYXRhID0gc2Ft
cGxlVGVzdEdyb3VwRm9yUmV0cnkodGVzdEdyb3VwQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbnN0
IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vw
cyhkYXRhKTsKKyAgICAgICAgICAgIHRlc3RHcm91cHNbMF0uc2NoZWR1bGVNb3JlUmVxdWVzdHNP
ckNsZWFyRmxhZygzKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJl
cXVlc3RzWzBdLmRhdGEsIHt3b3JrZXJOYW1lOiAnd29ya2VyX25hbWUnLCB3b3JrZXJQYXNzd29y
ZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9
KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="450686"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>