<?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>192972</bug_id>
          
          <creation_ts>2018-12-20 20:26:40 -0800</creation_ts>
          <short_desc>Add UI in analysis task page to show commit testability information.</short_desc>
          <delta_ts>2019-01-18 20:33:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to>dewei_zhu</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1490275</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-20 20:26:40 -0800</bug_when>
    <thetext>Add UI in analysis task page to show commit testability infomation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490280</commentid>
    <comment_count>1</comment_count>
      <attachid>357925</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-20 21:16:55 -0800</bug_when>
    <thetext>Created attachment 357925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490281</commentid>
    <comment_count>2</comment_count>
      <attachid>357926</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-20 21:25:52 -0800</bug_when>
    <thetext>Created attachment 357926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490288</commentid>
    <comment_count>3</comment_count>
      <attachid>357926</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-20 22:49:38 -0800</bug_when>
    <thetext>Comment on attachment 357926
Patch

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

&gt; Websites/perf.webkit.org/browser-tests/custom-analysis-task-configurator-tests.js:1
&gt; +

You need to add this to index.html

&gt; Websites/perf.webkit.org/browser-tests/custom-analysis-task-configurator-tests.js:31
&gt; +    });

You should add a test where the test where the fetching of commits fail.
And make sure the user can still create a test.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:197
&gt; +            this.renderReplace(this.content(&apos;comparison-testability&apos;), this._buildTestabilityTable(this._commitSetMap[&apos;Comparison&apos;], &apos;Comparison&apos;, this._invalidRevisionForRepositoryByConfiguration[&apos;Comparison&apos;]));

This line is really long. Maybe wrap it around at some point?

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:348
&gt; +            fetchingPromises.push(CommitLog.fetchForSingleRevision(repository, revision).then(
&gt; +                (commits) =&gt; {

Split this into a helper function so that can we use await here as we talked about it in person.
Also use Array.from &amp; map to simplify the logic here.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:509
&gt; +                rows.push(element(&apos;tr&apos;, element(&apos;td&apos;, `${commit.repository().name()} - ${commit.label()}: ${commit.testability()}`)));

We should be using ul &amp; li here since this is really a list of warnings.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:-489
&gt; -            this._updateCommitSetMap();

As we discussed in person, we should keep this function call in fact.
We should split out the work to fetch the commit sets from the server and only do that in a timer.

&gt; Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js:153
&gt; +
&gt; +

Nit: two blank lines here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490586</commentid>
    <comment_count>4</comment_count>
      <attachid>358009</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-21 18:13:36 -0800</bug_when>
    <thetext>Created attachment 358009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490731</commentid>
    <comment_count>5</comment_count>
      <attachid>358048</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-24 16:15:34 -0800</bug_when>
    <thetext>Created attachment 358048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490736</commentid>
    <comment_count>6</comment_count>
      <attachid>358048</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-24 17:10:21 -0800</bug_when>
    <thetext>Comment on attachment 358048
Patch

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

The patch mostly looks good but there are two subtle but major problems so r- for now.

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        Add UI in custom analysis task configuration and customizable test group form to
&gt; +        show testability information.

It seems like this would fit in a single line?

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:61
&gt; +        this._specifiedRevisions = {&apos;Baseline&apos;: new Map, &apos;Comparison&apos;: new Map};
&gt; +        this._fetchedCommits = {&apos;Baseline&apos;: new Map, &apos;Comparison&apos;: new Map};
&gt; +        this._invalidRevisionForRepositoryByConfiguration = {&apos;Baseline&apos;: new Map, &apos;Comparison&apos;: new Map};

I specifically didn&apos;t do this because people had complained that changing the platform
(e.g. from MBA to MBP) shouldn&apos;t reset which revision they had selected for, say, WebKit.
So we shouldn&apos;t do this. r- because of this. Not sure why I didn&apos;t catch this earlier.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:200
&gt; +        if (this._showComparison)
&gt; +            this.renderReplace(this.content(&apos;comparison-testability&apos;), this._buildTestabilityList(this._commitSetMap[&apos;Comparison&apos;], &apos;Comparison&apos;,
&gt; +                this._invalidRevisionForRepositoryByConfiguration[&apos;Comparison&apos;]));

Nit: Need { ~ } around this two line statement.
In WebKit coding guideline the number of lines refer to the number of physical lines, not the number of statements.
Because the coding guideline also prohibits having multiple statements per line,
each physical line almost always happens to end up having single statement.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:403
&gt; +            fetchedCommits.delete(repository);

This seems too late. It&apos;s problematic that we&apos;d have a stale commit in this._fetchedCommits until we&apos;re done fetching.
That is, the user picks revision A, we&apos;d fetch A.
Then the user picks revision B, but until we fetch A, we&apos;d have B in this._fetchedCommits.
I think this bug exists before this patch but since we&apos;re modifying so much of the commit fetching logic
that we might as well as fix it while we&apos;re at it.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:508
&gt; +        for (const repository of commitSet ? commitSet.repositories() : []) {

Why don&apos;t we just return early when commitSet is undefined / null?

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:509
&gt; +            const commit = this._fetchedCommits[configurationName].get(repository);

This isn&apos;t right. There is no guarantee that the newly set commit had already been fetched.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:516
&gt; +        if (!entries.length)
&gt; +            return [];

What the heck is the point of this early return??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490910</commentid>
    <comment_count>7</comment_count>
      <attachid>358048</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-27 15:06:30 -0800</bug_when>
    <thetext>Comment on attachment 358048
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:61
&gt;&gt; +        this._invalidRevisionForRepositoryByConfiguration = {&apos;Baseline&apos;: new Map, &apos;Comparison&apos;: new Map};
&gt; 
&gt; I specifically didn&apos;t do this because people had complained that changing the platform
&gt; (e.g. from MBA to MBP) shouldn&apos;t reset which revision they had selected for, say, WebKit.
&gt; So we shouldn&apos;t do this. r- because of this. Not sure why I didn&apos;t catch this earlier.

OK, I misunderstood the intention. I added this logic while I was revising this patch per last review.
However, I don&apos;t think previous code works as expected because we will call `CommitLog.fetchLatestCommitForPlatform` anyway. If it successfully fetched the commits, the commitSetMap will be overwrite anyway. If the fetch returns nothing, the existing commitSetMap is not used to fill the input field and user will end up with blank input field.
Even if the fetch failed, we shouldn&apos;t use the existing CommitSetMap because the platform can be completely different OS build, (e.g. Mojave vs High Sierra).
Overall, maintaining the previous commit set doesn&apos;t seem to be helpful.

However, in order to work as expected, we need the ability to group platforms which we had some discussion earlier. If we had this grouping info, we can even change `CommitLog.fetchLatestCommitForPlatform` to `CommitLog.fetchLatestCommitForPlatformGroup`.

&gt;&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:403
&gt;&gt; +            fetchedCommits.delete(repository);
&gt; 
&gt; This seems too late. It&apos;s problematic that we&apos;d have a stale commit in this._fetchedCommits until we&apos;re done fetching.
&gt; That is, the user picks revision A, we&apos;d fetch A.
&gt; Then the user picks revision B, but until we fetch A, we&apos;d have B in this._fetchedCommits.
&gt; I think this bug exists before this patch but since we&apos;re modifying so much of the commit fetching logic
&gt; that we might as well as fix it while we&apos;re at it.

I think the right logic is remove it before fetching.
1. fetchCommits is set in two places, one is after invoking `CommitLog.fetchLatestCommitForPlatform`, the other is line 398.
2. `fetchedCommits` can either be the commit specified in `specifiedRevisions` or null if the revision is invalid.
Based on 1 &amp; 2, I think the right logic should be remove it before fetch and set it if it fetches successfully.

&gt;&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:509
&gt;&gt; +            const commit = this._fetchedCommits[configurationName].get(repository);
&gt; 
&gt; This isn&apos;t right. There is no guarantee that the newly set commit had already been fetched.

Per discussion around line 403, this is guaranteed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490911</commentid>
    <comment_count>8</comment_count>
      <attachid>358048</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-12-27 17:07:16 -0800</bug_when>
    <thetext>Comment on attachment 358048
Patch

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

&gt;&gt;&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:403
&gt;&gt;&gt; +            fetchedCommits.delete(repository);
&gt;&gt; 
&gt;&gt; This seems too late. It&apos;s problematic that we&apos;d have a stale commit in this._fetchedCommits until we&apos;re done fetching.
&gt;&gt; That is, the user picks revision A, we&apos;d fetch A.
&gt;&gt; Then the user picks revision B, but until we fetch A, we&apos;d have B in this._fetchedCommits.
&gt;&gt; I think this bug exists before this patch but since we&apos;re modifying so much of the commit fetching logic
&gt;&gt; that we might as well as fix it while we&apos;re at it.
&gt; 
&gt; I think the right logic is remove it before fetching.
&gt; 1. fetchCommits is set in two places, one is after invoking `CommitLog.fetchLatestCommitForPlatform`, the other is line 398.
&gt; 2. `fetchedCommits` can either be the commit specified in `specifiedRevisions` or null if the revision is invalid.
&gt; Based on 1 &amp; 2, I think the right logic should be remove it before fetch and set it if it fetches successfully.

This should be changed even earlier when the specifiedRevision is changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493545</commentid>
    <comment_count>9</comment_count>
      <attachid>358048</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-01-10 17:45:42 -0800</bug_when>
    <thetext>Comment on attachment 358048
Patch

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

&gt;&gt;&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:61
&gt;&gt;&gt; +        this._invalidRevisionForRepositoryByConfiguration = {&apos;Baseline&apos;: new Map, &apos;Comparison&apos;: new Map};
&gt;&gt; 
&gt;&gt; I specifically didn&apos;t do this because people had complained that changing the platform
&gt;&gt; (e.g. from MBA to MBP) shouldn&apos;t reset which revision they had selected for, say, WebKit.
&gt;&gt; So we shouldn&apos;t do this. r- because of this. Not sure why I didn&apos;t catch this earlier.
&gt; 
&gt; OK, I misunderstood the intention. I added this logic while I was revising this patch per last review.
&gt; However, I don&apos;t think previous code works as expected because we will call `CommitLog.fetchLatestCommitForPlatform` anyway. If it successfully fetched the commits, the commitSetMap will be overwrite anyway. If the fetch returns nothing, the existing commitSetMap is not used to fill the input field and user will end up with blank input field.
&gt; Even if the fetch failed, we shouldn&apos;t use the existing CommitSetMap because the platform can be completely different OS build, (e.g. Mojave vs High Sierra).
&gt; Overall, maintaining the previous commit set doesn&apos;t seem to be helpful.
&gt; 
&gt; However, in order to work as expected, we need the ability to group platforms which we had some discussion earlier. If we had this grouping info, we can even change `CommitLog.fetchLatestCommitForPlatform` to `CommitLog.fetchLatestCommitForPlatformGroup`.

As discussed in person, it should only clear the commit set when all revisions in all input elements are remained untouched by user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493558</commentid>
    <comment_count>10</comment_count>
      <attachid>358860</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-01-10 18:56:02 -0800</bug_when>
    <thetext>Created attachment 358860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493624</commentid>
    <comment_count>11</comment_count>
      <attachid>358878</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-01-10 23:05:38 -0800</bug_when>
    <thetext>Created attachment 358878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494975</commentid>
    <comment_count>12</comment_count>
      <attachid>358878</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-15 19:18:15 -0800</bug_when>
    <thetext>Comment on attachment 358878
Patch

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

r=me assuming the following comments are addressed.

&gt; Websites/perf.webkit.org/browser-tests/custom-analysis-task-configurator-tests.js:56
&gt; +        await sleep(100);

What is this? Why are we waiting for 100ms?
We should avoid waiting for a fixed amount like this as much as possible.
If there is some kind of timeout in the UI code itself,
then we should be periodically polling to get to a good state instead of hard-coding a timeout like this.

&gt; Websites/perf.webkit.org/browser-tests/custom-analysis-task-configurator-tests.js:65
&gt; +        await sleep(100);

Ditto.

&gt; Websites/perf.webkit.org/browser-tests/custom-analysis-task-configurator-tests.js:143
&gt; +        await sleep(100);

Ditto.

&gt; Websites/perf.webkit.org/browser-tests/custom-analysis-task-configurator-tests.js:152
&gt; +        await sleep(100);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:17
&gt; -        this._updateTriggerableLazily = new LazilyEvaluatedFunction(this._updateTriggerable.bind(this));
&gt; +        this._invalidRevisionForRepositoryByConfiguration = {&apos;Baseline&apos;: new Map, &apos;Comparison&apos;: new Map};

This variable name is pretty long. I think we can get away by simply _invalidRevisionsByConfiguration

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:62
&gt; +            for (const [repository, commit] of this._fetchedCommits[configuration].entries()) {

We should probably extract this code to create a new Map based on this._specifiedRevisions[configuration]
as a helper function instead of repeating the same code twice.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:67
&gt; +            this._fetchedCommits[configuration] = newFetchedCommitsForConfiguration;

We should avoid seeing it to the new map when there was no change so that the lazily evaluated function can avoid the work.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:213
&gt; +        this.renderReplace(this.content(&apos;baseline-testability&apos;),
&gt; +            this._buildTestabilityList(this._commitSetMap[&apos;Baseline&apos;], &apos;Baseline&apos;, this._invalidRevisionForRepositoryByConfiguration[&apos;Baseline&apos;]));

Why are we rapping the line right after the first argument?? There is a lot of space after the first argument.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:217
&gt; +        }

We need to clear this.content(&apos;comparison-testability&apos;) when this._showComparison is false.
Note that a single analysis task configurator could be used to show multiple analysis tasks
when navigating from one analysis task to another.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:409
&gt; +        try {

We should only wrap the call to CommitLog.fetchForSingleRevision with this try &amp; catch.
Also, we should assert that the error we got is UnknownCommit.
Otherwise can suppress random exceptions being thrown elsewhere.

&gt; Websites/perf.webkit.org/public/v3/components/custom-analysis-task-configurator.js:586
&gt; +            }, 100);

We should probably expose this 100ms delay in some constant like
CustomAnalysisTaskConfigurator.commitFetchInterval
so that the tests can use it instead of hard-coding 100ms there again.

&gt; Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js:149
&gt; +        for (const commitSet of commitSets)
&gt; +            hasCommitWithTestability |= !!commitSet.commitsWithTestability();

Should be commitSets.some(() =&gt; !!commitSet.commitsWithTestability()).

&gt; Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js:156
&gt; +                element(&apos;tr&apos;, {class: &apos;testability&apos;}, `${commit.repository().name()} - ${commit.label()}: ${commit.testability()}`));

Use commit.label() instead of getting repository name &amp; label manually?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495019</commentid>
    <comment_count>13</comment_count>
      <attachid>358878</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-01-15 22:38:34 -0800</bug_when>
    <thetext>Comment on attachment 358878
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js:156
&gt;&gt; +                element(&apos;tr&apos;, {class: &apos;testability&apos;}, `${commit.repository().name()} - ${commit.label()}: ${commit.testability()}`));
&gt; 
&gt; Use commit.label() instead of getting repository name &amp; label manually?

You meant commit.title()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495392</commentid>
    <comment_count>14</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2019-01-16 21:56:49 -0800</bug_when>
    <thetext>Change is landed in r240104.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495396</commentid>
    <comment_count>15</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2019-01-16 21:59:22 -0800</bug_when>
    <thetext>rdar://problem/44369873</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357925</attachid>
            <date>2018-12-20 21:16:55 -0800</date>
            <delta_ts>2018-12-20 21:25:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192972-20181220211654.patch</filename>
            <type>text/plain</type>
            <size>18116</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDg1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwOTM2OTA5NzYxYTI0ZjE3ZGNmM2FhOWI3YTQyZWUxNGQyNGJlNTA1Li5hZmQzNzViZDY4
MGUwNWYzNGIzMDlmYmFiOGNiOThiMTA5ZjZhM2RjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxOC0xMi0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVUkgaW4gYW5hbHlzaXMgdGFzayBwYWdlIHRvIHNo
b3cgY29tbWl0IHRlc3RhYmlsaXR5IGluZm9tYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVUkgaW4gY3VzdG9tIGFuYWx5c2lzIHRhc2sg
Y29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphYmxlIHRlc3QgZ3JvdXAgZm9ybSB0bworICAgICAg
ICBzaG93IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorCisgICAgICAgICogcHVibGljL3YzL2Nv
bXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpzOiBBZGRlZCBVSSB0
byBzaG93IHRlc3RhYmlsdHkgaW5mb21hdGlvbi4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFz
a0NvbmZpZ3VyYXRvcik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3Iu
cHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IucHJvdG90eXBlLl91cGRhdGVDb21taXRTZXRNYXApOgorICAgICAgICBGaXhlZCBhIGJ1ZyB0
aGF0ICdjdXJyZW50Q29tcGFyaXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorICAgICAgICBBZGRl
ZCBsb2dpYyB0byBmZXRjaCBjb21taXRzIGluc2lkZSBhIGNvbW1pdCBzZXQuCisgICAgICAgIChD
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLmFzeW5jLl9mZXRjaENvbW1p
dHNGb3JDb21taXRTZXQpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
LnByb3RvdHlwZS5fY29tcHV0ZUNvbW1pdFNldCk6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rh
c2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZFJldmlzaW9uVGFibGUpOgorICAgICAgICAo
Q3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRUZXN0YWJpbGl0
eVRhYmxlKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5
cGUuX2J1aWxkUmV2aXNpb25JbnB1dCk6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25m
aWd1cmF0b3IuY3NzVGVtcGxhdGUpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmln
dXJhdG9yLnByb3RvdHlwZS5fYnVpbGRSZXBvc2l0b3J5R3JvdXBMaXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3Jt
LmpzOiBBZGRlZCBVSSB0byBzaG93IHRlc3RhYmlsdHkgaW5mb21hdGlvbi4KKyAgICAgICAgKEN1
c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJvdG90eXBlLl9yZW5kZXJDdXN0b21SZXZpc2lvblRh
YmxlKToKKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJvdG90eXBlLl9jb25z
dHJ1Y3RUZXN0YWJpbGl0eVJvd3MuKToKKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZv
cm0ucHJvdG90eXBlLl9jb25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MpOgorICAgICAgICAoQ3VzdG9t
aXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX2NvbnN0cnVjdFJldmlzaW9uUmFkaW9CdXR0
b25zKToKKyAgICAgICAgQ2hhbmdpbmcgZWl0aGVyIHJldmlzaW9uIGVkaXRvciBvciByYWRpbyBi
dXR0b24gc2hvdWxkIHRyaWdnZXIgYSByZS1yZW5kZXIgYXMgdGVzdGFiaWxpdHkKKyAgICAgICAg
aW5mb3JtYXRpb24gZm9yIHVwZGF0ZWQgcmV2aXNpb24gbWF5IGNoYW5nZS4KKyAgICAgICAgKEN1
c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uY3NzVGVtcGxhdGUpOgorICAgICAgICAqIHB1YmxpYy92
My9tb2RlbHMvY29tbWl0LXNldC5qczoKKyAgICAgICAgKEludGVybWVkaWF0ZUNvbW1pdFNldC5w
cm90b3R5cGUuY29tbWl0c1dpdGhUZXN0YWJpbGl0eSk6IFJlbmFtZWQgZnJvbSAnY29tbWl0c1dp
dGhUZXN0YWJpbGl0eVdhcm5pbmdzJy4KKyAgICAgICAgKEludGVybWVkaWF0ZUNvbW1pdFNldC5w
cm90b3R5cGUuY29tbWl0c1dpdGhUZXN0YWJpbGl0eVdhcm5pbmdzKTogRGVsZXRlZC4KKwogMjAx
OC0xMi0xNCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRl
bmQgY29tbWl0cyB0YWJsZSB0byBjb250YWluIHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1
c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0
b3IuanMKaW5kZXggNDNmMzViN2NhNTI2MTQ4NWMyZjhmZTRjMjNmNGY0N2FhMzI0MWVmNC4uOGEy
OWM2YzFiYTU5ZDQyMmI0ZThmZjNhY2U2ZDVjODYxMjc2ZDFlMCAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1hbmFseXNpcy10
YXNrLWNvbmZpZ3VyYXRvci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpzCkBAIC03
LDE0ICs3LDE0IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRz
IENvbXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLl9zZWxlY3RlZFRlc3RzID0gW107CiAgICAg
ICAgIHRoaXMuX3RyaWdnZXJhYmxlUGxhdGZvcm1zID0gW107CiAgICAgICAgIHRoaXMuX3NlbGVj
dGVkUGxhdGZvcm0gPSBudWxsOwotICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uTmFtZXMgPSBb
J0Jhc2VsaW5lJywgJ0NvbXBhcmlzb24nXTsKICAgICAgICAgdGhpcy5fc2hvd0NvbXBhcmlzb24g
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fY29tbWl0U2V0TWFwID0ge307CiAgICAgICAgIHRoaXMu
X3NwZWNpZmllZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6
IG5ldyBNYXB9OwogICAgICAgICB0aGlzLl9wYXRjaFVwbG9hZGVycyA9IHsnQmFzZWxpbmUnOiBu
ZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OwogICAgICAgICB0aGlzLl9jdXN0b21Sb290
VXBsb2FkZXJzID0geydCYXNlbGluZSc6IG51bGwsICdDb21wYXJpc29uJzogbnVsbH07Ci0gICAg
ICAgIHRoaXMuX2ZldGNoZWRSZXZpc2lvbnMgPSB7J0Jhc2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBh
cmlzb24nOiBuZXcgTWFwfTsKKyAgICAgICAgdGhpcy5fZmV0Y2hlZENvbW1pdHMgPSB7J0Jhc2Vs
aW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcgTWFwfTsKICAgICAgICAgdGhpcy5fcmVw
b3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uID0geydCYXNlbGluZSc6IG51bGwsICdDb21wYXJp
c29uJzogbnVsbH07CisgICAgICAgIHRoaXMuX2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnlC
eUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcg
TWFwfTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVMYXppbHkgPSBuZXcgTGF6aWx5
RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fdXBkYXRlVHJpZ2dlcmFibGUuYmluZCh0aGlzKSk7CiAK
ICAgICAgICAgdGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVUZXN0c0xhemlseSA9IG5ldyBMYXppbHlF
dmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzLmJpbmQodGhpcykp
OwpAQCAtMTkwLDYgKzE5MCwxMSBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY29uc3QgW3RyaWdnZXJhYmxlLCBl
cnJvcl0gPSB0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZUxhemlseS5ldmFsdWF0ZSh0aGlzLl9zZWxl
Y3RlZFRlc3RzLCB0aGlzLl9zZWxlY3RlZFBsYXRmb3JtKTsKIAogICAgICAgICB0aGlzLl9yZW5k
ZXJSZXBvc2l0b3J5UGFuZXNMYXppbHkuZXZhbHVhdGUodHJpZ2dlcmFibGUsIGVycm9yLCB0aGlz
Ll9zZWxlY3RlZFBsYXRmb3JtLCB0aGlzLl9yZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24s
IHRoaXMuX3Nob3dDb21wYXJpc29uKTsKKworICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhp
cy5jb250ZW50KCdiYXNlbGluZS10ZXN0YWJpbGl0eScpLAorICAgICAgICAgICAgdGhpcy5fYnVp
bGRUZXN0YWJpbGl0eVRhYmxlKHRoaXMuX2NvbW1pdFNldE1hcFsnQmFzZWxpbmUnXSwgJ0Jhc2Vs
aW5lJywgdGhpcy5faW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeUJ5Q29uZmlndXJhdGlvblsn
QmFzZWxpbmUnXSkpOworICAgICAgICBpZiAodGhpcy5fc2hvd0NvbXBhcmlzb24pCisgICAgICAg
ICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdjb21wYXJpc29uLXRlc3RhYmls
aXR5JyksIHRoaXMuX2J1aWxkVGVzdGFiaWxpdHlUYWJsZSh0aGlzLl9jb21taXRTZXRNYXBbJ0Nv
bXBhcmlzb24nXSwgJ0NvbXBhcmlzb24nLCB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0
b3J5QnlDb25maWd1cmF0aW9uWydDb21wYXJpc29uJ10pKTsKICAgICB9CiAKICAgICBfcmVuZGVy
VHJpZ2dlcmFibGVUZXN0cygpCkBAIC0zMDQsMTggKzMwOSw1NyBAQCBjbGFzcyBDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAg
IG5ld0NvbXBhcmlzb24gPSBudWxsOwogCiAgICAgICAgIGNvbnN0IGN1cnJlbnRCYXNlbGluZSA9
IHRoaXMuX2NvbW1pdFNldE1hcFsnQmFzZWxpbmUnXTsKLSAgICAgICAgY29uc3QgY3VycmVudENv
bXBhcmlzb24gPSB0aGlzLl9jb21taXRTZXRNYXBbJ0Jhc2VsaW5lJ107Ci0gICAgICAgIGlmIChu
ZXdCYXNlbGluZSA9PSBjdXJyZW50QmFzZWxpbmUgJiYgbmV3Q29tcGFyaXNvbiA9PSBjdXJyZW50
Q29tcGFyaXNvbikKLSAgICAgICAgICAgIHJldHVybjsgLy8gQm90aCBvZiB0aGVtIGFyZSBudWxs
LgorICAgICAgICBjb25zdCBjdXJyZW50Q29tcGFyaXNvbiA9IHRoaXMuX2NvbW1pdFNldE1hcFsn
Q29tcGFyaXNvbiddOworICAgICAgICBjb25zdCBhcmVDb21taXRTZXRzRXF1YWwgPSAoY29tbWl0
U2V0QSwgY29tbWl0U2V0QikgPT4gY29tbWl0U2V0QSA9PSBjb21taXRTZXRCIHx8IChjb21taXRT
ZXRBICYmIGNvbW1pdFNldEIgJiYgY29tbWl0U2V0QS5lcXVhbHMoY29tbWl0U2V0QikpOworICAg
ICAgICBjb25zdCBzYW1lQmFzZWxpbmVDb25maWcgPSBhcmVDb21taXRTZXRzRXF1YWwoY3VycmVu
dEJhc2VsaW5lLCBuZXdCYXNlbGluZSk7CisgICAgICAgIGNvbnN0IHNhbWVDb21wYXJpc2lvbkNv
bmZpZyA9IGFyZUNvbW1pdFNldHNFcXVhbChjdXJyZW50Q29tcGFyaXNvbiwgbmV3Q29tcGFyaXNv
bik7CiAKLSAgICAgICAgaWYgKG5ld0Jhc2VsaW5lICYmIGN1cnJlbnRCYXNlbGluZSAmJiBuZXdC
YXNlbGluZS5lcXVhbHMoY3VycmVudEJhc2VsaW5lKQotICAgICAgICAgICAgJiYgbmV3Q29tcGFy
aXNvbiAmJiBjdXJyZW50Q29tcGFyaXNvbiAmJiBuZXdDb21wYXJpc29uLmVxdWFscyhjdXJyZW50
Q29tcGFyaXNvbikpCisgICAgICAgIGlmIChzYW1lQmFzZWxpbmVDb25maWcgJiYgc2FtZUNvbXBh
cmlzaW9uQ29uZmlnKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2NvbW1p
dFNldE1hcCA9IHsnQmFzZWxpbmUnOiBuZXdCYXNlbGluZSwgJ0NvbXBhcmlzb24nOiBuZXdDb21w
YXJpc29ufTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjb21taXRTZXRDaGFuZ2Un
KTsKLSAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICAgICAgY29uc3QgZmV0Y2hp
bmdQcm9taXNlcyA9IFtdOworICAgICAgICBpZiAoIXNhbWVCYXNlbGluZUNvbmZpZykKKyAgICAg
ICAgICAgIGZldGNoaW5nUHJvbWlzZXMucHVzaCh0aGlzLl9mZXRjaENvbW1pdHNGb3JDb21taXRT
ZXQoJ0Jhc2VsaW5lJywgbmV3QmFzZWxpbmUsIGN1cnJlbnRCYXNlbGluZSkpOworCisgICAgICAg
IGlmICghc2FtZUNvbXBhcmlzaW9uQ29uZmlnKQorICAgICAgICAgICAgZmV0Y2hpbmdQcm9taXNl
cy5wdXNoKHRoaXMuX2ZldGNoQ29tbWl0c0ZvckNvbW1pdFNldCgnQ29tcGFyaXNvbicsIG5ld0Nv
bXBhcmlzb24sIGN1cnJlbnRDb21wYXJpc29uKSk7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKGZldGNoaW5nUHJvbWlzZXMpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEFjdGlvbignY29tbWl0U2V0Q2hhbmdlJyk7CisgICAgICAgICAgICB0aGlzLmVucXVldWVU
b1JlbmRlcigpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhc3luYyBfZmV0Y2hDb21taXRz
Rm9yQ29tbWl0U2V0KGNvbmZpZ3VyYXRpb25OYW1lLCBjb21taXRTZXQsIHByZXZpb3VzQ29tbWl0
U2V0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb21taXRTZXQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY29uc3Qgc3BlY2lmaWVkUmV2aXNpb25zID0gdGhpcy5fc3BlY2lmaWVkUmV2
aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAgICAgY29uc3QgZmV0Y2hlZENvbW1pdHMg
PSB0aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0aW9uTmFtZV07CisgICAgICAgIGNvbnN0
IGludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnkgPSB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JS
ZXBvc2l0b3J5QnlDb25maWd1cmF0aW9uW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAgICAgY29u
c3QgZmV0Y2hpbmdQcm9taXNlcyA9IFtdOworICAgICAgICBsZXQgaGFzRmV0Y2hpbmdGYWlsdXJl
ID0gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgcmVwb3NpdG9yeSBvZiBjb21taXRTZXQucmVw
b3NpdG9yaWVzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uID0gY29tbWl0U2V0LnJl
dmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGZldGNoaW5nUHJv
bWlzZXMucHVzaChDb21taXRMb2cuZmV0Y2hGb3JTaW5nbGVSZXZpc2lvbihyZXBvc2l0b3J5LCBy
ZXZpc2lvbikudGhlbigKKyAgICAgICAgICAgICAgICAoY29tbWl0cykgPT4geworICAgICAgICAg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXZpc2lvbiAhPSBzcGVjaWZpZWRSZXZpc2lvbnMuZ2V0KHJlcG9zaXRv
cnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LmRlbGV0ZShyZXBvc2l0b3J5KTsKKyAgICAg
ICAgICAgICAgICAgICAgZmV0Y2hlZENvbW1pdHMuc2V0KHJlcG9zaXRvcnksIGNvbW1pdHNbMF0p
OworICAgICAgICAgICAgICAgIH0sICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJl
dmlzaW9uICE9IHNwZWNpZmllZFJldmlzaW9ucy5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGludmFsaWRSZXZpc2lv
bkZvclJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmV0Y2hlZENvbW1pdHMuZGVsZXRlKHJlcG9zaXRvcnkpOworICAgICAgICAgICAgICAg
IH0pKTsKKyAgICAgICAgfQorICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmZXRjaGluZ1Byb21p
c2VzKTsKKyAgICAgICAgcmV0dXJuIGhhc0ZldGNoaW5nRmFpbHVyZSA/IHByZXZpb3VzQ29tbWl0
U2V0IDogY29tbWl0U2V0OwogICAgIH0KIAogICAgIF9jb21wdXRlQ29tbWl0U2V0KGNvbmZpZ3Vy
YXRpb25OYW1lKQpAQCAtMzMxLDggKzM3NSwxMSBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tD
b25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY29uc3QgY29tbWl0
U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBv
ZiByZXBvc2l0b3J5R3JvdXAucmVwb3NpdG9yaWVzKCkpIHsKICAgICAgICAgICAgIGxldCByZXZp
c2lvbiA9IHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJl
cG9zaXRvcnkpOwotICAgICAgICAgICAgaWYgKCFyZXZpc2lvbikKLSAgICAgICAgICAgICAgICBy
ZXZpc2lvbiA9IHRoaXMuX2ZldGNoZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLmdldChy
ZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGlmICghcmV2aXNpb24pIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBjb21taXQgPSB0aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0aW9uTmFtZV0u
Z2V0KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgICAgIGlmIChjb21taXQpCisgICAgICAgICAg
ICAgICAgICAgIHJldmlzaW9uID0gY29tbWl0LnJldmlzaW9uKCk7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoIXJldmlzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwog
ICAgICAgICAgICAgbGV0IHBhdGNoID0gbnVsbDsKQEAgLTQxNCw3ICs0NjEsNiBAQCBjbGFzcyBD
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAg
ICBfYnVpbGRSZXZpc2lvblRhYmxlKGNvbmZpZ3VyYXRpb25OYW1lLCByZXBvc2l0b3J5R3JvdXBz
LCBjdXJyZW50R3JvdXAsIHBsYXRmb3JtLCByZXF1aXJlZFJlcG9zaXRvcmllcywgb3B0aW9uYWxS
ZXBvc2l0b3J5TGlzdCwgYWx3YXlzQWNjZXB0c0N1c3RvbVJvb3RzKQogICAgIHsKICAgICAgICAg
Y29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKLSAgICAgICAgY29u
c3QgbGluayA9IENvbXBvbmVudEJhc2UuY3JlYXRlTGluazsKIAogICAgICAgICBjb25zdCBjdXN0
b21Sb290c1RCb2R5ID0gZWxlbWVudCgndGJvZHknLCBbCiAgICAgICAgICAgICBlbGVtZW50KCd0
cicsIFsKQEAgLTQ1Myw2ICs0OTksMjMgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmln
dXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICApXTsKICAgICB9CiAK
KyAgICBfYnVpbGRUZXN0YWJpbGl0eVRhYmxlKGNvbW1pdFNldCwgY29uZmlndXJhdGlvbk5hbWUs
IGludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnkpCisgICAgeworICAgICAgICBjb25zdCBlbGVt
ZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBjb25zdCByb3dzID0g
W107CisgICAgICAgIGZvciAoY29uc3QgcmVwb3NpdG9yeSBvZiBjb21taXRTZXQgPyBjb21taXRT
ZXQucmVwb3NpdG9yaWVzKCkgOiBbXSkgeworICAgICAgICAgICAgY29uc3QgY29tbWl0ID0gdGhp
cy5fZmV0Y2hlZENvbW1pdHNbY29uZmlndXJhdGlvbk5hbWVdLmdldChyZXBvc2l0b3J5KTsKKyAg
ICAgICAgICAgIGlmIChjb21taXQgJiYgY29tbWl0LnRlc3RhYmlsaXR5KCkgJiYgIWludmFsaWRS
ZXZpc2lvbkZvclJlcG9zaXRvcnkuaGFzKHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAgIHJv
d3MucHVzaChlbGVtZW50KCd0cicsIGVsZW1lbnQoJ3RkJywgYCR7Y29tbWl0LnJlcG9zaXRvcnko
KS5uYW1lKCl9IC0gJHtjb21taXQubGFiZWwoKX06ICR7Y29tbWl0LnRlc3RhYmlsaXR5KCl9YCkp
KTsKKyAgICAgICAgICAgIGlmIChpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LmhhcyhyZXBv
c2l0b3J5KSkKKyAgICAgICAgICAgICAgICByb3dzLnB1c2goZWxlbWVudCgndHInLCBlbGVtZW50
KCd0ZCcsIGAke3JlcG9zaXRvcnkubmFtZSgpfSAtICR7aW52YWxpZFJldmlzaW9uRm9yUmVwb3Np
dG9yeS5nZXQocmVwb3NpdG9yeSl9OiBJbnZhbGlkIHJldmlzaW9uYCkpKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIXJvd3MubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAg
ICAgIHJldHVybiBlbGVtZW50KCd0Ym9keScsIHtjbGFzczogJ3Rlc3RhYmlsaXR5LXRhYmxlJ30s
IHJvd3MpOworICAgIH0KKwogICAgIF9idWlsZFJlcG9zaXRvcnlHcm91cExpc3QocmVwb3NpdG9y
eUdyb3VwcywgY3VycmVudEdyb3VwLCBjb25maWd1cmF0aW9uTmFtZSkKICAgICB7CiAgICAgICAg
IGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CkBAIC00ODMsMTAg
KzU0NiwxOCBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBD
b21wb25lbnRCYXNlIHsKICAgICB7CiAgICAgICAgIGNvbnN0IHJldmlzaW9uID0gdGhpcy5fc3Bl
Y2lmaWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5nZXQocmVwb3NpdG9yeSkgfHwgJyc7
CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7Cisg
ICAgICAgIGxldCBzY2hlZHVsZWRVcGRhdGUgPSBudWxsOwogICAgICAgICBjb25zdCBpbnB1dCA9
IGVsZW1lbnQoJ2lucHV0Jywge3ZhbHVlOiByZXZpc2lvbiwgb25pbnB1dDogKCkgPT4gewogICAg
ICAgICAgICAgdW5tb2RpZmllZElucHV0ID0gbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX3NwZWNp
ZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGlucHV0LnZh
bHVlKTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOworICAgICAgICAg
ICAgY29uc3QgcmV2aXNpb25Ub0ZldGNoID0gaW5wdXQudmFsdWU7CisgICAgICAgICAgICB0aGlz
Ll9zcGVjaWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLnNldChyZXBvc2l0b3J5LCBy
ZXZpc2lvblRvRmV0Y2gpOworICAgICAgICAgICAgaWYgKHNjaGVkdWxlZFVwZGF0ZSkKKyAgICAg
ICAgICAgICAgICBjbGVhclRpbWVvdXQoc2NoZWR1bGVkVXBkYXRlKTsKKyAgICAgICAgICAgIHNj
aGVkdWxlZFVwZGF0ZSA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGlmIChy
ZXZpc2lvblRvRmV0Y2ggPT0gaW5wdXQudmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUNvbW1pdFNldE1hcCgpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlZFVwZGF0ZSA9
IG51bGw7CisgICAgICAgICAgICB9LCAzMDApOwogICAgICAgICB9fSk7CiAgICAgICAgIGxldCB1
bm1vZGlmaWVkSW5wdXQgPSBpbnB1dDsKIApAQCAtNDk0LDcgKzU2NSw3IEBAIGNsYXNzIEN1c3Rv
bUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAg
ICAgICAgQ29tbWl0TG9nLmZldGNoTGF0ZXN0Q29tbWl0Rm9yUGxhdGZvcm0ocmVwb3NpdG9yeSwg
cGxhdGZvcm0pLnRoZW4oKGNvbW1pdCkgPT4gewogICAgICAgICAgICAgICAgIGlmIChjb21taXQg
JiYgdW5tb2RpZmllZElucHV0KSB7CiAgICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWRJbnB1
dC52YWx1ZSA9IGNvbW1pdC5yZXZpc2lvbigpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9m
ZXRjaGVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgY29tbWl0
LnJldmlzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaGVkQ29tbWl0c1tj
b25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0pOwpAQCAtNTIxLDYgKzU5Miw3IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFz
a0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPHNlY3Rp
b24gaWQ9ImJhc2VsaW5lLWNvbmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgogICAgICAg
ICAgICAgICAgIDxoMj4zLiBDb25maWd1cmUgQmFzZWxpbmU8L2gyPgogICAgICAgICAgICAgICAg
IDx0YWJsZSBpZD0iYmFzZWxpbmUtcmV2aXNpb24tdGFibGUiIGNsYXNzPSJyZXZpc2lvbi10YWJs
ZSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9ImJhc2VsaW5lLXRlc3RhYmls
aXR5Ij48L3RhYmxlPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgPHNlY3Rp
b24gaWQ9InNwZWNpZnktY29tcGFyaXNvbi1wYW5lIiBjbGFzcz0icGFuZSI+CiAgICAgICAgICAg
ICAgICAgPGJ1dHRvbiBpZD0ic3BlY2lmeS1jb21wYXJpc29uLWJ1dHRvbiI+Q29uZmlndXJlIHRv
IENvbXBhcmU8L2J1dHRvbj4KQEAgLTUyOCw2ICs2MDAsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIDxz
ZWN0aW9uIGlkPSJjb21wYXJpc29uLWNvbmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgog
ICAgICAgICAgICAgICAgIDxoMj40LiBDb25maWd1cmUgQ29tcGFyaXNvbjwvaDI+CiAgICAgICAg
ICAgICAgICAgPHRhYmxlIGlkPSJjb21wYXJpc29uLXJldmlzaW9uLXRhYmxlIiBjbGFzcz0icmV2
aXNpb24tdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJjb21wYXJp
c29uLXRlc3RhYmlsaXR5Ij48L3RhYmxlPgogICAgICAgICAgICAgPC9zZWN0aW9uPmA7CiAgICAg
fQogCkBAIC02NzQsNiArNzQ3LDE2IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3Vy
YXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTog
MS4ycmVtOwogICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAudGVzdGFiaWxpdHktdGFibGUsCisgICAgICAgICAgICAudGVz
dGFiaWxpdHktdGFibGUgdHIsCisgICAgICAgICAgICAudGVzdGFiaWxpdHktdGFibGUgdGQgewor
ICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKKyAgICAgICAgICAgICAgICBib3JkZXItdG9w
OiBzb2xpZCAxcHggI2RkZDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMjFyZW07CisgICAgICAg
ICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICAgICAgICAgICAgICBjb2xvcjogI2MzMzsK
KyAgICAgICAgICAgIH0KIGA7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZv
cm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3Vz
dG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcwppbmRleCBhMWNkMmRjM2UzNzk3Y2ZkYTlmZmI2
MDIwYjA4YTAyZWFiNjJlMGQyLi5lNzlkOTczMjMzNjQ1OTUxOGY0Zjg5NGFiMjVjOWJkNzNhYzQw
ZWVhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAt
Zm9ybS5qcwpAQCAtMTM1LDcgKzEzNSwzMCBAQCBjbGFzcyBDdXN0b21pemFibGVUZXN0R3JvdXBG
b3JtIGV4dGVuZHMgVGVzdEdyb3VwRm9ybSB7CiAgICAgICAgICAgICBlbGVtZW50KCd0aGVhZCcs
CiAgICAgICAgICAgICAgICAgZWxlbWVudCgndHInLAogICAgICAgICAgICAgICAgICAgICBbZWxl
bWVudCgndGQnLCB7Y29sc3BhbjogMn0sICdSZXBvc2l0b3J5JyksIGNvbW1pdFNldExhYmVscy5t
YXAoKGxhYmVsKSA9PiBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiBjb21taXRTZXRMYWJlbHMubGVu
Z3RoICsgMX0sIGxhYmVsKSksIGVsZW1lbnQoJ3RkJyldKSksCi0gICAgICAgICAgICB0aGlzLl9j
b25zdHJ1Y3RUYWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0LCBjb21taXRTZXRNYXAsIG93bmVk
UmVwb3NpdG9yaWVzQnlSZXBvc2l0b3J5LCB0aGlzLl9oYXNJbmNvbXBsZXRlT3duZWRSZXBvc2l0
b3J5LCB1bmN1c3RvbWl6ZWRDb21taXRTZXRNYXApXSk7CisgICAgICAgICAgICB0aGlzLl9jb25z
dHJ1Y3RUYWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0LCBjb21taXRTZXRNYXAsIG93bmVkUmVw
b3NpdG9yaWVzQnlSZXBvc2l0b3J5LCB0aGlzLl9oYXNJbmNvbXBsZXRlT3duZWRSZXBvc2l0b3J5
LCB1bmN1c3RvbWl6ZWRDb21taXRTZXRNYXApLAorICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0
VGVzdGFiaWxpdHlSb3dzKGNvbW1pdFNldE1hcCldKTsKKyAgICB9CisKKyAgICBfY29uc3RydWN0
VGVzdGFiaWxpdHlSb3dzKGNvbW1pdFNldE1hcCkKKyAgICB7CisgICAgICAgIGNvbnN0IGVsZW1l
bnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisKKyAgICAgICAgbGV0IGhhc0NvbW1p
dFdpdGhUZXN0YWJpbGl0eSA9IGZhbHNlOworICAgICAgICBjb25zdCBjb21taXRTZXRzID0gQXJy
YXkuZnJvbShjb21taXRTZXRNYXAudmFsdWVzKCkpOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1p
dFNldCBvZiBjb21taXRTZXRzKQorICAgICAgICAgICAgaGFzQ29tbWl0V2l0aFRlc3RhYmlsaXR5
IHw9ICEhY29tbWl0U2V0LmNvbW1pdHNXaXRoVGVzdGFiaWxpdHkoKTsKKyAgICAgICAgaWYgKCFo
YXNDb21taXRXaXRoVGVzdGFiaWxpdHkpCisgICAgICAgICAgICByZXR1cm4gW107CisKKworICAg
ICAgICBjb25zdCB0ZXN0YWJpbGl0eVJvd3MgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBjb21t
aXRTZXQgb2YgY29tbWl0U2V0TWFwLnZhbHVlcygpKSB7CisgICAgICAgICAgICBjb25zdCByb3dz
ID0gY29tbWl0U2V0LmNvbW1pdHNXaXRoVGVzdGFiaWxpdHkoKS5tYXAoKGNvbW1pdCkgPT4KKyAg
ICAgICAgICAgICAgICBlbGVtZW50KCd0cicsIHtjbGFzczogJ3Rlc3RhYmlsaXR5J30sIGAke2Nv
bW1pdC5yZXBvc2l0b3J5KCkubmFtZSgpfSAtICR7Y29tbWl0LmxhYmVsKCl9OiAke2NvbW1pdC50
ZXN0YWJpbGl0eSgpfWApKTsKKyAgICAgICAgICAgIHRlc3RhYmlsaXR5Um93cy5wdXNoKGVsZW1l
bnQoJ3RkJywge2NvbHNwYW46IGNvbW1pdFNldE1hcC5zaXplICsgMX0sIHJvd3MpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBlbGVtZW50KCd0Ym9keScsIGVsZW1lbnQoJ3RyJywgW2Vs
ZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9KSwgdGVzdGFiaWxpdHlSb3dzLCBlbGVtZW50KCd0ZCcp
XSkpOwogICAgIH0KIAogICAgIF9jb25zdHJ1Y3RUYWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0
LCBjb21taXRTZXRNYXAsIG93bmVkUmVwb3NpdG9yaWVzQnlSZXBvc2l0b3J5LCBoYXNJbmNvbXBs
ZXRlT3duZWRSZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21taXRTZXRNYXApCkBAIC0yNTUsOCAr
Mjc4LDggQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91
cEZvcm0gewogICAgICAgICAgICAgb25jaGFuZ2U6ICgpID0+IHsKICAgICAgICAgICAgICAgICBp
ZiAob3duZXJSZXBvc2l0b3J5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICBjb21taXRTZXRNYXAuZ2V0KGNvbHVtbkxhYmVsKS51cGRhdGVSZXZpc2lvbkZv
ck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCByZXZpc2lvbkVkaXRvci52YWx1ZSkuY2F0Y2go
CisgICAgICAgICAgICAgICAgY29tbWl0U2V0TWFwLmdldChjb2x1bW5MYWJlbCkudXBkYXRlUmV2
aXNpb25Gb3JPd25lclJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb25FZGl0b3IudmFsdWUp
LnRoZW4oCisgICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCks
CiAgICAgICAgICAgICAgICAgICAgICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGFs
ZXJ0KGAiJHtyZXZpc2lvbkVkaXRvci52YWx1ZX0iIGRvZXMgbm90IGV4aXN0IGluICIke3JlcG9z
aXRvcnkubmFtZSgpfSIuYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbkVkaXRv
ci52YWx1ZSA9IHJldmlzaW9uOwpAQCAtMjc4LDYgKzMwMSw3IEBAIGNsYXNzIEN1c3RvbWl6YWJs
ZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgICAgICAg
ICAgcmV2aXNpb25FZGl0b3IudmFsdWUgPSB1bmN1c3RvbWl6ZWRDb21taXQgPyB1bmN1c3RvbWl6
ZWRDb21taXQucmV2aXNpb24oKSA6ICcnOwogICAgICAgICAgICAgICAgICAgICBpZiAodW5jdXN0
b21pemVkQ29tbWl0ICYmIHVuY3VzdG9taXplZENvbW1pdC5vd25lckNvbW1pdCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fb3duZXJSZXZpc2lvbk1hcC5nZXQoY29sdW1uTGFiZWwp
LnNldChyZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21taXQub3duZXJDb21taXQoKS5yZXZpc2lv
bigpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAg
ICAgICAgICAgICB9fSk7CiAgICAgICAgICAgICBub2Rlcy5wdXNoKGVsZW1lbnQoJ3RkJywgZWxl
bWVudCgnbGFiZWwnLCBbcmFkaW9CdXR0b24sIGxhYmVsVG9DaG9vc2VdKSkpOwogICAgICAgICB9
CkBAIC0zMzYsNiArMzYwLDExIEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0
ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgICNub3RpZnktb24tY29tcGxldGlvbi1j
aGVja2JveCB7CiAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNHJlbTsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI2N1c3RvbS10YWJsZSB0ci50ZXN0YWJpbGl0eSB7CisgICAg
ICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICAgICAgICAgICAgICBjb2xvcjogI2Mz
MzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcwpp
bmRleCA0NDViMjcwMTdmMjQ4ZDllNWFjNGMxM2I4NzU1YTBhYWQ1NzIyY2E0Li5iYjViN2YxOThj
ZWYzOWExNGQzM2ZmYTE4MDNkNjkyZjY2N2FhOGZhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKQEAgLTM4OSw3
ICszODksNyBAQCBjbGFzcyBJbnRlcm1lZGlhdGVDb21taXRTZXQgewogICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoZmV0Y2hpbmdQcm9taXNlcyk7CiAgICAgfQogCi0gICAgY29tbWl0c1dpdGhU
ZXN0YWJpbGl0eVdhcm5pbmdzKCkgeyByZXR1cm4gdGhpcy5jb21taXRzKCkuZmlsdGVyKChjb21t
aXQpID0+ICEhY29tbWl0LnRlc3RhYmlsaXR5V2FybmluZygpKTsgfQorICAgIGNvbW1pdHNXaXRo
VGVzdGFiaWxpdHkoKSB7IHJldHVybiB0aGlzLmNvbW1pdHMoKS5maWx0ZXIoKGNvbW1pdCkgPT4g
ISFjb21taXQudGVzdGFiaWxpdHkoKSk7IH0KICAgICBjb21taXRzKCkgeyByZXR1cm4gIEFycmF5
LmZyb20odGhpcy5fY29tbWl0QnlSZXBvc2l0b3J5LnZhbHVlcygpKTsgfQogCiAgICAgX2ZldGNo
Q29tbWl0TG9nQW5kT3duZWRDb21taXRzKHJlcG9zaXRvcnksIHJldmlzaW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357926</attachid>
            <date>2018-12-20 21:25:52 -0800</date>
            <delta_ts>2018-12-21 18:13:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192972-20181220212551.patch</filename>
            <type>text/plain</type>
            <size>21088</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDg1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwOTM2OTA5NzYxYTI0ZjE3ZGNmM2FhOWI3YTQyZWUxNGQyNGJlNTA1Li45N2YzY2VlYTVk
ZWIxODNhODc5OGRkM2JhOGU0MzNmNTYwYjkyNDZhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxOC0xMi0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVUkgaW4gYW5hbHlzaXMgdGFzayBwYWdlIHRvIHNo
b3cgY29tbWl0IHRlc3RhYmlsaXR5IGluZm9tYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVUkgaW4gY3VzdG9tIGFuYWx5c2lzIHRhc2sg
Y29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphYmxlIHRlc3QgZ3JvdXAgZm9ybSB0bworICAgICAg
ICBzaG93IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAgICBGaXggYSBidWcgaW4gJ0N1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fdXBkYXRlQ29tbWl0U2V0TWFwJyB0aGF0ICdj
dXJyZW50Q29tcGFyaXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorCisgICAgICAgICogYnJvd3Nl
ci10ZXN0cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMuanM6IEFkZGVk
IGFuIHVuaXQgdGVzdCBmb3IgdGhlIGJ1ZyBpbgorICAgICAgICAnQ3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yLl91cGRhdGVDb21taXRTZXRNYXAnLgorICAgICAgICAqIHB1YmxpYy92My9j
b21wb25lbnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qczogQWRkZWQgVUkg
dG8gc2hvdyB0ZXN0YWJpbGl0eSBpbmZvcm1hdGlvbi4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvcik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3IucHJvdG90eXBlLl91cGRhdGVDb21taXRTZXRNYXApOgorICAgICAgICBGaXhlZCBhIGJ1
ZyB0aGF0ICdjdXJyZW50Q29tcGFyaXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorICAgICAgICBB
ZGRlZCBsb2dpYyB0byBmZXRjaCBjb21taXRzIGluc2lkZSBhIGNvbW1pdCBzZXQuCisgICAgICAg
IChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLmFzeW5jLl9mZXRjaENv
bW1pdHNGb3JDb21taXRTZXQpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yLnByb3RvdHlwZS5fY29tcHV0ZUNvbW1pdFNldCk6CisgICAgICAgIChDdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZFJldmlzaW9uVGFibGUpOgorICAgICAg
ICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRUZXN0YWJp
bGl0eVRhYmxlKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90
b3R5cGUuX2J1aWxkUmV2aXNpb25JbnB1dCk6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tD
b25maWd1cmF0b3IuY3NzVGVtcGxhdGUpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRSZXBvc2l0b3J5R3JvdXBMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1m
b3JtLmpzOiBBZGRlZCBVSSB0byBzaG93IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAg
ICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX3JlbmRlckN1c3RvbVJldmlz
aW9uVGFibGUpOgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUu
X2NvbnN0cnVjdFRlc3RhYmlsaXR5Um93cy4pOgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdy
b3VwRm9ybS5wcm90b3R5cGUuX2NvbnN0cnVjdFRlc3RhYmlsaXR5Um93cyk6CisgICAgICAgIChD
dXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5fY29uc3RydWN0UmV2aXNpb25SYWRp
b0J1dHRvbnMpOgorICAgICAgICBDaGFuZ2luZyBlaXRoZXIgcmV2aXNpb24gZWRpdG9yIG9yIHJh
ZGlvIGJ1dHRvbiBzaG91bGQgdHJpZ2dlciBhIHJlLXJlbmRlciBhcyB0ZXN0YWJpbGl0eQorICAg
ICAgICBpbmZvcm1hdGlvbiBmb3IgdXBkYXRlZCByZXZpc2lvbiBtYXkgY2hhbmdlLgorICAgICAg
ICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5jc3NUZW1wbGF0ZSk6CisgICAgICAgICogcHVi
bGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzOgorICAgICAgICAoSW50ZXJtZWRpYXRlQ29tbWl0
U2V0LnByb3RvdHlwZS5jb21taXRzV2l0aFRlc3RhYmlsaXR5KTogUmVuYW1lZCBmcm9tICdjb21t
aXRzV2l0aFRlc3RhYmlsaXR5V2FybmluZ3MnLgorICAgICAgICAoSW50ZXJtZWRpYXRlQ29tbWl0
U2V0LnByb3RvdHlwZS5jb21taXRzV2l0aFRlc3RhYmlsaXR5V2FybmluZ3MpOiBEZWxldGVkLgor
CiAyMDE4LTEyLTE0ICBEZXdlaSBaaHUgIDxkZXdlaV96aHVAYXBwbGUuY29tPgogCiAgICAgICAg
IEV4dGVuZCBjb21taXRzIHRhYmxlIHRvIGNvbnRhaW4gdGVzdGFiaWxpdHkgaW5mb3JtYXRpb24u
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jdXN0
b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3It
dGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM4NTQ1YTZlZmMwMjYxNzgzOTQzMjA3OTdmNWIxY2NlZGFl
OTJlOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2Vy
LXRlc3RzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcwpAQCAtMCww
ICsxLDMyIEBACisKK2Rlc2NyaWJlKCdDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3InLCAo
KSA9PiB7CisgICAgY29uc3Qgc2NyaXB0cyA9IFsnaW5zdHJ1bWVudGF0aW9uLmpzJywgJy4uL3No
YXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMnLCAnY29tcG9uZW50cy9iYXNlLmpzJywgJ21v
ZGVscy9kYXRhLW1vZGVsLmpzJywgJ21vZGVscy9jb21taXQtbG9nLmpzJywKKyAgICAgICAgJ21v
ZGVscy9jb21taXQtc2V0LmpzJywgJ21vZGVscy9yZXBvc2l0b3J5LmpzJywgJ21vZGVscy9tZXRy
aWMuanMnLCAnbW9kZWxzL3RyaWdnZXJhYmxlLmpzJywgJ21vZGVscy90ZXN0LmpzJywgJ2NvbXBv
bmVudHMvdGVzdC1ncm91cC1mb3JtLmpzJywgJ2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRh
c2stY29uZmlndXJhdG9yLmpzJywKKyAgICAgICAgJ2NvbXBvbmVudHMvaW5zdGFudC1maWxlLXVw
bG9hZGVyLmpzJywgJ2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24uanMnXTsKKworICAgIGFzeW5j
IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcldpdGhDb250ZXh0
KGNvbnRleHQpIHsKKyAgICAgICAgYXdhaXQgY29udGV4dC5pbXBvcnRTY3JpcHRzKHNjcmlwdHMs
ICdDb21wb25lbnRCYXNlJywgJ0RhdGFNb2RlbE9iamVjdCcsICdSZXBvc2l0b3J5JywgJ0NvbW1p
dExvZycsICdUcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCcsCisgICAgICAgICAgICAnQ3VzdG9t
Q29tbWl0U2V0JywgJ0N1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcicsICdNb2NrUmVtb3Rl
QVBJJywgJ0xhemlseUV2YWx1YXRlZEZ1bmN0aW9uJyk7CisgICAgICAgIGNvbnN0IGN1c3RvbUFu
YWx5c2lzVGFza0NvbmZpZ3VyYXRvciA9IG5ldyBjb250ZXh0LnN5bWJvbHMuQ3VzdG9tQW5hbHlz
aXNUYXNrQ29uZmlndXJhdG9yOworICAgICAgICBjb250ZXh0LmRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmVsZW1lbnQoKSk7CisgICAgICAg
IHJldHVybiBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3I7CisgICAgfQorCisgICAgaXQo
J1Nob3VsZCBub3QgdXBkYXRlIGNvbW1pdFNldE1hcCBpZiBiYXNlbGluZSBpcyBzZXQgYW5kIHVu
bW9kaWZpZWQgYnV0IGNvbXBhcmlzb24gaXMgbnVsbCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
Y29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgY29uc3QgY3Vz
dG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yID0gYXdhaXQgY3JlYXRlQ3VzdG9tQW5hbHlzaXNU
YXNrQ29uZmlndXJhdG9yV2l0aENvbnRleHQoY29udGV4dCk7CisKKyAgICAgICAgYXdhaXQgd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgY29uc3QgcmVwb3NpdG9y
eSA9IGNvbnRleHQuc3ltYm9scy5SZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbigxLCB7bmFtZTog
J1dlYktpdCd9KTsKKyAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gbmV3IGNvbnRleHQuc3ltYm9s
cy5DdXN0b21Db21taXRTZXQ7CisgICAgICAgIGNvbW1pdFNldC5zZXRSZXZpc2lvbkZvclJlcG9z
aXRvcnkocmVwb3NpdG9yeSwgJzIxMDk0OCcsIG51bGwpOworICAgICAgICBjdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IuX2NvbW1pdFNldE1hcCA9IHsnQmFzZWxpbmUnOiBjb21taXRTZXQs
ICdDb21wYXJpc29uJzogbnVsbH07CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3Vy
YXRvci5fcmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uWydCYXNlbGluZSddID0gbmV3IGNv
bnRleHQuc3ltYm9scy5UcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCgxLCB7cmVwb3NpdG9yaWVz
OiBbe3JlcG9zaXRvcnl9XX0pOworICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IuX3NwZWNpZmllZFJldmlzaW9uc1snQmFzZWxpbmUnXS5zZXQocmVwb3NpdG9yeSwgJzIxMDk0
OCcpOworCisgICAgICAgIGNvbnN0IG9yaWdpbmFsQ29tbWl0U2V0ID0gY3VzdG9tQW5hbHlzaXNU
YXNrQ29uZmlndXJhdG9yLl9jb21taXRTZXRNYXA7CisgICAgICAgIGF3YWl0IGN1c3RvbUFuYWx5
c2lzVGFza0NvbmZpZ3VyYXRvci5fdXBkYXRlQ29tbWl0U2V0TWFwKCk7CisKKyAgICAgICAgZXhw
ZWN0KGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fY29tbWl0U2V0TWFwKS50by5iZShv
cmlnaW5hbENvbW1pdFNldCk7CisgICAgfSk7Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNv
bmZpZ3VyYXRvci5qcwppbmRleCA0M2YzNWI3Y2E1MjYxNDg1YzJmOGZlNGMyM2Y0ZjQ3YWEzMjQx
ZWY0Li44YTI5YzZjMWJhNTlkNDIyYjRlOGZmM2FjZTZkNWM4NjEyNzZkMWUwIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFu
YWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3Iu
anMKQEAgLTcsMTQgKzcsMTQgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVzdHMgPSBb
XTsKICAgICAgICAgdGhpcy5fdHJpZ2dlcmFibGVQbGF0Zm9ybXMgPSBbXTsKICAgICAgICAgdGhp
cy5fc2VsZWN0ZWRQbGF0Zm9ybSA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25O
YW1lcyA9IFsnQmFzZWxpbmUnLCAnQ29tcGFyaXNvbiddOwogICAgICAgICB0aGlzLl9zaG93Q29t
cGFyaXNvbiA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSB7fTsKICAgICAg
ICAgdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdDb21w
YXJpc29uJzogbmV3IE1hcH07CiAgICAgICAgIHRoaXMuX3BhdGNoVXBsb2FkZXJzID0geydCYXNl
bGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3IE1hcH07CiAgICAgICAgIHRoaXMuX2N1
c3RvbVJvb3RVcGxvYWRlcnMgPSB7J0Jhc2VsaW5lJzogbnVsbCwgJ0NvbXBhcmlzb24nOiBudWxs
fTsKLSAgICAgICAgdGhpcy5fZmV0Y2hlZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFw
LCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OworICAgICAgICB0aGlzLl9mZXRjaGVkQ29tbWl0cyA9
IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OwogICAgICAgICB0
aGlzLl9yZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbnVsbCwg
J0NvbXBhcmlzb24nOiBudWxsfTsKKyAgICAgICAgdGhpcy5faW52YWxpZFJldmlzaW9uRm9yUmVw
b3NpdG9yeUJ5Q29uZmlndXJhdGlvbiA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNv
bic6IG5ldyBNYXB9OwogICAgICAgICB0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZUxhemlseSA9IG5l
dyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZS5iaW5kKHRo
aXMpKTsKIAogICAgICAgICB0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzTGF6aWx5ID0gbmV3
IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclRyaWdnZXJhYmxlVGVzdHMuYmlu
ZCh0aGlzKSk7CkBAIC0xOTAsNiArMTkwLDExIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0Nv
bmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBjb25zdCBbdHJpZ2dl
cmFibGUsIGVycm9yXSA9IHRoaXMuX3VwZGF0ZVRyaWdnZXJhYmxlTGF6aWx5LmV2YWx1YXRlKHRo
aXMuX3NlbGVjdGVkVGVzdHMsIHRoaXMuX3NlbGVjdGVkUGxhdGZvcm0pOwogCiAgICAgICAgIHRo
aXMuX3JlbmRlclJlcG9zaXRvcnlQYW5lc0xhemlseS5ldmFsdWF0ZSh0cmlnZ2VyYWJsZSwgZXJy
b3IsIHRoaXMuX3NlbGVjdGVkUGxhdGZvcm0sIHRoaXMuX3JlcG9zaXRvcnlHcm91cEJ5Q29uZmln
dXJhdGlvbiwgdGhpcy5fc2hvd0NvbXBhcmlzb24pOworCisgICAgICAgIHRoaXMucmVuZGVyUmVw
bGFjZSh0aGlzLmNvbnRlbnQoJ2Jhc2VsaW5lLXRlc3RhYmlsaXR5JyksCisgICAgICAgICAgICB0
aGlzLl9idWlsZFRlc3RhYmlsaXR5VGFibGUodGhpcy5fY29tbWl0U2V0TWFwWydCYXNlbGluZSdd
LCAnQmFzZWxpbmUnLCB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5QnlDb25maWd1
cmF0aW9uWydCYXNlbGluZSddKSk7CisgICAgICAgIGlmICh0aGlzLl9zaG93Q29tcGFyaXNvbikK
KyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoJ2NvbXBhcmlzb24t
dGVzdGFiaWxpdHknKSwgdGhpcy5fYnVpbGRUZXN0YWJpbGl0eVRhYmxlKHRoaXMuX2NvbW1pdFNl
dE1hcFsnQ29tcGFyaXNvbiddLCAnQ29tcGFyaXNvbicsIHRoaXMuX2ludmFsaWRSZXZpc2lvbkZv
clJlcG9zaXRvcnlCeUNvbmZpZ3VyYXRpb25bJ0NvbXBhcmlzb24nXSkpOwogICAgIH0KIAogICAg
IF9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzKCkKQEAgLTMwNCwxOCArMzA5LDU3IEBAIGNsYXNzIEN1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAg
ICAgICAgICAgbmV3Q29tcGFyaXNvbiA9IG51bGw7CiAKICAgICAgICAgY29uc3QgY3VycmVudEJh
c2VsaW5lID0gdGhpcy5fY29tbWl0U2V0TWFwWydCYXNlbGluZSddOwotICAgICAgICBjb25zdCBj
dXJyZW50Q29tcGFyaXNvbiA9IHRoaXMuX2NvbW1pdFNldE1hcFsnQmFzZWxpbmUnXTsKLSAgICAg
ICAgaWYgKG5ld0Jhc2VsaW5lID09IGN1cnJlbnRCYXNlbGluZSAmJiBuZXdDb21wYXJpc29uID09
IGN1cnJlbnRDb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBCb3RoIG9mIHRoZW0g
YXJlIG51bGwuCisgICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJpc29uID0gdGhpcy5fY29tbWl0
U2V0TWFwWydDb21wYXJpc29uJ107CisgICAgICAgIGNvbnN0IGFyZUNvbW1pdFNldHNFcXVhbCA9
IChjb21taXRTZXRBLCBjb21taXRTZXRCKSA9PiBjb21taXRTZXRBID09IGNvbW1pdFNldEIgfHwg
KGNvbW1pdFNldEEgJiYgY29tbWl0U2V0QiAmJiBjb21taXRTZXRBLmVxdWFscyhjb21taXRTZXRC
KSk7CisgICAgICAgIGNvbnN0IHNhbWVCYXNlbGluZUNvbmZpZyA9IGFyZUNvbW1pdFNldHNFcXVh
bChjdXJyZW50QmFzZWxpbmUsIG5ld0Jhc2VsaW5lKTsKKyAgICAgICAgY29uc3Qgc2FtZUNvbXBh
cmlzaW9uQ29uZmlnID0gYXJlQ29tbWl0U2V0c0VxdWFsKGN1cnJlbnRDb21wYXJpc29uLCBuZXdD
b21wYXJpc29uKTsKIAotICAgICAgICBpZiAobmV3QmFzZWxpbmUgJiYgY3VycmVudEJhc2VsaW5l
ICYmIG5ld0Jhc2VsaW5lLmVxdWFscyhjdXJyZW50QmFzZWxpbmUpCi0gICAgICAgICAgICAmJiBu
ZXdDb21wYXJpc29uICYmIGN1cnJlbnRDb21wYXJpc29uICYmIG5ld0NvbXBhcmlzb24uZXF1YWxz
KGN1cnJlbnRDb21wYXJpc29uKSkKKyAgICAgICAgaWYgKHNhbWVCYXNlbGluZUNvbmZpZyAmJiBz
YW1lQ29tcGFyaXNpb25Db25maWcpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhp
cy5fY29tbWl0U2V0TWFwID0geydCYXNlbGluZSc6IG5ld0Jhc2VsaW5lLCAnQ29tcGFyaXNvbic6
IG5ld0NvbXBhcmlzb259OwogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2NvbW1pdFNl
dENoYW5nZScpOwotICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICBjb25z
dCBmZXRjaGluZ1Byb21pc2VzID0gW107CisgICAgICAgIGlmICghc2FtZUJhc2VsaW5lQ29uZmln
KQorICAgICAgICAgICAgZmV0Y2hpbmdQcm9taXNlcy5wdXNoKHRoaXMuX2ZldGNoQ29tbWl0c0Zv
ckNvbW1pdFNldCgnQmFzZWxpbmUnLCBuZXdCYXNlbGluZSwgY3VycmVudEJhc2VsaW5lKSk7CisK
KyAgICAgICAgaWYgKCFzYW1lQ29tcGFyaXNpb25Db25maWcpCisgICAgICAgICAgICBmZXRjaGlu
Z1Byb21pc2VzLnB1c2godGhpcy5fZmV0Y2hDb21taXRzRm9yQ29tbWl0U2V0KCdDb21wYXJpc29u
JywgbmV3Q29tcGFyaXNvbiwgY3VycmVudENvbXBhcmlzb24pKTsKKworICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoZmV0Y2hpbmdQcm9taXNlcykudGhlbigoKSA9PiB7CisgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoQWN0aW9uKCdjb21taXRTZXRDaGFuZ2UnKTsKKyAgICAgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFzeW5jIF9mZXRj
aENvbW1pdHNGb3JDb21taXRTZXQoY29uZmlndXJhdGlvbk5hbWUsIGNvbW1pdFNldCwgcHJldmlv
dXNDb21taXRTZXQpCisgICAgeworICAgICAgICBpZiAoIWNvbW1pdFNldCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBjb25zdCBzcGVjaWZpZWRSZXZpc2lvbnMgPSB0aGlzLl9zcGVj
aWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdOworICAgICAgICBjb25zdCBmZXRjaGVk
Q29tbWl0cyA9IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAg
ICAgY29uc3QgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSA9IHRoaXMuX2ludmFsaWRSZXZp
c2lvbkZvclJlcG9zaXRvcnlCeUNvbmZpZ3VyYXRpb25bY29uZmlndXJhdGlvbk5hbWVdOworICAg
ICAgICBjb25zdCBmZXRjaGluZ1Byb21pc2VzID0gW107CisgICAgICAgIGxldCBoYXNGZXRjaGlu
Z0ZhaWx1cmUgPSBmYWxzZTsKKyAgICAgICAgZm9yIChjb25zdCByZXBvc2l0b3J5IG9mIGNvbW1p
dFNldC5yZXBvc2l0b3JpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgcmV2aXNpb24gPSBjb21t
aXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgZmV0
Y2hpbmdQcm9taXNlcy5wdXNoKENvbW1pdExvZy5mZXRjaEZvclNpbmdsZVJldmlzaW9uKHJlcG9z
aXRvcnksIHJldmlzaW9uKS50aGVuKAorICAgICAgICAgICAgICAgIChjb21taXRzKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdHMubGVuZ3RoLCAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHJldmlzaW9uICE9IHNwZWNpZmllZFJldmlzaW9ucy5nZXQo
cmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgIGludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnkuZGVsZXRlKHJlcG9zaXRvcnkp
OworICAgICAgICAgICAgICAgICAgICBmZXRjaGVkQ29tbWl0cy5zZXQocmVwb3NpdG9yeSwgY29t
bWl0c1swXSk7CisgICAgICAgICAgICAgICAgfSwgKCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBpZiAocmV2aXNpb24gIT0gc3BlY2lmaWVkUmV2aXNpb25zLmdldChyZXBvc2l0b3J5KSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgaW52YWxp
ZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5zZXQocmVwb3NpdG9yeSwgcmV2aXNpb24pOworICAgICAg
ICAgICAgICAgICAgICBmZXRjaGVkQ29tbWl0cy5kZWxldGUocmVwb3NpdG9yeSk7CisgICAgICAg
ICAgICAgICAgfSkpOworICAgICAgICB9CisgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGZldGNo
aW5nUHJvbWlzZXMpOworICAgICAgICByZXR1cm4gaGFzRmV0Y2hpbmdGYWlsdXJlID8gcHJldmlv
dXNDb21taXRTZXQgOiBjb21taXRTZXQ7CiAgICAgfQogCiAgICAgX2NvbXB1dGVDb21taXRTZXQo
Y29uZmlndXJhdGlvbk5hbWUpCkBAIC0zMzEsOCArMzc1LDExIEBAIGNsYXNzIEN1c3RvbUFuYWx5
c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBjb25z
dCBjb21taXRTZXQgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0OwogICAgICAgICBmb3IgKGxldCByZXBv
c2l0b3J5IG9mIHJlcG9zaXRvcnlHcm91cC5yZXBvc2l0b3JpZXMoKSkgewogICAgICAgICAgICAg
bGV0IHJldmlzaW9uID0gdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1l
XS5nZXQocmVwb3NpdG9yeSk7Ci0gICAgICAgICAgICBpZiAoIXJldmlzaW9uKQotICAgICAgICAg
ICAgICAgIHJldmlzaW9uID0gdGhpcy5fZmV0Y2hlZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFt
ZV0uZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgaWYgKCFyZXZpc2lvbikgeworICAgICAg
ICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRp
b25OYW1lXS5nZXQocmVwb3NpdG9yeSk7CisgICAgICAgICAgICAgICAgaWYgKGNvbW1pdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBjb21taXQucmV2aXNpb24oKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICghcmV2aXNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAgICAgICAgICAgICBsZXQgcGF0Y2ggPSBudWxsOwpAQCAtNDE0LDcgKzQ2MSw2IEBA
IGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJh
c2UgewogICAgIF9idWlsZFJldmlzaW9uVGFibGUoY29uZmlndXJhdGlvbk5hbWUsIHJlcG9zaXRv
cnlHcm91cHMsIGN1cnJlbnRHcm91cCwgcGxhdGZvcm0sIHJlcXVpcmVkUmVwb3NpdG9yaWVzLCBv
cHRpb25hbFJlcG9zaXRvcnlMaXN0LCBhbHdheXNBY2NlcHRzQ3VzdG9tUm9vdHMpCiAgICAgewog
ICAgICAgICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwotICAg
ICAgICBjb25zdCBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCiAgICAgICAgIGNv
bnN0IGN1c3RvbVJvb3RzVEJvZHkgPSBlbGVtZW50KCd0Ym9keScsIFsKICAgICAgICAgICAgIGVs
ZW1lbnQoJ3RyJywgWwpAQCAtNDUzLDYgKzQ5OSwyMyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rh
c2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICldOwog
ICAgIH0KIAorICAgIF9idWlsZFRlc3RhYmlsaXR5VGFibGUoY29tbWl0U2V0LCBjb25maWd1cmF0
aW9uTmFtZSwgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSkKKyAgICB7CisgICAgICAgIGNv
bnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIGNvbnN0
IHJvd3MgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCByZXBvc2l0b3J5IG9mIGNvbW1pdFNldCA/
IGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSA6IFtdKSB7CisgICAgICAgICAgICBjb25zdCBjb21t
aXQgPSB0aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRv
cnkpOworICAgICAgICAgICAgaWYgKGNvbW1pdCAmJiBjb21taXQudGVzdGFiaWxpdHkoKSAmJiAh
aW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5oYXMocmVwb3NpdG9yeSkpCisgICAgICAgICAg
ICAgICAgcm93cy5wdXNoKGVsZW1lbnQoJ3RyJywgZWxlbWVudCgndGQnLCBgJHtjb21taXQucmVw
b3NpdG9yeSgpLm5hbWUoKX0gLSAke2NvbW1pdC5sYWJlbCgpfTogJHtjb21taXQudGVzdGFiaWxp
dHkoKX1gKSkpOworICAgICAgICAgICAgaWYgKGludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnku
aGFzKHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAgIHJvd3MucHVzaChlbGVtZW50KCd0cics
IGVsZW1lbnQoJ3RkJywgYCR7cmVwb3NpdG9yeS5uYW1lKCl9IC0gJHtpbnZhbGlkUmV2aXNpb25G
b3JSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KX06IEludmFsaWQgcmV2aXNpb25gKSkpOworICAg
ICAgICB9CisgICAgICAgIGlmICghcm93cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gW107
CisKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3Rib2R5Jywge2NsYXNzOiAndGVzdGFiaWxpdHkt
dGFibGUnfSwgcm93cyk7CisgICAgfQorCiAgICAgX2J1aWxkUmVwb3NpdG9yeUdyb3VwTGlzdChy
ZXBvc2l0b3J5R3JvdXBzLCBjdXJyZW50R3JvdXAsIGNvbmZpZ3VyYXRpb25OYW1lKQogICAgIHsK
ICAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKQEAg
LTQ4MywxMCArNTQ2LDE4IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBl
eHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgIHsKICAgICAgICAgY29uc3QgcmV2aXNpb24gPSB0
aGlzLl9zcGVjaWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLmdldChyZXBvc2l0b3J5
KSB8fCAnJzsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxl
bWVudDsKKyAgICAgICAgbGV0IHNjaGVkdWxlZFVwZGF0ZSA9IG51bGw7CiAgICAgICAgIGNvbnN0
IGlucHV0ID0gZWxlbWVudCgnaW5wdXQnLCB7dmFsdWU6IHJldmlzaW9uLCBvbmlucHV0OiAoKSA9
PiB7CiAgICAgICAgICAgICB1bm1vZGlmaWVkSW5wdXQgPSBudWxsOwotICAgICAgICAgICAgdGhp
cy5fc3BlY2lmaWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwg
aW5wdXQudmFsdWUpOwotICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29tbWl0U2V0TWFwKCk7Cisg
ICAgICAgICAgICBjb25zdCByZXZpc2lvblRvRmV0Y2ggPSBpbnB1dC52YWx1ZTsKKyAgICAgICAg
ICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9z
aXRvcnksIHJldmlzaW9uVG9GZXRjaCk7CisgICAgICAgICAgICBpZiAoc2NoZWR1bGVkVXBkYXRl
KQorICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChzY2hlZHVsZWRVcGRhdGUpOworICAgICAg
ICAgICAgc2NoZWR1bGVkVXBkYXRlID0gc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgaWYgKHJldmlzaW9uVG9GZXRjaCA9PSBpbnB1dC52YWx1ZSkKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlQ29tbWl0U2V0TWFwKCk7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVk
VXBkYXRlID0gbnVsbDsKKyAgICAgICAgICAgIH0sIDMwMCk7CiAgICAgICAgIH19KTsKICAgICAg
ICAgbGV0IHVubW9kaWZpZWRJbnB1dCA9IGlucHV0OwogCkBAIC00OTQsNyArNTY1LDcgQEAgY2xh
c3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7
CiAgICAgICAgICAgICBDb21taXRMb2cuZmV0Y2hMYXRlc3RDb21taXRGb3JQbGF0Zm9ybShyZXBv
c2l0b3J5LCBwbGF0Zm9ybSkudGhlbigoY29tbWl0KSA9PiB7CiAgICAgICAgICAgICAgICAgaWYg
KGNvbW1pdCAmJiB1bm1vZGlmaWVkSW5wdXQpIHsKICAgICAgICAgICAgICAgICAgICAgdW5tb2Rp
ZmllZElucHV0LnZhbHVlID0gY29tbWl0LnJldmlzaW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX2ZldGNoZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLnNldChyZXBvc2l0b3J5
LCBjb21taXQucmV2aXNpb24oKSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZldGNoZWRD
b21taXRzW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgY29tbWl0KTsKICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29tbWl0U2V0TWFwKCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CkBAIC01MjEsNiArNTkyLDcgQEAgY2xhc3MgQ3VzdG9tQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAg
ICA8c2VjdGlvbiBpZD0iYmFzZWxpbmUtY29uZmlndXJhdGlvbi1wYW5lIiBjbGFzcz0icGFuZSI+
CiAgICAgICAgICAgICAgICAgPGgyPjMuIENvbmZpZ3VyZSBCYXNlbGluZTwvaDI+CiAgICAgICAg
ICAgICAgICAgPHRhYmxlIGlkPSJiYXNlbGluZS1yZXZpc2lvbi10YWJsZSIgY2xhc3M9InJldmlz
aW9uLXRhYmxlIj48L3RhYmxlPgorICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0iYmFzZWxpbmUt
dGVzdGFiaWxpdHkiPjwvdGFibGU+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAg
ICA8c2VjdGlvbiBpZD0ic3BlY2lmeS1jb21wYXJpc29uLXBhbmUiIGNsYXNzPSJwYW5lIj4KICAg
ICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJzcGVjaWZ5LWNvbXBhcmlzb24tYnV0dG9uIj5Db25m
aWd1cmUgdG8gQ29tcGFyZTwvYnV0dG9uPgpAQCAtNTI4LDYgKzYwMCw3IEBAIGNsYXNzIEN1c3Rv
bUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAg
ICAgICAgPHNlY3Rpb24gaWQ9ImNvbXBhcmlzb24tY29uZmlndXJhdGlvbi1wYW5lIiBjbGFzcz0i
cGFuZSI+CiAgICAgICAgICAgICAgICAgPGgyPjQuIENvbmZpZ3VyZSBDb21wYXJpc29uPC9oMj4K
ICAgICAgICAgICAgICAgICA8dGFibGUgaWQ9ImNvbXBhcmlzb24tcmV2aXNpb24tdGFibGUiIGNs
YXNzPSJyZXZpc2lvbi10YWJsZSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9
ImNvbXBhcmlzb24tdGVzdGFiaWxpdHkiPjwvdGFibGU+CiAgICAgICAgICAgICA8L3NlY3Rpb24+
YDsKICAgICB9CiAKQEAgLTY3NCw2ICs3NDcsMTYgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICAgICAgZm9u
dC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC50ZXN0YWJpbGl0eS10YWJsZSwKKyAgICAgICAg
ICAgIC50ZXN0YWJpbGl0eS10YWJsZSB0ciwKKyAgICAgICAgICAgIC50ZXN0YWJpbGl0eS10YWJs
ZSB0ZCB7CisgICAgICAgICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICAgICAgICAgIGJv
cmRlci10b3A6IHNvbGlkIDFweCAjZGRkOworICAgICAgICAgICAgICAgIHdpZHRoOiAyMXJlbTsK
KyAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgICAgICAgICAgICAgIGNvbG9y
OiAjYzMzOworICAgICAgICAgICAgfQogYDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3Qt
Z3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IGExY2QyZGMzZTM3OTdj
ZmRhOWZmYjYwMjBiMDhhMDJlYWI2MmUwZDIuLmU3OWQ5NzMyMzM2NDU5NTE4ZjRmODk0YWIyNWM5
YmQ3M2FjNDBlZWEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVz
dC1ncm91cC1mb3JtLmpzCkBAIC0xMzUsNyArMTM1LDMwIEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRl
c3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgIGVsZW1lbnQo
J3RoZWFkJywKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0cicsCiAgICAgICAgICAgICAgICAg
ICAgIFtlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgJ1JlcG9zaXRvcnknKSwgY29tbWl0U2V0
TGFiZWxzLm1hcCgobGFiZWwpID0+IGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IGNvbW1pdFNldExh
YmVscy5sZW5ndGggKyAxfSwgbGFiZWwpKSwgZWxlbWVudCgndGQnKV0pKSwKLSAgICAgICAgICAg
IHRoaXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9yeUxpc3QsIGNvbW1pdFNldE1h
cCwgb3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMuX2hhc0luY29tcGxldGVPd25l
ZFJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCldKTsKKyAgICAgICAgICAgIHRo
aXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9yeUxpc3QsIGNvbW1pdFNldE1hcCwg
b3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMuX2hhc0luY29tcGxldGVPd25lZFJl
cG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCksCisgICAgICAgICAgICB0aGlzLl9j
b25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFwKV0pOworICAgIH0KKworICAgIF9j
b25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFwKQorICAgIHsKKyAgICAgICAgY29u
c3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKworICAgICAgICBsZXQg
aGFzQ29tbWl0V2l0aFRlc3RhYmlsaXR5ID0gZmFsc2U7CisgICAgICAgIGNvbnN0IGNvbW1pdFNl
dHMgPSBBcnJheS5mcm9tKGNvbW1pdFNldE1hcC52YWx1ZXMoKSk7CisgICAgICAgIGZvciAoY29u
c3QgY29tbWl0U2V0IG9mIGNvbW1pdFNldHMpCisgICAgICAgICAgICBoYXNDb21taXRXaXRoVGVz
dGFiaWxpdHkgfD0gISFjb21taXRTZXQuY29tbWl0c1dpdGhUZXN0YWJpbGl0eSgpOworICAgICAg
ICBpZiAoIWhhc0NvbW1pdFdpdGhUZXN0YWJpbGl0eSkKKyAgICAgICAgICAgIHJldHVybiBbXTsK
KworCisgICAgICAgIGNvbnN0IHRlc3RhYmlsaXR5Um93cyA9IFtdOworICAgICAgICBmb3IgKGNv
bnN0IGNvbW1pdFNldCBvZiBjb21taXRTZXRNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGNv
bnN0IHJvd3MgPSBjb21taXRTZXQuY29tbWl0c1dpdGhUZXN0YWJpbGl0eSgpLm1hcCgoY29tbWl0
KSA9PgorICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RyJywge2NsYXNzOiAndGVzdGFiaWxpdHkn
fSwgYCR7Y29tbWl0LnJlcG9zaXRvcnkoKS5uYW1lKCl9IC0gJHtjb21taXQubGFiZWwoKX06ICR7
Y29tbWl0LnRlc3RhYmlsaXR5KCl9YCkpOworICAgICAgICAgICAgdGVzdGFiaWxpdHlSb3dzLnB1
c2goZWxlbWVudCgndGQnLCB7Y29sc3BhbjogY29tbWl0U2V0TWFwLnNpemUgKyAxfSwgcm93cykp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3Rib2R5JywgZWxlbWVudCgn
dHInLCBbZWxlbWVudCgndGQnLCB7Y29sc3BhbjogMn0pLCB0ZXN0YWJpbGl0eVJvd3MsIGVsZW1l
bnQoJ3RkJyldKSk7CiAgICAgfQogCiAgICAgX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3Np
dG9yeUxpc3QsIGNvbW1pdFNldE1hcCwgb3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIGhh
c0luY29tcGxldGVPd25lZFJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCkKQEAg
LTI1NSw4ICsyNzgsOCBAQCBjbGFzcyBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtIGV4dGVuZHMg
VGVzdEdyb3VwRm9ybSB7CiAgICAgICAgICAgICBvbmNoYW5nZTogKCkgPT4gewogICAgICAgICAg
ICAgICAgIGlmIChvd25lclJlcG9zaXRvcnkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgICAgIGNvbW1pdFNldE1hcC5nZXQoY29sdW1uTGFiZWwpLnVwZGF0ZVJl
dmlzaW9uRm9yT3duZXJSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uRWRpdG9yLnZhbHVl
KS5jYXRjaCgKKyAgICAgICAgICAgICAgICBjb21taXRTZXRNYXAuZ2V0KGNvbHVtbkxhYmVsKS51
cGRhdGVSZXZpc2lvbkZvck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCByZXZpc2lvbkVkaXRv
ci52YWx1ZSkudGhlbigKKyAgICAgICAgICAgICAgICAgICAgKCkgPT4gdGhpcy5lbnF1ZXVlVG9S
ZW5kZXIoKSwKICAgICAgICAgICAgICAgICAgICAgKCkgPT4gewogICAgICAgICAgICAgICAgICAg
ICAgICAgYWxlcnQoYCIke3JldmlzaW9uRWRpdG9yLnZhbHVlfSIgZG9lcyBub3QgZXhpc3QgaW4g
IiR7cmVwb3NpdG9yeS5uYW1lKCl9Ii5gKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlz
aW9uRWRpdG9yLnZhbHVlID0gcmV2aXNpb247CkBAIC0yNzgsNiArMzAxLDcgQEAgY2xhc3MgQ3Vz
dG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICAg
ICAgICAgICAgICByZXZpc2lvbkVkaXRvci52YWx1ZSA9IHVuY3VzdG9taXplZENvbW1pdCA/IHVu
Y3VzdG9taXplZENvbW1pdC5yZXZpc2lvbigpIDogJyc7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh1bmN1c3RvbWl6ZWRDb21taXQgJiYgdW5jdXN0b21pemVkQ29tbWl0Lm93bmVyQ29tbWl0KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vd25lclJldmlzaW9uTWFwLmdldChjb2x1
bW5MYWJlbCkuc2V0KHJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdC5vd25lckNvbW1pdCgp
LnJldmlzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigp
OwogICAgICAgICAgICAgICAgIH19KTsKICAgICAgICAgICAgIG5vZGVzLnB1c2goZWxlbWVudCgn
dGQnLCBlbGVtZW50KCdsYWJlbCcsIFtyYWRpb0J1dHRvbiwgbGFiZWxUb0Nob29zZV0pKSk7CiAg
ICAgICAgIH0KQEAgLTMzNiw2ICszNjAsMTEgQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3Vw
Rm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICAgICAgI25vdGlmeS1vbi1jb21w
bGV0aW9uLWNoZWNrYm94IHsKICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC40cmVtOwog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY3VzdG9tLXRhYmxlIHRyLnRlc3RhYmlsaXR5
IHsKKyAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgICAgICAgICAgICAgIGNv
bG9yOiAjYzMzOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYDsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1z
ZXQuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQt
c2V0LmpzCmluZGV4IDQ0NWIyNzAxN2YyNDhkOWU1YWM0YzEzYjg3NTVhMGFhZDU3MjJjYTQuLmJi
NWI3ZjE5OGNlZjM5YTE0ZDMzZmZhMTgwM2Q2OTJmNjY3YWE4ZmEgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcwpA
QCAtMzg5LDcgKzM4OSw3IEBAIGNsYXNzIEludGVybWVkaWF0ZUNvbW1pdFNldCB7CiAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChmZXRjaGluZ1Byb21pc2VzKTsKICAgICB9CiAKLSAgICBjb21t
aXRzV2l0aFRlc3RhYmlsaXR5V2FybmluZ3MoKSB7IHJldHVybiB0aGlzLmNvbW1pdHMoKS5maWx0
ZXIoKGNvbW1pdCkgPT4gISFjb21taXQudGVzdGFiaWxpdHlXYXJuaW5nKCkpOyB9CisgICAgY29t
bWl0c1dpdGhUZXN0YWJpbGl0eSgpIHsgcmV0dXJuIHRoaXMuY29tbWl0cygpLmZpbHRlcigoY29t
bWl0KSA9PiAhIWNvbW1pdC50ZXN0YWJpbGl0eSgpKTsgfQogICAgIGNvbW1pdHMoKSB7IHJldHVy
biAgQXJyYXkuZnJvbSh0aGlzLl9jb21taXRCeVJlcG9zaXRvcnkudmFsdWVzKCkpOyB9CiAKICAg
ICBfZmV0Y2hDb21taXRMb2dBbmRPd25lZENvbW1pdHMocmVwb3NpdG9yeSwgcmV2aXNpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358009</attachid>
            <date>2018-12-21 18:13:36 -0800</date>
            <delta_ts>2018-12-24 16:15:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192972-20181221181335.patch</filename>
            <type>text/plain</type>
            <size>22968</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDg1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwOTM2OTA5NzYxYTI0ZjE3ZGNmM2FhOWI3YTQyZWUxNGQyNGJlNTA1Li4yYTI5Y2JkNjFk
MjJiNWU2NzJkYWYwNjg4MjVjZTc2MTUxYmRkOTRhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0xMi0yMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVUkgaW4gYW5hbHlzaXMgdGFzayBwYWdlIHRvIHNo
b3cgY29tbWl0IHRlc3RhYmlsaXR5IGluZm9tYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVUkgaW4gY3VzdG9tIGFuYWx5c2lzIHRhc2sg
Y29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphYmxlIHRlc3QgZ3JvdXAgZm9ybSB0bworICAgICAg
ICBzaG93IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAgICBGaXggYSBidWcgaW4gJ0N1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fdXBkYXRlQ29tbWl0U2V0TWFwJyB0aGF0ICdj
dXJyZW50Q29tcGFyaXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorCisgICAgICAgICogYnJvd3Nl
ci10ZXN0cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMuanM6IEFkZGVk
IGEgdW5pdCB0ZXN0IGZvciB0aGUgYnVnIGluCisgICAgICAgICdDdXN0b21BbmFseXNpc1Rhc2tD
b25maWd1cmF0b3IuX3VwZGF0ZUNvbW1pdFNldE1hcCcuCisgICAgICAgICogYnJvd3Nlci10ZXN0
cy9pbmRleC5odG1sOiBJbXBvcnRlZCAnJ2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRv
ci10ZXN0cy5qcycuCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5
c2lzLXRhc2stY29uZmlndXJhdG9yLmpzOiBBZGRlZCBVSSB0byBzaG93IHRlc3RhYmlsaXR5IGlu
Zm9ybWF0aW9uLgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yKToKKyAg
ICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2RpZFVwZGF0
ZVNlbGVjdGVkUGxhdGZvcm1zKTogU2hvdWxkIHJlc2V0IGNvbW1pdCBzZXQgbWFwIHJlbGF0ZWQg
ZmVpbGQuCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBl
LnJlbmRlcik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90
eXBlLl91cGRhdGVDb21taXRTZXRNYXApOiBGaXhlZCBhIGJ1ZyB0aGF0ICdjdXJyZW50Q29tcGFy
aXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLnByb3RvdHlwZS5fY29tcHV0ZUNvbW1pdFNldCk6CisgICAgICAgIChDdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLmFzeW5jLl9mZXRjaENvbW1pdHNGb3JD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5w
cm90b3R5cGUuYXN5bmMuX3Jlc29sdmVSZXZpc2lvbik6CisgICAgICAgIChDdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZFJldmlzaW9uVGFibGUpOgorICAgICAg
ICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRUZXN0YWJp
bGl0eUxpc3QpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3Rv
dHlwZS5fc2VsZWN0UmVwb3NpdG9yeUdyb3VwKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFz
a0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2J1aWxkUmV2aXNpb25JbnB1dCk6CisgICAgICAgIChD
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY3NzVGVtcGxhdGUpOgorICAgICAgICAqIHB1
YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanM6IEFkZGVk
IFVJIHRvIHNob3cgdGVzdGFiaWxpdHkgaW5mb3JtYXRpb24uCisgICAgICAgIChDdXN0b21pemFi
bGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5fcmVuZGVyQ3VzdG9tUmV2aXNpb25UYWJsZSk6Cisg
ICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5fY29uc3RydWN0VGVz
dGFiaWxpdHlSb3dzLik6CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnByb3Rv
dHlwZS5fY29uc3RydWN0VGVzdGFiaWxpdHlSb3dzKToKKyAgICAgICAgKEN1c3RvbWl6YWJsZVRl
c3RHcm91cEZvcm0ucHJvdG90eXBlLl9jb25zdHJ1Y3RSZXZpc2lvblJhZGlvQnV0dG9ucyk6Cisg
ICAgICAgIENoYW5naW5nIGVpdGhlciByZXZpc2lvbiBlZGl0b3Igb3IgcmFkaW8gYnV0dG9uIHNo
b3VsZCB0cmlnZ2VyIGEgcmUtcmVuZGVyIGFzIHRlc3RhYmlsaXR5CisgICAgICAgIGluZm9ybWF0
aW9uIGZvciB1cGRhdGVkIHJldmlzaW9uIG1heSBjaGFuZ2UuCisgICAgICAgIChDdXN0b21pemFi
bGVUZXN0R3JvdXBGb3JtLmNzc1RlbXBsYXRlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxz
L2NvbW1pdC1zZXQuanM6CisgICAgICAgIChJbnRlcm1lZGlhdGVDb21taXRTZXQucHJvdG90eXBl
LmNvbW1pdHNXaXRoVGVzdGFiaWxpdHkpOiBSZW5hbWVkIGZyb20gJ2NvbW1pdHNXaXRoVGVzdGFi
aWxpdHlXYXJuaW5ncycuCisgICAgICAgIChJbnRlcm1lZGlhdGVDb21taXRTZXQucHJvdG90eXBl
LmNvbW1pdHNXaXRoVGVzdGFiaWxpdHlXYXJuaW5ncyk6IERlbGV0ZWQuCisKIDIwMTgtMTItMTQg
IERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIGNvbW1p
dHMgdGFibGUgdG8gY29udGFpbiB0ZXN0YWJpbGl0eSBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2N1c3RvbS1hbmFseXNpcy10
YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93
c2VyLXRlc3RzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMzg1NDVhNmVmYzAyNjE3ODM5NDMyMDc5N2Y1YjFjY2VkYWU5MmU4Ci0tLSAvZGV2
L251bGwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvY3VzdG9t
LWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXRlc3RzLmpzCkBAIC0wLDAgKzEsMzIgQEAKKwor
ZGVzY3JpYmUoJ0N1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcicsICgpID0+IHsKKyAgICBj
b25zdCBzY3JpcHRzID0gWydpbnN0cnVtZW50YXRpb24uanMnLCAnLi4vc2hhcmVkL2NvbW1vbi1j
b21wb25lbnQtYmFzZS5qcycsICdjb21wb25lbnRzL2Jhc2UuanMnLCAnbW9kZWxzL2RhdGEtbW9k
ZWwuanMnLCAnbW9kZWxzL2NvbW1pdC1sb2cuanMnLAorICAgICAgICAnbW9kZWxzL2NvbW1pdC1z
ZXQuanMnLCAnbW9kZWxzL3JlcG9zaXRvcnkuanMnLCAnbW9kZWxzL21ldHJpYy5qcycsICdtb2Rl
bHMvdHJpZ2dlcmFibGUuanMnLCAnbW9kZWxzL3Rlc3QuanMnLCAnY29tcG9uZW50cy90ZXN0LWdy
b3VwLWZvcm0uanMnLCAnY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0
b3IuanMnLAorICAgICAgICAnY29tcG9uZW50cy9pbnN0YW50LWZpbGUtdXBsb2FkZXIuanMnLCAn
bGF6aWx5LWV2YWx1YXRlZC1mdW5jdGlvbi5qcyddOworCisgICAgYXN5bmMgZnVuY3Rpb24gY3Jl
YXRlQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yV2l0aENvbnRleHQoY29udGV4dCkgewor
ICAgICAgICBhd2FpdCBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJh
c2UnLCAnRGF0YU1vZGVsT2JqZWN0JywgJ1JlcG9zaXRvcnknLCAnQ29tbWl0TG9nJywgJ1RyaWdn
ZXJhYmxlUmVwb3NpdG9yeUdyb3VwJywKKyAgICAgICAgICAgICdDdXN0b21Db21taXRTZXQnLCAn
Q3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yJywgJ01vY2tSZW1vdGVBUEknLCAnTGF6aWx5
RXZhbHVhdGVkRnVuY3Rpb24nKTsKKyAgICAgICAgY29uc3QgY3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yID0gbmV3IGNvbnRleHQuc3ltYm9scy5DdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3I7CisgICAgICAgIGNvbnRleHQuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IuZWxlbWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGN1c3Rv
bUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcjsKKyAgICB9CisKKyAgICBpdCgnU2hvdWxkIG5vdCB1
cGRhdGUgY29tbWl0U2V0TWFwIGlmIGJhc2VsaW5lIGlzIHNldCBhbmQgdW5tb2RpZmllZCBidXQg
Y29tcGFyaXNvbiBpcyBudWxsJywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0
ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICBjb25zdCBjdXN0b21BbmFseXNpc1Rh
c2tDb25maWd1cmF0b3IgPSBhd2FpdCBjcmVhdGVDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3JXaXRoQ29udGV4dChjb250ZXh0KTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yQ29tcG9uZW50
c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gY29udGV4dC5z
eW1ib2xzLlJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDEsIHtuYW1lOiAnV2ViS2l0J30pOwor
ICAgICAgICBjb25zdCBjb21taXRTZXQgPSBuZXcgY29udGV4dC5zeW1ib2xzLkN1c3RvbUNvbW1p
dFNldDsKKyAgICAgICAgY29tbWl0U2V0LnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5LCAnMjEwOTQ4JywgbnVsbCk7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3Vy
YXRvci5fY29tbWl0U2V0TWFwID0geydCYXNlbGluZSc6IGNvbW1pdFNldCwgJ0NvbXBhcmlzb24n
OiBudWxsfTsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLl9yZXBvc2l0
b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb25bJ0Jhc2VsaW5lJ10gPSBuZXcgY29udGV4dC5zeW1ib2xz
LlRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwKDEsIHtyZXBvc2l0b3JpZXM6IFt7cmVwb3NpdG9y
eX1dfSk7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fc3BlY2lmaWVk
UmV2aXNpb25zWydCYXNlbGluZSddLnNldChyZXBvc2l0b3J5LCAnMjEwOTQ4Jyk7CisKKyAgICAg
ICAgY29uc3Qgb3JpZ2luYWxDb21taXRTZXQgPSBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IuX2NvbW1pdFNldE1hcDsKKyAgICAgICAgYXdhaXQgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmln
dXJhdG9yLl91cGRhdGVDb21taXRTZXRNYXAoKTsKKworICAgICAgICBleHBlY3QoY3VzdG9tQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yLl9jb21taXRTZXRNYXApLnRvLmJlKG9yaWdpbmFsQ29tbWl0
U2V0KTsKKyAgICB9KTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCmluZGV4IDM1
NDA0N2QzZjlmYjA2Zjc3NWRmMDNhNGM0NTMzMmNiZDQ5ODAyMTMuLjYyZmU5OTI3ODAyNGExYWNi
Y2EzYmQ0OTBlNDVmNjU0ZTg2ZDYxMjEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbApAQCAtMjcsNiArMjcsNyBAQCBtb2NoYS5zZXR1
cCgnYmRkJyk7CiA8c2NyaXB0IHNyYz0iY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9ImNvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJ0ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9ImN1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS10ZXN0cy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibWFya3VwLXBhZ2UtdGVzdHMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9InRlc3QtZ3JvdXAtcmVzdWx0LXBhZ2UtdGVzdHMuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25l
bnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25m
aWd1cmF0b3IuanMKaW5kZXggNDNmMzViN2NhNTI2MTQ4NWMyZjhmZTRjMjNmNGY0N2FhMzI0MWVm
NC4uMzVlOGY2YWM1MWE3ZDg3NmRhYWRiNTdiMmQ0ZDhiNDdlZjI4MzEyMyAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1hbmFs
eXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpz
CkBAIC03LDE2ICs3LDE3IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBl
eHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLl9zZWxlY3RlZFRlc3RzID0gW107
CiAgICAgICAgIHRoaXMuX3RyaWdnZXJhYmxlUGxhdGZvcm1zID0gW107CiAgICAgICAgIHRoaXMu
X3NlbGVjdGVkUGxhdGZvcm0gPSBudWxsOwotICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uTmFt
ZXMgPSBbJ0Jhc2VsaW5lJywgJ0NvbXBhcmlzb24nXTsKICAgICAgICAgdGhpcy5fc2hvd0NvbXBh
cmlzb24gPSBmYWxzZTsKKwogICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSB7fTsKICAgICAg
ICAgdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdDb21w
YXJpc29uJzogbmV3IE1hcH07CiAgICAgICAgIHRoaXMuX3BhdGNoVXBsb2FkZXJzID0geydCYXNl
bGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3IE1hcH07CiAgICAgICAgIHRoaXMuX2N1
c3RvbVJvb3RVcGxvYWRlcnMgPSB7J0Jhc2VsaW5lJzogbnVsbCwgJ0NvbXBhcmlzb24nOiBudWxs
fTsKLSAgICAgICAgdGhpcy5fZmV0Y2hlZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFw
LCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OworICAgICAgICB0aGlzLl9mZXRjaGVkQ29tbWl0cyA9
IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OwogICAgICAgICB0
aGlzLl9yZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbnVsbCwg
J0NvbXBhcmlzb24nOiBudWxsfTsKLSAgICAgICAgdGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVMYXpp
bHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fdXBkYXRlVHJpZ2dlcmFibGUu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnlC
eUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcg
TWFwfTsKIAorICAgICAgICB0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZUxhemlseSA9IG5ldyBMYXpp
bHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZS5iaW5kKHRoaXMpKTsK
ICAgICAgICAgdGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVUZXN0c0xhemlseSA9IG5ldyBMYXppbHlF
dmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzLmJpbmQodGhpcykp
OwogICAgICAgICB0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVBsYXRmb3Jtc0xhemlseSA9IG5ldyBM
YXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVBsYXRmb3Jtcy5i
aW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVzTGF6aWx5ID0g
bmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclJlcG9zaXRvcnlQYW5lcy5i
aW5kKHRoaXMpKTsKQEAgLTU1LDkgKzU2LDEwIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0Nv
bmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogCiAgICAgX2RpZFVwZGF0ZVNlbGVj
dGVkUGxhdGZvcm1zKCkKICAgICB7CisgICAgICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9ucyA9
IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OworICAgICAgICB0
aGlzLl9mZXRjaGVkQ29tbWl0cyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6
IG5ldyBNYXB9OworICAgICAgICB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5QnlD
b25maWd1cmF0aW9uID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3IE1h
cH07CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOwotCi0gICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgc2V0Q29tbWl0U2V0cyhiYXNlbGluZUNv
bW1pdFNldCwgY29tcGFyaXNvbkNvbW1pdFNldCkKQEAgLTE5MCw2ICsxOTIsMTEgQEAgY2xhc3Mg
Q3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAg
ICAgICAgIGNvbnN0IFt0cmlnZ2VyYWJsZSwgZXJyb3JdID0gdGhpcy5fdXBkYXRlVHJpZ2dlcmFi
bGVMYXppbHkuZXZhbHVhdGUodGhpcy5fc2VsZWN0ZWRUZXN0cywgdGhpcy5fc2VsZWN0ZWRQbGF0
Zm9ybSk7CiAKICAgICAgICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVzTGF6aWx5LmV2YWx1
YXRlKHRyaWdnZXJhYmxlLCBlcnJvciwgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSwgdGhpcy5fcmVw
b3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uLCB0aGlzLl9zaG93Q29tcGFyaXNvbik7CisKKyAg
ICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnYmFzZWxpbmUtdGVzdGFiaWxp
dHknKSwKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkVGVzdGFiaWxpdHlMaXN0KHRoaXMuX2NvbW1p
dFNldE1hcFsnQmFzZWxpbmUnXSwgJ0Jhc2VsaW5lJywgdGhpcy5faW52YWxpZFJldmlzaW9uRm9y
UmVwb3NpdG9yeUJ5Q29uZmlndXJhdGlvblsnQmFzZWxpbmUnXSkpOworICAgICAgICBpZiAodGhp
cy5fc2hvd0NvbXBhcmlzb24pCisgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5j
b250ZW50KCdjb21wYXJpc29uLXRlc3RhYmlsaXR5JyksIHRoaXMuX2J1aWxkVGVzdGFiaWxpdHlM
aXN0KHRoaXMuX2NvbW1pdFNldE1hcFsnQ29tcGFyaXNvbiddLCAnQ29tcGFyaXNvbicsIHRoaXMu
X2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnlCeUNvbmZpZ3VyYXRpb25bJ0NvbXBhcmlzb24n
XSkpOwogICAgIH0KIAogICAgIF9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzKCkKQEAgLTMwNCwxMiAr
MzExLDEyIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENv
bXBvbmVudEJhc2UgewogICAgICAgICAgICAgbmV3Q29tcGFyaXNvbiA9IG51bGw7CiAKICAgICAg
ICAgY29uc3QgY3VycmVudEJhc2VsaW5lID0gdGhpcy5fY29tbWl0U2V0TWFwWydCYXNlbGluZSdd
OwotICAgICAgICBjb25zdCBjdXJyZW50Q29tcGFyaXNvbiA9IHRoaXMuX2NvbW1pdFNldE1hcFsn
QmFzZWxpbmUnXTsKLSAgICAgICAgaWYgKG5ld0Jhc2VsaW5lID09IGN1cnJlbnRCYXNlbGluZSAm
JiBuZXdDb21wYXJpc29uID09IGN1cnJlbnRDb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJu
OyAvLyBCb3RoIG9mIHRoZW0gYXJlIG51bGwuCisgICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJp
c29uID0gdGhpcy5fY29tbWl0U2V0TWFwWydDb21wYXJpc29uJ107CisgICAgICAgIGNvbnN0IGFy
ZUNvbW1pdFNldHNFcXVhbCA9IChjb21taXRTZXRBLCBjb21taXRTZXRCKSA9PiBjb21taXRTZXRB
ID09IGNvbW1pdFNldEIgfHwgKGNvbW1pdFNldEEgJiYgY29tbWl0U2V0QiAmJiBjb21taXRTZXRB
LmVxdWFscyhjb21taXRTZXRCKSk7CisgICAgICAgIGNvbnN0IHNhbWVCYXNlbGluZUNvbmZpZyA9
IGFyZUNvbW1pdFNldHNFcXVhbChjdXJyZW50QmFzZWxpbmUsIG5ld0Jhc2VsaW5lKTsKKyAgICAg
ICAgY29uc3Qgc2FtZUNvbXBhcmlzaW9uQ29uZmlnID0gYXJlQ29tbWl0U2V0c0VxdWFsKGN1cnJl
bnRDb21wYXJpc29uLCBuZXdDb21wYXJpc29uKTsKIAotICAgICAgICBpZiAobmV3QmFzZWxpbmUg
JiYgY3VycmVudEJhc2VsaW5lICYmIG5ld0Jhc2VsaW5lLmVxdWFscyhjdXJyZW50QmFzZWxpbmUp
Ci0gICAgICAgICAgICAmJiBuZXdDb21wYXJpc29uICYmIGN1cnJlbnRDb21wYXJpc29uICYmIG5l
d0NvbXBhcmlzb24uZXF1YWxzKGN1cnJlbnRDb21wYXJpc29uKSkKKyAgICAgICAgaWYgKHNhbWVC
YXNlbGluZUNvbmZpZyAmJiBzYW1lQ29tcGFyaXNpb25Db25maWcpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fY29tbWl0U2V0TWFwID0geydCYXNlbGluZSc6IG5ld0Jhc2Vs
aW5lLCAnQ29tcGFyaXNvbic6IG5ld0NvbXBhcmlzb259OwpAQCAtMzMxLDggKzMzOCwxMSBAQCBj
bGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAg
ICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiByZXBvc2l0b3J5R3JvdXAucmVwb3NpdG9yaWVzKCkp
IHsKICAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tj
b25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOwotICAgICAgICAgICAgaWYgKCFyZXZp
c2lvbikKLSAgICAgICAgICAgICAgICByZXZpc2lvbiA9IHRoaXMuX2ZldGNoZWRSZXZpc2lvbnNb
Y29uZmlndXJhdGlvbk5hbWVdLmdldChyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGlmICghcmV2
aXNpb24pIHsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSB0aGlzLl9mZXRjaGVkQ29t
bWl0c1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgICAg
IGlmIChjb21taXQpCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0gY29tbWl0LnJldmlz
aW9uKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXJldmlzaW9uKQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgbGV0IHBhdGNoID0gbnVsbDsKQEAg
LTM1NSw2ICszNjUsNDQgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJldHVybiBjb21taXRTZXQ7CiAgICAgfQog
CisgICAgYXN5bmMgX2ZldGNoQ29tbWl0c0ZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5h
bWUpCisgICAgeworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0aGlzLl9jb21taXRTZXRNYXBb
Y29uZmlndXJhdGlvbk5hbWVdOworICAgICAgICBpZiAoIWNvbW1pdFNldCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBjb25zdCBzcGVjaWZpZWRSZXZpc2lvbnMgPSB0aGlzLl9zcGVj
aWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdOworICAgICAgICBjb25zdCBmZXRjaGVk
Q29tbWl0cyA9IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAg
ICAgY29uc3QgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSA9IHRoaXMuX2ludmFsaWRSZXZp
c2lvbkZvclJlcG9zaXRvcnlCeUNvbmZpZ3VyYXRpb25bY29uZmlndXJhdGlvbk5hbWVdOworCisg
ICAgICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oY29tbWl0U2V0LnJlcG9zaXRvcmll
cygpKS5tYXAoKHJlcG9zaXRvcnkpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uID0g
Y29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9yZXNvbHZlUmV2aXNpb24ocmVwb3NpdG9yeSwgcmV2aXNpb24sIHNwZWNp
ZmllZFJldmlzaW9ucywgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSwgZmV0Y2hlZENvbW1p
dHMpOworICAgICAgICB9KSk7CisKKyAgICAgICAgY29uc3QgbGF0ZXN0Q29tbWl0U2V0ID0gdGhp
cy5fY29tbWl0U2V0TWFwW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAgICAgaWYgKGNvbW1pdFNl
dCAhPSBsYXRlc3RDb21taXRTZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgfQorCisgICAgYXN5bmMgX3Jlc29sdmVSZXZpc2lvbihy
ZXBvc2l0b3J5LCByZXZpc2lvbiwgc3BlY2lmaWVkUmV2aXNpb25zLCBpbnZhbGlkUmV2aXNpb25G
b3JSZXBvc2l0b3J5LCBmZXRjaGVkQ29tbWl0cykKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBjb25zdCBjb21taXRzID0gYXdhaXQgQ29tbWl0TG9nLmZldGNoRm9yU2luZ2xlUmV2
aXNpb24ocmVwb3NpdG9yeSwgcmV2aXNpb24pOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
Y29tbWl0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgaWYgKHJldmlzaW9uICE9IHNwZWNpZmll
ZFJldmlzaW9ucy5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5kZWxldGUocmVwb3NpdG9yeSk7
CisgICAgICAgICAgICBmZXRjaGVkQ29tbWl0cy5zZXQocmVwb3NpdG9yeSwgY29tbWl0c1swXSk7
CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBpZiAocmV2aXNpb24gIT0g
c3BlY2lmaWVkUmV2aXNpb25zLmdldChyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LnNldChyZXBvc2l0
b3J5LCByZXZpc2lvbik7CisgICAgICAgICAgICBmZXRjaGVkQ29tbWl0cy5kZWxldGUocmVwb3Np
dG9yeSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfcmVuZGVyUmVwb3NpdG9yeVBhbmVzKHRy
aWdnZXJhYmxlLCBlcnJvciwgcGxhdGZvcm0sIHJlcG9zaXRvcnlHcm91cEJ5Q29uZmlndXJhdGlv
biwgc2hvd0NvbXBhcmlzb24pCiAgICAgewogICAgICAgICB0aGlzLmNvbnRlbnQoJ3JlcG9zaXRv
cnktY29uZmlndXJhdGlvbi1lcnJvci1wYW5lJykuc3R5bGUuZGlzcGxheSA9IGVycm9yID8gbnVs
bCA6ICdub25lJzsKQEAgLTQxNCw3ICs0NjIsNiBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tD
b25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICBfYnVpbGRSZXZpc2lvblRh
YmxlKGNvbmZpZ3VyYXRpb25OYW1lLCByZXBvc2l0b3J5R3JvdXBzLCBjdXJyZW50R3JvdXAsIHBs
YXRmb3JtLCByZXF1aXJlZFJlcG9zaXRvcmllcywgb3B0aW9uYWxSZXBvc2l0b3J5TGlzdCwgYWx3
YXlzQWNjZXB0c0N1c3RvbVJvb3RzKQogICAgIHsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IENv
bXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKLSAgICAgICAgY29uc3QgbGluayA9IENvbXBvbmVu
dEJhc2UuY3JlYXRlTGluazsKIAogICAgICAgICBjb25zdCBjdXN0b21Sb290c1RCb2R5ID0gZWxl
bWVudCgndGJvZHknLCBbCiAgICAgICAgICAgICBlbGVtZW50KCd0cicsIFsKQEAgLTQ1Myw2ICs1
MDAsMjMgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29t
cG9uZW50QmFzZSB7CiAgICAgICAgICAgICApXTsKICAgICB9CiAKKyAgICBfYnVpbGRUZXN0YWJp
bGl0eUxpc3QoY29tbWl0U2V0LCBjb25maWd1cmF0aW9uTmFtZSwgaW52YWxpZFJldmlzaW9uRm9y
UmVwb3NpdG9yeSkKKyAgICB7CisgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNl
LmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgZm9y
IChjb25zdCByZXBvc2l0b3J5IG9mIGNvbW1pdFNldCA/IGNvbW1pdFNldC5yZXBvc2l0b3JpZXMo
KSA6IFtdKSB7CisgICAgICAgICAgICBjb25zdCBjb21taXQgPSB0aGlzLl9mZXRjaGVkQ29tbWl0
c1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgaWYgKGNv
bW1pdCAmJiBjb21taXQudGVzdGFiaWxpdHkoKSAmJiAhaW52YWxpZFJldmlzaW9uRm9yUmVwb3Np
dG9yeS5oYXMocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGVsZW1l
bnQoJ2xpJywgYCR7Y29tbWl0LnJlcG9zaXRvcnkoKS5uYW1lKCl9IC0gIiR7Y29tbWl0LmxhYmVs
KCl9IjogJHtjb21taXQudGVzdGFiaWxpdHkoKX1gKSk7CisgICAgICAgICAgICBpZiAoaW52YWxp
ZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5oYXMocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAg
ZW50cmllcy5wdXNoKGVsZW1lbnQoJ2xpJywgYCR7cmVwb3NpdG9yeS5uYW1lKCl9IC0gIiR7aW52
YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5nZXQocmVwb3NpdG9yeSl9IjogSW52YWxpZCByZXZp
c2lvbmApKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWVudHJpZXMubGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIHJldHVybiBlbnRyaWVzOworICAgIH0KKwogICAg
IF9idWlsZFJlcG9zaXRvcnlHcm91cExpc3QocmVwb3NpdG9yeUdyb3VwcywgY3VycmVudEdyb3Vw
LCBjb25maWd1cmF0aW9uTmFtZSkKICAgICB7CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21w
b25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CkBAIC00NzYsNiArNTQwLDcgQEAgY2xhc3MgQ3VzdG9t
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAg
IGNsb25lW2NvbmZpZ3VyYXRpb25OYW1lXSA9IGdyb3VwOwogICAgICAgICB0aGlzLl9yZXBvc2l0
b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24gPSBjbG9uZTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29t
bWl0U2V0TWFwKCk7CisgICAgICAgIHRoaXMuX2ZldGNoQ29tbWl0c0ZvckNvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbk5hbWUpOwogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAg
IH0KIApAQCAtNDgzLDEwICs1NDgsMTkgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmln
dXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgewogICAgICAgICBjb25zdCByZXZp
c2lvbiA9IHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJl
cG9zaXRvcnkpIHx8ICcnOwogICAgICAgICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5j
cmVhdGVFbGVtZW50OworICAgICAgICBsZXQgc2NoZWR1bGVkVXBkYXRlID0gbnVsbDsKICAgICAg
ICAgY29uc3QgaW5wdXQgPSBlbGVtZW50KCdpbnB1dCcsIHt2YWx1ZTogcmV2aXNpb24sIG9uaW5w
dXQ6ICgpID0+IHsKICAgICAgICAgICAgIHVubW9kaWZpZWRJbnB1dCA9IG51bGw7Ci0gICAgICAg
ICAgICB0aGlzLl9zcGVjaWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLnNldChyZXBv
c2l0b3J5LCBpbnB1dC52YWx1ZSk7CisgICAgICAgICAgICBjb25zdCByZXZpc2lvblRvRmV0Y2gg
PSBpbnB1dC52YWx1ZTsKKyAgICAgICAgICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25m
aWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIHJldmlzaW9uVG9GZXRjaCk7CiAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVDb21taXRTZXRNYXAoKTsKKyAgICAgICAgICAgIGlmIChzY2hlZHVs
ZWRVcGRhdGUpCisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHNjaGVkdWxlZFVwZGF0ZSk7
CisgICAgICAgICAgICBzY2hlZHVsZWRVcGRhdGUgPSBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBpZiAocmV2aXNpb25Ub0ZldGNoID09IGlucHV0LnZhbHVlKQorICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9mZXRjaENvbW1pdHNGb3JDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b25OYW1lKTsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZWRVcGRhdGUgPSBudWxsOworICAgICAg
ICAgICAgfSwgMTAwKTsKICAgICAgICAgfX0pOwogICAgICAgICBsZXQgdW5tb2RpZmllZElucHV0
ID0gaW5wdXQ7CiAKQEAgLTQ5NCw3ICs1NjgsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tD
b25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIENvbW1pdExv
Zy5mZXRjaExhdGVzdENvbW1pdEZvclBsYXRmb3JtKHJlcG9zaXRvcnksIHBsYXRmb3JtKS50aGVu
KChjb21taXQpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoY29tbWl0ICYmIHVubW9kaWZpZWRJ
bnB1dCkgewogICAgICAgICAgICAgICAgICAgICB1bm1vZGlmaWVkSW5wdXQudmFsdWUgPSBjb21t
aXQucmV2aXNpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmV0Y2hlZFJldmlzaW9u
c1tjb25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGNvbW1pdC5yZXZpc2lvbigpKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmV0Y2hlZENvbW1pdHNbY29uZmlndXJhdGlvbk5h
bWVdLnNldChyZXBvc2l0b3J5LCBjb21taXQpOwogICAgICAgICAgICAgICAgICAgICB0aGlzLl91
cGRhdGVDb21taXRTZXRNYXAoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsK
QEAgLTUyMSw2ICs1OTUsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3Ig
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJiYXNlbGlu
ZS1jb25maWd1cmF0aW9uLXBhbmUiIGNsYXNzPSJwYW5lIj4KICAgICAgICAgICAgICAgICA8aDI+
My4gQ29uZmlndXJlIEJhc2VsaW5lPC9oMj4KICAgICAgICAgICAgICAgICA8dGFibGUgaWQ9ImJh
c2VsaW5lLXJldmlzaW9uLXRhYmxlIiBjbGFzcz0icmV2aXNpb24tdGFibGUiPjwvdGFibGU+Cisg
ICAgICAgICAgICAgICAgPHVsIGlkPSJiYXNlbGluZS10ZXN0YWJpbGl0eSI+PC91bD4KICAgICAg
ICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzcGVjaWZ5LWNvbXBh
cmlzb24tcGFuZSIgY2xhc3M9InBhbmUiPgogICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9InNw
ZWNpZnktY29tcGFyaXNvbi1idXR0b24iPkNvbmZpZ3VyZSB0byBDb21wYXJlPC9idXR0b24+CkBA
IC01MjgsNiArNjAzLDcgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICA8c2VjdGlvbiBpZD0iY29tcGFyaXNv
bi1jb25maWd1cmF0aW9uLXBhbmUiIGNsYXNzPSJwYW5lIj4KICAgICAgICAgICAgICAgICA8aDI+
NC4gQ29uZmlndXJlIENvbXBhcmlzb248L2gyPgogICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0i
Y29tcGFyaXNvbi1yZXZpc2lvbi10YWJsZSIgY2xhc3M9InJldmlzaW9uLXRhYmxlIj48L3RhYmxl
PgorICAgICAgICAgICAgICAgIDx1bCBpZD0iY29tcGFyaXNvbi10ZXN0YWJpbGl0eSI+PC91bD4K
ICAgICAgICAgICAgIDwvc2VjdGlvbj5gOwogICAgIH0KIApAQCAtNjc0LDYgKzc1MCwxMiBAQCBj
bGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgICAgICBm
b250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI2Jhc2Vs
aW5lLXRlc3RhYmlsaXR5IGxpLAorICAgICAgICAgICAgI2NvbXBhcmlzb24tdGVzdGFiaWxpdHkg
bGkgeworICAgICAgICAgICAgICAgIGNvbG9yOiAjYzMzOworICAgICAgICAgICAgICAgIHdpZHRo
OiAyMHJlbTsKKyAgICAgICAgICAgIH0KIGA7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0
LWdyb3VwLWZvcm0uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcwppbmRleCBhMWNkMmRjM2UzNzk3
Y2ZkYTlmZmI2MDIwYjA4YTAyZWFiNjJlMGQyLi44MDFkNGYwZDk5MWNjZjY0YmFkMjExZWMzYmQ5
NDJmMTUwY2NiMTFiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRl
c3QtZ3JvdXAtZm9ybS5qcwpAQCAtMTM1LDcgKzEzNSwyOSBAQCBjbGFzcyBDdXN0b21pemFibGVU
ZXN0R3JvdXBGb3JtIGV4dGVuZHMgVGVzdEdyb3VwRm9ybSB7CiAgICAgICAgICAgICBlbGVtZW50
KCd0aGVhZCcsCiAgICAgICAgICAgICAgICAgZWxlbWVudCgndHInLAogICAgICAgICAgICAgICAg
ICAgICBbZWxlbWVudCgndGQnLCB7Y29sc3BhbjogMn0sICdSZXBvc2l0b3J5JyksIGNvbW1pdFNl
dExhYmVscy5tYXAoKGxhYmVsKSA9PiBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiBjb21taXRTZXRM
YWJlbHMubGVuZ3RoICsgMX0sIGxhYmVsKSksIGVsZW1lbnQoJ3RkJyldKSksCi0gICAgICAgICAg
ICB0aGlzLl9jb25zdHJ1Y3RUYWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0LCBjb21taXRTZXRN
YXAsIG93bmVkUmVwb3NpdG9yaWVzQnlSZXBvc2l0b3J5LCB0aGlzLl9oYXNJbmNvbXBsZXRlT3du
ZWRSZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21taXRTZXRNYXApXSk7CisgICAgICAgICAgICB0
aGlzLl9jb25zdHJ1Y3RUYWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0LCBjb21taXRTZXRNYXAs
IG93bmVkUmVwb3NpdG9yaWVzQnlSZXBvc2l0b3J5LCB0aGlzLl9oYXNJbmNvbXBsZXRlT3duZWRS
ZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21taXRTZXRNYXApLAorICAgICAgICAgICAgdGhpcy5f
Y29uc3RydWN0VGVzdGFiaWxpdHlSb3dzKGNvbW1pdFNldE1hcCldKTsKKyAgICB9CisKKyAgICBf
Y29uc3RydWN0VGVzdGFiaWxpdHlSb3dzKGNvbW1pdFNldE1hcCkKKyAgICB7CisgICAgICAgIGNv
bnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisKKyAgICAgICAgbGV0
IGhhc0NvbW1pdFdpdGhUZXN0YWJpbGl0eSA9IGZhbHNlOworICAgICAgICBjb25zdCBjb21taXRT
ZXRzID0gQXJyYXkuZnJvbShjb21taXRTZXRNYXAudmFsdWVzKCkpOworICAgICAgICBmb3IgKGNv
bnN0IGNvbW1pdFNldCBvZiBjb21taXRTZXRzKQorICAgICAgICAgICAgaGFzQ29tbWl0V2l0aFRl
c3RhYmlsaXR5IHw9ICEhY29tbWl0U2V0LmNvbW1pdHNXaXRoVGVzdGFiaWxpdHkoKTsKKyAgICAg
ICAgaWYgKCFoYXNDb21taXRXaXRoVGVzdGFiaWxpdHkpCisgICAgICAgICAgICByZXR1cm4gW107
CisKKyAgICAgICAgY29uc3QgdGVzdGFiaWxpdHlSb3dzID0gW107CisgICAgICAgIGZvciAoY29u
c3QgY29tbWl0U2V0IG9mIGNvbW1pdFNldE1hcC52YWx1ZXMoKSkgeworICAgICAgICAgICAgY29u
c3Qgcm93cyA9IGNvbW1pdFNldC5jb21taXRzV2l0aFRlc3RhYmlsaXR5KCkubWFwKChjb21taXQp
ID0+CisgICAgICAgICAgICAgICAgZWxlbWVudCgndHInLCB7Y2xhc3M6ICd0ZXN0YWJpbGl0eSd9
LCBgJHtjb21taXQucmVwb3NpdG9yeSgpLm5hbWUoKX0gLSAke2NvbW1pdC5sYWJlbCgpfTogJHtj
b21taXQudGVzdGFiaWxpdHkoKX1gKSk7CisgICAgICAgICAgICB0ZXN0YWJpbGl0eVJvd3MucHVz
aChlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiBjb21taXRTZXRNYXAuc2l6ZSArIDF9LCByb3dzKSk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWxlbWVudCgndGJvZHknLCBlbGVtZW50KCd0
cicsIFtlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSksIHRlc3RhYmlsaXR5Um93cywgZWxlbWVu
dCgndGQnKV0pKTsKICAgICB9CiAKICAgICBfY29uc3RydWN0VGFibGVCb2R5TGlzdChyZXBvc2l0
b3J5TGlzdCwgY29tbWl0U2V0TWFwLCBvd25lZFJlcG9zaXRvcmllc0J5UmVwb3NpdG9yeSwgaGFz
SW5jb21wbGV0ZU93bmVkUmVwb3NpdG9yeSwgdW5jdXN0b21pemVkQ29tbWl0U2V0TWFwKQpAQCAt
MjU1LDggKzI3Nyw4IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBU
ZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgIG9uY2hhbmdlOiAoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgaWYgKG93bmVyUmVwb3NpdG9yeSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICAgICAgY29tbWl0U2V0TWFwLmdldChjb2x1bW5MYWJlbCkudXBkYXRlUmV2
aXNpb25Gb3JPd25lclJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb25FZGl0b3IudmFsdWUp
LmNhdGNoKAorICAgICAgICAgICAgICAgIGNvbW1pdFNldE1hcC5nZXQoY29sdW1uTGFiZWwpLnVw
ZGF0ZVJldmlzaW9uRm9yT3duZXJSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uRWRpdG9y
LnZhbHVlKS50aGVuKAorICAgICAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLmVucXVldWVUb1Jl
bmRlcigpLAogICAgICAgICAgICAgICAgICAgICAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBhbGVydChgIiR7cmV2aXNpb25FZGl0b3IudmFsdWV9IiBkb2VzIG5vdCBleGlzdCBpbiAi
JHtyZXBvc2l0b3J5Lm5hbWUoKX0iLmApOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNp
b25FZGl0b3IudmFsdWUgPSByZXZpc2lvbjsKQEAgLTI3OCw2ICszMDAsNyBAQCBjbGFzcyBDdXN0
b21pemFibGVUZXN0R3JvdXBGb3JtIGV4dGVuZHMgVGVzdEdyb3VwRm9ybSB7CiAgICAgICAgICAg
ICAgICAgICAgIHJldmlzaW9uRWRpdG9yLnZhbHVlID0gdW5jdXN0b21pemVkQ29tbWl0ID8gdW5j
dXN0b21pemVkQ29tbWl0LnJldmlzaW9uKCkgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHVuY3VzdG9taXplZENvbW1pdCAmJiB1bmN1c3RvbWl6ZWRDb21taXQub3duZXJDb21taXQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX293bmVyUmV2aXNpb25NYXAuZ2V0KGNvbHVt
bkxhYmVsKS5zZXQocmVwb3NpdG9yeSwgdW5jdXN0b21pemVkQ29tbWl0Lm93bmVyQ29tbWl0KCku
cmV2aXNpb24oKSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7
CiAgICAgICAgICAgICAgICAgfX0pOwogICAgICAgICAgICAgbm9kZXMucHVzaChlbGVtZW50KCd0
ZCcsIGVsZW1lbnQoJ2xhYmVsJywgW3JhZGlvQnV0dG9uLCBsYWJlbFRvQ2hvb3NlXSkpKTsKICAg
ICAgICAgfQpAQCAtMzM2LDYgKzM1OSwxMSBAQCBjbGFzcyBDdXN0b21pemFibGVUZXN0R3JvdXBG
b3JtIGV4dGVuZHMgVGVzdEdyb3VwRm9ybSB7CiAgICAgICAgICAgICAjbm90aWZ5LW9uLWNvbXBs
ZXRpb24tY2hlY2tib3ggewogICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjRyZW07CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNjdXN0b20tdGFibGUgdHIudGVzdGFiaWxpdHkg
eworICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CisgICAgICAgICAgICAgICAgY29s
b3I6ICNjMzM7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBgOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNl
dC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1z
ZXQuanMKaW5kZXggNDQ1YjI3MDE3ZjI0OGQ5ZTVhYzRjMTNiODc1NWEwYWFkNTcyMmNhNC4uYmI1
YjdmMTk4Y2VmMzlhMTRkMzNmZmExODAzZDY5MmY2NjdhYThmYSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcworKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCkBA
IC0zODksNyArMzg5LDcgQEAgY2xhc3MgSW50ZXJtZWRpYXRlQ29tbWl0U2V0IHsKICAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKGZldGNoaW5nUHJvbWlzZXMpOwogICAgIH0KIAotICAgIGNvbW1p
dHNXaXRoVGVzdGFiaWxpdHlXYXJuaW5ncygpIHsgcmV0dXJuIHRoaXMuY29tbWl0cygpLmZpbHRl
cigoY29tbWl0KSA9PiAhIWNvbW1pdC50ZXN0YWJpbGl0eVdhcm5pbmcoKSk7IH0KKyAgICBjb21t
aXRzV2l0aFRlc3RhYmlsaXR5KCkgeyByZXR1cm4gdGhpcy5jb21taXRzKCkuZmlsdGVyKChjb21t
aXQpID0+ICEhY29tbWl0LnRlc3RhYmlsaXR5KCkpOyB9CiAgICAgY29tbWl0cygpIHsgcmV0dXJu
ICBBcnJheS5mcm9tKHRoaXMuX2NvbW1pdEJ5UmVwb3NpdG9yeS52YWx1ZXMoKSk7IH0KIAogICAg
IF9mZXRjaENvbW1pdExvZ0FuZE93bmVkQ29tbWl0cyhyZXBvc2l0b3J5LCByZXZpc2lvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358048</attachid>
            <date>2018-12-24 16:15:34 -0800</date>
            <delta_ts>2019-01-10 18:56:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192972-20181224161533.patch</filename>
            <type>text/plain</type>
            <size>26180</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDg1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwOTM2OTA5NzYxYTI0ZjE3ZGNmM2FhOWI3YTQyZWUxNGQyNGJlNTA1Li5jMmRlZDNjMmU0
YWQ0MmE5MTBiZjIzZjIxYzJlMDYwNjlhNGNjYjVhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0xMi0yMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVUkgaW4gYW5hbHlzaXMgdGFzayBwYWdlIHRvIHNo
b3cgY29tbWl0IHRlc3RhYmlsaXR5IGluZm9tYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVUkgaW4gY3VzdG9tIGFuYWx5c2lzIHRhc2sg
Y29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphYmxlIHRlc3QgZ3JvdXAgZm9ybSB0bworICAgICAg
ICBzaG93IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAgICBGaXggYSBidWcgaW4gJ0N1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fdXBkYXRlQ29tbWl0U2V0TWFwJyB0aGF0ICdj
dXJyZW50Q29tcGFyaXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorCisgICAgICAgICogYnJvd3Nl
ci10ZXN0cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMuanM6IEFkZGVk
IGEgdW5pdCB0ZXN0IGZvciB0aGUgYnVnIGluCisgICAgICAgICdDdXN0b21BbmFseXNpc1Rhc2tD
b25maWd1cmF0b3IuX3VwZGF0ZUNvbW1pdFNldE1hcCcuCisgICAgICAgIEFkZGVkIGEgdW5pdCB0
ZXN0IHRvIG1ha2Ugc3VyZSAnQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yJyBzdGlsbCB3
b3JrcyB3aGVuIGNvbW1pdCBmZXRjaGluZyBuZXZlciByZXR1cm5zLgorICAgICAgICAqIGJyb3dz
ZXItdGVzdHMvaW5kZXguaHRtbDogSW1wb3J0ZWQgJydjdXN0b20tYW5hbHlzaXMtdGFzay1jb25m
aWd1cmF0b3ItdGVzdHMuanMnLgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2N1c3Rv
bS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qczogQWRkZWQgVUkgdG8gc2hvdyB0ZXN0YWJp
bGl0eSBpbmZvcm1hdGlvbi4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRv
cik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9k
aWRVcGRhdGVTZWxlY3RlZFBsYXRmb3Jtcyk6IFNob3VsZCByZXNldCBjb21taXQgc2V0IG1hcCBy
ZWxhdGVkIGZlaWxkLgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnBy
b3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
LnByb3RvdHlwZS5fdXBkYXRlQ29tbWl0U2V0TWFwKTogRml4ZWQgYSBidWcgdGhhdCAnY3VycmVu
dENvbXBhcmlzb24nIGlzIGluY29ycmVjdGx5IHNldC4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2NvbXB1dGVDb21taXRTZXQpOgorICAgICAgICAo
Q3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5hc3luYy5fZmV0Y2hDb21t
aXRzRm9yQ29uZmlndXJhdGlvbik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3IucHJvdG90eXBlLmFzeW5jLl9yZXNvbHZlUmV2aXNpb24pOgorICAgICAgICAoQ3VzdG9t
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRSZXZpc2lvblRhYmxlKToK
KyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2J1aWxk
VGVzdGFiaWxpdHlMaXN0KToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRv
ci5wcm90b3R5cGUuX3NlbGVjdFJlcG9zaXRvcnlHcm91cCk6CisgICAgICAgIChDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZFJldmlzaW9uSW5wdXQpOgorICAg
ICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNzc1RlbXBsYXRlKToKKyAgICAg
ICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpz
OiBBZGRlZCBVSSB0byBzaG93IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAgICAoQ3Vz
dG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX3JlbmRlckN1c3RvbVJldmlzaW9uVGFi
bGUpOgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX2NvbnN0
cnVjdFRlc3RhYmlsaXR5Um93cy4pOgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9y
bS5wcm90b3R5cGUuX2NvbnN0cnVjdFRlc3RhYmlsaXR5Um93cyk6CisgICAgICAgIChDdXN0b21p
emFibGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5fY29uc3RydWN0UmV2aXNpb25SYWRpb0J1dHRv
bnMpOgorICAgICAgICBDaGFuZ2luZyBlaXRoZXIgcmV2aXNpb24gZWRpdG9yIG9yIHJhZGlvIGJ1
dHRvbiBzaG91bGQgdHJpZ2dlciBhIHJlLXJlbmRlciBhcyB0ZXN0YWJpbGl0eQorICAgICAgICBp
bmZvcm1hdGlvbiBmb3IgdXBkYXRlZCByZXZpc2lvbiBtYXkgY2hhbmdlLgorICAgICAgICAoQ3Vz
dG9taXphYmxlVGVzdEdyb3VwRm9ybS5jc3NUZW1wbGF0ZSk6CisgICAgICAgICogcHVibGljL3Yz
L21vZGVscy9jb21taXQtc2V0LmpzOgorICAgICAgICAoSW50ZXJtZWRpYXRlQ29tbWl0U2V0LnBy
b3RvdHlwZS5jb21taXRzV2l0aFRlc3RhYmlsaXR5KTogUmVuYW1lZCBmcm9tICdjb21taXRzV2l0
aFRlc3RhYmlsaXR5V2FybmluZ3MnLgorICAgICAgICAoSW50ZXJtZWRpYXRlQ29tbWl0U2V0LnBy
b3RvdHlwZS5jb21taXRzV2l0aFRlc3RhYmlsaXR5V2FybmluZ3MpOiBEZWxldGVkLgorCiAyMDE4
LTEyLTE0ICBEZXdlaSBaaHUgIDxkZXdlaV96aHVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVu
ZCBjb21taXRzIHRhYmxlIHRvIGNvbnRhaW4gdGVzdGFiaWxpdHkgaW5mb3JtYXRpb24uCmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jdXN0b20tYW5h
bHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvYnJvd3Nlci10ZXN0cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWYzZjBiZWE5YmRiMDRlMTEyNjhmZGU0ZjAyOTlkOGQ2ZWU4ZGQ2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3Rz
L2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcwpAQCAtMCwwICsxLDk2
IEBACisKK2Rlc2NyaWJlKCdDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3InLCAoKSA9PiB7
CisgICAgY29uc3Qgc2NyaXB0cyA9IFsnaW5zdHJ1bWVudGF0aW9uLmpzJywgJy4uL3NoYXJlZC9j
b21tb24tY29tcG9uZW50LWJhc2UuanMnLCAnY29tcG9uZW50cy9iYXNlLmpzJywgJ21vZGVscy9k
YXRhLW1vZGVsLmpzJywgJ21vZGVscy9jb21taXQtbG9nLmpzJywKKyAgICAgICAgJ21vZGVscy9j
b21taXQtc2V0LmpzJywgJ21vZGVscy9yZXBvc2l0b3J5LmpzJywgJ21vZGVscy9tZXRyaWMuanMn
LCAnbW9kZWxzL3RyaWdnZXJhYmxlLmpzJywgJ21vZGVscy90ZXN0LmpzJywgJ21vZGVscy9wbGF0
Zm9ybS5qcycsICdjb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcycsCisgICAgICAgICdjb21w
b25lbnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcycsICdjb21wb25lbnRz
L2luc3RhbnQtZmlsZS11cGxvYWRlci5qcycsICdsYXppbHktZXZhbHVhdGVkLWZ1bmN0aW9uLmpz
J107CisKKyAgICBhc3luYyBmdW5jdGlvbiBjcmVhdGVDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3JXaXRoQ29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgYXdhaXQgY29udGV4dC5p
bXBvcnRTY3JpcHRzKHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ0RhdGFNb2RlbE9iamVjdCcs
ICdSZXBvc2l0b3J5JywgJ0NvbW1pdExvZycsICdQbGF0Zm9ybScsICdUZXN0JywgJ01ldHJpYycs
ICdUcmlnZ2VyYWJsZScsCisgICAgICAgICAgICAnVHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAn
LCAnQ3VzdG9tQ29tbWl0U2V0JywgJ0N1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcicsICdN
b2NrUmVtb3RlQVBJJywgJ0xhemlseUV2YWx1YXRlZEZ1bmN0aW9uJyk7CisgICAgICAgIGNvbnN0
IGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciA9IG5ldyBjb250ZXh0LnN5bWJvbHMuQ3Vz
dG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yOworICAgICAgICBjb250ZXh0LmRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmVsZW1lbnQoKSk7
CisgICAgICAgIHJldHVybiBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3I7CisgICAgfQor
CisgICAgYXN5bmMgZnVuY3Rpb24gc2xlZXAodGltZW91dCkKKyAgICB7CisgICAgICAgIGF3YWl0
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgdGlt
ZW91dCkpOworICAgIH0KKworICAgIGl0KCdTaG91bGQgYmUgYWJsZSB0byBzY2hlZHVsZSBBL0Ig
dGVzdCBldmVuIGZldGNoaW5nIGNvbW1pdCBpbmZvcm1hdGlvbiBuZXZlciByZXR1cm5zJywgYXN5
bmMgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgp
OworICAgICAgICBjb25zdCBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgPSBhd2FpdCBj
cmVhdGVDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3JXaXRoQ29udGV4dChjb250ZXh0KTsK
KworICAgICAgICBjb25zdCB0ZXN0ID0gbmV3IGNvbnRleHQuc3ltYm9scy5UZXN0KDEsIHtuYW1l
OiAnU3BlZWRvbWV0ZXInfSk7CisgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gbmV3IGNvbnRleHQu
c3ltYm9scy5QbGF0Zm9ybSgxLCB7CisgICAgICAgICAgICBuYW1lOiAnTW9qYXZlJywKKyAgICAg
ICAgICAgIG1ldHJpY3M6IFsKKyAgICAgICAgICAgICAgICBuZXcgY29udGV4dC5zeW1ib2xzLk1l
dHJpYygxLCB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBbGxvY2F0aW9uJywKKyAgICAg
ICAgICAgICAgICAgICAgYWdncmVnYXRvcjogJ0FyaXRobWV0aWMnLAorICAgICAgICAgICAgICAg
ICAgICB0ZXN0CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICBsYXN0TW9kaWZpZWRCeU1ldHJpYzogRGF0ZS5ub3coKSwKKyAgICAgICAgfSk7CisgICAgICAg
IGNvbnN0IHJlcG9zaXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeS5lbnN1cmVTaW5n
bGV0b24oMSwge25hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlUmVw
b3NpdG9yeUdyb3VwID0gbmV3IGNvbnRleHQuc3ltYm9scy5UcmlnZ2VyYWJsZVJlcG9zaXRvcnlH
cm91cCgxLCB7cmVwb3NpdG9yaWVzOiBbe3JlcG9zaXRvcnl9XX0pOworICAgICAgICBuZXcgY29u
dGV4dC5zeW1ib2xzLlRyaWdnZXJhYmxlKDEsIHsKKyAgICAgICAgICAgIG5hbWU6ICd0ZXN0LXRy
aWdnZXJhYmxlJywKKyAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLAorICAgICAgICAgICAg
cmVwb3NpdG9yeUdyb3VwczogW3RyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwXSwKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb25zOiBbe3Rlc3QsIHBsYXRmb3JtfV0sCisgICAgICAgIH0pOworICAg
ICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3Iuc2VsZWN0VGVzdHMoW3Rlc3RdKTsK
KyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFBsYXRmb3JtKHBs
YXRmb3JtKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRl
eHQpOworCisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1v
dGVBUEkucmVxdWVzdHM7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEp
OworICAgICAgICBleHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRzLzEv
bGF0ZXN0P3BsYXRmb3JtPTEnKTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVqZWN0KCk7CisKKyAg
ICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2Jhc2VsaW5lLXJl
dmlzaW9uLXRhYmxlJykucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9ICcxMjMnOworICAg
ICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY29udGVudCgnYmFzZWxpbmUtcmV2
aXNpb24tdGFibGUnKS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IEV2
ZW50KCdpbnB1dCcpKTsKKyAgICAgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICAgICAgZXhwZWN0
KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUoMik7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0c1sxXS51
cmwpLnRvLmJlKCcvYXBpL2NvbW1pdHMvMS8xMjMnKTsKKworICAgICAgICBjdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IuX2NvbmZpZ3VyZUNvbXBhcmlzb24oKTsKKyAgICAgICAgYXdhaXQg
d2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKworICAgICAgICBjdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IuY29udGVudCgnY29tcGFyaXNvbi1yZXZpc2lvbi10YWJsZScp
LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnNDU2JzsKKyAgICAgICAgY3VzdG9tQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2NvbXBhcmlzb24tcmV2aXNpb24tdGFibGUn
KS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcp
KTsKKyAgICAgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxl
bmd0aCkudG8uYmUoMyk7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0c1syXS51cmwpLnRvLmJlKCcv
YXBpL2NvbW1pdHMvMS80NTYnKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXRzID0gY3VzdG9t
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbW1pdFNldHMoKTsKKyAgICAgICAgZXhwZWN0KGNv
bW1pdFNldHMubGVuZ3RoKS50by5iZSgyKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMF0u
cmVwb3NpdG9yaWVzKCkubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNl
dHNbMF0ucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKS50by5iZSgnMTIzJyk7Cisg
ICAgICAgIGV4cGVjdChjb21taXRTZXRzWzFdLnJlcG9zaXRvcmllcygpLmxlbmd0aCkudG8uYmUo
MSk7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzFdLnJldmlzaW9uRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KSkudG8uYmUoJzQ1NicpOworICAgIH0pOworCisKKyAgICBpdCgnU2hvdWxkIG5v
dCB1cGRhdGUgY29tbWl0U2V0TWFwIGlmIGJhc2VsaW5lIGlzIHNldCBhbmQgdW5tb2RpZmllZCBi
dXQgY29tcGFyaXNvbiBpcyBudWxsJywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCBjb250
ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICBjb25zdCBjdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IgPSBhd2FpdCBjcmVhdGVDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3JXaXRoQ29udGV4dChjb250ZXh0KTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yQ29tcG9u
ZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gY29udGV4
dC5zeW1ib2xzLlJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDEsIHtuYW1lOiAnV2ViS2l0J30p
OworICAgICAgICBjb25zdCBjb21taXRTZXQgPSBuZXcgY29udGV4dC5zeW1ib2xzLkN1c3RvbUNv
bW1pdFNldDsKKyAgICAgICAgY29tbWl0U2V0LnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBv
c2l0b3J5LCAnMjEwOTQ4JywgbnVsbCk7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZp
Z3VyYXRvci5fY29tbWl0U2V0TWFwID0geydCYXNlbGluZSc6IGNvbW1pdFNldCwgJ0NvbXBhcmlz
b24nOiBudWxsfTsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLl9yZXBv
c2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb25bJ0Jhc2VsaW5lJ10gPSBuZXcgY29udGV4dC5zeW1i
b2xzLlRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwKDEsIHtyZXBvc2l0b3JpZXM6IFt7cmVwb3Np
dG9yeX1dfSk7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fc3BlY2lm
aWVkUmV2aXNpb25zWydCYXNlbGluZSddLnNldChyZXBvc2l0b3J5LCAnMjEwOTQ4Jyk7CisKKyAg
ICAgICAgY29uc3Qgb3JpZ2luYWxDb21taXRTZXQgPSBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3IuX2NvbW1pdFNldE1hcDsKKyAgICAgICAgYXdhaXQgY3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLl91cGRhdGVDb21taXRTZXRNYXAoKTsKKworICAgICAgICBleHBlY3QoY3VzdG9t
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLl9jb21taXRTZXRNYXApLnRvLmJlKG9yaWdpbmFsQ29t
bWl0U2V0KTsKKyAgICB9KTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCmluZGV4
IDM1NDA0N2QzZjlmYjA2Zjc3NWRmMDNhNGM0NTMzMmNiZDQ5ODAyMTMuLjYyZmU5OTI3ODAyNGEx
YWNiY2EzYmQ0OTBlNDVmNjU0ZTg2ZDYxMjEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbApAQCAtMjcsNiArMjcsNyBAQCBtb2NoYS5z
ZXR1cCgnYmRkJyk7CiA8c2NyaXB0IHNyYz0iY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJ0ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9ImN1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS10ZXN0
cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibWFya3VwLXBhZ2UtdGVzdHMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InRlc3QtZ3JvdXAtcmVzdWx0LXBhZ2UtdGVzdHMuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21w
b25lbnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1j
b25maWd1cmF0b3IuanMKaW5kZXggNDNmMzViN2NhNTI2MTQ4NWMyZjhmZTRjMjNmNGY0N2FhMzI0
MWVmNC4uNTEyNmU2NGIxZTU4ZTc0MDBjY2Y3NGJmNDMzMjk2NmI2OTNmNzE1ZiAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1h
bmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9y
LmpzCkBAIC03LDE2ICs3LDE3IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRv
ciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLl9zZWxlY3RlZFRlc3RzID0g
W107CiAgICAgICAgIHRoaXMuX3RyaWdnZXJhYmxlUGxhdGZvcm1zID0gW107CiAgICAgICAgIHRo
aXMuX3NlbGVjdGVkUGxhdGZvcm0gPSBudWxsOwotICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9u
TmFtZXMgPSBbJ0Jhc2VsaW5lJywgJ0NvbXBhcmlzb24nXTsKICAgICAgICAgdGhpcy5fc2hvd0Nv
bXBhcmlzb24gPSBmYWxzZTsKKwogICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSB7fTsKICAg
ICAgICAgdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdD
b21wYXJpc29uJzogbmV3IE1hcH07CiAgICAgICAgIHRoaXMuX3BhdGNoVXBsb2FkZXJzID0geydC
YXNlbGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3IE1hcH07CiAgICAgICAgIHRoaXMu
X2N1c3RvbVJvb3RVcGxvYWRlcnMgPSB7J0Jhc2VsaW5lJzogbnVsbCwgJ0NvbXBhcmlzb24nOiBu
dWxsfTsKLSAgICAgICAgdGhpcy5fZmV0Y2hlZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUnOiBuZXcg
TWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OworICAgICAgICB0aGlzLl9mZXRjaGVkQ29tbWl0
cyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OwogICAgICAg
ICB0aGlzLl9yZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbnVs
bCwgJ0NvbXBhcmlzb24nOiBudWxsfTsKLSAgICAgICAgdGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVM
YXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fdXBkYXRlVHJpZ2dlcmFi
bGUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRv
cnlCeUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBu
ZXcgTWFwfTsKIAorICAgICAgICB0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZUxhemlseSA9IG5ldyBM
YXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZS5iaW5kKHRoaXMp
KTsKICAgICAgICAgdGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVUZXN0c0xhemlseSA9IG5ldyBMYXpp
bHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzLmJpbmQodGhp
cykpOwogICAgICAgICB0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVBsYXRmb3Jtc0xhemlseSA9IG5l
dyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUcmlnZ2VyYWJsZVBsYXRmb3Jt
cy5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVzTGF6aWx5
ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclJlcG9zaXRvcnlQYW5l
cy5iaW5kKHRoaXMpKTsKQEAgLTU1LDkgKzU2LDEwIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFz
a0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogCiAgICAgX2RpZFVwZGF0ZVNl
bGVjdGVkUGxhdGZvcm1zKCkKICAgICB7CisgICAgICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9u
cyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OworICAgICAg
ICB0aGlzLl9mZXRjaGVkQ29tbWl0cyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNv
bic6IG5ldyBNYXB9OworICAgICAgICB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5
QnlDb25maWd1cmF0aW9uID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3
IE1hcH07CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOwotCi0gICAgICAgIHRo
aXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgc2V0Q29tbWl0U2V0cyhiYXNlbGlu
ZUNvbW1pdFNldCwgY29tcGFyaXNvbkNvbW1pdFNldCkKQEAgLTE5MCw2ICsxOTIsMTIgQEAgY2xh
c3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7
CiAgICAgICAgIGNvbnN0IFt0cmlnZ2VyYWJsZSwgZXJyb3JdID0gdGhpcy5fdXBkYXRlVHJpZ2dl
cmFibGVMYXppbHkuZXZhbHVhdGUodGhpcy5fc2VsZWN0ZWRUZXN0cywgdGhpcy5fc2VsZWN0ZWRQ
bGF0Zm9ybSk7CiAKICAgICAgICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVzTGF6aWx5LmV2
YWx1YXRlKHRyaWdnZXJhYmxlLCBlcnJvciwgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSwgdGhpcy5f
cmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uLCB0aGlzLl9zaG93Q29tcGFyaXNvbik7CisK
KyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnYmFzZWxpbmUtdGVzdGFi
aWxpdHknKSwKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkVGVzdGFiaWxpdHlMaXN0KHRoaXMuX2Nv
bW1pdFNldE1hcFsnQmFzZWxpbmUnXSwgJ0Jhc2VsaW5lJywgdGhpcy5faW52YWxpZFJldmlzaW9u
Rm9yUmVwb3NpdG9yeUJ5Q29uZmlndXJhdGlvblsnQmFzZWxpbmUnXSkpOworICAgICAgICBpZiAo
dGhpcy5fc2hvd0NvbXBhcmlzb24pCisgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhp
cy5jb250ZW50KCdjb21wYXJpc29uLXRlc3RhYmlsaXR5JyksIHRoaXMuX2J1aWxkVGVzdGFiaWxp
dHlMaXN0KHRoaXMuX2NvbW1pdFNldE1hcFsnQ29tcGFyaXNvbiddLCAnQ29tcGFyaXNvbicsCisg
ICAgICAgICAgICAgICAgdGhpcy5faW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeUJ5Q29uZmln
dXJhdGlvblsnQ29tcGFyaXNvbiddKSk7CiAgICAgfQogCiAgICAgX3JlbmRlclRyaWdnZXJhYmxl
VGVzdHMoKQpAQCAtMzA0LDEyICszMTIsMTIgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICBuZXdDb21wYXJp
c29uID0gbnVsbDsKIAogICAgICAgICBjb25zdCBjdXJyZW50QmFzZWxpbmUgPSB0aGlzLl9jb21t
aXRTZXRNYXBbJ0Jhc2VsaW5lJ107Ci0gICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJpc29uID0g
dGhpcy5fY29tbWl0U2V0TWFwWydCYXNlbGluZSddOwotICAgICAgICBpZiAobmV3QmFzZWxpbmUg
PT0gY3VycmVudEJhc2VsaW5lICYmIG5ld0NvbXBhcmlzb24gPT0gY3VycmVudENvbXBhcmlzb24p
Ci0gICAgICAgICAgICByZXR1cm47IC8vIEJvdGggb2YgdGhlbSBhcmUgbnVsbC4KKyAgICAgICAg
Y29uc3QgY3VycmVudENvbXBhcmlzb24gPSB0aGlzLl9jb21taXRTZXRNYXBbJ0NvbXBhcmlzb24n
XTsKKyAgICAgICAgY29uc3QgYXJlQ29tbWl0U2V0c0VxdWFsID0gKGNvbW1pdFNldEEsIGNvbW1p
dFNldEIpID0+IGNvbW1pdFNldEEgPT0gY29tbWl0U2V0QiB8fCAoY29tbWl0U2V0QSAmJiBjb21t
aXRTZXRCICYmIGNvbW1pdFNldEEuZXF1YWxzKGNvbW1pdFNldEIpKTsKKyAgICAgICAgY29uc3Qg
c2FtZUJhc2VsaW5lQ29uZmlnID0gYXJlQ29tbWl0U2V0c0VxdWFsKGN1cnJlbnRCYXNlbGluZSwg
bmV3QmFzZWxpbmUpOworICAgICAgICBjb25zdCBzYW1lQ29tcGFyaXNpb25Db25maWcgPSBhcmVD
b21taXRTZXRzRXF1YWwoY3VycmVudENvbXBhcmlzb24sIG5ld0NvbXBhcmlzb24pOwogCi0gICAg
ICAgIGlmIChuZXdCYXNlbGluZSAmJiBjdXJyZW50QmFzZWxpbmUgJiYgbmV3QmFzZWxpbmUuZXF1
YWxzKGN1cnJlbnRCYXNlbGluZSkKLSAgICAgICAgICAgICYmIG5ld0NvbXBhcmlzb24gJiYgY3Vy
cmVudENvbXBhcmlzb24gJiYgbmV3Q29tcGFyaXNvbi5lcXVhbHMoY3VycmVudENvbXBhcmlzb24p
KQorICAgICAgICBpZiAoc2FtZUJhc2VsaW5lQ29uZmlnICYmIHNhbWVDb21wYXJpc2lvbkNvbmZp
ZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSB7
J0Jhc2VsaW5lJzogbmV3QmFzZWxpbmUsICdDb21wYXJpc29uJzogbmV3Q29tcGFyaXNvbn07CkBA
IC0zMzEsOCArMzM5LDExIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBl
eHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBjb25zdCBjb21taXRTZXQgPSBuZXcgQ3Vz
dG9tQ29tbWl0U2V0OwogICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIHJlcG9zaXRvcnlH
cm91cC5yZXBvc2l0b3JpZXMoKSkgewogICAgICAgICAgICAgbGV0IHJldmlzaW9uID0gdGhpcy5f
c3BlY2lmaWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5nZXQocmVwb3NpdG9yeSk7Ci0g
ICAgICAgICAgICBpZiAoIXJldmlzaW9uKQotICAgICAgICAgICAgICAgIHJldmlzaW9uID0gdGhp
cy5fZmV0Y2hlZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOwor
ICAgICAgICAgICAgaWYgKCFyZXZpc2lvbikgeworICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1p
dCA9IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRpb25OYW1lXS5nZXQocmVwb3NpdG9y
eSk7CisgICAgICAgICAgICAgICAgaWYgKGNvbW1pdCkKKyAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb24gPSBjb21taXQucmV2aXNpb24oKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
ICghcmV2aXNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICBs
ZXQgcGF0Y2ggPSBudWxsOwpAQCAtMzU1LDYgKzM2Niw0NCBAQCBjbGFzcyBDdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgcmV0dXJu
IGNvbW1pdFNldDsKICAgICB9CiAKKyAgICBhc3luYyBfZmV0Y2hDb21taXRzRm9yQ29uZmlndXJh
dGlvbihjb25maWd1cmF0aW9uTmFtZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9
IHRoaXMuX2NvbW1pdFNldE1hcFtjb25maWd1cmF0aW9uTmFtZV07CisgICAgICAgIGlmICghY29t
bWl0U2V0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IHNwZWNpZmllZFJl
dmlzaW9ucyA9IHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV07Cisg
ICAgICAgIGNvbnN0IGZldGNoZWRDb21taXRzID0gdGhpcy5fZmV0Y2hlZENvbW1pdHNbY29uZmln
dXJhdGlvbk5hbWVdOworICAgICAgICBjb25zdCBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5
ID0gdGhpcy5faW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeUJ5Q29uZmlndXJhdGlvbltjb25m
aWd1cmF0aW9uTmFtZV07CisKKyAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShj
b21taXRTZXQucmVwb3NpdG9yaWVzKCkpLm1hcCgocmVwb3NpdG9yeSkgPT4geworICAgICAgICAg
ICAgY29uc3QgcmV2aXNpb24gPSBjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9z
aXRvcnkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVSZXZpc2lvbihyZXBvc2l0
b3J5LCByZXZpc2lvbiwgc3BlY2lmaWVkUmV2aXNpb25zLCBpbnZhbGlkUmV2aXNpb25Gb3JSZXBv
c2l0b3J5LCBmZXRjaGVkQ29tbWl0cyk7CisgICAgICAgIH0pKTsKKworICAgICAgICBjb25zdCBs
YXRlc3RDb21taXRTZXQgPSB0aGlzLl9jb21taXRTZXRNYXBbY29uZmlndXJhdGlvbk5hbWVdOwor
ICAgICAgICBpZiAoY29tbWl0U2V0ICE9IGxhdGVzdENvbW1pdFNldCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICB9CisKKyAgICBhc3lu
YyBfcmVzb2x2ZVJldmlzaW9uKHJlcG9zaXRvcnksIHJldmlzaW9uLCBzcGVjaWZpZWRSZXZpc2lv
bnMsIGludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnksIGZldGNoZWRDb21taXRzKQorICAgIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdHMgPSBhd2FpdCBDb21taXRM
b2cuZmV0Y2hGb3JTaW5nbGVSZXZpc2lvbihyZXBvc2l0b3J5LCByZXZpc2lvbik7CisgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChjb21taXRzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBpZiAo
cmV2aXNpb24gIT0gc3BlY2lmaWVkUmV2aXNpb25zLmdldChyZXBvc2l0b3J5KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5
LmRlbGV0ZShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGZldGNoZWRDb21taXRzLnNldChyZXBv
c2l0b3J5LCBjb21taXRzWzBdKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAg
ICAgIGlmIChyZXZpc2lvbiAhPSBzcGVjaWZpZWRSZXZpc2lvbnMuZ2V0KHJlcG9zaXRvcnkpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGludmFsaWRSZXZpc2lvbkZvclJl
cG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKKyAgICAgICAgICAgIGZldGNoZWRD
b21taXRzLmRlbGV0ZShyZXBvc2l0b3J5KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIF9yZW5k
ZXJSZXBvc2l0b3J5UGFuZXModHJpZ2dlcmFibGUsIGVycm9yLCBwbGF0Zm9ybSwgcmVwb3NpdG9y
eUdyb3VwQnlDb25maWd1cmF0aW9uLCBzaG93Q29tcGFyaXNvbikKICAgICB7CiAgICAgICAgIHRo
aXMuY29udGVudCgncmVwb3NpdG9yeS1jb25maWd1cmF0aW9uLWVycm9yLXBhbmUnKS5zdHlsZS5k
aXNwbGF5ID0gZXJyb3IgPyBudWxsIDogJ25vbmUnOwpAQCAtNDE0LDcgKzQ2Myw2IEBAIGNsYXNz
IEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2Ugewog
ICAgIF9idWlsZFJldmlzaW9uVGFibGUoY29uZmlndXJhdGlvbk5hbWUsIHJlcG9zaXRvcnlHcm91
cHMsIGN1cnJlbnRHcm91cCwgcGxhdGZvcm0sIHJlcXVpcmVkUmVwb3NpdG9yaWVzLCBvcHRpb25h
bFJlcG9zaXRvcnlMaXN0LCBhbHdheXNBY2NlcHRzQ3VzdG9tUm9vdHMpCiAgICAgewogICAgICAg
ICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwotICAgICAgICBj
b25zdCBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCiAgICAgICAgIGNvbnN0IGN1
c3RvbVJvb3RzVEJvZHkgPSBlbGVtZW50KCd0Ym9keScsIFsKICAgICAgICAgICAgIGVsZW1lbnQo
J3RyJywgWwpAQCAtNDUzLDYgKzUwMSwyMyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25m
aWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICldOwogICAgIH0K
IAorICAgIF9idWlsZFRlc3RhYmlsaXR5TGlzdChjb21taXRTZXQsIGNvbmZpZ3VyYXRpb25OYW1l
LCBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5KQorICAgIHsKKyAgICAgICAgY29uc3QgZWxl
bWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKyAgICAgICAgY29uc3QgZW50cmll
cyA9IFtdOworICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnkgb2YgY29tbWl0U2V0ID8gY29t
bWl0U2V0LnJlcG9zaXRvcmllcygpIDogW10pIHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9
IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRpb25OYW1lXS5nZXQocmVwb3NpdG9yeSk7
CisgICAgICAgICAgICBpZiAoY29tbWl0ICYmIGNvbW1pdC50ZXN0YWJpbGl0eSgpICYmICFpbnZh
bGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LmhhcyhyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAg
ICBlbnRyaWVzLnB1c2goZWxlbWVudCgnbGknLCBgJHtjb21taXQucmVwb3NpdG9yeSgpLm5hbWUo
KX0gLSAiJHtjb21taXQubGFiZWwoKX0iOiAke2NvbW1pdC50ZXN0YWJpbGl0eSgpfWApKTsKKyAg
ICAgICAgICAgIGlmIChpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LmhhcyhyZXBvc2l0b3J5
KSkKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goZWxlbWVudCgnbGknLCBgJHtyZXBvc2l0
b3J5Lm5hbWUoKX0gLSAiJHtpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LmdldChyZXBvc2l0
b3J5KX0iOiBJbnZhbGlkIHJldmlzaW9uYCkpOworICAgICAgICB9CisgICAgICAgIGlmICghZW50
cmllcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgcmV0dXJuIGVu
dHJpZXM7CisgICAgfQorCiAgICAgX2J1aWxkUmVwb3NpdG9yeUdyb3VwTGlzdChyZXBvc2l0b3J5
R3JvdXBzLCBjdXJyZW50R3JvdXAsIGNvbmZpZ3VyYXRpb25OYW1lKQogICAgIHsKICAgICAgICAg
Y29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKQEAgLTQ3Niw2ICs1
NDEsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21w
b25lbnRCYXNlIHsKICAgICAgICAgY2xvbmVbY29uZmlndXJhdGlvbk5hbWVdID0gZ3JvdXA7CiAg
ICAgICAgIHRoaXMuX3JlcG9zaXRvcnlHcm91cEJ5Q29uZmlndXJhdGlvbiA9IGNsb25lOwogICAg
ICAgICB0aGlzLl91cGRhdGVDb21taXRTZXRNYXAoKTsKKyAgICAgICAgdGhpcy5fZmV0Y2hDb21t
aXRzRm9yQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uTmFtZSk7CiAgICAgICAgIHRoaXMuZW5x
dWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCkBAIC00ODMsMTAgKzU0OSwxOSBAQCBjbGFzcyBDdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICB7
CiAgICAgICAgIGNvbnN0IHJldmlzaW9uID0gdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zW2NvbmZp
Z3VyYXRpb25OYW1lXS5nZXQocmVwb3NpdG9yeSkgfHwgJyc7CiAgICAgICAgIGNvbnN0IGVsZW1l
bnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIGxldCBzY2hlZHVsZWRV
cGRhdGUgPSBudWxsOwogICAgICAgICBjb25zdCBpbnB1dCA9IGVsZW1lbnQoJ2lucHV0Jywge3Zh
bHVlOiByZXZpc2lvbiwgb25pbnB1dDogKCkgPT4gewogICAgICAgICAgICAgdW5tb2RpZmllZElu
cHV0ID0gbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1
cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGlucHV0LnZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnN0IHJldmlzaW9uVG9GZXRjaCA9IGlucHV0LnZhbHVlOworICAgICAgICAgICAgdGhpcy5fc3Bl
Y2lmaWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgcmV2aXNp
b25Ub0ZldGNoKTsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOworICAg
ICAgICAgICAgaWYgKHNjaGVkdWxlZFVwZGF0ZSkKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVv
dXQoc2NoZWR1bGVkVXBkYXRlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFVwZGF0ZSA9IHNldFRp
bWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGlmIChyZXZpc2lvblRvRmV0Y2ggPT0gaW5w
dXQudmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZldGNoQ29tbWl0c0ZvckNvbmZp
Z3VyYXRpb24oY29uZmlndXJhdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlZFVw
ZGF0ZSA9IG51bGw7CisgICAgICAgICAgICB9LCAxMDApOwogICAgICAgICB9fSk7CiAgICAgICAg
IGxldCB1bm1vZGlmaWVkSW5wdXQgPSBpbnB1dDsKIApAQCAtNDk0LDcgKzU2OSw3IEBAIGNsYXNz
IEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2Ugewog
ICAgICAgICAgICAgQ29tbWl0TG9nLmZldGNoTGF0ZXN0Q29tbWl0Rm9yUGxhdGZvcm0ocmVwb3Np
dG9yeSwgcGxhdGZvcm0pLnRoZW4oKGNvbW1pdCkgPT4gewogICAgICAgICAgICAgICAgIGlmIChj
b21taXQgJiYgdW5tb2RpZmllZElucHV0KSB7CiAgICAgICAgICAgICAgICAgICAgIHVubW9kaWZp
ZWRJbnB1dC52YWx1ZSA9IGNvbW1pdC5yZXZpc2lvbigpOwotICAgICAgICAgICAgICAgICAgICB0
aGlzLl9mZXRjaGVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwg
Y29tbWl0LnJldmlzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaGVkQ29t
bWl0c1tjb25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0pOwpAQCAtNTIxLDYgKzU5Niw3IEBAIGNsYXNzIEN1c3RvbUFuYWx5
c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAg
PHNlY3Rpb24gaWQ9ImJhc2VsaW5lLWNvbmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgog
ICAgICAgICAgICAgICAgIDxoMj4zLiBDb25maWd1cmUgQmFzZWxpbmU8L2gyPgogICAgICAgICAg
ICAgICAgIDx0YWJsZSBpZD0iYmFzZWxpbmUtcmV2aXNpb24tdGFibGUiIGNsYXNzPSJyZXZpc2lv
bi10YWJsZSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICA8dWwgaWQ9ImJhc2VsaW5lLXRlc3Rh
YmlsaXR5Ij48L3VsPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgPHNlY3Rp
b24gaWQ9InNwZWNpZnktY29tcGFyaXNvbi1wYW5lIiBjbGFzcz0icGFuZSI+CiAgICAgICAgICAg
ICAgICAgPGJ1dHRvbiBpZD0ic3BlY2lmeS1jb21wYXJpc29uLWJ1dHRvbiI+Q29uZmlndXJlIHRv
IENvbXBhcmU8L2J1dHRvbj4KQEAgLTUyOCw2ICs2MDQsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIDxz
ZWN0aW9uIGlkPSJjb21wYXJpc29uLWNvbmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgog
ICAgICAgICAgICAgICAgIDxoMj40LiBDb25maWd1cmUgQ29tcGFyaXNvbjwvaDI+CiAgICAgICAg
ICAgICAgICAgPHRhYmxlIGlkPSJjb21wYXJpc29uLXJldmlzaW9uLXRhYmxlIiBjbGFzcz0icmV2
aXNpb24tdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICAgICAgPHVsIGlkPSJjb21wYXJpc29u
LXRlc3RhYmlsaXR5Ij48L3VsPgogICAgICAgICAgICAgPC9zZWN0aW9uPmA7CiAgICAgfQogCkBA
IC02NzQsNiArNzUxLDEyIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBl
eHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVt
OwogICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAjYmFzZWxpbmUtdGVzdGFiaWxpdHkgbGksCisgICAgICAgICAgICAjY29t
cGFyaXNvbi10ZXN0YWJpbGl0eSBsaSB7CisgICAgICAgICAgICAgICAgY29sb3I6ICNjMzM7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDIwcmVtOworICAgICAgICAgICAgfQogYDsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVu
dHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpz
CmluZGV4IGExY2QyZGMzZTM3OTdjZmRhOWZmYjYwMjBiMDhhMDJlYWI2MmUwZDIuLjgwMWQ0ZjBk
OTkxY2NmNjRiYWQyMTFlYzNiZDk0MmYxNTBjY2IxMWIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91
cC1mb3JtLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCkBAIC0xMzUsNyArMTM1LDI5IEBA
IGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsK
ICAgICAgICAgICAgIGVsZW1lbnQoJ3RoZWFkJywKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0
cicsCiAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgJ1Jl
cG9zaXRvcnknKSwgY29tbWl0U2V0TGFiZWxzLm1hcCgobGFiZWwpID0+IGVsZW1lbnQoJ3RkJywg
e2NvbHNwYW46IGNvbW1pdFNldExhYmVscy5sZW5ndGggKyAxfSwgbGFiZWwpKSwgZWxlbWVudCgn
dGQnKV0pKSwKLSAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3Np
dG9yeUxpc3QsIGNvbW1pdFNldE1hcCwgb3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRo
aXMuX2hhc0luY29tcGxldGVPd25lZFJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1h
cCldKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9y
eUxpc3QsIGNvbW1pdFNldE1hcCwgb3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMu
X2hhc0luY29tcGxldGVPd25lZFJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCks
CisgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFw
KV0pOworICAgIH0KKworICAgIF9jb25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFw
KQorICAgIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxl
bWVudDsKKworICAgICAgICBsZXQgaGFzQ29tbWl0V2l0aFRlc3RhYmlsaXR5ID0gZmFsc2U7Cisg
ICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSBBcnJheS5mcm9tKGNvbW1pdFNldE1hcC52YWx1ZXMo
KSk7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGNvbW1pdFNldHMpCisgICAgICAg
ICAgICBoYXNDb21taXRXaXRoVGVzdGFiaWxpdHkgfD0gISFjb21taXRTZXQuY29tbWl0c1dpdGhU
ZXN0YWJpbGl0eSgpOworICAgICAgICBpZiAoIWhhc0NvbW1pdFdpdGhUZXN0YWJpbGl0eSkKKyAg
ICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBjb25zdCB0ZXN0YWJpbGl0eVJvd3MgPSBb
XTsKKyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgY29tbWl0U2V0TWFwLnZhbHVlcygp
KSB7CisgICAgICAgICAgICBjb25zdCByb3dzID0gY29tbWl0U2V0LmNvbW1pdHNXaXRoVGVzdGFi
aWxpdHkoKS5tYXAoKGNvbW1pdCkgPT4KKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0cicsIHtj
bGFzczogJ3Rlc3RhYmlsaXR5J30sIGAke2NvbW1pdC5yZXBvc2l0b3J5KCkubmFtZSgpfSAtICR7
Y29tbWl0LmxhYmVsKCl9OiAke2NvbW1pdC50ZXN0YWJpbGl0eSgpfWApKTsKKyAgICAgICAgICAg
IHRlc3RhYmlsaXR5Um93cy5wdXNoKGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IGNvbW1pdFNldE1h
cC5zaXplICsgMX0sIHJvd3MpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBlbGVtZW50
KCd0Ym9keScsIGVsZW1lbnQoJ3RyJywgW2VsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9KSwgdGVz
dGFiaWxpdHlSb3dzLCBlbGVtZW50KCd0ZCcpXSkpOwogICAgIH0KIAogICAgIF9jb25zdHJ1Y3RU
YWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0LCBjb21taXRTZXRNYXAsIG93bmVkUmVwb3NpdG9y
aWVzQnlSZXBvc2l0b3J5LCBoYXNJbmNvbXBsZXRlT3duZWRSZXBvc2l0b3J5LCB1bmN1c3RvbWl6
ZWRDb21taXRTZXRNYXApCkBAIC0yNTUsOCArMjc3LDggQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVz
dEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICAgICAgb25jaGFuZ2U6
ICgpID0+IHsKICAgICAgICAgICAgICAgICBpZiAob3duZXJSZXBvc2l0b3J5KQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjb21taXRTZXRNYXAuZ2V0KGNv
bHVtbkxhYmVsKS51cGRhdGVSZXZpc2lvbkZvck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCBy
ZXZpc2lvbkVkaXRvci52YWx1ZSkuY2F0Y2goCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TWFw
LmdldChjb2x1bW5MYWJlbCkudXBkYXRlUmV2aXNpb25Gb3JPd25lclJlcG9zaXRvcnkocmVwb3Np
dG9yeSwgcmV2aXNpb25FZGl0b3IudmFsdWUpLnRoZW4oCisgICAgICAgICAgICAgICAgICAgICgp
ID0+IHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCksCiAgICAgICAgICAgICAgICAgICAgICgpID0+IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KGAiJHtyZXZpc2lvbkVkaXRvci52YWx1ZX0i
IGRvZXMgbm90IGV4aXN0IGluICIke3JlcG9zaXRvcnkubmFtZSgpfSIuYCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXZpc2lvbkVkaXRvci52YWx1ZSA9IHJldmlzaW9uOwpAQCAtMjc4LDYg
KzMwMCw3IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3Jv
dXBGb3JtIHsKICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25FZGl0b3IudmFsdWUgPSB1bmN1
c3RvbWl6ZWRDb21taXQgPyB1bmN1c3RvbWl6ZWRDb21taXQucmV2aXNpb24oKSA6ICcnOwogICAg
ICAgICAgICAgICAgICAgICBpZiAodW5jdXN0b21pemVkQ29tbWl0ICYmIHVuY3VzdG9taXplZENv
bW1pdC5vd25lckNvbW1pdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3duZXJS
ZXZpc2lvbk1hcC5nZXQoY29sdW1uTGFiZWwpLnNldChyZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRD
b21taXQub3duZXJDb21taXQoKS5yZXZpc2lvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAgICAgICAgICAgICB9fSk7CiAgICAgICAgICAgICBu
b2Rlcy5wdXNoKGVsZW1lbnQoJ3RkJywgZWxlbWVudCgnbGFiZWwnLCBbcmFkaW9CdXR0b24sIGxh
YmVsVG9DaG9vc2VdKSkpOwogICAgICAgICB9CkBAIC0zMzYsNiArMzU5LDExIEBAIGNsYXNzIEN1
c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAg
ICAgICNub3RpZnktb24tY29tcGxldGlvbi1jaGVja2JveCB7CiAgICAgICAgICAgICAgICAgbWFy
Z2luLWxlZnQ6IDAuNHJlbTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI2N1c3RvbS10
YWJsZSB0ci50ZXN0YWJpbGl0eSB7CisgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsK
KyAgICAgICAgICAgICAgICBjb2xvcjogI2MzMzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvY29tbWl0LXNldC5qcwppbmRleCA0NDViMjcwMTdmMjQ4ZDllNWFjNGMxM2I4
NzU1YTBhYWQ1NzIyY2E0Li5iYjViN2YxOThjZWYzOWExNGQzM2ZmYTE4MDNkNjkyZjY2N2FhOGZh
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9j
b21taXQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL2NvbW1pdC1zZXQuanMKQEAgLTM4OSw3ICszODksNyBAQCBjbGFzcyBJbnRlcm1lZGlhdGVD
b21taXRTZXQgewogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZmV0Y2hpbmdQcm9taXNlcyk7
CiAgICAgfQogCi0gICAgY29tbWl0c1dpdGhUZXN0YWJpbGl0eVdhcm5pbmdzKCkgeyByZXR1cm4g
dGhpcy5jb21taXRzKCkuZmlsdGVyKChjb21taXQpID0+ICEhY29tbWl0LnRlc3RhYmlsaXR5V2Fy
bmluZygpKTsgfQorICAgIGNvbW1pdHNXaXRoVGVzdGFiaWxpdHkoKSB7IHJldHVybiB0aGlzLmNv
bW1pdHMoKS5maWx0ZXIoKGNvbW1pdCkgPT4gISFjb21taXQudGVzdGFiaWxpdHkoKSk7IH0KICAg
ICBjb21taXRzKCkgeyByZXR1cm4gIEFycmF5LmZyb20odGhpcy5fY29tbWl0QnlSZXBvc2l0b3J5
LnZhbHVlcygpKTsgfQogCiAgICAgX2ZldGNoQ29tbWl0TG9nQW5kT3duZWRDb21taXRzKHJlcG9z
aXRvcnksIHJldmlzaW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358860</attachid>
            <date>2019-01-10 18:56:02 -0800</date>
            <delta_ts>2019-01-10 23:05:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192972-20190110185601.patch</filename>
            <type>text/plain</type>
            <size>32903</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDg1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwOTM2OTA5NzYxYTI0ZjE3ZGNmM2FhOWI3YTQyZWUxNGQyNGJlNTA1Li5mZGZiYzQ5M2Qy
MmZlMGIzMjkyYzFjOWY0OGZiNzhhMjE0MGI2OWQ0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0xMi0yMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVUkgaW4gYW5hbHlzaXMgdGFzayBwYWdlIHRvIHNo
b3cgY29tbWl0IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyOTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFVJIGluIGN1c3RvbSBhbmFseXNpcyB0YXNr
IGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbWl6YWJsZSB0ZXN0IGdyb3VwIGZvcm0gdG8gc2hvdyB0
ZXN0YWJpbGl0eSBpbmZvcm1hdGlvbi4KKyAgICAgICAgRml4IGEgYnVnIGluICdDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IuX3VwZGF0ZUNvbW1pdFNldE1hcCcgdGhhdCAnY3VycmVudENv
bXBhcmlzb24nIGlzIGluY29ycmVjdGx5IHNldC4KKworICAgICAgICAqIGJyb3dzZXItdGVzdHMv
Y3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXRlc3RzLmpzOiBBZGRlZCBhIHVuaXQg
dGVzdCBmb3IgdGhlIGJ1ZyBpbgorICAgICAgICAnQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yLl91cGRhdGVDb21taXRTZXRNYXAnLgorICAgICAgICBBZGRlZCBhIHVuaXQgdGVzdCB0byBt
YWtlIHN1cmUgJ0N1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcicgc3RpbGwgd29ya3Mgd2hl
biBjb21taXQgZmV0Y2hpbmcgbmV2ZXIgcmV0dXJucy4KKyAgICAgICAgKiBicm93c2VyLXRlc3Rz
L2luZGV4Lmh0bWw6IEltcG9ydGVkICcnY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9y
LXRlc3RzLmpzJy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlz
aXMtdGFzay1jb25maWd1cmF0b3IuanM6IEFkZGVkIFVJIHRvIHNob3cgdGVzdGFiaWxpdHkgaW5m
b3JtYXRpb24uCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IpOgorICAg
ICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fZGlkVXBkYXRl
U2VsZWN0ZWRQbGF0Zm9ybXMpOiBTaG91bGQgcmVzZXQgY29tbWl0IHNldCBtYXAgcmVsYXRlZCBm
ZWlsZCBpZiB1c2VyIGhhcworICAgICAgICBuZXZlciB0b3VjaGVkIGFueSByZXZpc2lvbiBmaWVs
ZC4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUucmVu
ZGVyKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUu
X3VwZGF0ZUNvbW1pdFNldE1hcCk6IEZpeGVkIGEgYnVnIHRoYXQgJ2N1cnJlbnRDb21wYXJpc29u
JyBpcyBpbmNvcnJlY3RseSBzZXQuCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3IucHJvdG90eXBlLl9jb21wdXRlQ29tbWl0U2V0KToKKyAgICAgICAgKEN1c3RvbUFuYWx5
c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuYXN5bmMuX2ZldGNoQ29tbWl0c0ZvckNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3Rv
dHlwZS5hc3luYy5fcmVzb2x2ZVJldmlzaW9uKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFz
a0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2J1aWxkUmV2aXNpb25UYWJsZSk6CisgICAgICAgIChD
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZFRlc3RhYmlsaXR5
TGlzdCk6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBl
Ll9zZWxlY3RSZXBvc2l0b3J5R3JvdXApOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRSZXZpc2lvbklucHV0KToKKyAgICAgICAgKEN1c3Rv
bUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jc3NUZW1wbGF0ZSk6CisgICAgICAgICogcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qczogQWRkZWQgVUkg
dG8gc2hvdyB0ZXN0YWJpbGl0eSBpbmZvcm1hdGlvbi4KKyAgICAgICAgKEN1c3RvbWl6YWJsZVRl
c3RHcm91cEZvcm0ucHJvdG90eXBlLl9yZW5kZXJDdXN0b21SZXZpc2lvblRhYmxlKToKKyAgICAg
ICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJvdG90eXBlLl9jb25zdHJ1Y3RUZXN0YWJp
bGl0eVJvd3MuKToKKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJvdG90eXBl
Ll9jb25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MpOgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdy
b3VwRm9ybS5wcm90b3R5cGUuX2NvbnN0cnVjdFJldmlzaW9uUmFkaW9CdXR0b25zKToKKyAgICAg
ICAgQ2hhbmdpbmcgZWl0aGVyIHJldmlzaW9uIGVkaXRvciBvciByYWRpbyBidXR0b24gc2hvdWxk
IHRyaWdnZXIgYSByZS1yZW5kZXIgYXMgdGVzdGFiaWxpdHkKKyAgICAgICAgaW5mb3JtYXRpb24g
Zm9yIHVwZGF0ZWQgcmV2aXNpb24gbWF5IGNoYW5nZS4KKyAgICAgICAgKEN1c3RvbWl6YWJsZVRl
c3RHcm91cEZvcm0uY3NzVGVtcGxhdGUpOgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29t
bWl0LXNldC5qczoKKyAgICAgICAgKEludGVybWVkaWF0ZUNvbW1pdFNldC5wcm90b3R5cGUuY29t
bWl0c1dpdGhUZXN0YWJpbGl0eSk6IFJlbmFtZWQgZnJvbSAnY29tbWl0c1dpdGhUZXN0YWJpbGl0
eVdhcm5pbmdzJy4KKyAgICAgICAgKEludGVybWVkaWF0ZUNvbW1pdFNldC5wcm90b3R5cGUuY29t
bWl0c1dpdGhUZXN0YWJpbGl0eVdhcm5pbmdzKTogRGVsZXRlZC4KKwogMjAxOC0xMi0xNCAgRGV3
ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgY29tbWl0cyB0
YWJsZSB0byBjb250YWluIHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvY3VzdG9tLWFuYWx5c2lzLXRhc2st
Y29uZmlndXJhdG9yLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXIt
dGVzdHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXRlc3RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI3MWM5ZTdhODRhNjkxZTFkNTUzZmJhY2JjYWUxMjg2NjllYWJiNDIKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jdXN0b20tYW5h
bHlzaXMtdGFzay1jb25maWd1cmF0b3ItdGVzdHMuanMKQEAgLTAsMCArMSwyMzAgQEAKK2Rlc2Ny
aWJlKCdDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3InLCAoKSA9PiB7CisgICAgY29uc3Qg
c2NyaXB0cyA9IFsnaW5zdHJ1bWVudGF0aW9uLmpzJywgJy4uL3NoYXJlZC9jb21tb24tY29tcG9u
ZW50LWJhc2UuanMnLCAnY29tcG9uZW50cy9iYXNlLmpzJywgJ21vZGVscy9kYXRhLW1vZGVsLmpz
JywgJ21vZGVscy9jb21taXQtbG9nLmpzJywKKyAgICAgICAgJ21vZGVscy9jb21taXQtc2V0Lmpz
JywgJ21vZGVscy9yZXBvc2l0b3J5LmpzJywgJ21vZGVscy9tZXRyaWMuanMnLCAnbW9kZWxzL3Ry
aWdnZXJhYmxlLmpzJywgJ21vZGVscy90ZXN0LmpzJywgJ21vZGVscy9wbGF0Zm9ybS5qcycsICdj
b21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5qcycsCisgICAgICAgICdjb21wb25lbnRzL2N1c3Rv
bS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcycsICdjb21wb25lbnRzL2luc3RhbnQtZmls
ZS11cGxvYWRlci5qcycsICdsYXppbHktZXZhbHVhdGVkLWZ1bmN0aW9uLmpzJ107CisKKyAgICBh
c3luYyBmdW5jdGlvbiBjcmVhdGVDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3JXaXRoQ29u
dGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgYXdhaXQgY29udGV4dC5pbXBvcnRTY3JpcHRz
KHNjcmlwdHMsICdDb21wb25lbnRCYXNlJywgJ0RhdGFNb2RlbE9iamVjdCcsICdSZXBvc2l0b3J5
JywgJ0NvbW1pdExvZycsICdQbGF0Zm9ybScsICdUZXN0JywgJ01ldHJpYycsICdUcmlnZ2VyYWJs
ZScsCisgICAgICAgICAgICAnVHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAnLCAnQ3VzdG9tQ29t
bWl0U2V0JywgJ0N1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcicsICdNb2NrUmVtb3RlQVBJ
JywgJ0xhemlseUV2YWx1YXRlZEZ1bmN0aW9uJyk7CisgICAgICAgIGNvbnN0IGN1c3RvbUFuYWx5
c2lzVGFza0NvbmZpZ3VyYXRvciA9IG5ldyBjb250ZXh0LnN5bWJvbHMuQ3VzdG9tQW5hbHlzaXNU
YXNrQ29uZmlndXJhdG9yOworICAgICAgICBjb250ZXh0LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmVsZW1lbnQoKSk7CisgICAgICAgIHJl
dHVybiBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3I7CisgICAgfQorCisgICAgYXN5bmMg
ZnVuY3Rpb24gc2xlZXAodGltZW91dCkKKyAgICB7CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgdGltZW91dCkpOworICAg
IH0KKworICAgIGl0KCdTaG91bGQgYmUgYWJsZSB0byBzY2hlZHVsZSBBL0IgdGVzdCBldmVuIGZl
dGNoaW5nIGNvbW1pdCBpbmZvcm1hdGlvbiBuZXZlciByZXR1cm5zJywgYXN5bmMgKCkgPT4gewor
ICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICBj
b25zdCBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgPSBhd2FpdCBjcmVhdGVDdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3JXaXRoQ29udGV4dChjb250ZXh0KTsKKworICAgICAgICBj
b25zdCB0ZXN0ID0gbmV3IGNvbnRleHQuc3ltYm9scy5UZXN0KDEsIHtuYW1lOiAnU3BlZWRvbWV0
ZXInfSk7CisgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gbmV3IGNvbnRleHQuc3ltYm9scy5QbGF0
Zm9ybSgxLCB7CisgICAgICAgICAgICBuYW1lOiAnTW9qYXZlJywKKyAgICAgICAgICAgIG1ldHJp
Y3M6IFsKKyAgICAgICAgICAgICAgICBuZXcgY29udGV4dC5zeW1ib2xzLk1ldHJpYygxLCB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBbGxvY2F0aW9uJywKKyAgICAgICAgICAgICAgICAg
ICAgYWdncmVnYXRvcjogJ0FyaXRobWV0aWMnLAorICAgICAgICAgICAgICAgICAgICB0ZXN0Cisg
ICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBsYXN0TW9kaWZp
ZWRCeU1ldHJpYzogRGF0ZS5ub3coKSwKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IHJlcG9z
aXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24oMSwge25h
bWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3Vw
ID0gbmV3IGNvbnRleHQuc3ltYm9scy5UcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCgxLCB7cmVw
b3NpdG9yaWVzOiBbe3JlcG9zaXRvcnl9XX0pOworICAgICAgICBuZXcgY29udGV4dC5zeW1ib2xz
LlRyaWdnZXJhYmxlKDEsIHsKKyAgICAgICAgICAgIG5hbWU6ICd0ZXN0LXRyaWdnZXJhYmxlJywK
KyAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLAorICAgICAgICAgICAgcmVwb3NpdG9yeUdy
b3VwczogW3RyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwXSwKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25zOiBbe3Rlc3QsIHBsYXRmb3JtfV0sCisgICAgICAgIH0pOworICAgICAgICBjdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3Iuc2VsZWN0VGVzdHMoW3Rlc3RdKTsKKyAgICAgICAgY3Vz
dG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFBsYXRmb3JtKHBsYXRmb3JtKTsKKwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworCisgICAg
ICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVz
dHM7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICBl
eHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRzLzEvbGF0ZXN0P3BsYXRm
b3JtPTEnKTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVqZWN0KCk7CisKKyAgICAgICAgY3VzdG9t
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2Jhc2VsaW5lLXJldmlzaW9uLXRhYmxl
JykucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9ICcxMjMnOworICAgICAgICBjdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY29udGVudCgnYmFzZWxpbmUtcmV2aXNpb24tdGFibGUn
KS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcp
KTsKKyAgICAgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxl
bmd0aCkudG8uYmUoMik7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0c1sxXS51cmwpLnRvLmJlKCcv
YXBpL2NvbW1pdHMvMS8xMjMnKTsKKworICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1
cmF0b3IuX2NvbmZpZ3VyZUNvbXBhcmlzb24oKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvckNvbXBv
bmVudHNUb1JlbmRlcihjb250ZXh0KTsKKworICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25m
aWd1cmF0b3IuY29udGVudCgnY29tcGFyaXNvbi1yZXZpc2lvbi10YWJsZScpLnF1ZXJ5U2VsZWN0
b3IoJ2lucHV0JykudmFsdWUgPSAnNDU2JzsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLmNvbnRlbnQoJ2NvbXBhcmlzb24tcmV2aXNpb24tdGFibGUnKS5xdWVyeVNlbGVj
dG9yKCdpbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTsKKyAgICAgICAg
YXdhaXQgc2xlZXAoMTAwKTsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUo
Myk7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0c1syXS51cmwpLnRvLmJlKCcvYXBpL2NvbW1pdHMv
MS80NTYnKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXRzID0gY3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yLmNvbW1pdFNldHMoKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHMubGVu
Z3RoKS50by5iZSgyKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMF0ucmVwb3NpdG9yaWVz
KCkubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMF0ucmV2aXNp
b25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKS50by5iZSgnMTIzJyk7CisgICAgICAgIGV4cGVj
dChjb21taXRTZXRzWzFdLnJlcG9zaXRvcmllcygpLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAg
IGV4cGVjdChjb21taXRTZXRzWzFdLnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSku
dG8uYmUoJzQ1NicpOworICAgIH0pOworCisgICAgaXQoJ1Nob3VsZCBub3QgdXBkYXRlIGNvbW1p
dFNldE1hcCBpZiBiYXNlbGluZSBpcyBzZXQgYW5kIHVubW9kaWZpZWQgYnV0IGNvbXBhcmlzb24g
aXMgbnVsbCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93
c2luZ0NvbnRleHQoKTsKKyAgICAgICAgY29uc3QgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yID0gYXdhaXQgY3JlYXRlQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yV2l0aENvbnRl
eHQoY29udGV4dCk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihj
b250ZXh0KTsKKyAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvbnRleHQuc3ltYm9scy5SZXBv
c2l0b3J5LmVuc3VyZVNpbmdsZXRvbigxLCB7bmFtZTogJ1dlYktpdCd9KTsKKyAgICAgICAgY29u
c3QgY29tbWl0U2V0ID0gbmV3IGNvbnRleHQuc3ltYm9scy5DdXN0b21Db21taXRTZXQ7CisgICAg
ICAgIGNvbW1pdFNldC5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSwgJzIxMDk0
OCcsIG51bGwpOworICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuX2NvbW1p
dFNldE1hcCA9IHsnQmFzZWxpbmUnOiBjb21taXRTZXQsICdDb21wYXJpc29uJzogbnVsbH07Cisg
ICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fcmVwb3NpdG9yeUdyb3VwQnlD
b25maWd1cmF0aW9uWydCYXNlbGluZSddID0gbmV3IGNvbnRleHQuc3ltYm9scy5UcmlnZ2VyYWJs
ZVJlcG9zaXRvcnlHcm91cCgxLCB7cmVwb3NpdG9yaWVzOiBbe3JlcG9zaXRvcnl9XX0pOworICAg
ICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuX3NwZWNpZmllZFJldmlzaW9uc1sn
QmFzZWxpbmUnXS5zZXQocmVwb3NpdG9yeSwgJzIxMDk0OCcpOworCisgICAgICAgIGNvbnN0IG9y
aWdpbmFsQ29tbWl0U2V0ID0gY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLl9jb21taXRT
ZXRNYXA7CisgICAgICAgIGF3YWl0IGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fdXBk
YXRlQ29tbWl0U2V0TWFwKCk7CisKKyAgICAgICAgZXhwZWN0KGN1c3RvbUFuYWx5c2lzVGFza0Nv
bmZpZ3VyYXRvci5fY29tbWl0U2V0TWFwKS50by5iZShvcmlnaW5hbENvbW1pdFNldCk7CisgICAg
fSk7CisKKyAgICBpdCgnU2hvdWxkIHByZXNlcnZlIHVzZXIgc3BlY2lmaWVkIHJldmlzaW9uIGlm
IHVzZXIgaGFzIGV2ZXIgbW9kaWZpZWQgdGhlIHJldmlzaW9uJywgYXN5bmMgKCkgPT4geworCisg
ICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgIGNv
bnN0IGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciA9IGF3YWl0IGNyZWF0ZUN1c3RvbUFu
YWx5c2lzVGFza0NvbmZpZ3VyYXRvcldpdGhDb250ZXh0KGNvbnRleHQpOworCisgICAgICAgIGNv
bnN0IHRlc3QgPSBuZXcgY29udGV4dC5zeW1ib2xzLlRlc3QoMSwge25hbWU6ICdTcGVlZG9tZXRl
cid9KTsKKyAgICAgICAgY29uc3QgbW9qYXZlID0gbmV3IGNvbnRleHQuc3ltYm9scy5QbGF0Zm9y
bSgxLCB7CisgICAgICAgICAgICBuYW1lOiAnTW9qYXZlJywKKyAgICAgICAgICAgIG1ldHJpY3M6
IFsKKyAgICAgICAgICAgICAgICBuZXcgY29udGV4dC5zeW1ib2xzLk1ldHJpYygxLCB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICdBbGxvY2F0aW9uJywKKyAgICAgICAgICAgICAgICAgICAg
YWdncmVnYXRvcjogJ0FyaXRobWV0aWMnLAorICAgICAgICAgICAgICAgICAgICB0ZXN0CisgICAg
ICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBsYXN0TW9kaWZpZWRC
eU1ldHJpYzogRGF0ZS5ub3coKSwKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IGhpZ2hTaWVy
cmEgPSBuZXcgY29udGV4dC5zeW1ib2xzLlBsYXRmb3JtKDIsIHsKKyAgICAgICAgICAgIG5hbWU6
ICdIaWdoIFNpZXJyYScsCisgICAgICAgICAgICBtZXRyaWNzOiBbCisgICAgICAgICAgICAgICAg
bmV3IGNvbnRleHQuc3ltYm9scy5NZXRyaWMoMSwgeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAnQWxsb2NhdGlvbicsCisgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0b3I6ICdBcml0aG1l
dGljJywKKyAgICAgICAgICAgICAgICAgICAgdGVzdAorICAgICAgICAgICAgICAgIH0pCisgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgbGFzdE1vZGlmaWVkQnlNZXRyaWM6IERhdGUubm93KCks
CisgICAgICAgIH0pOworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gY29udGV4dC5zeW1ib2xz
LlJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDEsIHtuYW1lOiAnV2ViS2l0J30pOworICAgICAg
ICBjb25zdCB0cmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCA9IG5ldyBjb250ZXh0LnN5bWJvbHMu
VHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAoMSwge3JlcG9zaXRvcmllczogW3tyZXBvc2l0b3J5
fV19KTsKKyAgICAgICAgbmV3IGNvbnRleHQuc3ltYm9scy5UcmlnZ2VyYWJsZSgxLCB7CisgICAg
ICAgICAgICBuYW1lOiAndGVzdC10cmlnZ2VyYWJsZScsCisgICAgICAgICAgICBpc0Rpc2FibGVk
OiBmYWxzZSwKKyAgICAgICAgICAgIHJlcG9zaXRvcnlHcm91cHM6IFt0cmlnZ2VyYWJsZVJlcG9z
aXRvcnlHcm91cF0sCisgICAgICAgICAgICBjb25maWd1cmF0aW9uczogW3t0ZXN0LCBwbGF0Zm9y
bTogbW9qYXZlfSwge3Rlc3QsIHBsYXRmb3JtOiBoaWdoU2llcnJhfV0sCisgICAgICAgIH0pOwor
ICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3Iuc2VsZWN0VGVzdHMoW3Rlc3Rd
KTsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFBsYXRmb3Jt
KG1vamF2ZSk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250
ZXh0KTsKKworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVt
b3RlQVBJLnJlcXVlc3RzOworICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgx
KTsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzWzBdLnVybCkudG8uYmUoJy9hcGkvY29tbWl0cy8x
L2xhdGVzdD9wbGF0Zm9ybT0xJyk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlamVjdCgpOworCisg
ICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdiYXNlbGluZS1y
ZXZpc2lvbi10YWJsZScpLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnMTIzJzsKKyAg
ICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2Jhc2VsaW5lLXJl
dmlzaW9uLXRhYmxlJykucXVlcnlTZWxlY3RvcignaW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyBF
dmVudCgnaW5wdXQnKSk7CisgICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgICAgIGV4cGVj
dChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDIpOworICAgICAgICBleHBlY3QocmVxdWVzdHNbMV0u
dXJsKS50by5iZSgnL2FwaS9jb21taXRzLzEvMTIzJyk7CisKKyAgICAgICAgY3VzdG9tQW5hbHlz
aXNUYXNrQ29uZmlndXJhdG9yLl9jb25maWd1cmVDb21wYXJpc29uKCk7CisgICAgICAgIGF3YWl0
IHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisKKyAgICAgICAgY3VzdG9tQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2NvbXBhcmlzb24tcmV2aXNpb24tdGFibGUn
KS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlID0gJzQ1Nic7CisgICAgICAgIGN1c3RvbUFu
YWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdjb21wYXJpc29uLXJldmlzaW9uLXRhYmxl
JykucXVlcnlTZWxlY3RvcignaW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQn
KSk7CisgICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5s
ZW5ndGgpLnRvLmJlKDMpOworICAgICAgICBleHBlY3QocmVxdWVzdHNbMl0udXJsKS50by5iZSgn
L2FwaS9jb21taXRzLzEvNDU2Jyk7CisKKyAgICAgICAgbGV0IGNvbW1pdFNldHMgPSBjdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY29tbWl0U2V0cygpOworICAgICAgICBleHBlY3QoY29t
bWl0U2V0cy5sZW5ndGgpLnRvLmJlKDIpOworICAgICAgICBleHBlY3QoY29tbWl0U2V0c1swXS5y
ZXBvc2l0b3JpZXMoKS5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICBleHBlY3QoY29tbWl0U2V0
c1swXS5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpLnRvLmJlKCcxMjMnKTsKKyAg
ICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMV0ucmVwb3NpdG9yaWVzKCkubGVuZ3RoKS50by5iZSgx
KTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMV0ucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpKS50by5iZSgnNDU2Jyk7CisKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLnNlbGVjdFBsYXRmb3JtKGhpZ2hTaWVycmEpOworICAgICAgICBhd2FpdCB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworCisgICAgICAgIGNvbW1pdFNldHMgPSBj
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY29tbWl0U2V0cygpOworICAgICAgICBleHBl
Y3QoY29tbWl0U2V0cy5sZW5ndGgpLnRvLmJlKDIpOworICAgICAgICBleHBlY3QoY29tbWl0U2V0
c1swXS5yZXBvc2l0b3JpZXMoKS5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICBleHBlY3QoY29t
bWl0U2V0c1swXS5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpLnRvLmJlKCcxMjMn
KTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMV0ucmVwb3NpdG9yaWVzKCkubGVuZ3RoKS50
by5iZSgxKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNldHNbMV0ucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHJlcG9zaXRvcnkpKS50by5iZSgnNDU2Jyk7CisgICAgfSk7CisKKyAgICBpdCgnU2hvdWxk
IHJlc2V0IGNvbW1pdCBzZXQgaWYgdXNlciBoYXMgbmV2ZXIgbW9kaWZpZWQgdGhlIHJldmlzaW9u
JywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29u
dGV4dCgpOworICAgICAgICBjb25zdCBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgPSBh
d2FpdCBjcmVhdGVDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3JXaXRoQ29udGV4dChjb250
ZXh0KTsKKworICAgICAgICBjb25zdCB0ZXN0ID0gbmV3IGNvbnRleHQuc3ltYm9scy5UZXN0KDEs
IHtuYW1lOiAnU3BlZWRvbWV0ZXInfSk7CisgICAgICAgIGNvbnN0IG1vamF2ZSA9IG5ldyBjb250
ZXh0LnN5bWJvbHMuUGxhdGZvcm0oMSwgeworICAgICAgICAgICAgbmFtZTogJ01vamF2ZScsCisg
ICAgICAgICAgICBtZXRyaWNzOiBbCisgICAgICAgICAgICAgICAgbmV3IGNvbnRleHQuc3ltYm9s
cy5NZXRyaWMoMSwgeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQWxsb2NhdGlvbicsCisg
ICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0b3I6ICdBcml0aG1ldGljJywKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdAorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgbGFzdE1vZGlmaWVkQnlNZXRyaWM6IERhdGUubm93KCksCisgICAgICAgIH0pOworICAg
ICAgICBjb25zdCBoaWdoU2llcnJhID0gbmV3IGNvbnRleHQuc3ltYm9scy5QbGF0Zm9ybSgyLCB7
CisgICAgICAgICAgICBuYW1lOiAnSGlnaCBTaWVycmEnLAorICAgICAgICAgICAgbWV0cmljczog
WworICAgICAgICAgICAgICAgIG5ldyBjb250ZXh0LnN5bWJvbHMuTWV0cmljKDEsIHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogJ0FsbG9jYXRpb24nLAorICAgICAgICAgICAgICAgICAgICBh
Z2dyZWdhdG9yOiAnQXJpdGhtZXRpYycsCisgICAgICAgICAgICAgICAgICAgIHRlc3QKKyAgICAg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGxhc3RNb2RpZmllZEJ5
TWV0cmljOiBEYXRlLm5vdygpLAorICAgICAgICB9KTsKKyAgICAgICAgY29uc3QgcmVwb3NpdG9y
eSA9IGNvbnRleHQuc3ltYm9scy5SZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbigxLCB7bmFtZTog
J1dlYktpdCd9KTsKKyAgICAgICAgY29uc3QgdHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAgPSBu
ZXcgY29udGV4dC5zeW1ib2xzLlRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwKDEsIHtuYW1lOiAn
dGVzdC10cmlnZ2VyYWJsZScsIHJlcG9zaXRvcmllczogW3tyZXBvc2l0b3J5fV19KTsKKyAgICAg
ICAgbmV3IGNvbnRleHQuc3ltYm9scy5UcmlnZ2VyYWJsZSgxLCB7CisgICAgICAgICAgICBuYW1l
OiAndGVzdC10cmlnZ2VyYWJsZScsCisgICAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSwKKyAg
ICAgICAgICAgIHJlcG9zaXRvcnlHcm91cHM6IFt0cmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cF0s
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uczogW3t0ZXN0LCBwbGF0Zm9ybTogbW9qYXZlfSwg
e3Rlc3QsIHBsYXRmb3JtOiBoaWdoU2llcnJhfV0sCisgICAgICAgIH0pOworICAgICAgICBjdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3Iuc2VsZWN0VGVzdHMoW3Rlc3RdKTsKKyAgICAgICAg
Y3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFBsYXRmb3JtKG1vamF2ZSk7Cisg
ICAgICAgIGF3YWl0IHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisKKyAgICAg
ICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
czsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgIGV4
cGVjdChyZXF1ZXN0c1swXS51cmwpLnRvLmJlKCcvYXBpL2NvbW1pdHMvMS9sYXRlc3Q/cGxhdGZv
cm09MScpOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHtjb21taXRzOiBbeworICAgICAg
ICAgICAgaWQ6IDEsCisgICAgICAgICAgICByZXZpc2lvbjogJzEyMycsCisgICAgICAgICAgICBy
ZXBvc2l0b3J5OiByZXBvc2l0b3J5LmlkKCksCisgICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygp
LAorICAgICAgICB9XX0pOworICAgICAgICBhd2FpdCB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVy
KGNvbnRleHQpOworCisgICAgICAgIGV4cGVjdChjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IuY29udGVudCgnYmFzZWxpbmUtcmV2aXNpb24tdGFibGUnKS5xdWVyeVNlbGVjdG9yKCdpbnB1
dCcpLnZhbHVlKS50by5iZSgnMTIzJyk7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZp
Z3VyYXRvci5zZWxlY3RQbGF0Zm9ybShoaWdoU2llcnJhKTsKKworICAgICAgICBhd2FpdCB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICBleHBlY3QoY3VzdG9tQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2Jhc2VsaW5lLXJldmlzaW9uLXRhYmxlJyku
cXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSkudG8uYmUoJycpOworICAgIH0pOworfSk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKaW5kZXggMzU0MDQ3ZDNmOWZiMDZmNzc1ZGYwM2E0
YzQ1MzMyY2JkNDk4MDIxMy4uNjJmZTk5Mjc4MDI0YTFhY2JjYTNiZDQ5MGU0NWY2NTRlODZkNjEy
MSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5k
ZXguaHRtbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRl
eC5odG1sCkBAIC0yNyw2ICsyNyw3IEBAIG1vY2hhLnNldHVwKCdiZGQnKTsKIDxzY3JpcHQgc3Jj
PSJjaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Y29tbWl0LWxvZy12aWV3ZXItdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InRlc3Qt
Z3JvdXAtZm9ybS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY3VzdG9tLWFuYWx5
c2lzLXRhc2stY29uZmlndXJhdG9yLXRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJj
dXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLXRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJtYXJrdXAtcGFnZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idGVzdC1n
cm91cC1yZXN1bHQtcGFnZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRh
c2stY29uZmlndXJhdG9yLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9j
b21wb25lbnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcwppbmRleCA0M2Yz
NWI3Y2E1MjYxNDg1YzJmOGZlNGMyM2Y0ZjQ3YWEzMjQxZWY0Li4xZWY4Yzg1MjdhMWY3YmNkNGUy
ODgxYTgzMWMzOTk1ZWQ0MTc0ZTIwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9y
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9j
dXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3IuanMKQEAgLTcsMTYgKzcsMTggQEAgY2xh
c3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7
CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVzdHMgPSBbXTsKICAgICAgICAgdGhpcy5fdHJpZ2dl
cmFibGVQbGF0Zm9ybXMgPSBbXTsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSA9IG51
bGw7Ci0gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25OYW1lcyA9IFsnQmFzZWxpbmUnLCAnQ29t
cGFyaXNvbiddOwogICAgICAgICB0aGlzLl9zaG93Q29tcGFyaXNvbiA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9tb2RpZmllZElucHV0ID0gZmFsc2U7CisKICAgICAgICAgdGhpcy5fY29tbWl0U2V0
TWFwID0ge307CiAgICAgICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUn
OiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9OwogICAgICAgICB0aGlzLl9wYXRjaFVw
bG9hZGVycyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9Owog
ICAgICAgICB0aGlzLl9jdXN0b21Sb290VXBsb2FkZXJzID0geydCYXNlbGluZSc6IG51bGwsICdD
b21wYXJpc29uJzogbnVsbH07Ci0gICAgICAgIHRoaXMuX2ZldGNoZWRSZXZpc2lvbnMgPSB7J0Jh
c2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcgTWFwfTsKKyAgICAgICAgdGhpcy5f
ZmV0Y2hlZENvbW1pdHMgPSB7J0Jhc2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcg
TWFwfTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uID0geydC
YXNlbGluZSc6IG51bGwsICdDb21wYXJpc29uJzogbnVsbH07Ci0gICAgICAgIHRoaXMuX3VwZGF0
ZVRyaWdnZXJhYmxlTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3Vw
ZGF0ZVRyaWdnZXJhYmxlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9pbnZhbGlkUmV2aXNp
b25Gb3JSZXBvc2l0b3J5QnlDb25maWd1cmF0aW9uID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdD
b21wYXJpc29uJzogbmV3IE1hcH07CiAKKyAgICAgICAgdGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVM
YXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fdXBkYXRlVHJpZ2dlcmFi
bGUuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX3JlbmRlclRyaWdnZXJhYmxlVGVzdHNMYXpp
bHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVU
ZXN0cy5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9y
bXNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVyVHJpZ2dl
cmFibGVQbGF0Zm9ybXMuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX3JlbmRlclJlcG9zaXRv
cnlQYW5lc0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJS
ZXBvc2l0b3J5UGFuZXMuYmluZCh0aGlzKSk7CkBAIC01NSw5ICs1NywxNSBAQCBjbGFzcyBDdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKIAogICAg
IF9kaWRVcGRhdGVTZWxlY3RlZFBsYXRmb3JtcygpCiAgICAgewotICAgICAgICB0aGlzLl91cGRh
dGVDb21taXRTZXRNYXAoKTsKLQotICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAg
ICAgICBpZiAoIXRoaXMuX21vZGlmaWVkSW5wdXQpIHsKKyAgICAgICAgICAgIHRoaXMuX3NwZWNp
ZmllZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBN
YXB9OworICAgICAgICAgICAgdGhpcy5fZmV0Y2hlZENvbW1pdHMgPSB7J0Jhc2VsaW5lJzogbmV3
IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcgTWFwfTsKKyAgICAgICAgICAgIHRoaXMuX2ludmFsaWRS
ZXZpc2lvbkZvclJlcG9zaXRvcnlCeUNvbmZpZ3VyYXRpb24gPSB7J0Jhc2VsaW5lJzogbmV3IE1h
cCwgJ0NvbXBhcmlzb24nOiBuZXcgTWFwfTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1p
dFNldE1hcCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29t
bWl0U2V0TWFwKCk7CisgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgc2V0Q29tbWl0U2V0cyhiYXNlbGluZUNvbW1pdFNldCwgY29tcGFy
aXNvbkNvbW1pdFNldCkKQEAgLTE5MCw2ICsxOTgsMTMgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNU
YXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGNvbnN0IFt0
cmlnZ2VyYWJsZSwgZXJyb3JdID0gdGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVMYXppbHkuZXZhbHVh
dGUodGhpcy5fc2VsZWN0ZWRUZXN0cywgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSk7CiAKICAgICAg
ICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVzTGF6aWx5LmV2YWx1YXRlKHRyaWdnZXJhYmxl
LCBlcnJvciwgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSwgdGhpcy5fcmVwb3NpdG9yeUdyb3VwQnlD
b25maWd1cmF0aW9uLCB0aGlzLl9zaG93Q29tcGFyaXNvbik7CisKKyAgICAgICAgdGhpcy5yZW5k
ZXJSZXBsYWNlKHRoaXMuY29udGVudCgnYmFzZWxpbmUtdGVzdGFiaWxpdHknKSwKKyAgICAgICAg
ICAgIHRoaXMuX2J1aWxkVGVzdGFiaWxpdHlMaXN0KHRoaXMuX2NvbW1pdFNldE1hcFsnQmFzZWxp
bmUnXSwgJ0Jhc2VsaW5lJywgdGhpcy5faW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeUJ5Q29u
ZmlndXJhdGlvblsnQmFzZWxpbmUnXSkpOworICAgICAgICBpZiAodGhpcy5fc2hvd0NvbXBhcmlz
b24pIHsKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoJ2NvbXBh
cmlzb24tdGVzdGFiaWxpdHknKSwgdGhpcy5fYnVpbGRUZXN0YWJpbGl0eUxpc3QodGhpcy5fY29t
bWl0U2V0TWFwWydDb21wYXJpc29uJ10sICdDb21wYXJpc29uJywKKyAgICAgICAgICAgICAgICB0
aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5QnlDb25maWd1cmF0aW9uWydDb21wYXJp
c29uJ10pKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIF9yZW5kZXJUcmlnZ2VyYWJsZVRlc3Rz
KCkKQEAgLTMwNCwxMiArMzE5LDEyIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3Vy
YXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgbmV3Q29tcGFyaXNvbiA9
IG51bGw7CiAKICAgICAgICAgY29uc3QgY3VycmVudEJhc2VsaW5lID0gdGhpcy5fY29tbWl0U2V0
TWFwWydCYXNlbGluZSddOwotICAgICAgICBjb25zdCBjdXJyZW50Q29tcGFyaXNvbiA9IHRoaXMu
X2NvbW1pdFNldE1hcFsnQmFzZWxpbmUnXTsKLSAgICAgICAgaWYgKG5ld0Jhc2VsaW5lID09IGN1
cnJlbnRCYXNlbGluZSAmJiBuZXdDb21wYXJpc29uID09IGN1cnJlbnRDb21wYXJpc29uKQotICAg
ICAgICAgICAgcmV0dXJuOyAvLyBCb3RoIG9mIHRoZW0gYXJlIG51bGwuCisgICAgICAgIGNvbnN0
IGN1cnJlbnRDb21wYXJpc29uID0gdGhpcy5fY29tbWl0U2V0TWFwWydDb21wYXJpc29uJ107Cisg
ICAgICAgIGNvbnN0IGFyZUNvbW1pdFNldHNFcXVhbCA9IChjb21taXRTZXRBLCBjb21taXRTZXRC
KSA9PiBjb21taXRTZXRBID09IGNvbW1pdFNldEIgfHwgKGNvbW1pdFNldEEgJiYgY29tbWl0U2V0
QiAmJiBjb21taXRTZXRBLmVxdWFscyhjb21taXRTZXRCKSk7CisgICAgICAgIGNvbnN0IHNhbWVC
YXNlbGluZUNvbmZpZyA9IGFyZUNvbW1pdFNldHNFcXVhbChjdXJyZW50QmFzZWxpbmUsIG5ld0Jh
c2VsaW5lKTsKKyAgICAgICAgY29uc3Qgc2FtZUNvbXBhcmlzaW9uQ29uZmlnID0gYXJlQ29tbWl0
U2V0c0VxdWFsKGN1cnJlbnRDb21wYXJpc29uLCBuZXdDb21wYXJpc29uKTsKIAotICAgICAgICBp
ZiAobmV3QmFzZWxpbmUgJiYgY3VycmVudEJhc2VsaW5lICYmIG5ld0Jhc2VsaW5lLmVxdWFscyhj
dXJyZW50QmFzZWxpbmUpCi0gICAgICAgICAgICAmJiBuZXdDb21wYXJpc29uICYmIGN1cnJlbnRD
b21wYXJpc29uICYmIG5ld0NvbXBhcmlzb24uZXF1YWxzKGN1cnJlbnRDb21wYXJpc29uKSkKKyAg
ICAgICAgaWYgKHNhbWVCYXNlbGluZUNvbmZpZyAmJiBzYW1lQ29tcGFyaXNpb25Db25maWcpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fY29tbWl0U2V0TWFwID0geydCYXNl
bGluZSc6IG5ld0Jhc2VsaW5lLCAnQ29tcGFyaXNvbic6IG5ld0NvbXBhcmlzb259OwpAQCAtMzMx
LDggKzM0NiwxMSBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5k
cyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gbmV3IEN1c3RvbUNv
bW1pdFNldDsKICAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiByZXBvc2l0b3J5R3JvdXAu
cmVwb3NpdG9yaWVzKCkpIHsKICAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IHRoaXMuX3NwZWNp
ZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOwotICAgICAg
ICAgICAgaWYgKCFyZXZpc2lvbikKLSAgICAgICAgICAgICAgICByZXZpc2lvbiA9IHRoaXMuX2Zl
dGNoZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLmdldChyZXBvc2l0b3J5KTsKKyAgICAg
ICAgICAgIGlmICghcmV2aXNpb24pIHsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSB0
aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOwor
ICAgICAgICAgICAgICAgIGlmIChjb21taXQpCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9u
ID0gY29tbWl0LnJldmlzaW9uKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXJl
dmlzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgbGV0IHBh
dGNoID0gbnVsbDsKQEAgLTM1NSw2ICszNzMsNDQgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHJldHVybiBjb21t
aXRTZXQ7CiAgICAgfQogCisgICAgYXN5bmMgX2ZldGNoQ29tbWl0c0ZvckNvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbk5hbWUpCisgICAgeworICAgICAgICBjb25zdCBjb21taXRTZXQgPSB0aGlz
Ll9jb21taXRTZXRNYXBbY29uZmlndXJhdGlvbk5hbWVdOworICAgICAgICBpZiAoIWNvbW1pdFNl
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBzcGVjaWZpZWRSZXZpc2lv
bnMgPSB0aGlzLl9zcGVjaWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdOworICAgICAg
ICBjb25zdCBmZXRjaGVkQ29tbWl0cyA9IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRp
b25OYW1lXTsKKyAgICAgICAgY29uc3QgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSA9IHRo
aXMuX2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnlCeUNvbmZpZ3VyYXRpb25bY29uZmlndXJh
dGlvbk5hbWVdOworCisgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oY29tbWl0
U2V0LnJlcG9zaXRvcmllcygpKS5tYXAoKHJlcG9zaXRvcnkpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IHJldmlzaW9uID0gY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5
KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUmV2aXNpb24ocmVwb3NpdG9yeSwg
cmV2aXNpb24sIHNwZWNpZmllZFJldmlzaW9ucywgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9y
eSwgZmV0Y2hlZENvbW1pdHMpOworICAgICAgICB9KSk7CisKKyAgICAgICAgY29uc3QgbGF0ZXN0
Q29tbWl0U2V0ID0gdGhpcy5fY29tbWl0U2V0TWFwW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAg
ICAgaWYgKGNvbW1pdFNldCAhPSBsYXRlc3RDb21taXRTZXQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgfQorCisgICAgYXN5bmMgX3Jl
c29sdmVSZXZpc2lvbihyZXBvc2l0b3J5LCByZXZpc2lvbiwgc3BlY2lmaWVkUmV2aXNpb25zLCBp
bnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LCBmZXRjaGVkQ29tbWl0cykKKyAgICB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBmZXRjaGVkQ29tbWl0cy5kZWxldGUocmVwb3NpdG9yeSk7
CisgICAgICAgICAgICBjb25zdCBjb21taXRzID0gYXdhaXQgQ29tbWl0TG9nLmZldGNoRm9yU2lu
Z2xlUmV2aXNpb24ocmVwb3NpdG9yeSwgcmV2aXNpb24pOworICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoY29tbWl0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgaWYgKHJldmlzaW9uICE9IHNw
ZWNpZmllZFJldmlzaW9ucy5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5kZWxldGUocmVwb3Np
dG9yeSk7CisgICAgICAgICAgICBmZXRjaGVkQ29tbWl0cy5zZXQocmVwb3NpdG9yeSwgY29tbWl0
c1swXSk7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBpZiAocmV2aXNp
b24gIT0gc3BlY2lmaWVkUmV2aXNpb25zLmdldChyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LnNldChy
ZXBvc2l0b3J5LCByZXZpc2lvbik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfcmVuZGVyUmVw
b3NpdG9yeVBhbmVzKHRyaWdnZXJhYmxlLCBlcnJvciwgcGxhdGZvcm0sIHJlcG9zaXRvcnlHcm91
cEJ5Q29uZmlndXJhdGlvbiwgc2hvd0NvbXBhcmlzb24pCiAgICAgewogICAgICAgICB0aGlzLmNv
bnRlbnQoJ3JlcG9zaXRvcnktY29uZmlndXJhdGlvbi1lcnJvci1wYW5lJykuc3R5bGUuZGlzcGxh
eSA9IGVycm9yID8gbnVsbCA6ICdub25lJzsKQEAgLTQxNCw3ICs0NzAsNiBAQCBjbGFzcyBDdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICBf
YnVpbGRSZXZpc2lvblRhYmxlKGNvbmZpZ3VyYXRpb25OYW1lLCByZXBvc2l0b3J5R3JvdXBzLCBj
dXJyZW50R3JvdXAsIHBsYXRmb3JtLCByZXF1aXJlZFJlcG9zaXRvcmllcywgb3B0aW9uYWxSZXBv
c2l0b3J5TGlzdCwgYWx3YXlzQWNjZXB0c0N1c3RvbVJvb3RzKQogICAgIHsKICAgICAgICAgY29u
c3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKLSAgICAgICAgY29uc3Qg
bGluayA9IENvbXBvbmVudEJhc2UuY3JlYXRlTGluazsKIAogICAgICAgICBjb25zdCBjdXN0b21S
b290c1RCb2R5ID0gZWxlbWVudCgndGJvZHknLCBbCiAgICAgICAgICAgICBlbGVtZW50KCd0cics
IFsKQEAgLTQ1Myw2ICs1MDgsMjUgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICApXTsKICAgICB9CiAKKyAg
ICBfYnVpbGRUZXN0YWJpbGl0eUxpc3QoY29tbWl0U2V0LCBjb25maWd1cmF0aW9uTmFtZSwgaW52
YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSkKKyAgICB7CisgICAgICAgIGNvbnN0IGVsZW1lbnQg
PSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIGNvbnN0IGVudHJpZXMgPSBb
XTsKKworICAgICAgICBpZiAoIWNvbW1pdFNldCB8fCAhY29tbWl0U2V0LnJlcG9zaXRvcmllcygp
Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBmb3IgKGNvbnN0IHJl
cG9zaXRvcnkgb2YgY29tbWl0U2V0LnJlcG9zaXRvcmllcygpKSB7CisgICAgICAgICAgICBjb25z
dCBjb21taXQgPSB0aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJl
cG9zaXRvcnkpOworICAgICAgICAgICAgaWYgKGNvbW1pdCAmJiBjb21taXQudGVzdGFiaWxpdHko
KSAmJiAhaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5oYXMocmVwb3NpdG9yeSkpCisgICAg
ICAgICAgICAgICAgZW50cmllcy5wdXNoKGVsZW1lbnQoJ2xpJywgYCR7Y29tbWl0LnJlcG9zaXRv
cnkoKS5uYW1lKCl9IC0gIiR7Y29tbWl0LmxhYmVsKCl9IjogJHtjb21taXQudGVzdGFiaWxpdHko
KX1gKSk7CisgICAgICAgICAgICBpZiAoaW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5oYXMo
cmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGVsZW1lbnQoJ2xpJywg
YCR7cmVwb3NpdG9yeS5uYW1lKCl9IC0gIiR7aW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeS5n
ZXQocmVwb3NpdG9yeSl9IjogSW52YWxpZCByZXZpc2lvbmApKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBlbnRyaWVzOworICAgIH0KKwogICAgIF9idWlsZFJlcG9zaXRvcnlHcm91cExp
c3QocmVwb3NpdG9yeUdyb3VwcywgY3VycmVudEdyb3VwLCBjb25maWd1cmF0aW9uTmFtZSkKICAg
ICB7CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7
CkBAIC00NzYsNiArNTUwLDcgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGNsb25lW2NvbmZpZ3VyYXRpb25OYW1l
XSA9IGdyb3VwOwogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24g
PSBjbG9uZTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29tbWl0U2V0TWFwKCk7CisgICAgICAgIHRo
aXMuX2ZldGNoQ29tbWl0c0ZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5hbWUpOwogICAg
ICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIApAQCAtNDgzLDEwICs1NTgsMjAg
QEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50
QmFzZSB7CiAgICAgewogICAgICAgICBjb25zdCByZXZpc2lvbiA9IHRoaXMuX3NwZWNpZmllZFJl
dmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpIHx8ICcnOwogICAgICAg
ICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBs
ZXQgc2NoZWR1bGVkVXBkYXRlID0gbnVsbDsKICAgICAgICAgY29uc3QgaW5wdXQgPSBlbGVtZW50
KCdpbnB1dCcsIHt2YWx1ZTogcmV2aXNpb24sIG9uaW5wdXQ6ICgpID0+IHsKKyAgICAgICAgICAg
IHRoaXMuX21vZGlmaWVkSW5wdXQgPSB0cnVlOwogICAgICAgICAgICAgdW5tb2RpZmllZElucHV0
ID0gbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0
aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGlucHV0LnZhbHVlKTsKKyAgICAgICAgICAgIGNvbnN0
IHJldmlzaW9uVG9GZXRjaCA9IGlucHV0LnZhbHVlOworICAgICAgICAgICAgdGhpcy5fc3BlY2lm
aWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgcmV2aXNpb25U
b0ZldGNoKTsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOworICAgICAg
ICAgICAgaWYgKHNjaGVkdWxlZFVwZGF0ZSkKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQo
c2NoZWR1bGVkVXBkYXRlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFVwZGF0ZSA9IHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICAgICAgICAgIGlmIChyZXZpc2lvblRvRmV0Y2ggPT0gaW5wdXQu
dmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZldGNoQ29tbWl0c0ZvckNvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlZFVwZGF0
ZSA9IG51bGw7CisgICAgICAgICAgICB9LCAxMDApOwogICAgICAgICB9fSk7CiAgICAgICAgIGxl
dCB1bm1vZGlmaWVkSW5wdXQgPSBpbnB1dDsKIApAQCAtNDk0LDcgKzU3OSw3IEBAIGNsYXNzIEN1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAg
ICAgICAgICAgQ29tbWl0TG9nLmZldGNoTGF0ZXN0Q29tbWl0Rm9yUGxhdGZvcm0ocmVwb3NpdG9y
eSwgcGxhdGZvcm0pLnRoZW4oKGNvbW1pdCkgPT4gewogICAgICAgICAgICAgICAgIGlmIChjb21t
aXQgJiYgdW5tb2RpZmllZElucHV0KSB7CiAgICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWRJ
bnB1dC52YWx1ZSA9IGNvbW1pdC5yZXZpc2lvbigpOwotICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9mZXRjaGVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgY29t
bWl0LnJldmlzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaGVkQ29tbWl0
c1tjb25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0pOwpAQCAtNTIxLDYgKzYwNiw3IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPHNl
Y3Rpb24gaWQ9ImJhc2VsaW5lLWNvbmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgogICAg
ICAgICAgICAgICAgIDxoMj4zLiBDb25maWd1cmUgQmFzZWxpbmU8L2gyPgogICAgICAgICAgICAg
ICAgIDx0YWJsZSBpZD0iYmFzZWxpbmUtcmV2aXNpb24tdGFibGUiIGNsYXNzPSJyZXZpc2lvbi10
YWJsZSI+PC90YWJsZT4KKyAgICAgICAgICAgICAgICA8dWwgaWQ9ImJhc2VsaW5lLXRlc3RhYmls
aXR5Ij48L3VsPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgPHNlY3Rpb24g
aWQ9InNwZWNpZnktY29tcGFyaXNvbi1wYW5lIiBjbGFzcz0icGFuZSI+CiAgICAgICAgICAgICAg
ICAgPGJ1dHRvbiBpZD0ic3BlY2lmeS1jb21wYXJpc29uLWJ1dHRvbiI+Q29uZmlndXJlIHRvIENv
bXBhcmU8L2J1dHRvbj4KQEAgLTUyOCw2ICs2MTQsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rh
c2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIDxzZWN0
aW9uIGlkPSJjb21wYXJpc29uLWNvbmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgogICAg
ICAgICAgICAgICAgIDxoMj40LiBDb25maWd1cmUgQ29tcGFyaXNvbjwvaDI+CiAgICAgICAgICAg
ICAgICAgPHRhYmxlIGlkPSJjb21wYXJpc29uLXJldmlzaW9uLXRhYmxlIiBjbGFzcz0icmV2aXNp
b24tdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICAgICAgPHVsIGlkPSJjb21wYXJpc29uLXRl
c3RhYmlsaXR5Ij48L3VsPgogICAgICAgICAgICAgPC9zZWN0aW9uPmA7CiAgICAgfQogCkBAIC02
NzQsNiArNzYxLDEyIEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRl
bmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwog
ICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjYmFzZWxpbmUtdGVzdGFiaWxpdHkgbGksCisgICAgICAgICAgICAjY29tcGFy
aXNvbi10ZXN0YWJpbGl0eSBsaSB7CisgICAgICAgICAgICAgICAgY29sb3I6ICNjMzM7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDIwcmVtOworICAgICAgICAgICAgfQogYDsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMv
Y3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCmlu
ZGV4IGExY2QyZGMzZTM3OTdjZmRhOWZmYjYwMjBiMDhhMDJlYWI2MmUwZDIuLjgwMWQ0ZjBkOTkx
Y2NmNjRiYWQyMTFlYzNiZDk0MmYxNTBjY2IxMWIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1m
b3JtLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50
cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCkBAIC0xMzUsNyArMTM1LDI5IEBAIGNs
YXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAg
ICAgICAgICAgIGVsZW1lbnQoJ3RoZWFkJywKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0cics
CiAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgJ1JlcG9z
aXRvcnknKSwgY29tbWl0U2V0TGFiZWxzLm1hcCgobGFiZWwpID0+IGVsZW1lbnQoJ3RkJywge2Nv
bHNwYW46IGNvbW1pdFNldExhYmVscy5sZW5ndGggKyAxfSwgbGFiZWwpKSwgZWxlbWVudCgndGQn
KV0pKSwKLSAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9y
eUxpc3QsIGNvbW1pdFNldE1hcCwgb3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMu
X2hhc0luY29tcGxldGVPd25lZFJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCld
KTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9yeUxp
c3QsIGNvbW1pdFNldE1hcCwgb3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMuX2hh
c0luY29tcGxldGVPd25lZFJlcG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCksCisg
ICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFwKV0p
OworICAgIH0KKworICAgIF9jb25zdHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFwKQor
ICAgIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVu
dDsKKworICAgICAgICBsZXQgaGFzQ29tbWl0V2l0aFRlc3RhYmlsaXR5ID0gZmFsc2U7CisgICAg
ICAgIGNvbnN0IGNvbW1pdFNldHMgPSBBcnJheS5mcm9tKGNvbW1pdFNldE1hcC52YWx1ZXMoKSk7
CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0IG9mIGNvbW1pdFNldHMpCisgICAgICAgICAg
ICBoYXNDb21taXRXaXRoVGVzdGFiaWxpdHkgfD0gISFjb21taXRTZXQuY29tbWl0c1dpdGhUZXN0
YWJpbGl0eSgpOworICAgICAgICBpZiAoIWhhc0NvbW1pdFdpdGhUZXN0YWJpbGl0eSkKKyAgICAg
ICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBjb25zdCB0ZXN0YWJpbGl0eVJvd3MgPSBbXTsK
KyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgY29tbWl0U2V0TWFwLnZhbHVlcygpKSB7
CisgICAgICAgICAgICBjb25zdCByb3dzID0gY29tbWl0U2V0LmNvbW1pdHNXaXRoVGVzdGFiaWxp
dHkoKS5tYXAoKGNvbW1pdCkgPT4KKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0cicsIHtjbGFz
czogJ3Rlc3RhYmlsaXR5J30sIGAke2NvbW1pdC5yZXBvc2l0b3J5KCkubmFtZSgpfSAtICR7Y29t
bWl0LmxhYmVsKCl9OiAke2NvbW1pdC50ZXN0YWJpbGl0eSgpfWApKTsKKyAgICAgICAgICAgIHRl
c3RhYmlsaXR5Um93cy5wdXNoKGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IGNvbW1pdFNldE1hcC5z
aXplICsgMX0sIHJvd3MpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBlbGVtZW50KCd0
Ym9keScsIGVsZW1lbnQoJ3RyJywgW2VsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9KSwgdGVzdGFi
aWxpdHlSb3dzLCBlbGVtZW50KCd0ZCcpXSkpOwogICAgIH0KIAogICAgIF9jb25zdHJ1Y3RUYWJs
ZUJvZHlMaXN0KHJlcG9zaXRvcnlMaXN0LCBjb21taXRTZXRNYXAsIG93bmVkUmVwb3NpdG9yaWVz
QnlSZXBvc2l0b3J5LCBoYXNJbmNvbXBsZXRlT3duZWRSZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRD
b21taXRTZXRNYXApCkBAIC0yNTUsOCArMjc3LDggQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdy
b3VwRm9ybSBleHRlbmRzIFRlc3RHcm91cEZvcm0gewogICAgICAgICAgICAgb25jaGFuZ2U6ICgp
ID0+IHsKICAgICAgICAgICAgICAgICBpZiAob3duZXJSZXBvc2l0b3J5KQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjb21taXRTZXRNYXAuZ2V0KGNvbHVt
bkxhYmVsKS51cGRhdGVSZXZpc2lvbkZvck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCByZXZp
c2lvbkVkaXRvci52YWx1ZSkuY2F0Y2goCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TWFwLmdl
dChjb2x1bW5MYWJlbCkudXBkYXRlUmV2aXNpb25Gb3JPd25lclJlcG9zaXRvcnkocmVwb3NpdG9y
eSwgcmV2aXNpb25FZGl0b3IudmFsdWUpLnRoZW4oCisgICAgICAgICAgICAgICAgICAgICgpID0+
IHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCksCiAgICAgICAgICAgICAgICAgICAgICgpID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KGAiJHtyZXZpc2lvbkVkaXRvci52YWx1ZX0iIGRv
ZXMgbm90IGV4aXN0IGluICIke3JlcG9zaXRvcnkubmFtZSgpfSIuYCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXZpc2lvbkVkaXRvci52YWx1ZSA9IHJldmlzaW9uOwpAQCAtMjc4LDYgKzMw
MCw3IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBG
b3JtIHsKICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25FZGl0b3IudmFsdWUgPSB1bmN1c3Rv
bWl6ZWRDb21taXQgPyB1bmN1c3RvbWl6ZWRDb21taXQucmV2aXNpb24oKSA6ICcnOwogICAgICAg
ICAgICAgICAgICAgICBpZiAodW5jdXN0b21pemVkQ29tbWl0ICYmIHVuY3VzdG9taXplZENvbW1p
dC5vd25lckNvbW1pdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3duZXJSZXZp
c2lvbk1hcC5nZXQoY29sdW1uTGFiZWwpLnNldChyZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21t
aXQub3duZXJDb21taXQoKS5yZXZpc2lvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5l
bnF1ZXVlVG9SZW5kZXIoKTsKICAgICAgICAgICAgICAgICB9fSk7CiAgICAgICAgICAgICBub2Rl
cy5wdXNoKGVsZW1lbnQoJ3RkJywgZWxlbWVudCgnbGFiZWwnLCBbcmFkaW9CdXR0b24sIGxhYmVs
VG9DaG9vc2VdKSkpOwogICAgICAgICB9CkBAIC0zMzYsNiArMzU5LDExIEBAIGNsYXNzIEN1c3Rv
bWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAg
ICNub3RpZnktb24tY29tcGxldGlvbi1jaGVja2JveCB7CiAgICAgICAgICAgICAgICAgbWFyZ2lu
LWxlZnQ6IDAuNHJlbTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI2N1c3RvbS10YWJs
ZSB0ci50ZXN0YWJpbGl0eSB7CisgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAg
ICAgICAgICAgICAgICBjb2xvcjogI2MzMzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGA7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvY29tbWl0LXNldC5qcwppbmRleCA0NDViMjcwMTdmMjQ4ZDllNWFjNGMxM2I4NzU1
YTBhYWQ1NzIyY2E0Li5iYjViN2YxOThjZWYzOWExNGQzM2ZmYTE4MDNkNjkyZjY2N2FhOGZhIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21t
aXQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2NvbW1pdC1zZXQuanMKQEAgLTM4OSw3ICszODksNyBAQCBjbGFzcyBJbnRlcm1lZGlhdGVDb21t
aXRTZXQgewogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZmV0Y2hpbmdQcm9taXNlcyk7CiAg
ICAgfQogCi0gICAgY29tbWl0c1dpdGhUZXN0YWJpbGl0eVdhcm5pbmdzKCkgeyByZXR1cm4gdGhp
cy5jb21taXRzKCkuZmlsdGVyKChjb21taXQpID0+ICEhY29tbWl0LnRlc3RhYmlsaXR5V2Fybmlu
ZygpKTsgfQorICAgIGNvbW1pdHNXaXRoVGVzdGFiaWxpdHkoKSB7IHJldHVybiB0aGlzLmNvbW1p
dHMoKS5maWx0ZXIoKGNvbW1pdCkgPT4gISFjb21taXQudGVzdGFiaWxpdHkoKSk7IH0KICAgICBj
b21taXRzKCkgeyByZXR1cm4gIEFycmF5LmZyb20odGhpcy5fY29tbWl0QnlSZXBvc2l0b3J5LnZh
bHVlcygpKTsgfQogCiAgICAgX2ZldGNoQ29tbWl0TG9nQW5kT3duZWRDb21taXRzKHJlcG9zaXRv
cnksIHJldmlzaW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358878</attachid>
            <date>2019-01-10 23:05:38 -0800</date>
            <delta_ts>2019-01-15 19:18:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192972-20190110230538.patch</filename>
            <type>text/plain</type>
            <size>33623</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDg1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwOTM2OTA5NzYxYTI0ZjE3ZGNmM2FhOWI3YTQyZWUxNGQyNGJlNTA1Li4zMTdmOTg5MWEy
ZDAxNjgzNjlmYjU5ZmY3YzJmNWFkMWNjZGRlZDcwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0xMi0yMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVUkgaW4gYW5hbHlzaXMgdGFzayBwYWdlIHRvIHNo
b3cgY29tbWl0IHRlc3RhYmlsaXR5IGluZm9ybWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyOTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFVJIGluIGN1c3RvbSBhbmFseXNpcyB0YXNr
IGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbWl6YWJsZSB0ZXN0IGdyb3VwIGZvcm0gdG8gc2hvdyB0
ZXN0YWJpbGl0eSBpbmZvcm1hdGlvbi4KKyAgICAgICAgRml4IGEgYnVnIGluICdDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IuX3VwZGF0ZUNvbW1pdFNldE1hcCcgdGhhdCAnY3VycmVudENv
bXBhcmlzb24nIGlzIGluY29ycmVjdGx5IHNldC4KKworICAgICAgICAqIGJyb3dzZXItdGVzdHMv
Y3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXRlc3RzLmpzOiBBZGRlZCBhIHVuaXQg
dGVzdCBmb3IgdGhlIGJ1ZyBpbgorICAgICAgICAnQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yLl91cGRhdGVDb21taXRTZXRNYXAnLgorICAgICAgICBBZGRlZCBhIHVuaXQgdGVzdCB0byBt
YWtlIHN1cmUgJ0N1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcicgc3RpbGwgd29ya3Mgd2hl
biBjb21taXQgZmV0Y2hpbmcgbmV2ZXIgcmV0dXJucy4KKyAgICAgICAgKiBicm93c2VyLXRlc3Rz
L2luZGV4Lmh0bWw6IEltcG9ydGVkICcnY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9y
LXRlc3RzLmpzJy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlz
aXMtdGFzay1jb25maWd1cmF0b3IuanM6IEFkZGVkIFVJIHRvIHNob3cgdGVzdGFiaWxpdHkgaW5m
b3JtYXRpb24uCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IpOgorICAg
ICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fZGlkVXBkYXRl
U2VsZWN0ZWRQbGF0Zm9ybXMpOiBTaG91bGQgcmVzZXQgcmVsYXRlZCBmZWlsZCBmb3IgY29ycmVz
cG9uZGluZworICAgICAgICByZXBvc2l0b3JpZXMgdGhhdCB1c2VyIGRvZXMgbm90IHNwZWNpZnkg
cmV2aXNpb24uCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90
eXBlLnJlbmRlcik6CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJv
dG90eXBlLl91cGRhdGVDb21taXRTZXRNYXApOiBGaXhlZCBhIGJ1ZyB0aGF0ICdjdXJyZW50Q29t
cGFyaXNvbicgaXMgaW5jb3JyZWN0bHkgc2V0LgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yLnByb3RvdHlwZS5fY29tcHV0ZUNvbW1pdFNldCk6CisgICAgICAgIChDdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLmFzeW5jLl9mZXRjaENvbW1pdHNG
b3JDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRv
ci5wcm90b3R5cGUuYXN5bmMuX3Jlc29sdmVSZXZpc2lvbik6CisgICAgICAgIChDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZFJldmlzaW9uVGFibGUpOgorICAg
ICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fYnVpbGRUZXN0
YWJpbGl0eUxpc3QpOgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnBy
b3RvdHlwZS5fc2VsZWN0UmVwb3NpdG9yeUdyb3VwKToKKyAgICAgICAgKEN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2J1aWxkUmV2aXNpb25JbnB1dCk6CisgICAgICAg
IChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY3NzVGVtcGxhdGUpOgorICAgICAgICAq
IHB1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanM6IEFk
ZGVkIFVJIHRvIHNob3cgdGVzdGFiaWxpdHkgaW5mb3JtYXRpb24uCisgICAgICAgIChDdXN0b21p
emFibGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5fcmVuZGVyQ3VzdG9tUmV2aXNpb25UYWJsZSk6
CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5fY29uc3RydWN0
VGVzdGFiaWxpdHlSb3dzLik6CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnBy
b3RvdHlwZS5fY29uc3RydWN0VGVzdGFiaWxpdHlSb3dzKToKKyAgICAgICAgKEN1c3RvbWl6YWJs
ZVRlc3RHcm91cEZvcm0ucHJvdG90eXBlLl9jb25zdHJ1Y3RSZXZpc2lvblJhZGlvQnV0dG9ucyk6
CisgICAgICAgIENoYW5naW5nIGVpdGhlciByZXZpc2lvbiBlZGl0b3Igb3IgcmFkaW8gYnV0dG9u
IHNob3VsZCB0cmlnZ2VyIGEgcmUtcmVuZGVyIGFzIHRlc3RhYmlsaXR5CisgICAgICAgIGluZm9y
bWF0aW9uIGZvciB1cGRhdGVkIHJldmlzaW9uIG1heSBjaGFuZ2UuCisgICAgICAgIChDdXN0b21p
emFibGVUZXN0R3JvdXBGb3JtLmNzc1RlbXBsYXRlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9k
ZWxzL2NvbW1pdC1zZXQuanM6CisgICAgICAgIChJbnRlcm1lZGlhdGVDb21taXRTZXQucHJvdG90
eXBlLmNvbW1pdHNXaXRoVGVzdGFiaWxpdHkpOiBSZW5hbWVkIGZyb20gJ2NvbW1pdHNXaXRoVGVz
dGFiaWxpdHlXYXJuaW5ncycuCisgICAgICAgIChJbnRlcm1lZGlhdGVDb21taXRTZXQucHJvdG90
eXBlLmNvbW1pdHNXaXRoVGVzdGFiaWxpdHlXYXJuaW5ncyk6IERlbGV0ZWQuCisKIDIwMTgtMTIt
MTQgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIGNv
bW1pdHMgdGFibGUgdG8gY29udGFpbiB0ZXN0YWJpbGl0eSBpbmZvcm1hdGlvbi4KZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2N1c3RvbS1hbmFseXNp
cy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9i
cm93c2VyLXRlc3RzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzFjOWU3YTg0YTY5MWUxZDU1M2ZiYWNiY2FlMTI4NjY5ZWFiYjQyCi0tLSAv
ZGV2L251bGwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvY3Vz
dG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLXRlc3RzLmpzCkBAIC0wLDAgKzEsMjMwIEBA
CitkZXNjcmliZSgnQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yJywgKCkgPT4geworICAg
IGNvbnN0IHNjcmlwdHMgPSBbJ2luc3RydW1lbnRhdGlvbi5qcycsICcuLi9zaGFyZWQvY29tbW9u
LWNvbXBvbmVudC1iYXNlLmpzJywgJ2NvbXBvbmVudHMvYmFzZS5qcycsICdtb2RlbHMvZGF0YS1t
b2RlbC5qcycsICdtb2RlbHMvY29tbWl0LWxvZy5qcycsCisgICAgICAgICdtb2RlbHMvY29tbWl0
LXNldC5qcycsICdtb2RlbHMvcmVwb3NpdG9yeS5qcycsICdtb2RlbHMvbWV0cmljLmpzJywgJ21v
ZGVscy90cmlnZ2VyYWJsZS5qcycsICdtb2RlbHMvdGVzdC5qcycsICdtb2RlbHMvcGxhdGZvcm0u
anMnLCAnY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMnLAorICAgICAgICAnY29tcG9uZW50
cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3IuanMnLCAnY29tcG9uZW50cy9pbnN0
YW50LWZpbGUtdXBsb2FkZXIuanMnLCAnbGF6aWx5LWV2YWx1YXRlZC1mdW5jdGlvbi5qcyddOwor
CisgICAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
V2l0aENvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgICAgIGF3YWl0IGNvbnRleHQuaW1wb3J0
U2NyaXB0cyhzY3JpcHRzLCAnQ29tcG9uZW50QmFzZScsICdEYXRhTW9kZWxPYmplY3QnLCAnUmVw
b3NpdG9yeScsICdDb21taXRMb2cnLCAnUGxhdGZvcm0nLCAnVGVzdCcsICdNZXRyaWMnLCAnVHJp
Z2dlcmFibGUnLAorICAgICAgICAgICAgJ1RyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwJywgJ0N1
c3RvbUNvbW1pdFNldCcsICdDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3InLCAnTW9ja1Jl
bW90ZUFQSScsICdMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbicpOworICAgICAgICBjb25zdCBjdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgPSBuZXcgY29udGV4dC5zeW1ib2xzLkN1c3RvbUFu
YWx5c2lzVGFza0NvbmZpZ3VyYXRvcjsKKyAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5lbGVtZW50KCkpOworICAg
ICAgICByZXR1cm4gY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yOworICAgIH0KKworICAg
IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKHRpbWVvdXQpCisgICAgeworICAgICAgICBhd2FpdCBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKCksIHRpbWVvdXQp
KTsKKyAgICB9CisKKyAgICBpdCgnU2hvdWxkIGJlIGFibGUgdG8gc2NoZWR1bGUgQS9CIHRlc3Qg
ZXZlbiBmZXRjaGluZyBjb21taXQgaW5mb3JtYXRpb24gbmV2ZXIgcmV0dXJucycsIGFzeW5jICgp
ID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAg
ICAgICAgY29uc3QgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yID0gYXdhaXQgY3JlYXRl
Q3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yV2l0aENvbnRleHQoY29udGV4dCk7CisKKyAg
ICAgICAgY29uc3QgdGVzdCA9IG5ldyBjb250ZXh0LnN5bWJvbHMuVGVzdCgxLCB7bmFtZTogJ1Nw
ZWVkb21ldGVyJ30pOworICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IG5ldyBjb250ZXh0LnN5bWJv
bHMuUGxhdGZvcm0oMSwgeworICAgICAgICAgICAgbmFtZTogJ01vamF2ZScsCisgICAgICAgICAg
ICBtZXRyaWNzOiBbCisgICAgICAgICAgICAgICAgbmV3IGNvbnRleHQuc3ltYm9scy5NZXRyaWMo
MSwgeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQWxsb2NhdGlvbicsCisgICAgICAgICAg
ICAgICAgICAgIGFnZ3JlZ2F0b3I6ICdBcml0aG1ldGljJywKKyAgICAgICAgICAgICAgICAgICAg
dGVzdAorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgbGFz
dE1vZGlmaWVkQnlNZXRyaWM6IERhdGUubm93KCksCisgICAgICAgIH0pOworICAgICAgICBjb25z
dCByZXBvc2l0b3J5ID0gY29udGV4dC5zeW1ib2xzLlJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9u
KDEsIHtuYW1lOiAnV2ViS2l0J30pOworICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZVJlcG9zaXRv
cnlHcm91cCA9IG5ldyBjb250ZXh0LnN5bWJvbHMuVHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAo
MSwge3JlcG9zaXRvcmllczogW3tyZXBvc2l0b3J5fV19KTsKKyAgICAgICAgbmV3IGNvbnRleHQu
c3ltYm9scy5UcmlnZ2VyYWJsZSgxLCB7CisgICAgICAgICAgICBuYW1lOiAndGVzdC10cmlnZ2Vy
YWJsZScsCisgICAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICAgIHJlcG9z
aXRvcnlHcm91cHM6IFt0cmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cF0sCisgICAgICAgICAgICBj
b25maWd1cmF0aW9uczogW3t0ZXN0LCBwbGF0Zm9ybX1dLAorICAgICAgICB9KTsKKyAgICAgICAg
Y3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFRlc3RzKFt0ZXN0XSk7CisgICAg
ICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5zZWxlY3RQbGF0Zm9ybShwbGF0Zm9y
bSk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsK
KworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzOworICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAg
ICAgICAgZXhwZWN0KHJlcXVlc3RzWzBdLnVybCkudG8uYmUoJy9hcGkvY29tbWl0cy8xL2xhdGVz
dD9wbGF0Zm9ybT0xJyk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlamVjdCgpOworCisgICAgICAg
IGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdiYXNlbGluZS1yZXZpc2lv
bi10YWJsZScpLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnMTIzJzsKKyAgICAgICAg
Y3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2Jhc2VsaW5lLXJldmlzaW9u
LXRhYmxlJykucXVlcnlTZWxlY3RvcignaW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgn
aW5wdXQnKSk7CisgICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgICAgIGV4cGVjdChyZXF1
ZXN0cy5sZW5ndGgpLnRvLmJlKDIpOworICAgICAgICBleHBlY3QocmVxdWVzdHNbMV0udXJsKS50
by5iZSgnL2FwaS9jb21taXRzLzEvMTIzJyk7CisKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yLl9jb25maWd1cmVDb21wYXJpc29uKCk7CisgICAgICAgIGF3YWl0IHdhaXRG
b3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNU
YXNrQ29uZmlndXJhdG9yLmNvbnRlbnQoJ2NvbXBhcmlzb24tcmV2aXNpb24tdGFibGUnKS5xdWVy
eVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlID0gJzQ1Nic7CisgICAgICAgIGN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdjb21wYXJpc29uLXJldmlzaW9uLXRhYmxlJykucXVl
cnlTZWxlY3RvcignaW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7Cisg
ICAgICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgp
LnRvLmJlKDMpOworICAgICAgICBleHBlY3QocmVxdWVzdHNbMl0udXJsKS50by5iZSgnL2FwaS9j
b21taXRzLzEvNDU2Jyk7CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0cyA9IGN1c3RvbUFuYWx5
c2lzVGFza0NvbmZpZ3VyYXRvci5jb21taXRTZXRzKCk7CisgICAgICAgIGV4cGVjdChjb21taXRT
ZXRzLmxlbmd0aCkudG8uYmUoMik7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzBdLnJlcG9z
aXRvcmllcygpLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzBd
LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSkudG8uYmUoJzEyMycpOworICAgICAg
ICBleHBlY3QoY29tbWl0U2V0c1sxXS5yZXBvc2l0b3JpZXMoKS5sZW5ndGgpLnRvLmJlKDEpOwor
ICAgICAgICBleHBlY3QoY29tbWl0U2V0c1sxXS5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3Np
dG9yeSkpLnRvLmJlKCc0NTYnKTsKKyAgICB9KTsKKworICAgIGl0KCdTaG91bGQgbm90IHVwZGF0
ZSBjb21taXRTZXRNYXAgaWYgYmFzZWxpbmUgaXMgc2V0IGFuZCB1bm1vZGlmaWVkIGJ1dCBjb21w
YXJpc29uIGlzIG51bGwnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBu
ZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgIGNvbnN0IGN1c3RvbUFuYWx5c2lzVGFza0Nv
bmZpZ3VyYXRvciA9IGF3YWl0IGNyZWF0ZUN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcldp
dGhDb250ZXh0KGNvbnRleHQpOworCisgICAgICAgIGF3YWl0IHdhaXRGb3JDb21wb25lbnRzVG9S
ZW5kZXIoY29udGV4dCk7CisgICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBjb250ZXh0LnN5bWJv
bHMuUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24oMSwge25hbWU6ICdXZWJLaXQnfSk7CisgICAg
ICAgIGNvbnN0IGNvbW1pdFNldCA9IG5ldyBjb250ZXh0LnN5bWJvbHMuQ3VzdG9tQ29tbWl0U2V0
OworICAgICAgICBjb21taXRTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnks
ICcyMTA5NDgnLCBudWxsKTsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9y
Ll9jb21taXRTZXRNYXAgPSB7J0Jhc2VsaW5lJzogY29tbWl0U2V0LCAnQ29tcGFyaXNvbic6IG51
bGx9OworICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuX3JlcG9zaXRvcnlH
cm91cEJ5Q29uZmlndXJhdGlvblsnQmFzZWxpbmUnXSA9IG5ldyBjb250ZXh0LnN5bWJvbHMuVHJp
Z2dlcmFibGVSZXBvc2l0b3J5R3JvdXAoMSwge3JlcG9zaXRvcmllczogW3tyZXBvc2l0b3J5fV19
KTsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLl9zcGVjaWZpZWRSZXZp
c2lvbnNbJ0Jhc2VsaW5lJ10uc2V0KHJlcG9zaXRvcnksICcyMTA5NDgnKTsKKworICAgICAgICBj
b25zdCBvcmlnaW5hbENvbW1pdFNldCA9IGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5f
Y29tbWl0U2V0TWFwOworICAgICAgICBhd2FpdCBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOworCisgICAgICAgIGV4cGVjdChjdXN0b21BbmFseXNp
c1Rhc2tDb25maWd1cmF0b3IuX2NvbW1pdFNldE1hcCkudG8uYmUob3JpZ2luYWxDb21taXRTZXQp
OworICAgIH0pOworCisgICAgaXQoJ1Nob3VsZCBwcmVzZXJ2ZSB1c2VyIHNwZWNpZmllZCByZXZp
c2lvbiBpZiB1c2VyIGhhcyBldmVyIG1vZGlmaWVkIHRoZSByZXZpc2lvbicsIGFzeW5jICgpID0+
IHsKKworICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAg
ICAgICBjb25zdCBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgPSBhd2FpdCBjcmVhdGVD
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3JXaXRoQ29udGV4dChjb250ZXh0KTsKKworICAg
ICAgICBjb25zdCB0ZXN0ID0gbmV3IGNvbnRleHQuc3ltYm9scy5UZXN0KDEsIHtuYW1lOiAnU3Bl
ZWRvbWV0ZXInfSk7CisgICAgICAgIGNvbnN0IG1vamF2ZSA9IG5ldyBjb250ZXh0LnN5bWJvbHMu
UGxhdGZvcm0oMSwgeworICAgICAgICAgICAgbmFtZTogJ01vamF2ZScsCisgICAgICAgICAgICBt
ZXRyaWNzOiBbCisgICAgICAgICAgICAgICAgbmV3IGNvbnRleHQuc3ltYm9scy5NZXRyaWMoMSwg
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQWxsb2NhdGlvbicsCisgICAgICAgICAgICAg
ICAgICAgIGFnZ3JlZ2F0b3I6ICdBcml0aG1ldGljJywKKyAgICAgICAgICAgICAgICAgICAgdGVz
dAorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgbGFzdE1v
ZGlmaWVkQnlNZXRyaWM6IERhdGUubm93KCksCisgICAgICAgIH0pOworICAgICAgICBjb25zdCBo
aWdoU2llcnJhID0gbmV3IGNvbnRleHQuc3ltYm9scy5QbGF0Zm9ybSgyLCB7CisgICAgICAgICAg
ICBuYW1lOiAnSGlnaCBTaWVycmEnLAorICAgICAgICAgICAgbWV0cmljczogWworICAgICAgICAg
ICAgICAgIG5ldyBjb250ZXh0LnN5bWJvbHMuTWV0cmljKDEsIHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogJ0FsbG9jYXRpb24nLAorICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdG9yOiAn
QXJpdGhtZXRpYycsCisgICAgICAgICAgICAgICAgICAgIHRlc3QKKyAgICAgICAgICAgICAgICB9
KQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGxhc3RNb2RpZmllZEJ5TWV0cmljOiBEYXRl
Lm5vdygpLAorICAgICAgICB9KTsKKyAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvbnRleHQu
c3ltYm9scy5SZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbigxLCB7bmFtZTogJ1dlYktpdCd9KTsK
KyAgICAgICAgY29uc3QgdHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAgPSBuZXcgY29udGV4dC5z
eW1ib2xzLlRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwKDEsIHtyZXBvc2l0b3JpZXM6IFt7cmVw
b3NpdG9yeX1dfSk7CisgICAgICAgIG5ldyBjb250ZXh0LnN5bWJvbHMuVHJpZ2dlcmFibGUoMSwg
eworICAgICAgICAgICAgbmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnLAorICAgICAgICAgICAgaXNE
aXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgICByZXBvc2l0b3J5R3JvdXBzOiBbdHJpZ2dlcmFi
bGVSZXBvc2l0b3J5R3JvdXBdLAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM6IFt7dGVzdCwg
cGxhdGZvcm06IG1vamF2ZX0sIHt0ZXN0LCBwbGF0Zm9ybTogaGlnaFNpZXJyYX1dLAorICAgICAg
ICB9KTsKKyAgICAgICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFRlc3Rz
KFt0ZXN0XSk7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5zZWxlY3RQ
bGF0Zm9ybShtb2phdmUpOworCisgICAgICAgIGF3YWl0IHdhaXRGb3JDb21wb25lbnRzVG9SZW5k
ZXIoY29udGV4dCk7CisKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMu
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCku
dG8uYmUoMSk7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0c1swXS51cmwpLnRvLmJlKCcvYXBpL2Nv
bW1pdHMvMS9sYXRlc3Q/cGxhdGZvcm09MScpOworICAgICAgICByZXF1ZXN0c1swXS5yZWplY3Qo
KTsKKworICAgICAgICBjdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY29udGVudCgnYmFz
ZWxpbmUtcmV2aXNpb24tdGFibGUnKS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlID0gJzEy
Myc7CisgICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdiYXNl
bGluZS1yZXZpc2lvbi10YWJsZScpLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZGlzcGF0Y2hFdmVu
dChuZXcgRXZlbnQoJ2lucHV0JykpOworICAgICAgICBhd2FpdCBzbGVlcCgxMDApOworICAgICAg
ICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgyKTsKKyAgICAgICAgZXhwZWN0KHJlcXVl
c3RzWzFdLnVybCkudG8uYmUoJy9hcGkvY29tbWl0cy8xLzEyMycpOworCisgICAgICAgIGN1c3Rv
bUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5fY29uZmlndXJlQ29tcGFyaXNvbigpOworICAgICAg
ICBhd2FpdCB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworCisgICAgICAgIGN1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdjb21wYXJpc29uLXJldmlzaW9u
LXRhYmxlJykucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9ICc0NTYnOworICAgICAgICBj
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IuY29udGVudCgnY29tcGFyaXNvbi1yZXZpc2lv
bi10YWJsZScpLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQo
J2lucHV0JykpOworICAgICAgICBhd2FpdCBzbGVlcCgxMDApOworICAgICAgICBleHBlY3QocmVx
dWVzdHMubGVuZ3RoKS50by5iZSgzKTsKKyAgICAgICAgZXhwZWN0KHJlcXVlc3RzWzJdLnVybCku
dG8uYmUoJy9hcGkvY29tbWl0cy8xLzQ1NicpOworCisgICAgICAgIGxldCBjb21taXRTZXRzID0g
Y3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbW1pdFNldHMoKTsKKyAgICAgICAgZXhw
ZWN0KGNvbW1pdFNldHMubGVuZ3RoKS50by5iZSgyKTsKKyAgICAgICAgZXhwZWN0KGNvbW1pdFNl
dHNbMF0ucmVwb3NpdG9yaWVzKCkubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgZXhwZWN0KGNv
bW1pdFNldHNbMF0ucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKS50by5iZSgnMTIz
Jyk7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzFdLnJlcG9zaXRvcmllcygpLmxlbmd0aCku
dG8uYmUoMSk7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzFdLnJldmlzaW9uRm9yUmVwb3Np
dG9yeShyZXBvc2l0b3J5KSkudG8uYmUoJzQ1NicpOworCisgICAgICAgIGN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvci5zZWxlY3RQbGF0Zm9ybShoaWdoU2llcnJhKTsKKyAgICAgICAgYXdh
aXQgd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKworICAgICAgICBjb21taXRT
ZXRzID0gY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNvbW1pdFNldHMoKTsKKyAgICAg
ICAgZXhwZWN0KGNvbW1pdFNldHMubGVuZ3RoKS50by5iZSgyKTsKKyAgICAgICAgZXhwZWN0KGNv
bW1pdFNldHNbMF0ucmVwb3NpdG9yaWVzKCkubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgZXhw
ZWN0KGNvbW1pdFNldHNbMF0ucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKS50by5i
ZSgnMTIzJyk7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzFdLnJlcG9zaXRvcmllcygpLmxl
bmd0aCkudG8uYmUoMSk7CisgICAgICAgIGV4cGVjdChjb21taXRTZXRzWzFdLnJldmlzaW9uRm9y
UmVwb3NpdG9yeShyZXBvc2l0b3J5KSkudG8uYmUoJzQ1NicpOworICAgIH0pOworCisgICAgaXQo
J1Nob3VsZCByZXNldCBjb21taXQgc2V0IGlmIHVzZXIgaGFzIG5ldmVyIG1vZGlmaWVkIHRoZSBy
ZXZpc2lvbicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93
c2luZ0NvbnRleHQoKTsKKyAgICAgICAgY29uc3QgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yID0gYXdhaXQgY3JlYXRlQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yV2l0aENvbnRl
eHQoY29udGV4dCk7CisKKyAgICAgICAgY29uc3QgdGVzdCA9IG5ldyBjb250ZXh0LnN5bWJvbHMu
VGVzdCgxLCB7bmFtZTogJ1NwZWVkb21ldGVyJ30pOworICAgICAgICBjb25zdCBtb2phdmUgPSBu
ZXcgY29udGV4dC5zeW1ib2xzLlBsYXRmb3JtKDEsIHsKKyAgICAgICAgICAgIG5hbWU6ICdNb2ph
dmUnLAorICAgICAgICAgICAgbWV0cmljczogWworICAgICAgICAgICAgICAgIG5ldyBjb250ZXh0
LnN5bWJvbHMuTWV0cmljKDEsIHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FsbG9jYXRp
b24nLAorICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdG9yOiAnQXJpdGhtZXRpYycsCisgICAg
ICAgICAgICAgICAgICAgIHRlc3QKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgIGxhc3RNb2RpZmllZEJ5TWV0cmljOiBEYXRlLm5vdygpLAorICAgICAgICB9
KTsKKyAgICAgICAgY29uc3QgaGlnaFNpZXJyYSA9IG5ldyBjb250ZXh0LnN5bWJvbHMuUGxhdGZv
cm0oMiwgeworICAgICAgICAgICAgbmFtZTogJ0hpZ2ggU2llcnJhJywKKyAgICAgICAgICAgIG1l
dHJpY3M6IFsKKyAgICAgICAgICAgICAgICBuZXcgY29udGV4dC5zeW1ib2xzLk1ldHJpYygxLCB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBbGxvY2F0aW9uJywKKyAgICAgICAgICAgICAg
ICAgICAgYWdncmVnYXRvcjogJ0FyaXRobWV0aWMnLAorICAgICAgICAgICAgICAgICAgICB0ZXN0
CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBsYXN0TW9k
aWZpZWRCeU1ldHJpYzogRGF0ZS5ub3coKSwKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IHJl
cG9zaXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24oMSwg
e25hbWU6ICdXZWJLaXQnfSk7CisgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlUmVwb3NpdG9yeUdy
b3VwID0gbmV3IGNvbnRleHQuc3ltYm9scy5UcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCgxLCB7
bmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnLCByZXBvc2l0b3JpZXM6IFt7cmVwb3NpdG9yeX1dfSk7
CisgICAgICAgIG5ldyBjb250ZXh0LnN5bWJvbHMuVHJpZ2dlcmFibGUoMSwgeworICAgICAgICAg
ICAgbmFtZTogJ3Rlc3QtdHJpZ2dlcmFibGUnLAorICAgICAgICAgICAgaXNEaXNhYmxlZDogZmFs
c2UsCisgICAgICAgICAgICByZXBvc2l0b3J5R3JvdXBzOiBbdHJpZ2dlcmFibGVSZXBvc2l0b3J5
R3JvdXBdLAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM6IFt7dGVzdCwgcGxhdGZvcm06IG1v
amF2ZX0sIHt0ZXN0LCBwbGF0Zm9ybTogaGlnaFNpZXJyYX1dLAorICAgICAgICB9KTsKKyAgICAg
ICAgY3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnNlbGVjdFRlc3RzKFt0ZXN0XSk7Cisg
ICAgICAgIGN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5zZWxlY3RQbGF0Zm9ybShtb2ph
dmUpOworICAgICAgICBhd2FpdCB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOwor
CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEku
cmVxdWVzdHM7CisgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAg
ICAgICBleHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRzLzEvbGF0ZXN0
P3BsYXRmb3JtPTEnKTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7Y29tbWl0czogW3sK
KyAgICAgICAgICAgIGlkOiAxLAorICAgICAgICAgICAgcmV2aXNpb246ICcxMjMnLAorICAgICAg
ICAgICAgcmVwb3NpdG9yeTogcmVwb3NpdG9yeS5pZCgpLAorICAgICAgICAgICAgdGltZTogRGF0
ZS5ub3coKSwKKyAgICAgICAgfV19KTsKKyAgICAgICAgYXdhaXQgd2FpdEZvckNvbXBvbmVudHNU
b1JlbmRlcihjb250ZXh0KTsKKworICAgICAgICBleHBlY3QoY3VzdG9tQW5hbHlzaXNUYXNrQ29u
ZmlndXJhdG9yLmNvbnRlbnQoJ2Jhc2VsaW5lLXJldmlzaW9uLXRhYmxlJykucXVlcnlTZWxlY3Rv
cignaW5wdXQnKS52YWx1ZSkudG8uYmUoJzEyMycpOworICAgICAgICBjdXN0b21BbmFseXNpc1Rh
c2tDb25maWd1cmF0b3Iuc2VsZWN0UGxhdGZvcm0oaGlnaFNpZXJyYSk7CisKKyAgICAgICAgYXdh
aXQgd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgZXhwZWN0KGN1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5jb250ZW50KCdiYXNlbGluZS1yZXZpc2lvbi10
YWJsZScpLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUpLnRvLmJlKCcnKTsKKyAgICB9KTsK
K30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCmluZGV4IDM1NDA0N2QzZjlmYjA2Zjc3
NWRmMDNhNGM0NTMzMmNiZDQ5ODAyMTMuLjYyZmU5OTI3ODAyNGExYWNiY2EzYmQ0OTBlNDVmNjU0
ZTg2ZDYxMjEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRl
c3RzL2luZGV4Lmh0bWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVz
dHMvaW5kZXguaHRtbApAQCAtMjcsNiArMjcsNyBAQCBtb2NoYS5zZXR1cCgnYmRkJyk7CiA8c2Ny
aXB0IHNyYz0iY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9ImNvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJ0ZXN0LWdyb3VwLWZvcm0tdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImN1c3Rv
bS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0ibWFya3VwLXBhZ2UtdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InRlc3QtZ3JvdXAtcmVzdWx0LXBhZ2UtdGVzdHMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1hbmFs
eXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3IuanMKaW5k
ZXggNDNmMzViN2NhNTI2MTQ4NWMyZjhmZTRjMjNmNGY0N2FhMzI0MWVmNC4uYTAyNGYzYjU2ODlm
Yjk1NGQ5N2ZlNjk4YWM2ZWQxZDFjYTA3ZGRkZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZp
Z3VyYXRvci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvY3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpzCkBAIC03LDE2ICs3LDE2
IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVu
dEJhc2UgewogICAgICAgICB0aGlzLl9zZWxlY3RlZFRlc3RzID0gW107CiAgICAgICAgIHRoaXMu
X3RyaWdnZXJhYmxlUGxhdGZvcm1zID0gW107CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGxhdGZv
cm0gPSBudWxsOwotICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uTmFtZXMgPSBbJ0Jhc2VsaW5l
JywgJ0NvbXBhcmlzb24nXTsKICAgICAgICAgdGhpcy5fc2hvd0NvbXBhcmlzb24gPSBmYWxzZTsK
ICAgICAgICAgdGhpcy5fY29tbWl0U2V0TWFwID0ge307CiAgICAgICAgIHRoaXMuX3NwZWNpZmll
ZFJldmlzaW9ucyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAnQ29tcGFyaXNvbic6IG5ldyBNYXB9
OwogICAgICAgICB0aGlzLl9wYXRjaFVwbG9hZGVycyA9IHsnQmFzZWxpbmUnOiBuZXcgTWFwLCAn
Q29tcGFyaXNvbic6IG5ldyBNYXB9OwogICAgICAgICB0aGlzLl9jdXN0b21Sb290VXBsb2FkZXJz
ID0geydCYXNlbGluZSc6IG51bGwsICdDb21wYXJpc29uJzogbnVsbH07Ci0gICAgICAgIHRoaXMu
X2ZldGNoZWRSZXZpc2lvbnMgPSB7J0Jhc2VsaW5lJzogbmV3IE1hcCwgJ0NvbXBhcmlzb24nOiBu
ZXcgTWFwfTsKKyAgICAgICAgdGhpcy5fZmV0Y2hlZENvbW1pdHMgPSB7J0Jhc2VsaW5lJzogbmV3
IE1hcCwgJ0NvbXBhcmlzb24nOiBuZXcgTWFwfTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeUdy
b3VwQnlDb25maWd1cmF0aW9uID0geydCYXNlbGluZSc6IG51bGwsICdDb21wYXJpc29uJzogbnVs
bH07Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVRyaWdnZXJhYmxlTGF6aWx5ID0gbmV3IExhemlseUV2
YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3VwZGF0ZVRyaWdnZXJhYmxlLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5QnlDb25maWd1cmF0aW9uID0g
eydCYXNlbGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3IE1hcH07CiAKKyAgICAgICAg
dGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rp
b24odGhpcy5fdXBkYXRlVHJpZ2dlcmFibGUuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX3Jl
bmRlclRyaWdnZXJhYmxlVGVzdHNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24o
dGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVUZXN0cy5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5f
cmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVu
Y3Rpb24odGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXMuYmluZCh0aGlzKSk7CiAgICAg
ICAgIHRoaXMuX3JlbmRlclJlcG9zaXRvcnlQYW5lc0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0
ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJSZXBvc2l0b3J5UGFuZXMuYmluZCh0aGlzKSk7CkBAIC01
NSw4ICs1NSwyNiBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5k
cyBDb21wb25lbnRCYXNlIHsKIAogICAgIF9kaWRVcGRhdGVTZWxlY3RlZFBsYXRmb3JtcygpCiAg
ICAgewotICAgICAgICB0aGlzLl91cGRhdGVDb21taXRTZXRNYXAoKTsKKyAgICAgICAgZm9yIChj
b25zdCBjb25maWd1cmF0aW9uIG9mIFsnQmFzZWxpbmUnLCAnQ29tcGFyaXNvbiddKSB7CisgICAg
ICAgICAgICBjb25zdCBzcGVjaWZpZWRSZXZpc2lvbkZvckNvbmZpZ3VyYXRpb24gPSB0aGlzLl9z
cGVjaWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbl07CisKKyAgICAgICAgICAgIGNvbnN0IG5l
d0ZldGNoZWRDb21taXRzRm9yQ29uZmlndXJhdGlvbiA9IG5ldyBNYXA7CisgICAgICAgICAgICBm
b3IgKGNvbnN0IFtyZXBvc2l0b3J5LCBjb21taXRdIG9mIHRoaXMuX2ZldGNoZWRDb21taXRzW2Nv
bmZpZ3VyYXRpb25dLmVudHJpZXMoKSkgeworICAgICAgICAgICAgICAgIGlmICghc3BlY2lmaWVk
UmV2aXNpb25Gb3JDb25maWd1cmF0aW9uLmhhcyhyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgbmV3RmV0Y2hlZENvbW1pdHNGb3JDb25m
aWd1cmF0aW9uLnNldChyZXBvc2l0b3J5LCBjb21taXQpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdGhpcy5fZmV0Y2hlZENvbW1pdHNbY29uZmlndXJhdGlvbl0gPSBuZXdGZXRjaGVkQ29t
bWl0c0ZvckNvbmZpZ3VyYXRpb247CiAKKyAgICAgICAgICAgIGNvbnN0IG5ld0ludmFsaWRSZXZp
c2lvbkZvclJlcG9zaXRvcnkgPSBuZXcgTWFwOworICAgICAgICAgICAgZm9yIChjb25zdCBbcmVw
b3NpdG9yeSwgcmV2aXNpb25dIG9mIHRoaXMuX2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRvcnlC
eUNvbmZpZ3VyYXRpb25bY29uZmlndXJhdGlvbl0uZW50cmllcygpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFzcGVjaWZpZWRSZXZpc2lvbkZvckNvbmZpZ3VyYXRpb24uaGFzKHJlcG9zaXRvcnkp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBuZXdJbnZh
bGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LnNldChyZXBvc2l0b3J5LCByZXZpc2lvbik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5
QnlDb25maWd1cmF0aW9uW2NvbmZpZ3VyYXRpb25dID0gbmV3SW52YWxpZFJldmlzaW9uRm9yUmVw
b3NpdG9yeTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl91cGRhdGVDb21taXRTZXRNYXAoKTsK
ICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9CiAKQEAgLTE5MCw2ICsyMDgs
MTMgQEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgICAgIGNvbnN0IFt0cmlnZ2VyYWJsZSwgZXJyb3JdID0gdGhpcy5fdXBk
YXRlVHJpZ2dlcmFibGVMYXppbHkuZXZhbHVhdGUodGhpcy5fc2VsZWN0ZWRUZXN0cywgdGhpcy5f
c2VsZWN0ZWRQbGF0Zm9ybSk7CiAKICAgICAgICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVz
TGF6aWx5LmV2YWx1YXRlKHRyaWdnZXJhYmxlLCBlcnJvciwgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9y
bSwgdGhpcy5fcmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uLCB0aGlzLl9zaG93Q29tcGFy
aXNvbik7CisKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnYmFzZWxp
bmUtdGVzdGFiaWxpdHknKSwKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkVGVzdGFiaWxpdHlMaXN0
KHRoaXMuX2NvbW1pdFNldE1hcFsnQmFzZWxpbmUnXSwgJ0Jhc2VsaW5lJywgdGhpcy5faW52YWxp
ZFJldmlzaW9uRm9yUmVwb3NpdG9yeUJ5Q29uZmlndXJhdGlvblsnQmFzZWxpbmUnXSkpOworICAg
ICAgICBpZiAodGhpcy5fc2hvd0NvbXBhcmlzb24pIHsKKyAgICAgICAgICAgIHRoaXMucmVuZGVy
UmVwbGFjZSh0aGlzLmNvbnRlbnQoJ2NvbXBhcmlzb24tdGVzdGFiaWxpdHknKSwgdGhpcy5fYnVp
bGRUZXN0YWJpbGl0eUxpc3QodGhpcy5fY29tbWl0U2V0TWFwWydDb21wYXJpc29uJ10sICdDb21w
YXJpc29uJywKKyAgICAgICAgICAgICAgICB0aGlzLl9pbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0
b3J5QnlDb25maWd1cmF0aW9uWydDb21wYXJpc29uJ10pKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIF9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzKCkKQEAgLTMwNCwxMiArMzI5LDEyIEBAIGNsYXNz
IEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2Ugewog
ICAgICAgICAgICAgbmV3Q29tcGFyaXNvbiA9IG51bGw7CiAKICAgICAgICAgY29uc3QgY3VycmVu
dEJhc2VsaW5lID0gdGhpcy5fY29tbWl0U2V0TWFwWydCYXNlbGluZSddOwotICAgICAgICBjb25z
dCBjdXJyZW50Q29tcGFyaXNvbiA9IHRoaXMuX2NvbW1pdFNldE1hcFsnQmFzZWxpbmUnXTsKLSAg
ICAgICAgaWYgKG5ld0Jhc2VsaW5lID09IGN1cnJlbnRCYXNlbGluZSAmJiBuZXdDb21wYXJpc29u
ID09IGN1cnJlbnRDb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBCb3RoIG9mIHRo
ZW0gYXJlIG51bGwuCisgICAgICAgIGNvbnN0IGN1cnJlbnRDb21wYXJpc29uID0gdGhpcy5fY29t
bWl0U2V0TWFwWydDb21wYXJpc29uJ107CisgICAgICAgIGNvbnN0IGFyZUNvbW1pdFNldHNFcXVh
bCA9IChjb21taXRTZXRBLCBjb21taXRTZXRCKSA9PiBjb21taXRTZXRBID09IGNvbW1pdFNldEIg
fHwgKGNvbW1pdFNldEEgJiYgY29tbWl0U2V0QiAmJiBjb21taXRTZXRBLmVxdWFscyhjb21taXRT
ZXRCKSk7CisgICAgICAgIGNvbnN0IHNhbWVCYXNlbGluZUNvbmZpZyA9IGFyZUNvbW1pdFNldHNF
cXVhbChjdXJyZW50QmFzZWxpbmUsIG5ld0Jhc2VsaW5lKTsKKyAgICAgICAgY29uc3Qgc2FtZUNv
bXBhcmlzaW9uQ29uZmlnID0gYXJlQ29tbWl0U2V0c0VxdWFsKGN1cnJlbnRDb21wYXJpc29uLCBu
ZXdDb21wYXJpc29uKTsKIAotICAgICAgICBpZiAobmV3QmFzZWxpbmUgJiYgY3VycmVudEJhc2Vs
aW5lICYmIG5ld0Jhc2VsaW5lLmVxdWFscyhjdXJyZW50QmFzZWxpbmUpCi0gICAgICAgICAgICAm
JiBuZXdDb21wYXJpc29uICYmIGN1cnJlbnRDb21wYXJpc29uICYmIG5ld0NvbXBhcmlzb24uZXF1
YWxzKGN1cnJlbnRDb21wYXJpc29uKSkKKyAgICAgICAgaWYgKHNhbWVCYXNlbGluZUNvbmZpZyAm
JiBzYW1lQ29tcGFyaXNpb25Db25maWcpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5fY29tbWl0U2V0TWFwID0geydCYXNlbGluZSc6IG5ld0Jhc2VsaW5lLCAnQ29tcGFyaXNv
bic6IG5ld0NvbXBhcmlzb259OwpAQCAtMzMxLDggKzM1NiwxMSBAQCBjbGFzcyBDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY29u
c3QgY29tbWl0U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAgICAgZm9yIChsZXQgcmVw
b3NpdG9yeSBvZiByZXBvc2l0b3J5R3JvdXAucmVwb3NpdG9yaWVzKCkpIHsKICAgICAgICAgICAg
IGxldCByZXZpc2lvbiA9IHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFt
ZV0uZ2V0KHJlcG9zaXRvcnkpOwotICAgICAgICAgICAgaWYgKCFyZXZpc2lvbikKLSAgICAgICAg
ICAgICAgICByZXZpc2lvbiA9IHRoaXMuX2ZldGNoZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5h
bWVdLmdldChyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGlmICghcmV2aXNpb24pIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBjb21taXQgPSB0aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0
aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgICAgIGlmIChjb21taXQpCisg
ICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0gY29tbWl0LnJldmlzaW9uKCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoIXJldmlzaW9uKQogICAgICAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICAgICAgbGV0IHBhdGNoID0gbnVsbDsKQEAgLTM1NSw2ICszODMsNDcg
QEAgY2xhc3MgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50
QmFzZSB7CiAgICAgICAgIHJldHVybiBjb21taXRTZXQ7CiAgICAgfQogCisgICAgYXN5bmMgX2Zl
dGNoQ29tbWl0c0ZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5hbWUpCisgICAgeworICAg
ICAgICBjb25zdCBjb21taXRTZXQgPSB0aGlzLl9jb21taXRTZXRNYXBbY29uZmlndXJhdGlvbk5h
bWVdOworICAgICAgICBpZiAoIWNvbW1pdFNldCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBjb25zdCBzcGVjaWZpZWRSZXZpc2lvbnMgPSB0aGlzLl9zcGVjaWZpZWRSZXZpc2lvbnNb
Y29uZmlndXJhdGlvbk5hbWVdOworICAgICAgICBjb25zdCBmZXRjaGVkQ29tbWl0cyA9IHRoaXMu
X2ZldGNoZWRDb21taXRzW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAgICAgY29uc3QgaW52YWxp
ZFJldmlzaW9uRm9yUmVwb3NpdG9yeSA9IHRoaXMuX2ludmFsaWRSZXZpc2lvbkZvclJlcG9zaXRv
cnlCeUNvbmZpZ3VyYXRpb25bY29uZmlndXJhdGlvbk5hbWVdOworCisgICAgICAgIGF3YWl0IFBy
b21pc2UuYWxsKEFycmF5LmZyb20oY29tbWl0U2V0LnJlcG9zaXRvcmllcygpKS5tYXAoKHJlcG9z
aXRvcnkpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uID0gY29tbWl0U2V0LnJldmlz
aW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9y
ZXNvbHZlUmV2aXNpb24ocmVwb3NpdG9yeSwgcmV2aXNpb24sIHNwZWNpZmllZFJldmlzaW9ucywg
aW52YWxpZFJldmlzaW9uRm9yUmVwb3NpdG9yeSwgZmV0Y2hlZENvbW1pdHMpOworICAgICAgICB9
KSk7CisKKyAgICAgICAgY29uc3QgbGF0ZXN0Q29tbWl0U2V0ID0gdGhpcy5fY29tbWl0U2V0TWFw
W2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAgICAgaWYgKGNvbW1pdFNldCAhPSBsYXRlc3RDb21t
aXRTZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCk7CisgICAgfQorCisgICAgYXN5bmMgX3Jlc29sdmVSZXZpc2lvbihyZXBvc2l0b3J5LCByZXZp
c2lvbiwgc3BlY2lmaWVkUmV2aXNpb25zLCBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5LCBm
ZXRjaGVkQ29tbWl0cykKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb25zdCBm
ZXRjaGVkQ29tbWl0ID0gZmV0Y2hlZENvbW1pdHMuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICAg
ICAgaWYgKGZldGNoZWRDb21taXQgJiYgZmV0Y2hlZENvbW1pdC5yZXZpc2lvbigpID09IHJldmlz
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGZldGNoZWRDb21taXRz
LmRlbGV0ZShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdHMgPSBhd2FpdCBD
b21taXRMb2cuZmV0Y2hGb3JTaW5nbGVSZXZpc2lvbihyZXBvc2l0b3J5LCByZXZpc2lvbik7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBpZiAocmV2aXNpb24gIT0gc3BlY2lmaWVkUmV2aXNpb25zLmdldChyZXBvc2l0b3J5KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpbnZhbGlkUmV2aXNpb25Gb3JSZXBv
c2l0b3J5LmRlbGV0ZShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGZldGNoZWRDb21taXRzLnNl
dChyZXBvc2l0b3J5LCBjb21taXRzWzBdKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAg
ICAgICAgICAgIGlmIChyZXZpc2lvbiAhPSBzcGVjaWZpZWRSZXZpc2lvbnMuZ2V0KHJlcG9zaXRv
cnkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGludmFsaWRSZXZpc2lv
bkZvclJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIF9yZW5kZXJSZXBvc2l0b3J5UGFuZXModHJpZ2dlcmFibGUsIGVycm9yLCBwbGF0
Zm9ybSwgcmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uLCBzaG93Q29tcGFyaXNvbikKICAg
ICB7CiAgICAgICAgIHRoaXMuY29udGVudCgncmVwb3NpdG9yeS1jb25maWd1cmF0aW9uLWVycm9y
LXBhbmUnKS5zdHlsZS5kaXNwbGF5ID0gZXJyb3IgPyBudWxsIDogJ25vbmUnOwpAQCAtNDE0LDcg
KzQ4Myw2IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENv
bXBvbmVudEJhc2UgewogICAgIF9idWlsZFJldmlzaW9uVGFibGUoY29uZmlndXJhdGlvbk5hbWUs
IHJlcG9zaXRvcnlHcm91cHMsIGN1cnJlbnRHcm91cCwgcGxhdGZvcm0sIHJlcXVpcmVkUmVwb3Np
dG9yaWVzLCBvcHRpb25hbFJlcG9zaXRvcnlMaXN0LCBhbHdheXNBY2NlcHRzQ3VzdG9tUm9vdHMp
CiAgICAgewogICAgICAgICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVt
ZW50OwotICAgICAgICBjb25zdCBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCiAg
ICAgICAgIGNvbnN0IGN1c3RvbVJvb3RzVEJvZHkgPSBlbGVtZW50KCd0Ym9keScsIFsKICAgICAg
ICAgICAgIGVsZW1lbnQoJ3RyJywgWwpAQCAtNDUzLDYgKzUyMSwyNSBAQCBjbGFzcyBDdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAg
ICAgICldOwogICAgIH0KIAorICAgIF9idWlsZFRlc3RhYmlsaXR5TGlzdChjb21taXRTZXQsIGNv
bmZpZ3VyYXRpb25OYW1lLCBpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5KQorICAgIHsKKyAg
ICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKyAgICAg
ICAgY29uc3QgZW50cmllcyA9IFtdOworCisgICAgICAgIGlmICghY29tbWl0U2V0IHx8ICFjb21t
aXRTZXQucmVwb3NpdG9yaWVzKCkubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisg
ICAgICAgIGZvciAoY29uc3QgcmVwb3NpdG9yeSBvZiBjb21taXRTZXQucmVwb3NpdG9yaWVzKCkp
IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHRoaXMuX2ZldGNoZWRDb21taXRzW2NvbmZp
Z3VyYXRpb25OYW1lXS5nZXQocmVwb3NpdG9yeSk7CisgICAgICAgICAgICBpZiAoY29tbWl0ICYm
IGNvbW1pdC50ZXN0YWJpbGl0eSgpICYmICFpbnZhbGlkUmV2aXNpb25Gb3JSZXBvc2l0b3J5Lmhh
cyhyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goZWxlbWVudCgnbGkn
LCBgJHtjb21taXQucmVwb3NpdG9yeSgpLm5hbWUoKX0gLSAiJHtjb21taXQubGFiZWwoKX0iOiAk
e2NvbW1pdC50ZXN0YWJpbGl0eSgpfWApKTsKKyAgICAgICAgICAgIGlmIChpbnZhbGlkUmV2aXNp
b25Gb3JSZXBvc2l0b3J5LmhhcyhyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgICAgICBlbnRyaWVz
LnB1c2goZWxlbWVudCgnbGknLCBgJHtyZXBvc2l0b3J5Lm5hbWUoKX0gLSAiJHtpbnZhbGlkUmV2
aXNpb25Gb3JSZXBvc2l0b3J5LmdldChyZXBvc2l0b3J5KX0iOiBJbnZhbGlkIHJldmlzaW9uYCkp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisgICAgfQorCiAgICAgX2J1
aWxkUmVwb3NpdG9yeUdyb3VwTGlzdChyZXBvc2l0b3J5R3JvdXBzLCBjdXJyZW50R3JvdXAsIGNv
bmZpZ3VyYXRpb25OYW1lKQogICAgIHsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVu
dEJhc2UuY3JlYXRlRWxlbWVudDsKQEAgLTQ3Niw2ICs1NjMsNyBAQCBjbGFzcyBDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgY2xv
bmVbY29uZmlndXJhdGlvbk5hbWVdID0gZ3JvdXA7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlH
cm91cEJ5Q29uZmlndXJhdGlvbiA9IGNsb25lOwogICAgICAgICB0aGlzLl91cGRhdGVDb21taXRT
ZXRNYXAoKTsKKyAgICAgICAgdGhpcy5fZmV0Y2hDb21taXRzRm9yQ29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uTmFtZSk7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQog
CkBAIC00ODMsMTAgKzU3MSwxOSBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0
b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICB7CiAgICAgICAgIGNvbnN0IHJldmlzaW9u
ID0gdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5nZXQocmVwb3Np
dG9yeSkgfHwgJyc7CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0
ZUVsZW1lbnQ7CisgICAgICAgIGxldCBzY2hlZHVsZWRVcGRhdGUgPSBudWxsOwogICAgICAgICBj
b25zdCBpbnB1dCA9IGVsZW1lbnQoJ2lucHV0Jywge3ZhbHVlOiByZXZpc2lvbiwgb25pbnB1dDog
KCkgPT4gewogICAgICAgICAgICAgdW5tb2RpZmllZElucHV0ID0gbnVsbDsKLSAgICAgICAgICAg
IHRoaXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uc2V0KHJlcG9zaXRv
cnksIGlucHV0LnZhbHVlKTsKKyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uVG9GZXRjaCA9IGlu
cHV0LnZhbHVlOworICAgICAgICAgICAgdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zW2NvbmZpZ3Vy
YXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgcmV2aXNpb25Ub0ZldGNoKTsKICAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOworICAgICAgICAgICAgaWYgKHNjaGVkdWxlZFVw
ZGF0ZSkKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc2NoZWR1bGVkVXBkYXRlKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlZFVwZGF0ZSA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAg
ICAgICAgIGlmIChyZXZpc2lvblRvRmV0Y2ggPT0gaW5wdXQudmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2ZldGNoQ29tbWl0c0ZvckNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5h
bWUpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlZFVwZGF0ZSA9IG51bGw7CisgICAgICAgICAg
ICB9LCAxMDApOwogICAgICAgICB9fSk7CiAgICAgICAgIGxldCB1bm1vZGlmaWVkSW5wdXQgPSBp
bnB1dDsKIApAQCAtNDk0LDcgKzU5MSw3IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZp
Z3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgQ29tbWl0TG9nLmZl
dGNoTGF0ZXN0Q29tbWl0Rm9yUGxhdGZvcm0ocmVwb3NpdG9yeSwgcGxhdGZvcm0pLnRoZW4oKGNv
bW1pdCkgPT4gewogICAgICAgICAgICAgICAgIGlmIChjb21taXQgJiYgdW5tb2RpZmllZElucHV0
KSB7CiAgICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWRJbnB1dC52YWx1ZSA9IGNvbW1pdC5y
ZXZpc2lvbigpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaGVkUmV2aXNpb25zW2Nv
bmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgY29tbWl0LnJldmlzaW9uKCkpOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaGVkQ29tbWl0c1tjb25maWd1cmF0aW9uTmFtZV0u
c2V0KHJlcG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZUNvbW1pdFNldE1hcCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwpAQCAt
NTIxLDYgKzYxOCw3IEBAIGNsYXNzIEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRl
bmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImJhc2VsaW5lLWNv
bmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgogICAgICAgICAgICAgICAgIDxoMj4zLiBD
b25maWd1cmUgQmFzZWxpbmU8L2gyPgogICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0iYmFzZWxp
bmUtcmV2aXNpb24tdGFibGUiIGNsYXNzPSJyZXZpc2lvbi10YWJsZSI+PC90YWJsZT4KKyAgICAg
ICAgICAgICAgICA8dWwgaWQ9ImJhc2VsaW5lLXRlc3RhYmlsaXR5Ij48L3VsPgogICAgICAgICAg
ICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNwZWNpZnktY29tcGFyaXNv
bi1wYW5lIiBjbGFzcz0icGFuZSI+CiAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0ic3BlY2lm
eS1jb21wYXJpc29uLWJ1dHRvbiI+Q29uZmlndXJlIHRvIENvbXBhcmU8L2J1dHRvbj4KQEAgLTUy
OCw2ICs2MjYsNyBAQCBjbGFzcyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgZXh0ZW5k
cyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJjb21wYXJpc29uLWNv
bmZpZ3VyYXRpb24tcGFuZSIgY2xhc3M9InBhbmUiPgogICAgICAgICAgICAgICAgIDxoMj40LiBD
b25maWd1cmUgQ29tcGFyaXNvbjwvaDI+CiAgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJjb21w
YXJpc29uLXJldmlzaW9uLXRhYmxlIiBjbGFzcz0icmV2aXNpb24tdGFibGUiPjwvdGFibGU+Cisg
ICAgICAgICAgICAgICAgPHVsIGlkPSJjb21wYXJpc29uLXRlc3RhYmlsaXR5Ij48L3VsPgogICAg
ICAgICAgICAgPC9zZWN0aW9uPmA7CiAgICAgfQogCkBAIC02NzQsNiArNzczLDEyIEBAIGNsYXNz
IEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2Ugewog
ICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICAgICAgIGZvbnQt
d2VpZ2h0OiBpbmhlcml0OwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjYmFzZWxpbmUt
dGVzdGFiaWxpdHkgbGksCisgICAgICAgICAgICAjY29tcGFyaXNvbi10ZXN0YWJpbGl0eSBsaSB7
CisgICAgICAgICAgICAgICAgY29sb3I6ICNjMzM7CisgICAgICAgICAgICAgICAgd2lkdGg6IDIw
cmVtOworICAgICAgICAgICAgfQogYDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3Jv
dXAtZm9ybS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50
cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCmluZGV4IGExY2QyZGMzZTM3OTdjZmRh
OWZmYjYwMjBiMDhhMDJlYWI2MmUwZDIuLjgwMWQ0ZjBkOTkxY2NmNjRiYWQyMTFlYzNiZDk0MmYx
NTBjY2IxMWIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1n
cm91cC1mb3JtLmpzCkBAIC0xMzUsNyArMTM1LDI5IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RH
cm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgIGVsZW1lbnQoJ3Ro
ZWFkJywKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0cicsCiAgICAgICAgICAgICAgICAgICAg
IFtlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgJ1JlcG9zaXRvcnknKSwgY29tbWl0U2V0TGFi
ZWxzLm1hcCgobGFiZWwpID0+IGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IGNvbW1pdFNldExhYmVs
cy5sZW5ndGggKyAxfSwgbGFiZWwpKSwgZWxlbWVudCgndGQnKV0pKSwKLSAgICAgICAgICAgIHRo
aXMuX2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9yeUxpc3QsIGNvbW1pdFNldE1hcCwg
b3duZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMuX2hhc0luY29tcGxldGVPd25lZFJl
cG9zaXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCldKTsKKyAgICAgICAgICAgIHRoaXMu
X2NvbnN0cnVjdFRhYmxlQm9keUxpc3QocmVwb3NpdG9yeUxpc3QsIGNvbW1pdFNldE1hcCwgb3du
ZWRSZXBvc2l0b3JpZXNCeVJlcG9zaXRvcnksIHRoaXMuX2hhc0luY29tcGxldGVPd25lZFJlcG9z
aXRvcnksIHVuY3VzdG9taXplZENvbW1pdFNldE1hcCksCisgICAgICAgICAgICB0aGlzLl9jb25z
dHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFwKV0pOworICAgIH0KKworICAgIF9jb25z
dHJ1Y3RUZXN0YWJpbGl0eVJvd3MoY29tbWl0U2V0TWFwKQorICAgIHsKKyAgICAgICAgY29uc3Qg
ZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKworICAgICAgICBsZXQgaGFz
Q29tbWl0V2l0aFRlc3RhYmlsaXR5ID0gZmFsc2U7CisgICAgICAgIGNvbnN0IGNvbW1pdFNldHMg
PSBBcnJheS5mcm9tKGNvbW1pdFNldE1hcC52YWx1ZXMoKSk7CisgICAgICAgIGZvciAoY29uc3Qg
Y29tbWl0U2V0IG9mIGNvbW1pdFNldHMpCisgICAgICAgICAgICBoYXNDb21taXRXaXRoVGVzdGFi
aWxpdHkgfD0gISFjb21taXRTZXQuY29tbWl0c1dpdGhUZXN0YWJpbGl0eSgpOworICAgICAgICBp
ZiAoIWhhc0NvbW1pdFdpdGhUZXN0YWJpbGl0eSkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKwor
ICAgICAgICBjb25zdCB0ZXN0YWJpbGl0eVJvd3MgPSBbXTsKKyAgICAgICAgZm9yIChjb25zdCBj
b21taXRTZXQgb2YgY29tbWl0U2V0TWFwLnZhbHVlcygpKSB7CisgICAgICAgICAgICBjb25zdCBy
b3dzID0gY29tbWl0U2V0LmNvbW1pdHNXaXRoVGVzdGFiaWxpdHkoKS5tYXAoKGNvbW1pdCkgPT4K
KyAgICAgICAgICAgICAgICBlbGVtZW50KCd0cicsIHtjbGFzczogJ3Rlc3RhYmlsaXR5J30sIGAk
e2NvbW1pdC5yZXBvc2l0b3J5KCkubmFtZSgpfSAtICR7Y29tbWl0LmxhYmVsKCl9OiAke2NvbW1p
dC50ZXN0YWJpbGl0eSgpfWApKTsKKyAgICAgICAgICAgIHRlc3RhYmlsaXR5Um93cy5wdXNoKGVs
ZW1lbnQoJ3RkJywge2NvbHNwYW46IGNvbW1pdFNldE1hcC5zaXplICsgMX0sIHJvd3MpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBlbGVtZW50KCd0Ym9keScsIGVsZW1lbnQoJ3RyJywg
W2VsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9KSwgdGVzdGFiaWxpdHlSb3dzLCBlbGVtZW50KCd0
ZCcpXSkpOwogICAgIH0KIAogICAgIF9jb25zdHJ1Y3RUYWJsZUJvZHlMaXN0KHJlcG9zaXRvcnlM
aXN0LCBjb21taXRTZXRNYXAsIG93bmVkUmVwb3NpdG9yaWVzQnlSZXBvc2l0b3J5LCBoYXNJbmNv
bXBsZXRlT3duZWRSZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21taXRTZXRNYXApCkBAIC0yNTUs
OCArMjc3LDggQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RH
cm91cEZvcm0gewogICAgICAgICAgICAgb25jaGFuZ2U6ICgpID0+IHsKICAgICAgICAgICAgICAg
ICBpZiAob3duZXJSZXBvc2l0b3J5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgICAgICBjb21taXRTZXRNYXAuZ2V0KGNvbHVtbkxhYmVsKS51cGRhdGVSZXZpc2lv
bkZvck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCByZXZpc2lvbkVkaXRvci52YWx1ZSkuY2F0
Y2goCisgICAgICAgICAgICAgICAgY29tbWl0U2V0TWFwLmdldChjb2x1bW5MYWJlbCkudXBkYXRl
UmV2aXNpb25Gb3JPd25lclJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb25FZGl0b3IudmFs
dWUpLnRoZW4oCisgICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCksCiAgICAgICAgICAgICAgICAgICAgICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGFsZXJ0KGAiJHtyZXZpc2lvbkVkaXRvci52YWx1ZX0iIGRvZXMgbm90IGV4aXN0IGluICIke3Jl
cG9zaXRvcnkubmFtZSgpfSIuYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbkVk
aXRvci52YWx1ZSA9IHJldmlzaW9uOwpAQCAtMjc4LDYgKzMwMCw3IEBAIGNsYXNzIEN1c3RvbWl6
YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV2aXNpb25FZGl0b3IudmFsdWUgPSB1bmN1c3RvbWl6ZWRDb21taXQgPyB1bmN1c3Rv
bWl6ZWRDb21taXQucmV2aXNpb24oKSA6ICcnOwogICAgICAgICAgICAgICAgICAgICBpZiAodW5j
dXN0b21pemVkQ29tbWl0ICYmIHVuY3VzdG9taXplZENvbW1pdC5vd25lckNvbW1pdCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3duZXJSZXZpc2lvbk1hcC5nZXQoY29sdW1uTGFi
ZWwpLnNldChyZXBvc2l0b3J5LCB1bmN1c3RvbWl6ZWRDb21taXQub3duZXJDb21taXQoKS5yZXZp
c2lvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAg
ICAgICAgICAgICAgICB9fSk7CiAgICAgICAgICAgICBub2Rlcy5wdXNoKGVsZW1lbnQoJ3RkJywg
ZWxlbWVudCgnbGFiZWwnLCBbcmFkaW9CdXR0b24sIGxhYmVsVG9DaG9vc2VdKSkpOwogICAgICAg
ICB9CkBAIC0zMzYsNiArMzU5LDExIEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0g
ZXh0ZW5kcyBUZXN0R3JvdXBGb3JtIHsKICAgICAgICAgICAgICNub3RpZnktb24tY29tcGxldGlv
bi1jaGVja2JveCB7CiAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNHJlbTsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgI2N1c3RvbS10YWJsZSB0ci50ZXN0YWJpbGl0eSB7Cisg
ICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICAgICAgICAgICAgICBjb2xvcjog
I2MzMzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGA7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0Lmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5q
cwppbmRleCA0NDViMjcwMTdmMjQ4ZDllNWFjNGMxM2I4NzU1YTBhYWQ1NzIyY2E0Li5iYjViN2Yx
OThjZWYzOWExNGQzM2ZmYTE4MDNkNjkyZjY2N2FhOGZhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKQEAgLTM4
OSw3ICszODksNyBAQCBjbGFzcyBJbnRlcm1lZGlhdGVDb21taXRTZXQgewogICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwoZmV0Y2hpbmdQcm9taXNlcyk7CiAgICAgfQogCi0gICAgY29tbWl0c1dp
dGhUZXN0YWJpbGl0eVdhcm5pbmdzKCkgeyByZXR1cm4gdGhpcy5jb21taXRzKCkuZmlsdGVyKChj
b21taXQpID0+ICEhY29tbWl0LnRlc3RhYmlsaXR5V2FybmluZygpKTsgfQorICAgIGNvbW1pdHNX
aXRoVGVzdGFiaWxpdHkoKSB7IHJldHVybiB0aGlzLmNvbW1pdHMoKS5maWx0ZXIoKGNvbW1pdCkg
PT4gISFjb21taXQudGVzdGFiaWxpdHkoKSk7IH0KICAgICBjb21taXRzKCkgeyByZXR1cm4gIEFy
cmF5LmZyb20odGhpcy5fY29tbWl0QnlSZXBvc2l0b3J5LnZhbHVlcygpKTsgfQogCiAgICAgX2Zl
dGNoQ29tbWl0TG9nQW5kT3duZWRDb21taXRzKHJlcG9zaXRvcnksIHJldmlzaW9uKQo=
</data>
<flag name="review"
          id="375700"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>