<?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>175978</bug_id>
          
          <creation_ts>2017-08-25 02:11:05 -0700</creation_ts>
          <short_desc>Performance Dashboard backend should support A/B testing for owned components.</short_desc>
          <delta_ts>2017-09-18 23:43:53 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1342349</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2017-08-25 02:11:05 -0700</bug_when>
    <thetext>Performance Dashboard should support A/B testing for owned components.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342350</commentid>
    <comment_count>1</comment_count>
      <attachid>319071</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-08-25 02:35:27 -0700</bug_when>
    <thetext>Created attachment 319071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343204</commentid>
    <comment_count>2</comment_count>
      <attachid>319071</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-29 13:48:08 -0700</bug_when>
    <thetext>Comment on attachment 319071
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:12
&gt; +        * init-database.sql: Updated &apos;commit_set_items&apos; table to contain commit owner info and whether this commit requires build.
&gt; +        SQL for existing database:
&gt; +            &apos;ALTER TABLE ADD COLUMN commitset_commit_owner integer REFERENCES commits DEFAULT NULL, ADD COLUMN commitset_require_build boolean DEFAULT FALSE;&apos;

Please put this in the long description above. You should also describe what they&apos;re used for.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:175
&gt; +                array_push($repository_require_build, $repository_id);

This is really a set, right? It&apos;s better to use it as an associative array as in:
$repository_require_build[repository_id] = TRUE;
Also, we should rename this to repository_require*s*_build.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:214
&gt; +                $owner_commits = $db-&gt;select_first_row(&apos;commits&apos;, &apos;commit&apos;, array(&apos;repository&apos; =&gt; intval($repository[&apos;repository_owner&apos;]), &apos;revision&apos; =&gt; $owner_revision));

This should be $owner_commit, not $owner_commit*s*. You should explicitly check whether we found this commit or not, and throw &apos;InvalidOwnerRevision&apos; error when it&apos;s null.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:216
&gt; +                    exit_with_error(&apos;InvalidCommitOwnership&apos;, array(&apos;commit_owner&apos; =&gt; $owner_commits[&apos;commit_id&apos;], &apos;commit_owned&apos; =&gt; $commit[&apos;commit_id&apos;]));

Don&apos;t use _ in error messages. Use camelCase instead. But in this case, you don&apos;t even need to prefix them. Just call them &apos;owner&apos; and &apos;owned&apos;.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:221
&gt; +            array_push($commit_set, array(&apos;commit&apos; =&gt; $commit[&apos;commit_id&apos;], &apos;patch_file&apos; =&gt; $patch_file_id, &apos;require_build&apos; =&gt; $require_build, &apos;commit_owner&apos; =&gt; $owner_commits ? $owner_commits[&apos;commit_id&apos;] : NULL));

Instead of adding tertiary, why don&apos;t we just declare $owner_commit_id?

&gt; Websites/perf.webkit.org/public/v3/components/analysis-results-viewer.js:129
&gt; -            ]
&gt; +            ];

This change seems unrelated. Can we split that into a separate refactoring patch?

&gt; Websites/perf.webkit.org/public/v3/components/sub-commit-viewer.js:99
&gt; +ComponentBase.defineElement(&apos;sub-commit-viewer&apos;, SubCommitViewer);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:59
&gt; +    ownedRepositories() { return this._repositories.filter((repository) =&gt; { return repository.ownerId(); }) };

Just do: this._repositories.filter((repository) =&gt; repository.ownerId);

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:212
&gt; +        for (const repository of this._revisionListByOwnedRepository.keys()) {

Do: for (const [repository, thisRevision] of this._revisionListByOwnedRepository) instead.

&gt; Websites/perf.webkit.org/public/v3/models/data-model.js:15
&gt; -            singleton.updateSingleton(object)
&gt; +            singleton.updateSingleton(object);

All these code changes to just add semicolon should really be done separately.

&gt; Websites/perf.webkit.org/public/v3/models/repository.js:32
&gt; +        return ownerships ? ownerships[this.id()].find((repository) =&gt; {return repository.name() == name}) : null;

Do: (repository) =&gt; repository.name() == name

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:-795
&gt;          });
&gt; -        return this._createTestGroupAfterVerifyingCommitSetList(newName, repetitionCount, commitSetMap);

Please split these cleanups into a separate patch.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:73
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].id, 704);
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].order, 0);
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].platform, &apos;65&apos;);
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].commitSet, 403);
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].status, &apos;pending&apos;);
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].test, &apos;200&apos;);

Why can&apos;t we just do deepEqual(~, {id: 704, order: 0, etc...})?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:329
&gt; +        let sjc;

nit: jsc

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:333
&gt; +            webkit = Repository.all().filter((repository) =&gt; repository.name() == &apos;WebKit&apos;)[0];
&gt; +            macos = Repository.all().filter((repository) =&gt; repository.name() == &apos;macOS&apos;)[0];
&gt; +            sjc = Repository.all().filter((repository) =&gt; repository.name() == &apos;JavaScriptCore&apos;)[0];

Just declare these variables here.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:613
&gt; +        let sjc;

Nit: jsc

&gt; Websites/perf.webkit.org/tools/js/buildbot-triggerable.js:67
&gt; -            buildReqeustsByGroup = BuildbotTriggerable._testGroupMapForBuildRequests(buildRequests);
&gt; -            return this._pullBuildbotOnAllSyncers(buildReqeustsByGroup);
&gt; +            buildRequestsByGroup = BuildbotTriggerable._testGroupMapForBuildRequests(buildRequests);
&gt; +            return this._pullBuildbotOnAllSyncers(buildRequestsByGroup);

Please do this in a separate cleanup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343487</commentid>
    <comment_count>3</comment_count>
      <attachid>319353</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-08-30 01:10:22 -0700</bug_when>
    <thetext>Created attachment 319353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345839</commentid>
    <comment_count>4</comment_count>
      <attachid>319353</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-06 00:12:14 -0700</bug_when>
    <thetext>Comment on attachment 319353
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        * init-database.sql:

You should have a blank line right above this.

&gt; Websites/perf.webkit.org/ChangeLog:10
&gt; +            Added &apos;commitset_commit_owner&apos; and &apos;commitset_requires_build&apos; columns to &apos;commit_set_items&apos; table.

Please add this right after the description above. These important high-level comments should not be added as an inline comment.

&gt; Websites/perf.webkit.org/ChangeLog:24
&gt; +        * public/privileged-api/create-test-group.php: Added logic to process &apos;commitOwner&apos; and &apos;requireBuild&apos; in &apos;commit_set_items&apos;.

Please add entries for each function you&apos;re modifying with inline comments.

&gt; Websites/perf.webkit.org/ChangeLog:49
&gt; +        (return.MockData.addTestGroupWithOwnedRepositories.TestServer.database.then):
&gt; +        (then):

Get rid of these entries.

&gt; Websites/perf.webkit.org/ChangeLog:52
&gt; +        (return.addTriggerableAndCreateTask.string_appeared_here.then.id.taskId.id.then):
&gt; +        (then):

Ditto.

&gt; Websites/perf.webkit.org/public/include/db.php:122
&gt; +            if (is_bool($current_value))
&gt; +                $current_value = $this-&gt;to_database_boolean($current_value);

Nice, we should get rid of manual calls to to_database_boolean in a separate patch.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:-55
&gt; -        // FIXME: Add a check for duplicate test group name.

Mention that this FIXME is already addressed in the change log as an inline comment.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:96
&gt; +            $need_to_build = $need_to_build || $commit_row[&apos;requires_build&apos;];

We should add an assert here that is_bool($commit_row[&apos;requires_build&apos;]) is true, and it&apos;s never &apos;t&apos; or &apos;f&apos;.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:207
&gt; +            $repository = $db-&gt;select_first_row(&apos;repositories&apos;, &apos;repository&apos;, array(&apos;id&apos; =&gt; intval($repository_id)));

I don&apos;t think we need to fetch the repository row when it doesn&apos;t have an owner revision.
So we should move this into if ($owner_revision).

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:221
&gt; +            $requires_build = $owner_revision || array_get($repository_requires_build, $repository_id, FALSE);

I think it&apos;s cleaner to update $repository_requires_build here and add another loop after (instead of before) this one,
and update values of requires_build in each commit_set object in the newly added loop once all commit_set objects are created.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:227
&gt; +            if (!$repository)
&gt; +                exit_with_error(&apos;RepositoryNotFound&apos;, array(&apos;repository&apos; =&gt; $repository_id));

This condition is impossible to reach because we&apos;ve already used $repository_id to find $commit_id.
Also, if this condition can be reached, then we need to be checking this condition before line 215 where we use it.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:229
&gt; +            if ($repository[&apos;repository_owner&apos;])
&gt; +                continue;

We need to verify that its owner is in the list. It&apos;s non-sensical to have a owned repository specified without its owner&apos;s revision being specified.
r- due to the lack of this check. We also need a test case for this.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:13
&gt; +        this._repositoryToRequiresBuildMap = new Map;

Nit: It should be _repositoryRequiresBuildMap. Can&apos;t be &quot;to requires&quot;.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:59
&gt; +    ownedRepositories() { return this._repositories.filter((repository) =&gt; repository.ownerId) };

Looks like this function is never used. Remove for now?
Also, I would have called this repositoriesWithOwner().

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:190
&gt; -        this._revisionListByRepository.set(repository, {revision, patch});
&gt; +        if (ownerRevision)
&gt; +            this._revisionListByOwnedRepository.set(repository, {revision, patch, ownerRevision});
&gt; +        else
&gt; +            this._revisionListByRepository.set(repository, {revision, patch});

We should stick with either putting all revisions into a single map, and have a separate owner map as done in a regular CommitLog,
or have two separate maps for owned revisions and non-owned revisions as done here.
We shouldn&apos;t use two completely different strategies for the two classes.

&gt; Websites/perf.webkit.org/public/v3/models/repository.js:34
&gt; +    findOwnedRepositoryByName(name)
&gt; +    {
&gt; +        const ownerships = this.namedStaticMap(&apos;repositoryOwnerships&apos;);
&gt; +        return ownerships ? ownerships[this.id()].find((repository) =&gt; repository.name() == name) : null;
&gt; +    }
&gt; +

Looks like this is never used for now. Remove?

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:30
&gt; +    it(&apos;should return build requests associated with a given triggerable with appropriate commits and commitSets with owned components.&apos;, () =&gt; {

Nit: owned commits. Also, don&apos;t end it with a period.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:41
&gt; +               [{commit: &apos;87832&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null},
&gt; +                   {commit: &apos;93116&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null},
&gt; +                   {commit: &apos;1797&apos;, commitOwner: &quot;93116&quot;, patch: null, requiresBuild: true, rootFile: null}]);

This indentation is not right. You should start [ in the previous line, and then all { should be aligned.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:44
&gt; +               [{commit: &apos;87832&apos;, commitOwner: null, patch: null, requiresBuild: false, rootFile: null},

Ditto.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:49
&gt; +           assert.equal(content[&apos;commits&apos;][0].id, 87832);

Why not deepEqual here too?

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:68
&gt; +           assert.deepEqual(content[&apos;buildRequests&apos;][0].id, 704);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:152
&gt;  
&gt; +

Why two spaces?

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:288
&gt; +            assert.equal(secondCommitSet.revisionForRepository(jsc), &apos;9191&apos;);

You should check that the owner of jsc is osx and that ownerRevisionForRepository of this commit is that of osx.
r- due to this lack of test coverage.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:379
&gt; +

Add another test case which specifies an owned revision but not its owner revision.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:693
&gt; +            webkit = Repository.all().filter((repository) =&gt; repository.name() == &apos;WebKit&apos;)[0];

We should add LabeledObject.findByName at some point...

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:753
&gt; +            assert.equal(set0.patchForRepository(jsc), null);
&gt; +            assert.equal(set1.patchForRepository(jsc), null);

Again, you should test the owner commit, repository, etc...

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:836
&gt; +            assert.equal(set1.requiresBuildForRepository(jsc), true);

Ditto.

&gt; Websites/perf.webkit.org/server-tests/resources/mock-data.js:37
&gt; +            db.insert(&apos;commits&apos;, {id: 1797, repository: this.jscRepositoryId(), revision: &apos;6161&apos;, time: &apos;2016-03-02T23:19:55.3Z&apos;}),
&gt; +            db.insert(&apos;commits&apos;, {id: 2017, repository: this.jscRepositoryId(), revision: &apos;9191&apos;, time: &apos;2016-05-02T23:13:57.1Z&apos;}),

Can we use a human readable text like &apos;191622-jsc&apos; instead of these unintelligible numbers?
Also, we definitely need a test case for when both OS X / iOS and WebKit specifies WebKit/JavaScriptCore.

&gt; Websites/perf.webkit.org/server-tests/resources/mock-data.js:123
&gt; +    addTestGroupWithOwnedRepositories(db, statusList)

I&apos;d call this addTestGroupWithOwnedCommits instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347371</commentid>
    <comment_count>5</comment_count>
      <attachid>319353</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-11 01:59:50 -0700</bug_when>
    <thetext>Comment on attachment 319353
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/include/db.php:122
&gt;&gt; +                $current_value = $this-&gt;to_database_boolean($current_value);
&gt; 
&gt; Nice, we should get rid of manual calls to to_database_boolean in a separate patch.

Sure.

&gt;&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:-55
&gt;&gt; -        // FIXME: Add a check for duplicate test group name.
&gt; 
&gt; Mention that this FIXME is already addressed in the change log as an inline comment.

This seems addressed in previous commit in line 53. I just remove the &quot;FIXME&quot;. Should I still mention it in the inline comment?

&gt;&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:221
&gt;&gt; +            $requires_build = $owner_revision || array_get($repository_requires_build, $repository_id, FALSE);
&gt; 
&gt; I think it&apos;s cleaner to update $repository_requires_build here and add another loop after (instead of before) this one,
&gt; and update values of requires_build in each commit_set object in the newly added loop once all commit_set objects are created.

In order to do that, we need search in $commit_set_list to find the right $commit_set, then we also need to search in $commit_set array to find the right commit item. I couldn&apos;t find a good way to do that without creating another mapping data structure, which we can avoid if we create $repository_requires_build in advance.

&gt;&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:229
&gt;&gt; +                continue;
&gt; 
&gt; We need to verify that its owner is in the list. It&apos;s non-sensical to have a owned repository specified without its owner&apos;s revision being specified.
&gt; r- due to the lack of this check. We also need a test case for this.

Sure.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:59
&gt;&gt; +    ownedRepositories() { return this._repositories.filter((repository) =&gt; repository.ownerId) };
&gt; 
&gt; Looks like this function is never used. Remove for now?
&gt; Also, I would have called this repositoriesWithOwner().

OK, I will include this change in patch for UI change.

&gt;&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:190
&gt;&gt; +            this._revisionListByRepository.set(repository, {revision, patch});
&gt; 
&gt; We should stick with either putting all revisions into a single map, and have a separate owner map as done in a regular CommitLog,
&gt; or have two separate maps for owned revisions and non-owned revisions as done here.
&gt; We shouldn&apos;t use two completely different strategies for the two classes.

Do you refer &apos;two classes&apos; to &apos;CustomCommitSet&apos; and &apos;CommitLog&apos;? Could you tell me more about why we want to be consistent here?

&gt;&gt; Websites/perf.webkit.org/public/v3/models/repository.js:34
&gt;&gt; +
&gt; 
&gt; Looks like this is never used for now. Remove?

Sure, it will be used in UI change patch.

&gt;&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:49
&gt;&gt; +           assert.equal(content[&apos;commits&apos;][0].id, 87832);
&gt; 
&gt; Why not deepEqual here too?

commits table has a commit_time field which changes between run to run, so we cannot create a commit object that predicts the right time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348256</commentid>
    <comment_count>6</comment_count>
      <attachid>320633</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-13 05:08:49 -0700</bug_when>
    <thetext>Created attachment 320633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348257</commentid>
    <comment_count>7</comment_count>
      <attachid>320633</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-13 05:13:35 -0700</bug_when>
    <thetext>Comment on attachment 320633
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:22
&gt; +                    ALTER TABLE commit_set_items ADD COLUMN commitset_commit_owner integer REFERENCES commits DEFAULT NULL, ADD COLUMN commitset_requires_build boolean DEFAULT FALSE;
&gt; +                    UPDATE TABLE commit_set_items SET commitset_requires_build = TRUE WHERE commitset_patch_file IS NOT NULL;
&gt; +                    ALTER TABLE commit_set_items ADD commitset_item_with_patch_must_requires_build CHECK (commitset_patch_file IS NULL OR commitset_requires_build = TRUE),
&gt; +                        ADD CONSTRAINT commitset_item_with_owned_commit_must_requires_build CHECK (commitset_commit_owner IS NULL OR commitset_requires_build = TRUE);

I may need more comprehensive sql update query which also updates the &apos;requires_build&apos; field of commit set item, which is from same repository, in the same test group but does not have patch specified, to be true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348627</commentid>
    <comment_count>8</comment_count>
      <attachid>320633</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-13 20:52:18 -0700</bug_when>
    <thetext>Comment on attachment 320633
Patch

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

&gt;&gt; Websites/perf.webkit.org/ChangeLog:22
&gt;&gt; +                        ADD CONSTRAINT commitset_item_with_owned_commit_must_requires_build CHECK (commitset_commit_owner IS NULL OR commitset_requires_build = TRUE);
&gt; 
&gt; I may need more comprehensive sql update query which also updates the &apos;requires_build&apos; field of commit set item, which is from same repository, in the same test group but does not have patch specified, to be true.

As I previously mentioned, please move this to the long description section above this. You shouldn&apos;t have something like this as an inline comment.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:98
&gt; +            assert($requires_build !== &apos;t&apos; &amp;&amp; $requires_build !== &apos;f&apos;);

I don&apos;t think we need to assert this if we&apos;re asserting is_bool.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:175
&gt; +        $existing_owner_revisions = array();

I think this should be renamed to something like $owner_revisions_in_set so that it&apos;s clear it&apos;s existing in the set, not somewhere in the database.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:216
&gt; +                $repository = $db-&gt;select_first_row(&apos;repositories&apos;, &apos;repository&apos;, array(&apos;id&apos; =&gt; intval($repository_id)));
&gt; +                if (!$repository)
&gt; +                    exit_with_error(&apos;RepositoryNotFound&apos;, array(&apos;repository&apos; =&gt; $repository_id));
&gt; +                $owner_commit = $db-&gt;select_first_row(&apos;commits&apos;, &apos;commit&apos;, array(&apos;repository&apos; =&gt; intval($repository[&apos;repository_owner&apos;]), &apos;revision&apos; =&gt; $owner_revision));

There&apos;s no need to call intval on these. We&apos;ve already checked that $repository_id is numeric and repository_owner is a value we&apos;re getting out of the database.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:218
&gt; +                    exit_with_error(&apos;InvalidOwnerRevision&apos;, array(&apos;ownerRevision&apos; =&gt; $owner_revision));

You should also report the repository. You can just use &apos;revision&apos;, &apos;repository&apos; as keys since the error name already mentions that they&apos;re about an owner revision.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:224
&gt; +            } else {
&gt; +                $existing_owner_revisions[$revision] = TRUE;
&gt; +            }

Nit: a single line statement shouldn&apos;t have curly brackets around it:
https://webkit.org/code-style-guidelines/#braces-one-line

This is wrong because multiple repositories can have an identical revision. r- because of this.
I think we should use commit IDs instead.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:227
&gt; +            array_push($commit_set, array(&apos;commit&apos; =&gt; $commit_id, &apos;patch_file&apos; =&gt; $patch_file_id, &apos;requires_build&apos; =&gt; !!$owner_revision, &apos;commit_owner&apos; =&gt; $owner_commit_id));

We should initialize requires_build to be always FALSE here.
Instead, we should add a code to set repositories_require_build to true when the owner revision is set.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:230
&gt; +            $repository_commit_set_items_map[$repository_id][] = &amp;$commit_set[count($commit_set) - 1];

This should really be named $repository_to_commit_set_items_map or $commit_set_items_by_repository

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:235
&gt; +            if ($repository &amp;&amp; $repository[&apos;repository_owner&apos;]) {
&gt; +                $repository_owner_list[$repository[&apos;repository_owner&apos;]] = TRUE;
&gt; +                continue;
&gt; +            }

I don&apos;t think we need this code if we checked the commit ID instead.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:178
&gt; +        this._revisionListByOwnedRepository = new Map;

Why don&apos;t we just call this _repositoryToOwnerRevisionMap or something similar?

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:186
&gt; +        this._revisionListByRepository.set(repository, {revision, patch, ownerRevision});

Here, you have to set _revisionListByOwnedRepository. r- because of this. Please write tests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349820</commentid>
    <comment_count>9</comment_count>
      <attachid>321067</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-17 19:30:32 -0700</bug_when>
    <thetext>Created attachment 321067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349836</commentid>
    <comment_count>10</comment_count>
      <attachid>321074</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-17 21:09:34 -0700</bug_when>
    <thetext>Created attachment 321074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350260</commentid>
    <comment_count>11</comment_count>
      <attachid>321074</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-18 23:43:53 -0700</bug_when>
    <thetext>Comment on attachment 321074
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:12
&gt; +            This will be set true whenever commit_set_item specifies a patch file,

This line shouldn&apos;t be indented like this.

&gt; Websites/perf.webkit.org/ChangeLog:14
&gt; +                or commit_set_item is commit with owner commit,
&gt; +                or any other commit from same repository and in same build-request group requires build.

Why are these lines further indented?

&gt; Websites/perf.webkit.org/ChangeLog:18
&gt; +                    UPDATE TABLE commit_set_items SET commitset_requires_build = TRUE WHERE commitset_patch_file IS NOT NULL;

You should also add a query to update every commit_set_items in the same test group.
Something like this (please test it locally):
UPDATE TABLE commit_set_items SET commitset_requires_build = TRUE WHERE commitset_set IN
(SELECT requests1.request_commit_set FROM build_requests as requests1 JOIN build_requests as requests2
ON requests1.request_group = requests2.request_group WHERE requests2.commitset_patch_file IS NOT NULL)

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:225
&gt; +            $owner_commit_id = $owner_commit ? $owner_commit[&apos;commit_id&apos;] : NULL;

This should be done inside the if statement above since we don&apos;t access owner_commit outside the if.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:231
&gt; +            if ($repository &amp;&amp; $repository[&apos;repository_owner&apos;])

It&apos;s cleaner to simply check $owner_commit_id.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:246
&gt; +                exit_with_error(&apos;CommitOwnerMustExistInCommitSet&apos;, array(&apos;owner_commit&apos; =&gt; $required_owner_commit));

I think it would be useful to spit out the owned commit as well. Just store the owned commit ID as the value instead of TRUE in required_owner_commits.

&gt; Websites/perf.webkit.org/public/v3/models/repository.js:29
&gt; +    findOwnedRepositoryByName(name)

Looks like this function is never used. Please exclude it from the patch/commit.

&gt; Websites/perf.webkit.org/server-tests/api-build-requests-tests.js:123
&gt;  
&gt; +

Why two blank lines?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:392
&gt; +            const revisionSets = [{[webkit.id()]: {revision: &apos;191622&apos;}, [macos.id()]: {revision: &apos;15A284&apos;}, [jsc.id()]: {revision: &apos;owned-jsc-6161&apos;, ownerRevision: &apos;191622&apos;}},
&gt; +                {[webkit.id()]: {revision: &apos;191622&apos;}, [macos.id()]: {revision: &apos;15A284&apos;}, [jsc.id()]: {revision: &apos;owned-jsc-9191&apos;, ownerRevision: &apos;192736&apos;}}];

Add another variant where the owner repository isn&apos;t specified at all.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-create-test-group-tests.js:782
&gt; +    it(&apos;should create a test group with a owned commits and a patch&apos;, () =&gt; {

Add another variant where one of the revision doesn&apos;t specify owned commit. e.g. one set specifies system JSC and the other one doesn&apos;t.
Make sure that requires_build is specified for both sets.

&gt; Websites/perf.webkit.org/unit-tests/commit-set-tests.js:54
&gt; +describe(&apos;CustomCommitSet&apos;, () =&gt; {

Nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319071</attachid>
            <date>2017-08-25 02:35:27 -0700</date>
            <delta_ts>2017-08-30 01:10:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175978-20170825023525.patch</filename>
            <type>text/plain</type>
            <size>64801</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTgzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA1YzUyYTQ2NTQxOGUwYzJiYmM5ODhmM2Y4NDU3YTI2OWQ0MDY5MmM1Li4zYzYzMDdmMDc0
MTRmNTkwMDU3MjhhMzNmYmI0YmNhY2I1NzYxMGY4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxNy0wOC0yNSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZSBEYXNoYm9hcmQgYmFja2VuZCBzaG91
bGQgc3VwcG9ydCBBL0IgdGVzdGluZyBmb3Igb3duZWQgY29tcG9uZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYWNrZW5kIGNoYW5nZSBm
b3IgUGVyZm9ybWFuY2UgRGFzaGJvYXJkIHRvIHN1cHBvcnQgQS9CIHRlc3RpbmcgZm9yIG93bmVk
IGNvbXBvbmVudHMuCisKKyAgICAgICAgKiBpbml0LWRhdGFiYXNlLnNxbDogVXBkYXRlZCAnY29t
bWl0X3NldF9pdGVtcycgdGFibGUgdG8gY29udGFpbiBjb21taXQgb3duZXIgaW5mbyBhbmQgd2hl
dGhlciB0aGlzIGNvbW1pdCByZXF1aXJlcyBidWlsZC4KKyAgICAgICAgU1FMIGZvciBleGlzdGlu
ZyBkYXRhYmFzZToKKyAgICAgICAgICAgICdBTFRFUiBUQUJMRSBBREQgQ09MVU1OIGNvbW1pdHNl
dF9jb21taXRfb3duZXIgaW50ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdHMgREVGQVVMVCBOVUxMLCBB
REQgQ09MVU1OIGNvbW1pdHNldF9yZXF1aXJlX2J1aWxkIGJvb2xlYW4gREVGQVVMVCBGQUxTRTsn
CisgICAgICAgICogcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5waHA6IE9ubHkgdG9wIGxldmVs
IHJlcG9zaXRvcnkgc2hvdWxkIHNob3cgb24gdHJpZ2dlcmFibGVzIHBhZ2UuCisgICAgICAgICog
cHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHA6IEFkZGVkICdjb21taXRP
d25lcicgYW5kICdyZXF1aXJlQnVpbGQnIHRvICdyZXZpc2lvbl9pdGVtcycuIEFkZGVkICdjb21t
aXRPd25lcicgZmllbGQgdG8gYSBjb21taXQuCisgICAgICAgICogcHVibGljL2luY2x1ZGUvZGIu
cGhwOiBTaG91bGQgYmUgYWJsZSB0byBpbnNlcnQgYm9vbGVhbiB2YWx1ZSB0byBkYXRhYmFzZSB3
aXRob3V0IGV4cGxpY3RlZCBjb252ZXJ0IHRvICd0JyBvciAnZicuCisgICAgICAgICogcHVibGlj
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocDogQWRkZWQgbG9naWMgdG8gcHJv
Y2VzcyAnY29tbWl0T3duZXInIGFuZCAncmVxdWlyZUJ1aWxkJyBpbiAnY29tbWl0X3NldF9pdGVt
cycuCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvYW5hbHlzaXMtcmVzdWx0cy12aWV3
ZXIuanM6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIucHJvdG90eXBlLnJlbmRlclRl
c3RHcm91cHMucHJvdG90eXBlLmJ1aWxkQ29sdW1ucyk6CisgICAgICAgICogcHVibGljL3YzL2Nv
bXBvbmVudHMvc3ViLWNvbW1pdC12aWV3ZXIuanM6CisgICAgICAgICogcHVibGljL3YzL21vZGVs
cy9idWlsZC1yZXF1ZXN0LmpzOgorICAgICAgICAoQnVpbGRSZXF1ZXN0LmNvbnN0cnVjdEJ1aWxk
UmVxdWVzdHNGcm9tRGF0YSk6CisgICAgICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qczoKKyAgICAgICAgKENvbW1pdFNldCk6IEFkZGVk
ICdjb21taXRPd25lcicgYW5kICdyZXF1aXJlQnVpbGQnIHRvIGNvbW1pdFNldC4KKyAgICAgICAg
KENvbW1pdFNldC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKENvbW1pdFNl
dC5wcm90b3R5cGUuX3VwZGF0ZUZyb21PYmplY3QpOgorICAgICAgICAoQ29tbWl0U2V0LnByb3Rv
dHlwZS5vd25lZFJlcG9zaXRvcmllcyk6CisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLm93
bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KToKKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUu
cmVxdWlyZUJ1aWxkRm9yUmVwb3NpdG9yeSk6CisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBl
LmVxdWFscyk6CisgICAgICAgIChDdXN0b21Db21taXRTZXQpOiBDdXN0b21Db21taXRTZXQgc2hv
dWxkIGJlIGFibGUgdG8gc3RvcmUgY29tbWl0IHdpdGggYW4gb3duZXIgY29tbWl0LgorICAgICAg
ICAoQ3VzdG9tQ29tbWl0U2V0LnByb3RvdHlwZS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkpOgor
ICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0LnByb3RvdHlwZS5lcXVhbHMpOgorICAgICAgICAoQ3Vz
dG9tQ29tbWl0U2V0LnByb3RvdHlwZS5yZXBvc2l0b3JpZXMpOgorICAgICAgICAoQ3VzdG9tQ29t
bWl0U2V0LnByb3RvdHlwZS5yZXZpc2lvbkZvclJlcG9zaXRvcnkpOgorICAgICAgICAoQ3VzdG9t
Q29tbWl0U2V0LnByb3RvdHlwZS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSk6CisgICAgICAg
ICogcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzOgorICAgICAgICAoRGF0YU1vZGVsT2Jq
ZWN0LmVuc3VyZVNpbmdsZXRvbik6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9yZXBvc2l0
b3J5LmpzOgorICAgICAgICAoUmVwb3NpdG9yeS5wcm90b3R5cGUuZmluZE93bmVkUmVwb3NpdG9y
eUJ5TmFtZSk6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzOgorICAg
ICAgICAoVGVzdEdyb3VwLl9yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyk6CisgICAgICAgICog
cHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qczogUmVtb3ZlIGNvZGUgdGhhdCBj
YW4gbmV2ZXIgYmUgcmVhY2hlZC4KKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBl
Ll9yZXRyeUN1cnJlbnRUZXN0R3JvdXApOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9jcmVh
dGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgorICAgICAg
ICAoQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZUFuYWx5c2lzVGFza1dp
dGhHcm91cCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qczogQWRkZWQgdGVzdHMuCisgICAgICAgIChyZXR1cm4uTW9ja0RhdGEuYWRkVGVzdEdyb3Vw
V2l0aE93bmVkUmVwb3NpdG9yaWVzLlRlc3RTZXJ2ZXIuZGF0YWJhc2UudGhlbik6CisgICAgICAg
ICh0aGVuKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRl
c3QtZ3JvdXAtdGVzdHMuanM6IEFkZGVkIHRlc3RzLgorICAgICAgICAocmV0dXJuLmFkZFRyaWdn
ZXJhYmxlQW5kQ3JlYXRlVGFzay5zdHJpbmdfYXBwZWFyZWRfaGVyZS50aGVuLmlkLnRhc2tJZC5p
ZC50aGVuKToKKyAgICAgICAgKHRoZW4pOgorICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJj
ZXMvbW9jay1kYXRhLmpzOiBBZGRlZCBtb2NrIGJ1aWxkIHJlcXVlc3RzIHdpdGggY29tbWl0IHNl
dHMgY29udGFpbiBvd25lZCBjb21taXRzLgorICAgICAgICAoTW9ja0RhdGEuanNjUmVwb3NpdG9y
eUlkKToKKyAgICAgICAgKE1vY2tEYXRhLmFkZE1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KE1vY2tEYXRhLnNldCBhZGRBbm90aGVyTW9ja1Rlc3RHcm91cCk6CisgICAgICAgIChNb2NrRGF0
YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcik6IERlbGV0ZWQuCisgICAgICAg
ICogdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanM6IFR5cG8gZml4LgorICAgICAgICAo
QnVpbGRib3RUcmlnZ2VyYWJsZS5wcm90b3R5cGUuc3luY09uY2UudGhlbik6CisgICAgICAgIChC
dWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5zeW5jT25jZSk6CisKIDIwMTctMDgtMjEgIERl
d2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgUGVyZm9ybWFuY2UgRGFz
aGJvYXJkIHNob3VsZCBiZSBjb21wYXRpYmxlIHdpdGggUEhQIDcuCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKaW5kZXggYzE0MzY5MjA5YjBkNGU3YTYwMGFiZWVi
NDdiZTBjYjhjNmZkNTIzNy4uYzA4NzI2MGZlNDMxZGUzYWE0NDhhODFjZTIxMTZhNmEzYjY1Njli
YyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3Fs
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbApAQCAtMjg3
LDggKzI4NywxMCBAQCBDUkVBVEUgVEFCTEUgY29tbWl0X3NldHMgKAogQ1JFQVRFIFRBQkxFIGNv
bW1pdF9zZXRfaXRlbXMgKAogICAgIGNvbW1pdHNldF9zZXQgaW50ZWdlciBSRUZFUkVOQ0VTIGNv
bW1pdF9zZXRzIE5PVCBOVUxMLAogICAgIGNvbW1pdHNldF9jb21taXQgaW50ZWdlciBSRUZFUkVO
Q0VTIGNvbW1pdHMsCisgICAgY29tbWl0c2V0X2NvbW1pdF9vd25lciBpbnRlZ2VyIFJFRkVSRU5D
RVMgY29tbWl0cyBERUZBVUxUIE5VTEwsCiAgICAgY29tbWl0c2V0X3BhdGNoX2ZpbGUgaW50ZWdl
ciBSRUZFUkVOQ0VTIHVwbG9hZGVkX2ZpbGVzLAogICAgIGNvbW1pdHNldF9yb290X2ZpbGUgaW50
ZWdlciBSRUZFUkVOQ0VTIHVwbG9hZGVkX2ZpbGVzLAorICAgIGNvbW1pdHNldF9yZXF1aXJlX2J1
aWxkIGJvb2xlYW4gREVGQVVMVCBGQUxTRSwKICAgICBDT05TVFJBSU5UIGNvbW1pdHNldF9tdXN0
X2hhdmVfY29tbWl0X29yX3Jvb3QgQ0hFQ0sgKGNvbW1pdHNldF9jb21taXQgSVMgTk9UIE5VTEwg
T1IgY29tbWl0c2V0X3Jvb3RfZmlsZSBJUyBOT1QgTlVMTCksCiAgICAgQ09OU1RSQUlOVCBjb21t
aXRzZXRfd2l0aF9wYXRjaF9tdXN0X2hhdmVfY29tbWl0IENIRUNLIChjb21taXRzZXRfcGF0Y2hf
ZmlsZSBJUyBOVUxMIE9SIGNvbW1pdHNldF9jb21taXQgSVMgTk9UIE5VTEwpKTsKIApkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJsZXMu
cGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJsZXMu
cGhwCmluZGV4IDIzNGJmM2Q1ODc2OGNjNWY4M2MzZTc3NzE1NTJmNTY0ZmE3MDg5YTkuLmEwMTgx
Zjc2NmM1NWYzMzc1ZDIzNjBiNTBiODE4ZTg2NWUzYTc2M2IgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYWRtaW4vdHJpZ2dlcmFibGVzLnBocAorKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5waHAKQEAgLTc2
LDcgKzc2LDcgQEAgaWYgKCRkYikgewogICAgICAgICB9CiAgICAgfQogCi0gICAgJHJlcG9zaXRv
cnlfcm93cyA9ICRkYi0+ZmV0Y2hfdGFibGUoJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5X25h
bWUnKTsKKyAgICAkcmVwb3NpdG9yeV9yb3dzID0gJGRiLT5zZWxlY3Rfcm93cygncmVwb3NpdG9y
aWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnb3duZXInID0+IE5VTEwpLCAnbmFtZScpOwogCiAg
ICAgJHBhZ2UgPSBuZXcgQWRtaW5pc3RyYXRpdmVQYWdlKCRkYiwgJ2J1aWxkX3RyaWdnZXJhYmxl
cycsICd0cmlnZ2VyYWJsZScsIGFycmF5KAogICAgICAgICAnbmFtZScgPT4gYXJyYXkoJ2VkaXRp
bmdfbW9kZScgPT4gJ3N0cmluZycpLApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhw
CmluZGV4IDc2YTk2ZDQwM2JkNTZkNTIzZGVjYzY5OTlkZGNkMzY4NzUxYWYxMTkuLmM2ZGJlOWJh
M2MxMThhYmE2YWY2N2EwZGM4YTRiYjBkYjQ2MDU3ZDEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVz
dHMtZmV0Y2hlci5waHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0Zl
dGNoZXIgewogICAgICAgICAgICAgaWYgKCRyb290X2ZpbGVfaWQpCiAgICAgICAgICAgICAgICAg
JHRoaXMtPmFkZF91cGxvYWRlZF9maWxlKCRyb290X2ZpbGVfaWQpOwogCi0gICAgICAgICAgICBh
cnJheV9wdXNoKCRyZXZpc2lvbl9pdGVtcywgYXJyYXkoJ2NvbW1pdCcgPT4gJHJvd1snY29tbWl0
X2lkJ10sICdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQsICdyb290RmlsZScgPT4gJHJvb3RfZmls
ZV9pZCkpOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkcmV2aXNpb25faXRlbXMsIGFycmF5KAor
ICAgICAgICAgICAgICAgICdjb21taXQnID0+ICRyb3dbJ2NvbW1pdF9pZCddLAorICAgICAgICAg
ICAgICAgICdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQsCisgICAgICAgICAgICAgICAgJ3Jvb3RG
aWxlJyA9PiAkcm9vdF9maWxlX2lkLAorICAgICAgICAgICAgICAgICdjb21taXRPd25lcicgPT4g
JHJvd1snY29tbWl0c2V0X2NvbW1pdF9vd25lciddLAorICAgICAgICAgICAgICAgICdyZXF1aXJl
QnVpbGQnID0+IERhdGFiYXNlOjppc190cnVlKCRyb3dbJ2NvbW1pdHNldF9yZXF1aXJlX2J1aWxk
J10pKSk7CiAKICAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRjb21taXRfaWQsICR0
aGlzLT5jb21taXRzX2J5X2lkKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMCw2
ICsxMzUsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3RzRmV0Y2hlciB7CiAgICAgICAgICAgICBhcnJh
eV9wdXNoKCR0aGlzLT5jb21taXRzLCBhcnJheSgKICAgICAgICAgICAgICAgICAnaWQnID0+ICRj
b21taXRfaWQsCiAgICAgICAgICAgICAgICAgJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lk
LAorICAgICAgICAgICAgICAgICdjb21taXRPd25lcicgPT4gJHJvd1snY29tbWl0c2V0X2NvbW1p
dF9vd25lciddLAogICAgICAgICAgICAgICAgICdyZXZpc2lvbicgPT4gJHJldmlzaW9uLAogICAg
ICAgICAgICAgICAgICd0aW1lJyA9PiBEYXRhYmFzZTo6dG9fanNfdGltZSgkY29tbWl0X3RpbWUp
KSk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9kYi5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhw
CmluZGV4IDIyMTJmMGZlZjZmZmIyNmQ5MDg1YTUyOGUxMjVhNzUwZGU5ZDljMWIuLmVkMGUxZDhj
Zjc2ZjE3ZDJlZjZkOTJmYWE3YmMyY2UwZmY3MDE0MjEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9kYi5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocApAQCAtMTE4LDYgKzExOCw4IEBAIGNsYXNz
IERhdGFiYXNlCiAgICAgICAgICAgICBhc3NlcnQoY3R5cGVfYWxudW1fdW5kZXJzY29yZSgkbmFt
ZSkpOwogICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29sdW1uX25hbWVzLCAkbmFtZSk7CiAgICAg
ICAgICAgICBhcnJheV9wdXNoKCRwbGFjZWhvbGRlcnMsICckJyAuICRpKTsKKyAgICAgICAgICAg
IGlmIChpc19ib29sKCRjdXJyZW50X3ZhbHVlKSkKKyAgICAgICAgICAgICAgICAkY3VycmVudF92
YWx1ZSA9ICR0aGlzLT50b19kYXRhYmFzZV9ib29sZWFuKCRjdXJyZW50X3ZhbHVlKTsKICAgICAg
ICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJGN1cnJlbnRfdmFsdWUpOwogICAgICAgICAgICAg
JGkrKzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocApp
bmRleCA0ZTU3YWQ3ZGY3YjU4MDE4MGNjNGY0YzcxMzBkNmYzYWU0ZTlkMjVhLi4wMTk2NzkzMWRi
YzM5MjgwY2FiNmU1NDU1MzlmNWNmZGE5M2MyNTlmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0
ZS10ZXN0LWdyb3VwLnBocApAQCAtNTEsNyArNTEsNiBAQCBmdW5jdGlvbiBtYWluKCkKICAgICAg
ICAgaWYgKCRkdXBsaWNhdGVfdGVzdF9ncm91cCkKICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignRHVwbGljYXRlVGVzdEdyb3VwTmFtZScsIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ3Rl
c3RHcm91cCcgPT4gJGR1cGxpY2F0ZV90ZXN0X2dyb3VwWyd0ZXN0Z3JvdXBfaWQnXSkpOwogCi0g
ICAgICAgIC8vIEZJWE1FOiBBZGQgYSBjaGVjayBmb3IgZHVwbGljYXRlIHRlc3QgZ3JvdXAgbmFt
ZS4KICAgICAgICAgJHRyaWdnZXJhYmxlID0gZmluZF90cmlnZ2VyYWJsZV9mb3JfdGFzaygkZGIs
ICR0YXNrX2lkKTsKICAgICAgICAgaWYgKCR0cmlnZ2VyYWJsZSkgewogICAgICAgICAgICAgJHRy
aWdnZXJhYmxlX2lkID0gJHRyaWdnZXJhYmxlWydpZCddOwpAQCAtOTMsNyArOTIsNyBAQCBmdW5j
dGlvbiBtYWluKCkKICAgICAgICAgJG5lZWRfdG9fYnVpbGQgPSBGQUxTRTsKICAgICAgICAgZm9y
ZWFjaCAoJGNvbW1pdF9saXN0WydzZXQnXSBhcyAkY29tbWl0X3JvdykgewogICAgICAgICAgICAg
JGNvbW1pdF9yb3dbJ3NldCddID0gJGNvbW1pdF9zZXRfaWQ7Ci0gICAgICAgICAgICAkbmVlZF90
b19idWlsZCA9ICRuZWVkX3RvX2J1aWxkIHx8ICRjb21taXRfcm93WydwYXRjaF9maWxlJ107Cisg
ICAgICAgICAgICAkbmVlZF90b19idWlsZCA9ICRuZWVkX3RvX2J1aWxkIHx8ICRjb21taXRfcm93
WydyZXF1aXJlX2J1aWxkJ107CiAgICAgICAgICAgICAkZGItPmluc2VydF9yb3coJ2NvbW1pdF9z
ZXRfaXRlbXMnLCAnY29tbWl0c2V0JywgJGNvbW1pdF9yb3csICdjb21taXQnKTsKICAgICAgICAg
fQogICAgICAgICAkcmVwb3NpdG9yeV9ncm91cCA9ICRjb21taXRfbGlzdFsncmVwb3NpdG9yeV9n
cm91cCddOwpAQCAtMTI4LDcgKzEyNyw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgICAgICAgICAg
ICAgICdvcmRlcicgPT4gJG9yZGVyLAogICAgICAgICAgICAgICAgICdjb21taXRfc2V0JyA9PiAk
Y29uZmlnWydjb21taXRfc2V0J10pKTsKICAgICAgICAgICAgICRvcmRlcisrOwotICAgICAgICB9
ICAgICAgICAKKyAgICAgICAgfQogICAgIH0KIAogICAgICRvcmRlciA9IDA7CkBAIC0xNTgsNiAr
MTU3LDI1IEBAIGZ1bmN0aW9uIGNvbW1pdF9zZXRzX2Zyb21fcmV2aXNpb25fc2V0cygkZGIsICR0
cmlnZ2VyYWJsZV9pZCwgJHJldmlzaW9uX3NldF9saXN0CiAKICAgICAkZmluZGVyID0gbmV3IFJl
cG9zaXRvcnlHcm91cEZpbmRlcigkZGIsICR0cmlnZ2VyYWJsZV9pZCk7CiAgICAgJGNvbW1pdF9z
ZXRfbGlzdCA9IGFycmF5KCk7CisgICAgJHJlcG9zaXRvcnlfcmVxdWlyZV9idWlsZCA9IGFycmF5
KCk7CisgICAgZm9yZWFjaCAoJHJldmlzaW9uX3NldF9saXN0IGFzICRyZXZpc2lvbl9zZXQpIHsK
KyAgICAgICAgZm9yZWFjaCAoJHJldmlzaW9uX3NldCBhcyAkcmVwb3NpdG9yeV9pZCA9PiAkZGF0
YSkgeworICAgICAgICAgICAgaWYgKCRyZXBvc2l0b3J5X2lkID09ICdjdXN0b21Sb290cycpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJHJl
cG9zaXRvcnlfaWQpKQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJl
cG9zaXRvcnknLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQpKTsKKworICAg
ICAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YSkpCisgICAgICAgICAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdJbnZhbGlkUmVwb3NpdG9yeURhdGEnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJl
cG9zaXRvcnlfaWQsICdkYXRhJyA9PiAkZGF0YSkpOworCisgICAgICAgICAgICAkcGF0Y2hfZmls
ZV9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ3BhdGNoJyk7CisgICAgICAgICAgICBpZiAoJHBhdGNo
X2ZpbGVfaWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJHBhdGNoX2ZpbGVf
aWQpIHx8ICEkZGItPnNlbGVjdF9maXJzdF9yb3coJ3VwbG9hZGVkX2ZpbGVzJywgJ2ZpbGUnLCBh
cnJheSgnaWQnID0+ICRwYXRjaF9maWxlX2lkKSkpCisgICAgICAgICAgICAgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignSW52YWxpZFBhdGNoRmlsZScsIGFycmF5KCdwYXRjaCcgPT4gJHBhdGNoX2Zp
bGVfaWQpKTsKKyAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRyZXBvc2l0b3J5X3JlcXVpcmVf
YnVpbGQsICRyZXBvc2l0b3J5X2lkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
ICAgICBmb3JlYWNoICgkcmV2aXNpb25fc2V0X2xpc3QgYXMgJHJldmlzaW9uX3NldCkgewogICAg
ICAgICBpZiAoIWNvdW50KCRyZXZpc2lvbl9zZXQpKQogICAgICAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdJbnZhbGlkUmV2aXNpb25TZXRzJywgYXJyYXkoJ3JldmlzaW9uU2V0cycgPT4gJHJldmlz
aW9uX3NldF9saXN0KSk7CkBAIC0xNjUsMjEgKzE4MywxNyBAQCBmdW5jdGlvbiBjb21taXRfc2V0
c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRf
bGlzdAogICAgICAgICAkY29tbWl0X3NldCA9IGFycmF5KCk7CiAgICAgICAgICRyZXBvc2l0b3J5
X2xpc3QgPSBhcnJheSgpOwogICAgICAgICAkcmVwb3NpdG9yeV93aXRoX3BhdGNoID0gYXJyYXko
KTsKKwogICAgICAgICBmb3JlYWNoICgkcmV2aXNpb25fc2V0IGFzICRyZXBvc2l0b3J5X2lkID0+
ICRkYXRhKSB7CiAgICAgICAgICAgICBpZiAoJHJlcG9zaXRvcnlfaWQgPT0gJ2N1c3RvbVJvb3Rz
JykgewogICAgICAgICAgICAgICAgICRmaWxlX2lkX2xpc3QgPSAkZGF0YTsKICAgICAgICAgICAg
ICAgICBmb3JlYWNoICgkZmlsZV9pZF9saXN0IGFzICRmaWxlX2lkKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghaXNfbnVtZXJpYygkZmlsZV9pZCkgfHwgISRkYi0+c2VsZWN0X2ZpcnN0X3Jv
dygndXBsb2FkZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdpZCcgPT4gJGZpbGVfaWQpKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFVwbG9hZGVkRmls
ZScsIGFycmF5KCdmaWxlJyA9PiAkZmlsZV9pZCkpOwotICAgICAgICAgICAgICAgICAgICBhcnJh
eV9wdXNoKCRjb21taXRfc2V0LCBhcnJheSgncm9vdF9maWxlJyA9PiAkZmlsZV9pZCwgJ3BhdGNo
X2ZpbGUnID0+IE5VTEwpKTsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0
X3NldCwgYXJyYXkoJ3Jvb3RfZmlsZScgPT4gJGZpbGVfaWQsICdwYXRjaF9maWxlJyA9PiBOVUxM
LCAncmVxdWlyZV9idWlsZCcgPT4gRkFMU0UsICdjb21taXRfb3duZXInID0+IE5VTEwpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJHJlcG9zaXRvcnlfaWQpKQotICAgICAgICAg
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcG9zaXRvcnknLCBhcnJheSgncmVwb3Np
dG9yeScgPT4gJHJlcG9zaXRvcnlfaWQpKTsKLQotICAgICAgICAgICAgaWYgKCFpc19hcnJheSgk
ZGF0YSkpCi0gICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwb3NpdG9y
eURhdGEnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdkYXRhJyA9PiAk
ZGF0YSkpOwogCiAgICAgICAgICAgICAkcmV2aXNpb24gPSBhcnJheV9nZXQoJGRhdGEsICdyZXZp
c2lvbicpOwogICAgICAgICAgICAgaWYgKCEkcmV2aXNpb24pCkBAIC0xODksMjAgKzIwMywzMyBA
QCBmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFi
bGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdAogICAgICAgICAgICAgaWYgKCEkY29tbWl0KQogICAg
ICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmV2aXNpb25Ob3RGb3VuZCcsIGFycmF5KCdy
ZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9PiAkcmV2aXNpb24pKTsK
IAorICAgICAgICAgICAgJHJlcG9zaXRvcnkgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ3JlcG9z
aXRvcmllcycsICdyZXBvc2l0b3J5JywgYXJyYXkoJ2lkJyA9PiBpbnR2YWwoJHJlcG9zaXRvcnlf
aWQpKSk7CisgICAgICAgICAgICAkb3duZXJfcmV2aXNpb24gPSBhcnJheV9nZXQoJGRhdGEsICdv
d25lclJldmlzaW9uJyk7CiAgICAgICAgICAgICAkcGF0Y2hfZmlsZV9pZCA9IGFycmF5X2dldCgk
ZGF0YSwgJ3BhdGNoJyk7Ci0gICAgICAgICAgICBpZiAoJHBhdGNoX2ZpbGVfaWQpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJHBhdGNoX2ZpbGVfaWQpIHx8ICEkZGItPnNlbGVj
dF9maXJzdF9yb3coJ3VwbG9hZGVkX2ZpbGVzJywgJ2ZpbGUnLCBhcnJheSgnaWQnID0+ICRwYXRj
aF9maWxlX2lkKSkpCi0gICAgICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxp
ZFBhdGNoRmlsZScsIGFycmF5KCdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQpKTsKKyAgICAgICAg
ICAgIGlmICgkcGF0Y2hfZmlsZV9pZCkKICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRyZXBv
c2l0b3J5X3dpdGhfcGF0Y2gsICRyZXBvc2l0b3J5X2lkKTsKKworICAgICAgICAgICAgJG93bmVy
X2NvbW1pdHMgPSBOVUxMOworICAgICAgICAgICAgaWYgKCRvd25lcl9yZXZpc2lvbikgeworICAg
ICAgICAgICAgICAgICRvd25lcl9jb21taXRzID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21t
aXRzJywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiBpbnR2YWwoJHJlcG9zaXRvcnlb
J3JlcG9zaXRvcnlfb3duZXInXSksICdyZXZpc2lvbicgPT4gJG93bmVyX3JldmlzaW9uKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCEkZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdF9vd25lcnNo
aXBzJywgJ2NvbW1pdCcsIGFycmF5KCdvd25lZCcgPT4gJGNvbW1pdFsnY29tbWl0X2lkJ10sICdv
d25lcicgPT4gJG93bmVyX2NvbW1pdHNbJ2NvbW1pdF9pZCddKSkpCisgICAgICAgICAgICAgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZENvbW1pdE93bmVyc2hpcCcsIGFycmF5KCdjb21t
aXRfb3duZXInID0+ICRvd25lcl9jb21taXRzWydjb21taXRfaWQnXSwgJ2NvbW1pdF9vd25lZCcg
PT4gJGNvbW1pdFsnY29tbWl0X2lkJ10pKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
YXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdFsnY29tbWl0
X2lkJ10sICdwYXRjaF9maWxlJyA9PiAkcGF0Y2hfZmlsZV9pZCkpOworICAgICAgICAgICAgJHJl
cXVpcmVfYnVpbGQgPSAkb3duZXJfcmV2aXNpb24gfHwgaW5fYXJyYXkoJHJlcG9zaXRvcnlfaWQs
ICRyZXBvc2l0b3J5X3JlcXVpcmVfYnVpbGQpOworCisgICAgICAgICAgICBhcnJheV9wdXNoKCRj
b21taXRfc2V0LCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0Wydjb21taXRfaWQnXSwgJ3BhdGNo
X2ZpbGUnID0+ICRwYXRjaF9maWxlX2lkLCAncmVxdWlyZV9idWlsZCcgPT4gJHJlcXVpcmVfYnVp
bGQsICdjb21taXRfb3duZXInID0+ICRvd25lcl9jb21taXRzID8gJG93bmVyX2NvbW1pdHNbJ2Nv
bW1pdF9pZCddIDogTlVMTCkpOworCisgICAgICAgICAgICBpZiAoISRyZXBvc2l0b3J5KQorICAg
ICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmVwb3NpdG9yeU5vdEZvdW5kJywgYXJyYXko
J3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkKSk7CisgICAgICAgICAgICBpZiAoJHJlcG9z
aXRvcnlbJ3JlcG9zaXRvcnlfb3duZXInXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGFycmF5X3B1c2goJHJlcG9zaXRvcnlfbGlzdCwgJHJlcG9zaXRvcnlfaWQpOwog
ICAgICAgICB9CiAKICAgICAgICAgJHJlcG9zaXRvcnlfZ3JvdXBfaWQgPSAkZmluZGVyLT5maW5k
X2J5X3JlcG9zaXRvcmllcygkcmVwb3NpdG9yeV9saXN0KTsKICAgICAgICAgaWYgKCEkcmVwb3Np
dG9yeV9ncm91cF9pZCkKLSAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRjaGluZ1Jl
cG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpcycgPT4gJHJlcG9zaXRvcnlfbGlzdCkp
OworICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3Vw
JywgYXJyYXkoJ3JlcG9zaXRvcmllcycgPT4gJHJlcG9zaXRvcnlfbGlzdCkpOwogCiAgICAgICAg
IGZvcmVhY2ggKCRyZXBvc2l0b3J5X3dpdGhfcGF0Y2ggYXMgJHJlcG9zaXRvcnlfaWQpIHsKICAg
ICAgICAgICAgIGlmICghJGZpbmRlci0+YWNjZXB0c19wYXRjaCgkcmVwb3NpdG9yeV9ncm91cF9p
ZCwgJHJlcG9zaXRvcnlfaWQpKQpAQCAtMjMzLDE0ICsyNjAsMTQgQEAgZnVuY3Rpb24gZW5zdXJl
X2NvbW1pdF9zZXRzKCRkYiwgJHRyaWdnZXJhYmxlX2lkLCAkY29tbWl0X3NldHNfaW5mbykgewog
ICAgICAgICAgICAgaWYgKCEkY29tbWl0KQogICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignUmV2aXNpb25Ob3RGb3VuZCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9u
YW1lLCAncmV2aXNpb24nID0+ICRyZXZpc2lvbikpOwogICAgICAgICAgICAgYXJyYXlfc2V0X2Rl
ZmF1bHQoJGNvbW1pdF9zZXRzLCAkaSwgYXJyYXkoJ3NldCcgPT4gYXJyYXkoKSkpOwotICAgICAg
ICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldHNbJGldWydzZXQnXSwgYXJyYXkoJ2NvbW1pdCcg
PT4gJGNvbW1pdFsnY29tbWl0X2lkJ10sICdwYXRjaF9maWxlJyA9PiBOVUxMKSk7CisgICAgICAg
ICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0c1skaV1bJ3NldCddLCBhcnJheSgnY29tbWl0JyA9
PiAkY29tbWl0Wydjb21taXRfaWQnXSwgJ3BhdGNoX2ZpbGUnID0+IE5VTEwsICdyZXF1aXJlX2J1
aWxkJyA9PiBGQUxTRSwgJ2NvbW1pdF9vd25lcicgPT4gTlVMTCkpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgJGZpbmRlciA9IG5ldyBSZXBvc2l0b3J5R3JvdXBGaW5kZXIoJGRiLCAkdHJpZ2dl
cmFibGVfaWQpOwogICAgICRyZXBvc2l0b3J5X2dyb3VwX2lkID0gJGZpbmRlci0+ZmluZF9ieV9y
ZXBvc2l0b3JpZXMoJHJlcG9zaXRvcnlfbGlzdCk7CiAgICAgaWYgKCEkcmVwb3NpdG9yeV9ncm91
cF9pZCkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3Vw
JywgYXJyYXkoJ3JlcG9zaXRvcmlzJyA9PiAkcmVwb3NpdG9yeV9saXN0KSk7CisgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignTm9NYXRjaGluZ1JlcG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0
b3JpZXMnID0+ICRyZXBvc2l0b3J5X2xpc3QpKTsKIAogICAgIGlmIChjb3VudCgkY29tbWl0X3Nl
dHMpIDwgMikKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0U2V0cycsIGFy
cmF5KCdjb21taXRTZXRzJyA9PiAkY29tbWl0X3NldHNfaW5mbykpOwpAQCAtMjU3LDQgKzI4NCw0
IEBAIGZ1bmN0aW9uIGVuc3VyZV9jb21taXRfc2V0cygkZGIsICR0cmlnZ2VyYWJsZV9pZCwgJGNv
bW1pdF9zZXRzX2luZm8pIHsKIAogbWFpbigpOwogCi0/PgorPz4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvYW5hbHlzaXMtcmVzdWx0cy12aWV3ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvYW5hbHlzaXMtcmVzdWx0cy12aWV3ZXIuanMK
aW5kZXggZWNkNmUyZjQ1MDZkMjQwZTcxNTgzYTE2YjZkZTZjYzk3NDA5ZjFlMS4uMDkzOGU3NzFk
NTBjMjAyMzU3ZTZmMDAwYTlmMGY4Y2U2YjkwN2RhMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2FuYWx5c2lzLXJlc3VsdHMtdmlld2Vy
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9h
bmFseXNpcy1yZXN1bHRzLXZpZXdlci5qcwpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIEFuYWx5
c2lzUmVzdWx0c1ZpZXdlciBleHRlbmRzIFJlc3VsdHNUYWJsZSB7CiAgICAgICAgICAgICAgICAg
dGhpcy5fcmFuZ2VTZWxlY3RvckxhYmVscy5tYXAoKGxhYmVsKSA9PiBlbGVtZW50KCd0aCcsIGxh
YmVsKSksCiAgICAgICAgICAgICAgICAgaGVhZGVycywKICAgICAgICAgICAgICAgICBjb2x1bW5D
b3VudCA/IGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IGNvbHVtbkNvdW50ICsgMSwgY2xhc3M6ICdz
dGFja2luZy1ibG9jayd9KSA6IFtdLAotICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKICAg
ICAgICAgfTsKICAgICAgICAgY29uc3QgYnVpbGRDb2x1bW5zID0gKGNvbHVtbnMsIHJvdywgcm93
SW5kZXgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBbCkBAIC0xNDMsNyArMTQzLDcgQEAgY2xh
c3MgQW5hbHlzaXNSZXN1bHRzVmlld2VyIGV4dGVuZHMgUmVzdWx0c1RhYmxlIHsKICAgICAgICAg
ICAgICAgICBjb2x1bW5zLAogICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb2x1bW5zQnlSb3db
cm93SW5kZXhdLAogICAgICAgICAgICAgXTsKLSAgICAgICAgfQorICAgICAgICB9OwogICAgICAg
ICB0aGlzLnJlbmRlclRhYmxlKG1ldHJpYy5tYWtlRm9ybWF0dGVyKDQpLCBbe3Jvd3N9XSwgJ1Bv
aW50JywgYnVpbGRIZWFkZXJzLCBidWlsZENvbHVtbnMpOwogCiAgICAgICAgIEluc3RydW1lbnRh
dGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdBbmFseXNpc1Jlc3VsdHNWaWV3ZXInLCAncmVuZGVyVGVz
dEdyb3VwcycpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5FeHBh
bmRhYmxlUm93ID0gY2xhc3MgZXh0ZW5kcyBSZXN1bHRzVGFibGVSb3cgewogICAgICAgICAgICAg
Q29tcG9uZW50QmFzZS5jcmVhdGVMaW5rKCcoRXhwYW5kKScsICdFeHBhbmQnLCB0aGlzLl9jYWxs
YmFjayksCiAgICAgICAgIF0pOwogICAgIH0KLX0KK307CiAKIEFuYWx5c2lzUmVzdWx0c1ZpZXdl
ci5Db21taXRTZXRJblRlc3RHcm91cCA9IGNsYXNzIHsKICAgICBjb25zdHJ1Y3Rvcih0ZXN0R3Jv
dXAsIGNvbW1pdFNldCwgc3VjY2VlZGluZ0NvbW1pdFNldCkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBB
bmFseXNpc1Jlc3VsdHNWaWV3ZXIuQ29tbWl0U2V0SW5UZXN0R3JvdXAgPSBjbGFzcyB7CiAgICAg
dGVzdEdyb3VwKCkgeyByZXR1cm4gdGhpcy5fdGVzdEdyb3VwOyB9CiAgICAgY29tbWl0U2V0KCkg
eyByZXR1cm4gdGhpcy5fY29tbWl0U2V0OyB9CiAgICAgc3VjY2VlZGluZ0NvbW1pdFNldCgpIHsg
cmV0dXJuIHRoaXMuX3N1Y2NlZWRpbmdDb21taXRTZXQ7IH0KLX0KK307CiAKIEFuYWx5c2lzUmVz
dWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0Jsb2NrID0gY2xhc3MgewogICAgIGNvbnN0cnVj
dG9yKHRlc3RHcm91cCwgYW5hbHlzaXNSZXN1bHRzVmlldywgZ3JvdXBUb0NlbGxNYXAsIGNhbGxi
YWNrKQpAQCAtNTIzLDQgKzUyMyw0IEBAIEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBT
dGFja2luZ0Jsb2NrID0gY2xhc3MgewogICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl90ZXN0
R3JvdXAuY29tcGFyZVRlc3RSZXN1bHRzKHRoaXMuX2FuYWx5c2lzUmVzdWx0c1ZpZXcubWV0cmlj
KCksIHN0YXJ0VmFsdWVzLCBlbmRWYWx1ZXMpOwogICAgICAgICByZXR1cm4ge2xhYmVsOiByZXN1
bHQubGFiZWwsIHRpdGxlOiByZXN1bHQuZnVsbExhYmVsLCBzdGF0dXM6IHJlc3VsdC5zdGF0dXN9
OwogICAgIH0KLX0KK307CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2NvbXBvbmVudHMvc3ViLWNvbW1pdC12aWV3ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvc3ViLWNvbW1pdC12aWV3ZXIuanMKaW5kZXgg
NzllMTg1NDNmN2I1NTVhMzYwOTFmYzI0MWM0ZDkzODZhYTQ5Zjg5ZS4uZjliOGQ3ZDJhMzNmNzc2
MGU3YTRjZGI3MWYzOTI1YjliZTg4YTU5YyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3N1Yi1jb21taXQtdmlld2VyLmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9zdWItY29tbWl0LXZp
ZXdlci5qcwpAQCAtOTUsNCArOTUsNCBAQCBjbGFzcyBTdWJDb21taXRWaWV3ZXIgZXh0ZW5kcyBD
b21wb25lbnRCYXNlIHsKICAgICB9CiB9CiAKLUNvbXBvbmVudEJhc2UuZGVmaW5lRWxlbWVudCgn
c3ViLWNvbW1pdC12aWV3ZXInLCBTdWJDb21taXRWaWV3ZXIpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK0NvbXBvbmVudEJhc2UuZGVmaW5lRWxlbWVudCgnc3ViLWNvbW1pdC12aWV3ZXIn
LCBTdWJDb21taXRWaWV3ZXIpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggODE5YjYzYzRmZWQ3
N2NjZWFiMzI0ZWQyODVhOGE4YTdkZGMwNDcyOC4uMDZlOTJkOGM1NDU3MzlkOWM5NmJjMTM4YWQ1
NGI3MjIzYTc3YTdmNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0xNDMsNiArMTQzLDcgQEAg
Y2xhc3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgICAg
ICAgICBpdGVtLmNvbW1pdCA9IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdCk7CiAgICAg
ICAgICAgICAgICAgaXRlbS5wYXRjaCA9IGl0ZW0ucGF0Y2ggPyBVcGxvYWRlZEZpbGUuZmluZEJ5
SWQoaXRlbS5wYXRjaCkgOiBudWxsOwogICAgICAgICAgICAgICAgIGl0ZW0ucm9vdEZpbGUgPSBp
dGVtLnJvb3RGaWxlID8gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGl0ZW0ucm9vdEZpbGUpIDogbnVs
bDsKKyAgICAgICAgICAgICAgICBpdGVtLmNvbW1pdE93bmVyID0gaXRlbS5jb21taXRPd25lciA/
IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdE93bmVyKSA6IG51bGw7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICByYXdEYXRhLmN1c3RvbVJvb3RzID0gcmF3RGF0YS5jdXN0b21Sb290
cy5tYXAoKGZpbGVJZCkgPT4gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCkpOwogICAgICAg
ICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocmF3RGF0YS5pZCwgcmF3RGF0
YSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvY29tbWl0LXNldC5qcwppbmRleCBhMTI1ZjEwZjE5ODdiMTAxYWE4ZmY5OGY5M2MyNTdhOWIy
YzViMGI3Li5hZmRjYWMxNGQ5ZWQ5NjM3M2IyNjhhNTUzNzQ1N2I5NzIwOWIxNjZhIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1p
dC1zZXQuanMKQEAgLTksNiArOSw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2Rl
bE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IG5ldyBNYXA7
CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwID0gbmV3IE1hcDsKICAgICAgICAg
dGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3JlcG9z
aXRvcnlUb0NvbW1pdE93bmVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9y
eVRvUmVxdWlyZUJ1aWxkTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fbGF0ZXN0Q29tbWl0
VGltZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2N1c3RvbVJvb3RzID0gW107CiAgICAgICAgIHRo
aXMuX2FsbFJvb3RGaWxlcyA9IFtdOwpAQCAtMjQsNiArMjYsOCBAQCBjbGFzcyBDb21taXRTZXQg
ZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21t
aXRNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuY2xlYXIo
KTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5jbGVhcigpOworICAgICAgICB0
aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5jbGVhcigpOworICAgICAgICB0aGlzLl9y
ZXBvc2l0b3J5VG9SZXF1aXJlQnVpbGRNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fcmVwb3Np
dG9yaWVzID0gW107CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZyb21PYmplY3Qob2JqZWN0KTsKICAg
ICB9CkBAIC0zNiw5ICs0MCwxMiBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxP
YmplY3QgewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY29tbWl0IGluc3RhbmNlb2YgQ29t
bWl0TG9nKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpdGVtLnBhdGNoIHx8IGl0ZW0u
cGF0Y2ggaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwogICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIWl0ZW0ucm9vdEZpbGUgfHwgaXRlbS5yb290RmlsZSBpbnN0YW5jZW9mIFVwbG9hZGVkRmls
ZSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghaXRlbS5jb21taXRPd25lciB8fCBpdGVt
LmNvbW1pdE93bmVyIGluc3RhbmNlb2YgQ29tbWl0TG9nKTsKICAgICAgICAgICAgIGNvbnN0IHJl
cG9zaXRvcnkgPSBjb21taXQucmVwb3NpdG9yeSgpOwogICAgICAgICAgICAgdGhpcy5fcmVwb3Np
dG9yeVRvQ29tbWl0TWFwLnNldChyZXBvc2l0b3J5LCBjb21taXQpOwogICAgICAgICAgICAgdGhp
cy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuc2V0KHJlcG9zaXRvcnksIGl0ZW0ucGF0Y2gpOworICAg
ICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuc2V0KHJlcG9zaXRvcnks
IGl0ZW0uY29tbWl0T3duZXIpOworICAgICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUmVxdWly
ZUJ1aWxkTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVCdWlsZCk7CiAgICAgICAgICAg
ICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnJvb3RGaWxl
KTsKICAgICAgICAgICAgIGlmIChpdGVtLnJvb3RGaWxlKQogICAgICAgICAgICAgICAgIHJvb3RG
aWxlcy5hZGQoaXRlbS5yb290RmlsZSk7CkBAIC00OSw2ICs1Niw3IEBAIGNsYXNzIENvbW1pdFNl
dCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgfQogCiAgICAgcmVwb3NpdG9yaWVzKCkg
eyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yaWVzOyB9CisgICAgb3duZWRSZXBvc2l0b3JpZXMoKSB7
IHJldHVybiB0aGlzLl9yZXBvc2l0b3JpZXMuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiB7IHJldHVy
biByZXBvc2l0b3J5Lm93bmVySWQoKTsgfSkgfTsKICAgICBjdXN0b21Sb290cygpIHsgcmV0dXJu
IHRoaXMuX2N1c3RvbVJvb3RzOyB9CiAgICAgYWxsUm9vdEZpbGVzKCkgeyByZXR1cm4gdGhpcy5f
YWxsUm9vdEZpbGVzOyB9CiAgICAgY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJl
dHVybiB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9CkBAIC01
OSw4ICs2NywxNSBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3Qgewog
ICAgICAgICByZXR1cm4gY29tbWl0ID8gY29tbWl0LnJldmlzaW9uKCkgOiBudWxsOwogICAgIH0K
IAorICAgIG93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCisgICAgeworICAg
ICAgICBjb25zdCBjb21taXQgPSB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5nZXQo
cmVwb3NpdG9yeSk7CisgICAgICAgIHJldHVybiBjb21taXQgPyBjb21taXQucmV2aXNpb24oKSA6
IG51bGw7CisgICAgfQorCiAgICAgcGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0
dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KTsgfQogICAgIHJv
b3RGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1Jv
b3RNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9CisgICAgcmVxdWlyZUJ1aWxkRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9SZXF1aXJlQnVpbGRNYXAuZ2V0
KHJlcG9zaXRvcnkpOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgRGF0
ZSBvYmplY3QuCiAgICAgbGF0ZXN0Q29tbWl0VGltZSgpCkBAIC04NSw2ICsxMDAsMTAgQEAgY2xh
c3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5n
ZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuZ2V0KHJlcG9zaXRv
cnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlz
Ll9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3Jl
cG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb1JlcXVpcmVCdWls
ZE1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb1JlcXVpcmVCdWlsZE1h
cC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBDb21taXRTZXQuYXJlQ3VzdG9tUm9vdHNFcXVhbCh0aGlzLl9j
dXN0b21Sb290cywgb3RoZXIuX2N1c3RvbVJvb3RzKTsKICAgICB9CkBAIC0xMzksNyArMTU4LDcg
QEAgY2xhc3MgTWVhc3VyZW1lbnRDb21taXRTZXQgZXh0ZW5kcyBDb21taXRTZXQgewogICAgIH0K
IAogICAgIC8vIFVzZSBDb21taXRTZXQncyBzdGF0aWMgbWFwcyBiZWNhdXNlIE1lYXN1cmVtZW50
Q29tbWl0U2V0IGFuZCBDb21taXRTZXQgYXJlIGxvZ2ljYWxseSBvZiB0aGUgc2FtZSB0eXBlLgot
ICAgIC8vIEZJWE1FOiBJZGFlbGx5LCBEYXRhTW9kZWwgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGlz
IGJ1dCB0cmF2ZXJzaW5nIHByb3RvdHlwZSBjaGFpbiBpcyBleHBlbnNpdmUuCisgICAgLy8gRklY
TUU6IElkZWFsbHksIERhdGFNb2RlbCBzaG91bGQgdGFrZSBjYXJlIG9mIHRoaXMgYnV0IHRyYXZl
cnNpbmcgcHJvdG90eXBlIGNoYWluIGlzIGV4cGVuc2l2ZS4KICAgICBuYW1lZFN0YXRpY01hcChu
YW1lKSB7IHJldHVybiBDb21taXRTZXQubmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KICAgICBlbnN1
cmVOYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiBDb21taXRTZXQuZW5zdXJlTmFtZWRTdGF0
aWNNYXAobmFtZSk7IH0KICAgICBzdGF0aWMgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4g
Q29tbWl0U2V0Lm5hbWVkU3RhdGljTWFwKG5hbWUpOyB9CkBAIC0xNTcsMTQgKzE3NiwxOCBAQCBj
bGFzcyBDdXN0b21Db21taXRTZXQgewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeSA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMu
X3JldmlzaW9uTGlzdEJ5T3duZWRSZXBvc2l0b3J5ID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5f
Y3VzdG9tUm9vdHMgPSBbXTsKICAgICB9CiAKLSAgICBzZXRSZXZpc2lvbkZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCkKKyAgICBzZXRSZXZpc2lvbkZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCwgb3duZXJSZXZpc2lv
biA9IG51bGwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXBvc2l0b3J5IGluc3Rh
bmNlb2YgUmVwb3NpdG9yeSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRjaCB8fCBwYXRj
aCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7Ci0gICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5
UmVwb3NpdG9yeS5zZXQocmVwb3NpdG9yeSwge3JldmlzaW9uLCBwYXRjaH0pOworICAgICAgICBp
ZiAob3duZXJSZXZpc2lvbikKKyAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5T3duZWRS
ZXBvc2l0b3J5LnNldChyZXBvc2l0b3J5LCB7cmV2aXNpb24sIHBhdGNoLCBvd25lclJldmlzaW9u
fSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3Np
dG9yeS5zZXQocmVwb3NpdG9yeSwge3JldmlzaW9uLCBwYXRjaH0pOwogICAgIH0KIAogICAgIGVx
dWFscyhvdGhlcikKQEAgLTE3Miw2ICsxOTUsMTAgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQob3RoZXIgaW5zdGFuY2VvZiBDdXN0b21Db21taXRTZXQp
OwogICAgICAgICBpZiAodGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LnNpemUgIT0gb3Ro
ZXIuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmICh0aGlzLl9yZXZpc2lvbkxpc3RCeU93bmVkUmVwb3NpdG9yeS5z
aXplICE9IG90aGVyLl9yZXZpc2lvbkxpc3RCeU93bmVkUmVwb3NpdG9yeS5zaXplKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIGZvciAobGV0IHJlcG9zaXRvcnkgb2YgdGhp
cy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LmtleXMoKSkgewogICAgICAgICAgICAgY29uc3Qg
dGhpc1JldmlzaW9uID0gdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LmdldChyZXBvc2l0
b3J5KTsKICAgICAgICAgICAgIGNvbnN0IG90aGVyUmV2aXNpb24gPSBvdGhlci5fcmV2aXNpb25M
aXN0QnlSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KTsKQEAgLTE4MSwxMyArMjA4LDI4IEBAIGNs
YXNzIEN1c3RvbUNvbW1pdFNldCB7CiAgICAgICAgICAgICAgICAgfHwgdGhpc1JldmlzaW9uLnBh
dGNoICE9IG90aGVyUmV2aXNpb24ucGF0Y2gpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQorCisgICAgICAgIGZvciAoY29uc3QgcmVwb3NpdG9yeSBvZiB0aGlzLl9y
ZXZpc2lvbkxpc3RCeU93bmVkUmVwb3NpdG9yeS5rZXlzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IHRoaXNSZXZpc2lvbiA9IHRoaXMuX3JldmlzaW9uTGlzdEJ5T3duZWRSZXBvc2l0b3J5LmdldChy
ZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGNvbnN0IG90aGVyUmV2aXNpb24gPSB0aGlzLl9yZXZp
c2lvbkxpc3RCeU93bmVkUmVwb3NpdG9yeS5nZXQocmVwb3NpdG9yeSk7CisgICAgICAgICAgICBp
ZiAoIXRoaXNSZXZpc2lvbiAhPSAhb3RoZXJSZXZpc2lvbikKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh0aGlzUmV2aXNpb24gJiYgKHRoaXNSZXZpc2lv
bi5yZXZpc2lvbiAhPSBvdGhlclJldmlzaW9uLnJldmlzaW9uCisgICAgICAgICAgICAgICAgfHwg
dGhpc1JldmlzaW9uLnBhdGNoICE9IG90aGVyUmV2aXNpb24ucGF0Y2gKKyAgICAgICAgICAgICAg
ICB8fCB0aGlzUmV2aXNpb24ub3duZXJSZXZpc2lvbiAhPSBvdGhlclJldmlzaW9uLm93bmVyUmV2
aXNpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm4gQ29tbWl0U2V0LmFyZUN1c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMs
IG90aGVyLl9jdXN0b21Sb290cyk7CiAgICAgfQogCi0gICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1
cm4gQXJyYXkuZnJvbSh0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkua2V5cygpKTsgfQor
ICAgIHJlcG9zaXRvcmllcygpIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fcmV2aXNpb25MaXN0
QnlSZXBvc2l0b3J5LmtleXMoKSkuY29uY2F0KEFycmF5LmZyb20odGhpcy5fcmV2aXNpb25MaXN0
QnlPd25lZFJlcG9zaXRvcnkua2V5cygpKSk7fQogICAgIHJldmlzaW9uRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KQogICAgIHsKLSAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9yZXZpc2lvbkxp
c3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICBsZXQgZW50cnkgPSB0aGlz
Ll9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICBpZiAo
ZW50cnkpCisgICAgICAgICAgICByZXR1cm4gZW50cnkucmV2aXNpb247CisgICAgICAgIGVudHJ5
ID0gdGhpcy5fcmV2aXNpb25MaXN0QnlPd25lZFJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOwog
ICAgICAgICBpZiAoIWVudHJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJl
dHVybiBlbnRyeS5yZXZpc2lvbjsKQEAgLTE5OSw2ICsyNDEsMTMgQEAgY2xhc3MgQ3VzdG9tQ29t
bWl0U2V0IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICByZXR1cm4gZW50cnku
cGF0Y2g7CiAgICAgfQorICAgIG93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkp
CisgICAgeworICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuX3JldmlzaW9uTGlzdEJ5T3duZWRS
ZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KTsKKyAgICAgICAgaWYgKCFlbnRyeSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gZW50cnkub3duZXJSZXZpc2lvbjsKKyAg
ICB9CiAgICAgY3VzdG9tUm9vdHMoKSB7IHJldHVybiB0aGlzLl9jdXN0b21Sb290czsgfQogCiAg
ICAgYWRkQ3VzdG9tUm9vdCh1cGxvYWRlZEZpbGUpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcwppbmRleCBmMTg5Mjk4
YTQ3YjQ1OGRjYWI3YjdiYTlmMzU1ZmViOWY0ZWM4MGNhLi44NTA3ZTc5MmI5ODIzZGU1MDc0YzEx
ODI5N2FlY2RmNTIzMWMxMTBjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2RhdGEtbW9kZWwuanMKQEAgLTEyLDcgKzEyLDcgQEAgY2xh
c3MgRGF0YU1vZGVsT2JqZWN0IHsKICAgICB7CiAgICAgICAgIHZhciBzaW5nbGV0b24gPSB0aGlz
LmZpbmRCeUlkKGlkKTsKICAgICAgICAgaWYgKHNpbmdsZXRvbikgewotICAgICAgICAgICAgc2lu
Z2xldG9uLnVwZGF0ZVNpbmdsZXRvbihvYmplY3QpCisgICAgICAgICAgICBzaW5nbGV0b24udXBk
YXRlU2luZ2xldG9uKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gc2luZ2xldG9uOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBuZXcgKHRoaXMpKGlkLCBvYmplY3QpOwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnku
anMKaW5kZXggMDg5ZjYyZTI0MTdlZWIxZTUwNDQ4ZDZiYzA1Nzc2ZGI4NjY1N2FkZC4uY2Y5NDFi
Yzc0ZTExNjNiYWExZjdkYjhjZTc0MGFlZTA5NDhlNWQyZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCkBAIC0y
Niw2ICsyNiwxMiBAQCBjbGFzcyBSZXBvc2l0b3J5IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAg
ICAgICAgIHJldHVybiBtYXAgPyBtYXBbbmFtZV0gOiBudWxsOwogICAgIH0KIAorICAgIGZpbmRP
d25lZFJlcG9zaXRvcnlCeU5hbWUobmFtZSkKKyAgICB7CisgICAgICAgIGNvbnN0IG93bmVyc2hp
cHMgPSB0aGlzLm5hbWVkU3RhdGljTWFwKCdyZXBvc2l0b3J5T3duZXJzaGlwcycpOworICAgICAg
ICByZXR1cm4gb3duZXJzaGlwcyA/IG93bmVyc2hpcHNbdGhpcy5pZCgpXS5maW5kKChyZXBvc2l0
b3J5KSA9PiB7cmV0dXJuIHJlcG9zaXRvcnkubmFtZSgpID09IG5hbWV9KSA6IG51bGw7CisgICAg
fQorCiAgICAgaGFzVXJsRm9yUmV2aXNpb24oKSB7IHJldHVybiAhIXRoaXMuX3VybDsgfQogCiAg
ICAgdXJsRm9yUmV2aXNpb24oY3VycmVudFJldmlzaW9uKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKaW5kZXggMTVi
YmI1M2JjODJkYzEwNjhhMDExMGUxNmFmOWZiN2NmM2RiNmNjYS4uNzE0OTNkNmJlYzNmODhiODZi
M2Y0MTg0OGYxYTQwMTY0NGMzMzM1YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCkBAIC0yMzEsNiArMjMxLDcg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgcGF0Y2hGaWxlID0gY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KTsKICAgICAgICAgICAgICAgICByZXZpc2lvblNldFtyZXBvc2l0b3J5LmlkKCldID0gewog
ICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjogY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeShyZXBvc2l0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAgb3duZXJSZXZpc2lvbjogY29t
bWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpLAogICAgICAgICAg
ICAgICAgICAgICBwYXRjaDogcGF0Y2hGaWxlID8gcGF0Y2hGaWxlLmlkKCkgOiBudWxsLAogICAg
ICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpz
CmluZGV4IDBhNmEwMmVmYTY3YjRmMTAxMzFlYTIwOWY3YjJhNWRmY2RlZTU0ZWYuLjEzOThmZDk0
YmMyNzBiYWIxNTk4ZTQwZjYwMDI5ZDY3MmM2NmVmOTEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1w
YWdlLmpzCkBAIC03OTIsNyArNzkyLDYgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRz
IFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICAudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RH
cm91cHMuYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICBhbGVydCgn
RmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsgZXJyb3IpOwogICAgICAgICB9
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29t
bWl0U2V0TGlzdChuZXdOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCk7CiAgICAg
fQogCiAgICAgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCh0ZXN0
R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCkKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRh
c2stcGFnZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY3Jl
YXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcwppbmRleCBhOWYwODkwYzE5YmVmYjYzMGJmMDdkYmJi
NWU1Y2UzZWUyYjM2NWFjLi4yOWExMGMyYmJmOGNkNzYyMDBiYjI4NTRmYTc2YTAwYTg0NWZhNWZm
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2Ny
ZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9wYWdlcy9jcmVhdGUtYW5hbHlzaXMtdGFzay1wYWdlLmpzCkBAIC0yNSw3ICsy
NSw2IEBAIGNsYXNzIENyZWF0ZUFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRp
bmcgewogICAgIF9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3JvdXAocmVwZXRpdGlvbkNvdW50LCB0
ZXN0R3JvdXBOYW1lLCBjb21taXRTZXRzLCBwbGF0Zm9ybSwgdGVzdCwgdGFza05hbWUpCiAgICAg
ewogICAgICAgICBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0
ZXN0LCB0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHMpLnRoZW4oKHRh
c2spID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyKCkudXJsKGBhbmFs
eXNpcy90YXNrLyR7dGFzay5pZCgpfWApOwogICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHRo
aXMucm91dGVyKCkudXJsKGBhbmFseXNpcy90YXNrLyR7dGFzay5pZCgpfWApOwogICAgICAgICB9
LCAoZXJyb3IpID0+IHsKICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3
IHRlc3QgZ3JvdXA6ICcgKyBlcnJvcik7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpz
CmluZGV4IGZmZGFlODRiYmUxNjRmMmI4MDlhMDYxNzcwNzEyMjNmMjMxZTAzNmQuLmY1NzNhYmFj
NTE0YzRhMDk2ZmJjNTk3NTIwY2Q1YjQwNmY2ZDBiNGMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVl
c3RzLXRlc3RzLmpzCkBAIC0yNyw3ICsyNyw3MyBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1
ZXN0cycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hv
dWxkIHJldHVybiBidWlsZCByZXF1ZXRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyaWdnZXJh
YmxlIHdpdGggYXBwcm9wcmlhdGUgY29tbWl0cyBhbmQgY29tbWl0U2V0cycsICgpID0+IHsKKyAg
ICBpdCgnc2hvdWxkIHJldHVybiBidWlsZCByZXF1ZXN0cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZl
biB0cmlnZ2VyYWJsZSB3aXRoIGFwcHJvcHJpYXRlIGNvbW1pdHMgYW5kIGNvbW1pdFNldHMgd2l0
aCBvd25lZCBjb21wb25lbnRzLicsICgpID0+IHsKKyAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRk
VGVzdEdyb3VwV2l0aE93bmVkUmVwb3NpdG9yaWVzKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOworICAgICAg
IH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmpl
Y3Qua2V5cyhjb250ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycsICdjb21taXRTZXRzJywg
J2NvbW1pdHMnLCAnc3RhdHVzJywgJ3VwbG9hZGVkRmlsZXMnXSk7CisKKyAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIpOworICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDMpOworICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1z
LAorICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBw
YXRjaDogbnVsbCwgcmVxdWlyZUJ1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LAorICAgICAg
ICAgICAgICAgICAgIHtjb21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDog
bnVsbCwgcmVxdWlyZUJ1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LAorICAgICAgICAgICAg
ICAgICAgIHtjb21taXQ6ICcxNzk3JywgY29tbWl0T3duZXI6ICI5MzExNiIsIHBhdGNoOiBudWxs
LCByZXF1aXJlQnVpbGQ6IHRydWUsIHJvb3RGaWxlOiBudWxsfV0pOworICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLmlkLCA0MDQpOworICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5yZXZpc2lvbkl0ZW1zLAor
ICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRj
aDogbnVsbCwgcmVxdWlyZUJ1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LAorICAgICAgICAg
ICAgICAgICAgIHtjb21taXQ6ICc5NjMzNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVs
bCwgcmVxdWlyZUJ1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LAorICAgICAgICAgICAgICAg
ICAgIHtjb21taXQ6ICcyMDE3JywgY29tbWl0T3duZXI6ICI5NjMzNiIsIHBhdGNoOiBudWxsLCBy
ZXF1aXJlQnVpbGQ6IHRydWUsIHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb250ZW50Wydjb21taXRzJ10ubGVuZ3RoLCA1KTsKKyAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCwgODc4MzIpOworICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJlcG9zaXRvcnksICc5Jyk7CisgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMF0ucmV2aXNpb24sICcxMC4xMSAx
NUEyODQnKTsKKyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5p
ZCwgOTMxMTYpOworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFd
LnJlcG9zaXRvcnksICcxMScpOworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29t
bWl0cyddWzFdLnJldmlzaW9uLCAnMTkxNjIyJyk7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b250ZW50Wydjb21taXRzJ11bMl0uaWQsIDE3OTcpOworICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29udGVudFsnY29tbWl0cyddWzJdLnJlcG9zaXRvcnksICcyMTMnKTsKKyAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzYxNjEnKTsKKyAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5jb21taXRPd25lciwgOTMx
MTYpOworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzNdLmlkLCA5
NjMzNik7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bM10ucmVw
b3NpdG9yeSwgJzExJyk7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRz
J11bM10ucmV2aXNpb24sICcxOTI3MzYnKTsKKyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRl
bnRbJ2NvbW1pdHMnXVs0XS5pZCwgMjAxNyk7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250
ZW50Wydjb21taXRzJ11bNF0ucmVwb3NpdG9yeSwgJzIxMycpOworICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29udGVudFsnY29tbWl0cyddWzRdLnJldmlzaW9uLCAnOTE5MScpOworICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzRdLmNvbW1pdE93bmVyLCA5NjMzNik7
CisKKyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXS5sZW5n
dGgsIDQpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVswXS5pZCwgNzA0KTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydi
dWlsZFJlcXVlc3RzJ11bMF0ub3JkZXIsIDApOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLmNvbW1pdFNldCwg
NDAzKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMF0uc3RhdHVzLCAncGVuZGluZycpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS50ZXN0LCAnMjAwJyk7CisgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLmlkLCA3MDUpOworICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5vcmRlciwg
MSk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzFdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0uY29tbWl0U2V0LCA0MDQpOworICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5zdGF0dXMsICdwZW5kaW5nJyk7
CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFd
LnRlc3QsICcyMDAnKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMl0uaWQsIDcwNik7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLm9yZGVyLCAyKTsKKyAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0ucGxhdGZvcm0sICc2NScpOworICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5jb21t
aXRTZXQsIDQwMyk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzJdLnN0YXR1cywgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0udGVzdCwgJzIwMCcpOworICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5pZCwgNzA3KTsK
KyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10u
b3JkZXIsIDMpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVx
dWVzdHMnXVszXS5wbGF0Zm9ybSwgJzY1Jyk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLmNvbW1pdFNldCwgNDA0KTsKKyAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uc3RhdHVzLCAncGVu
ZGluZycpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVszXS50ZXN0LCAnMjAwJyk7CisgICAgICAgfSk7CisgICAgfSk7CisKKworICAgIGl0KCdz
aG91bGQgcmV0dXJuIGJ1aWxkIHJlcXVlc3RzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyaWdn
ZXJhYmxlIHdpdGggYXBwcm9wcmlhdGUgY29tbWl0cyBhbmQgY29tbWl0U2V0cycsICgpID0+IHsK
ICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQnKTsK
ICAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4gewpAQCAtMzYsMTAgKzEwMiwxMCBAQCBkZXNj
cmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ10ubGVuZ3RoLCAyKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0uaWQsIDQwMSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0
ZW1zLAotICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBwYXRjaDogbnVsbCwgcm9v
dEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTMxMTYnLCBwYXRjaDogbnVsbCwgcm9vdEZpbGU6IG51
bGx9XSk7CisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBu
dWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZUJ1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7
Y29tbWl0OiAnOTMxMTYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVC
dWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0gICAgICAg
ICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0s
IHtjb21taXQ6ICc5NjMzNicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAg
ICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBu
dWxsLCByZXF1aXJlQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5NjMz
NicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZUJ1aWxkOiBmYWxzZSwg
cm9vdEZpbGU6IG51bGx9XSk7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydj
b21taXRzJ10ubGVuZ3RoLCAzKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydj
b21taXRzJ11bMF0uaWQsIDg3ODMyKTsKQEAgLTgzLDYgKzE0OSw3IEBAIGRlc2NyaWJlKCcvYXBp
L2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAor
CiAgICAgaXQoJ3Nob3VsZCBzdXBwb3J0IHVzZUxlZ2FjeUlkUmVzb2x1dGlvbiBvcHRpb24nLCAo
KSA9PiB7CiAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRh
dGFiYXNlKCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Vi
a2l0P3VzZUxlZ2FjeUlkUmVzb2x1dGlvbj10cnVlJyk7CkBAIC05MiwxMCArMTU5LDEwIEBAIGRl
c2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIpOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5pZCwgNDAxKTsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLnJldmlzaW9u
SXRlbXMsCi0gICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCBy
b290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNicsIHBhdGNoOiBudWxsLCByb290RmlsZTog
bnVsbH1dKTsKKyAgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6
IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0s
IHtjb21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWly
ZUJ1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9XSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLmlkLCA0MDIpOwogICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0ucmV2aXNpb25JdGVtcywKLSAgICAg
ICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxs
fSwge2NvbW1pdDogJzk2MzM2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfV0pOworICAg
ICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6
IG51bGwsIHJlcXVpcmVCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwge2NvbW1pdDogJzk2
MzM2JywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlQnVpbGQ6IGZhbHNl
LCByb290RmlsZTogbnVsbH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXS5sZW5ndGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXVswXS5pZCwgODc4MzIpOwpAQCAtMTM5LDYgKzIwNiwxMDkgQEAgZGVzY3JpYmUo
Jy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0p
OwogCisgICAgaXQoJ3Nob3VsZCBiZSBmZXRjaGFibGUgYnkgQnVpbGRSZXF1ZXN0LmZldGNoRm9y
VHJpZ2dlcmFibGUgZm9yIGNvbW1pdFNldHMgd2l0aCBvd25lZCBjb21taXRzJywgKCkgPT4gewor
ICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0aE93bmVkUmVwb3NpdG9yaWVz
KFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
TWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoJ2J1aWxkLXdlYmtpdCcpOwor
ICAgICAgICB9KS50aGVuKChidWlsZFJlcXVlc3RzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOworCisgICAgICAgICAgICBsZXQgdGVzdCA9
IFRlc3QuZmluZEJ5SWQoMjAwKTsKKyAgICAgICAgICAgIGFzc2VydCh0ZXN0KTsKKworICAgICAg
ICAgICAgbGV0IHBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQoNjUpOworICAgICAgICAgICAg
YXNzZXJ0KHBsYXRmb3JtKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVz
dHNbMF0uaWQoKSwgNzA0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Rz
WzBdLnRlc3RHcm91cElkKCksIDkwMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRS
ZXF1ZXN0c1swXS50ZXN0KCksIHRlc3QpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdHNbMF0ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7CisgICAgICAgICAgICBhc3NlcnQub2so
YnVpbGRSZXF1ZXN0c1swXS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAg
ICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMF0uaGFzRmluaXNoZWQoKSk7CisgICAg
ICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMF0uaGFzU3RhcnRlZCgpKTsKKyAgICAg
ICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzBdLmlzUGVuZGluZygpKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLnN0YXR1c0xhYmVsKCksICdXYWl0aW5n
Jyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFdLmlkKCksIDcw
NSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS50ZXN0R3JvdXBJ
ZCgpLCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0udGVz
dCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFdLnBs
YXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzFdLm9yZGVyKCksIDEpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNb
MV0uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFidWlsZFJlcXVlc3RzWzFdLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFidWlsZFJlcXVlc3RzWzFdLmhhc1N0YXJ0ZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQu
b2soYnVpbGRSZXF1ZXN0c1sxXS5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRSZXF1ZXN0c1sxXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5pZCgpLCA3MDYpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0udGVzdEdyb3VwSWQoKSwgOTAwKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLnRlc3QoKSwgdGVzdCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5wbGF0Zm9ybSgpLCBwbGF0
Zm9ybSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5vcmRlcigp
LCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgp
IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1
ZXN0c1syXS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1
ZXN0c1syXS5oYXNTdGFydGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVz
dHNbMl0uaXNQZW5kaW5nKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVz
dHNbMl0uc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdHNbM10uaWQoKSwgNzA3KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3RzWzNdLnRlc3RHcm91cElkKCksIDkwMCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS50ZXN0KCksIHRlc3QpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7CisgICAgICAg
ICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENv
bW1pdFNldCk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10uaGFzRmlu
aXNoZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10uaGFzU3Rh
cnRlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzNdLmlzUGVuZGlu
ZygpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLnN0YXR1c0xh
YmVsKCksICdXYWl0aW5nJyk7CisKKyAgICAgICAgICAgIGNvbnN0IG9zeCA9IFJlcG9zaXRvcnku
ZmluZEJ5SWQoOSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Lm5hbWUoKSwgJ21hY09T
Jyk7CisKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMTEp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdC5uYW1lKCksICdXZWJLaXQnKTsKKwor
ICAgICAgICAgICAgY29uc3QganNjID0gUmVwb3NpdG9yeS5maW5kQnlJZCgyMTMpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGpzYy5uYW1lKCksICdKYXZhU2NyaXB0Q29yZScpOworCisgICAg
ICAgICAgICBjb25zdCBmaXJzdENvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS5jb21taXRTZXQo
KSwgZmlyc3RDb21taXRTZXQpOworCisgICAgICAgICAgICBjb25zdCBzZWNvbmRDb21taXRTZXQg
PSBidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCksIHNlY29uZENvbW1pdFNldCk7CisKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
b3N4KSwgJzEwLjExIDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0Q29t
bWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoZmlyc3RDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpz
YyksICc2MTYxJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQu
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQu
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICc5MTkxJyk7CisKKyAgICAgICAgICAgIGNvbnN0
IG9zeENvbW1pdCA9IGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21taXQucmV2aXNpb24oKSwgJzEwLjExIDE1QTI4
NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgc2Vjb25kQ29tbWl0U2V0
LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CisKKyAgICAgICAgICAgIGNvbnN0IGZpcnN0V2Vi
S2l0Q29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0V2ViS2l0Q29tbWl0LnJldmlzaW9uKCksICcx
OTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrZmlyc3RXZWJLaXRDb21taXQudGlt
ZSgpLCAxNDQ1OTQ1ODE2ODc4KTsKKworICAgICAgICAgICAgY29uc3Qgc2Vjb25kV2ViS2l0Q29t
bWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRXZWJLaXRDb21taXQucmV2aXNpb24oKSwgJzE5Mjcz
NicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRXZWJLaXRDb21taXQudGltZSgp
LCAxNDQ4MjI1MzI1NjUwKTsKKworICAgICAgICAgICAgY29uc3QgZmlyc3RTSkNDb21taXQgPSBm
aXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZmlyc3RTSkNDb21taXQucmV2aXNpb24oKSwgJzYxNjEnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbCgrZmlyc3RTSkNDb21taXQudGltZSgpLCAxNDU2OTYwNzk1MzAwKTsKKwor
ICAgICAgICAgICAgY29uc3Qgc2Vjb25kU0pDQ29tbWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1p
dEZvclJlcG9zaXRvcnkoanNjKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRTSkND
b21taXQucmV2aXNpb24oKSwgJzkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrc2Vj
b25kU0pDQ29tbWl0LnRpbWUoKSwgMTQ2MjIzMDgzNzEwMCkKKyAgICAgICAgfSk7CisgICAgfSk7
CisKICAgICBpdCgnc2hvdWxkIGJlIGZldGNoYWJsZSBieSBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JU
cmlnZ2VyYWJsZScsICgpID0+IHsKICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRh
KFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4g
TWFuaWZlc3QuZmV0Y2goKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0
ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCmluZGV4IDgyZWFkY2E1MzI5YTM3MzA5ZGE4ZWU3YTMzM2Fk
OGZiNGYyYjE1MjUuLmMzMTE4MzIzY2MyNGEwZjkxZDkyMTRmZGZjM2M4MjhiMDg4ZDg3YmEgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0
cy5qcwpAQCAtMzIxLDYgKzMyMSwyNiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0
ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorCisg
ICAgaXQoJ3Nob3VsZCByZXR1cm4gIkludmFsaWRDb21taXRPd25lcnNoaXAiIHdoZW4gY29tbWl0
IG93bmVyc2hpcCBpcyBub3QgdmFsaWQnLCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNrSWQ7Cisg
ICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIGxldCBtYWNvczsKKyAgICAgICAgbGV0IHNqYzsK
KyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyku
dGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBtYWNvcyA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVsw
XTsKKyAgICAgICAgICAgIHNqYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5
KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsKKyAgICAgICAg
ICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtzamMuaWQoKV06IHty
ZXZpc2lvbjogJzYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAgICAgICAg
ICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlkKCldOiB7
cmV2aXNpb246ICcxNUEyODQnfSwgW3NqYy5pZCgpXToge3JldmlzaW9uOiAnOTE5MScsIG93bmVy
UmV2aXNpb246ICcxOTE2MjInfX1dOworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0JywgdGFzazogdGFz
a0lkLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pOworICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFj
aGVkJyk7CisgICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGVycm9yLCAnSW52YWxpZENvbW1pdE93bmVyc2hpcCcpOworICAgICAgICB9KTsKKyAgICB9KTsK
KwogICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCBmcm9tIGNvbW1pdFNldHMgd2l0
aCB0aGUgcmVwZXRpdGlvbiBjb3VudCBvZiBvbmUgd2hlbiByZXBldGl0aW9uQ291bnQgaXMgb21p
dHRlZCcsICgpID0+IHsKICAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFz
aygnc29tZSB0YXNrJykudGhlbigodGFza0lkKSA9PiB7CiAgICAgICAgICAgICBsZXQgaW5zZXJ0
ZWRHcm91cElkOwpAQCAtNTg2LDYgKzYwNiwxNjEgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7
CiAKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRlc3QgZ3JvdXAgd2l0aCBhIG93bmVkIGNvbW1p
dHMgZXZlbiB3aGVuIG5vIHBhdGNoIGlzIHNwZWNpZmllZCcsICgpID0+IHsKKyAgICAgICAgbGV0
IHRhc2tJZDsKKyAgICAgICAgbGV0IHdlYmtpdDsKKyAgICAgICAgbGV0IG1hY29zOworICAgICAg
ICBsZXQgc2pjOworICAgICAgICBsZXQgaW5zZXJ0ZWRHcm91cElkOworICAgICAgICByZXR1cm4g
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFz
a0lkID0gaWQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgd2Via2l0ID0gUmVwb3NpdG9yeS5h
bGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQn
KVswXTsKKyAgICAgICAgICAgIG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAgICAgICAg
c2pjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnku
bmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAgICAgICAgY29uc3QgcmV2aXNp
b25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlk
KCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW3NqYy5pZCgpXToge3JldmlzaW9uOiAnNjE2MScs
IG93bmVyUmV2aXNpb246ICcxOTE2MjInfX0sCisgICAgICAgICAgICAgICAge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4
NCd9LCBbc2pjLmlkKCldOiB7cmV2aXNpb246ICc5MTkxJywgb3duZXJSZXZpc2lvbjogJzE5Mjcz
Nid9fV07CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25D
b3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsK
KyAgICAgICAgICAgIGluc2VydGVkR3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107Cisg
ICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOwor
ICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0
R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVk
R3JvdXBJZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50
KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5k
QnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChn
cm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpKSk7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMo
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDYpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0uaXNCdWlsZCgpLCB0cnVlKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5pc0J1aWxkKCksIHRydWUpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzRdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVdLmlzQnVpbGQoKSwgZmFsc2UpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0uaXNUZXN0KCksIGZhbHNlKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVdLmlzVGVzdCgpLCB0cnVlKTsKKworICAgICAgICAgICAg
Y29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29uc3Qg
c2V0MSA9IHJlcXVlc3RzWzFdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1szXS5jb21taXRTZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbNF0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzVdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDAu
cmVwb3NpdG9yaWVzKCkpLCBbc2pjLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0
MS5yZXBvc2l0b3JpZXMoKSksIFtzamMsIHdlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksIHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHNldDAuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBzZXQxLmNvbW1pdEZv
clJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5wYXRj
aEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MS5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MC5yZXF1aXJlQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIGZhbHNlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVCdWlsZEZvclJlcG9zaXRvcnko
d2Via2l0KSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25G
b3JSZXBvc2l0b3J5KG1hY29zKSwgJzE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29zKSwgc2V0MS5yZXZpc2lvbkZvclJlcG9z
aXRvcnkobWFjb3MpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLmNvbW1pdEZvclJl
cG9zaXRvcnkobWFjb3MpLCBzZXQxLmNvbW1pdEZvclJlcG9zaXRvcnkobWFjb3MpKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29z
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlQnVpbGRGb3JS
ZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEu
cmVxdWlyZUJ1aWxkRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeShzamMpLCAnNjE2MScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNqYyksICc5
MTkxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnko
c2pjKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9z
aXRvcnkoc2pjKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJl
QnVpbGRGb3JSZXBvc2l0b3J5KHNqYyksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHNldDEucmVxdWlyZUJ1aWxkRm9yUmVwb3NpdG9yeShzamMpLCB0cnVlKTsKKyAgICAgICAgICAg
IGFzc2VydCghc2V0MC5lcXVhbHMoc2V0MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAg
IGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCB3aXRoIGEgb3duZWQgY29tbWl0cyBhbmQg
YSBwYXRjaCcsICgpID0+IHsKKyAgICAgICAgbGV0IHRhc2tJZDsKKyAgICAgICAgbGV0IHdlYmtp
dDsKKyAgICAgICAgbGV0IG1hY29zOworICAgICAgICBsZXQgc2pjOworICAgICAgICBsZXQgaW5z
ZXJ0ZWRHcm91cElkOworICAgICAgICBsZXQgdXBsb2FkZWRGaWxlOworICAgICAgICByZXR1cm4g
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFz
a0lkID0gaWQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgd2Via2l0ID0gUmVwb3NpdG9yeS5h
bGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQn
KVswXTsKKyAgICAgICAgICAgIG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAgICAgICAg
c2pjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnku
bmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAgICAgICAgcmV0dXJuIFRlbXBv
cmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpOwor
ICAgICAgICB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNl
Rm9ybURhdGE6IHRydWV9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IHJhd0ZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAg
ICAgICB1cGxvYWRlZEZpbGUgPSBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0ZpbGUu
aWQsIHJhd0ZpbGUpOworICAgICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcx
NUEyODQnfSwgW3NqYy5pZCgpXToge3JldmlzaW9uOiAnNjE2MScsIG93bmVyUmV2aXNpb246ICcx
OTE2MjInfX0sCisgICAgICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5
MTYyMicsIHBhdGNoOiB1cGxvYWRlZEZpbGUuaWQoKX0sIFttYWNvcy5pZCgpXToge3JldmlzaW9u
OiAnMTVBMjg0J30sIFtzamMuaWQoKV06IHtyZXZpc2lvbjogJzkxOTEnLCBvd25lclJldmlzaW9u
OiAnMTkyNzM2J319XTsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVw
ZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgfSkudGhlbigoY29udGVu
dCkgPT4geworICAgICAgICAgICAgaW5zZXJ0ZWRHcm91cElkID0gY29udGVudFsndGVzdEdyb3Vw
SWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwg
dHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5yZXBldGl0
aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAudGVzdCgpLCBU
ZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQ
bGF0Zm9ybUlkKCkpKTsKKyAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRS
ZXF1ZXN0cygpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNik7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5pc0J1aWxkKCksIHRydWUp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLmlzQnVpbGQoKSwgdHJ1ZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uaXNCdWlsZCgpLCBmYWxzZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uaXNCdWlsZCgpLCBmYWxzZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uaXNCdWlsZCgpLCBmYWxzZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uaXNCdWlsZCgpLCBmYWxzZSk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5pc1Rlc3QoKSwgZmFsc2Up
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLmlzVGVzdCgpLCBmYWxzZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uaXNUZXN0KCksIHRydWUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmlzVGVzdCgpLCB0cnVlKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0XS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uaXNUZXN0KCksIHRydWUpOworCisgICAg
ICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgICAg
ICBjb25zdCBzZXQxID0gcmVxdWVzdHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1s0XS5jb21taXRTZXQoKSwgc2V0MCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uY29tbWl0U2V0KCksIHNldDEpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhV
Ukwoc2V0MC5yZXBvc2l0b3JpZXMoKSksIFtzamMsIHdlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0
aFVSTChzZXQxLnJlcG9zaXRvcmllcygpKSwgW3NqYywgd2Via2l0LCBtYWNvc10pOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkx
NjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkod2Via2l0KSwgc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc2V0MC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHNldDEu
Y29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChz
ZXQwLnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB1cGxvYWRlZEZpbGUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZUJ1aWxkRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVCdWls
ZEZvclJlcG9zaXRvcnkod2Via2l0KSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpLCAnMTVBMjg0Jyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpLCBzZXQxLnJl
dmlzaW9uRm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
dDAuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcyksIHNldDEuY29tbWl0Rm9yUmVwb3NpdG9yeSht
YWNvcykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5
KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJl
cG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJl
cXVpcmVCdWlsZEZvclJlcG9zaXRvcnkobWFjb3MpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MS5yZXF1aXJlQnVpbGRGb3JSZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNqYyks
ICc2MTYxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9z
aXRvcnkoc2pjKSwgJzkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNo
Rm9yUmVwb3NpdG9yeShzamMpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQx
LnBhdGNoRm9yUmVwb3NpdG9yeShzamMpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZXQwLnJlcXVpcmVCdWlsZEZvclJlcG9zaXRvcnkoc2pjKSwgdHJ1ZSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlQnVpbGRGb3JSZXBvc2l0b3J5KHNqYyksIHRydWUp
OworICAgICAgICAgICAgYXNzZXJ0KCFzZXQwLmVxdWFscyhzZXQxKSk7CisgICAgICAgIH0pOwor
ICAgIH0pOworCiAgICAgaXQoJ3Nob3VsZCBub3QgY3JlYXRlIGEgYnVpbGQgcmVxdWVzdCB0byBi
dWlsZCBhIHBhdGNoIHdoZW4gdGhlIGNvbW1pdCBzZXQgZG9lcyBub3QgaGF2ZSBhIHBhdGNoJywg
KCkgPT4gewogICAgICAgICBsZXQgdGFza0lkOwogICAgICAgICBsZXQgd2Via2l0OwpAQCAtNjU0
LDcgKzgyOSw2IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGxldCB0YXNrSWQ7CiAgICAgICAgIGxldCB3ZWJraXQ7
CiAgICAgICAgIGxldCBtYWNvczsKLSAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKICAgICAg
ICAgbGV0IHVwbG9hZGVkRmlsZTsKICAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3Jl
YXRlVGFzaygnc29tZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0
b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2Nr
LWRhdGEuanMKaW5kZXggZTFhNjlhZjNhOTcwN2Y4MWJmYmQ0NDE4YzllN2I2MzdmYjZmODkwMy4u
M2NhMTNhMDc2ZWMzMTVjZGJjMzZlMWQ5NTdjNWIyMDEyNmEwOWQyNiAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21v
Y2stZGF0YS5qcwpAQCAtMTMsNiArMTMsNyBAQCBNb2NrRGF0YSA9IHsKICAgICBvdGhlclBsYXRm
b3JtSWQoKSB7IHJldHVybiAxMDE7IH0sCiAgICAgbWFjb3NSZXBvc2l0b3J5SWQoKSB7IHJldHVy
biA5OyB9LAogICAgIHdlYmtpdFJlcG9zaXRvcnlJZCgpIHsgcmV0dXJuIDExOyB9LAorICAgIGpz
Y1JlcG9zaXRvcnlJZCgpIHsgcmV0dXJuIDIxMzsgfSwKICAgICBnaXRXZWJraXRSZXBvc2l0b3J5
SWQoKSB7IHJldHVybiAxMTE7IH0sCiAgICAgc2hhcmVkUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4g
MTQ7IH0sCiAgICAgYWRkTW9ja0NvbmZpZ3VyYXRpb246IGZ1bmN0aW9uIChkYikKQEAgLTIzLDYg
KzI0LDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmll
cycsIHtpZDogdGhpcy5tYWNvc1JlcG9zaXRvcnlJZCgpLCBuYW1lOiAnbWFjT1MnfSksCiAgICAg
ICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy53ZWJraXRSZXBvc2l0
b3J5SWQoKSwgbmFtZTogJ1dlYktpdCd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3Np
dG9yaWVzJywge2lkOiB0aGlzLnNoYXJlZFJlcG9zaXRvcnlJZCgpLCBuYW1lOiAnU2hhcmVkJ30p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHRoaXMuanNjUmVw
b3NpdG9yeUlkKCksIG93bmVyOiB0aGlzLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBuYW1lOiAnSmF2
YVNjcmlwdENvcmUnfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9z
aXRvcnlfZ3JvdXBzJywge2lkOiAyMDAxLCBuYW1lOiAnd2Via2l0LXN2bicsIHRyaWdnZXJhYmxl
OiAxMDAwfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmll
cycsIHtyZXBvc2l0b3J5OiB0aGlzLm1hY29zUmVwb3NpdG9yeUlkKCksIGdyb3VwOiAyMDAxfSks
CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBv
c2l0b3J5OiB0aGlzLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBncm91cDogMjAwMX0pLApAQCAtMzEs
NiArMzMsMTAgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMn
LCB7aWQ6IDk2MzM2LCByZXBvc2l0b3J5OiB0aGlzLndlYmtpdFJlcG9zaXRvcnlJZCgpLCByZXZp
c2lvbjogJzE5MjczNicsIHRpbWU6IChuZXcgRGF0ZSgxNDQ4MjI1MzI1NjUwKSkudG9JU09TdHJp
bmcoKX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiAxMTExNjgsIHJl
cG9zaXRvcnk6IHRoaXMuc2hhcmVkUmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnODAyMjknLCB0
aW1lOiAnMjAxNi0wMy0wMlQyMzoxNzo1NC4zWid9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgn
Y29tbWl0cycsIHtpZDogMTExMTY5LCByZXBvc2l0b3J5OiB0aGlzLnNoYXJlZFJlcG9zaXRvcnlJ
ZCgpLCByZXZpc2lvbjogJzgwMjMwJywgdGltZTogJzIwMTYtMDMtMDJUMjM6Mzc6MTguMFonfSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDE3OTcsIHJlcG9zaXRvcnk6
IHRoaXMuanNjUmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnNjE2MScsIHRpbWU6ICcyMDE2LTAz
LTAyVDIzOjE5OjU1LjNaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lk
OiAyMDE3LCByZXBvc2l0b3J5OiB0aGlzLmpzY1JlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJzkx
OTEnLCB0aW1lOiAnMjAxNi0wNS0wMlQyMzoxMzo1Ny4xWid9KSwKKyAgICAgICAgICAgIGRiLmlu
c2VydCgnY29tbWl0X293bmVyc2hpcHMnLCB7b3duZXI6IDkzMTE2LCBvd25lZDogMTc5N30pLAor
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfb3duZXJzaGlwcycsIHtvd25lcjogOTYzMzYs
IG93bmVkOiAyMDE3fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkcycsIHtpZDogOTAx
LCBudW1iZXI6ICc5MDEnLCB0aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwKICAgICAg
ICAgICAgIGRiLmluc2VydCgncGxhdGZvcm1zJywge2lkOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncGxh
dGZvcm1zJywge2lkOiBNb2NrRGF0YS5vdGhlclBsYXRmb3JtSWQoKSwgbmFtZTogJ290aGVyIHBs
YXRmb3JtJ30pLApAQCAtMTE0LDYgKzEyMCwzMSBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAg
IGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMSwgc3RhdHVzOiBzdGF0dXNMaXN0
WzFdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3Vw
OiA2MDEsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKICAgICAgICAgXSk7CiAgICAgfSwK
KyAgICBhZGRUZXN0R3JvdXBXaXRoT3duZWRSZXBvc2l0b3JpZXMoZGIsIHN0YXR1c0xpc3QpCisg
ICAgeworCisgICAgICAgIGlmICghc3RhdHVzTGlzdCkKKyAgICAgICAgICAgIHN0YXR1c0xpc3Qg
PSBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXTsKKyAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgIHRoaXMuYWRkTW9ja0NvbmZpZ3VyYXRp
b24oZGIpLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190YXNrcycsIHtpZDogMTA4
MCwgcGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzayB3aXRoIGNvbXBv
bmVudCB0ZXN0JywKKyAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgwMSwgc3RhcnRfcnVuX3Rp
bWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKKyAgICAgICAgICAgICAgICBlbmRfcnVuOiA4
MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCisgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA5MDAsIHRhc2s6IDEwODAs
IG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQgdGVzdCd9KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwM30pLAorICAgICAgICAgICAgZGIu
aW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDAzLCBjb21taXQ6IDg3ODMyfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDMsIGNvbW1p
dDogOTMxMTZ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtz
ZXQ6IDQwMywgY29tbWl0OiAxNzk3LCBjb21taXRfb3duZXI6IDkzMTE2LCByZXF1aXJlX2J1aWxk
OiB0cnVlfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRzJywge2lkOiA0MDR9
KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwNCwg
Y29tbWl0OiA4NzgzMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1z
Jywge3NldDogNDA0LCBjb21taXQ6IDk2MzM2fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2Nv
bW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDQsIGNvbW1pdDogMjAxNywgY29tbWl0X293bmVyOiA5
NjMzNiwgcmVxdWlyZV9idWlsZDogdHJ1ZX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF9yZXF1ZXN0cycsIHtpZDogNzA0LCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxl
OiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwg
Z3JvdXA6IDkwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwM30pLAorICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA1LCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0s
IHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUs
IHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwNH0pLAorICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA2LCBzdGF0dXM6IHN0
YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBw
bGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6
IDQwM30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA3
LCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dy
b3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDMs
IGNvbW1pdF9zZXQ6IDQwNH0pLAorICAgICAgICBdKTsKKyAgICB9LAogICAgIG1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyOiBmdW5jdGlvbiAoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWls
ZGJvdC10cmlnZ2VyYWJsZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9i
dWlsZGJvdC10cmlnZ2VyYWJsZS5qcwppbmRleCA5OWY0MzYwYWU2M2I0ODQ4YjQyZWJlOGVkNmE2
MzQyZjA4YzQ3MjMzLi4zY2E5NDUzMjc4NWIxMmM0ODUzMzE1N2YzNmFlZGJmNGNiOTNhOGVkIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJp
Z2dlcmFibGUuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxk
Ym90LXRyaWdnZXJhYmxlLmpzCkBAIC01NywxOSArNTcsMTggQEAgY2xhc3MgQnVpbGRib3RUcmln
Z2VyYWJsZSB7CiAKICAgICBzeW5jT25jZSgpCiAgICAgewotICAgICAgICBsZXQgc3luY2VyTGlz
dCA9IHRoaXMuX3N5bmNlcnM7Ci0gICAgICAgIGxldCBidWlsZFJlcWV1c3RzQnlHcm91cCA9IG5l
dyBNYXA7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3RzQnlHcm91cCA9IG5ldyBNYXA7CiAKICAg
ICAgICAgdGhpcy5fbG9nZ2VyLmxvZyhgRmV0Y2hpbmcgYnVpbGQgcmVxdWVzdHMgZm9yICR7dGhp
cy5fbmFtZX0uLi5gKTsKICAgICAgICAgbGV0IHZhbGlkUmVxdWVzdHM7CiAgICAgICAgIHJldHVy
biBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZSh0aGlzLl9uYW1lKS50aGVuKChidWls
ZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAgICB2YWxpZFJlcXVlc3RzID0gdGhpcy5fdmFsaWRh
dGVSZXF1ZXN0cyhidWlsZFJlcXVlc3RzKTsKLSAgICAgICAgICAgIGJ1aWxkUmVxZXVzdHNCeUdy
b3VwID0gQnVpbGRib3RUcmlnZ2VyYWJsZS5fdGVzdEdyb3VwTWFwRm9yQnVpbGRSZXF1ZXN0cyhi
dWlsZFJlcXVlc3RzKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9wdWxsQnVpbGRib3RPbkFs
bFN5bmNlcnMoYnVpbGRSZXFldXN0c0J5R3JvdXApOworICAgICAgICAgICAgYnVpbGRSZXF1ZXN0
c0J5R3JvdXAgPSBCdWlsZGJvdFRyaWdnZXJhYmxlLl90ZXN0R3JvdXBNYXBGb3JCdWlsZFJlcXVl
c3RzKGJ1aWxkUmVxdWVzdHMpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3B1bGxCdWlsZGJv
dE9uQWxsU3luY2VycyhidWlsZFJlcXVlc3RzQnlHcm91cCk7CiAgICAgICAgIH0pLnRoZW4oKHVw
ZGF0ZXMpID0+IHsKICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coJ1NjaGVkdWxpbmcgYnVp
bGRzJyk7Ci0gICAgICAgICAgICBjb25zdCBwcm9taXN0TGlzdCA9IFtdOwotICAgICAgICAgICAg
Y29uc3QgdGVzdEdyb3VwTGlzdCA9IEFycmF5LmZyb20oYnVpbGRSZXFldXN0c0J5R3JvdXAudmFs
dWVzKCkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZ3JvdXBPcmRlciAtIGIuZ3Jv
dXBPcmRlcjsgfSk7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlTGlzdCA9IFtdOworICAgICAg
ICAgICAgY29uc3QgdGVzdEdyb3VwTGlzdCA9IEFycmF5LmZyb20oYnVpbGRSZXF1ZXN0c0J5R3Jv
dXAudmFsdWVzKCkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZ3JvdXBPcmRlciAt
IGIuZ3JvdXBPcmRlcjsgfSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRlc3RH
cm91cExpc3QpIHsKICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UmVxdWVzdCA9IHRoaXMuX25l
eHRSZXF1ZXN0SW5Hcm91cChncm91cCwgdXBkYXRlcyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2
YWxpZFJlcXVlc3RzLmhhcyhuZXh0UmVxdWVzdCkpCkBAIC03OCwxMiArNzcsMTIgQEAgY2xhc3Mg
QnVpbGRib3RUcmlnZ2VyYWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHRSZXF1ZXN0Lmlz
QnVpbGQoKSA/IGdyb3VwLmJ1aWxkU3luY2VyIDogZ3JvdXAudGVzdFN5bmNlciwKICAgICAgICAg
ICAgICAgICAgICAgbmV4dFJlcXVlc3QuaXNCdWlsZCgpID8gZ3JvdXAuYnVpbGRTbGF2ZU5hbWUg
OiBncm91cC50ZXN0U2xhdmVOYW1lKTsKICAgICAgICAgICAgICAgICBpZiAocHJvbWlzZSkKLSAg
ICAgICAgICAgICAgICAgICAgcHJvbWlzdExpc3QucHVzaChwcm9taXNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvbWlzZUxpc3QucHVzaChwcm9taXNlKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXN0TGlzdCk7CisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwocHJvbWlzZUxpc3QpOwogICAgICAgICB9KS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIC8vIFB1bGwgYWxsIGJ1aWxkYm90cyBmb3IgdGhlIHNlY29uZCB0aW1lIHNpbmNl
IHRoZSBwcmV2aW91cyBzdGVwIG1heSBoYXZlIHNjaGVkdWxlZCBtb3JlIGJ1aWxkcy4KLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9wdWxsQnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXFldXN0
c0J5R3JvdXApOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3B1bGxCdWlsZGJvdE9uQWxsU3lu
Y2VycyhidWlsZFJlcXVlc3RzQnlHcm91cCk7CiAgICAgICAgIH0pLnRoZW4oKHVwZGF0ZXMpID0+
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgQVBJIHRoYXQganVzdCB1cGRhdGVz
IHRoZSByZXF1ZXN0cy4KICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZW1vdGUucG9zdEpTT05X
aXRoU3RhdHVzKGAvYXBpL2J1aWxkLXJlcXVlc3RzLyR7dGhpcy5fbmFtZX1gLCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319353</attachid>
            <date>2017-08-30 01:10:22 -0700</date>
            <delta_ts>2017-09-13 05:08:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175978-20170830011021.patch</filename>
            <type>text/plain</type>
            <size>59265</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzE3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAyMjA4YTlmMTcyNmQ3ODMzNzM1ZGQ5ZGY1YWE1NWY2YmFhYWEyZjcwLi5hNjAyNTRkZTk0
YjI3YWQxOTk0YTQ1MjI0M2I2YjQxZTFkZTdkYmY1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxNy0wOC0yOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZSBEYXNoYm9hcmQgYmFja2VuZCBzaG91
bGQgc3VwcG9ydCBBL0IgdGVzdGluZyBmb3Igb3duZWQgY29tcG9uZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYWNrZW5kIGNoYW5nZSBm
b3IgUGVyZm9ybWFuY2UgRGFzaGJvYXJkIHRvIHN1cHBvcnQgQS9CIHRlc3RpbmcgZm9yIG93bmVk
IGNvbXBvbmVudHMuCisgICAgICAgICogaW5pdC1kYXRhYmFzZS5zcWw6CisgICAgICAgICAgICBB
ZGRlZCAnY29tbWl0c2V0X2NvbW1pdF9vd25lcicgYW5kICdjb21taXRzZXRfcmVxdWlyZXNfYnVp
bGQnIGNvbHVtbnMgdG8gJ2NvbW1pdF9zZXRfaXRlbXMnIHRhYmxlLgorICAgICAgICAgICAgJ2Nv
bW1pdHNldF9jb21taXRfb3duZXInIHdpbGwgYmUgcmVmZXJyZWQgdG8gZGV0ZXJtaW5lIGEgY29t
bWl0IHdpdGggb3duZXIuCisgICAgICAgICAgICAnY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkJyBp
bmRpY2F0ZXMgd2hldGhlciBhIHJvb3QgYnVpbGQgaXMgcmVxdWlyZWQuCisgICAgICAgICAgICBU
aGlzIHdpbGwgYmUgc2V0IHRydWUgd2hlbmV2ZXIgY29tbWl0X3NldF9pdGVtIHNwZWNpZmllcyBh
IHBhdGNoIGZpbGUsCisgICAgICAgICAgICAgICAgb3IgY29tbWl0X3NldF9pdGVtIGlzIGNvbW1p
dCB3aXRoIG93bmVyIGNvbW1pdCwKKyAgICAgICAgICAgICAgICBvciBhbnkgb3RoZXIgY29tbWl0
IGZyb20gc2FtZSByZXBvc2l0b3J5IGFuZCBpbiBzYW1lIGJ1aWxkLXJlcXVlc3QgZ3JvdXAgcmVx
dWlyZXMgYnVpbGQuCisgICAgICAgICAgICBTUUwgZm9yIHVwZGF0aW5nIGV4aXN0aW5nIGRhdGFi
YXNlOgorICAgICAgICAgICAgICAgICdCRUdJTjsKKyAgICAgICAgICAgICAgICAgICAgQUxURVIg
VEFCTEUgY29tbWl0X3NldF9pdGVtcyBBREQgQ09MVU1OIGNvbW1pdHNldF9jb21taXRfb3duZXIg
aW50ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdHMgREVGQVVMVCBOVUxMLCBBREQgQ09MVU1OIGNvbW1p
dHNldF9yZXF1aXJlc19idWlsZCBib29sZWFuIERFRkFVTFQgRkFMU0U7CisgICAgICAgICAgICAg
ICAgICAgIFVQREFURSBUQUJMRSBjb21taXRfc2V0X2l0ZW1zIFNFVCBjb21taXRzZXRfcmVxdWly
ZXNfYnVpbGQgPSBUUlVFIFdIRVJFIGNvbW1pdHNldF9wYXRjaF9maWxlIElTIE5PVCBOVUxMOwor
ICAgICAgICAgICAgICAgIEVORCcKKyAgICAgICAgKiBwdWJsaWMvYWRtaW4vdHJpZ2dlcmFibGVz
LnBocDogT25seSB0b3AgbGV2ZWwgcmVwb3NpdG9yeSBzaG91bGQgc2hvdyBvbiB0cmlnZ2VyYWJs
ZXMgcGFnZS4KKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVy
LnBocDogQWRkZWQgJ2NvbW1pdE93bmVyJyBhbmQgJ3JlcXVpcmVCdWlsZCcgdG8gJ3JldmlzaW9u
X2l0ZW1zJy4gQWRkZWQgJ2NvbW1pdE93bmVyJyBmaWVsZCB0byBhIGNvbW1pdC4KKyAgICAgICAg
KiBwdWJsaWMvaW5jbHVkZS9kYi5waHA6IFNob3VsZCBiZSBhYmxlIHRvIGluc2VydCBib29sZWFu
IHZhbHVlIHRvIGRhdGFiYXNlIHdpdGhvdXQgZXhwbGljdGVkIGNvbnZlcnQgdG8gJ3QnIG9yICdm
Jy4KKyAgICAgICAgKiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhw
OiBBZGRlZCBsb2dpYyB0byBwcm9jZXNzICdjb21taXRPd25lcicgYW5kICdyZXF1aXJlQnVpbGQn
IGluICdjb21taXRfc2V0X2l0ZW1zJy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9z
dWItY29tbWl0LXZpZXdlci5qczoKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJl
cXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QuY29uc3RydWN0QnVpbGRSZXF1ZXN0c0Zy
b21EYXRhKToKKyAgICAgICAgKEJ1aWxkUmVxdWVzdCk6CisgICAgICAgICogcHVibGljL3YzL21v
ZGVscy9jb21taXQtc2V0LmpzOgorICAgICAgICAoQ29tbWl0U2V0KTogQWRkZWQgJ2NvbW1pdE93
bmVyJyBhbmQgJ3JlcXVpcmVCdWlsZCcgdG8gY29tbWl0U2V0LgorICAgICAgICAoQ29tbWl0U2V0
LnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlw
ZS5fdXBkYXRlRnJvbU9iamVjdCk6CisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLm93bmVk
UmVwb3NpdG9yaWVzKToKKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUub3duZXJSZXZpc2lv
bkZvclJlcG9zaXRvcnkpOgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5yZXF1aXJlc0J1
aWxkRm9yUmVwb3NpdG9yeSk6CisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLmVxdWFscyk6
CisgICAgICAgIChDdXN0b21Db21taXRTZXQpOiBDdXN0b21Db21taXRTZXQgc2hvdWxkIGJlIGFi
bGUgdG8gc3RvcmUgY29tbWl0IHdpdGggYW4gb3duZXIgY29tbWl0LgorICAgICAgICAoQ3VzdG9t
Q29tbWl0U2V0LnByb3RvdHlwZS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkpOgorICAgICAgICAo
Q3VzdG9tQ29tbWl0U2V0LnByb3RvdHlwZS5lcXVhbHMpOgorICAgICAgICAoQ3VzdG9tQ29tbWl0
U2V0LnByb3RvdHlwZS5yZXBvc2l0b3JpZXMpOgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0LnBy
b3RvdHlwZS5yZXZpc2lvbkZvclJlcG9zaXRvcnkpOgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0
LnByb3RvdHlwZS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSk6CisgICAgICAgICogcHVibGlj
L3YzL21vZGVscy9yZXBvc2l0b3J5LmpzOgorICAgICAgICAoUmVwb3NpdG9yeS5wcm90b3R5cGUu
ZmluZE93bmVkUmVwb3NpdG9yeUJ5TmFtZSk6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwLl9yZXZpc2lvblNldHNGcm9tQ29tbWl0
U2V0cyk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
czogQWRkZWQgdGVzdHMuCisgICAgICAgIChyZXR1cm4uTW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0
aE93bmVkUmVwb3NpdG9yaWVzLlRlc3RTZXJ2ZXIuZGF0YWJhc2UudGhlbik6CisgICAgICAgICh0
aGVuKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3Qt
Z3JvdXAtdGVzdHMuanM6IEFkZGVkIHRlc3RzLgorICAgICAgICAocmV0dXJuLmFkZFRyaWdnZXJh
YmxlQW5kQ3JlYXRlVGFzay5zdHJpbmdfYXBwZWFyZWRfaGVyZS50aGVuLmlkLnRhc2tJZC5pZC50
aGVuKToKKyAgICAgICAgKHRoZW4pOgorICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMv
bW9jay1kYXRhLmpzOiBBZGRlZCBtb2NrIGJ1aWxkIHJlcXVlc3RzIHdpdGggY29tbWl0IHNldHMg
Y29udGFpbiBvd25lZCBjb21taXRzLgorICAgICAgICAoTW9ja0RhdGEuanNjUmVwb3NpdG9yeUlk
KToKKyAgICAgICAgKE1vY2tEYXRhLmFkZE1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAgKE1v
Y2tEYXRhLnNldCBhZGRBbm90aGVyTW9ja1Rlc3RHcm91cCk6CisgICAgICAgIChNb2NrRGF0YS5t
b2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcik6IERlbGV0ZWQuCisKKwogMjAxNy0w
OC0yOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBm
aXguIE9TIFggInJldmlzaW9uIiBjYW4gaGF2ZSBhIHNwYWNlLgpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCmluZGV4IGMxNDM2OTIwOWIwZDRlN2E2MDBhYmVlYjQ3
YmUwY2I4YzZmZDUyMzcuLjhmN2I0Y2FjNjc3ODc5NmNiZTE0MmMxZjI4ZTZlYzFlNjdlY2Y3ZjAg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTI4Nyw4
ICsyODcsMTAgQEAgQ1JFQVRFIFRBQkxFIGNvbW1pdF9zZXRzICgKIENSRUFURSBUQUJMRSBjb21t
aXRfc2V0X2l0ZW1zICgKICAgICBjb21taXRzZXRfc2V0IGludGVnZXIgUkVGRVJFTkNFUyBjb21t
aXRfc2V0cyBOT1QgTlVMTCwKICAgICBjb21taXRzZXRfY29tbWl0IGludGVnZXIgUkVGRVJFTkNF
UyBjb21taXRzLAorICAgIGNvbW1pdHNldF9jb21taXRfb3duZXIgaW50ZWdlciBSRUZFUkVOQ0VT
IGNvbW1pdHMgREVGQVVMVCBOVUxMLAogICAgIGNvbW1pdHNldF9wYXRjaF9maWxlIGludGVnZXIg
UkVGRVJFTkNFUyB1cGxvYWRlZF9maWxlcywKICAgICBjb21taXRzZXRfcm9vdF9maWxlIGludGVn
ZXIgUkVGRVJFTkNFUyB1cGxvYWRlZF9maWxlcywKKyAgICBjb21taXRzZXRfcmVxdWlyZXNfYnVp
bGQgYm9vbGVhbiBERUZBVUxUIEZBTFNFLAogICAgIENPTlNUUkFJTlQgY29tbWl0c2V0X211c3Rf
aGF2ZV9jb21taXRfb3Jfcm9vdCBDSEVDSyAoY29tbWl0c2V0X2NvbW1pdCBJUyBOT1QgTlVMTCBP
UiBjb21taXRzZXRfcm9vdF9maWxlIElTIE5PVCBOVUxMKSwKICAgICBDT05TVFJBSU5UIGNvbW1p
dHNldF93aXRoX3BhdGNoX211c3RfaGF2ZV9jb21taXQgQ0hFQ0sgKGNvbW1pdHNldF9wYXRjaF9m
aWxlIElTIE5VTEwgT1IgY29tbWl0c2V0X2NvbW1pdCBJUyBOT1QgTlVMTCkpOwogCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5w
aHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5w
aHAKaW5kZXggMjM0YmYzZDU4NzY4Y2M1ZjgzYzNlNzc3MTU1MmY1NjRmYTcwODlhOS4uYTAxODFm
NzY2YzU1ZjMzNzVkMjM2MGI1MGI4MThlODY1ZTNhNzYzYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJsZXMucGhwCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYWRtaW4vdHJpZ2dlcmFibGVzLnBocApAQCAtNzYs
NyArNzYsNyBAQCBpZiAoJGRiKSB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAkcmVwb3NpdG9y
eV9yb3dzID0gJGRiLT5mZXRjaF90YWJsZSgncmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRvcnlfbmFt
ZScpOworICAgICRyZXBvc2l0b3J5X3Jvd3MgPSAkZGItPnNlbGVjdF9yb3dzKCdyZXBvc2l0b3Jp
ZXMnLCAncmVwb3NpdG9yeScsIGFycmF5KCdvd25lcicgPT4gTlVMTCksICduYW1lJyk7CiAKICAg
ICAkcGFnZSA9IG5ldyBBZG1pbmlzdHJhdGl2ZVBhZ2UoJGRiLCAnYnVpbGRfdHJpZ2dlcmFibGVz
JywgJ3RyaWdnZXJhYmxlJywgYXJyYXkoCiAgICAgICAgICduYW1lJyA9PiBhcnJheSgnZWRpdGlu
Z19tb2RlJyA9PiAnc3RyaW5nJyksCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAK
aW5kZXggNzZhOTZkNDAzYmQ1NmQ1MjNkZWNjNjk5OWRkY2QzNjg3NTFhZjExOS4uZWQ5OTljNDUz
ZmM2MTU5OGMyOWMwMWZhNTg4Njk2NjUwNTQ1NjFiMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0
cy1mZXRjaGVyLnBocApAQCAtMTIyLDcgKzEyMiwxMiBAQCBjbGFzcyBCdWlsZFJlcXVlc3RzRmV0
Y2hlciB7CiAgICAgICAgICAgICBpZiAoJHJvb3RfZmlsZV9pZCkKICAgICAgICAgICAgICAgICAk
dGhpcy0+YWRkX3VwbG9hZGVkX2ZpbGUoJHJvb3RfZmlsZV9pZCk7CiAKLSAgICAgICAgICAgIGFy
cmF5X3B1c2goJHJldmlzaW9uX2l0ZW1zLCBhcnJheSgnY29tbWl0JyA9PiAkcm93Wydjb21taXRf
aWQnXSwgJ3BhdGNoJyA9PiAkcGF0Y2hfZmlsZV9pZCwgJ3Jvb3RGaWxlJyA9PiAkcm9vdF9maWxl
X2lkKSk7CisgICAgICAgICAgICBhcnJheV9wdXNoKCRyZXZpc2lvbl9pdGVtcywgYXJyYXkoCisg
ICAgICAgICAgICAgICAgJ2NvbW1pdCcgPT4gJHJvd1snY29tbWl0X2lkJ10sCisgICAgICAgICAg
ICAgICAgJ3BhdGNoJyA9PiAkcGF0Y2hfZmlsZV9pZCwKKyAgICAgICAgICAgICAgICAncm9vdEZp
bGUnID0+ICRyb290X2ZpbGVfaWQsCisgICAgICAgICAgICAgICAgJ2NvbW1pdE93bmVyJyA9PiAk
cm93Wydjb21taXRzZXRfY29tbWl0X293bmVyJ10sCisgICAgICAgICAgICAgICAgJ3JlcXVpcmVz
QnVpbGQnID0+IERhdGFiYXNlOjppc190cnVlKCRyb3dbJ2NvbW1pdHNldF9yZXF1aXJlc19idWls
ZCddKSkpOwogCiAgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkY29tbWl0X2lkLCAk
dGhpcy0+Y29tbWl0c19ieV9pZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMzAs
NiArMTM1LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgYXJy
YXlfcHVzaCgkdGhpcy0+Y29tbWl0cywgYXJyYXkoCiAgICAgICAgICAgICAgICAgJ2lkJyA9PiAk
Y29tbWl0X2lkLAogICAgICAgICAgICAgICAgICdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9p
ZCwKKyAgICAgICAgICAgICAgICAnY29tbWl0T3duZXInID0+ICRyb3dbJ2NvbW1pdHNldF9jb21t
aXRfb3duZXInXSwKICAgICAgICAgICAgICAgICAncmV2aXNpb24nID0+ICRyZXZpc2lvbiwKICAg
ICAgICAgICAgICAgICAndGltZScgPT4gRGF0YWJhc2U6OnRvX2pzX3RpbWUoJGNvbW1pdF90aW1l
KSkpOwogCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1
ZGUvZGIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBo
cAppbmRleCAyMjEyZjBmZWY2ZmZiMjZkOTA4NWE1MjhlMTI1YTc1MGRlOWQ5YzFiLi5lZDBlMWQ4
Y2Y3NmYxN2QyZWY2ZDkyZmFhN2JjMmNlMGZmNzAxNDIxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9kYi5waHAKQEAgLTExOCw2ICsxMTgsOCBAQCBjbGFz
cyBEYXRhYmFzZQogICAgICAgICAgICAgYXNzZXJ0KGN0eXBlX2FsbnVtX3VuZGVyc2NvcmUoJG5h
bWUpKTsKICAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbHVtbl9uYW1lcywgJG5hbWUpOwogICAg
ICAgICAgICAgYXJyYXlfcHVzaCgkcGxhY2Vob2xkZXJzLCAnJCcgLiAkaSk7CisgICAgICAgICAg
ICBpZiAoaXNfYm9vbCgkY3VycmVudF92YWx1ZSkpCisgICAgICAgICAgICAgICAgJGN1cnJlbnRf
dmFsdWUgPSAkdGhpcy0+dG9fZGF0YWJhc2VfYm9vbGVhbigkY3VycmVudF92YWx1ZSk7CiAgICAg
ICAgICAgICBhcnJheV9wdXNoKCR2YWx1ZXMsICRjdXJyZW50X3ZhbHVlKTsKICAgICAgICAgICAg
ICRpKys7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAK
aW5kZXggYjE1MTExOGY2ZjEyMGVmYTQwMDg5ZWNiNGY0NjkzZWEyNmQwNTEyMS4uYTMzZjEzMGE4
Mzk3MmY2MDAwMjRlZmM3ODE1OGUwOGEzZmRjOWE4MiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtdGVzdC1ncm91cC5waHAKQEAgLTUyLDcgKzUyLDYgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAg
ICAgIGlmICgkZHVwbGljYXRlX3Rlc3RfZ3JvdXApCiAgICAgICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUnLCBhcnJheSgndGFzaycgPT4gJHRhc2tfaWQsICd0
ZXN0R3JvdXAnID0+ICRkdXBsaWNhdGVfdGVzdF9ncm91cFsndGVzdGdyb3VwX2lkJ10pKTsKIAot
ICAgICAgICAvLyBGSVhNRTogQWRkIGEgY2hlY2sgZm9yIGR1cGxpY2F0ZSB0ZXN0IGdyb3VwIG5h
bWUuCiAgICAgICAgICR0cmlnZ2VyYWJsZSA9IGZpbmRfdHJpZ2dlcmFibGVfZm9yX3Rhc2soJGRi
LCAkdGFza19pZCk7CiAgICAgICAgIGlmICgkdHJpZ2dlcmFibGUpIHsKICAgICAgICAgICAgICR0
cmlnZ2VyYWJsZV9pZCA9ICR0cmlnZ2VyYWJsZVsnaWQnXTsKQEAgLTk0LDcgKzkzLDcgQEAgZnVu
Y3Rpb24gbWFpbigpCiAgICAgICAgICRuZWVkX3RvX2J1aWxkID0gRkFMU0U7CiAgICAgICAgIGZv
cmVhY2ggKCRjb21taXRfbGlzdFsnc2V0J10gYXMgJGNvbW1pdF9yb3cpIHsKICAgICAgICAgICAg
ICRjb21taXRfcm93WydzZXQnXSA9ICRjb21taXRfc2V0X2lkOwotICAgICAgICAgICAgJG5lZWRf
dG9fYnVpbGQgPSAkbmVlZF90b19idWlsZCB8fCAkY29tbWl0X3Jvd1sncGF0Y2hfZmlsZSddOwor
ICAgICAgICAgICAgJG5lZWRfdG9fYnVpbGQgPSAkbmVlZF90b19idWlsZCB8fCAkY29tbWl0X3Jv
d1sncmVxdWlyZXNfYnVpbGQnXTsKICAgICAgICAgICAgICRkYi0+aW5zZXJ0X3JvdygnY29tbWl0
X3NldF9pdGVtcycsICdjb21taXRzZXQnLCAkY29tbWl0X3JvdywgJ2NvbW1pdCcpOwogICAgICAg
ICB9CiAgICAgICAgICRyZXBvc2l0b3J5X2dyb3VwID0gJGNvbW1pdF9saXN0WydyZXBvc2l0b3J5
X2dyb3VwJ107CkBAIC0xMjksNyArMTI4LDcgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgICAgICAg
ICAgICAgJ29yZGVyJyA9PiAkb3JkZXIsCiAgICAgICAgICAgICAgICAgJ2NvbW1pdF9zZXQnID0+
ICRjb25maWdbJ2NvbW1pdF9zZXQnXSkpOwogICAgICAgICAgICAgJG9yZGVyKys7Ci0gICAgICAg
IH0gICAgICAgIAorICAgICAgICB9CiAgICAgfQogCiAgICAgJG9yZGVyID0gMDsKQEAgLTE1OSw2
ICsxNTgsMjUgQEAgZnVuY3Rpb24gY29tbWl0X3NldHNfZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwg
JHRyaWdnZXJhYmxlX2lkLCAkcmV2aXNpb25fc2V0X2xpc3QKIAogICAgICRmaW5kZXIgPSBuZXcg
UmVwb3NpdG9yeUdyb3VwRmluZGVyKCRkYiwgJHRyaWdnZXJhYmxlX2lkKTsKICAgICAkY29tbWl0
X3NldF9saXN0ID0gYXJyYXkoKTsKKyAgICAkcmVwb3NpdG9yeV9yZXF1aXJlc19idWlsZCA9IGFy
cmF5KCk7CisgICAgZm9yZWFjaCAoJHJldmlzaW9uX3NldF9saXN0IGFzICRyZXZpc2lvbl9zZXQp
IHsKKyAgICAgICAgZm9yZWFjaCAoJHJldmlzaW9uX3NldCBhcyAkcmVwb3NpdG9yeV9pZCA9PiAk
ZGF0YSkgeworICAgICAgICAgICAgaWYgKCRyZXBvc2l0b3J5X2lkID09ICdjdXN0b21Sb290cycp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIWlzX251bWVyaWMo
JHJlcG9zaXRvcnlfaWQpKQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxp
ZFJlcG9zaXRvcnknLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQpKTsKKwor
ICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YSkpCisgICAgICAgICAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdJbnZhbGlkUmVwb3NpdG9yeURhdGEnLCBhcnJheSgncmVwb3NpdG9yeScgPT4g
JHJlcG9zaXRvcnlfaWQsICdkYXRhJyA9PiAkZGF0YSkpOworCisgICAgICAgICAgICAkcGF0Y2hf
ZmlsZV9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ3BhdGNoJyk7CisgICAgICAgICAgICBpZiAoJHBh
dGNoX2ZpbGVfaWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJHBhdGNoX2Zp
bGVfaWQpIHx8ICEkZGItPnNlbGVjdF9maXJzdF9yb3coJ3VwbG9hZGVkX2ZpbGVzJywgJ2ZpbGUn
LCBhcnJheSgnaWQnID0+ICRwYXRjaF9maWxlX2lkKSkpCisgICAgICAgICAgICAgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFBhdGNoRmlsZScsIGFycmF5KCdwYXRjaCcgPT4gJHBhdGNo
X2ZpbGVfaWQpKTsKKyAgICAgICAgICAgICAgICAkcmVwb3NpdG9yeV9yZXF1aXJlc19idWlsZFsk
cmVwb3NpdG9yeV9pZF0gPSBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQog
ICAgIGZvcmVhY2ggKCRyZXZpc2lvbl9zZXRfbGlzdCBhcyAkcmV2aXNpb25fc2V0KSB7CiAgICAg
ICAgIGlmICghY291bnQoJHJldmlzaW9uX3NldCkpCiAgICAgICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0ludmFsaWRSZXZpc2lvblNldHMnLCBhcnJheSgncmV2aXNpb25TZXRzJyA9PiAkcmV2aXNp
b25fc2V0X2xpc3QpKTsKQEAgLTE3MiwzOSArMTkwLDQ5IEBAIGZ1bmN0aW9uIGNvbW1pdF9zZXRz
X2Zyb21fcmV2aXNpb25fc2V0cygkZGIsICR0cmlnZ2VyYWJsZV9pZCwgJHJldmlzaW9uX3NldF9s
aXN0CiAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZpbGVfaWRfbGlzdCBhcyAkZmlsZV9pZCkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJGZpbGVfaWQpIHx8ICEkZGIt
PnNlbGVjdF9maXJzdF9yb3coJ3VwbG9hZGVkX2ZpbGVzJywgJ2ZpbGUnLCBhcnJheSgnaWQnID0+
ICRmaWxlX2lkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0lu
dmFsaWRVcGxvYWRlZEZpbGUnLCBhcnJheSgnZmlsZScgPT4gJGZpbGVfaWQpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJyYXkoJ3Jvb3RfZmlsZScgPT4g
JGZpbGVfaWQsICdwYXRjaF9maWxlJyA9PiBOVUxMKSk7CisgICAgICAgICAgICAgICAgICAgIGFy
cmF5X3B1c2goJGNvbW1pdF9zZXQsIGFycmF5KCdyb290X2ZpbGUnID0+ICRmaWxlX2lkLCAncGF0
Y2hfZmlsZScgPT4gTlVMTCwgJ3JlcXVpcmVzX2J1aWxkJyA9PiBGQUxTRSwgJ2NvbW1pdF9vd25l
cicgPT4gTlVMTCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghaXNfbnVtZXJpYygkcmVwb3NpdG9y
eV9pZCkpCi0gICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwb3NpdG9y
eScsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCkpOwotCi0gICAgICAgICAg
ICBpZiAoIWlzX2FycmF5KCRkYXRhKSkKLSAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J0ludmFsaWRSZXBvc2l0b3J5RGF0YScsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9y
eV9pZCwgJ2RhdGEnID0+ICRkYXRhKSk7CiAKICAgICAgICAgICAgICRyZXZpc2lvbiA9IGFycmF5
X2dldCgkZGF0YSwgJ3JldmlzaW9uJyk7CiAgICAgICAgICAgICBpZiAoISRyZXZpc2lvbikKICAg
ICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXZpc2lvbicsIGFycmF5KCdy
ZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ2RhdGEnID0+ICRkYXRhKSk7CiAgICAgICAg
ICAgICAkY29tbWl0X2lkID0gQ29tbWl0TG9nRmV0Y2hlcjo6ZmluZF9jb21taXRfaWRfYnlfcmV2
aXNpb24oJGRiLCAkcmVwb3NpdG9yeV9pZCwgJHJldmlzaW9uKTsKICAgICAgICAgICAgIGlmICgk
Y29tbWl0X2lkIDwgMCkKLSAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0FtYmlnaW91
c1JldmlzaW9uJywgYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNp
b24nID0+ICRyZXZpc2lvbikpOworICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQW1i
aWd1b3VzUmV2aXNpb24nLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdy
ZXZpc2lvbicgPT4gJHJldmlzaW9uKSk7CiAgICAgICAgICAgICBpZiAoISRjb21taXRfaWQpCiAg
ICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXZpc2lvbk5vdEZvdW5kJywgYXJyYXko
J3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24nID0+ICRyZXZpc2lvbikp
OwogCisgICAgICAgICAgICAkcmVwb3NpdG9yeSA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygncmVw
b3NpdG9yaWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnaWQnID0+IGludHZhbCgkcmVwb3NpdG9y
eV9pZCkpKTsKKyAgICAgICAgICAgICRvd25lcl9yZXZpc2lvbiA9IGFycmF5X2dldCgkZGF0YSwg
J293bmVyUmV2aXNpb24nKTsKICAgICAgICAgICAgICRwYXRjaF9maWxlX2lkID0gYXJyYXlfZ2V0
KCRkYXRhLCAncGF0Y2gnKTsKLSAgICAgICAgICAgIGlmICgkcGF0Y2hfZmlsZV9pZCkgewotICAg
ICAgICAgICAgICAgIGlmICghaXNfbnVtZXJpYygkcGF0Y2hfZmlsZV9pZCkgfHwgISRkYi0+c2Vs
ZWN0X2ZpcnN0X3JvdygndXBsb2FkZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdpZCcgPT4gJHBh
dGNoX2ZpbGVfaWQpKSkKLSAgICAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZh
bGlkUGF0Y2hGaWxlJywgYXJyYXkoJ3BhdGNoJyA9PiAkcGF0Y2hfZmlsZV9pZCkpOworICAgICAg
ICAgICAgaWYgKCRwYXRjaF9maWxlX2lkKQogICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJHJl
cG9zaXRvcnlfd2l0aF9wYXRjaCwgJHJlcG9zaXRvcnlfaWQpOworCisgICAgICAgICAgICAkb3du
ZXJfY29tbWl0ID0gTlVMTDsKKyAgICAgICAgICAgIGlmICgkb3duZXJfcmV2aXNpb24pIHsKKyAg
ICAgICAgICAgICAgICAkb3duZXJfY29tbWl0ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21t
aXRzJywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiBpbnR2YWwoJHJlcG9zaXRvcnlb
J3JlcG9zaXRvcnlfb3duZXInXSksICdyZXZpc2lvbicgPT4gJG93bmVyX3JldmlzaW9uKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCEkb3duZXJfY29tbWl0KQorICAgICAgICAgICAgICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRPd25lclJldmlzaW9uJywgYXJyYXkoJ293bmVyUmV2aXNp
b24nID0+ICRvd25lcl9yZXZpc2lvbikpOworICAgICAgICAgICAgICAgIGlmICghJGRiLT5zZWxl
Y3RfZmlyc3Rfcm93KCdjb21taXRfb3duZXJzaGlwcycsICdjb21taXQnLCBhcnJheSgnb3duZWQn
ID0+ICRjb21taXRfaWQsICdvd25lcicgPT4gJG93bmVyX2NvbW1pdFsnY29tbWl0X2lkJ10pKSkK
KyAgICAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0T3duZXJz
aGlwJywgYXJyYXkoJ2NvbW1pdE93bmVyJyA9PiAkb3duZXJfY29tbWl0Wydjb21taXRfaWQnXSwg
J2NvbW1pdE93bmVkJyA9PiAkY29tbWl0X2lkKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAkcmVxdWlyZXNfYnVpbGQgPSAkb3duZXJfcmV2aXNpb24gfHwgYXJyYXlfZ2V0KCRyZXBvc2l0
b3J5X3JlcXVpcmVzX2J1aWxkLCAkcmVwb3NpdG9yeV9pZCwgRkFMU0UpOworCisgICAgICAgICAg
ICAkb3duZXJfY29tbWl0X2lkID0gJG93bmVyX2NvbW1pdD8gJG93bmVyX2NvbW1pdFsnY29tbWl0
X2lkJ10gOiBOVUxMOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJyYXko
J2NvbW1pdCcgPT4gJGNvbW1pdF9pZCwgJ3BhdGNoX2ZpbGUnID0+ICRwYXRjaF9maWxlX2lkLCAn
cmVxdWlyZXNfYnVpbGQnID0+ICRyZXF1aXJlc19idWlsZCwgJ2NvbW1pdF9vd25lcicgPT4gJG93
bmVyX2NvbW1pdF9pZCkpOwogCi0gICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0LCBh
cnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2lkLCAncGF0Y2hfZmlsZScgPT4gJHBhdGNoX2ZpbGVf
aWQpKTsKKyAgICAgICAgICAgIGlmICghJHJlcG9zaXRvcnkpCisgICAgICAgICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdSZXBvc2l0b3J5Tm90Rm91bmQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4g
JHJlcG9zaXRvcnlfaWQpKTsKKyAgICAgICAgICAgIGlmICgkcmVwb3NpdG9yeVsncmVwb3NpdG9y
eV9vd25lciddKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYXJyYXlf
cHVzaCgkcmVwb3NpdG9yeV9saXN0LCAkcmVwb3NpdG9yeV9pZCk7CiAgICAgICAgIH0KIAogICAg
ICAgICAkcmVwb3NpdG9yeV9ncm91cF9pZCA9ICRmaW5kZXItPmZpbmRfYnlfcmVwb3NpdG9yaWVz
KCRyZXBvc2l0b3J5X2xpc3QpOwogICAgICAgICBpZiAoISRyZXBvc2l0b3J5X2dyb3VwX2lkKQot
ICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3VwJywg
YXJyYXkoJ3JlcG9zaXRvcmlzJyA9PiAkcmVwb3NpdG9yeV9saXN0KSk7CisgICAgICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ05vTWF0Y2hpbmdSZXBvc2l0b3J5R3JvdXAnLCBhcnJheSgncmVwb3Np
dG9yaWVzJyA9PiAkcmVwb3NpdG9yeV9saXN0KSk7CiAKICAgICAgICAgZm9yZWFjaCAoJHJlcG9z
aXRvcnlfd2l0aF9wYXRjaCBhcyAkcmVwb3NpdG9yeV9pZCkgewogICAgICAgICAgICAgaWYgKCEk
ZmluZGVyLT5hY2NlcHRzX3BhdGNoKCRyZXBvc2l0b3J5X2dyb3VwX2lkLCAkcmVwb3NpdG9yeV9p
ZCkpCkBAIC0yMzUsMTQgKzI2MywxNCBAQCBmdW5jdGlvbiBlbnN1cmVfY29tbWl0X3NldHMoJGRi
LCAkdHJpZ2dlcmFibGVfaWQsICRjb21taXRfc2V0c19pbmZvKSB7CiAgICAgICAgICAgICBpZiAo
ISRjb21taXQpCiAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXZpc2lvbk5vdEZv
dW5kJywgYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X25hbWUsICdyZXZpc2lvbicg
PT4gJHJldmlzaW9uKSk7CiAgICAgICAgICAgICBhcnJheV9zZXRfZGVmYXVsdCgkY29tbWl0X3Nl
dHMsICRpLCBhcnJheSgnc2V0JyA9PiBhcnJheSgpKSk7Ci0gICAgICAgICAgICBhcnJheV9wdXNo
KCRjb21taXRfc2V0c1skaV1bJ3NldCddLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0Wydjb21t
aXRfaWQnXSwgJ3BhdGNoX2ZpbGUnID0+IE5VTEwpKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2go
JGNvbW1pdF9zZXRzWyRpXVsnc2V0J10sIGFycmF5KCdjb21taXQnID0+ICRjb21taXRbJ2NvbW1p
dF9pZCddLCAncGF0Y2hfZmlsZScgPT4gTlVMTCwgJ3JlcXVpcmVzX2J1aWxkJyA9PiBGQUxTRSwg
J2NvbW1pdF9vd25lcicgPT4gTlVMTCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgJGZpbmRl
ciA9IG5ldyBSZXBvc2l0b3J5R3JvdXBGaW5kZXIoJGRiLCAkdHJpZ2dlcmFibGVfaWQpOwogICAg
ICRyZXBvc2l0b3J5X2dyb3VwX2lkID0gJGZpbmRlci0+ZmluZF9ieV9yZXBvc2l0b3JpZXMoJHJl
cG9zaXRvcnlfbGlzdCk7CiAgICAgaWYgKCEkcmVwb3NpdG9yeV9ncm91cF9pZCkKLSAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3VwJywgYXJyYXkoJ3JlcG9z
aXRvcmlzJyA9PiAkcmVwb3NpdG9yeV9saXN0KSk7CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcign
Tm9NYXRjaGluZ1JlcG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpZXMnID0+ICRyZXBv
c2l0b3J5X2xpc3QpKTsKIAogICAgIGlmIChjb3VudCgkY29tbWl0X3NldHMpIDwgMikKICAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0U2V0cycsIGFycmF5KCdjb21taXRTZXRz
JyA9PiAkY29tbWl0X3NldHNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggODE5YjYz
YzRmZWQ3N2NjZWFiMzI0ZWQyODVhOGE4YTdkZGMwNDcyOC4uMDZlOTJkOGM1NDU3MzlkOWM5NmJj
MTM4YWQ1NGI3MjIzYTc3YTdmNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0xNDMsNiArMTQz
LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAg
ICAgICAgICAgICBpdGVtLmNvbW1pdCA9IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdCk7
CiAgICAgICAgICAgICAgICAgaXRlbS5wYXRjaCA9IGl0ZW0ucGF0Y2ggPyBVcGxvYWRlZEZpbGUu
ZmluZEJ5SWQoaXRlbS5wYXRjaCkgOiBudWxsOwogICAgICAgICAgICAgICAgIGl0ZW0ucm9vdEZp
bGUgPSBpdGVtLnJvb3RGaWxlID8gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGl0ZW0ucm9vdEZpbGUp
IDogbnVsbDsKKyAgICAgICAgICAgICAgICBpdGVtLmNvbW1pdE93bmVyID0gaXRlbS5jb21taXRP
d25lciA/IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdE93bmVyKSA6IG51bGw7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByYXdEYXRhLmN1c3RvbVJvb3RzID0gcmF3RGF0YS5jdXN0
b21Sb290cy5tYXAoKGZpbGVJZCkgPT4gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCkpOwog
ICAgICAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocmF3RGF0YS5pZCwg
cmF3RGF0YSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvY29tbWl0LXNldC5qcwppbmRleCBhMTI1ZjEwZjE5ODdiMTAxYWE4ZmY5OGY5M2My
NTdhOWIyYzViMGI3Li5kMGMzYzEyMDI2MzY3MTliYzM3NjU1YWVlNmJjOTVjNTkxOWIwNmNkIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21t
aXQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2NvbW1pdC1zZXQuanMKQEAgLTksNiArOSw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERh
dGFNb2RlbE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IG5l
dyBNYXA7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwID0gbmV3IE1hcDsKICAg
ICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMu
X3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVw
b3NpdG9yeVRvUmVxdWlyZXNCdWlsZE1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2xhdGVz
dENvbW1pdFRpbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9jdXN0b21Sb290cyA9IFtdOwogICAg
ICAgICB0aGlzLl9hbGxSb290RmlsZXMgPSBbXTsKQEAgLTI0LDYgKzI2LDggQEAgY2xhc3MgQ29t
bWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9y
eVRvQ29tbWl0TWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFw
LmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuY2xlYXIoKTsKKyAg
ICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuY2xlYXIoKTsKKyAgICAgICAg
dGhpcy5fcmVwb3NpdG9yeVRvUmVxdWlyZXNCdWlsZE1hcC5jbGVhcigpOwogICAgICAgICB0aGlz
Ll9yZXBvc2l0b3JpZXMgPSBbXTsKICAgICAgICAgdGhpcy5fdXBkYXRlRnJvbU9iamVjdChvYmpl
Y3QpOwogICAgIH0KQEAgLTM2LDkgKzQwLDEyIEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERh
dGFNb2RlbE9iamVjdCB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXQgaW5zdGFu
Y2VvZiBDb21taXRMb2cpOwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWl0ZW0ucGF0Y2gg
fHwgaXRlbS5wYXRjaCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CiAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghaXRlbS5yb290RmlsZSB8fCBpdGVtLnJvb3RGaWxlIGluc3RhbmNlb2YgVXBs
b2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpdGVtLmNvbW1pdE93bmVy
IHx8IGl0ZW0uY29tbWl0T3duZXIgaW5zdGFuY2VvZiBDb21taXRMb2cpOwogICAgICAgICAgICAg
Y29uc3QgcmVwb3NpdG9yeSA9IGNvbW1pdC5yZXBvc2l0b3J5KCk7CiAgICAgICAgICAgICB0aGlz
Ll9yZXBvc2l0b3J5VG9Db21taXRNYXAuc2V0KHJlcG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAg
ICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5wYXRj
aCk7CisgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5zZXQocmVw
b3NpdG9yeSwgaXRlbS5jb21taXRPd25lcik7CisgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5
VG9SZXF1aXJlc0J1aWxkTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVzQnVpbGQpOwog
ICAgICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5zZXQocmVwb3NpdG9yeSwgaXRl
bS5yb290RmlsZSk7CiAgICAgICAgICAgICBpZiAoaXRlbS5yb290RmlsZSkKICAgICAgICAgICAg
ICAgICByb290RmlsZXMuYWRkKGl0ZW0ucm9vdEZpbGUpOwpAQCAtNDksNiArNTYsNyBAQCBjbGFz
cyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIH0KIAogICAgIHJlcG9z
aXRvcmllcygpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcmllczsgfQorICAgIG93bmVkUmVwb3Np
dG9yaWVzKCkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yaWVzLmZpbHRlcigocmVwb3NpdG9yeSkg
PT4gcmVwb3NpdG9yeS5vd25lcklkKSB9OwogICAgIGN1c3RvbVJvb3RzKCkgeyByZXR1cm4gdGhp
cy5fY3VzdG9tUm9vdHM7IH0KICAgICBhbGxSb290RmlsZXMoKSB7IHJldHVybiB0aGlzLl9hbGxS
b290RmlsZXM7IH0KICAgICBjb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJu
IHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9yeSk7IH0KQEAgLTU5LDgg
KzY3LDE1IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAg
ICAgIHJldHVybiBjb21taXQgPyBjb21taXQucmV2aXNpb24oKSA6IG51bGw7CiAgICAgfQogCisg
ICAgb3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkKKyAgICB7CisgICAgICAg
IGNvbnN0IGNvbW1pdCA9IHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLmdldChyZXBv
c2l0b3J5KTsKKyAgICAgICAgcmV0dXJuIGNvbW1pdCA/IGNvbW1pdC5yZXZpc2lvbigpIDogbnVs
bDsKKyAgICB9CisKICAgICBwYXRjaEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1cm4g
dGhpcy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9CiAgICAgcm9vdEZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1h
cC5nZXQocmVwb3NpdG9yeSk7IH0KKyAgICByZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShyZXBv
c2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9SZXF1aXJlc0J1aWxkTWFwLmdldChy
ZXBvc2l0b3J5KTsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIERhdGUg
b2JqZWN0LgogICAgIGxhdGVzdENvbW1pdFRpbWUoKQpAQCAtODUsNiArMTAwLDEwIEBAIGNsYXNz
IENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuZ2V0
KHJlcG9zaXRvcnkpICE9IG90aGVyLl9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAodGhpcy5f
cmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuZ2V0KHJlcG9zaXRvcnkpICE9IG90aGVyLl9yZXBv
c2l0b3J5VG9Db21taXRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5VG9SZXF1aXJlc0J1aWxk
TWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVRvUmVxdWlyZXNCdWlsZE1h
cC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBDb21taXRTZXQuYXJlQ3VzdG9tUm9vdHNFcXVhbCh0aGlzLl9j
dXN0b21Sb290cywgb3RoZXIuX2N1c3RvbVJvb3RzKTsKICAgICB9CkBAIC0xMzksNyArMTU4LDcg
QEAgY2xhc3MgTWVhc3VyZW1lbnRDb21taXRTZXQgZXh0ZW5kcyBDb21taXRTZXQgewogICAgIH0K
IAogICAgIC8vIFVzZSBDb21taXRTZXQncyBzdGF0aWMgbWFwcyBiZWNhdXNlIE1lYXN1cmVtZW50
Q29tbWl0U2V0IGFuZCBDb21taXRTZXQgYXJlIGxvZ2ljYWxseSBvZiB0aGUgc2FtZSB0eXBlLgot
ICAgIC8vIEZJWE1FOiBJZGFlbGx5LCBEYXRhTW9kZWwgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGlz
IGJ1dCB0cmF2ZXJzaW5nIHByb3RvdHlwZSBjaGFpbiBpcyBleHBlbnNpdmUuCisgICAgLy8gRklY
TUU6IElkZWFsbHksIERhdGFNb2RlbCBzaG91bGQgdGFrZSBjYXJlIG9mIHRoaXMgYnV0IHRyYXZl
cnNpbmcgcHJvdG90eXBlIGNoYWluIGlzIGV4cGVuc2l2ZS4KICAgICBuYW1lZFN0YXRpY01hcChu
YW1lKSB7IHJldHVybiBDb21taXRTZXQubmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KICAgICBlbnN1
cmVOYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiBDb21taXRTZXQuZW5zdXJlTmFtZWRTdGF0
aWNNYXAobmFtZSk7IH0KICAgICBzdGF0aWMgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4g
Q29tbWl0U2V0Lm5hbWVkU3RhdGljTWFwKG5hbWUpOyB9CkBAIC0xNTcsMTQgKzE3NiwxOCBAQCBj
bGFzcyBDdXN0b21Db21taXRTZXQgewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeSA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMu
X3JldmlzaW9uTGlzdEJ5T3duZWRSZXBvc2l0b3J5ID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5f
Y3VzdG9tUm9vdHMgPSBbXTsKICAgICB9CiAKLSAgICBzZXRSZXZpc2lvbkZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCkKKyAgICBzZXRSZXZpc2lvbkZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCwgb3duZXJSZXZpc2lv
biA9IG51bGwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXBvc2l0b3J5IGluc3Rh
bmNlb2YgUmVwb3NpdG9yeSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRjaCB8fCBwYXRj
aCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7Ci0gICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5
UmVwb3NpdG9yeS5zZXQocmVwb3NpdG9yeSwge3JldmlzaW9uLCBwYXRjaH0pOworICAgICAgICBp
ZiAob3duZXJSZXZpc2lvbikKKyAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5T3duZWRS
ZXBvc2l0b3J5LnNldChyZXBvc2l0b3J5LCB7cmV2aXNpb24sIHBhdGNoLCBvd25lclJldmlzaW9u
fSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3Np
dG9yeS5zZXQocmVwb3NpdG9yeSwge3JldmlzaW9uLCBwYXRjaH0pOwogICAgIH0KIAogICAgIGVx
dWFscyhvdGhlcikKQEAgLTE3Miw4ICsxOTUsMTEgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQob3RoZXIgaW5zdGFuY2VvZiBDdXN0b21Db21taXRTZXQp
OwogICAgICAgICBpZiAodGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LnNpemUgIT0gb3Ro
ZXIuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIHRoaXMuX3JldmlzaW9uTGlzdEJ5
UmVwb3NpdG9yeS5rZXlzKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IHRoaXNSZXZpc2lvbiA9IHRo
aXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5nZXQocmVwb3NpdG9yeSk7CisKKyAgICAgICAg
aWYgKHRoaXMuX3JldmlzaW9uTGlzdEJ5T3duZWRSZXBvc2l0b3J5LnNpemUgIT0gb3RoZXIuX3Jl
dmlzaW9uTGlzdEJ5T3duZWRSZXBvc2l0b3J5LnNpemUpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgZm9yIChjb25zdCBbcmVwb3NpdG9yeSwgdGhpc1JldmlzaW9uXSBvZiB0
aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkpIHsKICAgICAgICAgICAgIGNvbnN0IG90aGVy
UmV2aXNpb24gPSBvdGhlci5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5
KTsKICAgICAgICAgICAgIGlmICghdGhpc1JldmlzaW9uICE9ICFvdGhlclJldmlzaW9uKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MSwxMyArMjA3LDI3IEBAIGNsYXNzIEN1
c3RvbUNvbW1pdFNldCB7CiAgICAgICAgICAgICAgICAgfHwgdGhpc1JldmlzaW9uLnBhdGNoICE9
IG90aGVyUmV2aXNpb24ucGF0Y2gpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQorCisgICAgICAgIGZvciAoY29uc3QgW3JlcG9zaXRvcnksIHRoaXNSZXZpc2lvbl0g
b2YgdGhpcy5fcmV2aXNpb25MaXN0QnlPd25lZFJlcG9zaXRvcnkpIHsKKyAgICAgICAgICAgIGNv
bnN0IG90aGVyUmV2aXNpb24gPSB0aGlzLl9yZXZpc2lvbkxpc3RCeU93bmVkUmVwb3NpdG9yeS5n
ZXQocmVwb3NpdG9yeSk7CisgICAgICAgICAgICBpZiAoIXRoaXNSZXZpc2lvbiAhPSAhb3RoZXJS
ZXZpc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlm
ICh0aGlzUmV2aXNpb24gJiYgKHRoaXNSZXZpc2lvbi5yZXZpc2lvbiAhPSBvdGhlclJldmlzaW9u
LnJldmlzaW9uCisgICAgICAgICAgICAgICAgfHwgdGhpc1JldmlzaW9uLnBhdGNoICE9IG90aGVy
UmV2aXNpb24ucGF0Y2gKKyAgICAgICAgICAgICAgICB8fCB0aGlzUmV2aXNpb24ub3duZXJSZXZp
c2lvbiAhPSBvdGhlclJldmlzaW9uLm93bmVyUmV2aXNpb24pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmFyZUN1c3Rv
bVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90aGVyLl9jdXN0b21Sb290cyk7CiAgICAg
fQogCi0gICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZXZpc2lv
bkxpc3RCeVJlcG9zaXRvcnkua2V5cygpKTsgfQorICAgIHJlcG9zaXRvcmllcygpIHsgcmV0dXJu
IEFycmF5LmZyb20odGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LmtleXMoKSkuY29uY2F0
KEFycmF5LmZyb20odGhpcy5fcmV2aXNpb25MaXN0QnlPd25lZFJlcG9zaXRvcnkua2V5cygpKSk7
fQogICAgIHJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KQogICAgIHsKLSAgICAgICAg
Y29uc3QgZW50cnkgPSB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRv
cnkpOworICAgICAgICBsZXQgZW50cnkgPSB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnku
Z2V0KHJlcG9zaXRvcnkpOworICAgICAgICBpZiAoZW50cnkpCisgICAgICAgICAgICByZXR1cm4g
ZW50cnkucmV2aXNpb247CisgICAgICAgIGVudHJ5ID0gdGhpcy5fcmV2aXNpb25MaXN0QnlPd25l
ZFJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOwogICAgICAgICBpZiAoIWVudHJ5KQogICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBlbnRyeS5yZXZpc2lvbjsKQEAgLTE5
OSw2ICsyMzksMTMgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICByZXR1cm4gZW50cnkucGF0Y2g7CiAgICAgfQorICAgIG93bmVyUmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCisgICAgeworICAgICAgICBjb25zdCBlbnRy
eSA9IHRoaXMuX3JldmlzaW9uTGlzdEJ5T3duZWRSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KTsK
KyAgICAgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICBy
ZXR1cm4gZW50cnkub3duZXJSZXZpc2lvbjsKKyAgICB9CiAgICAgY3VzdG9tUm9vdHMoKSB7IHJl
dHVybiB0aGlzLl9jdXN0b21Sb290czsgfQogCiAgICAgYWRkQ3VzdG9tUm9vdCh1cGxvYWRlZEZp
bGUpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9yZXBvc2l0b3J5LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvcmVwb3NpdG9yeS5qcwppbmRleCAwODlmNjJlMjQxN2VlYjFlNTA0NDhkNmJjMDU3NzZkYjg2
NjU3YWRkLi5lM2M3NDc3YzMxZTkxNTM5NzU3ZDg3MDA3MjQ3NDM1YzUyZTJiNzkwIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9z
aXRvcnkuanMKQEAgLTI2LDYgKzI2LDEyIEBAIGNsYXNzIFJlcG9zaXRvcnkgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIG1hcCA/IG1hcFtuYW1lXSA6IG51bGw7CiAgICAg
fQogCisgICAgZmluZE93bmVkUmVwb3NpdG9yeUJ5TmFtZShuYW1lKQorICAgIHsKKyAgICAgICAg
Y29uc3Qgb3duZXJzaGlwcyA9IHRoaXMubmFtZWRTdGF0aWNNYXAoJ3JlcG9zaXRvcnlPd25lcnNo
aXBzJyk7CisgICAgICAgIHJldHVybiBvd25lcnNoaXBzID8gb3duZXJzaGlwc1t0aGlzLmlkKCld
LmZpbmQoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09IG5hbWUpIDogbnVsbDsK
KyAgICB9CisKICAgICBoYXNVcmxGb3JSZXZpc2lvbigpIHsgcmV0dXJuICEhdGhpcy5fdXJsOyB9
CiAKICAgICB1cmxGb3JSZXZpc2lvbihjdXJyZW50UmV2aXNpb24pCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwppbmRl
eCA0YjNmYjhjNGI3ZDc4MTE4NTMxZmM1ZjYxODVkOWZlNTY5MWUyODUzLi4wYzBkZmFkNDc3ZTM1
N2NiNTQ0ZDEzMjcwM2NhNjcyYjhhMDFjMjI1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKQEAgLTIzMSw2ICsy
MzEsNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAg
ICAgICAgICBjb25zdCBwYXRjaEZpbGUgPSBjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpOwogICAgICAgICAgICAgICAgIHJldmlzaW9uU2V0W3JlcG9zaXRvcnkuaWQoKV0g
PSB7CiAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOiBjb21taXRTZXQucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHJlcG9zaXRvcnkpLAorICAgICAgICAgICAgICAgICAgICBvd25lclJldmlzaW9u
OiBjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSksCiAgICAg
ICAgICAgICAgICAgICAgIHBhdGNoOiBwYXRjaEZpbGUgPyBwYXRjaEZpbGUuaWQoKSA6IG51bGws
CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVz
dHMtdGVzdHMuanMKaW5kZXggZmZkYWU4NGJiZTE2NGYyYjgwOWEwNjE3NzA3MTIyM2YyMzFlMDM2
ZC4uYTJiZjAwNTliOWY2OTYyM2E1ZTk0ODk1ZjQ2NjM2ZTY2NjI3NjlhZCAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMt
dGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKQEAgLTI3LDcgKzI3LDczIEBAIGRlc2NyaWJlKCcvYXBp
L2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAot
ICAgIGl0KCdzaG91bGQgcmV0dXJuIGJ1aWxkIHJlcXVldHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2
ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3ByaWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywg
KCkgPT4geworICAgIGl0KCdzaG91bGQgcmV0dXJuIGJ1aWxkIHJlcXVlc3RzIGFzc29jaWF0ZWQg
d2l0aCBhIGdpdmVuIHRyaWdnZXJhYmxlIHdpdGggYXBwcm9wcmlhdGUgY29tbWl0cyBhbmQgY29t
bWl0U2V0cyB3aXRoIG93bmVkIGNvbXBvbmVudHMuJywgKCkgPT4geworICAgICAgIHJldHVybiBN
b2NrRGF0YS5hZGRUZXN0R3JvdXBXaXRoT3duZWRSZXBvc2l0b3JpZXMoVGVzdFNlcnZlci5kYXRh
YmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0
Jyk7CisgICAgICAgfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ2Nv
bW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKKworICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7Cisg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0uaWQsIDQwMyk7
CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLnJl
dmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3du
ZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51
bGx9LAorICAgICAgICAgICAgICAgICAgIHtjb21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBu
dWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwK
KyAgICAgICAgICAgICAgICAgICB7Y29tbWl0OiAnMTc5NycsIGNvbW1pdE93bmVyOiAiOTMxMTYi
LCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogdHJ1ZSwgcm9vdEZpbGU6IG51bGx9XSk7Cisg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0uaWQsIDQwNCk7
CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJl
dmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3du
ZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51
bGx9LAorICAgICAgICAgICAgICAgICAgIHtjb21taXQ6ICc5NjMzNicsIGNvbW1pdE93bmVyOiBu
dWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwK
KyAgICAgICAgICAgICAgICAgICB7Y29tbWl0OiAnMjAxNycsIGNvbW1pdE93bmVyOiAiOTYzMzYi
LCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogdHJ1ZSwgcm9vdEZpbGU6IG51bGx9XSk7CisK
KyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5ndGgsIDUpOwor
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLmlkLCA4NzgzMik7
CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMF0ucmVwb3NpdG9y
eSwgJzknKTsKKyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5y
ZXZpc2lvbiwgJzEwLjExIDE1QTI4NCcpOworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnY29tbWl0cyddWzFdLmlkLCA5MzExNik7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250
ZW50Wydjb21taXRzJ11bMV0ucmVwb3NpdG9yeSwgJzExJyk7CisgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2aXNpb24sICcxOTE2MjInKTsKKyAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5pZCwgMTc5Nyk7CisgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMl0ucmVwb3NpdG9yeSwgJzIxMycp
OworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzJdLnJldmlzaW9u
LCAnNjE2MScpOworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzJd
LmNvbW1pdE93bmVyLCA5MzExNik7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydj
b21taXRzJ11bM10uaWQsIDk2MzM2KTsKKyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXVszXS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbnRlbnRbJ2NvbW1pdHMnXVszXS5yZXZpc2lvbiwgJzE5MjczNicpOworICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzRdLmlkLCAyMDE3KTsKKyAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVs0XS5yZXBvc2l0b3J5LCAnMjEzJyk7Cisg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bNF0ucmV2aXNpb24sICc5
MTkxJyk7CisgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bNF0uY29t
bWl0T3duZXIsIDk2MzM2KTsKKworICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddLmxlbmd0aCwgNCk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLmlkLCA3MDQpOworICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5vcmRlciwgMCk7CisgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAn
NjUnKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMF0uY29tbWl0U2V0LCA0MDMpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRl
bnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5zdGF0dXMsICdwZW5kaW5nJyk7CisgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnRlc3QsICcyMDAnKTsK
KyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0u
aWQsIDcwNSk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzFdLm9yZGVyLCAxKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0ucGxhdGZvcm0sICc2NScpOworICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5jb21taXRTZXQsIDQwNCk7Cisg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnN0
YXR1cywgJ3BlbmRpbmcnKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydi
dWlsZFJlcXVlc3RzJ11bMV0udGVzdCwgJzIwMCcpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5pZCwgNzA2KTsKKyAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0ub3JkZXIsIDIpOworICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5wbGF0
Zm9ybSwgJzY1Jyk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzJdLmNvbW1pdFNldCwgNDAzKTsKKyAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uc3RhdHVzLCAncGVuZGluZycpOworICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS50ZXN0LCAn
MjAwJyk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddWzNdLmlkLCA3MDcpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1
aWxkUmVxdWVzdHMnXVszXS5vcmRlciwgMyk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnNjUnKTsKKyAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uY29tbWl0U2V0LCA0
MDQpOworICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVszXS5zdGF0dXMsICdwZW5kaW5nJyk7CisgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29u
dGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRlc3QsICcyMDAnKTsKKyAgICAgICB9KTsKKyAgICB9
KTsKKworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVxdWVzdHMgYXNzb2NpYXRlZCB3
aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3ByaWF0ZSBjb21taXRzIGFuZCBjb21t
aXRTZXRzJywgKCkgPT4gewogICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVz
dFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3Rz
L2J1aWxkLXdlYmtpdCcpOwogICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CkBAIC0zNiwx
MCArMTAyLDEwIEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgs
IDIpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5p
ZCwgNDAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0
cyddWzBdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMics
IHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNicsIHBhdGNoOiBu
dWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMy
JywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwg
cm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTMxMTYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0
Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH1dKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0uaWQsIDQwMik7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5yZXZp
c2lvbkl0ZW1zLAotICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBwYXRjaDogbnVs
bCwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBwYXRjaDogbnVsbCwgcm9vdEZp
bGU6IG51bGx9XSk7CisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93
bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBu
dWxsfSwge2NvbW1pdDogJzk2MzM2JywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCBy
ZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9XSk7CiAKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMF0uaWQsIDg3ODMyKTsKQEAgLTgzLDYgKzE0
OSw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewogICAg
ICAgICB9KTsKICAgICB9KTsKIAorCiAgICAgaXQoJ3Nob3VsZCBzdXBwb3J0IHVzZUxlZ2FjeUlk
UmVzb2x1dGlvbiBvcHRpb24nLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRN
b2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvYnVp
bGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0P3VzZUxlZ2FjeUlkUmVzb2x1dGlvbj10cnVlJyk7CkBA
IC05MiwxMCArMTU5LDEwIEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5s
ZW5ndGgsIDIpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMn
XVswXS5pZCwgNDAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29t
bWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4
NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNicsIHBh
dGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgICAgICAgICBbe2NvbW1pdDog
Jzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBm
YWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTMxMTYnLCBjb21taXRPd25lcjogbnVs
bCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH1dKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0uaWQsIDQw
Mik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsx
XS5yZXZpc2lvbkl0ZW1zLAotICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBwYXRj
aDogbnVsbCwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBwYXRjaDogbnVsbCwg
cm9vdEZpbGU6IG51bGx9XSk7CisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIGNv
bW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RG
aWxlOiBudWxsfSwge2NvbW1pdDogJzk2MzM2JywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBu
dWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9XSk7CiAKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMF0uaWQsIDg3ODMyKTsKQEAgLTEz
OSw2ICsyMDYsMTA5IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24g
KCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQgYmUgZmV0Y2hhYmxl
IGJ5IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlIGZvciBjb21taXRTZXRzIHdpdGgg
b3duZWQgY29tbWl0cycsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZFRlc3RH
cm91cFdpdGhPd25lZFJlcG9zaXRvcmllcyhUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7CisgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdn
ZXJhYmxlKCdidWlsZC13ZWJraXQnKTsKKyAgICAgICAgfSkudGhlbigoYnVpbGRSZXF1ZXN0cykg
PT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCA0KTsK
KworICAgICAgICAgICAgbGV0IHRlc3QgPSBUZXN0LmZpbmRCeUlkKDIwMCk7CisgICAgICAgICAg
ICBhc3NlcnQodGVzdCk7CisKKyAgICAgICAgICAgIGxldCBwbGF0Zm9ybSA9IFBsYXRmb3JtLmZp
bmRCeUlkKDY1KTsKKyAgICAgICAgICAgIGFzc2VydChwbGF0Zm9ybSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLmlkKCksIDcwNCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS50ZXN0R3JvdXBJZCgpLCA5MDApOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0udGVzdCgpLCB0ZXN0KTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLnBsYXRmb3JtKCksIHBsYXRmb3Jt
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLm9yZGVyKCksIDAp
OworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkgaW5z
dGFuY2VvZiBDb21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3Rz
WzBdLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3Rz
WzBdLmhhc1N0YXJ0ZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1sw
XS5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sw
XS5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
YnVpbGRSZXF1ZXN0c1sxXS5pZCgpLCA3MDUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkUmVxdWVzdHNbMV0udGVzdEdyb3VwSWQoKSwgOTAwKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3RzWzFdLnRlc3QoKSwgdGVzdCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5wbGF0Zm9ybSgpLCBwbGF0Zm9ybSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgICAg
IGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgpIGluc3RhbmNlb2YgQ29tbWl0
U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1ZXN0c1sxXS5oYXNGaW5pc2hl
ZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1ZXN0c1sxXS5oYXNTdGFydGVk
KCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbMV0uaXNQZW5kaW5nKCkp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0uc3RhdHVzTGFiZWwo
KSwgJ1dhaXRpbmcnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNb
Ml0uaWQoKSwgNzA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJd
LnRlc3RHcm91cElkKCksIDkwMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0c1syXS50ZXN0KCksIHRlc3QpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVx
dWVzdHNbMl0ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQub2soYnVp
bGRSZXF1ZXN0c1syXS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAgICAg
ICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzRmluaXNoZWQoKSk7CisgICAgICAg
ICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzU3RhcnRlZCgpKTsKKyAgICAgICAg
ICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzJdLmlzUGVuZGluZygpKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLnN0YXR1c0xhYmVsKCksICdXYWl0aW5nJyk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLmlkKCksIDcwNyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS50ZXN0R3JvdXBJZCgp
LCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbM10udGVzdCgp
LCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLnBsYXRm
b3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Rz
WzNdLm9yZGVyKCksIDMpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbM10u
Y29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFidWlsZFJlcXVlc3RzWzNdLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KCFidWlsZFJlcXVlc3RzWzNdLmhhc1N0YXJ0ZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2so
YnVpbGRSZXF1ZXN0c1szXS5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
YnVpbGRSZXF1ZXN0c1szXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworCisgICAgICAgICAg
ICBjb25zdCBvc3ggPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDkpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKG9zeC5uYW1lKCksICdtYWNPUycpOworCisgICAgICAgICAgICBjb25zdCB3ZWJraXQg
PSBSZXBvc2l0b3J5LmZpbmRCeUlkKDExKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJr
aXQubmFtZSgpLCAnV2ViS2l0Jyk7CisKKyAgICAgICAgICAgIGNvbnN0IGpzYyA9IFJlcG9zaXRv
cnkuZmluZEJ5SWQoMjEzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChqc2MubmFtZSgpLCAn
SmF2YVNjcmlwdENvcmUnKTsKKworICAgICAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSBi
dWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIGZpcnN0Q29tbWl0U2V0KTsKKworICAgICAgICAg
ICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0c1sxXS5jb21taXRTZXQoKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpLCBz
ZWNvbmRDb21taXRTZXQpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZmlyc3RDb21taXRT
ZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Vi
a2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0Q29tbWl0U2V0
LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnNjE2MScpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2Vjb25kQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShvc3gpLCAnMTAu
MTEgMTVBMjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2Vjb25kQ29tbWl0U2V0LnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2Vjb25kQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnOTE5
MScpOworCisgICAgICAgICAgICBjb25zdCBvc3hDb21taXQgPSBmaXJzdENvbW1pdFNldC5jb21t
aXRGb3JSZXBvc2l0b3J5KG9zeCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Q29tbWl0
LnJldmlzaW9uKCksICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChv
c3hDb21taXQsIHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KG9zeCkpOworCisg
ICAgICAgICAgICBjb25zdCBmaXJzdFdlYktpdENvbW1pdCA9IGZpcnN0Q29tbWl0U2V0LmNvbW1p
dEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdFdl
YktpdENvbW1pdC5yZXZpc2lvbigpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoK2ZpcnN0V2ViS2l0Q29tbWl0LnRpbWUoKSwgMTQ0NTk0NTgxNjg3OCk7CisKKyAgICAgICAg
ICAgIGNvbnN0IHNlY29uZFdlYktpdENvbW1pdCA9IHNlY29uZENvbW1pdFNldC5jb21taXRGb3JS
ZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2Vjb25kV2ViS2l0
Q29tbWl0LnJldmlzaW9uKCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCgr
c2Vjb25kV2ViS2l0Q29tbWl0LnRpbWUoKSwgMTQ0ODIyNTMyNTY1MCk7CisKKyAgICAgICAgICAg
IGNvbnN0IGZpcnN0U0pDQ29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9y
eShqc2MpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0U0pDQ29tbWl0LnJldmlzaW9u
KCksICc2MTYxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK2ZpcnN0U0pDQ29tbWl0LnRp
bWUoKSwgMTQ1Njk2MDc5NTMwMCk7CisKKyAgICAgICAgICAgIGNvbnN0IHNlY29uZFNKQ0NvbW1p
dCA9IHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2Vjb25kU0pDQ29tbWl0LnJldmlzaW9uKCksICc5MTkxJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoK3NlY29uZFNKQ0NvbW1pdC50aW1lKCksIDE0NjIyMzA4Mzcx
MDApCisgICAgICAgIH0pOworICAgIH0pOworCiAgICAgaXQoJ3Nob3VsZCBiZSBmZXRjaGFibGUg
YnkgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUnLCAoKSA9PiB7CiAgICAgICAgIHJl
dHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0
ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwppbmRleCA5OGQ3
Mjk2ZTA1MzhlZDBjOTIwMmUzMmVlNWJjYmRkM2VhY2ZmNjMwLi41ZDU1NzcyZjA0MGVhMWM5OTRj
ODhhY2UyNDc4OGRhMGIzMzIxNzdmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1h
cGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTI3NCwxNCArMjc0LDE0IEBAIGRlc2Ny
aWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gIkFtYmlnaW91c1Jl
dmlzaW9uIiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjb21taXRzIHRoYXQgbWF0Y2ggdGhlIHNw
ZWNpZmllZCByZXZpc2lvbiBzdHJpbmcnLCAoKSA9PiB7CisgICAgaXQoJ3Nob3VsZCByZXR1cm4g
IkFtYmlndW91c1JldmlzaW9uIiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjb21taXRzIHRoYXQg
bWF0Y2ggdGhlIHNwZWNpZmllZCByZXZpc2lvbiBzdHJpbmcnLCAoKSA9PiB7CiAgICAgICAgIHJl
dHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycsIFsnMmNlZGE0NWQz
Y2Q2M2NkZTU4ZDBkYmY1NzY3NzE0ZTAzZDkwMmU0MycsICcyYzcxYThkZGMxZjY2MTY2M2NjZmQx
YTI5YzYzM2JhNTdlODc5NTMzJ10pLnRoZW4oKHRhc2tJZCkgPT4gewogICAgICAgICAgICAgY29u
c3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maW5kKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0
b3J5Lm5hbWUoKSA9PSAnV2ViS2l0Jyk7CiAgICAgICAgICAgICBjb25zdCByZXZpc2lvblNldHMg
PSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzJjZWRhJ319LCB7W3dlYmtpdC5pZCgpXTog
e3JldmlzaW9uOiAnMmMnfX1dOwogICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0JywgdGFzazogdGFza0lk
LCByZXZpc2lvblNldHN9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKICAgICAgICAgICAgIH0sIChl
cnJvcikgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0FtYmlnaW91
c1JldmlzaW9uJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnQW1iaWd1
b3VzUmV2aXNpb24nKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAg
LTM0NSw2ICszNDUsMzggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1n
cm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKKyAgICBpdCgnc2hv
dWxkIHJldHVybiAiSW52YWxpZE93bmVyUmV2aXNpb24iIHdoZW4gY29tbWl0IG93bmVyc2hpcCBp
cyBub3QgdmFsaWQnLCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIHJldHVy
biBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4oKGlkKSA9PiB0
YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBv
c2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0g
J1dlYktpdCcpWzBdOworICAgICAgICAgICAgY29uc3QgbWFjb3MgPSBSZXBvc2l0b3J5LmFsbCgp
LmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ21hY09TJylbMF07
CisgICAgICAgICAgICBjb25zdCBqc2MgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3Np
dG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ0phdmFTY3JpcHRDb3JlJylbMF07CisgICAg
ICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjog
JzE5MTYyMid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBbanNjLmlkKCld
OiB7cmV2aXNpb246ICc2MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYyMSd9fSwKKyAgICAgICAg
ICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgp
XToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lvbjogJzkxOTEnLCBv
d25lclJldmlzaW9uOiAnMTkxNjIyJ319XTsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6
IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUg
cmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChlcnJvciwgJ0ludmFsaWRPd25lclJldmlzaW9uJyk7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gIkludmFsaWRDb21taXRPd25lcnNoaXAiIHdoZW4g
Y29tbWl0IG93bmVyc2hpcCBpcyBub3QgdmFsaWQnLCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNr
SWQ7CisgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFz
aycpLnRoZW4oKGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICAgICAgY29uc3QgbWFjb3Mg
PSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1l
KCkgPT0gJ21hY09TJylbMF07CisgICAgICAgICAgICBjb25zdCBqc2MgPSBSZXBvc2l0b3J5LmFs
bCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ0phdmFTY3Jp
cHRDb3JlJylbMF07CisgICAgICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQu
aWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1
QTI4NCd9LCBbanNjLmlkKCldOiB7cmV2aXNpb246ICc2MTYxJywgb3duZXJSZXZpc2lvbjogJzE5
MTYyMid9fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHty
ZXZpc2lvbjogJzkxOTEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319XTsKKyAgICAgICAgICAg
IHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtu
YW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNl
dHN9KTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2Us
ICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0ludmFsaWRDb21taXRPd25lcnNoaXAnKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRlc3QgZ3Jv
dXAgZnJvbSBjb21taXRTZXRzIHdpdGggdGhlIHJlcGV0aXRpb24gY291bnQgb2Ygb25lIHdoZW4g
cmVwZXRpdGlvbkNvdW50IGlzIG9taXR0ZWQnLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBhZGRU
cmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4oKHRhc2tJZCkgPT4gewog
ICAgICAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKQEAgLTY1MSw2ICs2ODMsMTYxIEBAIGRl
c2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB0ZXN0IGdy
b3VwIHdpdGggYSBvd25lZCBjb21taXRzIGV2ZW4gd2hlbiBubyBwYXRjaCBpcyBzcGVjaWZpZWQn
LCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAg
ICAgIGxldCBqc2M7CisgICAgICAgIGxldCBtYWNvczsKKyAgICAgICAgbGV0IGluc2VydGVkR3Jv
dXBJZDsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0
YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0
b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBtYWNvcyA9IFJlcG9zaXRv
cnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFj
T1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsKKyAg
ICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQo
KV06IHtyZXZpc2lvbjogJzYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAg
ICAgICAgICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlk
KCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnOTE5MScs
IG93bmVyUmV2aXNpb246ICcxOTI3MzYnfX1dOworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0JywgdGFz
azogdGFza0lkLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30pOworICAgICAgICB9
KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAgICBpbnNlcnRlZEdyb3VwSWQgPSBjb250
ZW50Wyd0ZXN0R3JvdXBJZCddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZv
clRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChn
cm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZvcm0uZmluZEJ5SWQo
TW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOworICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMg
PSBncm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLmlz
QnVpbGQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0uaXNC
dWlsZCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS5pc0J1
aWxkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS5pc0J1
aWxkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0XS5pc0J1
aWxkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s1XS5pc0J1
aWxkKCksIGZhbHNlKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLmlz
VGVzdCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0uaXNU
ZXN0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS5pc1Rl
c3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uaXNUZXN0
KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzRdLmlzVGVzdCgp
LCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s1XS5pc1Rlc3QoKSwg
dHJ1ZSk7CisKKyAgICAgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQo
KTsKKyAgICAgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1sxXS5jb21taXRTZXQoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS5jb21taXRTZXQoKSwgc2V0MCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uY29tbWl0U2V0KCksIHNldDEpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzRdLmNvbW1pdFNldCgpLCBzZXQwKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s1XS5jb21taXRTZXQoKSwgc2V0MSk7
CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZl
cnJpbmdPbmVzV2l0aFVSTChzZXQwLnJlcG9zaXRvcmllcygpKSwgW2pzYywgd2Via2l0LCBtYWNv
c10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzZXQwLmN1c3RvbVJvb3RzKCksIFtd
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJl
ZmVycmluZ09uZXNXaXRoVVJMKHNldDEucmVwb3NpdG9yaWVzKCkpLCBbanNjLCB3ZWJraXQsIG1h
Y29zXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDEuY3VzdG9tUm9vdHMoKSwg
W10pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLmNvbW1pdEZvclJlcG9zaXRvcnko
d2Via2l0KSwgc2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9z
aXRvcnkod2Via2l0KSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVx
dWlyZXNCdWlsZEZvclJlcG9zaXRvcnkod2Via2l0KSwgZmFsc2UpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29zKSwgJzE1QTI4NCcpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29z
KSwgc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQwLmNvbW1pdEZvclJlcG9zaXRvcnkobWFjb3MpLCBzZXQxLmNvbW1pdEZvclJl
cG9zaXRvcnkobWFjb3MpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9y
UmVwb3NpdG9yeShtYWNvcyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEu
cGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG1hY29z
KSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBv
c2l0b3J5KGpzYyksICc2MTYxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXZp
c2lvbkZvclJlcG9zaXRvcnkoanNjKSwgJzkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KGpzYyksIHRydWUp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRv
cnkoanNjKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQoIXNldDAuZXF1YWxzKHNldDEpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRlc3QgZ3Jv
dXAgd2l0aCBhIG93bmVkIGNvbW1pdHMgYW5kIGEgcGF0Y2gnLCAoKSA9PiB7CisgICAgICAgIGxl
dCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIGxldCBtYWNvczsKKyAgICAg
ICAgbGV0IGpzYzsKKyAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKKyAgICAgICAgbGV0IHVw
bG9hZGVkRmlsZTsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygn
c29tZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiBy
ZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBtYWNvcyA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVy
KChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVsw
XTsKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdz
b21lLmRhdCcsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgfSkudGhlbigoc3RyZWFtKSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZp
bGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCByYXdGaWxlID0gcmVzcG9u
c2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gVXBsb2FkZWRG
aWxlLmVuc3VyZVNpbmdsZXRvbihyYXdGaWxlLmlkLCByYXdGaWxlKTsKKyAgICAgICAgICAgIGNv
bnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30s
IFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lv
bjogJzYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAgICAgICAgICAgIHtb
d2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInLCBwYXRjaDogdXBsb2FkZWRGaWxlLmlk
KCl9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBbanNjLmlkKCldOiB7cmV2
aXNpb246ICc5MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MjczNid9fV07CisgICAgICAgICAgICBy
ZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFt
ZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRz
fSk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAgIGluc2VydGVk
R3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107CisgICAgICAgICAgICByZXR1cm4gVGVz
dEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOworICAgICAgICB9KS50aGVuKCh0ZXN0
R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgs
IDEpOworICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVz
dElkKCkpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0
Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CisgICAgICAgICAgICBj
b25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMF0uaXNCdWlsZCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1sxXS5pc0J1aWxkKCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzJdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzNdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzRdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzVdLmlzQnVpbGQoKSwgZmFsc2UpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMF0uaXNUZXN0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1sxXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzJdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1szXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHNbNF0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzVdLmlzVGVzdCgpLCB0cnVlKTsKKworICAgICAgICAgICAgY29uc3Qgc2V0MCA9IHJlcXVlc3Rz
WzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3RzWzFdLmNv
bW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmNvbW1pdFNl
dCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS5jb21taXRT
ZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uY29tbWl0
U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVdLmNvbW1p
dFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5z
b3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDAucmVwb3NpdG9yaWVzKCkpLCBbanNj
LCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDAuY3Vz
dG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5
LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MS5yZXBvc2l0b3JpZXMoKSksIFtq
c2MsIHdlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MS5j
dXN0b21Sb290cygpLCBbXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIHNldDEucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAuY29tbWl0
Rm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBzZXQxLmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRv
cnkod2Via2l0KSwgdXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHRydWUpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkod2Via2l0KSwgdHJ1
ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
bWFjb3MpLCAnMTVBMjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkobWFjb3MpLCBzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNvcykp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNv
cyksIHNldDEuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG1h
Y29zKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWls
ZEZvclJlcG9zaXRvcnkobWFjb3MpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgJzYxNjEnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnOTE5MScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyksIG51bGwp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyks
IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJl
cG9zaXRvcnkoanNjKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1
aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShqc2MpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydCgh
c2V0MC5lcXVhbHMoc2V0MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91
bGQgbm90IGNyZWF0ZSBhIGJ1aWxkIHJlcXVlc3QgdG8gYnVpbGQgYSBwYXRjaCB3aGVuIHRoZSBj
b21taXQgc2V0IGRvZXMgbm90IGhhdmUgYSBwYXRjaCcsICgpID0+IHsKICAgICAgICAgbGV0IHRh
c2tJZDsKICAgICAgICAgbGV0IHdlYmtpdDsKQEAgLTcxOSw3ICs5MDYsNiBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICBsZXQgdGFza0lkOwogICAgICAgICBsZXQgd2Via2l0OwogICAgICAgICBsZXQgbWFjb3M7Ci0g
ICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7CiAgICAgICAgIGxldCB1cGxvYWRlZEZpbGU7CiAg
ICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRo
ZW4oKGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICB3ZWJraXQg
PSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1l
KCkgPT0gJ1dlYktpdCcpWzBdOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IGUxYTY5YWYz
YTk3MDdmODFiZmJkNDQxOGM5ZTdiNjM3ZmI2Zjg5MDMuLjFjZWZiNGIyYzU1YTZjYzRhNWZiM2Ux
YTRlYTk2YmI2OGRkMjAxN2UgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTEzLDYgKzEz
LDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgb3RoZXJQbGF0Zm9ybUlkKCkgeyByZXR1cm4gMTAxOyB9
LAogICAgIG1hY29zUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gOTsgfSwKICAgICB3ZWJraXRSZXBv
c2l0b3J5SWQoKSB7IHJldHVybiAxMTsgfSwKKyAgICBqc2NSZXBvc2l0b3J5SWQoKSB7IHJldHVy
biAyMTM7IH0sCiAgICAgZ2l0V2Via2l0UmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gMTExOyB9LAog
ICAgIHNoYXJlZFJlcG9zaXRvcnlJZCgpIHsgcmV0dXJuIDE0OyB9LAogICAgIGFkZE1vY2tDb25m
aWd1cmF0aW9uOiBmdW5jdGlvbiAoZGIpCkBAIC0yMyw2ICsyNCw3IEBAIE1vY2tEYXRhID0gewog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHRoaXMubWFjb3NSZXBv
c2l0b3J5SWQoKSwgbmFtZTogJ21hY09TJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7aWQ6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCksIG5hbWU6ICdXZWJLaXQn
fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy5zaGFy
ZWRSZXBvc2l0b3J5SWQoKSwgbmFtZTogJ1NoYXJlZCd9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgncmVwb3NpdG9yaWVzJywge2lkOiB0aGlzLmpzY1JlcG9zaXRvcnlJZCgpLCBvd25lcjogdGhp
cy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgbmFtZTogJ0phdmFTY3JpcHRDb3JlJ30pLAogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjAw
MSwgbmFtZTogJ3dlYmtpdC1zdm4nLCB0cmlnZ2VyYWJsZTogMTAwMH0pLAogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy5t
YWNvc1JlcG9zaXRvcnlJZCgpLCBncm91cDogMjAwMX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0
KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBv
c2l0b3J5SWQoKSwgZ3JvdXA6IDIwMDF9KSwKQEAgLTMxLDYgKzMzLDEwIEBAIE1vY2tEYXRhID0g
ewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiA5NjMzNiwgcmVwb3NpdG9y
eTogdGhpcy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICcxOTI3MzYnLCB0aW1lOiAo
bmV3IERhdGUoMTQ0ODIyNTMyNTY1MCkpLnRvSVNPU3RyaW5nKCl9KSwKICAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHtpZDogMTExMTY4LCByZXBvc2l0b3J5OiB0aGlzLnNoYXJlZFJl
cG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJzgwMjI5JywgdGltZTogJzIwMTYtMDMtMDJUMjM6MTc6
NTQuM1onfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDExMTE2OSwg
cmVwb3NpdG9yeTogdGhpcy5zaGFyZWRSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICc4MDIzMCcs
IHRpbWU6ICcyMDE2LTAzLTAyVDIzOjM3OjE4LjBaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywge2lkOiAxNzk3LCByZXBvc2l0b3J5OiB0aGlzLmpzY1JlcG9zaXRvcnlJZCgp
LCByZXZpc2lvbjogJzYxNjEnLCB0aW1lOiAnMjAxNi0wMy0wMlQyMzoxOTo1NS4zWid9KSwKKyAg
ICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtpZDogMjAxNywgcmVwb3NpdG9yeTogdGhp
cy5qc2NSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICc5MTkxJywgdGltZTogJzIwMTYtMDUtMDJU
MjM6MTM6NTcuMVonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9vd25lcnNoaXBz
Jywge293bmVyOiA5MzExNiwgb3duZWQ6IDE3OTd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgn
Y29tbWl0X293bmVyc2hpcHMnLCB7b3duZXI6IDk2MzM2LCBvd25lZDogMjAxN30pLAogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdidWlsZHMnLCB7aWQ6IDkwMSwgbnVtYmVyOiAnOTAxJywgdGltZTog
JzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRm
b3JtcycsIHtpZDogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgbmFtZTogJ3NvbWUgcGxhdGZv
cm0nfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogTW9ja0RhdGEu
b3RoZXJQbGF0Zm9ybUlkKCksIG5hbWU6ICdvdGhlciBwbGF0Zm9ybSd9KSwKQEAgLTExNCw2ICsx
MjAsMzEgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVl
c3RzJywge2lkOiA3MTEsIHN0YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGUsIHJlcG9z
aXRvcnlfZ3JvdXAsIHBsYXRmb3JtLCB0ZXN0LCBncm91cDogNjAxLCBvcmRlcjogMSwgY29tbWl0
X3NldDogNDAyfSksCiAgICAgICAgIF0pOwogICAgIH0sCisgICAgYWRkVGVzdEdyb3VwV2l0aE93
bmVkUmVwb3NpdG9yaWVzKGRiLCBzdGF0dXNMaXN0KQorICAgIHsKKworICAgICAgICBpZiAoIXN0
YXR1c0xpc3QpCisgICAgICAgICAgICBzdGF0dXNMaXN0ID0gWydwZW5kaW5nJywgJ3BlbmRpbmcn
LCAncGVuZGluZycsICdwZW5kaW5nJ107CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICB0aGlzLmFkZE1vY2tDb25maWd1cmF0aW9uKGRiKSwKKyAgICAgICAgICAgIGRi
Lmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7aWQ6IDEwODAsIHBsYXRmb3JtOiA2NSwgbWV0cmlj
OiAzMDAsIG5hbWU6ICdzb21lIHRhc2sgd2l0aCBjb21wb25lbnQgdGVzdCcsCisgICAgICAgICAg
ICAgICAgc3RhcnRfcnVuOiA4MDEsIHN0YXJ0X3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToy
Ny4xWicsCisgICAgICAgICAgICAgICAgZW5kX3J1bjogODAxLCBlbmRfcnVuX3RpbWU6ICcyMDE1
LTEwLTI3VDEyOjA1OjI3LjFaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190
ZXN0X2dyb3VwcycsIHtpZDogOTAwLCB0YXNrOiAxMDgwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3Vw
IHdpdGggY29tcG9uZW50IHRlc3QnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9z
ZXRzJywge2lkOiA0MDN9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVt
cycsIHtzZXQ6IDQwMywgY29tbWl0OiA4NzgzMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdj
b21taXRfc2V0X2l0ZW1zJywge3NldDogNDAzLCBjb21taXQ6IDkzMTE2fSksCisgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDMsIGNvbW1pdDogMTc5Nywg
Y29tbWl0X293bmVyOiA5MzExNiwgcmVxdWlyZXNfYnVpbGQ6IHRydWV9KSwKKyAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwNH0pLAorICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDA0LCBjb21taXQ6IDg3ODMyfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDQsIGNvbW1pdDog
OTYzMzZ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6
IDQwNCwgY29tbWl0OiAyMDE3LCBjb21taXRfb3duZXI6IDk2MzM2LCByZXF1aXJlc19idWlsZDog
dHJ1ZX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA0
LCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dy
b3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDAs
IGNvbW1pdF9zZXQ6IDQwM30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0
cycsIHtpZDogNzA1LCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAwLCBy
ZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkw
MCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwNH0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdi
dWlsZF9yZXF1ZXN0cycsIHtpZDogNzA2LCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJh
YmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIw
MCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwM30pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA3LCBzdGF0dXM6IHN0YXR1c0xpc3Rb
M10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTog
NjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwNH0pLAor
ICAgICAgICBdKTsKKyAgICB9LAogICAgIG1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWls
ZGVyOiBmdW5jdGlvbiAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320633</attachid>
            <date>2017-09-13 05:08:49 -0700</date>
            <delta_ts>2017-09-17 19:30:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175978-20170913050848.patch</filename>
            <type>text/plain</type>
            <size>75027</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTY1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0MDllYzI4MmJhOGVjYjBjNTJjYWUyNzE4N2UxYzQ0YjliMmFkYTcyLi45NWVjZjc1ZDAx
YmQ3ZDZiN2RhZjQ1Y2YzNDMzZmZiYjVjODUwZTdjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAxNy0wOS0xMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZSBEYXNoYm9hcmQgYmFja2VuZCBzaG91
bGQgc3VwcG9ydCBBL0IgdGVzdGluZyBmb3Igb3duZWQgY29tcG9uZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYWNrZW5kIGNoYW5nZSBm
b3IgUGVyZm9ybWFuY2UgRGFzaGJvYXJkIHRvIHN1cHBvcnQgQS9CIHRlc3RpbmcgZm9yIG93bmVk
IGNvbXBvbmVudHMuCisgICAgICAgIEFkZGVkICdjb21taXRzZXRfY29tbWl0X293bmVyJyBhbmQg
J2NvbW1pdHNldF9yZXF1aXJlc19idWlsZCcgY29sdW1ucyB0byAnY29tbWl0X3NldF9pdGVtcycg
dGFibGUuCisgICAgICAgICAgICAnY29tbWl0c2V0X2NvbW1pdF9vd25lcicgd2lsbCBiZSByZWZl
cnJlZCB0byBkZXRlcm1pbmUgYSBjb21taXQgd2l0aCBvd25lci4KKyAgICAgICAgICAgICdjb21t
aXRzZXRfcmVxdWlyZXNfYnVpbGQnIGluZGljYXRlcyB3aGV0aGVyIGEgcm9vdCBidWlsZCBpcyBy
ZXF1aXJlZC4KKyAgICAgICAgICAgIFRoaXMgd2lsbCBiZSBzZXQgdHJ1ZSB3aGVuZXZlciBjb21t
aXRfc2V0X2l0ZW0gc3BlY2lmaWVzIGEgcGF0Y2ggZmlsZSwKKyAgICAgICAgICAgICAgICBvciBj
b21taXRfc2V0X2l0ZW0gaXMgY29tbWl0IHdpdGggb3duZXIgY29tbWl0LAorICAgICAgICAgICAg
ICAgIG9yIGFueSBvdGhlciBjb21taXQgZnJvbSBzYW1lIHJlcG9zaXRvcnkgYW5kIGluIHNhbWUg
YnVpbGQtcmVxdWVzdCBncm91cCByZXF1aXJlcyBidWlsZC4KKworICAgICAgICAqIGluaXQtZGF0
YWJhc2Uuc3FsOgorICAgICAgICAgICAgU1FMIGZvciB1cGRhdGluZyBleGlzdGluZyBkYXRhYmFz
ZToKKyAgICAgICAgICAgICAgICAnQkVHSU47CisgICAgICAgICAgICAgICAgICAgIEFMVEVSIFRB
QkxFIGNvbW1pdF9zZXRfaXRlbXMgQUREIENPTFVNTiBjb21taXRzZXRfY29tbWl0X293bmVyIGlu
dGVnZXIgUkVGRVJFTkNFUyBjb21taXRzIERFRkFVTFQgTlVMTCwgQUREIENPTFVNTiBjb21taXRz
ZXRfcmVxdWlyZXNfYnVpbGQgYm9vbGVhbiBERUZBVUxUIEZBTFNFOworICAgICAgICAgICAgICAg
ICAgICBVUERBVEUgVEFCTEUgY29tbWl0X3NldF9pdGVtcyBTRVQgY29tbWl0c2V0X3JlcXVpcmVz
X2J1aWxkID0gVFJVRSBXSEVSRSBjb21taXRzZXRfcGF0Y2hfZmlsZSBJUyBOT1QgTlVMTDsKKyAg
ICAgICAgICAgICAgICAgICAgQUxURVIgVEFCTEUgY29tbWl0X3NldF9pdGVtcyBBREQgY29tbWl0
c2V0X2l0ZW1fd2l0aF9wYXRjaF9tdXN0X3JlcXVpcmVzX2J1aWxkIENIRUNLIChjb21taXRzZXRf
cGF0Y2hfZmlsZSBJUyBOVUxMIE9SIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCA9IFRSVUUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgQUREIENPTlNUUkFJTlQgY29tbWl0c2V0X2l0ZW1fd2l0
aF9vd25lZF9jb21taXRfbXVzdF9yZXF1aXJlc19idWlsZCBDSEVDSyAoY29tbWl0c2V0X2NvbW1p
dF9vd25lciBJUyBOVUxMIE9SIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCA9IFRSVUUpOworICAg
ICAgICAgICAgICAgIEVORDsnCisgICAgICAgICogcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5w
aHA6IE9ubHkgdG9wIGxldmVsIHJlcG9zaXRvcnkgc2hvdWxkIHNob3cgb24gdHJpZ2dlcmFibGVz
IHBhZ2UuCisgICAgICAgICogcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5w
aHA6IEFkZGVkICdjb21taXRPd25lcicgYW5kICdyZXF1aXJlQnVpbGQnIHRvICdyZXZpc2lvbl9p
dGVtcycuIEFkZGVkICdjb21taXRPd25lcicgZmllbGQgdG8gYSBjb21taXQuCisgICAgICAgICog
cHVibGljL2luY2x1ZGUvZGIucGhwOiBTaG91bGQgYmUgYWJsZSB0byBpbnNlcnQgYm9vbGVhbiB2
YWx1ZSB0byBkYXRhYmFzZSB3aXRob3V0IGV4cGxpY3RlZCBjb252ZXJ0IHRvICd0JyBvciAnZicu
CisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocDoK
KyAgICAgICAgICAgIEFkZGVkIGxvZ2ljIHRvIHByb2Nlc3MgJ2NvbW1pdE93bmVyJyBhbmQgJ3Jl
cXVpcmVCdWlsZCcgaW4gJ2NvbW1pdF9zZXRfaXRlbXMnLgorICAgICAgICAgICAgUmVtb3ZlZCBh
ICdGSVhNRScgdGhhdCBoYXMgYmVlbiBhZGRyZXNzZWQgYmVmb3JlIHRoaXMgY29tbWl0LgorICAg
ICAgICAqIHB1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qczoKKyAgICAgICAgKEJ1aWxk
UmVxdWVzdC5jb25zdHJ1Y3RCdWlsZFJlcXVlc3RzRnJvbURhdGEpOiBTZXQgJ2NvbW1pdE93bmVy
JyBmaWVsZCBmb3IgYSBjb21taXQgc2V0IGl0ZW0uCisgICAgICAgICogcHVibGljL3YzL21vZGVs
cy9jb21taXQtc2V0LmpzOgorICAgICAgICAoQ29tbWl0U2V0KTogQWRkZWQgbWFwcyBmb3IgcmVw
b3NpdG9yeSB0byBjb21taXQgb3duZXIgYW5kIHdoZXRoZXIgYSByZXBvc2l0b3J5IHJlcXVpcmVz
IGJ1aWxkcy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToK
KyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuX3VwZGF0ZUZyb21PYmplY3QpOgorICAgICAg
ICAoQ29tbWl0U2V0LnByb3RvdHlwZS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSk6IFJldHVy
bnMgb3duZXIgcmV2aXNpb24gZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeSBpbiBjdXJyZW50IGNvbW1p
dCBzZXQuCisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLnJlcXVpcmVzQnVpbGRGb3JSZXBv
c2l0b3J5KTogUmV0dXJucyB3aGV0aGVyIGEgcmVwb3NpdG9yeSBuZWVkIHRvIGJ1aWxkLgorICAg
ICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5lcXVhbHMpOiBFcXVhbGl0eSBjaGVjayBzaG91bGQg
aW5jbHVkZSAyIG5ldyBtYXBzLgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0KTogQ3VzdG9tQ29t
bWl0U2V0IHNob3VsZCBiZSBhYmxlIHRvIHN0b3JlIGNvbW1pdCB3aXRoIGFuIG93bmVyIGNvbW1p
dC4KKyAgICAgICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUuc2V0UmV2aXNpb25Gb3JSZXBv
c2l0b3J5KTogQWRkZWQgZWFjaCByZXZpc2lvbiBsaXN0IGVudHJ5IHNob3VsZCBoYXZlICdvd25l
clJldmlzaW9uJyhudWxsIGJ5IGRlZmF1bHQpLgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0LnBy
b3RvdHlwZS5lcXVhbHMpOiBFcXVhbGl0eSBjaGVjayBzaG91bGQgYWxzbyBjaGVjayB0aGUgZXF1
YWxpdHkgb2YgJ293bmVyUmV2aXNpb24nLgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0LnByb3Rv
dHlwZS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSk6IFJldHVybnMgYSBvd25lciByZXZpc2lv
biBmb3IgYSBnaXZlbiByZXBvc2l0b3J5LgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvcmVw
b3NpdG9yeS5qczoKKyAgICAgICAgKFJlcG9zaXRvcnkucHJvdG90eXBlLmZpbmRPd25lZFJlcG9z
aXRvcnlCeU5hbWUpOiBSZXR1cm4gYW4gcmVwb3NpdG9yeSBvd25lZCBieSBjdXJyZW50IHJlcG9z
aXRvcnkgd2l0aCBhIGdpdmVuIG5hbWUuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0
LWdyb3VwLmpzOiBBZGRlZCAnb3duZXJSZXZpc2lvbicgZmllbGQgaW4gZWFjaCBlbnRyeSBvZiBy
ZXZpc2lvblNldC4KKyAgICAgICAgKFRlc3RHcm91cC5fcmV2aXNpb25TZXRzRnJvbUNvbW1pdFNl
dHMpOgorICAgICAgICAqIHNlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6
IEFkZGVkIHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVh
dGUtdGVzdC1ncm91cC10ZXN0cy5qczogQWRkZWQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLXVwbG9hZC1maWxlLXRlc3RzLmpzOiBGaXggdW5pdCB0ZXN0cyBi
eSBzZXR0aW5nJ3JlcXVpcmVzX2J1aWxkJyBmaWVsZCB0byBiZSB0cnVlIHdoZW4gdXBkYXRpbmcg
Y29tbWl0X3NldF9pdGVtIHdoaWNoIGhhcyBhIHBhdGNoLi4KKyAgICAgICAgKiBzZXJ2ZXItdGVz
dHMvcmVzb3VyY2VzL21vY2stZGF0YS5qczogQWRkZWQgbW9jayBidWlsZCByZXF1ZXN0cyB3aXRo
IGNvbW1pdCBzZXRzIGNvbnRhaW4gb3duZWQgY29tbWl0cy4KKyAgICAgICAgKE1vY2tEYXRhLmpz
Y1JlcG9zaXRvcnlJZCk6IEFkZGVkIGEgSmF2YVNjcmlwdENvcmUgcmVwb3NpdG9yeSB3aXRoIG5v
IG93bmVyLgorICAgICAgICAoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQpOiBBZGRlZCBh
IEphdmFTY3JpcHRDb3JlIHJlcG9zaXRvcnkgd2l0aCBXZWJLaXQgYXMgb3duZXIuCisgICAgICAg
IChNb2NrRGF0YS5hZGRNb2NrQ29uZmlndXJhdGlvbik6IEFkZGVkIG1vY2sgZGF0YSBmb3IgdGVz
dCBjYXNlcyB0aG9zZSByZXF1aXJlIGEgY29tbWl0IHdpdGggYSBvd25lciBjb21taXQuCisgICAg
ICAgIChNb2NrRGF0YS5hZGRUZXN0R3JvdXBXaXRoT3duZWRDb21taXRzKTogQWRkZWQgbW9jayBk
YXRhIGZvciBhbmFseXNpcyB0YXNrcywgdGhlIGJ1aWxkIHJlcXVpcmVzIG9mIHdoaWNoIGNvbnRh
aW5zIG93bmVkIGNvbW1pdHMuCisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkQW5vdGhlclRyaWdn
ZXJhYmxlKTogQWRkZWQgYW5vdGhlciB0cmlnZ2VyYWJsZSB3aGljaCBoYXMgbWFjLCB3ZWJraXQg
YW5kIGphdmFzY3JpcHQgY29yZSByZXBvc2l0b3JpZXMgYXMgdHJpZ2dlcmFibGUgcmVwb3NpdG9y
eSBncm91cC4KKwogMjAxNy0wOS0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBBbmFseXNpcyB0YXNrIHBhZ2Ugc2hvd3MgYW4gZW1wdHkgcmVzdWx0cyBmb3Ig
YW4gaXJyZWxldmFudCB0b3AtbGV2ZWwgdGVzdApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2lu
aXQtZGF0YWJhc2Uuc3FsCmluZGV4IGMxNDM2OTIwOWIwZDRlN2E2MDBhYmVlYjQ3YmUwY2I4YzZm
ZDUyMzcuLjUyNzg4Zjc4MGY4NTgzNTg1NzQzYTAwNmRlOWU1MmY4MDAwYmRmMDQgMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAorKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTI4NywxMCArMjg3LDE0
IEBAIENSRUFURSBUQUJMRSBjb21taXRfc2V0cyAoCiBDUkVBVEUgVEFCTEUgY29tbWl0X3NldF9p
dGVtcyAoCiAgICAgY29tbWl0c2V0X3NldCBpbnRlZ2VyIFJFRkVSRU5DRVMgY29tbWl0X3NldHMg
Tk9UIE5VTEwsCiAgICAgY29tbWl0c2V0X2NvbW1pdCBpbnRlZ2VyIFJFRkVSRU5DRVMgY29tbWl0
cywKKyAgICBjb21taXRzZXRfY29tbWl0X293bmVyIGludGVnZXIgUkVGRVJFTkNFUyBjb21taXRz
IERFRkFVTFQgTlVMTCwKICAgICBjb21taXRzZXRfcGF0Y2hfZmlsZSBpbnRlZ2VyIFJFRkVSRU5D
RVMgdXBsb2FkZWRfZmlsZXMsCiAgICAgY29tbWl0c2V0X3Jvb3RfZmlsZSBpbnRlZ2VyIFJFRkVS
RU5DRVMgdXBsb2FkZWRfZmlsZXMsCisgICAgY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkIGJvb2xl
YW4gREVGQVVMVCBGQUxTRSwKICAgICBDT05TVFJBSU5UIGNvbW1pdHNldF9tdXN0X2hhdmVfY29t
bWl0X29yX3Jvb3QgQ0hFQ0sgKGNvbW1pdHNldF9jb21taXQgSVMgTk9UIE5VTEwgT1IgY29tbWl0
c2V0X3Jvb3RfZmlsZSBJUyBOT1QgTlVMTCksCi0gICAgQ09OU1RSQUlOVCBjb21taXRzZXRfd2l0
aF9wYXRjaF9tdXN0X2hhdmVfY29tbWl0IENIRUNLIChjb21taXRzZXRfcGF0Y2hfZmlsZSBJUyBO
VUxMIE9SIGNvbW1pdHNldF9jb21taXQgSVMgTk9UIE5VTEwpKTsKKyAgICBDT05TVFJBSU5UIGNv
bW1pdHNldF93aXRoX3BhdGNoX211c3RfaGF2ZV9jb21taXQgQ0hFQ0sgKGNvbW1pdHNldF9wYXRj
aF9maWxlIElTIE5VTEwgT1IgY29tbWl0c2V0X2NvbW1pdCBJUyBOT1QgTlVMTCksCisgICAgQ09O
U1RSQUlOVCBjb21taXRzZXRfaXRlbV93aXRoX3BhdGNoX211c3RfcmVxdWlyZXNfYnVpbGQgQ0hF
Q0sgKGNvbW1pdHNldF9wYXRjaF9maWxlIElTIE5VTEwgT1IgY29tbWl0c2V0X3JlcXVpcmVzX2J1
aWxkID0gVFJVRSksCisgICAgQ09OU1RSQUlOVCBjb21taXRzZXRfaXRlbV93aXRoX293bmVkX2Nv
bW1pdF9tdXN0X3JlcXVpcmVzX2J1aWxkIENIRUNLIChjb21taXRzZXRfY29tbWl0X293bmVyIElT
IE5VTEwgT1IgY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkID0gVFJVRSkpOwogCiBDUkVBVEUgVFlQ
RSBidWlsZF9yZXF1ZXN0X3N0YXR1c190eXBlIGFzIEVOVU0gKCdwZW5kaW5nJywgJ3NjaGVkdWxl
ZCcsICdydW5uaW5nJywgJ2ZhaWxlZCcsICdjb21wbGV0ZWQnLCAnY2FuY2VsZWQnKTsKIENSRUFU
RSBUQUJMRSBidWlsZF9yZXF1ZXN0cyAoCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5waHAKaW5kZXggMjM0YmYzZDU4NzY4Y2M1
ZjgzYzNlNzc3MTU1MmY1NjRmYTcwODlhOS4uYTAxODFmNzY2YzU1ZjMzNzVkMjM2MGI1MGI4MThl
ODY1ZTNhNzYzYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9h
ZG1pbi90cmlnZ2VyYWJsZXMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvYWRtaW4vdHJpZ2dlcmFibGVzLnBocApAQCAtNzYsNyArNzYsNyBAQCBpZiAoJGRiKSB7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAkcmVwb3NpdG9yeV9yb3dzID0gJGRiLT5mZXRjaF90YWJs
ZSgncmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRvcnlfbmFtZScpOworICAgICRyZXBvc2l0b3J5X3Jv
d3MgPSAkZGItPnNlbGVjdF9yb3dzKCdyZXBvc2l0b3JpZXMnLCAncmVwb3NpdG9yeScsIGFycmF5
KCdvd25lcicgPT4gTlVMTCksICduYW1lJyk7CiAKICAgICAkcGFnZSA9IG5ldyBBZG1pbmlzdHJh
dGl2ZVBhZ2UoJGRiLCAnYnVpbGRfdHJpZ2dlcmFibGVzJywgJ3RyaWdnZXJhYmxlJywgYXJyYXko
CiAgICAgICAgICduYW1lJyA9PiBhcnJheSgnZWRpdGluZ19tb2RlJyA9PiAnc3RyaW5nJyksCmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQt
cmVxdWVzdHMtZmV0Y2hlci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2lu
Y2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKaW5kZXggNzZhOTZkNDAzYmQ1NmQ1MjNk
ZWNjNjk5OWRkY2QzNjg3NTFhZjExOS4uZWQ5OTljNDUzZmM2MTU5OGMyOWMwMWZhNTg4Njk2NjUw
NTQ1NjFiMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocApAQCAtMTIyLDcg
KzEyMiwxMiBAQCBjbGFzcyBCdWlsZFJlcXVlc3RzRmV0Y2hlciB7CiAgICAgICAgICAgICBpZiAo
JHJvb3RfZmlsZV9pZCkKICAgICAgICAgICAgICAgICAkdGhpcy0+YWRkX3VwbG9hZGVkX2ZpbGUo
JHJvb3RfZmlsZV9pZCk7CiAKLSAgICAgICAgICAgIGFycmF5X3B1c2goJHJldmlzaW9uX2l0ZW1z
LCBhcnJheSgnY29tbWl0JyA9PiAkcm93Wydjb21taXRfaWQnXSwgJ3BhdGNoJyA9PiAkcGF0Y2hf
ZmlsZV9pZCwgJ3Jvb3RGaWxlJyA9PiAkcm9vdF9maWxlX2lkKSk7CisgICAgICAgICAgICBhcnJh
eV9wdXNoKCRyZXZpc2lvbl9pdGVtcywgYXJyYXkoCisgICAgICAgICAgICAgICAgJ2NvbW1pdCcg
PT4gJHJvd1snY29tbWl0X2lkJ10sCisgICAgICAgICAgICAgICAgJ3BhdGNoJyA9PiAkcGF0Y2hf
ZmlsZV9pZCwKKyAgICAgICAgICAgICAgICAncm9vdEZpbGUnID0+ICRyb290X2ZpbGVfaWQsCisg
ICAgICAgICAgICAgICAgJ2NvbW1pdE93bmVyJyA9PiAkcm93Wydjb21taXRzZXRfY29tbWl0X293
bmVyJ10sCisgICAgICAgICAgICAgICAgJ3JlcXVpcmVzQnVpbGQnID0+IERhdGFiYXNlOjppc190
cnVlKCRyb3dbJ2NvbW1pdHNldF9yZXF1aXJlc19idWlsZCddKSkpOwogCiAgICAgICAgICAgICBp
ZiAoYXJyYXlfa2V5X2V4aXN0cygkY29tbWl0X2lkLCAkdGhpcy0+Y29tbWl0c19ieV9pZCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMzAsNiArMTM1LDcgQEAgY2xhc3MgQnVpbGRS
ZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgYXJyYXlfcHVzaCgkdGhpcy0+Y29tbWl0cywg
YXJyYXkoCiAgICAgICAgICAgICAgICAgJ2lkJyA9PiAkY29tbWl0X2lkLAogICAgICAgICAgICAg
ICAgICdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwKKyAgICAgICAgICAgICAgICAnY29t
bWl0T3duZXInID0+ICRyb3dbJ2NvbW1pdHNldF9jb21taXRfb3duZXInXSwKICAgICAgICAgICAg
ICAgICAncmV2aXNpb24nID0+ICRyZXZpc2lvbiwKICAgICAgICAgICAgICAgICAndGltZScgPT4g
RGF0YWJhc2U6OnRvX2pzX3RpbWUoJGNvbW1pdF90aW1lKSkpOwogCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAppbmRleCAyMjEyZjBmZWY2ZmZiMjZk
OTA4NWE1MjhlMTI1YTc1MGRlOWQ5YzFiLi5lZDBlMWQ4Y2Y3NmYxN2QyZWY2ZDkyZmFhN2JjMmNl
MGZmNzAxNDIxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2lu
Y2x1ZGUvZGIucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9kYi5waHAKQEAgLTExOCw2ICsxMTgsOCBAQCBjbGFzcyBEYXRhYmFzZQogICAgICAgICAgICAg
YXNzZXJ0KGN0eXBlX2FsbnVtX3VuZGVyc2NvcmUoJG5hbWUpKTsKICAgICAgICAgICAgIGFycmF5
X3B1c2goJGNvbHVtbl9uYW1lcywgJG5hbWUpOwogICAgICAgICAgICAgYXJyYXlfcHVzaCgkcGxh
Y2Vob2xkZXJzLCAnJCcgLiAkaSk7CisgICAgICAgICAgICBpZiAoaXNfYm9vbCgkY3VycmVudF92
YWx1ZSkpCisgICAgICAgICAgICAgICAgJGN1cnJlbnRfdmFsdWUgPSAkdGhpcy0+dG9fZGF0YWJh
c2VfYm9vbGVhbigkY3VycmVudF92YWx1ZSk7CiAgICAgICAgICAgICBhcnJheV9wdXNoKCR2YWx1
ZXMsICRjdXJyZW50X3ZhbHVlKTsKICAgICAgICAgICAgICRpKys7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggYjE1MTExOGY2ZjEyMGVmYTQw
MDg5ZWNiNGY0NjkzZWEyNmQwNTEyMS4uZWEyMDEzYmE2YmMxMmU2MWE0Yjg0YTljNjQ2ZDgwODhj
ZWY3YmZiMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKQEAgLTUy
LDcgKzUyLDYgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgICAgIGlmICgkZHVwbGljYXRlX3Rlc3Rf
Z3JvdXApCiAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0R1cGxpY2F0ZVRlc3RHcm91cE5h
bWUnLCBhcnJheSgndGFzaycgPT4gJHRhc2tfaWQsICd0ZXN0R3JvdXAnID0+ICRkdXBsaWNhdGVf
dGVzdF9ncm91cFsndGVzdGdyb3VwX2lkJ10pKTsKIAotICAgICAgICAvLyBGSVhNRTogQWRkIGEg
Y2hlY2sgZm9yIGR1cGxpY2F0ZSB0ZXN0IGdyb3VwIG5hbWUuCiAgICAgICAgICR0cmlnZ2VyYWJs
ZSA9IGZpbmRfdHJpZ2dlcmFibGVfZm9yX3Rhc2soJGRiLCAkdGFza19pZCk7CiAgICAgICAgIGlm
ICgkdHJpZ2dlcmFibGUpIHsKICAgICAgICAgICAgICR0cmlnZ2VyYWJsZV9pZCA9ICR0cmlnZ2Vy
YWJsZVsnaWQnXTsKQEAgLTk0LDcgKzkzLDEwIEBAIGZ1bmN0aW9uIG1haW4oKQogICAgICAgICAk
bmVlZF90b19idWlsZCA9IEZBTFNFOwogICAgICAgICBmb3JlYWNoICgkY29tbWl0X2xpc3RbJ3Nl
dCddIGFzICRjb21taXRfcm93KSB7CiAgICAgICAgICAgICAkY29tbWl0X3Jvd1snc2V0J10gPSAk
Y29tbWl0X3NldF9pZDsKLSAgICAgICAgICAgICRuZWVkX3RvX2J1aWxkID0gJG5lZWRfdG9fYnVp
bGQgfHwgJGNvbW1pdF9yb3dbJ3BhdGNoX2ZpbGUnXTsKKyAgICAgICAgICAgICRyZXF1aXJlc19i
dWlsZCA9ICAkY29tbWl0X3Jvd1sncmVxdWlyZXNfYnVpbGQnXTsKKyAgICAgICAgICAgIGFzc2Vy
dChpc19ib29sKCRyZXF1aXJlc19idWlsZCkpOworICAgICAgICAgICAgYXNzZXJ0KCRyZXF1aXJl
c19idWlsZCAhPT0gJ3QnICYmICRyZXF1aXJlc19idWlsZCAhPT0gJ2YnKTsKKyAgICAgICAgICAg
ICRuZWVkX3RvX2J1aWxkID0gJG5lZWRfdG9fYnVpbGQgfHwgJHJlcXVpcmVzX2J1aWxkOwogICAg
ICAgICAgICAgJGRiLT5pbnNlcnRfcm93KCdjb21taXRfc2V0X2l0ZW1zJywgJ2NvbW1pdHNldCcs
ICRjb21taXRfcm93LCAnY29tbWl0Jyk7CiAgICAgICAgIH0KICAgICAgICAgJHJlcG9zaXRvcnlf
Z3JvdXAgPSAkY29tbWl0X2xpc3RbJ3JlcG9zaXRvcnlfZ3JvdXAnXTsKQEAgLTEyOSw3ICsxMzEs
NyBAQCBmdW5jdGlvbiBtYWluKCkKICAgICAgICAgICAgICAgICAnb3JkZXInID0+ICRvcmRlciwK
ICAgICAgICAgICAgICAgICAnY29tbWl0X3NldCcgPT4gJGNvbmZpZ1snY29tbWl0X3NldCddKSk7
CiAgICAgICAgICAgICAkb3JkZXIrKzsKLSAgICAgICAgfSAgICAgICAgCisgICAgICAgIH0KICAg
ICB9CiAKICAgICAkb3JkZXIgPSAwOwpAQCAtMTU5LDIwICsxNjEsMjUgQEAgZnVuY3Rpb24gY29t
bWl0X3NldHNfZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdnZXJhYmxlX2lkLCAkcmV2aXNp
b25fc2V0X2xpc3QKIAogICAgICRmaW5kZXIgPSBuZXcgUmVwb3NpdG9yeUdyb3VwRmluZGVyKCRk
YiwgJHRyaWdnZXJhYmxlX2lkKTsKICAgICAkY29tbWl0X3NldF9saXN0ID0gYXJyYXkoKTsKKyAg
ICAkcmVwb3NpdG9yeV9vd25lcl9saXN0ID0gYXJyYXkoKTsKKyAgICAkcmVwb3NpdG9yaWVzX3Jl
cXVpcmVfYnVpbGQgPSBhcnJheSgpOworICAgICRyZXBvc2l0b3J5X2NvbW1pdF9zZXRfaXRlbXNf
bWFwID0gYXJyYXkoKTsKICAgICBmb3JlYWNoICgkcmV2aXNpb25fc2V0X2xpc3QgYXMgJHJldmlz
aW9uX3NldCkgewogICAgICAgICBpZiAoIWNvdW50KCRyZXZpc2lvbl9zZXQpKQogICAgICAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmV2aXNpb25TZXRzJywgYXJyYXkoJ3JldmlzaW9u
U2V0cycgPT4gJHJldmlzaW9uX3NldF9saXN0KSk7CiAKICAgICAgICAgJGNvbW1pdF9zZXQgPSBh
cnJheSgpOwotICAgICAgICAkcmVwb3NpdG9yeV9saXN0ID0gYXJyYXkoKTsKKyAgICAgICAgJGV4
aXN0aW5nX3JlcG9zaXRvcmllcyA9IGFycmF5KCk7CiAgICAgICAgICRyZXBvc2l0b3J5X3dpdGhf
cGF0Y2ggPSBhcnJheSgpOworICAgICAgICAkcmVxdWlyZWRfb3duZXJfcmV2aXNpb25zID0gYXJy
YXkoKTsKKyAgICAgICAgJGV4aXN0aW5nX293bmVyX3JldmlzaW9ucyA9IGFycmF5KCk7CiAgICAg
ICAgIGZvcmVhY2ggKCRyZXZpc2lvbl9zZXQgYXMgJHJlcG9zaXRvcnlfaWQgPT4gJGRhdGEpIHsK
ICAgICAgICAgICAgIGlmICgkcmVwb3NpdG9yeV9pZCA9PSAnY3VzdG9tUm9vdHMnKSB7CiAgICAg
ICAgICAgICAgICAgJGZpbGVfaWRfbGlzdCA9ICRkYXRhOwogICAgICAgICAgICAgICAgIGZvcmVh
Y2ggKCRmaWxlX2lkX2xpc3QgYXMgJGZpbGVfaWQpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFpc19udW1lcmljKCRmaWxlX2lkKSB8fCAhJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCd1cGxvYWRl
ZF9maWxlcycsICdmaWxlJywgYXJyYXkoJ2lkJyA9PiAkZmlsZV9pZCkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkVXBsb2FkZWRGaWxlJywgYXJyYXko
J2ZpbGUnID0+ICRmaWxlX2lkKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGNv
bW1pdF9zZXQsIGFycmF5KCdyb290X2ZpbGUnID0+ICRmaWxlX2lkLCAncGF0Y2hfZmlsZScgPT4g
TlVMTCkpOworICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0LCBhcnJh
eSgncm9vdF9maWxlJyA9PiAkZmlsZV9pZCwgJ3BhdGNoX2ZpbGUnID0+IE5VTEwsICdyZXF1aXJl
c19idWlsZCcgPT4gRkFMU0UsICdjb21taXRfb3duZXInID0+IE5VTEwpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0xODcs
MzMgKzE5NCw3MyBAQCBmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3JldmlzaW9uX3NldHMoJGRi
LCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdAogICAgICAgICAgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignSW52YWxpZFJldmlzaW9uJywgYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRy
ZXBvc2l0b3J5X2lkLCAnZGF0YScgPT4gJGRhdGEpKTsKICAgICAgICAgICAgICRjb21taXRfaWQg
PSBDb21taXRMb2dGZXRjaGVyOjpmaW5kX2NvbW1pdF9pZF9ieV9yZXZpc2lvbigkZGIsICRyZXBv
c2l0b3J5X2lkLCAkcmV2aXNpb24pOwogICAgICAgICAgICAgaWYgKCRjb21taXRfaWQgPCAwKQot
ICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQW1iaWdpb3VzUmV2aXNpb24nLCBhcnJh
eSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHJldmlzaW9u
KSk7CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdBbWJpZ3VvdXNSZXZpc2lvbics
IGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9PiAkcmV2
aXNpb24pKTsKICAgICAgICAgICAgIGlmICghJGNvbW1pdF9pZCkKICAgICAgICAgICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ1JldmlzaW9uTm90Rm91bmQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4g
JHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHJldmlzaW9uKSk7CiAKKyAgICAgICAgICAg
ICRvd25lcl9yZXZpc2lvbiA9IGFycmF5X2dldCgkZGF0YSwgJ293bmVyUmV2aXNpb24nKTsKICAg
ICAgICAgICAgICRwYXRjaF9maWxlX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAncGF0Y2gnKTsKICAg
ICAgICAgICAgIGlmICgkcGF0Y2hfZmlsZV9pZCkgewogICAgICAgICAgICAgICAgIGlmICghaXNf
bnVtZXJpYygkcGF0Y2hfZmlsZV9pZCkgfHwgISRkYi0+c2VsZWN0X2ZpcnN0X3JvdygndXBsb2Fk
ZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdpZCcgPT4gJHBhdGNoX2ZpbGVfaWQpKSkKICAgICAg
ICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUGF0Y2hGaWxlJywgYXJyYXko
J3BhdGNoJyA9PiAkcGF0Y2hfZmlsZV9pZCkpOwogICAgICAgICAgICAgICAgIGFycmF5X3B1c2go
JHJlcG9zaXRvcnlfd2l0aF9wYXRjaCwgJHJlcG9zaXRvcnlfaWQpOworICAgICAgICAgICAgICAg
ICRyZXBvc2l0b3JpZXNfcmVxdWlyZV9idWlsZFskcmVwb3NpdG9yeV9pZF0gPSAgVFJVRTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJyYXko
J2NvbW1pdCcgPT4gJGNvbW1pdF9pZCwgJ3BhdGNoX2ZpbGUnID0+ICRwYXRjaF9maWxlX2lkKSk7
Ci0gICAgICAgICAgICBhcnJheV9wdXNoKCRyZXBvc2l0b3J5X2xpc3QsICRyZXBvc2l0b3J5X2lk
KTsKLSAgICAgICAgfQorICAgICAgICAgICAgJHJlcG9zaXRvcnkgPSBOVUxMOworICAgICAgICAg
ICAgJG93bmVyX2NvbW1pdCA9IE5VTEw7CisgICAgICAgICAgICBpZiAoJG93bmVyX3JldmlzaW9u
KSB7CisgICAgICAgICAgICAgICAgJHJlcG9zaXRvcnkgPSAkZGItPnNlbGVjdF9maXJzdF9yb3co
J3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JywgYXJyYXkoJ2lkJyA9PiBpbnR2YWwoJHJlcG9z
aXRvcnlfaWQpKSk7CisgICAgICAgICAgICAgICAgaWYgKCEkcmVwb3NpdG9yeSkKKyAgICAgICAg
ICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXBvc2l0b3J5Tm90Rm91bmQnLCBhcnJheSgn
cmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQpKTsKKyAgICAgICAgICAgICAgICAkb3duZXJf
Y29tbWl0ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21taXRzJywgJ2NvbW1pdCcsIGFycmF5
KCdyZXBvc2l0b3J5JyA9PiBpbnR2YWwoJHJlcG9zaXRvcnlbJ3JlcG9zaXRvcnlfb3duZXInXSks
ICdyZXZpc2lvbicgPT4gJG93bmVyX3JldmlzaW9uKSk7CisgICAgICAgICAgICAgICAgaWYgKCEk
b3duZXJfY29tbWl0KQorICAgICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFs
aWRPd25lclJldmlzaW9uJywgYXJyYXkoJ293bmVyUmV2aXNpb24nID0+ICRvd25lcl9yZXZpc2lv
bikpOworICAgICAgICAgICAgICAgIGlmICghJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21taXRf
b3duZXJzaGlwcycsICdjb21taXQnLCBhcnJheSgnb3duZWQnID0+ICRjb21taXRfaWQsICdvd25l
cicgPT4gJG93bmVyX2NvbW1pdFsnY29tbWl0X2lkJ10pKSkKKyAgICAgICAgICAgICAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0T3duZXJzaGlwJywgYXJyYXkoJ2NvbW1pdE93
bmVyJyA9PiAkb3duZXJfY29tbWl0Wydjb21taXRfaWQnXSwgJ2NvbW1pdE93bmVkJyA9PiAkY29t
bWl0X2lkKSk7CisgICAgICAgICAgICAgICAgJHJlcXVpcmVkX293bmVyX3JldmlzaW9uc1skb3du
ZXJfcmV2aXNpb25dID0gVFJVRTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgJGV4aXN0aW5nX293bmVyX3JldmlzaW9uc1skcmV2aXNpb25dID0gVFJVRTsKKyAgICAgICAg
ICAgIH0KIAorICAgICAgICAgICAgJG93bmVyX2NvbW1pdF9pZCA9ICRvd25lcl9jb21taXQgPyAk
b3duZXJfY29tbWl0Wydjb21taXRfaWQnXSA6IE5VTEw7CisgICAgICAgICAgICBhcnJheV9wdXNo
KCRjb21taXRfc2V0LCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2lkLCAncGF0Y2hfZmlsZScg
PT4gJHBhdGNoX2ZpbGVfaWQsICdyZXF1aXJlc19idWlsZCcgPT4gISEkb3duZXJfcmV2aXNpb24s
ICdjb21taXRfb3duZXInID0+ICRvd25lcl9jb21taXRfaWQpKTsKKworICAgICAgICAgICAgYXJy
YXlfZW5zdXJlX2l0ZW1faGFzX2FycmF5KCRyZXBvc2l0b3J5X2NvbW1pdF9zZXRfaXRlbXNfbWFw
LCAkcmVwb3NpdG9yeV9pZCk7CisgICAgICAgICAgICAkcmVwb3NpdG9yeV9jb21taXRfc2V0X2l0
ZW1zX21hcFskcmVwb3NpdG9yeV9pZF1bXSA9ICYkY29tbWl0X3NldFtjb3VudCgkY29tbWl0X3Nl
dCkgLSAxXTsKKworICAgICAgICAgICAgaWYgKCRyZXBvc2l0b3J5ICYmICRyZXBvc2l0b3J5Wydy
ZXBvc2l0b3J5X293bmVyJ10pIHsKKyAgICAgICAgICAgICAgICAkcmVwb3NpdG9yeV9vd25lcl9s
aXN0WyRyZXBvc2l0b3J5WydyZXBvc2l0b3J5X293bmVyJ11dID0gVFJVRTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRleGlzdGluZ19yZXBv
c2l0b3JpZXNbJHJlcG9zaXRvcnlfaWRdID0gVFJVRTsKKyAgICAgICAgfQorICAgICAgICAkcmVw
b3NpdG9yeV9saXN0ID0gYXJyYXlfa2V5cygkZXhpc3RpbmdfcmVwb3NpdG9yaWVzKTsKICAgICAg
ICAgJHJlcG9zaXRvcnlfZ3JvdXBfaWQgPSAkZmluZGVyLT5maW5kX2J5X3JlcG9zaXRvcmllcygk
cmVwb3NpdG9yeV9saXN0KTsKICAgICAgICAgaWYgKCEkcmVwb3NpdG9yeV9ncm91cF9pZCkKLSAg
ICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRjaGluZ1JlcG9zaXRvcnlHcm91cCcsIGFy
cmF5KCdyZXBvc2l0b3JpcycgPT4gJHJlcG9zaXRvcnlfbGlzdCkpOworICAgICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3VwJywgYXJyYXkoJ3JlcG9zaXRv
cmllcycgPT4gJHJlcG9zaXRvcnlfbGlzdCkpOworCisgICAgICAgIGZvcmVhY2ggKGFycmF5X2tl
eXMoJHJlcG9zaXRvcnlfb3duZXJfbGlzdCkgYXMgJHJlcG9zaXRvcnlfb3duZXJfaWQpIHsKKyAg
ICAgICAgICAgIGlmICghYXJyYXlfZ2V0KCRleGlzdGluZ19yZXBvc2l0b3JpZXMsICRyZXBvc2l0
b3J5X293bmVyX2lkLCBGQUxTRSkpCisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdN
aXNzaW5nT3duZXJSZXBvc2l0b3J5JywgYXJyYXkoJ3JlcG9zaXRvcnlPd25lcicgPT4gJHJlcG9z
aXRvcnlfb3duZXJfaWQpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGZvcmVhY2ggKCRyZXBvc2l0
b3J5X3dpdGhfcGF0Y2ggYXMgJHJlcG9zaXRvcnlfaWQpIHsKICAgICAgICAgICAgIGlmICghJGZp
bmRlci0+YWNjZXB0c19wYXRjaCgkcmVwb3NpdG9yeV9ncm91cF9pZCwgJHJlcG9zaXRvcnlfaWQp
KQogICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUGF0Y2hOb3RBY2NlcHRlZCcsIGFy
cmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JlcG9zaXRvcnlHcm91cCcgPT4g
JHJlcG9zaXRvcnlfZ3JvdXBfaWQpKTsKICAgICAgICAgfQogCisgICAgICAgIGZvcmVhY2goYXJy
YXlfa2V5cygkcmVxdWlyZWRfb3duZXJfcmV2aXNpb25zKSBhcyAkcmVxdWlyZWRfb3duZXJfcmV2
aXNpb24pIHsKKyAgICAgICAgICAgIGlmICghYXJyYXlfZ2V0KCRleGlzdGluZ19vd25lcl9yZXZp
c2lvbnMsICRyZXF1aXJlZF9vd25lcl9yZXZpc2lvbiwgRkFMU0UpKQorICAgICAgICAgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignQ29tbWl0T3duZXJNdXN0RXhpc3RJbkNvbW1pdFNldCcsIGFycmF5
KCdvd25lcl9yZXZpc2lvbicgPT4gJHJlcXVpcmVkX293bmVyX3JldmlzaW9uKSk7CisgICAgICAg
IH0KICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldF9saXN0LCBhcnJheSgncmVwb3NpdG9y
eV9ncm91cCcgPT4gJHJlcG9zaXRvcnlfZ3JvdXBfaWQsICdzZXQnID0+ICRjb21taXRfc2V0KSk7
CiAgICAgfQogCisgICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkcmVwb3NpdG9yaWVzX3JlcXVpcmVf
YnVpbGQpIGFzICRyZXBvc2l0b3J5X2lkKSB7CisgICAgICAgIGZvcmVhY2goJHJlcG9zaXRvcnlf
Y29tbWl0X3NldF9pdGVtc19tYXBbJHJlcG9zaXRvcnlfaWRdIGFzICYkY29tbWl0X3NldF9pdGVt
KQorICAgICAgICAgICAgJGNvbW1pdF9zZXRfaXRlbVsncmVxdWlyZXNfYnVpbGQnXSA9IFRSVUU7
CisgICAgfQogICAgIHJldHVybiAkY29tbWl0X3NldF9saXN0OwogfQogCkBAIC0yMzUsMTQgKzI4
MiwxNCBAQCBmdW5jdGlvbiBlbnN1cmVfY29tbWl0X3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQs
ICRjb21taXRfc2V0c19pbmZvKSB7CiAgICAgICAgICAgICBpZiAoISRjb21taXQpCiAgICAgICAg
ICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXZpc2lvbk5vdEZvdW5kJywgYXJyYXkoJ3JlcG9z
aXRvcnknID0+ICRyZXBvc2l0b3J5X25hbWUsICdyZXZpc2lvbicgPT4gJHJldmlzaW9uKSk7CiAg
ICAgICAgICAgICBhcnJheV9zZXRfZGVmYXVsdCgkY29tbWl0X3NldHMsICRpLCBhcnJheSgnc2V0
JyA9PiBhcnJheSgpKSk7Ci0gICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0c1skaV1b
J3NldCddLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0Wydjb21taXRfaWQnXSwgJ3BhdGNoX2Zp
bGUnID0+IE5VTEwpKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRzWyRpXVsn
c2V0J10sIGFycmF5KCdjb21taXQnID0+ICRjb21taXRbJ2NvbW1pdF9pZCddLCAncGF0Y2hfZmls
ZScgPT4gTlVMTCwgJ3JlcXVpcmVzX2J1aWxkJyA9PiBGQUxTRSwgJ2NvbW1pdF9vd25lcicgPT4g
TlVMTCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgJGZpbmRlciA9IG5ldyBSZXBvc2l0b3J5
R3JvdXBGaW5kZXIoJGRiLCAkdHJpZ2dlcmFibGVfaWQpOwogICAgICRyZXBvc2l0b3J5X2dyb3Vw
X2lkID0gJGZpbmRlci0+ZmluZF9ieV9yZXBvc2l0b3JpZXMoJHJlcG9zaXRvcnlfbGlzdCk7CiAg
ICAgaWYgKCEkcmVwb3NpdG9yeV9ncm91cF9pZCkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdO
b01hdGNoaW5nUmVwb3NpdG9yeUdyb3VwJywgYXJyYXkoJ3JlcG9zaXRvcmlzJyA9PiAkcmVwb3Np
dG9yeV9saXN0KSk7CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRjaGluZ1JlcG9zaXRv
cnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpZXMnID0+ICRyZXBvc2l0b3J5X2xpc3QpKTsKIAog
ICAgIGlmIChjb3VudCgkY29tbWl0X3NldHMpIDwgMikKICAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdJbnZhbGlkQ29tbWl0U2V0cycsIGFycmF5KCdjb21taXRTZXRzJyA9PiAkY29tbWl0X3NldHNf
aW5mbykpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggODE5YjYzYzRmZWQ3N2NjZWFiMzI0ZWQy
ODVhOGE4YTdkZGMwNDcyOC4uMDZlOTJkOGM1NDU3MzlkOWM5NmJjMTM4YWQ1NGI3MjIzYTc3YTdm
NiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
YnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0xNDMsNiArMTQzLDcgQEAgY2xhc3MgQnVpbGRS
ZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgICAgICAgICBpdGVtLmNv
bW1pdCA9IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdCk7CiAgICAgICAgICAgICAgICAg
aXRlbS5wYXRjaCA9IGl0ZW0ucGF0Y2ggPyBVcGxvYWRlZEZpbGUuZmluZEJ5SWQoaXRlbS5wYXRj
aCkgOiBudWxsOwogICAgICAgICAgICAgICAgIGl0ZW0ucm9vdEZpbGUgPSBpdGVtLnJvb3RGaWxl
ID8gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGl0ZW0ucm9vdEZpbGUpIDogbnVsbDsKKyAgICAgICAg
ICAgICAgICBpdGVtLmNvbW1pdE93bmVyID0gaXRlbS5jb21taXRPd25lciA/IENvbW1pdExvZy5m
aW5kQnlJZChpdGVtLmNvbW1pdE93bmVyKSA6IG51bGw7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByYXdEYXRhLmN1c3RvbVJvb3RzID0gcmF3RGF0YS5jdXN0b21Sb290cy5tYXAoKGZpbGVJ
ZCkgPT4gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCkpOwogICAgICAgICAgICAgcmV0dXJu
IENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocmF3RGF0YS5pZCwgcmF3RGF0YSk7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNl
dC5qcwppbmRleCBhMTI1ZjEwZjE5ODdiMTAxYWE4ZmY5OGY5M2MyNTdhOWIyYzViMGI3Li5hNmRi
ZGMyNGUyMTRlZDgxODc2NjMxMGQ4MDYyM2MzNzNjZDFhZjNjIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKQEAg
LTksNiArOSw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAg
ICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRo
aXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fcmVwb3Np
dG9yeVRvUm9vdE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1p
dE93bmVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVp
bGRNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9sYXRlc3RDb21taXRUaW1lID0gbnVsbDsK
ICAgICAgICAgdGhpcy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICAgICAgdGhpcy5fYWxsUm9vdEZp
bGVzID0gW107CkBAIC0yNCw2ICsyNiw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFN
b2RlbE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5jbGVhcigp
OwogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5jbGVhcigpOwogICAgICAgICB0
aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3JlcG9zaXRv
cnlUb0NvbW1pdE93bmVyTWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlSZXF1
aXJlc0J1aWxkTWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcmllcyA9IFtdOwog
ICAgICAgICB0aGlzLl91cGRhdGVGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgfQpAQCAtMzYsOSAr
NDAsMTIgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdCBpbnN0YW5jZW9mIENvbW1pdExvZyk7CiAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydCghaXRlbS5wYXRjaCB8fCBpdGVtLnBhdGNoIGluc3RhbmNl
b2YgVXBsb2FkZWRGaWxlKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpdGVtLnJvb3RG
aWxlIHx8IGl0ZW0ucm9vdEZpbGUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWl0ZW0uY29tbWl0T3duZXIgfHwgaXRlbS5jb21taXRPd25lciBp
bnN0YW5jZW9mIENvbW1pdExvZyk7CiAgICAgICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gY29t
bWl0LnJlcG9zaXRvcnkoKTsKICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1h
cC5zZXQocmVwb3NpdG9yeSwgY29tbWl0KTsKICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlU
b1BhdGNoTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnBhdGNoKTsKKyAgICAgICAgICAgIHRoaXMu
X3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLmNvbW1pdE93
bmVyKTsKKyAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLnNldChy
ZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVzQnVpbGQpOwogICAgICAgICAgICAgdGhpcy5fcmVwb3Np
dG9yeVRvUm9vdE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5yb290RmlsZSk7CiAgICAgICAgICAg
ICBpZiAoaXRlbS5yb290RmlsZSkKICAgICAgICAgICAgICAgICByb290RmlsZXMuYWRkKGl0ZW0u
cm9vdEZpbGUpOwpAQCAtNTksOCArNjYsMTUgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0
YU1vZGVsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGNvbW1pdCA/IGNvbW1pdC5yZXZpc2lvbigp
IDogbnVsbDsKICAgICB9CiAKKyAgICBvd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KQorICAgIHsKKyAgICAgICAgY29uc3QgY29tbWl0ID0gdGhpcy5fcmVwb3NpdG9yeVRvQ29t
bWl0T3duZXJNYXAuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICByZXR1cm4gY29tbWl0ID8gY29t
bWl0LnJldmlzaW9uKCkgOiBudWxsOworICAgIH0KKwogICAgIHBhdGNoRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5nZXQocmVwb3Np
dG9yeSk7IH0KICAgICByb290Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlz
Ll9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIHJlcXVpcmVzQnVp
bGRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlSZXF1
aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KTsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHJldHVybiBhIERhdGUgb2JqZWN0LgogICAgIGxhdGVzdENvbW1pdFRpbWUoKQpAQCAtODUs
NiArOTksMTAgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVwb3Np
dG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb1Jvb3RN
YXAuZ2V0KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5nZXQocmVwb3NpdG9y
eSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9yeSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRv
cnlSZXF1aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVJl
cXVpcmVzQnVpbGRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmFyZUN1c3RvbVJvb3Rz
RXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90aGVyLl9jdXN0b21Sb290cyk7CiAgICAgfQpAQCAt
MTM5LDcgKzE1Nyw3IEBAIGNsYXNzIE1lYXN1cmVtZW50Q29tbWl0U2V0IGV4dGVuZHMgQ29tbWl0
U2V0IHsKICAgICB9CiAKICAgICAvLyBVc2UgQ29tbWl0U2V0J3Mgc3RhdGljIG1hcHMgYmVjYXVz
ZSBNZWFzdXJlbWVudENvbW1pdFNldCBhbmQgQ29tbWl0U2V0IGFyZSBsb2dpY2FsbHkgb2YgdGhl
IHNhbWUgdHlwZS4KLSAgICAvLyBGSVhNRTogSWRhZWxseSwgRGF0YU1vZGVsIHNob3VsZCB0YWtl
IGNhcmUgb2YgdGhpcyBidXQgdHJhdmVyc2luZyBwcm90b3R5cGUgY2hhaW4gaXMgZXhwZW5zaXZl
LgorICAgIC8vIEZJWE1FOiBJZGVhbGx5LCBEYXRhTW9kZWwgc2hvdWxkIHRha2UgY2FyZSBvZiB0
aGlzIGJ1dCB0cmF2ZXJzaW5nIHByb3RvdHlwZSBjaGFpbiBpcyBleHBlbnNpdmUuCiAgICAgbmFt
ZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29tbWl0U2V0Lm5hbWVkU3RhdGljTWFwKG5hbWUp
OyB9CiAgICAgZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29tbWl0U2V0LmVu
c3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpOyB9CiAgICAgc3RhdGljIG5hbWVkU3RhdGljTWFwKG5h
bWUpIHsgcmV0dXJuIENvbW1pdFNldC5uYW1lZFN0YXRpY01hcChuYW1lKTsgfQpAQCAtMTU3LDE0
ICsxNzUsMTUgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAgICBjb25zdHJ1Y3RvcigpCiAg
ICAgewogICAgICAgICB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkgPSBuZXcgTWFwOwor
ICAgICAgICB0aGlzLl9yZXZpc2lvbkxpc3RCeU93bmVkUmVwb3NpdG9yeSA9IG5ldyBNYXA7CiAg
ICAgICAgIHRoaXMuX2N1c3RvbVJvb3RzID0gW107CiAgICAgfQogCi0gICAgc2V0UmV2aXNpb25G
b3JSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uLCBwYXRjaCA9IG51bGwpCisgICAgc2V0
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uLCBwYXRjaCA9IG51bGws
IG93bmVyUmV2aXNpb24gPSBudWxsKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVw
b3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkpOwogICAgICAgICBjb25zb2xlLmFzc2VydCgh
cGF0Y2ggfHwgcGF0Y2ggaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwotICAgICAgICB0aGlzLl9y
ZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHtyZXZpc2lvbiwgcGF0Y2h9
KTsKKyAgICAgICAgdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LnNldChyZXBvc2l0b3J5
LCB7cmV2aXNpb24sIHBhdGNoLCBvd25lclJldmlzaW9ufSk7CiAgICAgfQogCiAgICAgZXF1YWxz
KG90aGVyKQpAQCAtMTcyLDEzICsxOTEsMTQgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQob3RoZXIgaW5zdGFuY2VvZiBDdXN0b21Db21taXRTZXQpOwog
ICAgICAgICBpZiAodGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LnNpemUgIT0gb3RoZXIu
X3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVw
b3NpdG9yeS5rZXlzKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IHRoaXNSZXZpc2lvbiA9IHRoaXMu
X3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5nZXQocmVwb3NpdG9yeSk7CisKKyAgICAgICAgZm9y
IChjb25zdCBbcmVwb3NpdG9yeSwgdGhpc1JldmlzaW9uXSBvZiB0aGlzLl9yZXZpc2lvbkxpc3RC
eVJlcG9zaXRvcnkpIHsKICAgICAgICAgICAgIGNvbnN0IG90aGVyUmV2aXNpb24gPSBvdGhlci5f
cmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KTsKICAgICAgICAgICAgIGlm
ICghdGhpc1JldmlzaW9uICE9ICFvdGhlclJldmlzaW9uKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGlmICh0aGlzUmV2aXNpb24gJiYgKHRoaXNSZXZpc2lvbi5y
ZXZpc2lvbiAhPSBvdGhlclJldmlzaW9uLnJldmlzaW9uCi0gICAgICAgICAgICAgICAgfHwgdGhp
c1JldmlzaW9uLnBhdGNoICE9IG90aGVyUmV2aXNpb24ucGF0Y2gpKQorICAgICAgICAgICAgICAg
IHx8IHRoaXNSZXZpc2lvbi5wYXRjaCAhPSBvdGhlclJldmlzaW9uLnBhdGNoCisgICAgICAgICAg
ICAgICAgfHwgdGhpc1JldmlzaW9uLm93bmVyUmV2aXNpb24gIT0gb3RoZXJSZXZpc2lvbi5vd25l
clJldmlzaW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIENvbW1pdFNldC5hcmVDdXN0b21Sb290c0VxdWFsKHRoaXMuX2N1c3RvbVJv
b3RzLCBvdGhlci5fY3VzdG9tUm9vdHMpOwpAQCAtMTk5LDYgKzIxOSwxMyBAQCBjbGFzcyBDdXN0
b21Db21taXRTZXQgewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBl
bnRyeS5wYXRjaDsKICAgICB9CisgICAgb3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3Np
dG9yeSkKKyAgICB7CisgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5fcmV2aXNpb25MaXN0QnlP
d25lZFJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICBpZiAoIWVudHJ5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiBlbnRyeS5vd25lclJldmlzaW9u
OworICAgIH0KICAgICBjdXN0b21Sb290cygpIHsgcmV0dXJuIHRoaXMuX2N1c3RvbVJvb3RzOyB9
CiAKICAgICBhZGRDdXN0b21Sb290KHVwbG9hZGVkRmlsZSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCmluZGV4IDA4
OWY2MmUyNDE3ZWViMWU1MDQ0OGQ2YmMwNTc3NmRiODY2NTdhZGQuLmUzYzc0NzdjMzFlOTE1Mzk3
NTdkODcwMDcyNDc0MzVjNTJlMmI3OTAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5qcwpAQCAtMjYsNiArMjYsMTIg
QEAgY2xhc3MgUmVwb3NpdG9yeSBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1
cm4gbWFwID8gbWFwW25hbWVdIDogbnVsbDsKICAgICB9CiAKKyAgICBmaW5kT3duZWRSZXBvc2l0
b3J5QnlOYW1lKG5hbWUpCisgICAgeworICAgICAgICBjb25zdCBvd25lcnNoaXBzID0gdGhpcy5u
YW1lZFN0YXRpY01hcCgncmVwb3NpdG9yeU93bmVyc2hpcHMnKTsKKyAgICAgICAgcmV0dXJuIG93
bmVyc2hpcHMgPyBvd25lcnNoaXBzW3RoaXMuaWQoKV0uZmluZCgocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gbmFtZSkgOiBudWxsOworICAgIH0KKwogICAgIGhhc1VybEZvclJl
dmlzaW9uKCkgeyByZXR1cm4gISF0aGlzLl91cmw7IH0KIAogICAgIHVybEZvclJldmlzaW9uKGN1
cnJlbnRSZXZpc2lvbikKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCmluZGV4IDRiM2ZiOGM0YjdkNzgxMTg1MzFmYzVm
NjE4NWQ5ZmU1NjkxZTI4NTMuLjBjMGRmYWQ0NzdlMzU3Y2I1NDRkMTMyNzAzY2E2NzJiOGEwMWMy
MjUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L3Rlc3QtZ3JvdXAuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvdGVzdC1ncm91cC5qcwpAQCAtMjMxLDYgKzIzMSw3IEBAIGNsYXNzIFRlc3RHcm91cCBl
eHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICAgICAgICAgIGNvbnN0IHBhdGNoRmlsZSA9
IGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAg
ICAgcmV2aXNpb25TZXRbcmVwb3NpdG9yeS5pZCgpXSA9IHsKICAgICAgICAgICAgICAgICAgICAg
cmV2aXNpb246IGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSksCisg
ICAgICAgICAgICAgICAgICAgIG93bmVyUmV2aXNpb246IGNvbW1pdFNldC5vd25lclJldmlzaW9u
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgcGF0Y2g6IHBh
dGNoRmlsZSA/IHBhdGNoRmlsZS5pZCgpIDogbnVsbCwKICAgICAgICAgICAgICAgICB9OwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBmZmRhZTg0
YmJlMTY0ZjJiODA5YTA2MTc3MDcxMjIzZjIzMWUwMzZkLi5iNmI1MTAwNmUwMTlhN2UwMTc3MjYz
YTM4NDdiYjQ2YmNlZTYwNmNjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpA
QCAtMjcsNyArMjcsNDQgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVp
bGQgcmVxdWV0cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJsZSB3aXRoIGFwcHJv
cHJpYXRlIGNvbW1pdHMgYW5kIGNvbW1pdFNldHMnLCAoKSA9PiB7CisgICAgaXQoJ3Nob3VsZCBy
ZXR1cm4gYnVpbGQgcmVxdWVzdHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUg
d2l0aCBhcHByb3ByaWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzIHdpdGggb3duZWQgY29tcG9u
ZW50cycsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZFRlc3RHcm91cFdpdGhP
d25lZENvbW1pdHMoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBp
L2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOworICAgICAgICB9KS50aGVuKChjb250ZW50
KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQp
LnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0
dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRl
bnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bnRlbnRbJ2NvbW1pdFNldHMnXVswXS5pZCwgNDAzKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAg
ICAgICAgW3tjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwg
cmVxdWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgICAgICB7
Y29tbWl0OiAnOTMxMTYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVz
QnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sCisgICAgICAgICAgICAgICAge2NvbW1pdDog
JzE3OTcnLCBjb21taXRPd25lcjogIjkzMTE2IiwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6
IHRydWUsIHJvb3RGaWxlOiBudWxsfV0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRl
bnRbJ2NvbW1pdFNldHMnXVsxXS5pZCwgNDA0KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAg
ICAgW3tjb21taXQ6ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVx
dWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgICAgICB7Y29t
bWl0OiAnOTYzMzYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVp
bGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sCisgICAgICAgICAgICAgICAge2NvbW1pdDogJzIw
MTcnLCBjb21taXRPd25lcjogIjk2MzM2IiwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IHRy
dWUsIHJvb3RGaWxlOiBudWxsfV0pOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnY29tbWl0cyddLmxlbmd0aCwgNSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bnRlbnRbJ2NvbW1pdHMnXVswXSwge2NvbW1pdE93bmVyOiBudWxsLCBpZDogODc4MzIsIHJlcG9z
aXRvcnk6ICc5JywgcmV2aXNpb246ICcxMC4xMSAxNUEyODQnLCB0aW1lOiAwfSk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXSwge2NvbW1pdE93bmVy
OiBudWxsLCBpZDogOTMxMTYsIHJlcG9zaXRvcnk6ICcxMScsIHJldmlzaW9uOiAnMTkxNjIyJywg
dGltZTogMTQ0NTk0NTgxNjg3OH0pCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRl
bnRbJ2NvbW1pdHMnXVsyXSwge2NvbW1pdE93bmVyOiAnOTMxMTYnLCBpZDogJzE3OTcnLCByZXBv
c2l0b3J5OiAnMjEzJywgcmV2aXNpb246ICdvd25lZC1qc2MtNjE2MScsIHRpbWU6IDE0NTY5NjA3
OTUzMDB9KQorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRzJ11b
M10sIHtjb21taXRPd25lcjogbnVsbCwgaWQ6IDk2MzM2LCByZXBvc2l0b3J5OiAnMTEnLCByZXZp
c2lvbjogJzE5MjczNicsIHRpbWU6IDE0NDgyMjUzMjU2NTB9KQorICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRzJ11bNF0sIHtjb21taXRPd25lcjogJzk2MzM2Jywg
aWQ6IDIwMTcsIHJlcG9zaXRvcnk6ICcyMTMnLCByZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywg
dGltZTogMTQ2MjIzMDgzNzEwMH0pCisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50
WydidWlsZFJlcXVlc3RzJ10ubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXVswXVsnY3JlYXRlZEF0J10gPSAwOworICAgICAgICAgICAgY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzFdWydjcmVhdGVkQXQnXSA9IDA7CisgICAgICAgICAgICBjb250ZW50Wydi
dWlsZFJlcXVlc3RzJ11bMl1bJ2NyZWF0ZWRBdCddID0gMDsKKyAgICAgICAgICAgIGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVszXVsnY3JlYXRlZEF0J10gPSAwOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0sIHtpZDogJzcwNCcsIHRhc2s6
ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScsIHRl
c3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICcwJywg
Y29tbWl0U2V0OiAnNDAzJywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6IG51
bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0sIHtpZDogJzcwNScsIHRhc2s6ICcxMDgwJywgdHJpZ2dlcmFi
bGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBwbGF0Zm9y
bTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICcxJywgY29tbWl0U2V0OiAnNDA0Jywg
c3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRBdDogMH0p
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11b
Ml0sIHtpZDogJzcwNicsIHRhc2s6ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVwb3Np
dG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdyb3Vw
OiAnOTAwJywgb3JkZXI6ICcyJywgY29tbWl0U2V0OiAnNDAzJywgc3RhdHVzOiAncGVuZGluZycs
IHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10sIHtpZDogJzcwNycsIHRh
c2s6ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScs
IHRlc3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICcz
JywgY29tbWl0U2V0OiAnNDA0Jywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6
IG51bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCByZXR1cm4gYnVpbGQgcmVxdWVzdHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dl
cmFibGUgd2l0aCBhcHByb3ByaWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywgKCkgPT4gewog
ICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgp
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwog
ICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CkBAIC0zNiwxMCArNzMsMTAgQEAgZGVzY3Jp
YmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEpOwogICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0ucmV2aXNpb25JdGVt
cywKLSAgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGwsIHJvb3RG
aWxlOiBudWxsfSwge2NvbW1pdDogJzkzMTE2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxs
fV0pOworICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVs
bCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtj
b21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNC
dWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0gICAgICAg
ICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0s
IHtjb21taXQ6ICc5NjMzNicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAg
ICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBu
dWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYz
MzYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNl
LCByb290RmlsZTogbnVsbH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXS5sZW5ndGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXVswXS5pZCwgODc4MzIpOwpAQCAtODMsNiArMTIwLDcgQEAgZGVzY3JpYmUoJy9h
cGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwog
CisKICAgICBpdCgnc2hvdWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbics
ICgpID0+IHsKICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13
ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0aW9uPXRydWUnKTsKQEAgLTkyLDEwICsxMzAsMTAgQEAg
ZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEpOwogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0ucmV2aXNp
b25JdGVtcywKLSAgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGws
IHJvb3RGaWxlOiBudWxsfSwge2NvbW1pdDogJzkzMTE2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxl
OiBudWxsfV0pOworICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25l
cjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVs
bH0sIHtjb21taXQ6ICc5MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVx
dWlyZXNCdWlsZDogZmFsc2UsIHJvb3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0g
ICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTog
bnVsbH0sIHtjb21taXQ6ICc5NjMzNicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsK
KyAgICAgICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBh
dGNoOiBudWxsLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0
OiAnOTYzMzYnLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6
IGZhbHNlLCByb290RmlsZTogbnVsbH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bnRlbnRbJ2NvbW1pdHMnXS5sZW5ndGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bnRlbnRbJ2NvbW1pdHMnXVswXS5pZCwgODc4MzIpOwpAQCAtMTM5LDYgKzE3NywxMTEgQEAgZGVz
Y3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCBiZSBmZXRjaGFibGUgYnkgQnVpbGRSZXF1ZXN0LmZl
dGNoRm9yVHJpZ2dlcmFibGUgZm9yIGNvbW1pdFNldHMgd2l0aCBvd25lZCBjb21taXRzJywgKCkg
PT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0
cyhUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IE1hbmlmZXN0LmZldGNoKCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
cmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKCdidWlsZC13ZWJraXQnKTsK
KyAgICAgICAgfSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4geworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICAgICAgbGV0IHRlc3Qg
PSBUZXN0LmZpbmRCeUlkKDIwMCk7CisgICAgICAgICAgICBhc3NlcnQodGVzdCk7CisKKyAgICAg
ICAgICAgIGxldCBwbGF0Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlkKDY1KTsKKyAgICAgICAgICAg
IGFzc2VydChwbGF0Zm9ybSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzBdLmlkKCksIDcwNCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
c1swXS50ZXN0R3JvdXBJZCgpLCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdHNbMF0udGVzdCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWls
ZFJlcXVlc3RzWzBdLnBsYXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhhc0ZpbmlzaGVkKCkpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhhc1N0YXJ0ZWQoKSk7CisgICAg
ICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGlu
ZycpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5pZCgpLCA3
MDUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0udGVzdEdyb3Vw
SWQoKSwgOTAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFdLnRl
c3QoKSwgdGVzdCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5w
bGF0Zm9ybSgpLCBwbGF0Zm9ybSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0c1sxXS5vcmRlcigpLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3Rz
WzFdLmNvbW1pdFNldCgpIGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2Vy
dC5vayghYnVpbGRSZXF1ZXN0c1sxXS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5vayghYnVpbGRSZXF1ZXN0c1sxXS5oYXNTdGFydGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKGJ1aWxkUmVxdWVzdHNbMV0uaXNQZW5kaW5nKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdHNbMV0uc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0uaWQoKSwgNzA2KTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLnRlc3RHcm91cElkKCksIDkwMCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS50ZXN0KCksIHRlc3QpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ucGxhdGZvcm0oKSwgcGxh
dGZvcm0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIo
KSwgMik7CisgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1syXS5jb21taXRTZXQo
KSBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVx
dWVzdHNbMl0uaGFzRmluaXNoZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVx
dWVzdHNbMl0uaGFzU3RhcnRlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVl
c3RzWzJdLmlzUGVuZGluZygpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzJdLnN0YXR1c0xhYmVsKCksICdXYWl0aW5nJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3RzWzNdLmlkKCksIDcwNyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRSZXF1ZXN0c1szXS50ZXN0R3JvdXBJZCgpLCA5MDApOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbM10udGVzdCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLnBsYXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworICAgICAg
ICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBD
b21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmhhc0Zp
bmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmhhc1N0
YXJ0ZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5pc1BlbmRp
bmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS5zdGF0dXNM
YWJlbCgpLCAnV2FpdGluZycpOworCisgICAgICAgICAgICBjb25zdCBvc3ggPSBSZXBvc2l0b3J5
LmZpbmRCeUlkKDkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeC5uYW1lKCksICdtYWNP
UycpOworCisgICAgICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDEx
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXQubmFtZSgpLCAnV2ViS2l0Jyk7CisK
KyAgICAgICAgICAgIGNvbnN0IGpzYyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMjEzKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChqc2MubmFtZSgpLCAnSmF2YVNjcmlwdENvcmUnKTsKKworICAg
ICAgICAgICAgY29uc3QgZmlyc3RDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNl
dCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0
KCksIGZpcnN0Q29tbWl0U2V0KTsKKworICAgICAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0
ID0gYnVpbGRSZXF1ZXN0c1sxXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpLCBzZWNvbmRDb21taXRTZXQpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZmlyc3RDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KG9zeCksICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENv
bW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0Q29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShq
c2MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENv
bW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkxNjIyJyk7CisKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KG9zeCksICcxMC4xMSAxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNv
bmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KGpzYyksICdvd25lZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
Y29uZENvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkyNzM2Jyk7
CisKKyAgICAgICAgICAgIGNvbnN0IG9zeENvbW1pdCA9IGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZv
clJlcG9zaXRvcnkob3N4KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21taXQucmV2
aXNpb24oKSwgJzEwLjExIDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENv
bW1pdCwgc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CisKKyAgICAg
ICAgICAgIGNvbnN0IGZpcnN0V2ViS2l0Q29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9y
UmVwb3NpdG9yeSh3ZWJraXQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0V2ViS2l0
Q29tbWl0LnJldmlzaW9uKCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCgr
Zmlyc3RXZWJLaXRDb21taXQudGltZSgpLCAxNDQ1OTQ1ODE2ODc4KTsKKworICAgICAgICAgICAg
Y29uc3Qgc2Vjb25kV2ViS2l0Q29tbWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9z
aXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRXZWJLaXRDb21t
aXQucmV2aXNpb24oKSwgJzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNv
bmRXZWJLaXRDb21taXQudGltZSgpLCAxNDQ4MjI1MzI1NjUwKTsKKworICAgICAgICAgICAgY29u
c3QgZmlyc3RTSkNDb21taXQgPSBmaXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpz
Yyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZmlyc3RTSkNDb21taXQucmV2aXNpb24oKSwg
J293bmVkLWpzYy02MTYxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK2ZpcnN0U0pDQ29t
bWl0LnRpbWUoKSwgMTQ1Njk2MDc5NTMwMCk7CisKKyAgICAgICAgICAgIGNvbnN0IHNlY29uZFNK
Q0NvbW1pdCA9IHNlY29uZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoc2Vjb25kU0pDQ29tbWl0LnJldmlzaW9uKCksICdvd25lZC1q
c2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRTSkNDb21taXQudGlt
ZSgpLCAxNDYyMjMwODM3MTAwKQorICAgICAgICB9KTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91
bGQgYmUgZmV0Y2hhYmxlIGJ5IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlJywgKCkg
PT4gewogICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRh
YmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgp
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2
aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVz
dHMuanMKaW5kZXggOThkNzI5NmUwNTM4ZWQwYzkyMDJlMzJlZTViY2JkZDNlYWNmZjYzMC4uNjAz
NGZiNmQ5NWI1MDI3OGQ4NWZhMDJmYzBiYmFhNmY5Njc2OGU0YyAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVz
dC1ncm91cC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xMTMsNiAr
MTEzLDExIEBAIGZ1bmN0aW9uIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzayhuYW1lLCB3ZWJr
aXRSZXZpc2lvbnMpCiAgICAgICAgICAgICAgICAge3JlcG9zaXRvcnk6IE1vY2tEYXRhLm1hY29z
UmVwb3NpdG9yeUlkKCksIGFjY2VwdHNQYXRjaDogZmFsc2V9LAogICAgICAgICAgICAgICAgIHty
ZXBvc2l0b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0
cnVlfQogICAgICAgICAgICAgXX0sCisgICAgICAgICAgICB7bmFtZTogJ3N5c3RlbS13ZWJraXQt
c2pjJywgYWNjZXB0c1Jvb3Q6IHRydWUsIHJlcG9zaXRvcmllczogWworICAgICAgICAgICAgICAg
IHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6
IGZhbHNlfSwKKyAgICAgICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEuanNjUmVwb3Np
dG9yeUlkKCksIGFjY2VwdHNQYXRjaDogZmFsc2V9LAorICAgICAgICAgICAgICAgIHtyZXBvc2l0
b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQor
ICAgICAgICAgICAgXX0sCiAgICAgICAgIF0KICAgICB9OwogICAgIHJldHVybiBNb2NrRGF0YS5h
ZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewpAQCAtMjc0LDE0
ICsyNzksMTQgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIHJl
dHVybiAiQW1iaWdpb3VzUmV2aXNpb24iIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMg
dGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHN0cmluZycsICgpID0+IHsKKyAgICBp
dCgnc2hvdWxkIHJldHVybiAiQW1iaWd1b3VzUmV2aXNpb24iIHdoZW4gdGhlcmUgYXJlIG11bHRp
cGxlIGNvbW1pdHMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHN0cmluZycsICgp
ID0+IHsKICAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0
YXNrJywgWycyY2VkYTQ1ZDNjZDYzY2RlNThkMGRiZjU3Njc3MTRlMDNkOTAyZTQzJywgJzJjNzFh
OGRkYzFmNjYxNjYzY2NmZDFhMjljNjMzYmE1N2U4Nzk1MzMnXSkudGhlbigodGFza0lkKSA9PiB7
CiAgICAgICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbmQoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKTsKICAgICAgICAgICAgIGNv
bnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMmNlZGEnfX0s
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcyYyd9fV07CiAgICAgICAgICAgICByZXR1cm4g
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rl
c3QnLCB0YXNrOiB0YXNrSWQsIHJldmlzaW9uU2V0c30pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAg
ICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwog
ICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGVycm9yLCAnQW1iaWdpb3VzUmV2aXNpb24nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoZXJyb3IsICdBbWJpZ3VvdXNSZXZpc2lvbicpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwpAQCAtMzQ1LDYgKzM1MCw3MCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9
KTsKIAorICAgIGl0KCdzaG91bGQgcmV0dXJuICJJbnZhbGlkT3duZXJSZXZpc2lvbiIgd2hlbiBj
b21taXQgb3duZXJzaGlwIGlzIG5vdCB2YWxpZCcsICgpID0+IHsKKyAgICAgICAgbGV0IHRhc2tJ
ZDsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNr
JykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBjb25zdCBtYWNvcyA9
IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUo
KSA9PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGNvbnN0IGpzYyA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlw
dENvcmUnKVswXTsKKyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5p
ZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVB
Mjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZp
c2lvbjogJzE5MTYyMSd9fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2Mu
aWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MTYy
Mid9fV07CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25D
b3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKKyAgICAgICAg
fSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlk
T3duZXJSZXZpc2lvbicpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQg
cmV0dXJuICJJbnZhbGlkQ29tbWl0T3duZXJzaGlwIiB3aGVuIGNvbW1pdCBvd25lcnNoaXAgaXMg
bm90IHZhbGlkJywgKCkgPT4geworICAgICAgICBsZXQgdGFza0lkOworICAgICAgICByZXR1cm4g
YWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFz
a0lkID0gaWQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgICAgIGNvbnN0IG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5m
aWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOwor
ICAgICAgICAgICAgY29uc3QganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRv
cnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAg
ICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcx
OTE2MjInfSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXTog
e3JldmlzaW9uOiAnb3duZWQtanNjLTYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAor
ICAgICAgICAgICAgICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21h
Y29zLmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAn
b3duZWQtanNjLTkxOTEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319XTsKKyAgICAgICAgICAg
IHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtu
YW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNl
dHN9KTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2Us
ICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0ludmFsaWRDb21taXRPd25lcnNoaXAnKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiAiTWlzc2luZ093
bmVyUmVwb3NpdG9yeSIgd2hlbiByZXBvc2l0b3J5IG9mIGEgY29tbWl0IG93bmVyIGlzIG1pc3Np
bmcgaW4gdGhlIGNvbW1pdCBzZXQnLCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAg
ICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4o
KGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5u
YW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICAgICAgY29uc3QgbWFjb3MgPSBSZXBvc2l0
b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ21h
Y09TJylbMF07CisgICAgICAgICAgICBjb25zdCBqc2MgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRl
cigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ0phdmFTY3JpcHRDb3JlJylb
MF07CisgICAgICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHty
ZXZpc2lvbjogJzE5MTYyMid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBb
anNjLmlkKCldOiB7cmV2aXNpb246ICdvd25lZC1qc2MtNjE2MScsIG93bmVyUmV2aXNpb246ICcx
OTE2MjInfX0sCisgICAgICAgICAgICAgICAge1ttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVB
Mjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZp
c2lvbjogJzE5MjczNid9fV07CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQs
IHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQn
KTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJy
b3IsICdNaXNzaW5nT3duZXJSZXBvc2l0b3J5Jyk7CisgICAgICAgIH0pOworICAgIH0pOworCisg
ICAgaXQoJ3Nob3VsZCByZXR1cm4gIkNvbW1pdE93bmVyTXVzdEV4aXN0SW5Db21taXRTZXQiIHdo
ZW4gb3duZXIgb2YgYSBjb21taXQgaXMgbWlzc2luZyBpbiB0aGUgY29tbWl0IHNldCcsICgpID0+
IHsKKyAgICAgICAgbGV0IHRhc2tJZDsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5k
Q3JlYXRlVGFzaygnc29tZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVy
KChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAg
ICAgICAgICBjb25zdCBtYWNvcyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5
KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGNvbnN0
IGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5
Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsKKyAgICAgICAgICAgIGNvbnN0IHJldmlz
aW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5p
ZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lvbjogJ293bmVk
LWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYyMid9fSwKKyAgICAgICAgICAgICAgICB7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3Jldmlz
aW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywg
b3duZXJSZXZpc2lvbjogJzE5MjczNid9fV07CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNr
OiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIH0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJl
IHJlYWNoZWQnKTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoZXJyb3IsICdDb21taXRPd25lck11c3RFeGlzdEluQ29tbWl0U2V0Jyk7CisgICAgICAg
IH0pOworICAgIH0pOworCiAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB0ZXN0IGdyb3VwIGZyb20g
Y29tbWl0U2V0cyB3aXRoIHRoZSByZXBldGl0aW9uIGNvdW50IG9mIG9uZSB3aGVuIHJlcGV0aXRp
b25Db3VudCBpcyBvbWl0dGVkJywgKCkgPT4gewogICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFi
bGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKCh0YXNrSWQpID0+IHsKICAgICAgICAg
ICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7CkBAIC02NTEsNiArNzIwLDI3MiBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCB3aXRo
IGEgb3duZWQgY29tbWl0cyBldmVuIHdoZW4gbm8gcGF0Y2ggaXMgc3BlY2lmaWVkJywgKCkgPT4g
eworICAgICAgICBsZXQgdGFza0lkOworICAgICAgICBsZXQgd2Via2l0OworICAgICAgICBsZXQg
anNjOworICAgICAgICBsZXQgbWFjb3M7CisgICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7Cisg
ICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRo
ZW4oKGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICB3ZWJraXQg
PSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1l
KCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICAgICAgbWFjb3MgPSBSZXBvc2l0b3J5LmFsbCgp
LmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ21hY09TJylbMF07
CisgICAgICAgICAgICBqc2MgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkg
PT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ0phdmFTY3JpcHRDb3JlJylbMF07CisgICAgICAgICAg
ICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Mid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBbanNjLmlkKCldOiB7cmV2
aXNpb246ICdvd25lZC1qc2MtNjE2MScsIG93bmVyUmV2aXNpb246ICcxOTE2MjInfX0sCisgICAg
ICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MjczNid9LCBbbWFjb3Mu
aWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBbanNjLmlkKCldOiB7cmV2aXNpb246ICdvd25l
ZC1qc2MtOTE5MScsIG93bmVyUmV2aXNpb246ICcxOTI3MzYnfX1dOworICAgICAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6
ICd0ZXN0JywgdGFzazogdGFza0lkLCByZXBldGl0aW9uQ291bnQ6IDIsIHJldmlzaW9uU2V0c30p
OworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAgICBpbnNlcnRlZEdy
b3VwSWQgPSBjb250ZW50Wyd0ZXN0R3JvdXBJZCddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RH
cm91cC5mZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdy
b3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChncm91cC50ZXN0KCksIFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJ
ZCgpKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucGxhdGZvcm0oKSwgUGxhdGZv
cm0uZmluZEJ5SWQoTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSkpOworICAgICAgICAgICAgY29u
c3QgcmVxdWVzdHMgPSBncm91cC5idWlsZFJlcXVlc3RzKCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzBdLmlzQnVpbGQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0uaXNCdWlsZCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1syXS5pc0J1aWxkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1szXS5pc0J1aWxkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1s0XS5pc0J1aWxkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1s1XS5pc0J1aWxkKCksIGZhbHNlKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzBdLmlzVGVzdCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0uaXNUZXN0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1syXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHNbM10uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzRdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s1
XS5pc1Rlc3QoKSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGNvbnN0IHNldDAgPSByZXF1ZXN0c1sw
XS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGNvbnN0IHNldDEgPSByZXF1ZXN0c1sxXS5jb21t
aXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS5jb21taXRTZXQo
KSwgc2V0MCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uY29tbWl0U2V0
KCksIHNldDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzRdLmNvbW1pdFNl
dCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s1XS5jb21taXRT
ZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29y
dEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTChzZXQwLnJlcG9zaXRvcmllcygpKSwgW2pzYywg
d2Via2l0LCBtYWNvc10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzZXQwLmN1c3Rv
bVJvb3RzKCksIFtdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5z
b3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDEucmVwb3NpdG9yaWVzKCkpLCBbanNj
LCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDEuY3Vz
dG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlc0J1aWxkRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0
MS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBmYWxzZSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpLCAnMTVBMjg0
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
bWFjb3MpLCBzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDAuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcyksIHNldDEuY29tbWl0
Rm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0
Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MS5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnko
bWFjb3MpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkoanNjKSwgJ293bmVkLWpzYy02MTYxJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgJ293bmVkLWpzYy05MTkxJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkoanNjKSwg
bnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnko
anNjKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5vd25lclJldmlzaW9u
Rm9yUmVwb3NpdG9yeShqc2MpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkyNzM2Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShqc2MpLCB0
cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBv
c2l0b3J5KGpzYyksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0KCFzZXQwLmVxdWFscyhzZXQx
KSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB0ZXN0
IGdyb3VwIHdpdGggYSBvd25lZCBjb21taXRzIGFuZCBhIHBhdGNoJywgKCkgPT4geworICAgICAg
ICBsZXQgdGFza0lkOworICAgICAgICBsZXQgd2Via2l0OworICAgICAgICBsZXQgbWFjb3M7Cisg
ICAgICAgIGxldCBqc2M7CisgICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7CisgICAgICAgIGxl
dCB1cGxvYWRlZEZpbGU7CisgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRh
c2soJ3NvbWUgdGFzaycpLnRoZW4oKGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkg
PT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICAgICAgbWFjb3Mg
PSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1l
KCkgPT0gJ21hY09TJylbMF07CisgICAgICAgICAgICBqc2MgPSBSZXBvc2l0b3J5LmFsbCgpLmZp
bHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ0phdmFTY3JpcHRDb3Jl
JylbMF07CisgICAgICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5Rmls
ZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50Jyk7CisgICAgICAgIH0pLnRoZW4oKHN0cmVhbSkg
PT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9h
ZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAg
ICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgcmF3RmlsZSA9IHJl
c3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAgIHVwbG9hZGVkRmlsZSA9IFVwbG9h
ZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24ocmF3RmlsZS5pZCwgcmF3RmlsZSk7CisgICAgICAgICAg
ICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYy
Mid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBbanNjLmlkKCldOiB7cmV2
aXNpb246ICdvd25lZC1qc2MtNjE2MScsIG93bmVyUmV2aXNpb246ICcxOTE2MjInfX0sCisgICAg
ICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MjczNicsIHBhdGNoOiB1
cGxvYWRlZEZpbGUuaWQoKX0sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtq
c2MuaWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5
MjczNid9fV07CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRp
b25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+
IHsKKyAgICAgICAgICAgIGluc2VydGVkR3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107
CisgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUp
OworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2Vy
dGVkR3JvdXBJZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNv
dW50KCksIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5m
aW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpKSk7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVz
dHMoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDYpOworCisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0uaXNCdWlsZCgpLCB0cnVlKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5pc0J1aWxkKCksIHRydWUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmlzQnVpbGQoKSwgZmFsc2UpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmlzQnVpbGQoKSwgZmFsc2UpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzRdLmlzQnVpbGQoKSwgZmFsc2UpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVdLmlzQnVpbGQoKSwgZmFsc2UpOworCisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0uaXNUZXN0KCksIGZhbHNlKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5pc1Rlc3QoKSwgZmFsc2UpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVdLmlzVGVzdCgpLCB0cnVlKTsKKworICAgICAgICAg
ICAgY29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29u
c3Qgc2V0MSA9IHJlcXVlc3RzWzFdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0c1szXS5jb21taXRTZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbNF0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzVdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNl
dDAucmVwb3NpdG9yaWVzKCkpLCBbanNjLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwo
c2V0MS5yZXBvc2l0b3JpZXMoKSksIFtqc2MsIHdlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIy
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnko
d2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hG
b3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
dDEucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHVwbG9hZGVkRmlsZSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoc2V0MC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLm93bmVyUmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVx
dWlyZXNCdWlsZEZvclJlcG9zaXRvcnkod2Via2l0KSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB0cnVlKTsK
KworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1h
Y29zKSwgJzE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25G
b3JSZXBvc2l0b3J5KG1hY29zKSwgc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLmNvbW1pdEZvclJlcG9zaXRvcnkobWFjb3Mp
LCBzZXQxLmNvbW1pdEZvclJlcG9zaXRvcnkobWFjb3MpKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNv
cyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZpc2lvbkZv
clJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkobWFjb3MpLCBmYWxz
ZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9y
eShqc2MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQx
LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQtanNjLTkxOTEnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeShqc2MpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0
b3J5KGpzYyksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLm93bmVy
UmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KGpzYyksIHRydWUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkoanNj
KSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQoIXNldDAuZXF1YWxzKHNldDEpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHN0aWxsIHdvcmsgZXZlbiBpZiBjb21w
b25lbnRzIHdpdGggc2FtZSBuYW1lIGJ1dCBvbmUgaXMgb3duZWQsIG9uZSBpcyBub3QnLCAoKSA9
PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIGxl
dCBtYWNvczsKKyAgICAgICAgbGV0IGpzYzsKKyAgICAgICAgbGV0IG93bmVkSlNDOworICAgICAg
ICBsZXQgaW5zZXJ0ZWRHcm91cElkOworICAgICAgICBsZXQgdXBsb2FkZWRGaWxlOworICAgICAg
ICByZXR1cm4gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChp
ZCkgPT4gdGFza0lkID0gaWQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIE1vY2tE
YXRhLmFkZEFub3RoZXJUcmlnZ2VyYWJsZShUZXN0U2VydmVyLmRhdGFiYXNlKCkpOworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCku
ZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07
CisgICAgICAgICAgICBtYWNvcyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5
KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9
IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUo
KSA9PSAnSmF2YVNjcmlwdENvcmUnICYmICFyZXBvc2l0b3J5Lm93bmVySWQoKSlbMF07CisgICAg
ICAgICAgICBvd25lZEpTQyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9
PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnICYmIHJlcG9zaXRvcnkub3du
ZXJJZCgpKVswXTsKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3Jh
cnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgfSkudGhlbigoc3Ry
ZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
dXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCByYXdGaWxl
ID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0g
VXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbihyYXdGaWxlLmlkLCByYXdGaWxlKTsKKyAgICAg
ICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W2pzYy5pZCgpXToge3JldmlzaW9uOiAnanNj
LTYxNjEnfSwgW3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgp
XToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtvd25lZEpTQy5pZCgpXToge3JldmlzaW9uOiAnb3du
ZWQtanNjLTYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAgICAgICAgICAg
IHtbanNjLmlkKCldOiB7cmV2aXNpb246ICdqc2MtOTE5MSd9LCBbd2Via2l0LmlkKCldOiB7cmV2
aXNpb246ICcxOTI3MzYnLCBwYXRjaDogdXBsb2FkZWRGaWxlLmlkKCl9LCBbbWFjb3MuaWQoKV06
IHtyZXZpc2lvbjogJzE1QTI4NCd9LCBbb3duZWRKU0MuaWQoKV06IHtyZXZpc2lvbjogJ293bmVk
LWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MjczNid9fV07CisgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTog
J3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7
CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAgIGluc2VydGVkR3Jv
dXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdEdy
b3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3Jv
dXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OworICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElk
KCkpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5wbGF0Zm9ybSgpLCBQbGF0Zm9y
bS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CisgICAgICAgICAgICBjb25z
dCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMF0uaXNCdWlsZCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1sxXS5pc0J1aWxkKCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzJdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzNdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzRdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzVdLmlzQnVpbGQoKSwgZmFsc2UpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMF0uaXNUZXN0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1sxXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzJdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1szXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
NF0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVd
LmlzVGVzdCgpLCB0cnVlKTsKKworICAgICAgICAgICAgY29uc3Qgc2V0MCA9IHJlcXVlc3RzWzBd
LmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVlc3RzWzFdLmNvbW1p
dFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmNvbW1pdFNldCgp
LCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS5jb21taXRTZXQo
KSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uY29tbWl0U2V0
KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzVdLmNvbW1pdFNl
dCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5zb3J0
QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDAucmVwb3NpdG9yaWVzKCkpLCBbanNjLCBv
d25lZEpTQywgd2Via2l0LCBtYWNvc10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChz
ZXQwLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVw
b3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDEucmVwb3NpdG9yaWVz
KCkpLCBbanNjLCBvd25lZEpTQywgd2Via2l0LCBtYWNvc10pOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9z
aXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRj
aEZvclJlcG9zaXRvcnkod2Via2l0KSwgdXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlc0J1
aWxkRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHRydWUpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpLCAn
MTVBMjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkobWFjb3MpLCBzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcyksIHNldDEu
Y29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
dDAucGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVs
bCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25lclJldmlzaW9uRm9yUmVwb3Np
dG9yeShtYWNvcyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWly
ZXNCdWlsZEZvclJlcG9zaXRvcnkobWFjb3MpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVk
SlNDKSwgJ293bmVkLWpzYy02MTYxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5y
ZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTkxOTEnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KG93
bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5vd25lclJldmlz
aW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQxLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgJzE5Mjcz
NicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9z
aXRvcnkob3duZWRKU0MpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJl
cXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgdHJ1ZSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnanNjLTYxNjEn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShq
c2MpLCAnanNjLTkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9y
UmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnBh
dGNoRm9yUmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChz
ZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9y
eShqc2MpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1
aWxkRm9yUmVwb3NpdG9yeShqc2MpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQoIXNldDAu
ZXF1YWxzKHNldDEpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIG5v
dCBjcmVhdGUgYSBidWlsZCByZXF1ZXN0IHRvIGJ1aWxkIGEgcGF0Y2ggd2hlbiB0aGUgY29tbWl0
IHNldCBkb2VzIG5vdCBoYXZlIGEgcGF0Y2gnLCAoKSA9PiB7CiAgICAgICAgIGxldCB0YXNrSWQ7
CiAgICAgICAgIGxldCB3ZWJraXQ7CkBAIC03MTksNyArMTA1NCw2IEBAIGRlc2NyaWJlKCcvcHJp
dmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGxl
dCB0YXNrSWQ7CiAgICAgICAgIGxldCB3ZWJraXQ7CiAgICAgICAgIGxldCBtYWNvczsKLSAgICAg
ICAgbGV0IGluc2VydGVkR3JvdXBJZDsKICAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKICAgICAg
ICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJykudGhlbigo
aWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHdlYmtpdCA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnV2ViS2l0JylbMF07CkBAIC03MzEsNyArMTA2NSw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBjb25z
dCByYXdGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOwogICAgICAgICAgICAgdXBsb2Fk
ZWRGaWxlID0gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbihyYXdGaWxlLmlkLCByYXdGaWxl
KTsKICAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0JywgcGF0
Y2g6IHVwbG9hZGVkRmlsZS5pZCgpfX0sCi0gICAgICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06
IHtyZXZpc2lvbjogJzE5MTYyMid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9
fV07CisgICAgICAgICAgICAgICAge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MjczNid9
LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4NCd9fV07CiAgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTog
J3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7
CiAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hv
dWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBsb2FkLWZpbGUtdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwbG9h
ZC1maWxlLXRlc3RzLmpzCmluZGV4IDJjMTEyMTg1OWUwYmYyYmRkOWUxMDgzMjc0YTNhMjc1ZTgx
NWMwNDAuLjFiOTAyZmFkNjFmZjEwY2ZhYmY0YzIxN2FiZDgwNmRkNTMyNzkxMjEgMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGkt
dXBsb2FkLWZpbGUtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGxvYWQtZmlsZS10ZXN0cy5qcwpAQCAtMjEyLDggKzIx
Miw4IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgZmls
ZUIgPSByZXN1bHQudXBsb2FkZWRGaWxlOwogICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKLSAgICAgICAgICAgICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9zZXRfaXRlbXMgU0VU
IGNvbW1pdHNldF9wYXRjaF9maWxlID0gJDEgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQg
Y29tbWl0c2V0X2NvbW1pdCA9IDg3ODMyJywgW2ZpbGVBLmlkXSksCi0gICAgICAgICAgICAgICAg
ZGIucXVlcnkoJ1VQREFURSBjb21taXRfc2V0X2l0ZW1zIFNFVCBjb21taXRzZXRfcGF0Y2hfZmls
ZSA9ICQxIFdIRVJFIGNvbW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA5
NjMzNicsIFtmaWxlQi5pZF0pCisgICAgICAgICAgICAgICAgZGIucXVlcnkoJ1VQREFURSBjb21t
aXRfc2V0X2l0ZW1zIFNFVCAoY29tbWl0c2V0X3BhdGNoX2ZpbGUsIGNvbW1pdHNldF9yZXF1aXJl
c19idWlsZCkgPSAoJDEsIFRSVUUpIFdIRVJFIGNvbW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1p
dHNldF9jb21taXQgPSA4NzgzMicsIFtmaWxlQS5pZF0pLAorICAgICAgICAgICAgICAgIGRiLnF1
ZXJ5KCdVUERBVEUgY29tbWl0X3NldF9pdGVtcyBTRVQgKGNvbW1pdHNldF9wYXRjaF9maWxlLCBj
b21taXRzZXRfcmVxdWlyZXNfYnVpbGQpID0gKCQxLCBUUlVFKSBXSEVSRSBjb21taXRzZXRfc2V0
ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gOTYzMzYnLCBbZmlsZUIuaWRdKQogICAgICAg
ICAgICAgXSk7CiAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
bXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGVPZlNpemVJbk1CKCdvdGhlci5kYXQnLCBsaW1p
dEluTUIsICdjJyk7CkBAIC0yNDIsOCArMjQyLDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFw
aS91cGxvYWQtZmlsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9
PiB7CiAgICAgICAgICAgICBjb25zdCBmaWxlQiA9IHJlc3VsdC51cGxvYWRlZEZpbGU7CiAgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdV
UERBVEUgY29tbWl0X3NldF9pdGVtcyBTRVQgY29tbWl0c2V0X3BhdGNoX2ZpbGUgPSAkMSBXSEVS
RSBjb21taXRzZXRfc2V0ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gODc4MzInLCBbZmls
ZUEuaWRdKSwKLSAgICAgICAgICAgICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9zZXRfaXRl
bXMgU0VUIGNvbW1pdHNldF9wYXRjaF9maWxlID0gJDEgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQw
MiBBTkQgY29tbWl0c2V0X2NvbW1pdCA9IDk2MzM2JywgW2ZpbGVCLmlkXSkKKyAgICAgICAgICAg
ICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0
Y2hfZmlsZSwgY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkKSA9ICgkMSwgVFJVRSkgV0hFUkUgY29t
bWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0X2NvbW1pdCA9IDg3ODMyJywgW2ZpbGVBLmlk
XSksCisgICAgICAgICAgICAgICAgZGIucXVlcnkoJ1VQREFURSBjb21taXRfc2V0X2l0ZW1zIFNF
VCAoY29tbWl0c2V0X3BhdGNoX2ZpbGUsIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCkgPSAoJDEs
IFRSVUUpIFdIRVJFIGNvbW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA5
NjMzNicsIFtmaWxlQi5pZF0pCiAgICAgICAgICAgICBdKTsKICAgICAgICAgfSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZU9m
U2l6ZUluTUIoJ2Fub3RoZXIuZGF0JywgbGltaXRJbk1CLCAnYycpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBsb2FkLWZpbGUnLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZp
bGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CiAgICAgICAgIH0p
LnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgZmlsZUIgPSByZXN1bHQudXBs
b2FkZWRGaWxlOwotICAgICAgICAgICAgcmV0dXJuIGRiLnF1ZXJ5KGBVUERBVEUgY29tbWl0X3Nl
dF9pdGVtcyBTRVQgKGNvbW1pdHNldF9wYXRjaF9maWxlLCBjb21taXRzZXRfcm9vdF9maWxlKSA9
ICgkMSwgJDIpCisgICAgICAgICAgICByZXR1cm4gZGIucXVlcnkoYFVQREFURSBjb21taXRfc2V0
X2l0ZW1zIFNFVCAoY29tbWl0c2V0X3BhdGNoX2ZpbGUsIGNvbW1pdHNldF9yb290X2ZpbGUsIGNv
bW1pdHNldF9yZXF1aXJlc19idWlsZCkgPSAoJDEsICQyLCBUUlVFKQogICAgICAgICAgICAgICAg
IFdIRVJFIGNvbW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA4NzgzMmAs
IFtmaWxlQS5pZCwgZmlsZUIuaWRdKTsKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZU9mU2l6ZUluTUIoJ2Fu
b3RoZXIuZGF0JywgbGltaXRJbk1CLCAnYycpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4
IGUxYTY5YWYzYTk3MDdmODFiZmJkNDQxOGM5ZTdiNjM3ZmI2Zjg5MDMuLjczYjdiMzc3MTI4YTk3
MzQyNDQ1N2M5NTA4YWFjNWM3MWYyY2M5OWEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAg
LTEzLDYgKzEzLDggQEAgTW9ja0RhdGEgPSB7CiAgICAgb3RoZXJQbGF0Zm9ybUlkKCkgeyByZXR1
cm4gMTAxOyB9LAogICAgIG1hY29zUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gOTsgfSwKICAgICB3
ZWJraXRSZXBvc2l0b3J5SWQoKSB7IHJldHVybiAxMTsgfSwKKyAgICBvd25lZEpTQ1JlcG9zaXRv
cnlJZCgpIHsgcmV0dXJuIDIxMzsgfSwKKyAgICBqc2NSZXBvc2l0b3J5SWQoKSB7IHJldHVybiAy
MjI7IH0sCiAgICAgZ2l0V2Via2l0UmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gMTExOyB9LAogICAg
IHNoYXJlZFJlcG9zaXRvcnlJZCgpIHsgcmV0dXJuIDE0OyB9LAogICAgIGFkZE1vY2tDb25maWd1
cmF0aW9uOiBmdW5jdGlvbiAoZGIpCkBAIC0yMyw2ICsyNSw4IEBAIE1vY2tEYXRhID0gewogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHRoaXMubWFjb3NSZXBvc2l0
b3J5SWQoKSwgbmFtZTogJ21hY09TJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7aWQ6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCksIG5hbWU6ICdXZWJLaXQnfSks
CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy5zaGFyZWRS
ZXBvc2l0b3J5SWQoKSwgbmFtZTogJ1NoYXJlZCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgn
cmVwb3NpdG9yaWVzJywge2lkOiB0aGlzLm93bmVkSlNDUmVwb3NpdG9yeUlkKCksIG93bmVyOiB0
aGlzLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBuYW1lOiAnSmF2YVNjcmlwdENvcmUnfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy5qc2NSZXBvc2l0b3J5
SWQoKSwgbmFtZTogJ0phdmFTY3JpcHRDb3JlJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0
cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogMjAwMSwgbmFtZTogJ3dlYmtpdC1z
dm4nLCB0cmlnZ2VyYWJsZTogMTAwMH0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2Vy
YWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy5tYWNvc1JlcG9zaXRvcnlJZCgp
LCBncm91cDogMjAwMX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBv
c2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgZ3JvdXA6
IDIwMDF9KSwKQEAgLTMxLDYgKzM1LDEyIEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIu
aW5zZXJ0KCdjb21taXRzJywge2lkOiA5NjMzNiwgcmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBv
c2l0b3J5SWQoKSwgcmV2aXNpb246ICcxOTI3MzYnLCB0aW1lOiAobmV3IERhdGUoMTQ0ODIyNTMy
NTY1MCkpLnRvSVNPU3RyaW5nKCl9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycs
IHtpZDogMTExMTY4LCByZXBvc2l0b3J5OiB0aGlzLnNoYXJlZFJlcG9zaXRvcnlJZCgpLCByZXZp
c2lvbjogJzgwMjI5JywgdGltZTogJzIwMTYtMDMtMDJUMjM6MTc6NTQuM1onfSksCiAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDExMTE2OSwgcmVwb3NpdG9yeTogdGhpcy5z
aGFyZWRSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICc4MDIzMCcsIHRpbWU6ICcyMDE2LTAzLTAy
VDIzOjM3OjE4LjBaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiAx
MTc5NywgcmVwb3NpdG9yeTogdGhpcy5qc2NSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICdqc2Mt
NjE2MScsIHRpbWU6ICcyMDE2LTAzLTAyVDIzOjE5OjU1LjNaJ30pLAorICAgICAgICAgICAgZGIu
aW5zZXJ0KCdjb21taXRzJywge2lkOiAxMjAxNywgcmVwb3NpdG9yeTogdGhpcy5qc2NSZXBvc2l0
b3J5SWQoKSwgcmV2aXNpb246ICdqc2MtOTE5MScsIHRpbWU6ICcyMDE2LTA1LTAyVDIzOjEzOjU3
LjFaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiAxNzk3LCByZXBv
c2l0b3J5OiB0aGlzLm93bmVkSlNDUmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnb3duZWQtanNj
LTYxNjEnLCB0aW1lOiAnMjAxNi0wMy0wMlQyMzoxOTo1NS4zWid9KSwKKyAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHtpZDogMjAxNywgcmVwb3NpdG9yeTogdGhpcy5vd25lZEpTQ1Jl
cG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywgdGltZTogJzIwMTYtMDUt
MDJUMjM6MTM6NTcuMVonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9vd25lcnNo
aXBzJywge293bmVyOiA5MzExNiwgb3duZWQ6IDE3OTd9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0X293bmVyc2hpcHMnLCB7b3duZXI6IDk2MzM2LCBvd25lZDogMjAxN30pLAogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZHMnLCB7aWQ6IDkwMSwgbnVtYmVyOiAnOTAxJywgdGlt
ZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Bs
YXRmb3JtcycsIHtpZDogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgbmFtZTogJ3NvbWUgcGxh
dGZvcm0nfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogTW9ja0Rh
dGEub3RoZXJQbGF0Zm9ybUlkKCksIG5hbWU6ICdvdGhlciBwbGF0Zm9ybSd9KSwKQEAgLTYzLDYg
KzczLDE1IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1
ZXN0cycsIHtpZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAw
LCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6
IDYwMCwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwMn0pLAogICAgICAgICBdKTsKICAgICB9LAor
ICAgIGFkZEFub3RoZXJUcmlnZ2VyYWJsZShkYikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDIz
NDUsIG5hbWU6ICdidWlsZC13ZWJraXQtanNjJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0
cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsIHtpZDogNDAwMiwgbmFtZTogJ21hYy1zdm53
ZWJraXQtanNjJywgdHJpZ2dlcmFibGU6IDIzNDV9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgn
dHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHRoaXMubWFjb3NSZXBvc2l0
b3J5SWQoKSwgZ3JvdXA6IDQwMDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFi
bGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCks
IGdyb3VwOiA0MDAyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9z
aXRvcmllcycsIHtyZXBvc2l0b3J5OiB0aGlzLmpzY1JlcG9zaXRvcnlJZCgpLCBncm91cDogNDAw
Mn0pLAorICAgICAgICBdKTsKKyAgICB9LAogICAgIGFkZEVtcHR5VHJpZ2dlcmFibGUoZGIpCiAg
ICAgewogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwpAQCAtMTE0LDYgKzEzMywzMiBAQCBN
b2NrRGF0YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6
IDcxMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91
cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9
KSwKICAgICAgICAgXSk7CiAgICAgfSwKKyAgICBhZGRUZXN0R3JvdXBXaXRoT3duZWRDb21taXRz
KGRiLCBzdGF0dXNMaXN0KQorICAgIHsKKworICAgICAgICBpZiAoIXN0YXR1c0xpc3QpCisgICAg
ICAgICAgICBzdGF0dXNMaXN0ID0gWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdw
ZW5kaW5nJ107CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICB0aGlz
LmFkZE1vY2tDb25maWd1cmF0aW9uKGRiKSwKKyAgICAgICAgICAgIHRoaXMuYWRkQW5vdGhlclRy
aWdnZXJhYmxlKGRiKSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7
aWQ6IDEwODAsIHBsYXRmb3JtOiA2NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2sgd2l0
aCBjb21wb25lbnQgdGVzdCcsCisgICAgICAgICAgICAgICAgc3RhcnRfcnVuOiA4MDEsIHN0YXJ0
X3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWicsCisgICAgICAgICAgICAgICAgZW5k
X3J1bjogODAxLCBlbmRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJ30pLAorICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogOTAwLCB0YXNr
OiAxMDgwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwIHdpdGggY29tcG9uZW50IHRlc3QnfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRzJywge2lkOiA0MDN9KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwMywgY29tbWl0OiA4Nzgz
Mn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDAz
LCBjb21taXQ6IDkzMTE2fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRl
bXMnLCB7c2V0OiA0MDMsIGNvbW1pdDogMTc5NywgY29tbWl0X293bmVyOiA5MzExNiwgcmVxdWly
ZXNfYnVpbGQ6IHRydWV9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7
aWQ6IDQwNH0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3Nl
dDogNDA0LCBjb21taXQ6IDg3ODMyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9z
ZXRfaXRlbXMnLCB7c2V0OiA0MDQsIGNvbW1pdDogOTYzMzZ9KSwKKyAgICAgICAgICAgIGRiLmlu
c2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwNCwgY29tbWl0OiAyMDE3LCBjb21taXRf
b3duZXI6IDk2MzM2LCByZXF1aXJlc19idWlsZDogdHJ1ZX0pLAorICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA0LCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRy
aWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRl
c3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwM30pLAorICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA1LCBzdGF0dXM6IHN0YXR1
c0xpc3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0
Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQw
NH0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzA2LCBz
dGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3Vw
OiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwgb3JkZXI6IDIsIGNv
bW1pdF9zZXQ6IDQwM30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycs
IHtpZDogNzA3LCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBv
c2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDkwMCwg
b3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwNH0pLAorICAgICAgICBdKTsKKyAgICB9LAogICAgIG1v
Y2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyOiBmdW5jdGlvbiAoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321067</attachid>
            <date>2017-09-17 19:30:32 -0700</date>
            <delta_ts>2017-09-17 21:09:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175978-20170917193031.patch</filename>
            <type>text/plain</type>
            <size>75597</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBmNDhjZTYzZTE4MjI2NTk4MDMzMDExOGIxYmZiMzdiYjcwNDg2MzlkLi5jOWIwYzZmN2Ni
MGY4ZTg5ZGVjY2ZkYjYwMWZmYTFiOWUyMGYwNTRmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxNy0wOS0xMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZSBEYXNoYm9hcmQgYmFja2VuZCBzaG91
bGQgc3VwcG9ydCBBL0IgdGVzdGluZyBmb3Igb3duZWQgY29tcG9uZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYWNrZW5kIGNoYW5nZSBm
b3IgUGVyZm9ybWFuY2UgRGFzaGJvYXJkIHRvIHN1cHBvcnQgQS9CIHRlc3RpbmcgZm9yIG93bmVk
IGNvbXBvbmVudHMuCisgICAgICAgIEFkZGVkICdjb21taXRzZXRfY29tbWl0X293bmVyJyBhbmQg
J2NvbW1pdHNldF9yZXF1aXJlc19idWlsZCcgY29sdW1ucyB0byAnY29tbWl0X3NldF9pdGVtcycg
dGFibGUuCisgICAgICAgICAgICAnY29tbWl0c2V0X2NvbW1pdF9vd25lcicgcmVmZXJycyB0byBk
ZXRlcm1pbmUgYSBjb21taXQgd2l0aCBvd25lci4KKyAgICAgICAgICAgICdjb21taXRzZXRfcmVx
dWlyZXNfYnVpbGQnIGluZGljYXRlcyB3aGV0aGVyIGEgcm9vdCBidWlsZCBpcyByZXF1aXJlZC4K
KyAgICAgICAgICAgIFRoaXMgd2lsbCBiZSBzZXQgdHJ1ZSB3aGVuZXZlciBjb21taXRfc2V0X2l0
ZW0gc3BlY2lmaWVzIGEgcGF0Y2ggZmlsZSwKKyAgICAgICAgICAgICAgICBvciBjb21taXRfc2V0
X2l0ZW0gaXMgY29tbWl0IHdpdGggb3duZXIgY29tbWl0LAorICAgICAgICAgICAgICAgIG9yIGFu
eSBvdGhlciBjb21taXQgZnJvbSBzYW1lIHJlcG9zaXRvcnkgYW5kIGluIHNhbWUgYnVpbGQtcmVx
dWVzdCBncm91cCByZXF1aXJlcyBidWlsZC4KKyAgICAgICAgICAgIFNRTCBmb3IgdXBkYXRpbmcg
ZXhpc3RpbmcgZGF0YWJhc2U6CisgICAgICAgICAgICAgICAgJ0JFR0lOOworICAgICAgICAgICAg
ICAgICAgICBBTFRFUiBUQUJMRSBjb21taXRfc2V0X2l0ZW1zIEFERCBDT0xVTU4gY29tbWl0c2V0
X2NvbW1pdF9vd25lciBpbnRlZ2VyIFJFRkVSRU5DRVMgY29tbWl0cyBERUZBVUxUIE5VTEwsIEFE
RCBDT0xVTU4gY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkIGJvb2xlYW4gREVGQVVMVCBGQUxTRTsK
KyAgICAgICAgICAgICAgICAgICAgVVBEQVRFIFRBQkxFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIGNv
bW1pdHNldF9yZXF1aXJlc19idWlsZCA9IFRSVUUgV0hFUkUgY29tbWl0c2V0X3BhdGNoX2ZpbGUg
SVMgTk9UIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIEFMVEVSIFRBQkxFIGNvbW1pdF9zZXRf
aXRlbXMgQUREIGNvbW1pdHNldF9pdGVtX3dpdGhfcGF0Y2hfbXVzdF9yZXF1aXJlc19idWlsZCBD
SEVDSyAoY29tbWl0c2V0X3BhdGNoX2ZpbGUgSVMgTlVMTCBPUiBjb21taXRzZXRfcmVxdWlyZXNf
YnVpbGQgPSBUUlVFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFERCBDT05TVFJBSU5UIGNv
bW1pdHNldF9pdGVtX3dpdGhfb3duZWRfY29tbWl0X211c3RfcmVxdWlyZXNfYnVpbGQgQ0hFQ0sg
KGNvbW1pdHNldF9jb21taXRfb3duZXIgSVMgTlVMTCBPUiBjb21taXRzZXRfcmVxdWlyZXNfYnVp
bGQgPSBUUlVFKTsKKyAgICAgICAgICAgICAgICBFTkQ7JworCisgICAgICAgICogaW5pdC1kYXRh
YmFzZS5zcWw6IFVwZGF0ZWQgJ2NvbW1pdF9zZXRfaXRlbXMnIHRhYmxlLgorICAgICAgICAqIHB1
YmxpYy9hZG1pbi90cmlnZ2VyYWJsZXMucGhwOiBPbmx5IHRvcCBsZXZlbCByZXBvc2l0b3J5IHNo
b3VsZCBzaG93IG9uIHRyaWdnZXJhYmxlcyBwYWdlLgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRl
L2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwOiBBZGRlZCAnY29tbWl0T3duZXInIGFuZCAncmVx
dWlyZUJ1aWxkJyB0byAncmV2aXNpb25faXRlbXMnLiBBZGRlZCAnY29tbWl0T3duZXInIGZpZWxk
IHRvIGEgY29tbWl0LgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2RiLnBocDogU2hvdWxkIGJl
IGFibGUgdG8gaW5zZXJ0IGJvb2xlYW4gdmFsdWUgdG8gZGF0YWJhc2Ugd2l0aG91dCBleHBsaWN0
ZWQgY29udmVydCB0byAndCcgb3IgJ2YnLgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cC5waHA6CisgICAgICAgICAgICBBZGRlZCBsb2dpYyB0byBwcm9j
ZXNzICdjb21taXRPd25lcicgYW5kICdyZXF1aXJlQnVpbGQnIGluICdjb21taXRfc2V0X2l0ZW1z
Jy4KKyAgICAgICAgICAgIFJlbW92ZWQgYSAnRklYTUUnIHRoYXQgaGFzIGJlZW4gYWRkcmVzc2Vk
IGJlZm9yZSB0aGlzIGNvbW1pdC4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJl
cXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QuY29uc3RydWN0QnVpbGRSZXF1ZXN0c0Zy
b21EYXRhKTogU2V0ICdjb21taXRPd25lcicgZmllbGQgZm9yIGEgY29tbWl0IHNldCBpdGVtLgor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qczoKKyAgICAgICAgKENvbW1p
dFNldCk6IEFkZGVkIG1hcHMgZm9yIHJlcG9zaXRvcnkgdG8gY29tbWl0IG93bmVyIGFuZCB3aGV0
aGVyIGEgcmVwb3NpdG9yeSByZXF1aXJlcyBidWlsZHMuCisgICAgICAgIChDb21taXRTZXQucHJv
dG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLl91
cGRhdGVGcm9tT2JqZWN0KToKKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUub3duZXJSZXZp
c2lvbkZvclJlcG9zaXRvcnkpOiBSZXR1cm5zIG93bmVyIHJldmlzaW9uIGZvciBhIGdpdmVuIHJl
cG9zaXRvcnkgaW4gY3VycmVudCBjb21taXQgc2V0LgorICAgICAgICAoQ29tbWl0U2V0LnByb3Rv
dHlwZS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSk6IFJldHVybnMgd2hldGhlciBhIHJlcG9z
aXRvcnkgbmVlZCB0byBidWlsZC4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuZXF1YWxz
KTogRXF1YWxpdHkgY2hlY2sgc2hvdWxkIGluY2x1ZGUgMiBuZXcgbWFwcy4KKyAgICAgICAgKEN1
c3RvbUNvbW1pdFNldCk6IEN1c3RvbUNvbW1pdFNldCBzaG91bGQgYmUgYWJsZSB0byBzdG9yZSBj
b21taXQgd2l0aCBhbiBvd25lciBjb21taXQuCisgICAgICAgIChDdXN0b21Db21taXRTZXQucHJv
dG90eXBlLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSk6IEFkZGVkIGVhY2ggcmV2aXNpb24gbGlz
dCBlbnRyeSBzaG91bGQgaGF2ZSAnb3duZXJSZXZpc2lvbicobnVsbCBieSBkZWZhdWx0KS4KKyAg
ICAgICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUuZXF1YWxzKTogRXF1YWxpdHkgY2hlY2sg
c2hvdWxkIGFsc28gY2hlY2sgdGhlIGVxdWFsaXR5IG9mICdvd25lclJldmlzaW9uJy4KKyAgICAg
ICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkp
OiBSZXR1cm5zIGEgb3duZXIgcmV2aXNpb24gZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeS4KKyAgICAg
ICAgKiBwdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanM6CisgICAgICAgIChSZXBvc2l0b3J5
LnByb3RvdHlwZS5maW5kT3duZWRSZXBvc2l0b3J5QnlOYW1lKTogUmV0dXJuIGFuIHJlcG9zaXRv
cnkgb3duZWQgYnkgY3VycmVudCByZXBvc2l0b3J5IHdpdGggYSBnaXZlbiBuYW1lLgorICAgICAg
ICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczogQWRkZWQgJ293bmVyUmV2aXNpb24n
IGZpZWxkIGluIGVhY2ggZW50cnkgb2YgcmV2aXNpb25TZXQuCisgICAgICAgICogc2VydmVyLXRl
c3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogQWRkZWQgdGVzdHMuCisgICAgICAgICog
c2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzOiBB
ZGRlZCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBsb2Fk
LWZpbGUtdGVzdHMuanM6IEZpeCB1bml0IHRlc3RzIGJ5IHNldHRpbmcncmVxdWlyZXNfYnVpbGQn
IGZpZWxkIHRvIGJlIHRydWUgd2hlbiB1cGRhdGluZyBjb21taXRfc2V0X2l0ZW0gd2hpY2ggaGFz
IGEgcGF0Y2guLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpz
OiBBZGRlZCBtb2NrIGJ1aWxkIHJlcXVlc3RzIHdpdGggY29tbWl0IHNldHMgY29udGFpbiBvd25l
ZCBjb21taXRzLgorICAgICAgICAoTW9ja0RhdGEuanNjUmVwb3NpdG9yeUlkKTogUmV0dXJucyBp
ZCBmb3IgSmF2YVNjcmlwdHNDb3JlIHJlcG9zaXRvcnkuCisgICAgICAgIChNb2NrRGF0YS5hZGRN
b2NrQ29uZmlndXJhdGlvbik6IEFkZGVkIG1vY2sgSmF2YVNjcmlwdENvcmUgYW5kIG93bmVkIEph
dmFTY3JpcHRDb3JlIHJlcG9zaXRvcmllcyBhbmQgY29tbWl0cyBhc3NvY2lhdGVkIHdpdGggdGhl
bS4KKyAgICAgICAgKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKTogQWRkZWQgYSBKYXZh
U2NyaXB0Q29yZSByZXBvc2l0b3J5IHdpdGggV2ViS2l0IGFzIG93bmVyLgorICAgICAgICAoTW9j
a0RhdGEuYWRkTW9ja0NvbmZpZ3VyYXRpb24pOiBBZGRlZCBtb2NrIGRhdGEgZm9yIHRlc3QgY2Fz
ZXMgdGhvc2UgcmVxdWlyZSBhIGNvbW1pdCB3aXRoIGEgb3duZXIgY29tbWl0LgorICAgICAgICAo
TW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyk6IEFkZGVkIG1vY2sgZGF0YSBm
b3IgYW5hbHlzaXMgdGFza3MsIHRoZSBidWlsZCByZXF1aXJlcyBvZiB3aGljaCBjb250YWlucyBv
d25lZCBjb21taXRzLgorICAgICAgICAoTW9ja0RhdGEuc2V0IGFkZEFub3RoZXJUcmlnZ2VyYWJs
ZSk6IEFkZGVkIGFub3RoZXIgdHJpZ2dlcmFibGUgd2hpY2ggaGFzIG1hYywgd2Via2l0IGFuZCBq
YXZhc2NyaXB0IGNvcmUgcmVwb3NpdG9yaWVzIGFzIHRyaWdnZXJhYmxlIHJlcG9zaXRvcnkgZ3Jv
dXAuCisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkQW5vdGhlck1vY2tUZXN0R3JvdXApOiBBZGRl
ZCBhbm90aGVyIG1vY2sgdGVzdCBncm91cC4KKyAgICAgICAgKiB0b29scy9qcy92My1tb2RlbHMu
anM6IEltcG9ydCBDdXN0b21Db21taXRTZXQuCisgICAgICAgICogdW5pdC10ZXN0cy9yZXNvdXJj
ZXMvbW9jay12My1tb2RlbHMuanM6IEFkZGVkIGFuIG93bmVkIHdlYmtpdCByZXBvc2l0b3J5Lgor
ICAgICAgICAqIHVuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qczogQWRkZWQgdW5pdCB0ZXN0
cyBDdXN0b21Db21taXRTZXQuCisKIDIwMTctMDktMTUgIERld2VpIFpodSAgPGRld2VpX3podUBh
cHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIG5vdCBtYXJrIGEgcGxhdGZvcm0gYXMgbWlzc2lu
ZyBpbiBzdW1tYXJ5IHBhZ2UgaWYgYWxsIGV4cGVjdGluZyBtZXRyaWNzIGFyZSBleGx1Y2RlZC4K
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbCBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAppbmRleCBjMTQzNjky
MDliMGQ0ZTdhNjAwYWJlZWI0N2JlMGNiOGM2ZmQ1MjM3Li41Mjc4OGY3ODBmODU4MzU4NTc0M2Ew
MDZkZTllNTJmODAwMGJkZjA0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
aW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0
YWJhc2Uuc3FsCkBAIC0yODcsMTAgKzI4NywxNCBAQCBDUkVBVEUgVEFCTEUgY29tbWl0X3NldHMg
KAogQ1JFQVRFIFRBQkxFIGNvbW1pdF9zZXRfaXRlbXMgKAogICAgIGNvbW1pdHNldF9zZXQgaW50
ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdF9zZXRzIE5PVCBOVUxMLAogICAgIGNvbW1pdHNldF9jb21t
aXQgaW50ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdHMsCisgICAgY29tbWl0c2V0X2NvbW1pdF9vd25l
ciBpbnRlZ2VyIFJFRkVSRU5DRVMgY29tbWl0cyBERUZBVUxUIE5VTEwsCiAgICAgY29tbWl0c2V0
X3BhdGNoX2ZpbGUgaW50ZWdlciBSRUZFUkVOQ0VTIHVwbG9hZGVkX2ZpbGVzLAogICAgIGNvbW1p
dHNldF9yb290X2ZpbGUgaW50ZWdlciBSRUZFUkVOQ0VTIHVwbG9hZGVkX2ZpbGVzLAorICAgIGNv
bW1pdHNldF9yZXF1aXJlc19idWlsZCBib29sZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RS
QUlOVCBjb21taXRzZXRfbXVzdF9oYXZlX2NvbW1pdF9vcl9yb290IENIRUNLIChjb21taXRzZXRf
Y29tbWl0IElTIE5PVCBOVUxMIE9SIGNvbW1pdHNldF9yb290X2ZpbGUgSVMgTk9UIE5VTEwpLAot
ICAgIENPTlNUUkFJTlQgY29tbWl0c2V0X3dpdGhfcGF0Y2hfbXVzdF9oYXZlX2NvbW1pdCBDSEVD
SyAoY29tbWl0c2V0X3BhdGNoX2ZpbGUgSVMgTlVMTCBPUiBjb21taXRzZXRfY29tbWl0IElTIE5P
VCBOVUxMKSk7CisgICAgQ09OU1RSQUlOVCBjb21taXRzZXRfd2l0aF9wYXRjaF9tdXN0X2hhdmVf
Y29tbWl0IENIRUNLIChjb21taXRzZXRfcGF0Y2hfZmlsZSBJUyBOVUxMIE9SIGNvbW1pdHNldF9j
b21taXQgSVMgTk9UIE5VTEwpLAorICAgIENPTlNUUkFJTlQgY29tbWl0c2V0X2l0ZW1fd2l0aF9w
YXRjaF9tdXN0X3JlcXVpcmVzX2J1aWxkIENIRUNLIChjb21taXRzZXRfcGF0Y2hfZmlsZSBJUyBO
VUxMIE9SIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCA9IFRSVUUpLAorICAgIENPTlNUUkFJTlQg
Y29tbWl0c2V0X2l0ZW1fd2l0aF9vd25lZF9jb21taXRfbXVzdF9yZXF1aXJlc19idWlsZCBDSEVD
SyAoY29tbWl0c2V0X2NvbW1pdF9vd25lciBJUyBOVUxMIE9SIGNvbW1pdHNldF9yZXF1aXJlc19i
dWlsZCA9IFRSVUUpKTsKIAogQ1JFQVRFIFRZUEUgYnVpbGRfcmVxdWVzdF9zdGF0dXNfdHlwZSBh
cyBFTlVNICgncGVuZGluZycsICdzY2hlZHVsZWQnLCAncnVubmluZycsICdmYWlsZWQnLCAnY29t
cGxldGVkJywgJ2NhbmNlbGVkJyk7CiBDUkVBVEUgVEFCTEUgYnVpbGRfcmVxdWVzdHMgKApkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJs
ZXMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJs
ZXMucGhwCmluZGV4IDIzNGJmM2Q1ODc2OGNjNWY4M2MzZTc3NzE1NTJmNTY0ZmE3MDg5YTkuLmEw
MTgxZjc2NmM1NWYzMzc1ZDIzNjBiNTBiODE4ZTg2NWUzYTc2M2IgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYWRtaW4vdHJpZ2dlcmFibGVzLnBocAorKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5waHAKQEAg
LTc2LDcgKzc2LDcgQEAgaWYgKCRkYikgewogICAgICAgICB9CiAgICAgfQogCi0gICAgJHJlcG9z
aXRvcnlfcm93cyA9ICRkYi0+ZmV0Y2hfdGFibGUoJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5
X25hbWUnKTsKKyAgICAkcmVwb3NpdG9yeV9yb3dzID0gJGRiLT5zZWxlY3Rfcm93cygncmVwb3Np
dG9yaWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnb3duZXInID0+IE5VTEwpLCAnbmFtZScpOwog
CiAgICAgJHBhZ2UgPSBuZXcgQWRtaW5pc3RyYXRpdmVQYWdlKCRkYiwgJ2J1aWxkX3RyaWdnZXJh
YmxlcycsICd0cmlnZ2VyYWJsZScsIGFycmF5KAogICAgICAgICAnbmFtZScgPT4gYXJyYXkoJ2Vk
aXRpbmdfbW9kZScgPT4gJ3N0cmluZycpLApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIu
cGhwCmluZGV4IDc2YTk2ZDQwM2JkNTZkNTIzZGVjYzY5OTlkZGNkMzY4NzUxYWYxMTkuLmVkOTk5
YzQ1M2ZjNjE1OThjMjljMDFmYTU4ODY5NjY1MDU0NTYxYjEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBo
cAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVx
dWVzdHMtZmV0Y2hlci5waHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0
c0ZldGNoZXIgewogICAgICAgICAgICAgaWYgKCRyb290X2ZpbGVfaWQpCiAgICAgICAgICAgICAg
ICAgJHRoaXMtPmFkZF91cGxvYWRlZF9maWxlKCRyb290X2ZpbGVfaWQpOwogCi0gICAgICAgICAg
ICBhcnJheV9wdXNoKCRyZXZpc2lvbl9pdGVtcywgYXJyYXkoJ2NvbW1pdCcgPT4gJHJvd1snY29t
bWl0X2lkJ10sICdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQsICdyb290RmlsZScgPT4gJHJvb3Rf
ZmlsZV9pZCkpOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkcmV2aXNpb25faXRlbXMsIGFycmF5
KAorICAgICAgICAgICAgICAgICdjb21taXQnID0+ICRyb3dbJ2NvbW1pdF9pZCddLAorICAgICAg
ICAgICAgICAgICdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQsCisgICAgICAgICAgICAgICAgJ3Jv
b3RGaWxlJyA9PiAkcm9vdF9maWxlX2lkLAorICAgICAgICAgICAgICAgICdjb21taXRPd25lcicg
PT4gJHJvd1snY29tbWl0c2V0X2NvbW1pdF9vd25lciddLAorICAgICAgICAgICAgICAgICdyZXF1
aXJlc0J1aWxkJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkcm93Wydjb21taXRzZXRfcmVxdWlyZXNf
YnVpbGQnXSkpKTsKIAogICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGNvbW1pdF9p
ZCwgJHRoaXMtPmNvbW1pdHNfYnlfaWQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTMwLDYgKzEzNSw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdHNGZXRjaGVyIHsKICAgICAgICAgICAg
IGFycmF5X3B1c2goJHRoaXMtPmNvbW1pdHMsIGFycmF5KAogICAgICAgICAgICAgICAgICdpZCcg
PT4gJGNvbW1pdF9pZCwKICAgICAgICAgICAgICAgICAncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRv
cnlfaWQsCisgICAgICAgICAgICAgICAgJ2NvbW1pdE93bmVyJyA9PiAkcm93Wydjb21taXRzZXRf
Y29tbWl0X293bmVyJ10sCiAgICAgICAgICAgICAgICAgJ3JldmlzaW9uJyA9PiAkcmV2aXNpb24s
CiAgICAgICAgICAgICAgICAgJ3RpbWUnID0+IERhdGFiYXNlOjp0b19qc190aW1lKCRjb21taXRf
dGltZSkpKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9p
bmNsdWRlL2RiLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9k
Yi5waHAKaW5kZXggMjIxMmYwZmVmNmZmYjI2ZDkwODVhNTI4ZTEyNWE3NTBkZTlkOWMxYi4uZWQw
ZTFkOGNmNzZmMTdkMmVmNmQ5MmZhYTdiYzJjZTBmZjcwMTQyMSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAorKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwCkBAIC0xMTgsNiArMTE4LDggQEAg
Y2xhc3MgRGF0YWJhc2UKICAgICAgICAgICAgIGFzc2VydChjdHlwZV9hbG51bV91bmRlcnNjb3Jl
KCRuYW1lKSk7CiAgICAgICAgICAgICBhcnJheV9wdXNoKCRjb2x1bW5fbmFtZXMsICRuYW1lKTsK
ICAgICAgICAgICAgIGFycmF5X3B1c2goJHBsYWNlaG9sZGVycywgJyQnIC4gJGkpOworICAgICAg
ICAgICAgaWYgKGlzX2Jvb2woJGN1cnJlbnRfdmFsdWUpKQorICAgICAgICAgICAgICAgICRjdXJy
ZW50X3ZhbHVlID0gJHRoaXMtPnRvX2RhdGFiYXNlX2Jvb2xlYW4oJGN1cnJlbnRfdmFsdWUpOwog
ICAgICAgICAgICAgYXJyYXlfcHVzaCgkdmFsdWVzLCAkY3VycmVudF92YWx1ZSk7CiAgICAgICAg
ICAgICAkaSsrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAu
cGhwCmluZGV4IGIxNTExMThmNmYxMjBlZmE0MDA4OWVjYjRmNDY5M2VhMjZkMDUxMjEuLmJmMTcz
NmRhYTFjZGRjYTEwMzEyYTkxNTVlYTI4MWIyMzlmZGE4OGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAu
cGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAucGhwCkBAIC01Miw3ICs1Miw2IEBAIGZ1bmN0aW9uIG1haW4oKQog
ICAgICAgICBpZiAoJGR1cGxpY2F0ZV90ZXN0X2dyb3VwKQogICAgICAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdEdXBsaWNhdGVUZXN0R3JvdXBOYW1lJywgYXJyYXkoJ3Rhc2snID0+ICR0YXNrX2lk
LCAndGVzdEdyb3VwJyA9PiAkZHVwbGljYXRlX3Rlc3RfZ3JvdXBbJ3Rlc3Rncm91cF9pZCddKSk7
CiAKLSAgICAgICAgLy8gRklYTUU6IEFkZCBhIGNoZWNrIGZvciBkdXBsaWNhdGUgdGVzdCBncm91
cCBuYW1lLgogICAgICAgICAkdHJpZ2dlcmFibGUgPSBmaW5kX3RyaWdnZXJhYmxlX2Zvcl90YXNr
KCRkYiwgJHRhc2tfaWQpOwogICAgICAgICBpZiAoJHRyaWdnZXJhYmxlKSB7CiAgICAgICAgICAg
ICAkdHJpZ2dlcmFibGVfaWQgPSAkdHJpZ2dlcmFibGVbJ2lkJ107CkBAIC05NCw3ICs5Myw5IEBA
IGZ1bmN0aW9uIG1haW4oKQogICAgICAgICAkbmVlZF90b19idWlsZCA9IEZBTFNFOwogICAgICAg
ICBmb3JlYWNoICgkY29tbWl0X2xpc3RbJ3NldCddIGFzICRjb21taXRfcm93KSB7CiAgICAgICAg
ICAgICAkY29tbWl0X3Jvd1snc2V0J10gPSAkY29tbWl0X3NldF9pZDsKLSAgICAgICAgICAgICRu
ZWVkX3RvX2J1aWxkID0gJG5lZWRfdG9fYnVpbGQgfHwgJGNvbW1pdF9yb3dbJ3BhdGNoX2ZpbGUn
XTsKKyAgICAgICAgICAgICRyZXF1aXJlc19idWlsZCA9ICAkY29tbWl0X3Jvd1sncmVxdWlyZXNf
YnVpbGQnXTsKKyAgICAgICAgICAgIGFzc2VydChpc19ib29sKCRyZXF1aXJlc19idWlsZCkpOwor
ICAgICAgICAgICAgJG5lZWRfdG9fYnVpbGQgPSAkbmVlZF90b19idWlsZCB8fCAkcmVxdWlyZXNf
YnVpbGQ7CiAgICAgICAgICAgICAkZGItPmluc2VydF9yb3coJ2NvbW1pdF9zZXRfaXRlbXMnLCAn
Y29tbWl0c2V0JywgJGNvbW1pdF9yb3csICdjb21taXQnKTsKICAgICAgICAgfQogICAgICAgICAk
cmVwb3NpdG9yeV9ncm91cCA9ICRjb21taXRfbGlzdFsncmVwb3NpdG9yeV9ncm91cCddOwpAQCAt
MTI5LDcgKzEzMCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgICAgICAgICAgICAgICdvcmRlcicg
PT4gJG9yZGVyLAogICAgICAgICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkY29uZmlnWydjb21t
aXRfc2V0J10pKTsKICAgICAgICAgICAgICRvcmRlcisrOwotICAgICAgICB9ICAgICAgICAKKyAg
ICAgICAgfQogICAgIH0KIAogICAgICRvcmRlciA9IDA7CkBAIC0xNTksNiArMTYwLDkgQEAgZnVu
Y3Rpb24gY29tbWl0X3NldHNfZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdnZXJhYmxlX2lk
LCAkcmV2aXNpb25fc2V0X2xpc3QKIAogICAgICRmaW5kZXIgPSBuZXcgUmVwb3NpdG9yeUdyb3Vw
RmluZGVyKCRkYiwgJHRyaWdnZXJhYmxlX2lkKTsKICAgICAkY29tbWl0X3NldF9saXN0ID0gYXJy
YXkoKTsKKyAgICAkcmVwb3NpdG9yeV9vd25lcl9saXN0ID0gYXJyYXkoKTsKKyAgICAkcmVwb3Np
dG9yaWVzX3JlcXVpcmVfYnVpbGQgPSBhcnJheSgpOworICAgICRjb21taXRfc2V0X2l0ZW1zX2J5
X3JlcG9zaXRvcnkgPSBhcnJheSgpOwogICAgIGZvcmVhY2ggKCRyZXZpc2lvbl9zZXRfbGlzdCBh
cyAkcmV2aXNpb25fc2V0KSB7CiAgICAgICAgIGlmICghY291bnQoJHJldmlzaW9uX3NldCkpCiAg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXZpc2lvblNldHMnLCBhcnJheSgn
cmV2aXNpb25TZXRzJyA9PiAkcmV2aXNpb25fc2V0X2xpc3QpKTsKQEAgLTE2NiwxMyArMTcwLDE1
IEBAIGZ1bmN0aW9uIGNvbW1pdF9zZXRzX2Zyb21fcmV2aXNpb25fc2V0cygkZGIsICR0cmlnZ2Vy
YWJsZV9pZCwgJHJldmlzaW9uX3NldF9saXN0CiAgICAgICAgICRjb21taXRfc2V0ID0gYXJyYXko
KTsKICAgICAgICAgJHJlcG9zaXRvcnlfbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICRyZXBvc2l0
b3J5X3dpdGhfcGF0Y2ggPSBhcnJheSgpOworICAgICAgICAkcmVxdWlyZWRfb3duZXJfY29tbWl0
cyA9IGFycmF5KCk7CisgICAgICAgICRvd25lcl9jb21taXRzX2luX3NldCA9IGFycmF5KCk7CiAg
ICAgICAgIGZvcmVhY2ggKCRyZXZpc2lvbl9zZXQgYXMgJHJlcG9zaXRvcnlfaWQgPT4gJGRhdGEp
IHsKICAgICAgICAgICAgIGlmICgkcmVwb3NpdG9yeV9pZCA9PSAnY3VzdG9tUm9vdHMnKSB7CiAg
ICAgICAgICAgICAgICAgJGZpbGVfaWRfbGlzdCA9ICRkYXRhOwogICAgICAgICAgICAgICAgIGZv
cmVhY2ggKCRmaWxlX2lkX2xpc3QgYXMgJGZpbGVfaWQpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc19udW1lcmljKCRmaWxlX2lkKSB8fCAhJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCd1cGxv
YWRlZF9maWxlcycsICdmaWxlJywgYXJyYXkoJ2lkJyA9PiAkZmlsZV9pZCkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkVXBsb2FkZWRGaWxlJywgYXJy
YXkoJ2ZpbGUnID0+ICRmaWxlX2lkKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2go
JGNvbW1pdF9zZXQsIGFycmF5KCdyb290X2ZpbGUnID0+ICRmaWxlX2lkLCAncGF0Y2hfZmlsZScg
PT4gTlVMTCkpOworICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0LCBh
cnJheSgncm9vdF9maWxlJyA9PiAkZmlsZV9pZCwgJ3BhdGNoX2ZpbGUnID0+IE5VTEwsICdyZXF1
aXJlc19idWlsZCcgPT4gRkFMU0UsICdjb21taXRfb3duZXInID0+IE5VTEwpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0x
ODcsMzMgKzE5Myw2NSBAQCBmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3JldmlzaW9uX3NldHMo
JGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdAogICAgICAgICAgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJldmlzaW9uJywgYXJyYXkoJ3JlcG9zaXRvcnknID0+
ICRyZXBvc2l0b3J5X2lkLCAnZGF0YScgPT4gJGRhdGEpKTsKICAgICAgICAgICAgICRjb21taXRf
aWQgPSBDb21taXRMb2dGZXRjaGVyOjpmaW5kX2NvbW1pdF9pZF9ieV9yZXZpc2lvbigkZGIsICRy
ZXBvc2l0b3J5X2lkLCAkcmV2aXNpb24pOwogICAgICAgICAgICAgaWYgKCRjb21taXRfaWQgPCAw
KQotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQW1iaWdpb3VzUmV2aXNpb24nLCBh
cnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHJldmlz
aW9uKSk7CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdBbWJpZ3VvdXNSZXZpc2lv
bicsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9PiAk
cmV2aXNpb24pKTsKICAgICAgICAgICAgIGlmICghJGNvbW1pdF9pZCkKICAgICAgICAgICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ1JldmlzaW9uTm90Rm91bmQnLCBhcnJheSgncmVwb3NpdG9yeScg
PT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHJldmlzaW9uKSk7CiAKKyAgICAgICAg
ICAgICRvd25lcl9yZXZpc2lvbiA9IGFycmF5X2dldCgkZGF0YSwgJ293bmVyUmV2aXNpb24nKTsK
ICAgICAgICAgICAgICRwYXRjaF9maWxlX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAncGF0Y2gnKTsK
ICAgICAgICAgICAgIGlmICgkcGF0Y2hfZmlsZV9pZCkgewogICAgICAgICAgICAgICAgIGlmICgh
aXNfbnVtZXJpYygkcGF0Y2hfZmlsZV9pZCkgfHwgISRkYi0+c2VsZWN0X2ZpcnN0X3JvdygndXBs
b2FkZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdpZCcgPT4gJHBhdGNoX2ZpbGVfaWQpKSkKICAg
ICAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUGF0Y2hGaWxlJywgYXJy
YXkoJ3BhdGNoJyA9PiAkcGF0Y2hfZmlsZV9pZCkpOwogICAgICAgICAgICAgICAgIGFycmF5X3B1
c2goJHJlcG9zaXRvcnlfd2l0aF9wYXRjaCwgJHJlcG9zaXRvcnlfaWQpOworICAgICAgICAgICAg
ICAgICRyZXBvc2l0b3JpZXNfcmVxdWlyZV9idWlsZFskcmVwb3NpdG9yeV9pZF0gPSAgVFJVRTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJy
YXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pZCwgJ3BhdGNoX2ZpbGUnID0+ICRwYXRjaF9maWxlX2lk
KSk7CisgICAgICAgICAgICAkcmVwb3NpdG9yeSA9IE5VTEw7CisgICAgICAgICAgICAkb3duZXJf
Y29tbWl0ID0gTlVMTDsKKyAgICAgICAgICAgIGlmICgkb3duZXJfcmV2aXNpb24pIHsKKyAgICAg
ICAgICAgICAgICAkcmVwb3NpdG9yeSA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygncmVwb3NpdG9y
aWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnaWQnID0+IGludHZhbCgkcmVwb3NpdG9yeV9pZCkp
KTsKKyAgICAgICAgICAgICAgICBpZiAoISRyZXBvc2l0b3J5KQorICAgICAgICAgICAgICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ1JlcG9zaXRvcnlOb3RGb3VuZCcsIGFycmF5KCdyZXBvc2l0b3J5
JyA9PiAkcmVwb3NpdG9yeV9pZCkpOworICAgICAgICAgICAgICAgICRvd25lcl9jb21taXQgPSAk
ZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJyYXkoJ3JlcG9zaXRv
cnknID0+ICRyZXBvc2l0b3J5WydyZXBvc2l0b3J5X293bmVyJ10sICdyZXZpc2lvbicgPT4gJG93
bmVyX3JldmlzaW9uKSk7CisgICAgICAgICAgICAgICAgaWYgKCEkb3duZXJfY29tbWl0KQorICAg
ICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRPd25lclJldmlzaW9uJywg
YXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5WydyZXBvc2l0b3J5X293bmVyJ10sICdy
ZXZpc2lvbicgPT4gJG93bmVyX3JldmlzaW9uKSk7CisgICAgICAgICAgICAgICAgaWYgKCEkZGIt
PnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdF9vd25lcnNoaXBzJywgJ2NvbW1pdCcsIGFycmF5KCdv
d25lZCcgPT4gJGNvbW1pdF9pZCwgJ293bmVyJyA9PiAkb3duZXJfY29tbWl0Wydjb21taXRfaWQn
XSkpKQorICAgICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRDb21taXRP
d25lcnNoaXAnLCBhcnJheSgnY29tbWl0T3duZXInID0+ICRvd25lcl9jb21taXRbJ2NvbW1pdF9p
ZCddLCAnY29tbWl0T3duZWQnID0+ICRjb21taXRfaWQpKTsKKyAgICAgICAgICAgICAgICAkcmVx
dWlyZWRfb3duZXJfY29tbWl0c1skb3duZXJfY29tbWl0Wydjb21taXRfaWQnXV0gPSBUUlVFOwor
ICAgICAgICAgICAgICAgICRyZXBvc2l0b3JpZXNfcmVxdWlyZV9idWlsZFskcmVwb3NpdG9yeV9p
ZF0gPSAgVFJVRTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICRvd25lcl9j
b21taXRzX2luX3NldFskY29tbWl0X2lkXSA9IFRSVUU7CisKKyAgICAgICAgICAgICRvd25lcl9j
b21taXRfaWQgPSAkb3duZXJfY29tbWl0ID8gJG93bmVyX2NvbW1pdFsnY29tbWl0X2lkJ10gOiBO
VUxMOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJyYXkoJ2NvbW1pdCcg
PT4gJGNvbW1pdF9pZCwgJ3BhdGNoX2ZpbGUnID0+ICRwYXRjaF9maWxlX2lkLCAncmVxdWlyZXNf
YnVpbGQnID0+IEZBTFNFLCAnY29tbWl0X293bmVyJyA9PiAkb3duZXJfY29tbWl0X2lkKSk7CisK
KyAgICAgICAgICAgIGFycmF5X2Vuc3VyZV9pdGVtX2hhc19hcnJheSgkY29tbWl0X3NldF9pdGVt
c19ieV9yZXBvc2l0b3J5LCAkcmVwb3NpdG9yeV9pZCk7CisgICAgICAgICAgICAkY29tbWl0X3Nl
dF9pdGVtc19ieV9yZXBvc2l0b3J5WyRyZXBvc2l0b3J5X2lkXVtdID0gJiRjb21taXRfc2V0W2Nv
dW50KCRjb21taXRfc2V0KSAtIDFdOworCisgICAgICAgICAgICBpZiAoJHJlcG9zaXRvcnkgJiYg
JHJlcG9zaXRvcnlbJ3JlcG9zaXRvcnlfb3duZXInXSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGFycmF5X3B1c2goJHJlcG9zaXRvcnlfbGlzdCwgJHJlcG9zaXRvcnlf
aWQpOwogICAgICAgICB9Ci0KICAgICAgICAgJHJlcG9zaXRvcnlfZ3JvdXBfaWQgPSAkZmluZGVy
LT5maW5kX2J5X3JlcG9zaXRvcmllcygkcmVwb3NpdG9yeV9saXN0KTsKICAgICAgICAgaWYgKCEk
cmVwb3NpdG9yeV9ncm91cF9pZCkKLSAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRj
aGluZ1JlcG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpcycgPT4gJHJlcG9zaXRvcnlf
bGlzdCkpOworICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9y
eUdyb3VwJywgYXJyYXkoJ3JlcG9zaXRvcmllcycgPT4gJHJlcG9zaXRvcnlfbGlzdCkpOwogCiAg
ICAgICAgIGZvcmVhY2ggKCRyZXBvc2l0b3J5X3dpdGhfcGF0Y2ggYXMgJHJlcG9zaXRvcnlfaWQp
IHsKICAgICAgICAgICAgIGlmICghJGZpbmRlci0+YWNjZXB0c19wYXRjaCgkcmVwb3NpdG9yeV9n
cm91cF9pZCwgJHJlcG9zaXRvcnlfaWQpKQogICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignUGF0Y2hOb3RBY2NlcHRlZCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9p
ZCwgJ3JlcG9zaXRvcnlHcm91cCcgPT4gJHJlcG9zaXRvcnlfZ3JvdXBfaWQpKTsKICAgICAgICAg
fQogCisgICAgICAgIGZvcmVhY2goYXJyYXlfa2V5cygkcmVxdWlyZWRfb3duZXJfY29tbWl0cykg
YXMgJHJlcXVpcmVkX293bmVyX2NvbW1pdCkgeworICAgICAgICAgICAgaWYgKCFhcnJheV9nZXQo
JG93bmVyX2NvbW1pdHNfaW5fc2V0LCAkcmVxdWlyZWRfb3duZXJfY29tbWl0LCBGQUxTRSkpCisg
ICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdDb21taXRPd25lck11c3RFeGlzdEluQ29t
bWl0U2V0JywgYXJyYXkoJ293bmVyX2NvbW1pdCcgPT4gJHJlcXVpcmVkX293bmVyX2NvbW1pdCkp
OworICAgICAgICB9CiAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRfbGlzdCwgYXJyYXko
J3JlcG9zaXRvcnlfZ3JvdXAnID0+ICRyZXBvc2l0b3J5X2dyb3VwX2lkLCAnc2V0JyA9PiAkY29t
bWl0X3NldCkpOwogICAgIH0KIAorICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJHJlcG9zaXRvcmll
c19yZXF1aXJlX2J1aWxkKSBhcyAkcmVwb3NpdG9yeV9pZCkgeworICAgICAgICBmb3JlYWNoKCRj
b21taXRfc2V0X2l0ZW1zX2J5X3JlcG9zaXRvcnlbJHJlcG9zaXRvcnlfaWRdIGFzICYkY29tbWl0
X3NldF9pdGVtKQorICAgICAgICAgICAgJGNvbW1pdF9zZXRfaXRlbVsncmVxdWlyZXNfYnVpbGQn
XSA9IFRSVUU7CisgICAgfQogICAgIHJldHVybiAkY29tbWl0X3NldF9saXN0OwogfQogCkBAIC0y
MzUsMTQgKzI3MywxNCBAQCBmdW5jdGlvbiBlbnN1cmVfY29tbWl0X3NldHMoJGRiLCAkdHJpZ2dl
cmFibGVfaWQsICRjb21taXRfc2V0c19pbmZvKSB7CiAgICAgICAgICAgICBpZiAoISRjb21taXQp
CiAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXZpc2lvbk5vdEZvdW5kJywgYXJy
YXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X25hbWUsICdyZXZpc2lvbicgPT4gJHJldmlz
aW9uKSk7CiAgICAgICAgICAgICBhcnJheV9zZXRfZGVmYXVsdCgkY29tbWl0X3NldHMsICRpLCBh
cnJheSgnc2V0JyA9PiBhcnJheSgpKSk7Ci0gICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRf
c2V0c1skaV1bJ3NldCddLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0Wydjb21taXRfaWQnXSwg
J3BhdGNoX2ZpbGUnID0+IE5VTEwpKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9z
ZXRzWyRpXVsnc2V0J10sIGFycmF5KCdjb21taXQnID0+ICRjb21taXRbJ2NvbW1pdF9pZCddLCAn
cGF0Y2hfZmlsZScgPT4gTlVMTCwgJ3JlcXVpcmVzX2J1aWxkJyA9PiBGQUxTRSwgJ2NvbW1pdF9v
d25lcicgPT4gTlVMTCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgJGZpbmRlciA9IG5ldyBS
ZXBvc2l0b3J5R3JvdXBGaW5kZXIoJGRiLCAkdHJpZ2dlcmFibGVfaWQpOwogICAgICRyZXBvc2l0
b3J5X2dyb3VwX2lkID0gJGZpbmRlci0+ZmluZF9ieV9yZXBvc2l0b3JpZXMoJHJlcG9zaXRvcnlf
bGlzdCk7CiAgICAgaWYgKCEkcmVwb3NpdG9yeV9ncm91cF9pZCkKLSAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3VwJywgYXJyYXkoJ3JlcG9zaXRvcmlzJyA9
PiAkcmVwb3NpdG9yeV9saXN0KSk7CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRjaGlu
Z1JlcG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpZXMnID0+ICRyZXBvc2l0b3J5X2xp
c3QpKTsKIAogICAgIGlmIChjb3VudCgkY29tbWl0X3NldHMpIDwgMikKICAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0U2V0cycsIGFycmF5KCdjb21taXRTZXRzJyA9PiAkY29t
bWl0X3NldHNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggODE5YjYzYzRmZWQ3N2Nj
ZWFiMzI0ZWQyODVhOGE4YTdkZGMwNDcyOC4uMDZlOTJkOGM1NDU3MzlkOWM5NmJjMTM4YWQ1NGI3
MjIzYTc3YTdmNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0xNDMsNiArMTQzLDcgQEAgY2xh
c3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgICAgICAg
ICBpdGVtLmNvbW1pdCA9IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdCk7CiAgICAgICAg
ICAgICAgICAgaXRlbS5wYXRjaCA9IGl0ZW0ucGF0Y2ggPyBVcGxvYWRlZEZpbGUuZmluZEJ5SWQo
aXRlbS5wYXRjaCkgOiBudWxsOwogICAgICAgICAgICAgICAgIGl0ZW0ucm9vdEZpbGUgPSBpdGVt
LnJvb3RGaWxlID8gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGl0ZW0ucm9vdEZpbGUpIDogbnVsbDsK
KyAgICAgICAgICAgICAgICBpdGVtLmNvbW1pdE93bmVyID0gaXRlbS5jb21taXRPd25lciA/IENv
bW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdE93bmVyKSA6IG51bGw7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByYXdEYXRhLmN1c3RvbVJvb3RzID0gcmF3RGF0YS5jdXN0b21Sb290cy5t
YXAoKGZpbGVJZCkgPT4gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCkpOwogICAgICAgICAg
ICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocmF3RGF0YS5pZCwgcmF3RGF0YSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9j
b21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
Y29tbWl0LXNldC5qcwppbmRleCBhMTI1ZjEwZjE5ODdiMTAxYWE4ZmY5OGY5M2MyNTdhOWIyYzVi
MGI3Li5jYjhlNmYyMDVhMjcxNTA5NjEyMzk2MWIyNTliOTc3MmQxMWQ2ZDY2IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0Lmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1z
ZXQuanMKQEAgLTksNiArOSw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9i
amVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IG5ldyBNYXA7CiAg
ICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhp
cy5fcmVwb3NpdG9yeVRvUm9vdE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3JlcG9zaXRv
cnlUb0NvbW1pdE93bmVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVJl
cXVpcmVzQnVpbGRNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9sYXRlc3RDb21taXRUaW1l
ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICAgICAgdGhpcy5f
YWxsUm9vdEZpbGVzID0gW107CkBAIC0yNCw2ICsyNiw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRl
bmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1h
cC5jbGVhcigpOwogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5jbGVhcigpOwog
ICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMu
X3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3JlcG9z
aXRvcnlSZXF1aXJlc0J1aWxkTWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcmll
cyA9IFtdOwogICAgICAgICB0aGlzLl91cGRhdGVGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgfQpA
QCAtMzYsOSArNDAsMTIgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0
IHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdCBpbnN0YW5jZW9mIENvbW1pdExv
Zyk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghaXRlbS5wYXRjaCB8fCBpdGVtLnBhdGNo
IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFp
dGVtLnJvb3RGaWxlIHx8IGl0ZW0ucm9vdEZpbGUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWl0ZW0uY29tbWl0T3duZXIgfHwgaXRlbS5jb21t
aXRPd25lciBpbnN0YW5jZW9mIENvbW1pdExvZyk7CiAgICAgICAgICAgICBjb25zdCByZXBvc2l0
b3J5ID0gY29tbWl0LnJlcG9zaXRvcnkoKTsKICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlU
b0NvbW1pdE1hcC5zZXQocmVwb3NpdG9yeSwgY29tbWl0KTsKICAgICAgICAgICAgIHRoaXMuX3Jl
cG9zaXRvcnlUb1BhdGNoTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnBhdGNoKTsKKyAgICAgICAg
ICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNldChyZXBvc2l0b3J5LCBpdGVt
LmNvbW1pdE93bmVyKTsKKyAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxk
TWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVzQnVpbGQpOwogICAgICAgICAgICAgdGhp
cy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5yb290RmlsZSk7CiAg
ICAgICAgICAgICBpZiAoaXRlbS5yb290RmlsZSkKICAgICAgICAgICAgICAgICByb290RmlsZXMu
YWRkKGl0ZW0ucm9vdEZpbGUpOwpAQCAtNTksOCArNjYsMTUgQEAgY2xhc3MgQ29tbWl0U2V0IGV4
dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGNvbW1pdCA/IGNvbW1pdC5y
ZXZpc2lvbigpIDogbnVsbDsKICAgICB9CiAKKyAgICBvd25lclJldmlzaW9uRm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KQorICAgIHsKKyAgICAgICAgY29uc3QgY29tbWl0ID0gdGhpcy5fcmVwb3Np
dG9yeVRvQ29tbWl0T3duZXJNYXAuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICByZXR1cm4gY29t
bWl0ID8gY29tbWl0LnJldmlzaW9uKCkgOiBudWxsOworICAgIH0KKwogICAgIHBhdGNoRm9yUmVw
b3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5n
ZXQocmVwb3NpdG9yeSk7IH0KICAgICByb290Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJl
dHVybiB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIHJl
cXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9z
aXRvcnlSZXF1aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KTsgfQogCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHJldHVybiBhIERhdGUgb2JqZWN0LgogICAgIGxhdGVzdENvbW1pdFRpbWUo
KQpAQCAtODUsNiArOTksMTAgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2Jq
ZWN0IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAodGhp
cy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRv
cnlUb1Jvb3RNYXAuZ2V0KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5nZXQo
cmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9y
eSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMu
X3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVw
b3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmFyZUN1
c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90aGVyLl9jdXN0b21Sb290cyk7CiAg
ICAgfQpAQCAtMTM5LDcgKzE1Nyw3IEBAIGNsYXNzIE1lYXN1cmVtZW50Q29tbWl0U2V0IGV4dGVu
ZHMgQ29tbWl0U2V0IHsKICAgICB9CiAKICAgICAvLyBVc2UgQ29tbWl0U2V0J3Mgc3RhdGljIG1h
cHMgYmVjYXVzZSBNZWFzdXJlbWVudENvbW1pdFNldCBhbmQgQ29tbWl0U2V0IGFyZSBsb2dpY2Fs
bHkgb2YgdGhlIHNhbWUgdHlwZS4KLSAgICAvLyBGSVhNRTogSWRhZWxseSwgRGF0YU1vZGVsIHNo
b3VsZCB0YWtlIGNhcmUgb2YgdGhpcyBidXQgdHJhdmVyc2luZyBwcm90b3R5cGUgY2hhaW4gaXMg
ZXhwZW5zaXZlLgorICAgIC8vIEZJWE1FOiBJZGVhbGx5LCBEYXRhTW9kZWwgc2hvdWxkIHRha2Ug
Y2FyZSBvZiB0aGlzIGJ1dCB0cmF2ZXJzaW5nIHByb3RvdHlwZSBjaGFpbiBpcyBleHBlbnNpdmUu
CiAgICAgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29tbWl0U2V0Lm5hbWVkU3RhdGlj
TWFwKG5hbWUpOyB9CiAgICAgZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29t
bWl0U2V0LmVuc3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpOyB9CiAgICAgc3RhdGljIG5hbWVkU3Rh
dGljTWFwKG5hbWUpIHsgcmV0dXJuIENvbW1pdFNldC5uYW1lZFN0YXRpY01hcChuYW1lKTsgfQpA
QCAtMTYwLDExICsxNzgsMTEgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAgICAgICAgdGhp
cy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICB9CiAKLSAgICBzZXRSZXZpc2lvbkZvclJlcG9zaXRv
cnkocmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCkKKyAgICBzZXRSZXZpc2lvbkZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCwgb3duZXJSZXZp
c2lvbiA9IG51bGwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXBvc2l0b3J5IGlu
c3RhbmNlb2YgUmVwb3NpdG9yeSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRjaCB8fCBw
YXRjaCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7Ci0gICAgICAgIHRoaXMuX3JldmlzaW9uTGlz
dEJ5UmVwb3NpdG9yeS5zZXQocmVwb3NpdG9yeSwge3JldmlzaW9uLCBwYXRjaH0pOworICAgICAg
ICB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHtyZXZpc2lv
biwgcGF0Y2gsIG93bmVyUmV2aXNpb259KTsKICAgICB9CiAKICAgICBlcXVhbHMob3RoZXIpCkBA
IC0xNzIsMTMgKzE5MCwxNCBAQCBjbGFzcyBDdXN0b21Db21taXRTZXQgewogICAgICAgICBjb25z
b2xlLmFzc2VydChvdGhlciBpbnN0YW5jZW9mIEN1c3RvbUNvbW1pdFNldCk7CiAgICAgICAgIGlm
ICh0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2l6ZSAhPSBvdGhlci5fcmV2aXNpb25M
aXN0QnlSZXBvc2l0b3J5LnNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGZvciAobGV0IHJlcG9zaXRvcnkgb2YgdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5Lmtl
eXMoKSkgewotICAgICAgICAgICAgY29uc3QgdGhpc1JldmlzaW9uID0gdGhpcy5fcmV2aXNpb25M
aXN0QnlSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KTsKKworICAgICAgICBmb3IgKGNvbnN0IFty
ZXBvc2l0b3J5LCB0aGlzUmV2aXNpb25dIG9mIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9y
eSkgewogICAgICAgICAgICAgY29uc3Qgb3RoZXJSZXZpc2lvbiA9IG90aGVyLl9yZXZpc2lvbkxp
c3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOwogICAgICAgICAgICAgaWYgKCF0aGlzUmV2
aXNpb24gIT0gIW90aGVyUmV2aXNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgaWYgKHRoaXNSZXZpc2lvbiAmJiAodGhpc1JldmlzaW9uLnJldmlzaW9uICE9
IG90aGVyUmV2aXNpb24ucmV2aXNpb24KLSAgICAgICAgICAgICAgICB8fCB0aGlzUmV2aXNpb24u
cGF0Y2ggIT0gb3RoZXJSZXZpc2lvbi5wYXRjaCkpCisgICAgICAgICAgICAgICAgfHwgdGhpc1Jl
dmlzaW9uLnBhdGNoICE9IG90aGVyUmV2aXNpb24ucGF0Y2gKKyAgICAgICAgICAgICAgICB8fCB0
aGlzUmV2aXNpb24ub3duZXJSZXZpc2lvbiAhPSBvdGhlclJldmlzaW9uLm93bmVyUmV2aXNpb24p
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gQ29tbWl0U2V0LmFyZUN1c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90aGVy
Ll9jdXN0b21Sb290cyk7CkBAIC0xOTksNiArMjE4LDEzIEBAIGNsYXNzIEN1c3RvbUNvbW1pdFNl
dCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIGVudHJ5LnBhdGNo
OwogICAgIH0KKyAgICBvd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KQorICAg
IHsKKyAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnku
Z2V0KHJlcG9zaXRvcnkpOworICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgICAgIHJldHVybiBlbnRyeS5vd25lclJldmlzaW9uOworICAgIH0KICAgICBj
dXN0b21Sb290cygpIHsgcmV0dXJuIHRoaXMuX2N1c3RvbVJvb3RzOyB9CiAKICAgICBhZGRDdXN0
b21Sb290KHVwbG9hZGVkRmlsZSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCmluZGV4IDA4OWY2MmUyNDE3ZWViMWU1
MDQ0OGQ2YmMwNTc3NmRiODY2NTdhZGQuLmUzYzc0NzdjMzFlOTE1Mzk3NTdkODcwMDcyNDc0MzVj
NTJlMmI3OTAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
bW9kZWxzL3JlcG9zaXRvcnkuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvcmVwb3NpdG9yeS5qcwpAQCAtMjYsNiArMjYsMTIgQEAgY2xhc3MgUmVwb3Np
dG9yeSBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gbWFwID8gbWFwW25h
bWVdIDogbnVsbDsKICAgICB9CiAKKyAgICBmaW5kT3duZWRSZXBvc2l0b3J5QnlOYW1lKG5hbWUp
CisgICAgeworICAgICAgICBjb25zdCBvd25lcnNoaXBzID0gdGhpcy5uYW1lZFN0YXRpY01hcCgn
cmVwb3NpdG9yeU93bmVyc2hpcHMnKTsKKyAgICAgICAgcmV0dXJuIG93bmVyc2hpcHMgPyBvd25l
cnNoaXBzW3RoaXMuaWQoKV0uZmluZCgocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkg
PT0gbmFtZSkgOiBudWxsOworICAgIH0KKwogICAgIGhhc1VybEZvclJldmlzaW9uKCkgeyByZXR1
cm4gISF0aGlzLl91cmw7IH0KIAogICAgIHVybEZvclJldmlzaW9uKGN1cnJlbnRSZXZpc2lvbikK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rl
c3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzCmluZGV4IDRiM2ZiOGM0YjdkNzgxMTg1MzFmYzVmNjE4NWQ5ZmU1NjkxZTI4
NTMuLjBjMGRmYWQ0NzdlMzU3Y2I1NDRkMTMyNzAzY2E2NzJiOGEwMWMyMjUgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91
cC5qcwpAQCAtMjMxLDYgKzIzMSw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRP
YmplY3QgewogICAgICAgICAgICAgICAgIGNvbnN0IHBhdGNoRmlsZSA9IGNvbW1pdFNldC5wYXRj
aEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRb
cmVwb3NpdG9yeS5pZCgpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246IGNvbW1p
dFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSksCisgICAgICAgICAgICAgICAg
ICAgIG93bmVyUmV2aXNpb246IGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgcGF0Y2g6IHBhdGNoRmlsZSA/IHBhdGNo
RmlsZS5pZCgpIDogbnVsbCwKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBmZmRhZTg0YmJlMTY0ZjJiODA5YTA2
MTc3MDcxMjIzZjIzMWUwMzZkLi5iNmI1MTAwNmUwMTlhN2UwMTc3MjYzYTM4NDdiYjQ2YmNlZTYw
NmNjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMjcsNyArMjcsNDQg
QEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVxdWV0cyBhc3Nv
Y2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJsZSB3aXRoIGFwcHJvcHJpYXRlIGNvbW1pdHMg
YW5kIGNvbW1pdFNldHMnLCAoKSA9PiB7CisgICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVx
dWVzdHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3ByaWF0
ZSBjb21taXRzIGFuZCBjb21taXRTZXRzIHdpdGggb3duZWQgY29tcG9uZW50cycsICgpID0+IHsK
KyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZFRlc3RHcm91cFdpdGhPd25lZENvbW1pdHMoVGVz
dFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3Rz
L2J1aWxkLXdlYmtpdCcpOworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWls
ZFJlcXVlc3RzJywgJ2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRG
aWxlcyddKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMn
XS5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNl
dHMnXVswXS5pZCwgNDAzKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsn
Y29tbWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tjb21taXQ6
ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDog
ZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgICAgICB7Y29tbWl0OiAnOTMxMTYn
LCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCBy
b290RmlsZTogbnVsbH0sCisgICAgICAgICAgICAgICAge2NvbW1pdDogJzE3OTcnLCBjb21taXRP
d25lcjogIjkzMTE2IiwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IHRydWUsIHJvb3RGaWxl
OiBudWxsfV0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMn
XVsxXS5pZCwgNDA0KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29t
bWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4
NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFs
c2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgICAgICB7Y29tbWl0OiAnOTYzMzYnLCBj
b21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290
RmlsZTogbnVsbH0sCisgICAgICAgICAgICAgICAge2NvbW1pdDogJzIwMTcnLCBjb21taXRPd25l
cjogIjk2MzM2IiwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IHRydWUsIHJvb3RGaWxlOiBu
dWxsfV0pOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddLmxl
bmd0aCwgNSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XVswXSwge2NvbW1pdE93bmVyOiBudWxsLCBpZDogODc4MzIsIHJlcG9zaXRvcnk6ICc5JywgcmV2
aXNpb246ICcxMC4xMSAxNUEyODQnLCB0aW1lOiAwfSk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXSwge2NvbW1pdE93bmVyOiBudWxsLCBpZDogOTMx
MTYsIHJlcG9zaXRvcnk6ICcxMScsIHJldmlzaW9uOiAnMTkxNjIyJywgdGltZTogMTQ0NTk0NTgx
Njg3OH0pCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsy
XSwge2NvbW1pdE93bmVyOiAnOTMxMTYnLCBpZDogJzE3OTcnLCByZXBvc2l0b3J5OiAnMjEzJywg
cmV2aXNpb246ICdvd25lZC1qc2MtNjE2MScsIHRpbWU6IDE0NTY5NjA3OTUzMDB9KQorICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRzJ11bM10sIHtjb21taXRPd25l
cjogbnVsbCwgaWQ6IDk2MzM2LCByZXBvc2l0b3J5OiAnMTEnLCByZXZpc2lvbjogJzE5MjczNics
IHRpbWU6IDE0NDgyMjUzMjU2NTB9KQorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250
ZW50Wydjb21taXRzJ11bNF0sIHtjb21taXRPd25lcjogJzk2MzM2JywgaWQ6IDIwMTcsIHJlcG9z
aXRvcnk6ICcyMTMnLCByZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywgdGltZTogMTQ2MjIzMDgz
NzEwMH0pCisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J10ubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXVsn
Y3JlYXRlZEF0J10gPSAwOworICAgICAgICAgICAgY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFd
WydjcmVhdGVkQXQnXSA9IDA7CisgICAgICAgICAgICBjb250ZW50WydidWlsZFJlcXVlc3RzJ11b
Ml1bJ2NyZWF0ZWRBdCddID0gMDsKKyAgICAgICAgICAgIGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVszXVsnY3JlYXRlZEF0J10gPSAwOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250
ZW50WydidWlsZFJlcXVlc3RzJ11bMF0sIHtpZDogJzcwNCcsIHRhc2s6ICcxMDgwJywgdHJpZ2dl
cmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBwbGF0
Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICcwJywgY29tbWl0U2V0OiAnNDAz
Jywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRBdDog
MH0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMV0sIHtpZDogJzcwNScsIHRhc2s6ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVw
b3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdy
b3VwOiAnOTAwJywgb3JkZXI6ICcxJywgY29tbWl0U2V0OiAnNDA0Jywgc3RhdHVzOiAncGVuZGlu
ZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0sIHtpZDogJzcwNics
IHRhc2s6ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAw
MScsIHRlc3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6
ICcyJywgY29tbWl0U2V0OiAnNDAzJywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVp
bGQ6IG51bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bM10sIHtpZDogJzcwNycsIHRhc2s6ICcxMDgwJywgdHJp
Z2dlcmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBw
bGF0Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICczJywgY29tbWl0U2V0OiAn
NDA0Jywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRB
dDogMH0pOworICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVp
bGQgcmVxdWVzdHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHBy
b3ByaWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywgKCkgPT4gewogICAgICAgICByZXR1cm4g
TW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3Rh
dHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwogICAgICAgICB9KS50aGVu
KChjb250ZW50KSA9PiB7CkBAIC0zNiwxMCArNzMsMTAgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQt
cmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29u
dGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0ucmV2aXNpb25JdGVtcywKLSAgICAgICAgICAg
ICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfSwge2Nv
bW1pdDogJzkzMTE2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfV0pOworICAgICAgICAg
ICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGws
IHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNics
IGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJv
b3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1p
dFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAgW3tjb21t
aXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5NjMz
NicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgICAgICAgICBbe2Nv
bW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1
aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBjb21taXRPd25l
cjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVs
bH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5n
dGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5p
ZCwgODc4MzIpOwpAQCAtODMsNiArMTIwLDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVz
dHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisKICAgICBpdCgnc2hv
dWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbicsICgpID0+IHsKICAgICAg
ICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRK
U09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5
SWRSZXNvbHV0aW9uPXRydWUnKTsKQEAgLTkyLDEwICsxMzAsMTAgQEAgZGVzY3JpYmUoJy9hcGkv
YnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEpOwogICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0ucmV2aXNpb25JdGVtcywKLSAgICAg
ICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxs
fSwge2NvbW1pdDogJzkzMTE2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfV0pOworICAg
ICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6
IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5
MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFs
c2UsIHJvb3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAg
W3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6
ICc5NjMzNicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgICAgICAg
ICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1
aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBjb21t
aXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290Rmls
ZTogbnVsbH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XS5sZW5ndGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XVswXS5pZCwgODc4MzIpOwpAQCAtMTM5LDYgKzE3NywxMTEgQEAgZGVzY3JpYmUoJy9hcGkvYnVp
bGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAg
aXQoJ3Nob3VsZCBiZSBmZXRjaGFibGUgYnkgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFi
bGUgZm9yIGNvbW1pdFNldHMgd2l0aCBvd25lZCBjb21taXRzJywgKCkgPT4geworICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyhUZXN0U2VydmVyLmRh
dGFiYXNlKCkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNo
KCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVx
dWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKCdidWlsZC13ZWJraXQnKTsKKyAgICAgICAgfSkudGhl
bigoYnVpbGRSZXF1ZXN0cykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVx
dWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICAgICAgbGV0IHRlc3QgPSBUZXN0LmZpbmRCeUlk
KDIwMCk7CisgICAgICAgICAgICBhc3NlcnQodGVzdCk7CisKKyAgICAgICAgICAgIGxldCBwbGF0
Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlkKDY1KTsKKyAgICAgICAgICAgIGFzc2VydChwbGF0Zm9y
bSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLmlkKCksIDcw
NCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS50ZXN0R3JvdXBJ
ZCgpLCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0udGVz
dCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLnBs
YXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNb
MF0uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhhc1N0YXJ0ZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQu
b2soYnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5pZCgpLCA3MDUpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0udGVzdEdyb3VwSWQoKSwgOTAwKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFdLnRlc3QoKSwgdGVzdCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5wbGF0Zm9ybSgpLCBwbGF0
Zm9ybSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5vcmRlcigp
LCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgp
IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1
ZXN0c1sxXS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1
ZXN0c1sxXS5oYXNTdGFydGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVz
dHNbMV0uaXNQZW5kaW5nKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVz
dHNbMV0uc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdHNbMl0uaWQoKSwgNzA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3RzWzJdLnRlc3RHcm91cElkKCksIDkwMCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS50ZXN0KCksIHRlc3QpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAg
ICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1syXS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENv
bW1pdFNldCk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzRmlu
aXNoZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzU3Rh
cnRlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzJdLmlzUGVuZGlu
ZygpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLnN0YXR1c0xh
YmVsKCksICdXYWl0aW5nJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzNdLmlkKCksIDcwNyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
c1szXS50ZXN0R3JvdXBJZCgpLCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdHNbM10udGVzdCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWls
ZFJlcXVlc3RzWzNdLnBsYXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmhhc0ZpbmlzaGVkKCkpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmhhc1N0YXJ0ZWQoKSk7CisgICAg
ICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5pc1BlbmRpbmcoKSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGlu
ZycpOworCisgICAgICAgICAgICBjb25zdCBvc3ggPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDkpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeC5uYW1lKCksICdtYWNPUycpOworCisgICAgICAg
ICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDExKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh3ZWJraXQubmFtZSgpLCAnV2ViS2l0Jyk7CisKKyAgICAgICAgICAgIGNv
bnN0IGpzYyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMjEzKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChqc2MubmFtZSgpLCAnSmF2YVNjcmlwdENvcmUnKTsKKworICAgICAgICAgICAgY29uc3Qg
Zmlyc3RDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIGZpcnN0Q29tbWl0
U2V0KTsKKworICAgICAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0
c1sxXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Rz
WzNdLmNvbW1pdFNldCgpLCBzZWNvbmRDb21taXRTZXQpOworCisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoZmlyc3RDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAx
NUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGZpcnN0Q29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQtanNj
LTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5vd25lclJl
dmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkxNjIyJyk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4x
MSAxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICdvd25l
ZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZENvbW1pdFNldC5v
d25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkyNzM2Jyk7CisKKyAgICAgICAgICAg
IGNvbnN0IG9zeENvbW1pdCA9IGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21taXQucmV2aXNpb24oKSwgJzEwLjEx
IDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgc2Vjb25kQ29t
bWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CisKKyAgICAgICAgICAgIGNvbnN0IGZp
cnN0V2ViS2l0Q29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0V2ViS2l0Q29tbWl0LnJldmlzaW9u
KCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrZmlyc3RXZWJLaXRDb21t
aXQudGltZSgpLCAxNDQ1OTQ1ODE2ODc4KTsKKworICAgICAgICAgICAgY29uc3Qgc2Vjb25kV2Vi
S2l0Q29tbWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRXZWJLaXRDb21taXQucmV2aXNpb24oKSwg
JzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRXZWJLaXRDb21taXQu
dGltZSgpLCAxNDQ4MjI1MzI1NjUwKTsKKworICAgICAgICAgICAgY29uc3QgZmlyc3RTSkNDb21t
aXQgPSBmaXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoZmlyc3RTSkNDb21taXQucmV2aXNpb24oKSwgJ293bmVkLWpzYy02MTYx
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK2ZpcnN0U0pDQ29tbWl0LnRpbWUoKSwgMTQ1
Njk2MDc5NTMwMCk7CisKKyAgICAgICAgICAgIGNvbnN0IHNlY29uZFNKQ0NvbW1pdCA9IHNlY29u
ZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc2Vjb25kU0pDQ29tbWl0LnJldmlzaW9uKCksICdvd25lZC1qc2MtOTE5MScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRTSkNDb21taXQudGltZSgpLCAxNDYyMjMwODM3
MTAwKQorICAgICAgICB9KTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91bGQgYmUgZmV0Y2hhYmxl
IGJ5IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlJywgKCkgPT4gewogICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVh
dGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXggOThk
NzI5NmUwNTM4ZWQwYzkyMDJlMzJlZTViY2JkZDNlYWNmZjYzMC4uZDUxNDQ3MDBlN2NiY2M5MDFk
MTcwYTU4NGFkOGQ1ZDY1MmZlZTIyZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQt
YXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xMTMsNiArMTEzLDExIEBAIGZ1bmN0
aW9uIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMpCiAg
ICAgICAgICAgICAgICAge3JlcG9zaXRvcnk6IE1vY2tEYXRhLm1hY29zUmVwb3NpdG9yeUlkKCks
IGFjY2VwdHNQYXRjaDogZmFsc2V9LAogICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2Nr
RGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQogICAgICAgICAg
ICAgXX0sCisgICAgICAgICAgICB7bmFtZTogJ3N5c3RlbS13ZWJraXQtc2pjJywgYWNjZXB0c1Jv
b3Q6IHRydWUsIHJlcG9zaXRvcmllczogWworICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBN
b2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAg
ICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEuanNjUmVwb3NpdG9yeUlkKCksIGFjY2Vw
dHNQYXRjaDogZmFsc2V9LAorICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS53
ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQorICAgICAgICAgICAgXX0s
CiAgICAgICAgIF0KICAgICB9OwogICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0
U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewpAQCAtMjc0LDE0ICsyNzksMTQgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIHJldHVybiAiQW1iaWdpb3Vz
UmV2aXNpb24iIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMgdGhhdCBtYXRjaCB0aGUg
c3BlY2lmaWVkIHJldmlzaW9uIHN0cmluZycsICgpID0+IHsKKyAgICBpdCgnc2hvdWxkIHJldHVy
biAiQW1iaWd1b3VzUmV2aXNpb24iIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMgdGhh
dCBtYXRjaCB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHN0cmluZycsICgpID0+IHsKICAgICAgICAg
cmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJywgWycyY2VkYTQ1
ZDNjZDYzY2RlNThkMGRiZjU3Njc3MTRlMDNkOTAyZTQzJywgJzJjNzFhOGRkYzFmNjYxNjYzY2Nm
ZDFhMjljNjMzYmE1N2U4Nzk1MzMnXSkudGhlbigodGFza0lkKSA9PiB7CiAgICAgICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbmQoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdXZWJLaXQnKTsKICAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0
cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMmNlZGEnfX0sIHtbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcyYyd9fV07CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNr
SWQsIHJldmlzaW9uU2V0c30pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgICAgICBh
c3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwogICAgICAgICAgICAgfSwg
KGVycm9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnQW1iaWdp
b3VzUmV2aXNpb24nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdBbWJp
Z3VvdXNSZXZpc2lvbicpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpA
QCAtMzQ1LDYgKzM1MCw1NCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdz
aG91bGQgcmV0dXJuICJJbnZhbGlkT3duZXJSZXZpc2lvbiIgd2hlbiBjb21taXQgb3duZXJzaGlw
IGlzIG5vdCB2YWxpZCcsICgpID0+IHsKKyAgICAgICAgbGV0IHRhc2tJZDsKKyAgICAgICAgcmV0
dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJykudGhlbigoaWQpID0+
IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBjb25zdCBtYWNvcyA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVsw
XTsKKyAgICAgICAgICAgIGNvbnN0IGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsKKyAg
ICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQo
KV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYyMSd9
fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30s
IFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lv
bjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MTYyMid9fV07CisgICAgICAg
ICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNp
b25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KGZh
bHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlkT3duZXJSZXZpc2lvbicp
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuICJJbnZhbGlk
Q29tbWl0T3duZXJzaGlwIiB3aGVuIGNvbW1pdCBvd25lcnNoaXAgaXMgbm90IHZhbGlkJywgKCkg
PT4geworICAgICAgICBsZXQgdGFza0lkOworICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFza0lkID0gaWQpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0
ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAg
ICAgICAgICAgIGNvbnN0IG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRv
cnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAgICAgICAgY29u
c3QganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29z
LmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3du
ZWQtanNjLTYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAgICAgICAgICAg
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlkKCldOiB7cmV2
aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3duZWQtanNjLTkxOTEn
LCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319XTsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRh
c2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIg
YmUgcmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChlcnJvciwgJ0ludmFsaWRDb21taXRPd25lcnNoaXAnKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiAiQ29tbWl0T3duZXJNdXN0RXhpc3RJbkNv
bW1pdFNldCIgd2hlbiBvd25lciBvZiBhIGNvbW1pdCBpcyBtaXNzaW5nIGluIHRoZSBjb21taXQg
c2V0JywgKCkgPT4geworICAgICAgICBsZXQgdGFza0lkOworICAgICAgICByZXR1cm4gYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFza0lkID0g
aWQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5h
bGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQn
KVswXTsKKyAgICAgICAgICAgIGNvbnN0IG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIo
KHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAg
ICAgICAgY29uc3QganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+
IHJlcG9zaXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAgICAgICAg
Y29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjIn
fSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3Jldmlz
aW9uOiAnb3duZWQtanNjLTYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAg
ICAgICAgICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlk
KCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3duZWQt
anNjLTkxOTEnLCBvd25lclJldmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAgICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAn
dGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsK
KyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91
bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0NvbW1pdE93bmVyTXVzdEV4aXN0SW5Db21taXRTZXQn
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRlc3Qg
Z3JvdXAgZnJvbSBjb21taXRTZXRzIHdpdGggdGhlIHJlcGV0aXRpb24gY291bnQgb2Ygb25lIHdo
ZW4gcmVwZXRpdGlvbkNvdW50IGlzIG9taXR0ZWQnLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBh
ZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4oKHRhc2tJZCkgPT4g
ewogICAgICAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKQEAgLTY1MSw2ICs3MDQsMjcyIEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB0ZXN0
IGdyb3VwIHdpdGggYSBvd25lZCBjb21taXRzIGV2ZW4gd2hlbiBubyBwYXRjaCBpcyBzcGVjaWZp
ZWQnLCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7Cisg
ICAgICAgIGxldCBqc2M7CisgICAgICAgIGxldCBtYWNvczsKKyAgICAgICAgbGV0IGluc2VydGVk
R3JvdXBJZDsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29t
ZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBtYWNvcyA9IFJlcG9z
aXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAn
bWFjT1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChy
ZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsK
KyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2Mu
aWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYy
Mid9fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2
J30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZp
c2lvbjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MjczNid9fV07CisgICAg
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3Jv
dXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2
aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAg
IGluc2VydGVkR3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOworICAgICAgICB9KS50
aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0
YS5zb21lVGVzdElkKCkpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5wbGF0Zm9y
bSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CisgICAg
ICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0uaXNCdWlsZCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS5pc0J1aWxkKCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzJdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzNdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzRdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzVdLmlzQnVpbGQoKSwgZmFsc2UpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0uaXNUZXN0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzJdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0c1szXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbNF0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzVdLmlzVGVzdCgpLCB0cnVlKTsKKworICAgICAgICAgICAgY29uc3Qgc2V0MCA9
IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVl
c3RzWzFdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJd
LmNvbW1pdFNldCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sz
XS5jb21taXRTZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
NF0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzVdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVw
b3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDAucmVwb3NpdG9yaWVz
KCkpLCBbanNjLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChS
ZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MS5yZXBvc2l0b3Jp
ZXMoKSksIFtqc2MsIHdlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0
MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVp
cmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIGZhbHNlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNv
cyksICcxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9y
UmVwb3NpdG9yeShtYWNvcyksIHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29zKSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSwg
c2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkobWFjb3Mp
LCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9y
UmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQt
anNjLTkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3Np
dG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9y
UmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93
bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZXQxLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICcxOTI3MzYn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0
b3J5KGpzYyksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNC
dWlsZEZvclJlcG9zaXRvcnkoanNjKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQoIXNldDAu
ZXF1YWxzKHNldDEpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNy
ZWF0ZSBhIHRlc3QgZ3JvdXAgd2l0aCBhIG93bmVkIGNvbW1pdHMgYW5kIGEgcGF0Y2gnLCAoKSA9
PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIGxl
dCBtYWNvczsKKyAgICAgICAgbGV0IGpzYzsKKyAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsK
KyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxl
QW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChy
ZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAg
ICAgICBtYWNvcyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9IFJlcG9zaXRv
cnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2
YVNjcmlwdENvcmUnKVswXTsKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VU
ZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgfSkudGhl
bigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVl
fSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBy
YXdGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAgdXBsb2FkZWRG
aWxlID0gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbihyYXdGaWxlLmlkLCByYXdGaWxlKTsK
KyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2Mu
aWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYy
Mid9fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2
JywgcGF0Y2g6IHVwbG9hZGVkRmlsZS5pZCgpfSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcx
NUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3duZWQtanNjLTkxOTEnLCBvd25lclJl
dmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNl
bmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJ
ZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgfSkudGhlbigo
Y29udGVudCkgPT4geworICAgICAgICAgICAgaW5zZXJ0ZWRHcm91cElkID0gY29udGVudFsndGVz
dEdyb3VwSWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRh
c2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5y
ZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAudGVz
dCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCkpKTsKKyAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAu
YnVpbGRSZXF1ZXN0cygpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNik7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5pc0J1aWxkKCks
IHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLmlzQnVpbGQoKSwg
dHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uaXNCdWlsZCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uaXNCdWlsZCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uaXNCdWlsZCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uaXNCdWlsZCgpLCBm
YWxzZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5pc1Rlc3QoKSwg
ZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLmlzVGVzdCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uaXNUZXN0KCksIHRy
dWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmlzVGVzdCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0XS5pc1Rlc3QoKSwgdHJ1ZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uaXNUZXN0KCksIHRydWUpOwor
CisgICAgICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAg
ICAgICAgICBjb25zdCBzZXQxID0gcmVxdWVzdHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0XS5jb21taXRTZXQoKSwgc2V0MCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uY29tbWl0U2V0KCksIHNldDEpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25l
c1dpdGhVUkwoc2V0MC5yZXBvc2l0b3JpZXMoKSksIFtqc2MsIHdlYmtpdCwgbWFjb3NdKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdP
bmVzV2l0aFVSTChzZXQxLnJlcG9zaXRvcmllcygpKSwgW2pzYywgd2Via2l0LCBtYWNvc10pOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgdXBsb2FkZWRGaWxlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB0cnVlKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtp
dCksIHRydWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJl
cG9zaXRvcnkobWFjb3MpLCAnMTVBMjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0
MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpLCBzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9y
eShtYWNvcykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAuY29tbWl0Rm9yUmVwb3Np
dG9yeShtYWNvcyksIHNldDEuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBv
c2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkobWFjb3MpLCBmYWxzZSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSht
YWNvcyksIGZhbHNlKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25G
b3JSZXBvc2l0b3J5KGpzYyksICdvd25lZC1qc2MtNjE2MScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICdvd25lZC1qc2MtOTE5MScp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyks
IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5
KGpzYyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lv
bkZvclJlcG9zaXRvcnkoanNjKSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHNldDEub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgJzE5MjczNicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkoanNjKSwg
dHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9yUmVw
b3NpdG9yeShqc2MpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydCghc2V0MC5lcXVhbHMoc2V0
MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc3RpbGwgd29yayBl
dmVuIGlmIGNvbXBvbmVudHMgd2l0aCBzYW1lIG5hbWUgYnV0IG9uZSBpcyBvd25lZCwgb25lIGlz
IG5vdCcsICgpID0+IHsKKyAgICAgICAgbGV0IHRhc2tJZDsKKyAgICAgICAgbGV0IHdlYmtpdDsK
KyAgICAgICAgbGV0IG1hY29zOworICAgICAgICBsZXQganNjOworICAgICAgICBsZXQgb3duZWRK
U0M7CisgICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7CisgICAgICAgIGxldCB1cGxvYWRlZEZp
bGU7CisgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFz
aycpLnRoZW4oKGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkQW5vdGhlclRyaWdnZXJhYmxlKFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgICAgIG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIo
KHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAg
ICAgICAganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScgJiYgIXJlcG9zaXRvcnkub3duZXJJZCgp
KVswXTsKKyAgICAgICAgICAgIG93bmVkSlNDID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJl
cG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScgJiYgcmVw
b3NpdG9yeS5vd25lcklkKCkpWzBdOworICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUu
bWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpOworICAgICAgICB9
KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNl
bmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6
IHRydWV9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IHJhd0ZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICB1cGxv
YWRlZEZpbGUgPSBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0ZpbGUuaWQsIHJhd0Zp
bGUpOworICAgICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbanNjLmlkKCldOiB7cmV2
aXNpb246ICdqc2MtNjE2MSd9LCBbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwg
W21hY29zLmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW293bmVkSlNDLmlkKCldOiB7cmV2
aXNpb246ICdvd25lZC1qc2MtNjE2MScsIG93bmVyUmV2aXNpb246ICcxOTE2MjInfX0sCisgICAg
ICAgICAgICAgICAge1tqc2MuaWQoKV06IHtyZXZpc2lvbjogJ2pzYy05MTkxJ30sIFt3ZWJraXQu
aWQoKV06IHtyZXZpc2lvbjogJzE5MjczNicsIHBhdGNoOiB1cGxvYWRlZEZpbGUuaWQoKX0sIFtt
YWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtvd25lZEpTQy5pZCgpXToge3Jldmlz
aW9uOiAnb3duZWQtanNjLTkxOTEnLCBvd25lclJldmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZp
c2lvblNldHN9KTsKKyAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAg
aW5zZXJ0ZWRHcm91cElkID0gY29udGVudFsndGVzdEdyb3VwSWQnXTsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRo
ZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVUZXN0SWQoKSkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnBsYXRmb3Jt
KCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKKyAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS5pc0J1aWxkKCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLmlzQnVpbGQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMl0uaXNCdWlsZCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbM10uaXNCdWlsZCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbNF0uaXNCdWlsZCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbNV0uaXNCdWlsZCgpLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLmlzVGVzdCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMl0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzNdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1s0XS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbNV0uaXNUZXN0KCksIHRydWUpOworCisgICAgICAgICAgICBjb25zdCBzZXQwID0g
cmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBjb25zdCBzZXQxID0gcmVxdWVz
dHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0u
Y29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNd
LmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0
XS5jb21taXRTZXQoKSwgc2V0MCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
NV0uY29tbWl0U2V0KCksIHNldDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBv
c2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MC5yZXBvc2l0b3JpZXMo
KSksIFtqc2MsIG93bmVkSlNDLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MS5y
ZXBvc2l0b3JpZXMoKSksIFtqc2MsIG93bmVkSlNDLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDEuY3VzdG9tUm9vdHMoKSwgW10pOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5
MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBh
dGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB1cGxvYWRlZEZpbGUpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25lclJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHRydWUpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkod2Via2l0KSwgdHJ1
ZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9y
eShtYWNvcyksICcxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlz
aW9uRm9yUmVwb3NpdG9yeShtYWNvcyksIHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29z
KSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5jb21taXRGb3JSZXBvc2l0b3J5KG1h
Y29zKSwgc2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnko
bWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLm93bmVyUmV2aXNp
b25Gb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG1hY29zKSwg
ZmFsc2UpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksICdvd25lZC1qc2MtOTE5
MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KG93
bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJl
cG9zaXRvcnkob3duZWRKU0MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgJzE5MTYyMicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRK
U0MpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlc0J1
aWxkRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkob3duZWRKU0MpLCB0cnVlKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyks
ICdqc2MtNjE2MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KGpzYyksICdqc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
dDAucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyksIG51bGwpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShq
c2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRG
b3JSZXBvc2l0b3J5KGpzYyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQx
LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KGpzYyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFz
c2VydCghc2V0MC5lcXVhbHMoc2V0MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKwogICAgIGl0
KCdzaG91bGQgbm90IGNyZWF0ZSBhIGJ1aWxkIHJlcXVlc3QgdG8gYnVpbGQgYSBwYXRjaCB3aGVu
IHRoZSBjb21taXQgc2V0IGRvZXMgbm90IGhhdmUgYSBwYXRjaCcsICgpID0+IHsKICAgICAgICAg
bGV0IHRhc2tJZDsKICAgICAgICAgbGV0IHdlYmtpdDsKQEAgLTcxOSw3ICsxMDM4LDYgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgbGV0IHRhc2tJZDsKICAgICAgICAgbGV0IHdlYmtpdDsKICAgICAgICAgbGV0IG1h
Y29zOwotICAgICAgICBsZXQgaW5zZXJ0ZWRHcm91cElkOwogICAgICAgICBsZXQgdXBsb2FkZWRG
aWxlOwogICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRh
c2snKS50aGVuKChpZCkgPT4gdGFza0lkID0gaWQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
d2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKQEAgLTczMSw3ICsxMDQ5LDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGNvbnN0IHJhd0ZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CiAgICAgICAg
ICAgICB1cGxvYWRlZEZpbGUgPSBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0ZpbGUu
aWQsIHJhd0ZpbGUpOwogICAgICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcx
NUEyODQnLCBwYXRjaDogdXBsb2FkZWRGaWxlLmlkKCl9fSwKLSAgICAgICAgICAgICAgICB7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9u
OiAnMTVBMjg0J319XTsKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkyNzM2J30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J319XTsKICAgICAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZp
c2lvblNldHN9KTsKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQo
ZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGxvYWQtZmlsZS10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktdXBsb2FkLWZpbGUtdGVzdHMuanMKaW5kZXggMmMxMTIxODU5ZTBiZjJiZGQ5ZTEwODMy
NzRhM2EyNzVlODE1YzA0MC4uMWI5MDJmYWQ2MWZmMTBjZmFiZjRjMjE3YWJkODA2ZGQ1MzI3OTEy
MSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2
aWxlZ2VkLWFwaS11cGxvYWQtZmlsZS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwbG9hZC1maWxlLXRlc3RzLmpzCkBA
IC0yMTIsOCArMjEyLDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmlsZScs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAg
ICBjb25zdCBmaWxlQiA9IHJlc3VsdC51cGxvYWRlZEZpbGU7CiAgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdVUERBVEUgY29tbWl0X3Nl
dF9pdGVtcyBTRVQgY29tbWl0c2V0X3BhdGNoX2ZpbGUgPSAkMSBXSEVSRSBjb21taXRzZXRfc2V0
ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gODc4MzInLCBbZmlsZUEuaWRdKSwKLSAgICAg
ICAgICAgICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIGNvbW1pdHNl
dF9wYXRjaF9maWxlID0gJDEgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0
X2NvbW1pdCA9IDk2MzM2JywgW2ZpbGVCLmlkXSkKKyAgICAgICAgICAgICAgICBkYi5xdWVyeSgn
VVBEQVRFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0Y2hfZmlsZSwgY29tbWl0
c2V0X3JlcXVpcmVzX2J1aWxkKSA9ICgkMSwgVFJVRSkgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQw
MiBBTkQgY29tbWl0c2V0X2NvbW1pdCA9IDg3ODMyJywgW2ZpbGVBLmlkXSksCisgICAgICAgICAg
ICAgICAgZGIucXVlcnkoJ1VQREFURSBjb21taXRfc2V0X2l0ZW1zIFNFVCAoY29tbWl0c2V0X3Bh
dGNoX2ZpbGUsIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCkgPSAoJDEsIFRSVUUpIFdIRVJFIGNv
bW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA5NjMzNicsIFtmaWxlQi5p
ZF0pCiAgICAgICAgICAgICBdKTsKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZU9mU2l6ZUluTUIoJ290aGVy
LmRhdCcsIGxpbWl0SW5NQiwgJ2MnKTsKQEAgLTI0Miw4ICsyNDIsOCBAQCBkZXNjcmliZSgnL3By
aXZpbGVnZWQtYXBpL3VwbG9hZC1maWxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGZpbGVCID0gcmVzdWx0LnVwbG9hZGVk
RmlsZTsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAg
ZGIucXVlcnkoJ1VQREFURSBjb21taXRfc2V0X2l0ZW1zIFNFVCBjb21taXRzZXRfcGF0Y2hfZmls
ZSA9ICQxIFdIRVJFIGNvbW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA4
NzgzMicsIFtmaWxlQS5pZF0pLAotICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdVUERBVEUgY29t
bWl0X3NldF9pdGVtcyBTRVQgY29tbWl0c2V0X3BhdGNoX2ZpbGUgPSAkMSBXSEVSRSBjb21taXRz
ZXRfc2V0ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gOTYzMzYnLCBbZmlsZUIuaWRdKQor
ICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdVUERBVEUgY29tbWl0X3NldF9pdGVtcyBTRVQgKGNv
bW1pdHNldF9wYXRjaF9maWxlLCBjb21taXRzZXRfcmVxdWlyZXNfYnVpbGQpID0gKCQxLCBUUlVF
KSBXSEVSRSBjb21taXRzZXRfc2V0ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gODc4MzIn
LCBbZmlsZUEuaWRdKSwKKyAgICAgICAgICAgICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9z
ZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0Y2hfZmlsZSwgY29tbWl0c2V0X3JlcXVpcmVzX2J1
aWxkKSA9ICgkMSwgVFJVRSkgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0
X2NvbW1pdCA9IDk2MzM2JywgW2ZpbGVCLmlkXSkKICAgICAgICAgICAgIF0pOwogICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1w
b3JhcnlGaWxlT2ZTaXplSW5NQignYW5vdGhlci5kYXQnLCBsaW1pdEluTUIsICdjJyk7CkBAIC0y
NzcsNyArMjc3LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmlsZScsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsK
ICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBmaWxlQiA9
IHJlc3VsdC51cGxvYWRlZEZpbGU7Ci0gICAgICAgICAgICByZXR1cm4gZGIucXVlcnkoYFVQREFU
RSBjb21taXRfc2V0X2l0ZW1zIFNFVCAoY29tbWl0c2V0X3BhdGNoX2ZpbGUsIGNvbW1pdHNldF9y
b290X2ZpbGUpID0gKCQxLCAkMikKKyAgICAgICAgICAgIHJldHVybiBkYi5xdWVyeShgVVBEQVRF
IGNvbW1pdF9zZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0Y2hfZmlsZSwgY29tbWl0c2V0X3Jv
b3RfZmlsZSwgY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkKSA9ICgkMSwgJDIsIFRSVUUpCiAgICAg
ICAgICAgICAgICAgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0X2NvbW1p
dCA9IDg3ODMyYCwgW2ZpbGVBLmlkLCBmaWxlQi5pZF0pOwogICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlT2ZT
aXplSW5NQignYW5vdGhlci5kYXQnLCBsaW1pdEluTUIsICdjJyk7CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRh
dGEuanMKaW5kZXggZTFhNjlhZjNhOTcwN2Y4MWJmYmQ0NDE4YzllN2I2MzdmYjZmODkwMy4uNzNi
N2IzNzcxMjhhOTczNDI0NDU3Yzk1MDhhYWM1YzcxZjJjYzk5YSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2st
ZGF0YS5qcwpAQCAtMTMsNiArMTMsOCBAQCBNb2NrRGF0YSA9IHsKICAgICBvdGhlclBsYXRmb3Jt
SWQoKSB7IHJldHVybiAxMDE7IH0sCiAgICAgbWFjb3NSZXBvc2l0b3J5SWQoKSB7IHJldHVybiA5
OyB9LAogICAgIHdlYmtpdFJlcG9zaXRvcnlJZCgpIHsgcmV0dXJuIDExOyB9LAorICAgIG93bmVk
SlNDUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gMjEzOyB9LAorICAgIGpzY1JlcG9zaXRvcnlJZCgp
IHsgcmV0dXJuIDIyMjsgfSwKICAgICBnaXRXZWJraXRSZXBvc2l0b3J5SWQoKSB7IHJldHVybiAx
MTE7IH0sCiAgICAgc2hhcmVkUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gMTQ7IH0sCiAgICAgYWRk
TW9ja0NvbmZpZ3VyYXRpb246IGZ1bmN0aW9uIChkYikKQEAgLTIzLDYgKzI1LDggQEAgTW9ja0Rh
dGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy5t
YWNvc1JlcG9zaXRvcnlJZCgpLCBuYW1lOiAnbWFjT1MnfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgbmFtZTog
J1dlYktpdCd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB0
aGlzLnNoYXJlZFJlcG9zaXRvcnlJZCgpLCBuYW1lOiAnU2hhcmVkJ30pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHRoaXMub3duZWRKU0NSZXBvc2l0b3J5SWQo
KSwgb3duZXI6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCksIG5hbWU6ICdKYXZhU2NyaXB0Q29y
ZSd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB0aGlzLmpz
Y1JlcG9zaXRvcnlJZCgpLCBuYW1lOiAnSmF2YVNjcmlwdENvcmUnfSksCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMDAxLCBuYW1l
OiAnd2Via2l0LXN2bicsIHRyaWdnZXJhYmxlOiAxMDAwfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB0aGlzLm1hY29zUmVw
b3NpdG9yeUlkKCksIGdyb3VwOiAyMDAxfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdn
ZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB0aGlzLndlYmtpdFJlcG9zaXRvcnlJ
ZCgpLCBncm91cDogMjAwMX0pLApAQCAtMzEsNiArMzUsMTIgQEAgTW9ja0RhdGEgPSB7CiAgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDk2MzM2LCByZXBvc2l0b3J5OiB0aGlz
LndlYmtpdFJlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJzE5MjczNicsIHRpbWU6IChuZXcgRGF0
ZSgxNDQ4MjI1MzI1NjUwKSkudG9JU09TdHJpbmcoKX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywge2lkOiAxMTExNjgsIHJlcG9zaXRvcnk6IHRoaXMuc2hhcmVkUmVwb3NpdG9y
eUlkKCksIHJldmlzaW9uOiAnODAyMjknLCB0aW1lOiAnMjAxNi0wMy0wMlQyMzoxNzo1NC4zWid9
KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtpZDogMTExMTY5LCByZXBvc2l0
b3J5OiB0aGlzLnNoYXJlZFJlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJzgwMjMwJywgdGltZTog
JzIwMTYtMDMtMDJUMjM6Mzc6MTguMFonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dHMnLCB7aWQ6IDExNzk3LCByZXBvc2l0b3J5OiB0aGlzLmpzY1JlcG9zaXRvcnlJZCgpLCByZXZp
c2lvbjogJ2pzYy02MTYxJywgdGltZTogJzIwMTYtMDMtMDJUMjM6MTk6NTUuM1onfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDEyMDE3LCByZXBvc2l0b3J5OiB0aGlz
LmpzY1JlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJ2pzYy05MTkxJywgdGltZTogJzIwMTYtMDUt
MDJUMjM6MTM6NTcuMVonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6
IDE3OTcsIHJlcG9zaXRvcnk6IHRoaXMub3duZWRKU0NSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246
ICdvd25lZC1qc2MtNjE2MScsIHRpbWU6ICcyMDE2LTAzLTAyVDIzOjE5OjU1LjNaJ30pLAorICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiAyMDE3LCByZXBvc2l0b3J5OiB0aGlz
Lm93bmVkSlNDUmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnb3duZWQtanNjLTkxOTEnLCB0aW1l
OiAnMjAxNi0wNS0wMlQyMzoxMzo1Ny4xWid9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0X293bmVyc2hpcHMnLCB7b3duZXI6IDkzMTE2LCBvd25lZDogMTc5N30pLAorICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRfb3duZXJzaGlwcycsIHtvd25lcjogOTYzMzYsIG93bmVkOiAy
MDE3fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkcycsIHtpZDogOTAxLCBudW1iZXI6
ICc5MDEnLCB0aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwKICAgICAgICAgICAgIGRi
Lmluc2VydCgncGxhdGZvcm1zJywge2lkOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCBuYW1l
OiAnc29tZSBwbGF0Zm9ybSd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncGxhdGZvcm1zJywg
e2lkOiBNb2NrRGF0YS5vdGhlclBsYXRmb3JtSWQoKSwgbmFtZTogJ290aGVyIHBsYXRmb3JtJ30p
LApAQCAtNjMsNiArNzMsMTUgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dl
cmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDog
MjAwLCBncm91cDogNjAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgIF0p
OwogICAgIH0sCisgICAgYWRkQW5vdGhlclRyaWdnZXJhYmxlKGRiKSB7CisgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxl
cycsIHtpZDogMjM0NSwgbmFtZTogJ2J1aWxkLXdlYmtpdC1qc2MnfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiA0MDAyLCBuYW1l
OiAnbWFjLXN2bndlYmtpdC1qc2MnLCB0cmlnZ2VyYWJsZTogMjM0NX0pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy5t
YWNvc1JlcG9zaXRvcnlJZCgpLCBncm91cDogNDAwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0
KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBv
c2l0b3J5SWQoKSwgZ3JvdXA6IDQwMDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dl
cmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHRoaXMuanNjUmVwb3NpdG9yeUlkKCks
IGdyb3VwOiA0MDAyfSksCisgICAgICAgIF0pOworICAgIH0sCiAgICAgYWRkRW1wdHlUcmlnZ2Vy
YWJsZShkYikKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCkBAIC0xMTQsNiAr
MTMzLDMyIEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1
ZXN0cycsIHtpZDogNzExLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHRyaWdnZXJhYmxlLCByZXBv
c2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDEsIGNvbW1p
dF9zZXQ6IDQwMn0pLAogICAgICAgICBdKTsKICAgICB9LAorICAgIGFkZFRlc3RHcm91cFdpdGhP
d25lZENvbW1pdHMoZGIsIHN0YXR1c0xpc3QpCisgICAgeworCisgICAgICAgIGlmICghc3RhdHVz
TGlzdCkKKyAgICAgICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdw
ZW5kaW5nJywgJ3BlbmRpbmcnXTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgIHRoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIpLAorICAgICAgICAgICAgdGhpcy5h
ZGRBbm90aGVyVHJpZ2dlcmFibGUoZGIpLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNp
c190YXNrcycsIHtpZDogMTA4MCwgcGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3Nv
bWUgdGFzayB3aXRoIGNvbXBvbmVudCB0ZXN0JywKKyAgICAgICAgICAgICAgICBzdGFydF9ydW46
IDgwMSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKKyAgICAgICAg
ICAgICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6Mjcu
MVonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lk
OiA5MDAsIHRhc2s6IDEwODAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQg
dGVzdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwM30p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDAzLCBj
b21taXQ6IDg3ODMyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMn
LCB7c2V0OiA0MDMsIGNvbW1pdDogOTMxMTZ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwMywgY29tbWl0OiAxNzk3LCBjb21taXRfb3duZXI6IDkz
MTE2LCByZXF1aXJlc19idWlsZDogdHJ1ZX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRfc2V0cycsIHtpZDogNDA0fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRf
aXRlbXMnLCB7c2V0OiA0MDQsIGNvbW1pdDogODc4MzJ9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwNCwgY29tbWl0OiA5NjMzNn0pLAorICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDA0LCBjb21taXQ6IDIw
MTcsIGNvbW1pdF9vd25lcjogOTYzMzYsIHJlcXVpcmVzX2J1aWxkOiB0cnVlfSksCisgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDQsIHN0YXR1czogc3RhdHVz
TGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRm
b3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogOTAwLCBvcmRlcjogMCwgY29tbWl0X3NldDogNDAz
fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDUsIHN0
YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6
IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogOTAwLCBvcmRlcjogMSwgY29t
bWl0X3NldDogNDA0fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywg
e2lkOiA3MDYsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9z
aXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogOTAwLCBv
cmRlcjogMiwgY29tbWl0X3NldDogNDAzfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MDcsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFibGU6
IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBn
cm91cDogOTAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDA0fSksCisgICAgICAgIF0pOworICAg
IH0sCiAgICAgbW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXI6IGZ1bmN0aW9uICgp
CiAgICAgewogICAgICAgICByZXR1cm4gewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy92My1tb2RlbHMuanMKaW5kZXggMDUzMDdlNWNjZWI0ZWE2YjlmN2I4MmIxYWNhNWE3
ZjZiOGIzNmJiNi4uYWFkOGUxZTQwMmY3MmZjMzY3NzE4ZjI0NmMwODc1MDBiMDMzMDIwMiAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvdjMtbW9kZWxzLmpzCkBAIC0x
Niw2ICsxNiw3IEBAIGltcG9ydEZyb21WMygnbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMnLCAnQnVp
bGRSZXF1ZXN0Jyk7CiBpbXBvcnRGcm9tVjMoJ21vZGVscy9idWlsZGVyLmpzJywgJ0J1aWxkJyk7
CiBpbXBvcnRGcm9tVjMoJ21vZGVscy9idWlsZGVyLmpzJywgJ0J1aWxkZXInKTsKIGltcG9ydEZy
b21WMygnbW9kZWxzL2NvbW1pdC1sb2cuanMnLCAnQ29tbWl0TG9nJyk7CitpbXBvcnRGcm9tVjMo
J21vZGVscy9jb21taXQtc2V0LmpzJywgJ0N1c3RvbUNvbW1pdFNldCcpCiBpbXBvcnRGcm9tVjMo
J21vZGVscy9tYW5pZmVzdC5qcycsICdNYW5pZmVzdCcpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMv
bWVhc3VyZW1lbnQtYWRhcHRvci5qcycsICdNZWFzdXJlbWVudEFkYXB0b3InKTsKIGltcG9ydEZy
b21WMygnbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMnLCAnTWVhc3VyZW1lbnRDbHVzdGVy
Jyk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNv
dXJjZXMvbW9jay12My1tb2RlbHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMKaW5kZXggZmY1ZDE4Yzk1MjMyZGQ4M2Rk
ZmYxNmVkYTg5NzhlMWQyMzcxNzhiOC4uOTZhZWMyYjcxNjBiZWNiMjEzNjFjNzc4ZDRhNGIzN2Vm
YzlkMjliYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
cmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcwpAQCAtMTgsNiArMTgsNyBA
QCB2YXIgTW9ja01vZGVscyA9IHsKICAgICAgICAgICAgIE1vY2tNb2RlbHMub3N4ID0gUmVwb3Np
dG9yeS5lbnN1cmVTaW5nbGV0b24oOSwge25hbWU6ICdPUyBYJ30pOwogICAgICAgICAgICAgTW9j
a01vZGVscy5pb3MgPSBSZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbigyMiwge25hbWU6ICdpT1Mn
fSk7CiAgICAgICAgICAgICBNb2NrTW9kZWxzLndlYmtpdCA9IFJlcG9zaXRvcnkuZW5zdXJlU2lu
Z2xldG9uKDExLCB7bmFtZTogJ1dlYktpdCcsIHVybDogJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LyQxJ30pOworICAgICAgICAgICAgTW9ja01vZGVscy5vd25lZFdlYmtpdCA9IFJl
cG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDE5MSwge25hbWU6ICdXZWJLaXQnLCB1cmw6ICdodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8kMScsIG93bmVyOiA5fSk7CiAgICAgICAgICAg
ICBNb2NrTW9kZWxzLnNoYXJlZFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRv
bigxNiwge25hbWU6ICdTaGFyZWQnfSk7CiAgICAgICAgICAgICBNb2NrTW9kZWxzLm93bmVyUmVw
b3NpdG9yeSA9IFJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDExMSwge25hbWU6ICdPd25lciBS
ZXBvc2l0b3J5J30pOwogICAgICAgICAgICAgTW9ja01vZGVscy5vd25lZFJlcG9zaXRvcnkgPSBS
ZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbigxMTIsIHtuYW1lOiAnT3duZWQgUmVwb3NpdG9yeScs
IG93bmVyOiAxMTF9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321074</attachid>
            <date>2017-09-17 21:09:34 -0700</date>
            <delta_ts>2017-09-18 23:43:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175978-20170917210933.patch</filename>
            <type>text/plain</type>
            <size>85754</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBmNDhjZTYzZTE4MjI2NTk4MDMzMDExOGIxYmZiMzdiYjcwNDg2MzlkLi5jOWIwYzZmN2Ni
MGY4ZTg5ZGVjY2ZkYjYwMWZmYTFiOWUyMGYwNTRmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxNy0wOS0xMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZSBEYXNoYm9hcmQgYmFja2VuZCBzaG91
bGQgc3VwcG9ydCBBL0IgdGVzdGluZyBmb3Igb3duZWQgY29tcG9uZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYWNrZW5kIGNoYW5nZSBm
b3IgUGVyZm9ybWFuY2UgRGFzaGJvYXJkIHRvIHN1cHBvcnQgQS9CIHRlc3RpbmcgZm9yIG93bmVk
IGNvbXBvbmVudHMuCisgICAgICAgIEFkZGVkICdjb21taXRzZXRfY29tbWl0X293bmVyJyBhbmQg
J2NvbW1pdHNldF9yZXF1aXJlc19idWlsZCcgY29sdW1ucyB0byAnY29tbWl0X3NldF9pdGVtcycg
dGFibGUuCisgICAgICAgICAgICAnY29tbWl0c2V0X2NvbW1pdF9vd25lcicgcmVmZXJycyB0byBk
ZXRlcm1pbmUgYSBjb21taXQgd2l0aCBvd25lci4KKyAgICAgICAgICAgICdjb21taXRzZXRfcmVx
dWlyZXNfYnVpbGQnIGluZGljYXRlcyB3aGV0aGVyIGEgcm9vdCBidWlsZCBpcyByZXF1aXJlZC4K
KyAgICAgICAgICAgIFRoaXMgd2lsbCBiZSBzZXQgdHJ1ZSB3aGVuZXZlciBjb21taXRfc2V0X2l0
ZW0gc3BlY2lmaWVzIGEgcGF0Y2ggZmlsZSwKKyAgICAgICAgICAgICAgICBvciBjb21taXRfc2V0
X2l0ZW0gaXMgY29tbWl0IHdpdGggb3duZXIgY29tbWl0LAorICAgICAgICAgICAgICAgIG9yIGFu
eSBvdGhlciBjb21taXQgZnJvbSBzYW1lIHJlcG9zaXRvcnkgYW5kIGluIHNhbWUgYnVpbGQtcmVx
dWVzdCBncm91cCByZXF1aXJlcyBidWlsZC4KKyAgICAgICAgICAgIFNRTCBmb3IgdXBkYXRpbmcg
ZXhpc3RpbmcgZGF0YWJhc2U6CisgICAgICAgICAgICAgICAgJ0JFR0lOOworICAgICAgICAgICAg
ICAgICAgICBBTFRFUiBUQUJMRSBjb21taXRfc2V0X2l0ZW1zIEFERCBDT0xVTU4gY29tbWl0c2V0
X2NvbW1pdF9vd25lciBpbnRlZ2VyIFJFRkVSRU5DRVMgY29tbWl0cyBERUZBVUxUIE5VTEwsIEFE
RCBDT0xVTU4gY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkIGJvb2xlYW4gREVGQVVMVCBGQUxTRTsK
KyAgICAgICAgICAgICAgICAgICAgVVBEQVRFIFRBQkxFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIGNv
bW1pdHNldF9yZXF1aXJlc19idWlsZCA9IFRSVUUgV0hFUkUgY29tbWl0c2V0X3BhdGNoX2ZpbGUg
SVMgTk9UIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIEFMVEVSIFRBQkxFIGNvbW1pdF9zZXRf
aXRlbXMgQUREIGNvbW1pdHNldF9pdGVtX3dpdGhfcGF0Y2hfbXVzdF9yZXF1aXJlc19idWlsZCBD
SEVDSyAoY29tbWl0c2V0X3BhdGNoX2ZpbGUgSVMgTlVMTCBPUiBjb21taXRzZXRfcmVxdWlyZXNf
YnVpbGQgPSBUUlVFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFERCBDT05TVFJBSU5UIGNv
bW1pdHNldF9pdGVtX3dpdGhfb3duZWRfY29tbWl0X211c3RfcmVxdWlyZXNfYnVpbGQgQ0hFQ0sg
KGNvbW1pdHNldF9jb21taXRfb3duZXIgSVMgTlVMTCBPUiBjb21taXRzZXRfcmVxdWlyZXNfYnVp
bGQgPSBUUlVFKTsKKyAgICAgICAgICAgICAgICBFTkQ7JworCisgICAgICAgICogaW5pdC1kYXRh
YmFzZS5zcWw6IFVwZGF0ZWQgJ2NvbW1pdF9zZXRfaXRlbXMnIHRhYmxlLgorICAgICAgICAqIHB1
YmxpYy9hZG1pbi90cmlnZ2VyYWJsZXMucGhwOiBPbmx5IHRvcCBsZXZlbCByZXBvc2l0b3J5IHNo
b3VsZCBzaG93IG9uIHRyaWdnZXJhYmxlcyBwYWdlLgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRl
L2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwOiBBZGRlZCAnY29tbWl0T3duZXInIGFuZCAncmVx
dWlyZUJ1aWxkJyB0byAncmV2aXNpb25faXRlbXMnLiBBZGRlZCAnY29tbWl0T3duZXInIGZpZWxk
IHRvIGEgY29tbWl0LgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2RiLnBocDogU2hvdWxkIGJl
IGFibGUgdG8gaW5zZXJ0IGJvb2xlYW4gdmFsdWUgdG8gZGF0YWJhc2Ugd2l0aG91dCBleHBsaWN0
ZWQgY29udmVydCB0byAndCcgb3IgJ2YnLgorICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFw
aS9jcmVhdGUtdGVzdC1ncm91cC5waHA6CisgICAgICAgICAgICBBZGRlZCBsb2dpYyB0byBwcm9j
ZXNzICdjb21taXRPd25lcicgYW5kICdyZXF1aXJlQnVpbGQnIGluICdjb21taXRfc2V0X2l0ZW1z
Jy4KKyAgICAgICAgICAgIFJlbW92ZWQgYSAnRklYTUUnIHRoYXQgaGFzIGJlZW4gYWRkcmVzc2Vk
IGJlZm9yZSB0aGlzIGNvbW1pdC4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJl
cXVlc3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QuY29uc3RydWN0QnVpbGRSZXF1ZXN0c0Zy
b21EYXRhKTogU2V0ICdjb21taXRPd25lcicgZmllbGQgZm9yIGEgY29tbWl0IHNldCBpdGVtLgor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qczoKKyAgICAgICAgKENvbW1p
dFNldCk6IEFkZGVkIG1hcHMgZm9yIHJlcG9zaXRvcnkgdG8gY29tbWl0IG93bmVyIGFuZCB3aGV0
aGVyIGEgcmVwb3NpdG9yeSByZXF1aXJlcyBidWlsZHMuCisgICAgICAgIChDb21taXRTZXQucHJv
dG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLl91
cGRhdGVGcm9tT2JqZWN0KToKKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUub3duZXJSZXZp
c2lvbkZvclJlcG9zaXRvcnkpOiBSZXR1cm5zIG93bmVyIHJldmlzaW9uIGZvciBhIGdpdmVuIHJl
cG9zaXRvcnkgaW4gY3VycmVudCBjb21taXQgc2V0LgorICAgICAgICAoQ29tbWl0U2V0LnByb3Rv
dHlwZS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSk6IFJldHVybnMgd2hldGhlciBhIHJlcG9z
aXRvcnkgbmVlZCB0byBidWlsZC4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuZXF1YWxz
KTogRXF1YWxpdHkgY2hlY2sgc2hvdWxkIGluY2x1ZGUgMiBuZXcgbWFwcy4KKyAgICAgICAgKEN1
c3RvbUNvbW1pdFNldCk6IEN1c3RvbUNvbW1pdFNldCBzaG91bGQgYmUgYWJsZSB0byBzdG9yZSBj
b21taXQgd2l0aCBhbiBvd25lciBjb21taXQuCisgICAgICAgIChDdXN0b21Db21taXRTZXQucHJv
dG90eXBlLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSk6IEFkZGVkIGVhY2ggcmV2aXNpb24gbGlz
dCBlbnRyeSBzaG91bGQgaGF2ZSAnb3duZXJSZXZpc2lvbicobnVsbCBieSBkZWZhdWx0KS4KKyAg
ICAgICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUuZXF1YWxzKTogRXF1YWxpdHkgY2hlY2sg
c2hvdWxkIGFsc28gY2hlY2sgdGhlIGVxdWFsaXR5IG9mICdvd25lclJldmlzaW9uJy4KKyAgICAg
ICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkp
OiBSZXR1cm5zIGEgb3duZXIgcmV2aXNpb24gZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeS4KKyAgICAg
ICAgKiBwdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanM6CisgICAgICAgIChSZXBvc2l0b3J5
LnByb3RvdHlwZS5maW5kT3duZWRSZXBvc2l0b3J5QnlOYW1lKTogUmV0dXJuIGFuIHJlcG9zaXRv
cnkgb3duZWQgYnkgY3VycmVudCByZXBvc2l0b3J5IHdpdGggYSBnaXZlbiBuYW1lLgorICAgICAg
ICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczogQWRkZWQgJ293bmVyUmV2aXNpb24n
IGZpZWxkIGluIGVhY2ggZW50cnkgb2YgcmV2aXNpb25TZXQuCisgICAgICAgICogc2VydmVyLXRl
c3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogQWRkZWQgdGVzdHMuCisgICAgICAgICog
c2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzOiBB
ZGRlZCB0ZXN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBsb2Fk
LWZpbGUtdGVzdHMuanM6IEZpeCB1bml0IHRlc3RzIGJ5IHNldHRpbmcncmVxdWlyZXNfYnVpbGQn
IGZpZWxkIHRvIGJlIHRydWUgd2hlbiB1cGRhdGluZyBjb21taXRfc2V0X2l0ZW0gd2hpY2ggaGFz
IGEgcGF0Y2guLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpz
OiBBZGRlZCBtb2NrIGJ1aWxkIHJlcXVlc3RzIHdpdGggY29tbWl0IHNldHMgY29udGFpbiBvd25l
ZCBjb21taXRzLgorICAgICAgICAoTW9ja0RhdGEuanNjUmVwb3NpdG9yeUlkKTogUmV0dXJucyBp
ZCBmb3IgSmF2YVNjcmlwdHNDb3JlIHJlcG9zaXRvcnkuCisgICAgICAgIChNb2NrRGF0YS5hZGRN
b2NrQ29uZmlndXJhdGlvbik6IEFkZGVkIG1vY2sgSmF2YVNjcmlwdENvcmUgYW5kIG93bmVkIEph
dmFTY3JpcHRDb3JlIHJlcG9zaXRvcmllcyBhbmQgY29tbWl0cyBhc3NvY2lhdGVkIHdpdGggdGhl
bS4KKyAgICAgICAgKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKTogQWRkZWQgYSBKYXZh
U2NyaXB0Q29yZSByZXBvc2l0b3J5IHdpdGggV2ViS2l0IGFzIG93bmVyLgorICAgICAgICAoTW9j
a0RhdGEuYWRkTW9ja0NvbmZpZ3VyYXRpb24pOiBBZGRlZCBtb2NrIGRhdGEgZm9yIHRlc3QgY2Fz
ZXMgdGhvc2UgcmVxdWlyZSBhIGNvbW1pdCB3aXRoIGEgb3duZXIgY29tbWl0LgorICAgICAgICAo
TW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyk6IEFkZGVkIG1vY2sgZGF0YSBm
b3IgYW5hbHlzaXMgdGFza3MsIHRoZSBidWlsZCByZXF1aXJlcyBvZiB3aGljaCBjb250YWlucyBv
d25lZCBjb21taXRzLgorICAgICAgICAoTW9ja0RhdGEuc2V0IGFkZEFub3RoZXJUcmlnZ2VyYWJs
ZSk6IEFkZGVkIGFub3RoZXIgdHJpZ2dlcmFibGUgd2hpY2ggaGFzIG1hYywgd2Via2l0IGFuZCBq
YXZhc2NyaXB0IGNvcmUgcmVwb3NpdG9yaWVzIGFzIHRyaWdnZXJhYmxlIHJlcG9zaXRvcnkgZ3Jv
dXAuCisgICAgICAgIChNb2NrRGF0YS5zZXQgYWRkQW5vdGhlck1vY2tUZXN0R3JvdXApOiBBZGRl
ZCBhbm90aGVyIG1vY2sgdGVzdCBncm91cC4KKyAgICAgICAgKiB0b29scy9qcy92My1tb2RlbHMu
anM6IEltcG9ydCBDdXN0b21Db21taXRTZXQuCisgICAgICAgICogdW5pdC10ZXN0cy9yZXNvdXJj
ZXMvbW9jay12My1tb2RlbHMuanM6IEFkZGVkIGFuIG93bmVkIHdlYmtpdCByZXBvc2l0b3J5Lgor
ICAgICAgICAqIHVuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qczogQWRkZWQgdW5pdCB0ZXN0
cyBDdXN0b21Db21taXRTZXQuCisKIDIwMTctMDktMTUgIERld2VpIFpodSAgPGRld2VpX3podUBh
cHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIG5vdCBtYXJrIGEgcGxhdGZvcm0gYXMgbWlzc2lu
ZyBpbiBzdW1tYXJ5IHBhZ2UgaWYgYWxsIGV4cGVjdGluZyBtZXRyaWNzIGFyZSBleGx1Y2RlZC4K
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbCBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAppbmRleCBjMTQzNjky
MDliMGQ0ZTdhNjAwYWJlZWI0N2JlMGNiOGM2ZmQ1MjM3Li41Mjc4OGY3ODBmODU4MzU4NTc0M2Ew
MDZkZTllNTJmODAwMGJkZjA0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
aW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0
YWJhc2Uuc3FsCkBAIC0yODcsMTAgKzI4NywxNCBAQCBDUkVBVEUgVEFCTEUgY29tbWl0X3NldHMg
KAogQ1JFQVRFIFRBQkxFIGNvbW1pdF9zZXRfaXRlbXMgKAogICAgIGNvbW1pdHNldF9zZXQgaW50
ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdF9zZXRzIE5PVCBOVUxMLAogICAgIGNvbW1pdHNldF9jb21t
aXQgaW50ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdHMsCisgICAgY29tbWl0c2V0X2NvbW1pdF9vd25l
ciBpbnRlZ2VyIFJFRkVSRU5DRVMgY29tbWl0cyBERUZBVUxUIE5VTEwsCiAgICAgY29tbWl0c2V0
X3BhdGNoX2ZpbGUgaW50ZWdlciBSRUZFUkVOQ0VTIHVwbG9hZGVkX2ZpbGVzLAogICAgIGNvbW1p
dHNldF9yb290X2ZpbGUgaW50ZWdlciBSRUZFUkVOQ0VTIHVwbG9hZGVkX2ZpbGVzLAorICAgIGNv
bW1pdHNldF9yZXF1aXJlc19idWlsZCBib29sZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RS
QUlOVCBjb21taXRzZXRfbXVzdF9oYXZlX2NvbW1pdF9vcl9yb290IENIRUNLIChjb21taXRzZXRf
Y29tbWl0IElTIE5PVCBOVUxMIE9SIGNvbW1pdHNldF9yb290X2ZpbGUgSVMgTk9UIE5VTEwpLAot
ICAgIENPTlNUUkFJTlQgY29tbWl0c2V0X3dpdGhfcGF0Y2hfbXVzdF9oYXZlX2NvbW1pdCBDSEVD
SyAoY29tbWl0c2V0X3BhdGNoX2ZpbGUgSVMgTlVMTCBPUiBjb21taXRzZXRfY29tbWl0IElTIE5P
VCBOVUxMKSk7CisgICAgQ09OU1RSQUlOVCBjb21taXRzZXRfd2l0aF9wYXRjaF9tdXN0X2hhdmVf
Y29tbWl0IENIRUNLIChjb21taXRzZXRfcGF0Y2hfZmlsZSBJUyBOVUxMIE9SIGNvbW1pdHNldF9j
b21taXQgSVMgTk9UIE5VTEwpLAorICAgIENPTlNUUkFJTlQgY29tbWl0c2V0X2l0ZW1fd2l0aF9w
YXRjaF9tdXN0X3JlcXVpcmVzX2J1aWxkIENIRUNLIChjb21taXRzZXRfcGF0Y2hfZmlsZSBJUyBO
VUxMIE9SIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCA9IFRSVUUpLAorICAgIENPTlNUUkFJTlQg
Y29tbWl0c2V0X2l0ZW1fd2l0aF9vd25lZF9jb21taXRfbXVzdF9yZXF1aXJlc19idWlsZCBDSEVD
SyAoY29tbWl0c2V0X2NvbW1pdF9vd25lciBJUyBOVUxMIE9SIGNvbW1pdHNldF9yZXF1aXJlc19i
dWlsZCA9IFRSVUUpKTsKIAogQ1JFQVRFIFRZUEUgYnVpbGRfcmVxdWVzdF9zdGF0dXNfdHlwZSBh
cyBFTlVNICgncGVuZGluZycsICdzY2hlZHVsZWQnLCAncnVubmluZycsICdmYWlsZWQnLCAnY29t
cGxldGVkJywgJ2NhbmNlbGVkJyk7CiBDUkVBVEUgVEFCTEUgYnVpbGRfcmVxdWVzdHMgKApkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJs
ZXMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90cmlnZ2VyYWJs
ZXMucGhwCmluZGV4IDIzNGJmM2Q1ODc2OGNjNWY4M2MzZTc3NzE1NTJmNTY0ZmE3MDg5YTkuLmEw
MTgxZjc2NmM1NWYzMzc1ZDIzNjBiNTBiODE4ZTg2NWUzYTc2M2IgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYWRtaW4vdHJpZ2dlcmFibGVzLnBocAorKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJhYmxlcy5waHAKQEAg
LTc2LDcgKzc2LDcgQEAgaWYgKCRkYikgewogICAgICAgICB9CiAgICAgfQogCi0gICAgJHJlcG9z
aXRvcnlfcm93cyA9ICRkYi0+ZmV0Y2hfdGFibGUoJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5
X25hbWUnKTsKKyAgICAkcmVwb3NpdG9yeV9yb3dzID0gJGRiLT5zZWxlY3Rfcm93cygncmVwb3Np
dG9yaWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnb3duZXInID0+IE5VTEwpLCAnbmFtZScpOwog
CiAgICAgJHBhZ2UgPSBuZXcgQWRtaW5pc3RyYXRpdmVQYWdlKCRkYiwgJ2J1aWxkX3RyaWdnZXJh
YmxlcycsICd0cmlnZ2VyYWJsZScsIGFycmF5KAogICAgICAgICAnbmFtZScgPT4gYXJyYXkoJ2Vk
aXRpbmdfbW9kZScgPT4gJ3N0cmluZycpLApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIu
cGhwCmluZGV4IDc2YTk2ZDQwM2JkNTZkNTIzZGVjYzY5OTlkZGNkMzY4NzUxYWYxMTkuLmVkOTk5
YzQ1M2ZjNjE1OThjMjljMDFmYTU4ODY5NjY1MDU0NTYxYjEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBo
cAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVx
dWVzdHMtZmV0Y2hlci5waHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0
c0ZldGNoZXIgewogICAgICAgICAgICAgaWYgKCRyb290X2ZpbGVfaWQpCiAgICAgICAgICAgICAg
ICAgJHRoaXMtPmFkZF91cGxvYWRlZF9maWxlKCRyb290X2ZpbGVfaWQpOwogCi0gICAgICAgICAg
ICBhcnJheV9wdXNoKCRyZXZpc2lvbl9pdGVtcywgYXJyYXkoJ2NvbW1pdCcgPT4gJHJvd1snY29t
bWl0X2lkJ10sICdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQsICdyb290RmlsZScgPT4gJHJvb3Rf
ZmlsZV9pZCkpOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkcmV2aXNpb25faXRlbXMsIGFycmF5
KAorICAgICAgICAgICAgICAgICdjb21taXQnID0+ICRyb3dbJ2NvbW1pdF9pZCddLAorICAgICAg
ICAgICAgICAgICdwYXRjaCcgPT4gJHBhdGNoX2ZpbGVfaWQsCisgICAgICAgICAgICAgICAgJ3Jv
b3RGaWxlJyA9PiAkcm9vdF9maWxlX2lkLAorICAgICAgICAgICAgICAgICdjb21taXRPd25lcicg
PT4gJHJvd1snY29tbWl0c2V0X2NvbW1pdF9vd25lciddLAorICAgICAgICAgICAgICAgICdyZXF1
aXJlc0J1aWxkJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkcm93Wydjb21taXRzZXRfcmVxdWlyZXNf
YnVpbGQnXSkpKTsKIAogICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGNvbW1pdF9p
ZCwgJHRoaXMtPmNvbW1pdHNfYnlfaWQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTMwLDYgKzEzNSw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdHNGZXRjaGVyIHsKICAgICAgICAgICAg
IGFycmF5X3B1c2goJHRoaXMtPmNvbW1pdHMsIGFycmF5KAogICAgICAgICAgICAgICAgICdpZCcg
PT4gJGNvbW1pdF9pZCwKICAgICAgICAgICAgICAgICAncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRv
cnlfaWQsCisgICAgICAgICAgICAgICAgJ2NvbW1pdE93bmVyJyA9PiAkcm93Wydjb21taXRzZXRf
Y29tbWl0X293bmVyJ10sCiAgICAgICAgICAgICAgICAgJ3JldmlzaW9uJyA9PiAkcmV2aXNpb24s
CiAgICAgICAgICAgICAgICAgJ3RpbWUnID0+IERhdGFiYXNlOjp0b19qc190aW1lKCRjb21taXRf
dGltZSkpKTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9p
bmNsdWRlL2RiLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9k
Yi5waHAKaW5kZXggMjIxMmYwZmVmNmZmYjI2ZDkwODVhNTI4ZTEyNWE3NTBkZTlkOWMxYi4uZWQw
ZTFkOGNmNzZmMTdkMmVmNmQ5MmZhYTdiYzJjZTBmZjcwMTQyMSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAorKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwCkBAIC0xMTgsNiArMTE4LDggQEAg
Y2xhc3MgRGF0YWJhc2UKICAgICAgICAgICAgIGFzc2VydChjdHlwZV9hbG51bV91bmRlcnNjb3Jl
KCRuYW1lKSk7CiAgICAgICAgICAgICBhcnJheV9wdXNoKCRjb2x1bW5fbmFtZXMsICRuYW1lKTsK
ICAgICAgICAgICAgIGFycmF5X3B1c2goJHBsYWNlaG9sZGVycywgJyQnIC4gJGkpOworICAgICAg
ICAgICAgaWYgKGlzX2Jvb2woJGN1cnJlbnRfdmFsdWUpKQorICAgICAgICAgICAgICAgICRjdXJy
ZW50X3ZhbHVlID0gJHRoaXMtPnRvX2RhdGFiYXNlX2Jvb2xlYW4oJGN1cnJlbnRfdmFsdWUpOwog
ICAgICAgICAgICAgYXJyYXlfcHVzaCgkdmFsdWVzLCAkY3VycmVudF92YWx1ZSk7CiAgICAgICAg
ICAgICAkaSsrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAu
cGhwCmluZGV4IGIxNTExMThmNmYxMjBlZmE0MDA4OWVjYjRmNDY5M2VhMjZkMDUxMjEuLmJmMTcz
NmRhYTFjZGRjYTEwMzEyYTkxNTVlYTI4MWIyMzlmZGE4OGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAu
cGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkv
Y3JlYXRlLXRlc3QtZ3JvdXAucGhwCkBAIC01Miw3ICs1Miw2IEBAIGZ1bmN0aW9uIG1haW4oKQog
ICAgICAgICBpZiAoJGR1cGxpY2F0ZV90ZXN0X2dyb3VwKQogICAgICAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdEdXBsaWNhdGVUZXN0R3JvdXBOYW1lJywgYXJyYXkoJ3Rhc2snID0+ICR0YXNrX2lk
LCAndGVzdEdyb3VwJyA9PiAkZHVwbGljYXRlX3Rlc3RfZ3JvdXBbJ3Rlc3Rncm91cF9pZCddKSk7
CiAKLSAgICAgICAgLy8gRklYTUU6IEFkZCBhIGNoZWNrIGZvciBkdXBsaWNhdGUgdGVzdCBncm91
cCBuYW1lLgogICAgICAgICAkdHJpZ2dlcmFibGUgPSBmaW5kX3RyaWdnZXJhYmxlX2Zvcl90YXNr
KCRkYiwgJHRhc2tfaWQpOwogICAgICAgICBpZiAoJHRyaWdnZXJhYmxlKSB7CiAgICAgICAgICAg
ICAkdHJpZ2dlcmFibGVfaWQgPSAkdHJpZ2dlcmFibGVbJ2lkJ107CkBAIC05NCw3ICs5Myw5IEBA
IGZ1bmN0aW9uIG1haW4oKQogICAgICAgICAkbmVlZF90b19idWlsZCA9IEZBTFNFOwogICAgICAg
ICBmb3JlYWNoICgkY29tbWl0X2xpc3RbJ3NldCddIGFzICRjb21taXRfcm93KSB7CiAgICAgICAg
ICAgICAkY29tbWl0X3Jvd1snc2V0J10gPSAkY29tbWl0X3NldF9pZDsKLSAgICAgICAgICAgICRu
ZWVkX3RvX2J1aWxkID0gJG5lZWRfdG9fYnVpbGQgfHwgJGNvbW1pdF9yb3dbJ3BhdGNoX2ZpbGUn
XTsKKyAgICAgICAgICAgICRyZXF1aXJlc19idWlsZCA9ICAkY29tbWl0X3Jvd1sncmVxdWlyZXNf
YnVpbGQnXTsKKyAgICAgICAgICAgIGFzc2VydChpc19ib29sKCRyZXF1aXJlc19idWlsZCkpOwor
ICAgICAgICAgICAgJG5lZWRfdG9fYnVpbGQgPSAkbmVlZF90b19idWlsZCB8fCAkcmVxdWlyZXNf
YnVpbGQ7CiAgICAgICAgICAgICAkZGItPmluc2VydF9yb3coJ2NvbW1pdF9zZXRfaXRlbXMnLCAn
Y29tbWl0c2V0JywgJGNvbW1pdF9yb3csICdjb21taXQnKTsKICAgICAgICAgfQogICAgICAgICAk
cmVwb3NpdG9yeV9ncm91cCA9ICRjb21taXRfbGlzdFsncmVwb3NpdG9yeV9ncm91cCddOwpAQCAt
MTI5LDcgKzEzMCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgICAgICAgICAgICAgICdvcmRlcicg
PT4gJG9yZGVyLAogICAgICAgICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkY29uZmlnWydjb21t
aXRfc2V0J10pKTsKICAgICAgICAgICAgICRvcmRlcisrOwotICAgICAgICB9ICAgICAgICAKKyAg
ICAgICAgfQogICAgIH0KIAogICAgICRvcmRlciA9IDA7CkBAIC0xNTksNiArMTYwLDkgQEAgZnVu
Y3Rpb24gY29tbWl0X3NldHNfZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdnZXJhYmxlX2lk
LCAkcmV2aXNpb25fc2V0X2xpc3QKIAogICAgICRmaW5kZXIgPSBuZXcgUmVwb3NpdG9yeUdyb3Vw
RmluZGVyKCRkYiwgJHRyaWdnZXJhYmxlX2lkKTsKICAgICAkY29tbWl0X3NldF9saXN0ID0gYXJy
YXkoKTsKKyAgICAkcmVwb3NpdG9yeV9vd25lcl9saXN0ID0gYXJyYXkoKTsKKyAgICAkcmVwb3Np
dG9yaWVzX3JlcXVpcmVfYnVpbGQgPSBhcnJheSgpOworICAgICRjb21taXRfc2V0X2l0ZW1zX2J5
X3JlcG9zaXRvcnkgPSBhcnJheSgpOwogICAgIGZvcmVhY2ggKCRyZXZpc2lvbl9zZXRfbGlzdCBh
cyAkcmV2aXNpb25fc2V0KSB7CiAgICAgICAgIGlmICghY291bnQoJHJldmlzaW9uX3NldCkpCiAg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXZpc2lvblNldHMnLCBhcnJheSgn
cmV2aXNpb25TZXRzJyA9PiAkcmV2aXNpb25fc2V0X2xpc3QpKTsKQEAgLTE2NiwxMyArMTcwLDE1
IEBAIGZ1bmN0aW9uIGNvbW1pdF9zZXRzX2Zyb21fcmV2aXNpb25fc2V0cygkZGIsICR0cmlnZ2Vy
YWJsZV9pZCwgJHJldmlzaW9uX3NldF9saXN0CiAgICAgICAgICRjb21taXRfc2V0ID0gYXJyYXko
KTsKICAgICAgICAgJHJlcG9zaXRvcnlfbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICRyZXBvc2l0
b3J5X3dpdGhfcGF0Y2ggPSBhcnJheSgpOworICAgICAgICAkcmVxdWlyZWRfb3duZXJfY29tbWl0
cyA9IGFycmF5KCk7CisgICAgICAgICRvd25lcl9jb21taXRzX2luX3NldCA9IGFycmF5KCk7CiAg
ICAgICAgIGZvcmVhY2ggKCRyZXZpc2lvbl9zZXQgYXMgJHJlcG9zaXRvcnlfaWQgPT4gJGRhdGEp
IHsKICAgICAgICAgICAgIGlmICgkcmVwb3NpdG9yeV9pZCA9PSAnY3VzdG9tUm9vdHMnKSB7CiAg
ICAgICAgICAgICAgICAgJGZpbGVfaWRfbGlzdCA9ICRkYXRhOwogICAgICAgICAgICAgICAgIGZv
cmVhY2ggKCRmaWxlX2lkX2xpc3QgYXMgJGZpbGVfaWQpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc19udW1lcmljKCRmaWxlX2lkKSB8fCAhJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCd1cGxv
YWRlZF9maWxlcycsICdmaWxlJywgYXJyYXkoJ2lkJyA9PiAkZmlsZV9pZCkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkVXBsb2FkZWRGaWxlJywgYXJy
YXkoJ2ZpbGUnID0+ICRmaWxlX2lkKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2go
JGNvbW1pdF9zZXQsIGFycmF5KCdyb290X2ZpbGUnID0+ICRmaWxlX2lkLCAncGF0Y2hfZmlsZScg
PT4gTlVMTCkpOworICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0LCBh
cnJheSgncm9vdF9maWxlJyA9PiAkZmlsZV9pZCwgJ3BhdGNoX2ZpbGUnID0+IE5VTEwsICdyZXF1
aXJlc19idWlsZCcgPT4gRkFMU0UsICdjb21taXRfb3duZXInID0+IE5VTEwpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0x
ODcsMzMgKzE5Myw2NSBAQCBmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3JldmlzaW9uX3NldHMo
JGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdAogICAgICAgICAgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJldmlzaW9uJywgYXJyYXkoJ3JlcG9zaXRvcnknID0+
ICRyZXBvc2l0b3J5X2lkLCAnZGF0YScgPT4gJGRhdGEpKTsKICAgICAgICAgICAgICRjb21taXRf
aWQgPSBDb21taXRMb2dGZXRjaGVyOjpmaW5kX2NvbW1pdF9pZF9ieV9yZXZpc2lvbigkZGIsICRy
ZXBvc2l0b3J5X2lkLCAkcmV2aXNpb24pOwogICAgICAgICAgICAgaWYgKCRjb21taXRfaWQgPCAw
KQotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQW1iaWdpb3VzUmV2aXNpb24nLCBh
cnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHJldmlz
aW9uKSk7CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdBbWJpZ3VvdXNSZXZpc2lv
bicsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9PiAk
cmV2aXNpb24pKTsKICAgICAgICAgICAgIGlmICghJGNvbW1pdF9pZCkKICAgICAgICAgICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ1JldmlzaW9uTm90Rm91bmQnLCBhcnJheSgncmVwb3NpdG9yeScg
PT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHJldmlzaW9uKSk7CiAKKyAgICAgICAg
ICAgICRvd25lcl9yZXZpc2lvbiA9IGFycmF5X2dldCgkZGF0YSwgJ293bmVyUmV2aXNpb24nKTsK
ICAgICAgICAgICAgICRwYXRjaF9maWxlX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAncGF0Y2gnKTsK
ICAgICAgICAgICAgIGlmICgkcGF0Y2hfZmlsZV9pZCkgewogICAgICAgICAgICAgICAgIGlmICgh
aXNfbnVtZXJpYygkcGF0Y2hfZmlsZV9pZCkgfHwgISRkYi0+c2VsZWN0X2ZpcnN0X3JvdygndXBs
b2FkZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdpZCcgPT4gJHBhdGNoX2ZpbGVfaWQpKSkKICAg
ICAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUGF0Y2hGaWxlJywgYXJy
YXkoJ3BhdGNoJyA9PiAkcGF0Y2hfZmlsZV9pZCkpOwogICAgICAgICAgICAgICAgIGFycmF5X3B1
c2goJHJlcG9zaXRvcnlfd2l0aF9wYXRjaCwgJHJlcG9zaXRvcnlfaWQpOworICAgICAgICAgICAg
ICAgICRyZXBvc2l0b3JpZXNfcmVxdWlyZV9idWlsZFskcmVwb3NpdG9yeV9pZF0gPSAgVFJVRTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJy
YXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pZCwgJ3BhdGNoX2ZpbGUnID0+ICRwYXRjaF9maWxlX2lk
KSk7CisgICAgICAgICAgICAkcmVwb3NpdG9yeSA9IE5VTEw7CisgICAgICAgICAgICAkb3duZXJf
Y29tbWl0ID0gTlVMTDsKKyAgICAgICAgICAgIGlmICgkb3duZXJfcmV2aXNpb24pIHsKKyAgICAg
ICAgICAgICAgICAkcmVwb3NpdG9yeSA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygncmVwb3NpdG9y
aWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnaWQnID0+IGludHZhbCgkcmVwb3NpdG9yeV9pZCkp
KTsKKyAgICAgICAgICAgICAgICBpZiAoISRyZXBvc2l0b3J5KQorICAgICAgICAgICAgICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ1JlcG9zaXRvcnlOb3RGb3VuZCcsIGFycmF5KCdyZXBvc2l0b3J5
JyA9PiAkcmVwb3NpdG9yeV9pZCkpOworICAgICAgICAgICAgICAgICRvd25lcl9jb21taXQgPSAk
ZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJyYXkoJ3JlcG9zaXRv
cnknID0+ICRyZXBvc2l0b3J5WydyZXBvc2l0b3J5X293bmVyJ10sICdyZXZpc2lvbicgPT4gJG93
bmVyX3JldmlzaW9uKSk7CisgICAgICAgICAgICAgICAgaWYgKCEkb3duZXJfY29tbWl0KQorICAg
ICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRPd25lclJldmlzaW9uJywg
YXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5WydyZXBvc2l0b3J5X293bmVyJ10sICdy
ZXZpc2lvbicgPT4gJG93bmVyX3JldmlzaW9uKSk7CisgICAgICAgICAgICAgICAgaWYgKCEkZGIt
PnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdF9vd25lcnNoaXBzJywgJ2NvbW1pdCcsIGFycmF5KCdv
d25lZCcgPT4gJGNvbW1pdF9pZCwgJ293bmVyJyA9PiAkb3duZXJfY29tbWl0Wydjb21taXRfaWQn
XSkpKQorICAgICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRDb21taXRP
d25lcnNoaXAnLCBhcnJheSgnY29tbWl0T3duZXInID0+ICRvd25lcl9jb21taXRbJ2NvbW1pdF9p
ZCddLCAnY29tbWl0T3duZWQnID0+ICRjb21taXRfaWQpKTsKKyAgICAgICAgICAgICAgICAkcmVx
dWlyZWRfb3duZXJfY29tbWl0c1skb3duZXJfY29tbWl0Wydjb21taXRfaWQnXV0gPSBUUlVFOwor
ICAgICAgICAgICAgICAgICRyZXBvc2l0b3JpZXNfcmVxdWlyZV9idWlsZFskcmVwb3NpdG9yeV9p
ZF0gPSAgVFJVRTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICRvd25lcl9j
b21taXRzX2luX3NldFskY29tbWl0X2lkXSA9IFRSVUU7CisKKyAgICAgICAgICAgICRvd25lcl9j
b21taXRfaWQgPSAkb3duZXJfY29tbWl0ID8gJG93bmVyX2NvbW1pdFsnY29tbWl0X2lkJ10gOiBO
VUxMOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X3NldCwgYXJyYXkoJ2NvbW1pdCcg
PT4gJGNvbW1pdF9pZCwgJ3BhdGNoX2ZpbGUnID0+ICRwYXRjaF9maWxlX2lkLCAncmVxdWlyZXNf
YnVpbGQnID0+IEZBTFNFLCAnY29tbWl0X293bmVyJyA9PiAkb3duZXJfY29tbWl0X2lkKSk7CisK
KyAgICAgICAgICAgIGFycmF5X2Vuc3VyZV9pdGVtX2hhc19hcnJheSgkY29tbWl0X3NldF9pdGVt
c19ieV9yZXBvc2l0b3J5LCAkcmVwb3NpdG9yeV9pZCk7CisgICAgICAgICAgICAkY29tbWl0X3Nl
dF9pdGVtc19ieV9yZXBvc2l0b3J5WyRyZXBvc2l0b3J5X2lkXVtdID0gJiRjb21taXRfc2V0W2Nv
dW50KCRjb21taXRfc2V0KSAtIDFdOworCisgICAgICAgICAgICBpZiAoJHJlcG9zaXRvcnkgJiYg
JHJlcG9zaXRvcnlbJ3JlcG9zaXRvcnlfb3duZXInXSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGFycmF5X3B1c2goJHJlcG9zaXRvcnlfbGlzdCwgJHJlcG9zaXRvcnlf
aWQpOwogICAgICAgICB9Ci0KICAgICAgICAgJHJlcG9zaXRvcnlfZ3JvdXBfaWQgPSAkZmluZGVy
LT5maW5kX2J5X3JlcG9zaXRvcmllcygkcmVwb3NpdG9yeV9saXN0KTsKICAgICAgICAgaWYgKCEk
cmVwb3NpdG9yeV9ncm91cF9pZCkKLSAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRj
aGluZ1JlcG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpcycgPT4gJHJlcG9zaXRvcnlf
bGlzdCkpOworICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9y
eUdyb3VwJywgYXJyYXkoJ3JlcG9zaXRvcmllcycgPT4gJHJlcG9zaXRvcnlfbGlzdCkpOwogCiAg
ICAgICAgIGZvcmVhY2ggKCRyZXBvc2l0b3J5X3dpdGhfcGF0Y2ggYXMgJHJlcG9zaXRvcnlfaWQp
IHsKICAgICAgICAgICAgIGlmICghJGZpbmRlci0+YWNjZXB0c19wYXRjaCgkcmVwb3NpdG9yeV9n
cm91cF9pZCwgJHJlcG9zaXRvcnlfaWQpKQogICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignUGF0Y2hOb3RBY2NlcHRlZCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9p
ZCwgJ3JlcG9zaXRvcnlHcm91cCcgPT4gJHJlcG9zaXRvcnlfZ3JvdXBfaWQpKTsKICAgICAgICAg
fQogCisgICAgICAgIGZvcmVhY2goYXJyYXlfa2V5cygkcmVxdWlyZWRfb3duZXJfY29tbWl0cykg
YXMgJHJlcXVpcmVkX293bmVyX2NvbW1pdCkgeworICAgICAgICAgICAgaWYgKCFhcnJheV9nZXQo
JG93bmVyX2NvbW1pdHNfaW5fc2V0LCAkcmVxdWlyZWRfb3duZXJfY29tbWl0LCBGQUxTRSkpCisg
ICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdDb21taXRPd25lck11c3RFeGlzdEluQ29t
bWl0U2V0JywgYXJyYXkoJ293bmVyX2NvbW1pdCcgPT4gJHJlcXVpcmVkX293bmVyX2NvbW1pdCkp
OworICAgICAgICB9CiAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRfbGlzdCwgYXJyYXko
J3JlcG9zaXRvcnlfZ3JvdXAnID0+ICRyZXBvc2l0b3J5X2dyb3VwX2lkLCAnc2V0JyA9PiAkY29t
bWl0X3NldCkpOwogICAgIH0KIAorICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJHJlcG9zaXRvcmll
c19yZXF1aXJlX2J1aWxkKSBhcyAkcmVwb3NpdG9yeV9pZCkgeworICAgICAgICBmb3JlYWNoKCRj
b21taXRfc2V0X2l0ZW1zX2J5X3JlcG9zaXRvcnlbJHJlcG9zaXRvcnlfaWRdIGFzICYkY29tbWl0
X3NldF9pdGVtKQorICAgICAgICAgICAgJGNvbW1pdF9zZXRfaXRlbVsncmVxdWlyZXNfYnVpbGQn
XSA9IFRSVUU7CisgICAgfQogICAgIHJldHVybiAkY29tbWl0X3NldF9saXN0OwogfQogCkBAIC0y
MzUsMTQgKzI3MywxNCBAQCBmdW5jdGlvbiBlbnN1cmVfY29tbWl0X3NldHMoJGRiLCAkdHJpZ2dl
cmFibGVfaWQsICRjb21taXRfc2V0c19pbmZvKSB7CiAgICAgICAgICAgICBpZiAoISRjb21taXQp
CiAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdSZXZpc2lvbk5vdEZvdW5kJywgYXJy
YXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X25hbWUsICdyZXZpc2lvbicgPT4gJHJldmlz
aW9uKSk7CiAgICAgICAgICAgICBhcnJheV9zZXRfZGVmYXVsdCgkY29tbWl0X3NldHMsICRpLCBh
cnJheSgnc2V0JyA9PiBhcnJheSgpKSk7Ci0gICAgICAgICAgICBhcnJheV9wdXNoKCRjb21taXRf
c2V0c1skaV1bJ3NldCddLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0Wydjb21taXRfaWQnXSwg
J3BhdGNoX2ZpbGUnID0+IE5VTEwpKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9z
ZXRzWyRpXVsnc2V0J10sIGFycmF5KCdjb21taXQnID0+ICRjb21taXRbJ2NvbW1pdF9pZCddLCAn
cGF0Y2hfZmlsZScgPT4gTlVMTCwgJ3JlcXVpcmVzX2J1aWxkJyA9PiBGQUxTRSwgJ2NvbW1pdF9v
d25lcicgPT4gTlVMTCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgJGZpbmRlciA9IG5ldyBS
ZXBvc2l0b3J5R3JvdXBGaW5kZXIoJGRiLCAkdHJpZ2dlcmFibGVfaWQpOwogICAgICRyZXBvc2l0
b3J5X2dyb3VwX2lkID0gJGZpbmRlci0+ZmluZF9ieV9yZXBvc2l0b3JpZXMoJHJlcG9zaXRvcnlf
bGlzdCk7CiAgICAgaWYgKCEkcmVwb3NpdG9yeV9ncm91cF9pZCkKLSAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdOb01hdGNoaW5nUmVwb3NpdG9yeUdyb3VwJywgYXJyYXkoJ3JlcG9zaXRvcmlzJyA9
PiAkcmVwb3NpdG9yeV9saXN0KSk7CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTm9NYXRjaGlu
Z1JlcG9zaXRvcnlHcm91cCcsIGFycmF5KCdyZXBvc2l0b3JpZXMnID0+ICRyZXBvc2l0b3J5X2xp
c3QpKTsKIAogICAgIGlmIChjb3VudCgkY29tbWl0X3NldHMpIDwgMikKICAgICAgICAgZXhpdF93
aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0U2V0cycsIGFycmF5KCdjb21taXRTZXRzJyA9PiAkY29t
bWl0X3NldHNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggODE5YjYzYzRmZWQ3N2Nj
ZWFiMzI0ZWQyODVhOGE4YTdkZGMwNDcyOC4uMDZlOTJkOGM1NDU3MzlkOWM5NmJjMTM4YWQ1NGI3
MjIzYTc3YTdmNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC0xNDMsNiArMTQzLDcgQEAgY2xh
c3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgICAgICAg
ICBpdGVtLmNvbW1pdCA9IENvbW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdCk7CiAgICAgICAg
ICAgICAgICAgaXRlbS5wYXRjaCA9IGl0ZW0ucGF0Y2ggPyBVcGxvYWRlZEZpbGUuZmluZEJ5SWQo
aXRlbS5wYXRjaCkgOiBudWxsOwogICAgICAgICAgICAgICAgIGl0ZW0ucm9vdEZpbGUgPSBpdGVt
LnJvb3RGaWxlID8gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGl0ZW0ucm9vdEZpbGUpIDogbnVsbDsK
KyAgICAgICAgICAgICAgICBpdGVtLmNvbW1pdE93bmVyID0gaXRlbS5jb21taXRPd25lciA/IENv
bW1pdExvZy5maW5kQnlJZChpdGVtLmNvbW1pdE93bmVyKSA6IG51bGw7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByYXdEYXRhLmN1c3RvbVJvb3RzID0gcmF3RGF0YS5jdXN0b21Sb290cy5t
YXAoKGZpbGVJZCkgPT4gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCkpOwogICAgICAgICAg
ICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocmF3RGF0YS5pZCwgcmF3RGF0YSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9j
b21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
Y29tbWl0LXNldC5qcwppbmRleCBhMTI1ZjEwZjE5ODdiMTAxYWE4ZmY5OGY5M2MyNTdhOWIyYzVi
MGI3Li5jYjhlNmYyMDVhMjcxNTA5NjEyMzk2MWIyNTliOTc3MmQxMWQ2ZDY2IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0Lmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1z
ZXQuanMKQEAgLTksNiArOSw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9i
amVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IG5ldyBNYXA7CiAg
ICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhp
cy5fcmVwb3NpdG9yeVRvUm9vdE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3JlcG9zaXRv
cnlUb0NvbW1pdE93bmVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVJl
cXVpcmVzQnVpbGRNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9sYXRlc3RDb21taXRUaW1l
ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICAgICAgdGhpcy5f
YWxsUm9vdEZpbGVzID0gW107CkBAIC0yNCw2ICsyNiw4IEBAIGNsYXNzIENvbW1pdFNldCBleHRl
bmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1h
cC5jbGVhcigpOwogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5jbGVhcigpOwog
ICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMu
X3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3JlcG9z
aXRvcnlSZXF1aXJlc0J1aWxkTWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcmll
cyA9IFtdOwogICAgICAgICB0aGlzLl91cGRhdGVGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgfQpA
QCAtMzYsOSArNDAsMTIgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0
IHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdCBpbnN0YW5jZW9mIENvbW1pdExv
Zyk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghaXRlbS5wYXRjaCB8fCBpdGVtLnBhdGNo
IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFp
dGVtLnJvb3RGaWxlIHx8IGl0ZW0ucm9vdEZpbGUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWl0ZW0uY29tbWl0T3duZXIgfHwgaXRlbS5jb21t
aXRPd25lciBpbnN0YW5jZW9mIENvbW1pdExvZyk7CiAgICAgICAgICAgICBjb25zdCByZXBvc2l0
b3J5ID0gY29tbWl0LnJlcG9zaXRvcnkoKTsKICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlU
b0NvbW1pdE1hcC5zZXQocmVwb3NpdG9yeSwgY29tbWl0KTsKICAgICAgICAgICAgIHRoaXMuX3Jl
cG9zaXRvcnlUb1BhdGNoTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnBhdGNoKTsKKyAgICAgICAg
ICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNldChyZXBvc2l0b3J5LCBpdGVt
LmNvbW1pdE93bmVyKTsKKyAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxk
TWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVzQnVpbGQpOwogICAgICAgICAgICAgdGhp
cy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5yb290RmlsZSk7CiAg
ICAgICAgICAgICBpZiAoaXRlbS5yb290RmlsZSkKICAgICAgICAgICAgICAgICByb290RmlsZXMu
YWRkKGl0ZW0ucm9vdEZpbGUpOwpAQCAtNTksOCArNjYsMTUgQEAgY2xhc3MgQ29tbWl0U2V0IGV4
dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGNvbW1pdCA/IGNvbW1pdC5y
ZXZpc2lvbigpIDogbnVsbDsKICAgICB9CiAKKyAgICBvd25lclJldmlzaW9uRm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KQorICAgIHsKKyAgICAgICAgY29uc3QgY29tbWl0ID0gdGhpcy5fcmVwb3Np
dG9yeVRvQ29tbWl0T3duZXJNYXAuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICByZXR1cm4gY29t
bWl0ID8gY29tbWl0LnJldmlzaW9uKCkgOiBudWxsOworICAgIH0KKwogICAgIHBhdGNoRm9yUmVw
b3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5n
ZXQocmVwb3NpdG9yeSk7IH0KICAgICByb290Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJl
dHVybiB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIHJl
cXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9z
aXRvcnlSZXF1aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KTsgfQogCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHJldHVybiBhIERhdGUgb2JqZWN0LgogICAgIGxhdGVzdENvbW1pdFRpbWUo
KQpAQCAtODUsNiArOTksMTAgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2Jq
ZWN0IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAodGhp
cy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRv
cnlUb1Jvb3RNYXAuZ2V0KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5nZXQo
cmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9y
eSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMu
X3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVw
b3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmFyZUN1
c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90aGVyLl9jdXN0b21Sb290cyk7CiAg
ICAgfQpAQCAtMTM5LDcgKzE1Nyw3IEBAIGNsYXNzIE1lYXN1cmVtZW50Q29tbWl0U2V0IGV4dGVu
ZHMgQ29tbWl0U2V0IHsKICAgICB9CiAKICAgICAvLyBVc2UgQ29tbWl0U2V0J3Mgc3RhdGljIG1h
cHMgYmVjYXVzZSBNZWFzdXJlbWVudENvbW1pdFNldCBhbmQgQ29tbWl0U2V0IGFyZSBsb2dpY2Fs
bHkgb2YgdGhlIHNhbWUgdHlwZS4KLSAgICAvLyBGSVhNRTogSWRhZWxseSwgRGF0YU1vZGVsIHNo
b3VsZCB0YWtlIGNhcmUgb2YgdGhpcyBidXQgdHJhdmVyc2luZyBwcm90b3R5cGUgY2hhaW4gaXMg
ZXhwZW5zaXZlLgorICAgIC8vIEZJWE1FOiBJZGVhbGx5LCBEYXRhTW9kZWwgc2hvdWxkIHRha2Ug
Y2FyZSBvZiB0aGlzIGJ1dCB0cmF2ZXJzaW5nIHByb3RvdHlwZSBjaGFpbiBpcyBleHBlbnNpdmUu
CiAgICAgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29tbWl0U2V0Lm5hbWVkU3RhdGlj
TWFwKG5hbWUpOyB9CiAgICAgZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29t
bWl0U2V0LmVuc3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpOyB9CiAgICAgc3RhdGljIG5hbWVkU3Rh
dGljTWFwKG5hbWUpIHsgcmV0dXJuIENvbW1pdFNldC5uYW1lZFN0YXRpY01hcChuYW1lKTsgfQpA
QCAtMTYwLDExICsxNzgsMTEgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAgICAgICAgdGhp
cy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICB9CiAKLSAgICBzZXRSZXZpc2lvbkZvclJlcG9zaXRv
cnkocmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCkKKyAgICBzZXRSZXZpc2lvbkZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb24sIHBhdGNoID0gbnVsbCwgb3duZXJSZXZp
c2lvbiA9IG51bGwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXBvc2l0b3J5IGlu
c3RhbmNlb2YgUmVwb3NpdG9yeSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRjaCB8fCBw
YXRjaCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7Ci0gICAgICAgIHRoaXMuX3JldmlzaW9uTGlz
dEJ5UmVwb3NpdG9yeS5zZXQocmVwb3NpdG9yeSwge3JldmlzaW9uLCBwYXRjaH0pOworICAgICAg
ICB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHtyZXZpc2lv
biwgcGF0Y2gsIG93bmVyUmV2aXNpb259KTsKICAgICB9CiAKICAgICBlcXVhbHMob3RoZXIpCkBA
IC0xNzIsMTMgKzE5MCwxNCBAQCBjbGFzcyBDdXN0b21Db21taXRTZXQgewogICAgICAgICBjb25z
b2xlLmFzc2VydChvdGhlciBpbnN0YW5jZW9mIEN1c3RvbUNvbW1pdFNldCk7CiAgICAgICAgIGlm
ICh0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2l6ZSAhPSBvdGhlci5fcmV2aXNpb25M
aXN0QnlSZXBvc2l0b3J5LnNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGZvciAobGV0IHJlcG9zaXRvcnkgb2YgdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5Lmtl
eXMoKSkgewotICAgICAgICAgICAgY29uc3QgdGhpc1JldmlzaW9uID0gdGhpcy5fcmV2aXNpb25M
aXN0QnlSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KTsKKworICAgICAgICBmb3IgKGNvbnN0IFty
ZXBvc2l0b3J5LCB0aGlzUmV2aXNpb25dIG9mIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9y
eSkgewogICAgICAgICAgICAgY29uc3Qgb3RoZXJSZXZpc2lvbiA9IG90aGVyLl9yZXZpc2lvbkxp
c3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOwogICAgICAgICAgICAgaWYgKCF0aGlzUmV2
aXNpb24gIT0gIW90aGVyUmV2aXNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgaWYgKHRoaXNSZXZpc2lvbiAmJiAodGhpc1JldmlzaW9uLnJldmlzaW9uICE9
IG90aGVyUmV2aXNpb24ucmV2aXNpb24KLSAgICAgICAgICAgICAgICB8fCB0aGlzUmV2aXNpb24u
cGF0Y2ggIT0gb3RoZXJSZXZpc2lvbi5wYXRjaCkpCisgICAgICAgICAgICAgICAgfHwgdGhpc1Jl
dmlzaW9uLnBhdGNoICE9IG90aGVyUmV2aXNpb24ucGF0Y2gKKyAgICAgICAgICAgICAgICB8fCB0
aGlzUmV2aXNpb24ub3duZXJSZXZpc2lvbiAhPSBvdGhlclJldmlzaW9uLm93bmVyUmV2aXNpb24p
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gQ29tbWl0U2V0LmFyZUN1c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90aGVy
Ll9jdXN0b21Sb290cyk7CkBAIC0xOTksNiArMjE4LDEzIEBAIGNsYXNzIEN1c3RvbUNvbW1pdFNl
dCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIGVudHJ5LnBhdGNo
OwogICAgIH0KKyAgICBvd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KQorICAg
IHsKKyAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnku
Z2V0KHJlcG9zaXRvcnkpOworICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgICAgIHJldHVybiBlbnRyeS5vd25lclJldmlzaW9uOworICAgIH0KICAgICBj
dXN0b21Sb290cygpIHsgcmV0dXJuIHRoaXMuX2N1c3RvbVJvb3RzOyB9CiAKICAgICBhZGRDdXN0
b21Sb290KHVwbG9hZGVkRmlsZSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCmluZGV4IDA4OWY2MmUyNDE3ZWViMWU1
MDQ0OGQ2YmMwNTc3NmRiODY2NTdhZGQuLmUzYzc0NzdjMzFlOTE1Mzk3NTdkODcwMDcyNDc0MzVj
NTJlMmI3OTAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
bW9kZWxzL3JlcG9zaXRvcnkuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvcmVwb3NpdG9yeS5qcwpAQCAtMjYsNiArMjYsMTIgQEAgY2xhc3MgUmVwb3Np
dG9yeSBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gbWFwID8gbWFwW25h
bWVdIDogbnVsbDsKICAgICB9CiAKKyAgICBmaW5kT3duZWRSZXBvc2l0b3J5QnlOYW1lKG5hbWUp
CisgICAgeworICAgICAgICBjb25zdCBvd25lcnNoaXBzID0gdGhpcy5uYW1lZFN0YXRpY01hcCgn
cmVwb3NpdG9yeU93bmVyc2hpcHMnKTsKKyAgICAgICAgcmV0dXJuIG93bmVyc2hpcHMgPyBvd25l
cnNoaXBzW3RoaXMuaWQoKV0uZmluZCgocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkg
PT0gbmFtZSkgOiBudWxsOworICAgIH0KKwogICAgIGhhc1VybEZvclJldmlzaW9uKCkgeyByZXR1
cm4gISF0aGlzLl91cmw7IH0KIAogICAgIHVybEZvclJldmlzaW9uKGN1cnJlbnRSZXZpc2lvbikK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rl
c3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzCmluZGV4IDRiM2ZiOGM0YjdkNzgxMTg1MzFmYzVmNjE4NWQ5ZmU1NjkxZTI4
NTMuLjBjMGRmYWQ0NzdlMzU3Y2I1NDRkMTMyNzAzY2E2NzJiOGEwMWMyMjUgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91
cC5qcwpAQCAtMjMxLDYgKzIzMSw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRP
YmplY3QgewogICAgICAgICAgICAgICAgIGNvbnN0IHBhdGNoRmlsZSA9IGNvbW1pdFNldC5wYXRj
aEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRb
cmVwb3NpdG9yeS5pZCgpXSA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246IGNvbW1p
dFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSksCisgICAgICAgICAgICAgICAg
ICAgIG93bmVyUmV2aXNpb246IGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgcGF0Y2g6IHBhdGNoRmlsZSA/IHBhdGNo
RmlsZS5pZCgpIDogbnVsbCwKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwppbmRleCBmZmRhZTg0YmJlMTY0ZjJiODA5YTA2
MTc3MDcxMjIzZjIzMWUwMzZkLi5iNmI1MTAwNmUwMTlhN2UwMTc3MjYzYTM4NDdiYjQ2YmNlZTYw
NmNjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMjcsNyArMjcsNDQg
QEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVxdWV0cyBhc3Nv
Y2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJsZSB3aXRoIGFwcHJvcHJpYXRlIGNvbW1pdHMg
YW5kIGNvbW1pdFNldHMnLCAoKSA9PiB7CisgICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVx
dWVzdHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3ByaWF0
ZSBjb21taXRzIGFuZCBjb21taXRTZXRzIHdpdGggb3duZWQgY29tcG9uZW50cycsICgpID0+IHsK
KyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZFRlc3RHcm91cFdpdGhPd25lZENvbW1pdHMoVGVz
dFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3Rz
L2J1aWxkLXdlYmtpdCcpOworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWls
ZFJlcXVlc3RzJywgJ2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRG
aWxlcyddKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMn
XS5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNl
dHMnXVswXS5pZCwgNDAzKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsn
Y29tbWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tjb21taXQ6
ICc4NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDog
ZmFsc2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgICAgICB7Y29tbWl0OiAnOTMxMTYn
LCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCBy
b290RmlsZTogbnVsbH0sCisgICAgICAgICAgICAgICAge2NvbW1pdDogJzE3OTcnLCBjb21taXRP
d25lcjogIjkzMTE2IiwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IHRydWUsIHJvb3RGaWxl
OiBudWxsfV0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMn
XVsxXS5pZCwgNDA0KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29t
bWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4
NzgzMicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFs
c2UsIHJvb3RGaWxlOiBudWxsfSwKKyAgICAgICAgICAgICAgICB7Y29tbWl0OiAnOTYzMzYnLCBj
b21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290
RmlsZTogbnVsbH0sCisgICAgICAgICAgICAgICAge2NvbW1pdDogJzIwMTcnLCBjb21taXRPd25l
cjogIjk2MzM2IiwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IHRydWUsIHJvb3RGaWxlOiBu
dWxsfV0pOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddLmxl
bmd0aCwgNSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XVswXSwge2NvbW1pdE93bmVyOiBudWxsLCBpZDogODc4MzIsIHJlcG9zaXRvcnk6ICc5JywgcmV2
aXNpb246ICcxMC4xMSAxNUEyODQnLCB0aW1lOiAwfSk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXSwge2NvbW1pdE93bmVyOiBudWxsLCBpZDogOTMx
MTYsIHJlcG9zaXRvcnk6ICcxMScsIHJldmlzaW9uOiAnMTkxNjIyJywgdGltZTogMTQ0NTk0NTgx
Njg3OH0pCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsy
XSwge2NvbW1pdE93bmVyOiAnOTMxMTYnLCBpZDogJzE3OTcnLCByZXBvc2l0b3J5OiAnMjEzJywg
cmV2aXNpb246ICdvd25lZC1qc2MtNjE2MScsIHRpbWU6IDE0NTY5NjA3OTUzMDB9KQorICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRzJ11bM10sIHtjb21taXRPd25l
cjogbnVsbCwgaWQ6IDk2MzM2LCByZXBvc2l0b3J5OiAnMTEnLCByZXZpc2lvbjogJzE5MjczNics
IHRpbWU6IDE0NDgyMjUzMjU2NTB9KQorICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250
ZW50Wydjb21taXRzJ11bNF0sIHtjb21taXRPd25lcjogJzk2MzM2JywgaWQ6IDIwMTcsIHJlcG9z
aXRvcnk6ICcyMTMnLCByZXZpc2lvbjogJ293bmVkLWpzYy05MTkxJywgdGltZTogMTQ2MjIzMDgz
NzEwMH0pCisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J10ubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXVsn
Y3JlYXRlZEF0J10gPSAwOworICAgICAgICAgICAgY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFd
WydjcmVhdGVkQXQnXSA9IDA7CisgICAgICAgICAgICBjb250ZW50WydidWlsZFJlcXVlc3RzJ11b
Ml1bJ2NyZWF0ZWRBdCddID0gMDsKKyAgICAgICAgICAgIGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVszXVsnY3JlYXRlZEF0J10gPSAwOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250
ZW50WydidWlsZFJlcXVlc3RzJ11bMF0sIHtpZDogJzcwNCcsIHRhc2s6ICcxMDgwJywgdHJpZ2dl
cmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBwbGF0
Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICcwJywgY29tbWl0U2V0OiAnNDAz
Jywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRBdDog
MH0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMV0sIHtpZDogJzcwNScsIHRhc2s6ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVw
b3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdy
b3VwOiAnOTAwJywgb3JkZXI6ICcxJywgY29tbWl0U2V0OiAnNDA0Jywgc3RhdHVzOiAncGVuZGlu
ZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0sIHtpZDogJzcwNics
IHRhc2s6ICcxMDgwJywgdHJpZ2dlcmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAw
MScsIHRlc3Q6ICcyMDAnLCBwbGF0Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6
ICcyJywgY29tbWl0U2V0OiAnNDAzJywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVp
bGQ6IG51bGwsIGNyZWF0ZWRBdDogMH0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bM10sIHtpZDogJzcwNycsIHRhc2s6ICcxMDgwJywgdHJp
Z2dlcmFibGU6ICcxMDAwJywgcmVwb3NpdG9yeUdyb3VwOiAnMjAwMScsIHRlc3Q6ICcyMDAnLCBw
bGF0Zm9ybTogJzY1JywgdGVzdEdyb3VwOiAnOTAwJywgb3JkZXI6ICczJywgY29tbWl0U2V0OiAn
NDA0Jywgc3RhdHVzOiAncGVuZGluZycsIHVybDogbnVsbCwgYnVpbGQ6IG51bGwsIGNyZWF0ZWRB
dDogMH0pOworICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVp
bGQgcmVxdWVzdHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHBy
b3ByaWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywgKCkgPT4gewogICAgICAgICByZXR1cm4g
TW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3Rh
dHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwogICAgICAgICB9KS50aGVu
KChjb250ZW50KSA9PiB7CkBAIC0zNiwxMCArNzMsMTAgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQt
cmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29u
dGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0ucmV2aXNpb25JdGVtcywKLSAgICAgICAgICAg
ICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfSwge2Nv
bW1pdDogJzkzMTE2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfV0pOworICAgICAgICAg
ICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGws
IHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNics
IGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHJv
b3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1p
dFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAgW3tjb21t
aXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5NjMz
NicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgICAgICAgICBbe2Nv
bW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1aXJlc0J1
aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBjb21taXRPd25l
cjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVs
bH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5n
dGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5p
ZCwgODc4MzIpOwpAQCAtODMsNiArMTIwLDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVz
dHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisKICAgICBpdCgnc2hv
dWxkIHN1cHBvcnQgdXNlTGVnYWN5SWRSZXNvbHV0aW9uIG9wdGlvbicsICgpID0+IHsKICAgICAg
ICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRK
U09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5
SWRSZXNvbHV0aW9uPXRydWUnKTsKQEAgLTkyLDEwICsxMzAsMTAgQEAgZGVzY3JpYmUoJy9hcGkv
YnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEpOwogICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0ucmV2aXNpb25JdGVtcywKLSAgICAg
ICAgICAgICAgICBbe2NvbW1pdDogJzg3ODMyJywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxs
fSwge2NvbW1pdDogJzkzMTE2JywgcGF0Y2g6IG51bGwsIHJvb3RGaWxlOiBudWxsfV0pOworICAg
ICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBjb21taXRPd25lcjogbnVsbCwgcGF0Y2g6
IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5
MzExNicsIGNvbW1pdE93bmVyOiBudWxsLCBwYXRjaDogbnVsbCwgcmVxdWlyZXNCdWlsZDogZmFs
c2UsIHJvb3RGaWxlOiBudWxsfV0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdFNldHMnXVsxXS5pZCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAg
W3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6
ICc5NjMzNicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1dKTsKKyAgICAgICAgICAgICAg
ICBbe2NvbW1pdDogJzg3ODMyJywgY29tbWl0T3duZXI6IG51bGwsIHBhdGNoOiBudWxsLCByZXF1
aXJlc0J1aWxkOiBmYWxzZSwgcm9vdEZpbGU6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBjb21t
aXRPd25lcjogbnVsbCwgcGF0Y2g6IG51bGwsIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCByb290Rmls
ZTogbnVsbH1dKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XS5sZW5ndGgsIDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMn
XVswXS5pZCwgODc4MzIpOwpAQCAtMTM5LDYgKzE3NywxMTEgQEAgZGVzY3JpYmUoJy9hcGkvYnVp
bGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAg
aXQoJ3Nob3VsZCBiZSBmZXRjaGFibGUgYnkgQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFi
bGUgZm9yIGNvbW1pdFNldHMgd2l0aCBvd25lZCBjb21taXRzJywgKCkgPT4geworICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkVGVzdEdyb3VwV2l0aE93bmVkQ29tbWl0cyhUZXN0U2VydmVyLmRh
dGFiYXNlKCkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNo
KCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVx
dWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKCdidWlsZC13ZWJraXQnKTsKKyAgICAgICAgfSkudGhl
bigoYnVpbGRSZXF1ZXN0cykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVx
dWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICAgICAgbGV0IHRlc3QgPSBUZXN0LmZpbmRCeUlk
KDIwMCk7CisgICAgICAgICAgICBhc3NlcnQodGVzdCk7CisKKyAgICAgICAgICAgIGxldCBwbGF0
Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlkKDY1KTsKKyAgICAgICAgICAgIGFzc2VydChwbGF0Zm9y
bSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLmlkKCksIDcw
NCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS50ZXN0R3JvdXBJ
ZCgpLCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0udGVz
dCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLnBs
YXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzBdLm9yZGVyKCksIDApOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNb
MF0uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhhc1N0YXJ0ZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQu
b2soYnVpbGRSZXF1ZXN0c1swXS5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRSZXF1ZXN0c1swXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5pZCgpLCA3MDUpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0udGVzdEdyb3VwSWQoKSwgOTAwKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFdLnRlc3QoKSwgdGVzdCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5wbGF0Zm9ybSgpLCBwbGF0
Zm9ybSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5vcmRlcigp
LCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgp
IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1
ZXN0c1sxXS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1
ZXN0c1sxXS5oYXNTdGFydGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVz
dHNbMV0uaXNQZW5kaW5nKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVz
dHNbMV0uc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdHNbMl0uaWQoKSwgNzA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3RzWzJdLnRlc3RHcm91cElkKCksIDkwMCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS50ZXN0KCksIHRlc3QpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIoKSwgMik7CisgICAgICAg
ICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1syXS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENv
bW1pdFNldCk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzRmlu
aXNoZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzU3Rh
cnRlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzJdLmlzUGVuZGlu
ZygpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLnN0YXR1c0xh
YmVsKCksICdXYWl0aW5nJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzNdLmlkKCksIDcwNyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
c1szXS50ZXN0R3JvdXBJZCgpLCA5MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdHNbM10udGVzdCgpLCB0ZXN0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWls
ZFJlcXVlc3RzWzNdLnBsYXRmb3JtKCksIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3RzWzNdLm9yZGVyKCksIDMpOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmhhc0ZpbmlzaGVkKCkpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmhhc1N0YXJ0ZWQoKSk7CisgICAg
ICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5pc1BlbmRpbmcoKSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS5zdGF0dXNMYWJlbCgpLCAnV2FpdGlu
ZycpOworCisgICAgICAgICAgICBjb25zdCBvc3ggPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDkpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeC5uYW1lKCksICdtYWNPUycpOworCisgICAgICAg
ICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDExKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh3ZWJraXQubmFtZSgpLCAnV2ViS2l0Jyk7CisKKyAgICAgICAgICAgIGNv
bnN0IGpzYyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMjEzKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChqc2MubmFtZSgpLCAnSmF2YVNjcmlwdENvcmUnKTsKKworICAgICAgICAgICAgY29uc3Qg
Zmlyc3RDb21taXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIGZpcnN0Q29tbWl0
U2V0KTsKKworICAgICAgICAgICAgY29uc3Qgc2Vjb25kQ29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0
c1sxXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Rz
WzNdLmNvbW1pdFNldCgpLCBzZWNvbmRDb21taXRTZXQpOworCisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoZmlyc3RDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAx
NUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGZpcnN0Q29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQtanNj
LTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5vd25lclJl
dmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkxNjIyJyk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4x
MSAxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICdvd25l
ZC1qc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZENvbW1pdFNldC5v
d25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnMTkyNzM2Jyk7CisKKyAgICAgICAgICAg
IGNvbnN0IG9zeENvbW1pdCA9IGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21taXQucmV2aXNpb24oKSwgJzEwLjEx
IDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgc2Vjb25kQ29t
bWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CisKKyAgICAgICAgICAgIGNvbnN0IGZp
cnN0V2ViS2l0Q29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0V2ViS2l0Q29tbWl0LnJldmlzaW9u
KCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrZmlyc3RXZWJLaXRDb21t
aXQudGltZSgpLCAxNDQ1OTQ1ODE2ODc4KTsKKworICAgICAgICAgICAgY29uc3Qgc2Vjb25kV2Vi
S2l0Q29tbWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRXZWJLaXRDb21taXQucmV2aXNpb24oKSwg
JzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRXZWJLaXRDb21taXQu
dGltZSgpLCAxNDQ4MjI1MzI1NjUwKTsKKworICAgICAgICAgICAgY29uc3QgZmlyc3RTSkNDb21t
aXQgPSBmaXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoZmlyc3RTSkNDb21taXQucmV2aXNpb24oKSwgJ293bmVkLWpzYy02MTYx
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK2ZpcnN0U0pDQ29tbWl0LnRpbWUoKSwgMTQ1
Njk2MDc5NTMwMCk7CisKKyAgICAgICAgICAgIGNvbnN0IHNlY29uZFNKQ0NvbW1pdCA9IHNlY29u
ZENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KGpzYyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc2Vjb25kU0pDQ29tbWl0LnJldmlzaW9uKCksICdvd25lZC1qc2MtOTE5MScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRTSkNDb21taXQudGltZSgpLCAxNDYyMjMwODM3
MTAwKQorICAgICAgICB9KTsKKyAgICB9KTsKKwogICAgIGl0KCdzaG91bGQgYmUgZmV0Y2hhYmxl
IGJ5IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlJywgKCkgPT4gewogICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVh
dGUtdGVzdC1ncm91cC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXIt
dGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXggOThk
NzI5NmUwNTM4ZWQwYzkyMDJlMzJlZTViY2JkZDNlYWNmZjYzMC4uZDUxNDQ3MDBlN2NiY2M5MDFk
MTcwYTU4NGFkOGQ1ZDY1MmZlZTIyZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQt
YXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCkBAIC0xMTMsNiArMTEzLDExIEBAIGZ1bmN0
aW9uIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzayhuYW1lLCB3ZWJraXRSZXZpc2lvbnMpCiAg
ICAgICAgICAgICAgICAge3JlcG9zaXRvcnk6IE1vY2tEYXRhLm1hY29zUmVwb3NpdG9yeUlkKCks
IGFjY2VwdHNQYXRjaDogZmFsc2V9LAogICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2Nr
RGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQogICAgICAgICAg
ICAgXX0sCisgICAgICAgICAgICB7bmFtZTogJ3N5c3RlbS13ZWJraXQtc2pjJywgYWNjZXB0c1Jv
b3Q6IHRydWUsIHJlcG9zaXRvcmllczogWworICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBN
b2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAg
ICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEuanNjUmVwb3NpdG9yeUlkKCksIGFjY2Vw
dHNQYXRjaDogZmFsc2V9LAorICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS53
ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQorICAgICAgICAgICAgXX0s
CiAgICAgICAgIF0KICAgICB9OwogICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0
U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewpAQCAtMjc0LDE0ICsyNzksMTQgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIHJldHVybiAiQW1iaWdpb3Vz
UmV2aXNpb24iIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMgdGhhdCBtYXRjaCB0aGUg
c3BlY2lmaWVkIHJldmlzaW9uIHN0cmluZycsICgpID0+IHsKKyAgICBpdCgnc2hvdWxkIHJldHVy
biAiQW1iaWd1b3VzUmV2aXNpb24iIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMgdGhh
dCBtYXRjaCB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHN0cmluZycsICgpID0+IHsKICAgICAgICAg
cmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJywgWycyY2VkYTQ1
ZDNjZDYzY2RlNThkMGRiZjU3Njc3MTRlMDNkOTAyZTQzJywgJzJjNzFhOGRkYzFmNjYxNjYzY2Nm
ZDFhMjljNjMzYmE1N2U4Nzk1MzMnXSkudGhlbigodGFza0lkKSA9PiB7CiAgICAgICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbmQoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdXZWJLaXQnKTsKICAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0
cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMmNlZGEnfX0sIHtbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcyYyd9fV07CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNr
SWQsIHJldmlzaW9uU2V0c30pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgICAgICBh
c3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwogICAgICAgICAgICAgfSwg
KGVycm9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnQW1iaWdp
b3VzUmV2aXNpb24nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdBbWJp
Z3VvdXNSZXZpc2lvbicpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpA
QCAtMzQ1LDYgKzM1MCw1NCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0
LWdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdz
aG91bGQgcmV0dXJuICJJbnZhbGlkT3duZXJSZXZpc2lvbiIgd2hlbiBjb21taXQgb3duZXJzaGlw
IGlzIG5vdCB2YWxpZCcsICgpID0+IHsKKyAgICAgICAgbGV0IHRhc2tJZDsKKyAgICAgICAgcmV0
dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJykudGhlbigoaWQpID0+
IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBjb25zdCBtYWNvcyA9IFJlcG9zaXRvcnkuYWxs
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVsw
XTsKKyAgICAgICAgICAgIGNvbnN0IGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsKKyAg
ICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQo
KV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYyMSd9
fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30s
IFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZpc2lv
bjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MTYyMid9fV07CisgICAgICAg
ICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNp
b25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KGZh
bHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlkT3duZXJSZXZpc2lvbicp
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuICJJbnZhbGlk
Q29tbWl0T3duZXJzaGlwIiB3aGVuIGNvbW1pdCBvd25lcnNoaXAgaXMgbm90IHZhbGlkJywgKCkg
PT4geworICAgICAgICBsZXQgdGFza0lkOworICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFza0lkID0gaWQpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0
ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAg
ICAgICAgICAgIGNvbnN0IG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRv
cnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAgICAgICAgY29u
c3QganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29z
LmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3du
ZWQtanNjLTYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAgICAgICAgICAg
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlkKCldOiB7cmV2
aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3duZWQtanNjLTkxOTEn
LCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319XTsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRh
c2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIg
YmUgcmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChlcnJvciwgJ0ludmFsaWRDb21taXRPd25lcnNoaXAnKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiAiQ29tbWl0T3duZXJNdXN0RXhpc3RJbkNv
bW1pdFNldCIgd2hlbiBvd25lciBvZiBhIGNvbW1pdCBpcyBtaXNzaW5nIGluIHRoZSBjb21taXQg
c2V0JywgKCkgPT4geworICAgICAgICBsZXQgdGFza0lkOworICAgICAgICByZXR1cm4gYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKChpZCkgPT4gdGFza0lkID0g
aWQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5h
bGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQn
KVswXTsKKyAgICAgICAgICAgIGNvbnN0IG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIo
KHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAg
ICAgICAgY29uc3QganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+
IHJlcG9zaXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScpWzBdOworICAgICAgICAgICAg
Y29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjIn
fSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3Jldmlz
aW9uOiAnb3duZWQtanNjLTYxNjEnLCBvd25lclJldmlzaW9uOiAnMTkxNjIyJ319LAorICAgICAg
ICAgICAgICAgIHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlk
KCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3duZWQt
anNjLTkxOTEnLCBvd25lclJldmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAgICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAn
dGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsK
KyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91
bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0NvbW1pdE93bmVyTXVzdEV4aXN0SW5Db21taXRTZXQn
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRlc3Qg
Z3JvdXAgZnJvbSBjb21taXRTZXRzIHdpdGggdGhlIHJlcGV0aXRpb24gY291bnQgb2Ygb25lIHdo
ZW4gcmVwZXRpdGlvbkNvdW50IGlzIG9taXR0ZWQnLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBh
ZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4oKHRhc2tJZCkgPT4g
ewogICAgICAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKQEAgLTY1MSw2ICs3MDQsMjcyIEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB0ZXN0
IGdyb3VwIHdpdGggYSBvd25lZCBjb21taXRzIGV2ZW4gd2hlbiBubyBwYXRjaCBpcyBzcGVjaWZp
ZWQnLCAoKSA9PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7Cisg
ICAgICAgIGxldCBqc2M7CisgICAgICAgIGxldCBtYWNvczsKKyAgICAgICAgbGV0IGluc2VydGVk
R3JvdXBJZDsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29t
ZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgICAgICBtYWNvcyA9IFJlcG9z
aXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAn
bWFjT1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChy
ZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2YVNjcmlwdENvcmUnKVswXTsK
KyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2Mu
aWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYy
Mid9fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2
J30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2MuaWQoKV06IHtyZXZp
c2lvbjogJ293bmVkLWpzYy05MTkxJywgb3duZXJSZXZpc2lvbjogJzE5MjczNid9fV07CisgICAg
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3Jv
dXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2
aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAg
IGluc2VydGVkR3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOworICAgICAgICB9KS50
aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vw
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnRlc3QoKSwgVGVzdC5maW5kQnlJZChNb2NrRGF0
YS5zb21lVGVzdElkKCkpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5wbGF0Zm9y
bSgpLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSk7CisgICAg
ICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0uaXNCdWlsZCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS5pc0J1aWxkKCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzJdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzNdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzRdLmlzQnVpbGQoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzVdLmlzQnVpbGQoKSwgZmFsc2UpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0uaXNUZXN0KCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzJdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0c1szXS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbNF0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzVdLmlzVGVzdCgpLCB0cnVlKTsKKworICAgICAgICAgICAgY29uc3Qgc2V0MCA9
IHJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29uc3Qgc2V0MSA9IHJlcXVl
c3RzWzFdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJd
LmNvbW1pdFNldCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sz
XS5jb21taXRTZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
NF0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzVdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVw
b3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHNldDAucmVwb3NpdG9yaWVz
KCkpLCBbanNjLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChS
ZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MS5yZXBvc2l0b3Jp
ZXMoKSksIFtqc2MsIHdlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0
MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVp
cmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIGZhbHNlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNv
cyksICcxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9y
UmVwb3NpdG9yeShtYWNvcyksIHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29zKSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSwg
c2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkobWFjb3Mp
LCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9y
UmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
LnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShqc2MpLCAnb3duZWQt
anNjLTkxOTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBhdGNoRm9yUmVwb3Np
dG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9y
UmVwb3NpdG9yeShqc2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93
bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZXQxLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICcxOTI3MzYn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0
b3J5KGpzYyksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNC
dWlsZEZvclJlcG9zaXRvcnkoanNjKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQoIXNldDAu
ZXF1YWxzKHNldDEpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGNy
ZWF0ZSBhIHRlc3QgZ3JvdXAgd2l0aCBhIG93bmVkIGNvbW1pdHMgYW5kIGEgcGF0Y2gnLCAoKSA9
PiB7CisgICAgICAgIGxldCB0YXNrSWQ7CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIGxl
dCBtYWNvczsKKyAgICAgICAgbGV0IGpzYzsKKyAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsK
KyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKKyAgICAgICAgcmV0dXJuIGFkZFRyaWdnZXJhYmxl
QW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJykudGhlbigoaWQpID0+IHRhc2tJZCA9IGlkKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChy
ZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAg
ICAgICBtYWNvcyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBv
c2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGpzYyA9IFJlcG9zaXRv
cnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnSmF2
YVNjcmlwdENvcmUnKVswXTsKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VU
ZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgfSkudGhl
bigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVl
fSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBy
YXdGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAgdXBsb2FkZWRG
aWxlID0gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbihyYXdGaWxlLmlkLCByYXdGaWxlKTsK
KyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtqc2Mu
aWQoKV06IHtyZXZpc2lvbjogJ293bmVkLWpzYy02MTYxJywgb3duZXJSZXZpc2lvbjogJzE5MTYy
Mid9fSwKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkyNzM2
JywgcGF0Y2g6IHVwbG9hZGVkRmlsZS5pZCgpfSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcx
NUEyODQnfSwgW2pzYy5pZCgpXToge3JldmlzaW9uOiAnb3duZWQtanNjLTkxOTEnLCBvd25lclJl
dmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNl
bmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJ
ZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgfSkudGhlbigo
Y29udGVudCkgPT4geworICAgICAgICAgICAgaW5zZXJ0ZWRHcm91cElkID0gY29udGVudFsndGVz
dEdyb3VwSWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRh
c2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25z
dCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAu
aWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5y
ZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAudGVz
dCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0SWQoKSkpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLnBsYXRmb3JtKCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCkpKTsKKyAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAu
YnVpbGRSZXF1ZXN0cygpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNik7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5pc0J1aWxkKCks
IHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLmlzQnVpbGQoKSwg
dHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uaXNCdWlsZCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uaXNCdWlsZCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNF0uaXNCdWlsZCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uaXNCdWlsZCgpLCBm
YWxzZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5pc1Rlc3QoKSwg
ZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLmlzVGVzdCgpLCBm
YWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uaXNUZXN0KCksIHRy
dWUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmlzVGVzdCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0XS5pc1Rlc3QoKSwgdHJ1ZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uaXNUZXN0KCksIHRydWUpOwor
CisgICAgICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAg
ICAgICAgICBjb25zdCBzZXQxID0gcmVxdWVzdHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIHNldDApOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0XS5jb21taXRTZXQoKSwgc2V0MCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbNV0uY29tbWl0U2V0KCksIHNldDEpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25l
c1dpdGhVUkwoc2V0MC5yZXBvc2l0b3JpZXMoKSksIFtqc2MsIHdlYmtpdCwgbWFjb3NdKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdP
bmVzV2l0aFVSTChzZXQxLnJlcG9zaXRvcmllcygpKSwgW2pzYywgd2Via2l0LCBtYWNvc10pOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgdXBsb2FkZWRGaWxlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZp
c2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB0cnVlKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtp
dCksIHRydWUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJl
cG9zaXRvcnkobWFjb3MpLCAnMTVBMjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0
MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpLCBzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9y
eShtYWNvcykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAuY29tbWl0Rm9yUmVwb3Np
dG9yeShtYWNvcyksIHNldDEuY29tbWl0Rm9yUmVwb3NpdG9yeShtYWNvcykpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLm93bmVyUmV2aXNpb25Gb3JSZXBv
c2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkobWFjb3MpLCBmYWxzZSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSht
YWNvcyksIGZhbHNlKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25G
b3JSZXBvc2l0b3J5KGpzYyksICdvd25lZC1qc2MtNjE2MScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyksICdvd25lZC1qc2MtOTE5MScp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyks
IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5
KGpzYyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lv
bkZvclJlcG9zaXRvcnkoanNjKSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHNldDEub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgJzE5MjczNicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkoanNjKSwg
dHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5yZXF1aXJlc0J1aWxkRm9yUmVw
b3NpdG9yeShqc2MpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydCghc2V0MC5lcXVhbHMoc2V0
MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc3RpbGwgd29yayBl
dmVuIGlmIGNvbXBvbmVudHMgd2l0aCBzYW1lIG5hbWUgYnV0IG9uZSBpcyBvd25lZCwgb25lIGlz
IG5vdCcsICgpID0+IHsKKyAgICAgICAgbGV0IHRhc2tJZDsKKyAgICAgICAgbGV0IHdlYmtpdDsK
KyAgICAgICAgbGV0IG1hY29zOworICAgICAgICBsZXQganNjOworICAgICAgICBsZXQgb3duZWRK
U0M7CisgICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7CisgICAgICAgIGxldCB1cGxvYWRlZEZp
bGU7CisgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFz
aycpLnRoZW4oKGlkKSA9PiB0YXNrSWQgPSBpZCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkQW5vdGhlclRyaWdnZXJhYmxlKFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgd2Via2l0ID0gUmVwb3Np
dG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdX
ZWJLaXQnKVswXTsKKyAgICAgICAgICAgIG1hY29zID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIo
KHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdtYWNPUycpWzBdOworICAgICAg
ICAgICAganNjID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScgJiYgIXJlcG9zaXRvcnkub3duZXJJZCgp
KVswXTsKKyAgICAgICAgICAgIG93bmVkSlNDID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJl
cG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdKYXZhU2NyaXB0Q29yZScgJiYgcmVw
b3NpdG9yeS5vd25lcklkKCkpWzBdOworICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUu
bWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpOworICAgICAgICB9
KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNl
bmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6
IHRydWV9KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IHJhd0ZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICB1cGxv
YWRlZEZpbGUgPSBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0ZpbGUuaWQsIHJhd0Zp
bGUpOworICAgICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbanNjLmlkKCldOiB7cmV2
aXNpb246ICdqc2MtNjE2MSd9LCBbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwg
W21hY29zLmlkKCldOiB7cmV2aXNpb246ICcxNUEyODQnfSwgW293bmVkSlNDLmlkKCldOiB7cmV2
aXNpb246ICdvd25lZC1qc2MtNjE2MScsIG93bmVyUmV2aXNpb246ICcxOTE2MjInfX0sCisgICAg
ICAgICAgICAgICAge1tqc2MuaWQoKV06IHtyZXZpc2lvbjogJ2pzYy05MTkxJ30sIFt3ZWJraXQu
aWQoKV06IHtyZXZpc2lvbjogJzE5MjczNicsIHBhdGNoOiB1cGxvYWRlZEZpbGUuaWQoKX0sIFtt
YWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J30sIFtvd25lZEpTQy5pZCgpXToge3Jldmlz
aW9uOiAnb3duZWQtanNjLTkxOTEnLCBvd25lclJldmlzaW9uOiAnMTkyNzM2J319XTsKKyAgICAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZp
c2lvblNldHN9KTsKKyAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAg
aW5zZXJ0ZWRHcm91cElkID0gY29udGVudFsndGVzdEdyb3VwSWQnXTsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRo
ZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAudGVzdCgpLCBUZXN0LmZpbmRCeUlkKE1vY2tEYXRh
LnNvbWVUZXN0SWQoKSkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnBsYXRmb3Jt
KCksIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpKTsKKyAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3RzID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS5pc0J1aWxkKCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLmlzQnVpbGQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMl0uaXNCdWlsZCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbM10uaXNCdWlsZCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbNF0uaXNCdWlsZCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbNV0uaXNCdWlsZCgpLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS5pc1Rlc3QoKSwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLmlzVGVzdCgpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMl0uaXNUZXN0KCksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzNdLmlzVGVzdCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0c1s0XS5pc1Rlc3QoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbNV0uaXNUZXN0KCksIHRydWUpOworCisgICAgICAgICAgICBjb25zdCBzZXQwID0g
cmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBjb25zdCBzZXQxID0gcmVxdWVz
dHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0u
Y29tbWl0U2V0KCksIHNldDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNd
LmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1s0
XS5jb21taXRTZXQoKSwgc2V0MCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNb
NV0uY29tbWl0U2V0KCksIHNldDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBv
c2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MC5yZXBvc2l0b3JpZXMo
KSksIFtqc2MsIG93bmVkSlNDLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoc2V0MS5y
ZXBvc2l0b3JpZXMoKSksIFtqc2MsIG93bmVkSlNDLCB3ZWJraXQsIG1hY29zXSk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDEuY3VzdG9tUm9vdHMoKSwgW10pOworCisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5
MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnBh
dGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCB1cGxvYWRlZEZpbGUpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25lclJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHRydWUpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkod2Via2l0KSwgdHJ1
ZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9y
eShtYWNvcyksICcxNUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlz
aW9uRm9yUmVwb3NpdG9yeShtYWNvcyksIHNldDEucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG1hY29z
KSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5jb21taXRGb3JSZXBvc2l0b3J5KG1h
Y29zKSwgc2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2V0MC5wYXRjaEZvclJlcG9zaXRvcnkobWFjb3MpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQxLnBhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnko
bWFjb3MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQxLm93bmVyUmV2aXNp
b25Gb3JSZXBvc2l0b3J5KG1hY29zKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2V0MC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChzZXQxLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KG1hY29zKSwg
ZmFsc2UpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkob3duZWRKU0MpLCAnb3duZWQtanNjLTYxNjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChzZXQxLnJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksICdvd25lZC1qc2MtOTE5
MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucGF0Y2hGb3JSZXBvc2l0b3J5KG93
bmVkSlNDKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5wYXRjaEZvclJl
cG9zaXRvcnkob3duZWRKU0MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQw
Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgJzE5MTYyMicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNldDEub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRK
U0MpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXF1aXJlc0J1
aWxkRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNldDEucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkob3duZWRKU0MpLCB0cnVlKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KGpzYyks
ICdqc2MtNjE2MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KGpzYyksICdqc2MtOTE5MScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
dDAucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNldDEucGF0Y2hGb3JSZXBvc2l0b3J5KGpzYyksIG51bGwpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHNldDAub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoanNjKSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MS5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShq
c2MpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJlcXVpcmVzQnVpbGRG
b3JSZXBvc2l0b3J5KGpzYyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQx
LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KGpzYyksIGZhbHNlKTsKKyAgICAgICAgICAgIGFz
c2VydCghc2V0MC5lcXVhbHMoc2V0MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKwogICAgIGl0
KCdzaG91bGQgbm90IGNyZWF0ZSBhIGJ1aWxkIHJlcXVlc3QgdG8gYnVpbGQgYSBwYXRjaCB3aGVu
IHRoZSBjb21taXQgc2V0IGRvZXMgbm90IGhhdmUgYSBwYXRjaCcsICgpID0+IHsKICAgICAgICAg
bGV0IHRhc2tJZDsKICAgICAgICAgbGV0IHdlYmtpdDsKQEAgLTcxOSw3ICsxMDM4LDYgQEAgZGVz
Y3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgbGV0IHRhc2tJZDsKICAgICAgICAgbGV0IHdlYmtpdDsKICAgICAgICAgbGV0IG1h
Y29zOwotICAgICAgICBsZXQgaW5zZXJ0ZWRHcm91cElkOwogICAgICAgICBsZXQgdXBsb2FkZWRG
aWxlOwogICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRh
c2snKS50aGVuKChpZCkgPT4gdGFza0lkID0gaWQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
d2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRv
cnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKQEAgLTczMSw3ICsxMDQ5LDcgQEAgZGVzY3JpYmUo
Jy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGNvbnN0IHJhd0ZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CiAgICAgICAg
ICAgICB1cGxvYWRlZEZpbGUgPSBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0ZpbGUu
aWQsIHJhd0ZpbGUpOwogICAgICAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0
LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfSwgW21hY29zLmlkKCldOiB7cmV2aXNpb246ICcx
NUEyODQnLCBwYXRjaDogdXBsb2FkZWRGaWxlLmlkKCl9fSwKLSAgICAgICAgICAgICAgICB7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ30sIFttYWNvcy5pZCgpXToge3JldmlzaW9u
OiAnMTVBMjg0J319XTsKKyAgICAgICAgICAgICAgICB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkyNzM2J30sIFttYWNvcy5pZCgpXToge3JldmlzaW9uOiAnMTVBMjg0J319XTsKICAgICAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZp
c2lvblNldHN9KTsKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQo
ZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGxvYWQtZmlsZS10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktdXBsb2FkLWZpbGUtdGVzdHMuanMKaW5kZXggMmMxMTIxODU5ZTBiZjJiZGQ5ZTEwODMy
NzRhM2EyNzVlODE1YzA0MC4uMWI5MDJmYWQ2MWZmMTBjZmFiZjRjMjE3YWJkODA2ZGQ1MzI3OTEy
MSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2
aWxlZ2VkLWFwaS11cGxvYWQtZmlsZS10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwbG9hZC1maWxlLXRlc3RzLmpzCkBA
IC0yMTIsOCArMjEyLDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmlsZScs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAg
ICBjb25zdCBmaWxlQiA9IHJlc3VsdC51cGxvYWRlZEZpbGU7CiAgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdVUERBVEUgY29tbWl0X3Nl
dF9pdGVtcyBTRVQgY29tbWl0c2V0X3BhdGNoX2ZpbGUgPSAkMSBXSEVSRSBjb21taXRzZXRfc2V0
ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gODc4MzInLCBbZmlsZUEuaWRdKSwKLSAgICAg
ICAgICAgICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIGNvbW1pdHNl
dF9wYXRjaF9maWxlID0gJDEgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0
X2NvbW1pdCA9IDk2MzM2JywgW2ZpbGVCLmlkXSkKKyAgICAgICAgICAgICAgICBkYi5xdWVyeSgn
VVBEQVRFIGNvbW1pdF9zZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0Y2hfZmlsZSwgY29tbWl0
c2V0X3JlcXVpcmVzX2J1aWxkKSA9ICgkMSwgVFJVRSkgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQw
MiBBTkQgY29tbWl0c2V0X2NvbW1pdCA9IDg3ODMyJywgW2ZpbGVBLmlkXSksCisgICAgICAgICAg
ICAgICAgZGIucXVlcnkoJ1VQREFURSBjb21taXRfc2V0X2l0ZW1zIFNFVCAoY29tbWl0c2V0X3Bh
dGNoX2ZpbGUsIGNvbW1pdHNldF9yZXF1aXJlc19idWlsZCkgPSAoJDEsIFRSVUUpIFdIRVJFIGNv
bW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA5NjMzNicsIFtmaWxlQi5p
ZF0pCiAgICAgICAgICAgICBdKTsKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZU9mU2l6ZUluTUIoJ290aGVy
LmRhdCcsIGxpbWl0SW5NQiwgJ2MnKTsKQEAgLTI0Miw4ICsyNDIsOCBAQCBkZXNjcmliZSgnL3By
aXZpbGVnZWQtYXBpL3VwbG9hZC1maWxlJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGZpbGVCID0gcmVzdWx0LnVwbG9hZGVk
RmlsZTsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAg
ZGIucXVlcnkoJ1VQREFURSBjb21taXRfc2V0X2l0ZW1zIFNFVCBjb21taXRzZXRfcGF0Y2hfZmls
ZSA9ICQxIFdIRVJFIGNvbW1pdHNldF9zZXQgPSA0MDIgQU5EIGNvbW1pdHNldF9jb21taXQgPSA4
NzgzMicsIFtmaWxlQS5pZF0pLAotICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdVUERBVEUgY29t
bWl0X3NldF9pdGVtcyBTRVQgY29tbWl0c2V0X3BhdGNoX2ZpbGUgPSAkMSBXSEVSRSBjb21taXRz
ZXRfc2V0ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gOTYzMzYnLCBbZmlsZUIuaWRdKQor
ICAgICAgICAgICAgICAgIGRiLnF1ZXJ5KCdVUERBVEUgY29tbWl0X3NldF9pdGVtcyBTRVQgKGNv
bW1pdHNldF9wYXRjaF9maWxlLCBjb21taXRzZXRfcmVxdWlyZXNfYnVpbGQpID0gKCQxLCBUUlVF
KSBXSEVSRSBjb21taXRzZXRfc2V0ID0gNDAyIEFORCBjb21taXRzZXRfY29tbWl0ID0gODc4MzIn
LCBbZmlsZUEuaWRdKSwKKyAgICAgICAgICAgICAgICBkYi5xdWVyeSgnVVBEQVRFIGNvbW1pdF9z
ZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0Y2hfZmlsZSwgY29tbWl0c2V0X3JlcXVpcmVzX2J1
aWxkKSA9ICgkMSwgVFJVRSkgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0
X2NvbW1pdCA9IDk2MzM2JywgW2ZpbGVCLmlkXSkKICAgICAgICAgICAgIF0pOwogICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1w
b3JhcnlGaWxlT2ZTaXplSW5NQignYW5vdGhlci5kYXQnLCBsaW1pdEluTUIsICdjJyk7CkBAIC0y
NzcsNyArMjc3LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmlsZScsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsK
ICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBmaWxlQiA9
IHJlc3VsdC51cGxvYWRlZEZpbGU7Ci0gICAgICAgICAgICByZXR1cm4gZGIucXVlcnkoYFVQREFU
RSBjb21taXRfc2V0X2l0ZW1zIFNFVCAoY29tbWl0c2V0X3BhdGNoX2ZpbGUsIGNvbW1pdHNldF9y
b290X2ZpbGUpID0gKCQxLCAkMikKKyAgICAgICAgICAgIHJldHVybiBkYi5xdWVyeShgVVBEQVRF
IGNvbW1pdF9zZXRfaXRlbXMgU0VUIChjb21taXRzZXRfcGF0Y2hfZmlsZSwgY29tbWl0c2V0X3Jv
b3RfZmlsZSwgY29tbWl0c2V0X3JlcXVpcmVzX2J1aWxkKSA9ICgkMSwgJDIsIFRSVUUpCiAgICAg
ICAgICAgICAgICAgV0hFUkUgY29tbWl0c2V0X3NldCA9IDQwMiBBTkQgY29tbWl0c2V0X2NvbW1p
dCA9IDg3ODMyYCwgW2ZpbGVBLmlkLCBmaWxlQi5pZF0pOwogICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlT2ZT
aXplSW5NQignYW5vdGhlci5kYXQnLCBsaW1pdEluTUIsICdjJyk7CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRh
dGEuanMKaW5kZXggZTFhNjlhZjNhOTcwN2Y4MWJmYmQ0NDE4YzllN2I2MzdmYjZmODkwMy4uNzNi
N2IzNzcxMjhhOTczNDI0NDU3Yzk1MDhhYWM1YzcxZjJjYzk5YSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2st
ZGF0YS5qcwpAQCAtMTMsNiArMTMsOCBAQCBNb2NrRGF0YSA9IHsKICAgICBvdGhlclBsYXRmb3Jt
SWQoKSB7IHJldHVybiAxMDE7IH0sCiAgICAgbWFjb3NSZXBvc2l0b3J5SWQoKSB7IHJldHVybiA5
OyB9LAogICAgIHdlYmtpdFJlcG9zaXRvcnlJZCgpIHsgcmV0dXJuIDExOyB9LAorICAgIG93bmVk
SlNDUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gMjEzOyB9LAorICAgIGpzY1JlcG9zaXRvcnlJZCgp
IHsgcmV0dXJuIDIyMjsgfSwKICAgICBnaXRXZWJraXRSZXBvc2l0b3J5SWQoKSB7IHJldHVybiAx
MTE7IH0sCiAgICAgc2hhcmVkUmVwb3NpdG9yeUlkKCkgeyByZXR1cm4gMTQ7IH0sCiAgICAgYWRk
TW9ja0NvbmZpZ3VyYXRpb246IGZ1bmN0aW9uIChkYikKQEAgLTIzLDYgKzI1LDggQEAgTW9ja0Rh
dGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy5t
YWNvc1JlcG9zaXRvcnlJZCgpLCBuYW1lOiAnbWFjT1MnfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHtpZDogdGhpcy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgbmFtZTog
J1dlYktpdCd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB0
aGlzLnNoYXJlZFJlcG9zaXRvcnlJZCgpLCBuYW1lOiAnU2hhcmVkJ30pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHRoaXMub3duZWRKU0NSZXBvc2l0b3J5SWQo
KSwgb3duZXI6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCksIG5hbWU6ICdKYXZhU2NyaXB0Q29y
ZSd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiB0aGlzLmpz
Y1JlcG9zaXRvcnlJZCgpLCBuYW1lOiAnSmF2YVNjcmlwdENvcmUnfSksCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiAyMDAxLCBuYW1l
OiAnd2Via2l0LXN2bicsIHRyaWdnZXJhYmxlOiAxMDAwfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB0aGlzLm1hY29zUmVw
b3NpdG9yeUlkKCksIGdyb3VwOiAyMDAxfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdn
ZXJhYmxlX3JlcG9zaXRvcmllcycsIHtyZXBvc2l0b3J5OiB0aGlzLndlYmtpdFJlcG9zaXRvcnlJ
ZCgpLCBncm91cDogMjAwMX0pLApAQCAtMzEsNiArMzUsMTIgQEAgTW9ja0RhdGEgPSB7CiAgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDk2MzM2LCByZXBvc2l0b3J5OiB0aGlz
LndlYmtpdFJlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJzE5MjczNicsIHRpbWU6IChuZXcgRGF0
ZSgxNDQ4MjI1MzI1NjUwKSkudG9JU09TdHJpbmcoKX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywge2lkOiAxMTExNjgsIHJlcG9zaXRvcnk6IHRoaXMuc2hhcmVkUmVwb3NpdG9y
eUlkKCksIHJldmlzaW9uOiAnODAyMjknLCB0aW1lOiAnMjAxNi0wMy0wMlQyMzoxNzo1NC4zWid9
KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtpZDogMTExMTY5LCByZXBvc2l0
b3J5OiB0aGlzLnNoYXJlZFJlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJzgwMjMwJywgdGltZTog
JzIwMTYtMDMtMDJUMjM6Mzc6MTguMFonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dHMnLCB7aWQ6IDExNzk3LCByZXBvc2l0b3J5OiB0aGlzLmpzY1JlcG9zaXRvcnlJZCgpLCByZXZp
c2lvbjogJ2pzYy02MTYxJywgdGltZTogJzIwMTYtMDMtMDJUMjM6MTk6NTUuM1onfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDEyMDE3LCByZXBvc2l0b3J5OiB0aGlz
LmpzY1JlcG9zaXRvcnlJZCgpLCByZXZpc2lvbjogJ2pzYy05MTkxJywgdGltZTogJzIwMTYtMDUt
MDJUMjM6MTM6NTcuMVonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6
IDE3OTcsIHJlcG9zaXRvcnk6IHRoaXMub3duZWRKU0NSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246
ICdvd25lZC1qc2MtNjE2MScsIHRpbWU6ICcyMDE2LTAzLTAyVDIzOjE5OjU1LjNaJ30pLAorICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiAyMDE3LCByZXBvc2l0b3J5OiB0aGlz
Lm93bmVkSlNDUmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnb3duZWQtanNjLTkxOTEnLCB0aW1l
OiAnMjAxNi0wNS0wMlQyMzoxMzo1Ny4xWid9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0X293bmVyc2hpcHMnLCB7b3duZXI6IDkzMTE2LCBvd25lZDogMTc5N30pLAorICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRfb3duZXJzaGlwcycsIHtvd25lcjogOTYzMzYsIG93bmVkOiAy
MDE3fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkcycsIHtpZDogOTAxLCBudW1iZXI6
ICc5MDEnLCB0aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwKICAgICAgICAgICAgIGRi
Lmluc2VydCgncGxhdGZvcm1zJywge2lkOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCBuYW1l
OiAnc29tZSBwbGF0Zm9ybSd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncGxhdGZvcm1zJywg
e2lkOiBNb2NrRGF0YS5vdGhlclBsYXRmb3JtSWQoKSwgbmFtZTogJ290aGVyIHBsYXRmb3JtJ30p
LApAQCAtNjMsNiArNzMsMTUgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dl
cmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDog
MjAwLCBncm91cDogNjAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgIF0p
OwogICAgIH0sCisgICAgYWRkQW5vdGhlclRyaWdnZXJhYmxlKGRiKSB7CisgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxl
cycsIHtpZDogMjM0NSwgbmFtZTogJ2J1aWxkLXdlYmtpdC1qc2MnfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywge2lkOiA0MDAyLCBuYW1l
OiAnbWFjLXN2bndlYmtpdC1qc2MnLCB0cmlnZ2VyYWJsZTogMjM0NX0pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy5t
YWNvc1JlcG9zaXRvcnlJZCgpLCBncm91cDogNDAwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0
KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCB7cmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBv
c2l0b3J5SWQoKSwgZ3JvdXA6IDQwMDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dl
cmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHRoaXMuanNjUmVwb3NpdG9yeUlkKCks
IGdyb3VwOiA0MDAyfSksCisgICAgICAgIF0pOworICAgIH0sCiAgICAgYWRkRW1wdHlUcmlnZ2Vy
YWJsZShkYikKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCkBAIC0xMTQsNiAr
MTMzLDMyIEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1
ZXN0cycsIHtpZDogNzExLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHRyaWdnZXJhYmxlLCByZXBv
c2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDEsIGNvbW1p
dF9zZXQ6IDQwMn0pLAogICAgICAgICBdKTsKICAgICB9LAorICAgIGFkZFRlc3RHcm91cFdpdGhP
d25lZENvbW1pdHMoZGIsIHN0YXR1c0xpc3QpCisgICAgeworCisgICAgICAgIGlmICghc3RhdHVz
TGlzdCkKKyAgICAgICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdw
ZW5kaW5nJywgJ3BlbmRpbmcnXTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgIHRoaXMuYWRkTW9ja0NvbmZpZ3VyYXRpb24oZGIpLAorICAgICAgICAgICAgdGhpcy5h
ZGRBbm90aGVyVHJpZ2dlcmFibGUoZGIpLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNp
c190YXNrcycsIHtpZDogMTA4MCwgcGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3Nv
bWUgdGFzayB3aXRoIGNvbXBvbmVudCB0ZXN0JywKKyAgICAgICAgICAgICAgICBzdGFydF9ydW46
IDgwMSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKKyAgICAgICAg
ICAgICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6Mjcu
MVonfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lk
OiA5MDAsIHRhc2s6IDEwODAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQg
dGVzdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwM30p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDAzLCBj
b21taXQ6IDg3ODMyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMn
LCB7c2V0OiA0MDMsIGNvbW1pdDogOTMxMTZ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwMywgY29tbWl0OiAxNzk3LCBjb21taXRfb3duZXI6IDkz
MTE2LCByZXF1aXJlc19idWlsZDogdHJ1ZX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRfc2V0cycsIHtpZDogNDA0fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRf
aXRlbXMnLCB7c2V0OiA0MDQsIGNvbW1pdDogODc4MzJ9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwNCwgY29tbWl0OiA5NjMzNn0pLAorICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDA0LCBjb21taXQ6IDIw
MTcsIGNvbW1pdF9vd25lcjogOTYzMzYsIHJlcXVpcmVzX2J1aWxkOiB0cnVlfSksCisgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDQsIHN0YXR1czogc3RhdHVz
TGlzdFswXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRm
b3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogOTAwLCBvcmRlcjogMCwgY29tbWl0X3NldDogNDAz
fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDUsIHN0
YXR1czogc3RhdHVzTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6
IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogOTAwLCBvcmRlcjogMSwgY29t
bWl0X3NldDogNDA0fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywg
e2lkOiA3MDYsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9z
aXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogOTAwLCBv
cmRlcjogMiwgY29tbWl0X3NldDogNDAzfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxk
X3JlcXVlc3RzJywge2lkOiA3MDcsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFibGU6
IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBn
cm91cDogOTAwLCBvcmRlcjogMywgY29tbWl0X3NldDogNDA0fSksCisgICAgICAgIF0pOworICAg
IH0sCiAgICAgbW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXI6IGZ1bmN0aW9uICgp
CiAgICAgewogICAgICAgICByZXR1cm4gewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy92My1tb2RlbHMuanMKaW5kZXggMDUzMDdlNWNjZWI0ZWE2YjlmN2I4MmIxYWNhNWE3
ZjZiOGIzNmJiNi4uYWFkOGUxZTQwMmY3MmZjMzY3NzE4ZjI0NmMwODc1MDBiMDMzMDIwMiAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvdjMtbW9kZWxzLmpzCkBAIC0x
Niw2ICsxNiw3IEBAIGltcG9ydEZyb21WMygnbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMnLCAnQnVp
bGRSZXF1ZXN0Jyk7CiBpbXBvcnRGcm9tVjMoJ21vZGVscy9idWlsZGVyLmpzJywgJ0J1aWxkJyk7
CiBpbXBvcnRGcm9tVjMoJ21vZGVscy9idWlsZGVyLmpzJywgJ0J1aWxkZXInKTsKIGltcG9ydEZy
b21WMygnbW9kZWxzL2NvbW1pdC1sb2cuanMnLCAnQ29tbWl0TG9nJyk7CitpbXBvcnRGcm9tVjMo
J21vZGVscy9jb21taXQtc2V0LmpzJywgJ0N1c3RvbUNvbW1pdFNldCcpCiBpbXBvcnRGcm9tVjMo
J21vZGVscy9tYW5pZmVzdC5qcycsICdNYW5pZmVzdCcpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMv
bWVhc3VyZW1lbnQtYWRhcHRvci5qcycsICdNZWFzdXJlbWVudEFkYXB0b3InKTsKIGltcG9ydEZy
b21WMygnbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMnLCAnTWVhc3VyZW1lbnRDbHVzdGVy
Jyk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21t
aXQtc2V0LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29t
bWl0LXNldC10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2MyZDllMWVlMTg3NTQyNmRlNjkxZDYzYWQ3
NGE2NjllMDBjNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcwpAQCAtMCwwICsxLDE5MCBAQAorInVzZSBz
dHJpY3QiOworCitjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKK3JlcXVpcmUoJy4u
L3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOworY29uc3QgTW9ja01vZGVscyA9IHJlcXVpcmUoJy4v
cmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJykuTW9ja01vZGVsczsKKworZnVuY3Rpb24gY3Jl
YXRlUGF0Y2goKQoreworICAgIHJldHVybiBuZXcgVXBsb2FkZWRGaWxlKDQ1MywgeydjcmVhdGVk
QXQnOiBuZXcgRGF0ZSgnMjAxNy0wNS0wMVQxOToxNjo1M1onKSwgJ2ZpbGVuYW1lJzogJ3BhdGNo
LmRhdCcsICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICAg
ICAgc2l6ZTogNTM0NjM3LCBzaGEyNTY6ICcxNjk0NjNjODEyNWUwN2M1NzcxMTBmZTE0NGVjZDYz
OTQyZWI5NDcyZDQzOGZjMDAxNGY0NzQyNDVlNWRmOGExJ30pOworfQorCitmdW5jdGlvbiBjcmVh
dGVSb290KCkKK3sKKyAgICByZXR1cm4gbmV3IFVwbG9hZGVkRmlsZSg0NTYsIHsnY3JlYXRlZEF0
JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRh
dCcsICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICAgICAg
c2l6ZTogMTY0NTIyMzQsIHNoYTI1NjogJzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1NTQ0
OGZjNTZmNGQ2YzE3NTgwOWJhOTY4Zjc4ZjY1NmQ1OGQnfSk7Cit9CisKK2Z1bmN0aW9uIGN1c3Rv
bUNvbW1pdFNldFdpdGhvdXRPd25lZENvbW1pdCgpCit7CisgICAgY29uc3QgY3VzdG9tQ29tbWl0
U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKKyAgICBjdXN0b21Db21taXRTZXQuc2V0UmV2aXNp
b25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4LCAnMTAuMTEuNCAxNUU2NScpOworICAgIGN1
c3RvbUNvbW1pdFNldC5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQs
ICcyMDA4MDUnKTsKKyAgICByZXR1cm4gY3VzdG9tQ29tbWl0U2V0OworfQorCitmdW5jdGlvbiBj
dXN0b21Db21taXRTZXRXaXRoT3duZWRDb21taXQoKQoreworICAgIGNvbnN0IGN1c3RvbUNvbW1p
dFNldCA9IG5ldyBDdXN0b21Db21taXRTZXQ7CisgICAgY3VzdG9tQ29tbWl0U2V0LnNldFJldmlz
aW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCwgJzEwLjExLjQgMTVFNjUnKTsKKyAgICBj
dXN0b21Db21taXRTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3duZXJS
ZXBvc2l0b3J5LCAnT3duZXJSZXBvc2l0b3J5LXIwJyk7CisgICAgY3VzdG9tQ29tbWl0U2V0LnNl
dFJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm93bmVkUmVwb3NpdG9yeSwgJ093bmVk
UmVwb3NpdG9yeS1yMCcsIG51bGwsICdPd25lclJlcG9zaXRvcnktcjAnKTsKKyAgICByZXR1cm4g
Y3VzdG9tQ29tbWl0U2V0OworfQorCitmdW5jdGlvbiBjdXN0b21Db21taXRTZXRXaXRoUGF0Y2go
KQoreworICAgIGNvbnN0IGN1c3RvbUNvbW1pdFNldCA9IG5ldyBDdXN0b21Db21taXRTZXQ7Cisg
ICAgY29uc3QgcGF0Y2ggPSBjcmVhdGVQYXRjaCgpOworICAgIGN1c3RvbUNvbW1pdFNldC5zZXRS
ZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gsICcxMC4xMS40IDE1RTY1Jyk7Cisg
ICAgY3VzdG9tQ29tbWl0U2V0LnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndl
YmtpdCwgJzIwMDgwNScsIHBhdGNoKTsKKyAgICByZXR1cm4gY3VzdG9tQ29tbWl0U2V0OworfQor
CitmdW5jdGlvbiBjdXN0b21Db21taXRTZXRXaXRoT3duZWRSZXBvc2l0b3J5SGFzU2FtZU5hbWVB
c05vdE93bmVkUmVwb3NpdG9yeSgpCit7CisgICAgY29uc3QgY3VzdG9tQ29tbWl0U2V0ID0gbmV3
IEN1c3RvbUNvbW1pdFNldDsKKyAgICBjdXN0b21Db21taXRTZXQuc2V0UmV2aXNpb25Gb3JSZXBv
c2l0b3J5KE1vY2tNb2RlbHMub3N4LCAnMTAuMTEuNCAxNUU2NScpOworICAgIGN1c3RvbUNvbW1p
dFNldC5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQsICcyMDA4MDUn
KTsKKyAgICBjdXN0b21Db21taXRTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2Rl
bHMub3duZWRXZWJraXQsICdvd25lZC0yMDA4MDUnLCBudWxsLCAnMTAuMTEuNCAxNUU2NScpOwor
ICAgIHJldHVybiBjdXN0b21Db21taXRTZXQ7Cit9CisKK2Rlc2NyaWJlKCdDdXN0b21Db21taXRT
ZXQnLCAoKSA9PiB7CisgICAgTW9ja01vZGVscy5pbmplY3QoKTsKKworICAgIGRlc2NyaWJlKCdU
ZXN0IGN1c3RvbSBjb21taXQgc2V0IHdpdGhvdXQgb3duZWQgY29tbWl0JywgKCkgPT4geworICAg
ICAgICBpdCgnc2hvdWxkIGhhdmUgcmlnaHQgcmV2aXNpb24gZm9yIGEgZ2l2ZW4gcmVwb3NpdG9y
eScsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNl
dFdpdGhvdXRPd25lZENvbW1pdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpLCAnMTAuMTEuNCAxNUU2NScp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy53ZWJraXQpLCAnMjAwODA1Jyk7CisgICAgICAgIH0pOworCisgICAgICAg
IGl0KCdzaG91bGQgaGF2ZSBubyBwYXRjaCBmb3IgYW55IHJlcG9zaXRvcnknLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRob3V0T3duZWRD
b21taXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBv
c2l0b3J5KE1vY2tNb2RlbHMub3N4KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCksIG51bGwpOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGhhdmUgbm8gb3duZXIgcmV2aXNpb24g
Zm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeScsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1p
dFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhvdXRPd25lZENvbW1pdCgpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9k
ZWxzLm9zeCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCksIG51bGwpOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhbGwgcmVwb3NpdG9yaWVzIGluIGl0
JywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0
V2l0aG91dE93bmVkQ29tbWl0KCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1p
dFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0p
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdUZXN0IGN1c3RvbSBjb21t
aXQgc2V0IHdpdGggb3duZWQgY29tbWl0JywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxkIGhh
dmUgcmlnaHQgcmV2aXNpb24gZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeScsICgpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhPd25lZENvbW1pdCgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy5vc3gpLCAnMTAuMTEuNCAxNUU2NScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vd25lclJl
cG9zaXRvcnkpLCAnT3duZXJSZXBvc2l0b3J5LXIwJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm93bmVkUmVwb3Np
dG9yeSksICdPd25lZFJlcG9zaXRvcnktcjAnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo
J3Nob3VsZCBoYXZlIG5vIHBhdGNoIGZvciBhbnkgcmVwb3NpdG9yeScsICgpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhPd25lZENvbW1pdCgp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnko
TW9ja01vZGVscy5vc3gpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQucGF0Y2hGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3duZXJSZXBvc2l0b3J5KSwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShN
b2NrTW9kZWxzLm93bmVkUmVwb3NpdG9yeSksIG51bGwpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIGhhdmUgcmlnaHQgb3duZXIgcmV2aXNpb24gZm9yIGFuIG93bmVkIHJlcG9z
aXRvcnknLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21t
aXRTZXRXaXRoT3duZWRDb21taXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnkpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5v
d25lZFJlcG9zaXRvcnkpLCAnT3duZXJSZXBvc2l0b3J5LXIwJyk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFsbCByZXBvc2l0b3JpZXMgaW4gaXQnLCAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRoT3duZWRD
b21taXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LnJlcG9zaXRv
cmllcygpLCBbTW9ja01vZGVscy5vc3gsIE1vY2tNb2RlbHMub3duZXJSZXBvc2l0b3J5LCBNb2Nr
TW9kZWxzLm93bmVkUmVwb3NpdG9yeV0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRl
c2NyaWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IHdpdGggcGF0Y2gnLCAoKSA9PiB7CisgICAg
ICAgIGl0KCdzaG91bGQgaGF2ZSByaWdodCByZXZpc2lvbiBmb3IgYSBnaXZlbiByZXBvc2l0b3J5
JywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0
V2l0aFBhdGNoKCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9u
Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCksICcxMC4xMS40IDE1RTY1Jyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9k
ZWxzLndlYmtpdCksICcyMDA4MDUnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3Vs
ZCBoYXZlIGEgcGF0Y2ggZm9yIGEgcmVwb3NpdG9yeSB3aXRoIHBhdGNoIHNwZWNpZmllZCcsICgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhQ
YXRjaCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9z
aXRvcnkoTW9ja01vZGVscy5vc3gpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCksIGNyZWF0
ZVBhdGNoKCkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGhhdmUgbm8gb3du
ZXIgcmV2aXNpb24gZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeScsICgpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhQYXRjaCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2Nr
TW9kZWxzLm9zeCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5v
d25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCksIG51bGwpOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhbGwgcmVwb3NpdG9yaWVzIGlu
IGl0JywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0
U2V0V2l0aFBhdGNoKCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5y
ZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0
IHdpdGggb3duZWQgcmVwb3NpdG9yeSBoYXMgc2FtZSBuYW1lIGFzIG5vbi1vd25lZCByZXBvc2l0
b3J5JywgICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIHJpZ2h0IHJldmlzaW9uIGZv
ciBhIGdpdmVuIHJlcG9zaXRvcnknLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRT
ZXQgPSBjdXN0b21Db21taXRTZXRXaXRoT3duZWRSZXBvc2l0b3J5SGFzU2FtZU5hbWVBc05vdE93
bmVkUmVwb3NpdG9yeSgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZp
c2lvbkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpLCAnMTAuMTEuNCAxNUU2NScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkoTW9j
a01vZGVscy53ZWJraXQpLCAnMjAwODA1Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm93bmVkV2Via2l0KSwgJ293
bmVkLTIwMDgwNScpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGhhdmUgbm8g
cGF0Y2ggZm9yIGFueSByZXBvc2l0b3J5JywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29t
bWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0V2l0aE93bmVkUmVwb3NpdG9yeUhhc1NhbWVOYW1lQXNO
b3RPd25lZFJlcG9zaXRvcnkoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQu
cGF0Y2hGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtp
dCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJl
cG9zaXRvcnkoTW9ja01vZGVscy5vd25lZFdlYmtpdCksIG51bGwpOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIGhhdmUgcmlnaHQgb3duZXIgcmV2aXNpb24gZm9yIGFuIG93bmVk
IHJlcG9zaXRvcnknLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0
b21Db21taXRTZXRXaXRoT3duZWRSZXBvc2l0b3J5SGFzU2FtZU5hbWVBc05vdE93bmVkUmVwb3Np
dG9yeSgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9u
Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndl
YmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJl
dmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm93bmVkV2Via2l0KSwgJzEwLjExLjQgMTVF
NjUnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYWxsIHJlcG9z
aXRvcmllcyBpbiBpdCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1
c3RvbUNvbW1pdFNldFdpdGhPd25lZFJlcG9zaXRvcnlIYXNTYW1lTmFtZUFzTm90T3duZWRSZXBv
c2l0b3J5KCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0
b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdCwgTW9ja01vZGVscy5v
d25lZFdlYmtpdF0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdUZXN0
IGN1c3RvbSBjb21taXQgc2V0IGVxdWFsaXR5IGZ1bmN0aW9uJywgKCkgPT4geworICAgICAgICBp
dCgnc2hvdWxkIGJlIGVxdWFsIHRvIHNhbWUgY3VzdG9tIGNvbW1pdCBzZXQnLCAoKSA9PiB7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGN1c3RvbUNvbW1pdFNldFdpdGhvdXRPd25lZENv
bW1pdCgpLCBjdXN0b21Db21taXRTZXRXaXRob3V0T3duZWRDb21taXQoKSk7CisgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKGN1c3RvbUNvbW1pdFNldFdpdGhPd25lZENvbW1pdCgpLCBjdXN0
b21Db21taXRTZXRXaXRoT3duZWRDb21taXQoKSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGN1c3RvbUNvbW1pdFNldFdpdGhQYXRjaCgpLCBjdXN0b21Db21taXRTZXRXaXRoUGF0Y2go
KSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGN1c3RvbUNvbW1pdFNldFdpdGhPd25l
ZFJlcG9zaXRvcnlIYXNTYW1lTmFtZUFzTm90T3duZWRSZXBvc2l0b3J5KCksCisgICAgICAgICAg
ICAgICAgY3VzdG9tQ29tbWl0U2V0V2l0aE93bmVkUmVwb3NpdG9yeUhhc1NhbWVOYW1lQXNOb3RP
d25lZFJlcG9zaXRvcnkoKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90
IGJlIGVxdWFsIGV2ZW4gaWYgbm9uLW93bmVkIHJldmlzaW9ucyBhcmUgdGhlIHNhbWUnLCAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQwID0gY3VzdG9tQ29tbWl0U2V0V2l0aG91
dE93bmVkQ29tbWl0KCk7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQxID0gY3VzdG9tQ29t
bWl0U2V0V2l0aE93bmVkUmVwb3NpdG9yeUhhc1NhbWVOYW1lQXNOb3RPd25lZFJlcG9zaXRvcnko
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQwLmVxdWFscyhjb21taXRTZXQx
KSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdUZXN0IGN1
c3RvbSBjb21taXQgc2V0IGN1c3RvbSByb290IG9wZXJhdGlvbnMnLCAoKSA9PiB7CisgICAgICAg
IGl0KCdzaG91bGQgcmV0dXJuIGVtcHR5IGN1c3RvbSByb290cyBpZiBubyBjdXN0b20gcm9vdCBz
cGVjaWZpZWQnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGN1c3RvbUNv
bW1pdFNldFdpdGhvdXRPd25lZENvbW1pdCgpLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gcm9vdCBpZiByb290IGlzIGFkZGVkIGlu
dG8gY29tbWl0IHNldCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1
c3RvbUNvbW1pdFNldFdpdGhvdXRPd25lZENvbW1pdCgpOworICAgICAgICAgICAgY29tbWl0U2V0
LmFkZEN1c3RvbVJvb3QoY3JlYXRlUm9vdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoY29tbWl0U2V0LmN1c3RvbVJvb3RzKCksIFtjcmVhdGVSb290KCldKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcwppbmRleCBmZjVkMThj
OTUyMzJkZDgzZGRmZjE2ZWRhODk3OGUxZDIzNzE3OGI4Li45NmFlYzJiNzE2MGJlY2IyMTM2MWM3
NzhkNGE0YjM3ZWZjOWQyOWJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCkBAIC0x
OCw2ICsxOCw3IEBAIHZhciBNb2NrTW9kZWxzID0gewogICAgICAgICAgICAgTW9ja01vZGVscy5v
c3ggPSBSZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbig5LCB7bmFtZTogJ09TIFgnfSk7CiAgICAg
ICAgICAgICBNb2NrTW9kZWxzLmlvcyA9IFJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDIyLCB7
bmFtZTogJ2lPUyd9KTsKICAgICAgICAgICAgIE1vY2tNb2RlbHMud2Via2l0ID0gUmVwb3NpdG9y
eS5lbnN1cmVTaW5nbGV0b24oMTEsIHtuYW1lOiAnV2ViS2l0JywgdXJsOiAnaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvJDEnfSk7CisgICAgICAgICAgICBNb2NrTW9kZWxzLm93bmVk
V2Via2l0ID0gUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24oMTkxLCB7bmFtZTogJ1dlYktpdCcs
IHVybDogJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyQxJywgb3duZXI6IDl9KTsK
ICAgICAgICAgICAgIE1vY2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeSA9IFJlcG9zaXRvcnkuZW5z
dXJlU2luZ2xldG9uKDE2LCB7bmFtZTogJ1NoYXJlZCd9KTsKICAgICAgICAgICAgIE1vY2tNb2Rl
bHMub3duZXJSZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24oMTExLCB7bmFt
ZTogJ093bmVyIFJlcG9zaXRvcnknfSk7CiAgICAgICAgICAgICBNb2NrTW9kZWxzLm93bmVkUmVw
b3NpdG9yeSA9IFJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDExMiwge25hbWU6ICdPd25lZCBS
ZXBvc2l0b3J5Jywgb3duZXI6IDExMX0pOwo=
</data>
<flag name="review"
          id="341105"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>