<?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>157339</bug_id>
          
          <creation_ts>2016-05-04 00:35:35 -0700</creation_ts>
          <short_desc>Summary page should show warnings when current or baseline data is missing</short_desc>
          <delta_ts>2016-05-04 22:26:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189994</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2016-05-04 00:35:35 -0700</bug_when>
    <thetext>Summary page enhancement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189999</commentid>
    <comment_count>1</comment_count>
      <attachid>278069</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2016-05-04 00:42:18 -0700</bug_when>
    <thetext>Created attachment 278069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190012</commentid>
    <comment_count>2</comment_count>
      <attachid>278069</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-04 02:16:31 -0700</bug_when>
    <thetext>Comment on attachment 278069
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:8
&gt; +        Set summary page to be the home page of v3 UI.

I&apos;d call it the default page since that&apos;s the terminology used in the dashboard.

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        Show warning icon while part of data is missing.

when either baseline or current data is missing
would be clearer.

&gt; Websites/perf.webkit.org/ChangeLog:11
&gt; +        Update unit test for MeasurementSet.

You should explain what kind of updates you&apos;re making.

&gt; Websites/perf.webkit.org/ChangeLog:14
&gt; +        * public/v3/components/ratio-bar-graph.js:

Please add per-function change description below.

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:33
&gt; +        var children = [element(&apos;div&apos;, {class: &apos;seperator&apos;}), element(&apos;div&apos;, {class: &apos;bar&apos;}), element(&apos;div&apos;, {class: &apos;label&apos;})];

Why don&apos;t we declare this after adding updating classes?

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:37
&gt; +        else if(this._ratio != null)

Nit: a space between &quot;if&quot; and &quot;(&quot;.

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:44
&gt; +            var warningIcon = new WarningIcon;
&gt; +            children.push(warningIcon);

We can do this in a single line.

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:49
&gt; +        if (this._ratio) {

You should check that this._ratio is not NaN here.

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:51
&gt; +            this.content().querySelector(&apos;.bar&apos;).style.width = Math.min(percent, 50) + &apos;%&apos;;

We should just specify this as an inline style declaration as in:
var barStyle = &apos;&apos;;
if (this._ratio) {...}
element(&apos;div&apos;, {class: &apos;bar&apos;, style: barStyle});

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:53
&gt; +        this.content().querySelector(&apos;.label&apos;).textContent = this._label;

We should just put the text above where we create the element as in:
element(&apos;div&apos;, {class: &apos;label&apos;}, this._label).

&gt; Websites/perf.webkit.org/public/v3/main.js:23
&gt; +        var summaryPage = manifest.summary? new SummaryPage(manifest.summary) : null;

Nit: We need a space before ?.

&gt; Websites/perf.webkit.org/public/v3/main.js:50
&gt; -        if (dashboardPages)
&gt; +        if (summaryPage)
&gt; +            router.setDefaultPage(summaryPage);
&gt; +        else if (dashboardPages)

Please mention in the change log that you&apos;re changing the default.

&gt; Websites/perf.webkit.org/public/v3/models/measurement-set.js:58
&gt;      fetchBetween(startTime, endTime, callback)

You should mention that you&apos;re rewriting these functions in the change log,
and what the differences between the old &amp; the new implementations are.

&gt; Websites/perf.webkit.org/public/v3/models/measurement-set.js:65
&gt; +            .then(function() {

We usually put .then(function () { in the previous line.
Also note that we need a space between &quot;function&quot; and &quot;()&quot;.

&gt; Websites/perf.webkit.org/public/v3/models/measurement-set.js:122
&gt; +            this._fetchedPrimary = true;

I don&apos;t think this instance variable is no longer used in the promise-based implementation.

&gt; Websites/perf.webkit.org/public/v3/pages/heading.js:19
&gt; +        group = group.filter(function (page) { return page; });

We should do this at the call site instead of magically filtering it in this function.
In general, we should try to keep helper functions, components, modules, etc... as simple as possible
and put as much convoluted logics at the application level (i.e. main.js, -page.js).
Otherwise, we&apos;d end up having to second guess what each function/class *might* do.

ComponentBase.renderReplace (along with other methods on that class) is an exception
since the whole point of that function is helping each component instantiate DOM nodes easily.
(i.e. absorb the complexity in favor of simplifying call sites)

&gt; Websites/perf.webkit.org/public/v3/pages/heading.js:20
&gt;          for (var page of group)

We should add &quot;console.assert(page instanceof Page)&quot; here... (don&apos;t need to do it in this patch).

&gt; Websites/perf.webkit.org/public/v3/pages/page-router.js:16
&gt; +        if(!page)
&gt; +            return;

The same thing here.  It would be weird for someone to be calling addPage and then this function silently ignored it.
We&apos;d have to debug or read the code to figure out that page was null.
It&apos;s better if this code just threw an exception instead.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:15
&gt; +        this._excludedConfigurations = summarySettings.excludedConfigurations;

Please mention this feature in the change log.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:81
&gt; +                    headings = [element(&apos;th&apos;, {class: &apos;minorHeader&apos;}, row.name)];
&gt; +                    if (!rowIndex)
&gt; +                        headings.unshift(element(&apos;th&apos;, {class: &apos;majorHeader&apos;, rowspan: rowGroup.rows.length}, rowGroup.name));

Also explain what this change does.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:97
&gt; +        var anchor = link(ratioGraph, &apos;Open charts&apos;, this.router().url(&apos;charts&apos;, state));

Now that I think about more, we don&apos;t need to instantiate the link element here at all.
We just need to store &apos;Open charts&apos; to a local variable like &apos;anchorLabel&apos; and then use that at the last line of this function.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:187
&gt; +        this._warnings = new Map;

We don&apos;t really need to use a Map here since we&apos;re only ever going to use string keys.
Also, I&apos;d prefer initializing this to `null` in the case there are no warnings.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:197
&gt; +                if (excludedConfigurations &amp;&amp; excludedConfigurations.hasOwnProperty(platform.id()) &amp;&amp; excludedConfigurations[platform.id()].includes(+metric.id()))

Just do &quot;platform.id() in excludedConfigurations&quot; instead.
Also, there&apos;s no need to convert metric.id() to a number.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:262
&gt; +            var platformName = Platform.findById(set.platformId()).name();

Please just store the platform object instead of returning its name.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:264
&gt; +                var missingBaselinePlatforms = self._warnings.get(&apos;Missing baseline&apos;) || new Set;

Why don&apos;t we add &quot;Missing&quot; when we construct the string in render instead?

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:266
&gt; +                self._warnings.set(&apos;Missing baseline&apos;, missingBaselinePlatforms);

I&apos;d prefer to have a pattern like:
if (!(y in x))
  x[y] = ~;
x[y].add(~).
since that&apos;s what we do elsewhere in the perf dashboard.

Now, there isn&apos;t really much reason to be using a Set here
because we&apos;re not gonna have same platforms appearing multiple times
(we should probably verify that somewhere)
so I&apos;d suggest using an array instead to make the code to construct the string simpler.

Note that Set and Map are orders of magnitudes (2x to 200x) slower on almost all browsers.

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:269
&gt; +                var missingCurrentPlatforms = self._warnings.get(&apos;Missing current&apos;) || new Set;

Ditto.

&gt; Websites/perf.webkit.org/unit-tests/measurement-set-tests.js:74
&gt; +        function waitForMeasurementSet()

You should mention what this function does / why these test changes are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190302</commentid>
    <comment_count>3</comment_count>
      <attachid>278069</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2016-05-04 18:34:07 -0700</bug_when>
    <thetext>Comment on attachment 278069
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:49
&gt;&gt; +        if (this._ratio) {
&gt; 
&gt; You should check that this._ratio is not NaN here.

I don&apos;t think it will satisfy the condition when this._ratio equals NaN.

&gt;&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:187
&gt;&gt; +        this._warnings = new Map;
&gt; 
&gt; We don&apos;t really need to use a Map here since we&apos;re only ever going to use string keys.
&gt; Also, I&apos;d prefer initializing this to `null` in the case there are no warnings.

I agree that using Map is unnecessary. But if we initialize warnings to `null` we need to do null-check every time we use it. I think using {} will simplify the code.

&gt;&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:197
&gt;&gt; +                if (excludedConfigurations &amp;&amp; excludedConfigurations.hasOwnProperty(platform.id()) &amp;&amp; excludedConfigurations[platform.id()].includes(+metric.id()))
&gt; 
&gt; Just do &quot;platform.id() in excludedConfigurations&quot; instead.
&gt; Also, there&apos;s no need to convert metric.id() to a number.

[1].includes(&quot;1&quot;) returns false. And metric.id() returns a string instead of a number. So I think the conversion is necessary.

&gt;&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:266
&gt;&gt; +                self._warnings.set(&apos;Missing baseline&apos;, missingBaselinePlatforms);
&gt; 
&gt; I&apos;d prefer to have a pattern like:
&gt; if (!(y in x))
&gt;   x[y] = ~;
&gt; x[y].add(~).
&gt; since that&apos;s what we do elsewhere in the perf dashboard.
&gt; 
&gt; Now, there isn&apos;t really much reason to be using a Set here
&gt; because we&apos;re not gonna have same platforms appearing multiple times
&gt; (we should probably verify that somewhere)
&gt; so I&apos;d suggest using an array instead to make the code to construct the string simpler.
&gt; 
&gt; Note that Set and Map are orders of magnitudes (2x to 200x) slower on almost all browsers.

I can see same platform occurs multiple times here. Because pair of &lt;platform, metric&gt; is unique.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190304</commentid>
    <comment_count>4</comment_count>
      <attachid>278151</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2016-05-04 18:54:48 -0700</bug_when>
    <thetext>Created attachment 278151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190305</commentid>
    <comment_count>5</comment_count>
      <attachid>278151</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2016-05-04 18:57:47 -0700</bug_when>
    <thetext>Comment on attachment 278151
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:27
&gt; +        (MeasurementSet.prototype.fetchBetween): Returns a promise. Fix the bug in previous implementation that we miss some callbacks sometimes. Basically, we will fetch primary cluster first, then secondary clusters. For each secondary cluster fetch, we will always invoke callback even when it fail.

This should be &quot;when it fails&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190310</commentid>
    <comment_count>6</comment_count>
      <attachid>278151</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-04 19:41:16 -0700</bug_when>
    <thetext>Comment on attachment 278151
Patch

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

&gt;&gt; Websites/perf.webkit.org/ChangeLog:27
&gt;&gt; +        (MeasurementSet.prototype.fetchBetween): Returns a promise. Fix the bug in previous implementation that we miss some callbacks sometimes. Basically, we will fetch primary cluster first, then secondary clusters. For each secondary cluster fetch, we will always invoke callback even when it fail.
&gt; 
&gt; This should be &quot;when it fails&quot;.

Please break lines after 120 characters or so instead of putting the entire comment in a single line.

&gt; Websites/perf.webkit.org/ChangeLog:41
&gt; +        (SummaryPageConfigurationGroup.prototype.warnings):
&gt; +        (SummaryPageConfigurationGroup.prototype.fetchAndComputeSummary.set return):
&gt; +        (SummaryPageConfigurationGroup.return.set fetchBetween):
&gt; +        (SummaryPageConfigurationGroup.set then): Deleted.
&gt; +        (SummaryPageConfigurationGroup.set var): Deleted.

Please update this list with the list of actually modified functions and describe changes to computeSummary.

&gt; Websites/perf.webkit.org/ChangeLog:42
&gt; +        * unit-tests/measurement-set-tests.js: Add a helper function to wait for fetchBetween. Update unit tests since fetchBetween returns a promise now.

We should also mention that we need to wait longer for fetchBetween now due to promise chains.

&gt; Websites/perf.webkit.org/public/v3/components/ratio-bar-graph.js:31
&gt; +        var validClassNames = [&apos;better&apos;, &apos;worse&apos;];
&gt; +        for (var name of validClassNames)
&gt; +            this._ratioBarGraph.classList.remove(name);
&gt;  

On my second thought, we should just put better/worse classes on div.bar &amp; div.label and just CSS rules.
That&apos;ll simplify this code.

&gt; Websites/perf.webkit.org/public/v3/models/measurement-set.js:66
&gt; +            var promiseList = [];
&gt; +            for (var clusterEndTime of self.findClusters(startTime, endTime)) {

I guess we should just use .map instead:
self.findClusters(startTime, endTime).map(function (clusterEndTime) {
...
})

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:97
&gt; +        var anchor = link(ratioGraph, &apos;Open charts&apos;, this.router().url(&apos;charts&apos;, state));

I think omit &apos;Open charts&apos; here:
link(ratioGraph, this.router().url(&apos;charts&apos;, state));

&gt; Websites/perf.webkit.org/public/v3/pages/summary-page.js:103
&gt; +                warningText += &apos;Missing &apos; + type + &apos; for following platform(s): &apos; + Array.from(platforms).map(function (platform) { return platform.name(); }).join(&apos;, &apos;);

Use template literal here: `Missing ${type} for following platform(s): ${platformList}` where platformList is the result of Array.from...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190317</commentid>
    <comment_count>7</comment_count>
      <attachid>278155</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2016-05-04 21:27:11 -0700</bug_when>
    <thetext>Created attachment 278155
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190322</commentid>
    <comment_count>8</comment_count>
      <attachid>278155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 22:26:41 -0700</bug_when>
    <thetext>Comment on attachment 278155
Patch for landing

Clearing flags on attachment: 278155

Committed r200449: &lt;http://trac.webkit.org/changeset/200449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190323</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 22:26:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278069</attachid>
            <date>2016-05-04 00:42:18 -0700</date>
            <delta_ts>2016-05-04 18:54:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157339-20160504004257.patch</filename>
            <type>text/plain</type>
            <size>37042</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDA2CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA3MDdiOTcwOTA5OTUxZTI4ODdkNWI1ODVmYjZhMWY5MTBlMWM5YThkLi4zMWQzOTA0NjY0
NDVhNGVhNDJjZmY2M2M1MWU2NWE0YzhiMmM5NWFkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxNi0wNS0wNCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBTdW1tYXJ5IHBhZ2UgZW5oYW5jZW1lbnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgc3VtbWFyeSBwYWdl
IHRvIGJlIHRoZSBob21lIHBhZ2Ugb2YgdjMgVUkuCisgICAgICAgIFNob3cgd2FybmluZyBpY29u
IHdoaWxlIHBhcnQgb2YgZGF0YSBpcyBtaXNzaW5nLgorICAgICAgICBNYWtlIGZldGNoQmV0d2Vl
biByZXR1cm5zIGEgcHJvbWlzZS4KKyAgICAgICAgVXBkYXRlIHVuaXQgdGVzdCBmb3IgTWVhc3Vy
ZW1lbnRTZXQuCisgICAgICAgIEFkZCBhIHdvcmthcm91bmQgdG8gc2tpcCBzb21lIHBsYXRmb3Jt
IGFuZCBtZXRyaWMgY29uZmlndXJhdGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9u
ZW50cy9yYXRpby1iYXItZ3JhcGguanM6CisgICAgICAgIChSYXRpb0JhckdyYXBoKToKKyAgICAg
ICAgKFJhdGlvQmFyR3JhcGgucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChSYXRpb0Jhckdy
YXBoLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoUmF0aW9CYXJHcmFwaC5jc3NUZW1wbGF0
ZSk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvd2FybmluZy1pY29uLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFdhcm5pbmdJY29uKToKKyAgICAgICAgKFdhcm5pbmdJY29uLmNzc1RlbXBs
YXRlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvaW5kZXguaHRtbDoKKyAgICAgICAgKiBwdWJsaWMv
djMvbWFpbi5qczoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMv
bWVhc3VyZW1lbnQtc2V0LmpzOgorICAgICAgICAoTWVhc3VyZW1lbnRTZXQpOgorICAgICAgICAo
TWVhc3VyZW1lbnRTZXQucHJvdG90eXBlLmZldGNoQmV0d2Vlbik6CisgICAgICAgIChNZWFzdXJl
bWVudFNldC5wcm90b3R5cGUuX2NvbnN0cnVjdFVybC5yZXR1cm4uYXBpLm1lYXN1cmVtZW50LnNl
dCBwbGF0Zm9ybSk6CisgICAgICAgIChNZWFzdXJlbWVudFNldC5wcm90b3R5cGUuX2ZldGNoU2Vj
b25kYXJ5Q2x1c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoTWVhc3VyZW1lbnRTZXQucHJvdG90
eXBlLl9mZXRjaC5lbHNlLnVybC5hcGkubWVhc3VyZW1lbnQuc2V0IHBsYXRmb3JtKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvaGVhZGluZy5qczoKKyAgICAgICAgKEhlYWRp
bmcucHJvdG90eXBlLmFkZFBhZ2VHcm91cCk6CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL3Bh
Z2Utcm91dGVyLmpzOgorICAgICAgICAoUGFnZVJvdXRlci5wcm90b3R5cGUuYWRkUGFnZSk6Cisg
ICAgICAgICogcHVibGljL3YzL3BhZ2VzL3N1bW1hcnktcGFnZS5qczoKKyAgICAgICAgKFN1bW1h
cnlQYWdlKToKKyAgICAgICAgKFN1bW1hcnlQYWdlLnByb3RvdHlwZS5fY3JlYXRlQ29uZmlndXJh
dGlvbkdyb3VwKToKKyAgICAgICAgKFN1bW1hcnlQYWdlLnByb3RvdHlwZS5fY29uc3RydWN0VGFi
bGUpOgorICAgICAgICAoU3VtbWFyeVBhZ2UucHJvdG90eXBlLnRoaXMuX3JlbmRlclF1ZXVlLnB1
c2gpOgorICAgICAgICAoU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXApOgorICAgICAgICAo
U3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAucHJvdG90eXBlLndhcm5pbmdzKToKKyAgICAg
ICAgKFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLnByb3RvdHlwZS5mZXRjaEFuZENvbXB1
dGVTdW1tYXJ5LnNldCByZXR1cm4pOgorICAgICAgICAoU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9u
R3JvdXAucmV0dXJuLnNldCBmZXRjaEJldHdlZW4pOgorICAgICAgICAoU3VtbWFyeVBhZ2VDb25m
aWd1cmF0aW9uR3JvdXAuc2V0IHRoZW4pOiBEZWxldGVkLgorICAgICAgICAoU3VtbWFyeVBhZ2VD
b25maWd1cmF0aW9uR3JvdXAuc2V0IHZhcik6IERlbGV0ZWQuCisgICAgICAgICogdW5pdC10ZXN0
cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanM6CisgICAgICAgIChwcm9taXNlLnNldCBmZXRjaEJl
dHdlZW4pOgorICAgICAgICAoc2V0IE1lYXN1cmVtZW50U2V0KToKKyAgICAgICAgKHNldCBmZXRj
aEJldHdlZW4pOiBEZWxldGVkLgorCiAyMDE2LTA0LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIENoYXJ0IHN0YXR1cyBzaG91bGQgYWx3YXlzIGJlIGNvbXB1
dGVkIGFnYWluc3QgcHJpb3IgdmFsdWVzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvcmF0aW8tYmFyLWdyYXBoLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3JhdGlvLWJhci1ncmFwaC5qcwpp
bmRleCA3MGY5MjM4ZWRlMWQ5YzA1ZWUzNzIyNjVkYzVkMTE4NTY1YWQ3YzVkLi41YWI4NmJjZDU4
MjdjZDVlNDFkMzc5MDRiMDVjYjY1ZWJjZmMwYzhhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvcmF0aW8tYmFyLWdyYXBoLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9yYXRpby1iYXIt
Z3JhcGguanMKQEAgLTMsMTggKzMsMTcgQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENv
bXBvbmVudEJhc2UgewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHN1cGVyKCdy
YXRpby1iYXItZ3JhcGgnKTsKLSAgICAgICAgdGhpcy5fcmF0aW8gPSAwOworICAgICAgICB0aGlz
Ll9yYXRpbyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2xhYmVsID0gbnVsbDsKICAgICAgICAgdGhp
cy5fc2hvdWxkUmVuZGVyID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fYmFyID0gdGhpcy5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignLmJhcicpOwotICAgICAgICB0aGlzLl9sYWJlbENvbnRhaW5lciA9
IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5sYWJlbCcpOwogICAgIH0KIAotICAgIHVw
ZGF0ZShyYXRpbywgbGFiZWwpCisgICAgdXBkYXRlKHJhdGlvLCBsYWJlbCwgc2hvd1dhcm5pbmdJ
Y29uKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmF0aW8gPj0gLTEgJiYgcmF0aW8g
PD0gMSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzTmFOKHJhdGlvKSB8fCAocmF0aW8gPj0g
LTEgJiYgcmF0aW8gPD0gMSkpOwogICAgICAgICB0aGlzLl9yYXRpbyA9IHJhdGlvOwogICAgICAg
ICB0aGlzLl9sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlzLl9zaG93V2FybmluZ0ljb24gPSBz
aG93V2FybmluZ0ljb247CiAgICAgICAgIHRoaXMuX3Nob3VsZFJlbmRlciA9IHRydWU7CiAgICAg
fQogCkBAIC0yMiwxOCArMjEsNDEgQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENvbXBv
bmVudEJhc2UgewogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zaG91bGRSZW5kZXIpCiAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3Nob3VsZFJlbmRlciA9IGZhbHNlOwogCi0g
ICAgICAgIHZhciBwZXJjZW50ID0gTWF0aC5hYnModGhpcy5fcmF0aW8gKiAxMDApOwotICAgICAg
ICB0aGlzLl9sYWJlbENvbnRhaW5lci50ZXh0Q29udGVudCA9IHRoaXMuX2xhYmVsOwotICAgICAg
ICB0aGlzLl9iYXIuc3R5bGUud2lkdGggPSBNYXRoLm1pbihwZXJjZW50LCA1MCkgKyAnJSc7Ci0g
ICAgICAgIHRoaXMuX2Jhci5wYXJlbnROb2RlLmNsYXNzTmFtZSA9ICdyYXRpby1iYXItZ3JhcGgg
JyArICh0aGlzLl9yYXRpbyA+IDAgPyAnYmV0dGVyJyA6ICd3b3JzZScpOworICAgICAgICB2YXIg
ZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKyAgICAgICAgdmFyIGNvbnRh
aW5lciA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5yYXRpby1iYXItZ3JhcGgnKTsK
IAotICAgICAgICB0aGlzLl9zaG91bGRSZW5kZXIgPSBmYWxzZTsKKyAgICAgICAgdmFyIHZhbGlk
Q2xhc3NOYW1lcyA9IFsnYmV0dGVyJywgJ3dvcnNlJywgJ25vLXRlc3QnXTsKKyAgICAgICAgZm9y
ICh2YXIgbmFtZSBvZiB2YWxpZENsYXNzTmFtZXMpCisgICAgICAgICAgICBjb250YWluZXIuY2xh
c3NMaXN0LnJlbW92ZShuYW1lKTsKKworICAgICAgICB2YXIgY2hpbGRyZW4gPSBbZWxlbWVudCgn
ZGl2Jywge2NsYXNzOiAnc2VwZXJhdG9yJ30pLCBlbGVtZW50KCdkaXYnLCB7Y2xhc3M6ICdiYXIn
fSksIGVsZW1lbnQoJ2RpdicsIHtjbGFzczogJ2xhYmVsJ30pXTsKKworICAgICAgICBpZiAoaXNO
YU4odGhpcy5fcmF0aW8pKQorICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ25v
LXRlc3QnKTsKKyAgICAgICAgZWxzZSBpZih0aGlzLl9yYXRpbyAhPSBudWxsKQorICAgICAgICAg
ICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5fcmF0aW8gPiAwID8gJ2JldHRlcicgOiAn
d29yc2UnKTsKKworICAgICAgICBpZiAodGhpcy5fc2hvd1dhcm5pbmdJY29uKSB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fcmF0aW8gJiYgdGhpcy5fcmF0aW8gPCAtMC40KQorICAgICAgICAgICAg
ICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCd3YXJuaW5nLW9uLXJpZ2h0Jyk7CisgICAgICAg
ICAgICB2YXIgd2FybmluZ0ljb24gPSBuZXcgV2FybmluZ0ljb247CisgICAgICAgICAgICBjaGls
ZHJlbi5wdXNoKHdhcm5pbmdJY29uKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMucmVuZGVy
UmVwbGFjZShjb250YWluZXIsIGNoaWxkcmVuKTsKKworICAgICAgICBpZiAodGhpcy5fcmF0aW8p
IHsKKyAgICAgICAgICAgIHZhciBwZXJjZW50ID0gTWF0aC5hYnModGhpcy5fcmF0aW8gKiAxMDAp
OworICAgICAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmJhcicpLnN0eWxl
LndpZHRoID0gTWF0aC5taW4ocGVyY2VudCwgNTApICsgJyUnOworICAgICAgICB9CisgICAgICAg
IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5sYWJlbCcpLnRleHRDb250ZW50ID0gdGhp
cy5fbGFiZWw7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InJhdGlvLWJhci1ncmFwaCI+PGRpdiBjbGFzcz0ic2Vw
ZXJhdG9yIj48L2Rpdj48ZGl2IGNsYXNzPSJiYXIiPjwvZGl2PjxkaXYgY2xhc3M9ImxhYmVsIj48
L2Rpdj48L2Rpdj5gOworICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InJhdGlvLWJhci1ncmFw
aCI+PC9kaXY+YDsKICAgICB9CiAKICAgICBzdGF0aWMgY3NzVGVtcGxhdGUoKQpAQCAtNTAsNiAr
NzIsMTEgQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAg
ICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgICAgICBjb2xv
cjogYmxhY2s7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAucmF0aW8tYmFyLWdyYXBoIHdh
cm5pbmctaWNvbiB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgICAgIHRvcDogMDsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIC5yYXRpby1iYXItZ3JhcGggLnNlcGVyYXRvciB7CiAgICAg
ICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgIGxlZnQ6IDUw
JTsKQEAgLTY4LDYgKzk1LDEzIEBAIGNsYXNzIFJhdGlvQmFyR3JhcGggZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwog
ICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjMzM7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAucmF0aW8tYmFyLWdyYXBoOm5vdCgud2FybmluZy1vbi1yaWdodCkgd2FybmluZy1pY29u
IHsKKyAgICAgICAgICAgICAgICBsZWZ0OiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnJhdGlvLWJhci1ncmFwaC53YXJuaW5nLW9uLXJpZ2h0IHdhcm5pbmctaWNvbiB7CisgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOworICAgICAgICAgICAgICAgIHJpZ2h0OiAw
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgLnJhdGlvLWJhci1ncmFwaC5iZXR0ZXIgLmJh
ciB7CiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzNjMzsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy93
YXJuaW5nLWljb24uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvd2FybmluZy1pY29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYjM4ODlkNjIxOWVjM2NiNmQyZDhi
NjYyMTQxMDkzZDU1MGMyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvd2FybmluZy1pY29uLmpzCkBAIC0wLDAgKzEsMzMg
QEAKKworY2xhc3MgV2FybmluZ0ljb24gZXh0ZW5kcyBCdXR0b25CYXNlIHsKKyAgICBjb25zdHJ1
Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcignd2FybmluZy1pY29uJyk7CisgICAgfQorCisg
ICAgc3RhdGljIGNzc1RlbXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdXBlci5jc3NU
ZW1wbGF0ZSgpICsgYAorICAgICAgICAgICAgLmJ1dHRvbiB7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogYmxvY2s7CisgICAgICAgICAgICAgICAgd2lkdGg6IDAuN3JlbTsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDAuN3JlbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5idXR0b24g
c3ZnIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgYDsKKyAgICB9CisKKyAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBgPGEgY2xhc3M9ImJ1dHRvbiIgaHJlZj0iIyI+PHN2ZyB2aWV3Qm94PSIwIDAg
MTAwIDEwMCI+CisgICAgICAgICAgICA8ZyBzdHJva2U9IiM5ZjYwMDAiIGZpbGw9IiM5ZjYwMDAi
IHN0cm9rZS13aWR0aD0iNyI+CisgICAgICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAs
IDEwMCwwLCAwLDEwMCIgLz4KKyAgICAgICAgICAgIDwvZz4KKyAgICAgICAgPC9zdmc+PC9hPmA7
CisgICAgfQorCit9CisKK0NvbXBvbmVudEJhc2UuZGVmaW5lRWxlbWVudCgnd2FybmluZy1pY29u
JywgV2FybmluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9pbmRleC5odG1sIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9p
bmRleC5odG1sCmluZGV4IDNkYjY1N2I1ZjZlMWZkNDJlYWUzNzhmNzMwNDUwMTI1NTllOWQyOWEu
LjNkMTEwNjhiYTc5MGE4ZTEzYjQzY2YwNzU5NjY2MjRkNWQ5MjQ1Y2QgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRtbAorKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwKQEAgLTY2LDYgKzY2LDcgQEAg
UnVuIHRvb2xzL2J1bmRsZS12My1zY3JpcHRzIHRvIHNwZWVkIHVwIHRoZSBsb2FkIHRpbWUgZm9y
IHByb2R1Y3Rpb24uYCk7CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2Jhc2UuanMi
Pjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9zcGlubmVyLWljb24u
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9idXR0b24tYmFz
ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3dhcm5pbmct
aWNvbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2Nsb3Nl
LWJ1dHRvbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2Nv
bW1pdC1sb2ctdmlld2VyLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBv
bmVudHMvZWRpdGFibGUtdGV4dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21haW4uanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21haW4uanMKaW5kZXggYTIxYjczNTdkNGUzMTI2ZWNhNzE5MjQzNGFlMjZi
ZjcxMDE4MTM4Mi4uMjM3MjBkZTQ1NWY2MTBlY2JhMGZhMDQ2OTdiZjI5Zjk5ZTdlOGU0YiAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tYWluLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbWFpbi5qcwpAQCAtMjAsNyArMjAs
NyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICB2YXIgcm91dGVyID0gbmV3IFBhZ2VSb3V0
ZXIoKTsKICAgICAgICAgdmFyIGNoYXJ0c1Rvb2xiYXIgPSBuZXcgQ2hhcnRzVG9vbGJhcjsKIAot
ICAgICAgICB2YXIgc3VtbWFyeVBhZ2UgPSBuZXcgU3VtbWFyeVBhZ2UobWFuaWZlc3Quc3VtbWFy
eSk7CisgICAgICAgIHZhciBzdW1tYXJ5UGFnZSA9IG1hbmlmZXN0LnN1bW1hcnk/IG5ldyBTdW1t
YXJ5UGFnZShtYW5pZmVzdC5zdW1tYXJ5KSA6IG51bGw7CiAgICAgICAgIHZhciBjaGFydHNQYWdl
ID0gbmV3IENoYXJ0c1BhZ2UoY2hhcnRzVG9vbGJhcik7CiAgICAgICAgIHZhciBhbmFseXNpc0Nh
dGVnb3J5UGFnZSA9IG5ldyBBbmFseXNpc0NhdGVnb3J5UGFnZSgpOwogCkBAIC00NSw3ICs0NSw5
IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgICAgIGZvciAodmFyIHBhZ2Ugb2YgZGFzaGJvYXJk
UGFnZXMpCiAgICAgICAgICAgICByb3V0ZXIuYWRkUGFnZShwYWdlKTsKIAotICAgICAgICBpZiAo
ZGFzaGJvYXJkUGFnZXMpCisgICAgICAgIGlmIChzdW1tYXJ5UGFnZSkKKyAgICAgICAgICAgIHJv
dXRlci5zZXREZWZhdWx0UGFnZShzdW1tYXJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKGRhc2hi
b2FyZFBhZ2VzKQogICAgICAgICAgICAgcm91dGVyLnNldERlZmF1bHRQYWdlKGRhc2hib2FyZFBh
Z2VzWzBdKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcm91dGVyLnNldERlZmF1bHRQYWdl
KGNoYXJ0c1BhZ2UpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzCmluZGV4IDk3ZTkyMDZjODc2YTg4
ZGM0MWVmYThiNmZlODk2NDM5MjAyODM4MmEuLjIwNjc2MjllYzEwYTViZjFhYTgxMjM3NjE4NzQ0
NDgyMjM4NDIzYTQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMKQEAgLTEwLDE1ICsxMCwxNSBA
QCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgICAgIHRoaXMuX21ldHJpY0lkID0gbWV0cmlj
SWQ7CiAgICAgICAgIHRoaXMuX2xhc3RNb2RpZmllZCA9ICtsYXN0TW9kaWZpZWQ7CiAKLSAgICAg
ICAgdGhpcy5fd2FpdGluZ0ZvclByaW1hcnlDbHVzdGVyID0gbnVsbDsKICAgICAgICAgdGhpcy5f
ZmV0Y2hlZFByaW1hcnkgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fZW5kVGltZVRvQ2FsbGJhY2sg
PSB7fTsKIAogICAgICAgICB0aGlzLl9zb3J0ZWRDbHVzdGVycyA9IFtdOwogICAgICAgICB0aGlz
Ll9wcmltYXJ5Q2x1c3RlckVuZFRpbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9jbHVzdGVyQ291
bnQgPSBudWxsOwogICAgICAgICB0aGlzLl9jbHVzdGVyU3RhcnQgPSBudWxsOwogICAgICAgICB0
aGlzLl9jbHVzdGVyU2l6ZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbEZldGNoZXMgPSB7fTsK
KyAgICAgICAgdGhpcy5fcHJpbWFyeUNsdXN0ZXJQcm9taXNlID0gbnVsbDsKICAgICB9CiAKICAg
ICBzdGF0aWMgZmluZFNldChwbGF0Zm9ybUlkLCBtZXRyaWNJZCwgbGFzdE1vZGlmaWVkKQpAQCAt
MzUsNyArMzUsNiBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgewogICAgICAgICB2YXIg
Y2x1c3RlclN0YXJ0ID0gdGhpcy5fY2x1c3RlclN0YXJ0OwogICAgICAgICB2YXIgY2x1c3RlclNp
emUgPSB0aGlzLl9jbHVzdGVyU2l6ZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY2x1c3RlclN0
YXJ0ICYmIGNsdXN0ZXJTaXplKTsKIAogICAgICAgICBmdW5jdGlvbiBjb21wdXRlQ2x1c3RlclN0
YXJ0KHRpbWUpIHsKICAgICAgICAgICAgIHZhciBkaWZmID0gdGltZSAtIGNsdXN0ZXJTdGFydDsK
QEAgLTU4LDgxICs1Nyw1NiBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAKICAgICBmZXRjaEJl
dHdlZW4oc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fZmV0Y2hlZFByaW1hcnkpIHsKLSAgICAgICAgICAgIHZhciBwcmltYXJ5RmV0Y2hIYWRG
YWlsZWQgPSB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgPT09IGZhbHNlOwotICAgICAg
ICAgICAgaWYgKHByaW1hcnlGZXRjaEhhZEZhaWxlZCkgewotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICB2YXIgc2hvdWxkU3RhcnRQcmltYXJ5RmV0Y2ggPSAhdGhpcy5fd2FpdGluZ0ZvclByaW1h
cnlDbHVzdGVyOwotICAgICAgICAgICAgaWYgKHNob3VsZFN0YXJ0UHJpbWFyeUZldGNoKQotICAg
ICAgICAgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JQcmltYXJ5Q2x1c3RlciA9IFtdOwotCi0gICAg
ICAgICAgICB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIucHVzaCh7c3RhcnRUaW1lOiBz
dGFydFRpbWUsIGVuZFRpbWU6IGVuZFRpbWUsIGNhbGxiYWNrOiBjYWxsYmFja30pOwotCi0gICAg
ICAgICAgICBpZiAoc2hvdWxkU3RhcnRQcmltYXJ5RmV0Y2gpCi0gICAgICAgICAgICAgICAgdGhp
cy5fZmV0Y2gobnVsbCwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRoaXMuX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcnMoc3RhcnRUaW1lLCBlbmRUaW1l
LCBjYWxsYmFjayk7CisgICAgICAgIGlmICghdGhpcy5fcHJpbWFyeUNsdXN0ZXJQcm9taXNlKQor
ICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUNsdXN0ZXJQcm9taXNlID0gdGhpcy5fZmV0Y2hQcmlt
YXJ5Q2x1c3RlcigpOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHRoaXMuX3By
aW1hcnlDbHVzdGVyUHJvbWlzZS5jYXRjaChjYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0aGlz
Ll9wcmltYXJ5Q2x1c3RlclByb21pc2UKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIHZhciBwcm9taXNlTGlzdCA9IFtdOworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGNsdXN0ZXJFbmRUaW1lIG9mIHNlbGYuZmluZENsdXN0ZXJzKHN0YXJ0VGltZSwgZW5k
VGltZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoIXNlbGYuX2FsbEZldGNoZXNbY2x1c3Rl
ckVuZFRpbWVdKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWxsRmV0Y2hlc1tjbHVz
dGVyRW5kVGltZV0gPSBzZWxmLl9mZXRjaFNlY29uZGFyeUNsdXN0ZXIoY2x1c3RlckVuZFRpbWUp
OworICAgICAgICAgICAgICAgICAgICBzZWxmLl9hbGxGZXRjaGVzW2NsdXN0ZXJFbmRUaW1lXS50
aGVuKGNhbGxiYWNrLCBjYWxsYmFjayk7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VMaXN0
LnB1c2goc2VsZi5fYWxsRmV0Y2hlc1tjbHVzdGVyRW5kVGltZV0pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUxpc3QpOworICAg
ICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcnMoc3RhcnRU
aW1lLCBlbmRUaW1lLCBjYWxsYmFjaykKKyAgICBfY29uc3RydWN0VXJsKHVzZUNhY2hlLCBjbHVz
dGVyRW5kVGltZSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2ZldGNoZWRQ
cmltYXJ5KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY2x1c3RlclN0YXJ0ICYmIHRo
aXMuX2NsdXN0ZXJTaXplKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc29ydGVkQ2x1
c3RlcnMubGVuZ3RoKTsKLQotICAgICAgICB2YXIgY2x1c3RlcnMgPSB0aGlzLmZpbmRDbHVzdGVy
cyhzdGFydFRpbWUsIGVuZFRpbWUpOwotICAgICAgICB2YXIgc2hvdWxkSW52b2tlQ2FsbGFja05v
dyA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBlbmRUaW1lIG9mIGNsdXN0ZXJzKSB7Ci0gICAg
ICAgICAgICB2YXIgaXNQcmltYXJ5Q2x1c3RlciA9IGVuZFRpbWUgPT0gdGhpcy5fcHJpbWFyeUNs
dXN0ZXJFbmRUaW1lOwotICAgICAgICAgICAgdmFyIHNob3VsZFN0YXJ0RmV0Y2ggPSAhaXNQcmlt
YXJ5Q2x1c3RlciAmJiAhKGVuZFRpbWUgaW4gdGhpcy5fZW5kVGltZVRvQ2FsbGJhY2spOwotICAg
ICAgICAgICAgaWYgKHNob3VsZFN0YXJ0RmV0Y2gpCi0gICAgICAgICAgICAgICAgdGhpcy5fZW5k
VGltZVRvQ2FsbGJhY2tbZW5kVGltZV0gPSBbXTsKLQotICAgICAgICAgICAgdmFyIGNhbGxiYWNr
TGlzdCA9IHRoaXMuX2VuZFRpbWVUb0NhbGxiYWNrW2VuZFRpbWVdOwotICAgICAgICAgICAgaWYg
KGlzUHJpbWFyeUNsdXN0ZXIgfHwgY2FsbGJhY2tMaXN0ID09PSB0cnVlKQotICAgICAgICAgICAg
ICAgIHNob3VsZEludm9rZUNhbGxhY2tOb3cgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAo
IWNhbGxiYWNrTGlzdC5pbmNsdWRlcyhjYWxsYmFjaykpCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2tMaXN0LnB1c2goY2FsbGJhY2spOwotCi0gICAgICAgICAgICBpZiAoc2hvdWxkU3RhcnRGZXRj
aCkKLSAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaChlbmRUaW1lLCB0cnVlKTsKKyAgICAgICAg
aWYgKCF1c2VDYWNoZSkgeworICAgICAgICAgICAgcmV0dXJuIGAuLi9hcGkvbWVhc3VyZW1lbnQt
c2V0P3BsYXRmb3JtPSR7dGhpcy5fcGxhdGZvcm1JZH0mbWV0cmljPSR7dGhpcy5fbWV0cmljSWR9
YDsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChzaG91bGRJbnZva2VDYWxsYWNrTm93KQotICAg
ICAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9Ci0KLSAgICBfZmV0Y2goY2x1c3RlckVuZFRpbWUs
IHVzZUNhY2hlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNsdXN0ZXJFbmRUaW1l
IHx8IHVzZUNhY2hlKTsKLQogICAgICAgICB2YXIgdXJsOwotICAgICAgICBpZiAodXNlQ2FjaGUp
IHsKLSAgICAgICAgICAgIHVybCA9IGAuLi9kYXRhL21lYXN1cmVtZW50LXNldC0ke3RoaXMuX3Bs
YXRmb3JtSWR9LSR7dGhpcy5fbWV0cmljSWR9YDsKLSAgICAgICAgICAgIGlmIChjbHVzdGVyRW5k
VGltZSkKLSAgICAgICAgICAgICAgICB1cmwgKz0gJy0nICsgK2NsdXN0ZXJFbmRUaW1lOwotICAg
ICAgICAgICAgdXJsICs9ICcuanNvbic7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdXJs
ID0gYC4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/cGxhdGZvcm09JHt0aGlzLl9wbGF0Zm9ybUlkfSZt
ZXRyaWM9JHt0aGlzLl9tZXRyaWNJZH1gOworICAgICAgICB1cmwgPSBgLi4vZGF0YS9tZWFzdXJl
bWVudC1zZXQtJHt0aGlzLl9wbGF0Zm9ybUlkfS0ke3RoaXMuX21ldHJpY0lkfWA7CisgICAgICAg
IGlmIChjbHVzdGVyRW5kVGltZSkKKyAgICAgICAgICAgIHVybCArPSAnLScgKyArY2x1c3RlckVu
ZFRpbWU7CisgICAgICAgIHVybCArPSAnLmpzb24nOworICAgICAgICByZXR1cm4gdXJsOworICAg
IH0KIAorICAgIF9mZXRjaFByaW1hcnlDbHVzdGVyKCkgewogICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTldpdGhTdGF0dXMoc2VsZi5fY29u
c3RydWN0VXJsKHRydWUsIG51bGwpKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAg
ICBpZiAoK2RhdGFbJ2xhc3RNb2RpZmllZCddIDwgc2VsZi5fbGFzdE1vZGlmaWVkKQorICAgICAg
ICAgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTldpdGhTdGF0dXMoc2VsZi5fY29uc3Ry
dWN0VXJsKGZhbHNlLCBudWxsKSk7CisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAg
fSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgICAgICBpZihlcnJvciA9PSA0MDQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxm
Ll9jb25zdHJ1Y3RVcmwoZmFsc2UsIG51bGwpKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChlcnJvcik7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAg
ICAgICAgIHNlbGYuX2RpZEZldGNoSlNPTih0cnVlLCBkYXRhKTsKKyAgICAgICAgICAgIHNlbGYu
X2FsbEZldGNoZXNbc2VsZi5fcHJpbWFyeUNsdXN0ZXJFbmRUaW1lXSA9IHNlbGYuX3ByaW1hcnlD
bHVzdGVyUHJvbWlzZTsKKyAgICAgICAgfSk7CisgICAgfQogCi0gICAgICAgIHJldHVybiBSZW1v
dGVBUEkuZ2V0SlNPTldpdGhTdGF0dXModXJsKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAg
ICAgICAgICBpZiAoIWNsdXN0ZXJFbmRUaW1lICYmIHVzZUNhY2hlICYmICtkYXRhWydsYXN0TW9k
aWZpZWQnXSA8IHNlbGYuX2xhc3RNb2RpZmllZCkKLSAgICAgICAgICAgICAgICBzZWxmLl9mZXRj
aChjbHVzdGVyRW5kVGltZSwgZmFsc2UpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNlbGYuX2RpZEZldGNoSlNPTighY2x1c3RlckVuZFRpbWUsIGRhdGEpOwotICAgICAgICB9
LCBmdW5jdGlvbiAoZXJyb3IsIHhocikgewotICAgICAgICAgICAgaWYgKCFjbHVzdGVyRW5kVGlt
ZSAmJiBlcnJvciA9PSA0MDQgJiYgdXNlQ2FjaGUpCi0gICAgICAgICAgICAgICAgc2VsZi5fZmV0
Y2goY2x1c3RlckVuZFRpbWUsIGZhbHNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBzZWxmLl9mYWlsZWRUb0ZldGNoSlNPTihjbHVzdGVyRW5kVGltZSwgZXJyb3IpOworICAg
IF9mZXRjaFNlY29uZGFyeUNsdXN0ZXIoZW5kVGltZSkgeworICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTldpdGhTdGF0dXMoc2VsZi5fY29u
c3RydWN0VXJsKHRydWUsIGVuZFRpbWUpKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAg
ICAgICBzZWxmLl9kaWRGZXRjaEpTT04oZmFsc2UsIGRhdGEpOwogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTE0NSw0NCArMTE5LDExIEBAIGNsYXNzIE1lYXN1cmVtZW50U2V0IHsKICAgICAgICAg
ICAgIHRoaXMuX2NsdXN0ZXJDb3VudCA9IHJlc3BvbnNlWydjbHVzdGVyQ291bnQnXTsKICAgICAg
ICAgICAgIHRoaXMuX2NsdXN0ZXJTdGFydCA9IHJlc3BvbnNlWydjbHVzdGVyU3RhcnQnXTsKICAg
ICAgICAgICAgIHRoaXMuX2NsdXN0ZXJTaXplID0gcmVzcG9uc2VbJ2NsdXN0ZXJTaXplJ107Cisg
ICAgICAgICAgICB0aGlzLl9mZXRjaGVkUHJpbWFyeSA9IHRydWU7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJpbWFyeUNsdXN0ZXJFbmRUaW1lKTsK
IAogICAgICAgICB0aGlzLl9hZGRGZXRjaGVkQ2x1c3RlcihuZXcgTWVhc3VyZW1lbnRDbHVzdGVy
KHJlc3BvbnNlKSk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fd2FpdGluZ0ZvclBy
aW1hcnlDbHVzdGVyKTsKLSAgICAgICAgaWYgKCFpc1ByaW1hcnlDbHVzdGVyKSB7Ci0gICAgICAg
ICAgICB0aGlzLl9pbnZva2VDYWxsYmFja3MocmVzcG9uc2UuZW5kVGltZSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fd2FpdGlu
Z0ZvclByaW1hcnlDbHVzdGVyIGluc3RhbmNlb2YgQXJyYXkpOwotCi0gICAgICAgIHRoaXMuX2Zl
dGNoZWRQcmltYXJ5ID0gdHJ1ZTsKLSAgICAgICAgZm9yICh2YXIgZW50cnkgb2YgdGhpcy5fd2Fp
dGluZ0ZvclByaW1hcnlDbHVzdGVyKQotICAgICAgICAgICAgdGhpcy5fZmV0Y2hTZWNvbmRhcnlD
bHVzdGVycyhlbnRyeS5zdGFydFRpbWUsIGVudHJ5LmVuZFRpbWUsIGVudHJ5LmNhbGxiYWNrKTsK
LSAgICAgICAgdGhpcy5fd2FpdGluZ0ZvclByaW1hcnlDbHVzdGVyID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBfZmFpbGVkVG9GZXRjaEpTT04oY2x1c3RlckVuZFRpbWUsIGVycm9yKQotICAgIHsKLSAg
ICAgICAgaWYgKGNsdXN0ZXJFbmRUaW1lKSB7Ci0gICAgICAgICAgICB0aGlzLl9pbnZva2VDYWxs
YmFja3MoY2x1c3RlckVuZFRpbWUsIGVycm9yIHx8IHRydWUpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2ZldGNoZWRQcmlt
YXJ5KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fd2FpdGluZ0ZvclByaW1hcnlDbHVz
dGVyIGluc3RhbmNlb2YgQXJyYXkpOwotICAgICAgICBmb3IgKHZhciBlbnRyeSBvZiB0aGlzLl93
YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIpCi0gICAgICAgICAgICBlbnRyeS5jYWxsYmFjayhlcnJv
ciB8fCB0cnVlKTsKLSAgICAgICAgdGhpcy5fd2FpdGluZ0ZvclByaW1hcnlDbHVzdGVyID0gZmFs
c2U7Ci0gICAgfQotCi0gICAgX2ludm9rZUNhbGxiYWNrcyhjbHVzdGVyRW5kVGltZSwgZXJyb3Ip
Ci0gICAgewotICAgICAgICB2YXIgY2FsbGJhY2tMaXN0ID0gdGhpcy5fZW5kVGltZVRvQ2FsbGJh
Y2tbY2x1c3RlckVuZFRpbWVdOwotICAgICAgICBmb3IgKHZhciBjYWxsYmFjayBvZiBjYWxsYmFj
a0xpc3QpCi0gICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7Ci0gICAgICAgIHRoaXMuX2VuZFRp
bWVUb0NhbGxiYWNrW2NsdXN0ZXJFbmRUaW1lXSA9IHRydWU7CiAgICAgfQogCiAgICAgX2FkZEZl
dGNoZWRDbHVzdGVyKGNsdXN0ZXIpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL3BhZ2VzL2hlYWRpbmcuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL2hlYWRpbmcuanMKaW5kZXggMDAzYWMxZTlhMWExOGRhN2I3ZTYxY2Q1
ZDRjODQzOGUyNmQ2NDRmOS4uMDNjZjU3ZjBkZTk5NTZiNjBmMjFmYzRjMzlmZDExYzcwMTI2NTdl
NiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9o
ZWFkaW5nLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMv
aGVhZGluZy5qcwpAQCAtMTYsNiArMTYsNyBAQCBjbGFzcyBIZWFkaW5nIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAKICAgICBhZGRQYWdlR3JvdXAoZ3JvdXApCiAgICAgeworICAgICAgICBncm91
cCA9IGdyb3VwLmZpbHRlcihmdW5jdGlvbiAocGFnZSkgeyByZXR1cm4gcGFnZTsgfSk7CiAgICAg
ICAgIGZvciAodmFyIHBhZ2Ugb2YgZ3JvdXApCiAgICAgICAgICAgICBwYWdlLnNldEhlYWRpbmco
dGhpcyk7CiAgICAgICAgIHRoaXMuX3BhZ2VHcm91cHMucHVzaChncm91cCk7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3BhZ2Utcm91dGVyLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9wYWdlLXJvdXRlci5q
cwppbmRleCA2ZDA0ZWYxNzBjMjE1YjZkYWVhMTYzZTFmYzMyOWFhODQyYTdhNjM1Li5mZjdmOWEy
YTVkMjk5OWVmZmMyNjBiNjY2Yjg0M2JhY2EzYzRjNDNiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3BhZ2Utcm91dGVyLmpzCisrKyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvcGFnZS1yb3V0ZXIuanMKQEAgLTEy
LDYgKzEyLDggQEAgY2xhc3MgUGFnZVJvdXRlciB7CiAKICAgICBhZGRQYWdlKHBhZ2UpCiAgICAg
eworICAgICAgICBpZighcGFnZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5f
cGFnZXMucHVzaChwYWdlKTsKICAgICAgICAgcGFnZS5zZXRSb3V0ZXIodGhpcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9zdW1t
YXJ5LXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3N1
bW1hcnktcGFnZS5qcwppbmRleCA1ZTYwYjBmODk5MGNiODViMWYzMDIxYTM5ZDE5YWRlZmQyOGY1
YWQ2Li4xZjJiYTMyNTg1OGJkODg1YzZkMjZhN2ZmN2VhZTNiYzU3OTFkZWY3IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3N1bW1hcnktcGFnZS5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3N1bW1hcnkt
cGFnZS5qcwpAQCAtMTIsNiArMTIsNyBAQCBjbGFzcyBTdW1tYXJ5UGFnZSBleHRlbmRzIFBhZ2VX
aXRoSGVhZGluZyB7CiAgICAgICAgIHRoaXMuX3Nob3VsZENvbnN0cnVjdFRhYmxlID0gdHJ1ZTsK
ICAgICAgICAgdGhpcy5fcmVuZGVyUXVldWUgPSBbXTsKICAgICAgICAgdGhpcy5fY29uZmlnR3Jv
dXBzID0gW107CisgICAgICAgIHRoaXMuX2V4Y2x1ZGVkQ29uZmlndXJhdGlvbnMgPSBzdW1tYXJ5
U2V0dGluZ3MuZXhjbHVkZWRDb25maWd1cmF0aW9uczsKIAogICAgICAgICBmb3IgKHZhciBtZXRy
aWNHcm91cCBvZiBzdW1tYXJ5U2V0dGluZ3MubWV0cmljR3JvdXBzKSB7CiAgICAgICAgICAgICB2
YXIgZ3JvdXAgPSB7bmFtZTogbWV0cmljR3JvdXAubmFtZSwgcm93czogW119OwpAQCAtNTIsNyAr
NTMsNyBAQCBjbGFzcyBTdW1tYXJ5UGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAg
ewogICAgICAgICB2YXIgcGxhdGZvcm1zID0gcGxhdGZvcm1JZExpc3QubWFwKGZ1bmN0aW9uIChp
ZCkgeyByZXR1cm4gUGxhdGZvcm0uZmluZEJ5SWQoaWQpOyB9KS5maWx0ZXIoZnVuY3Rpb24gKG9i
aikgeyByZXR1cm4gISFvYmo7IH0pOwogICAgICAgICB2YXIgbWV0cmljcyA9IG1ldHJpY0lkTGlz
dC5tYXAoZnVuY3Rpb24gKGlkKSB7IHJldHVybiBNZXRyaWMuZmluZEJ5SWQoaWQpOyB9KS5maWx0
ZXIoZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gISFvYmo7IH0pOwotICAgICAgICB2YXIgY29uZmln
R3JvdXAgPSBuZXcgU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAocGxhdGZvcm1zLCBtZXRy
aWNzKTsKKyAgICAgICAgdmFyIGNvbmZpZ0dyb3VwID0gbmV3IFN1bW1hcnlQYWdlQ29uZmlndXJh
dGlvbkdyb3VwKHBsYXRmb3JtcywgbWV0cmljcywgdGhpcy5fZXhjbHVkZWRDb25maWd1cmF0aW9u
cyk7CiAgICAgICAgIHRoaXMuX2NvbmZpZ0dyb3Vwcy5wdXNoKGNvbmZpZ0dyb3VwKTsKICAgICAg
ICAgcmV0dXJuIGNvbmZpZ0dyb3VwOwogICAgIH0KQEAgLTc1LDEzICs3Niw5IEBAIGNsYXNzIFN1
bW1hcnlQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIHRoaXMuX3Rh
YmxlLmdyb3Vwcy5tYXAoZnVuY3Rpb24gKHJvd0dyb3VwKSB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJvd0dyb3VwLnJvd3MubWFwKGZ1bmN0aW9uIChyb3csIHJvd0luZGV4KSB7CiAgICAgICAg
ICAgICAgICAgICAgIHZhciBoZWFkaW5nczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0dy
b3VwLnJvd3MubGVuZ3RoID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5ncyA9
IFtlbGVtZW50KCd0aCcsIHtjbGFzczogJ3VuaWZpZWRIZWFkZXInLCBjb2xzcGFuOiAyfSwgcm93
Lm5hbWUpXTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBoZWFkaW5ncyA9IFtlbGVtZW50KCd0aCcsIHtjbGFzczogJ21pbm9ySGVhZGVyJ30sIHJv
dy5uYW1lKV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJvd0luZGV4KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmdzLnVuc2hpZnQoZWxlbWVudCgndGgnLCB7Y2xh
c3M6ICdtYWpvckhlYWRlcicsIHJvd3NwYW46IHJvd0dyb3VwLnJvd3MubGVuZ3RofSwgcm93R3Jv
dXAubmFtZSkpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGhl
YWRpbmdzID0gW2VsZW1lbnQoJ3RoJywge2NsYXNzOiAnbWlub3JIZWFkZXInfSwgcm93Lm5hbWUp
XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dJbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYWRpbmdzLnVuc2hpZnQoZWxlbWVudCgndGgnLCB7Y2xhc3M6ICdtYWpvckhlYWRl
cicsIHJvd3NwYW46IHJvd0dyb3VwLnJvd3MubGVuZ3RofSwgcm93R3JvdXAubmFtZSkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCgndHInLCBbaGVhZGluZ3MsIHJvdy5jZWxs
cy5tYXAoc2VsZi5fY29uc3RydWN0UmF0aW9HcmFwaC5iaW5kKHNlbGYpKV0pOwogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfSksCkBAIC05MiwxNiArODksMjkgQEAgY2xhc3MgU3Vt
bWFyeVBhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgIHsKICAgICAgICAgdmFyIGVs
ZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CiAgICAgICAgIHZhciBsaW5rID0g
Q29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOworICAgICAgICB2YXIgY29uZmlndXJhdGlvbkxpc3Qg
PSBjb25maWd1cmF0aW9uR3JvdXAuY29uZmlndXJhdGlvbkxpc3QoKTsKIAogICAgICAgICB2YXIg
cmF0aW9HcmFwaCA9IG5ldyBSYXRpb0JhckdyYXBoKCk7CiAKKyAgICAgICAgdmFyIHN0YXRlID0g
Q2hhcnRzUGFnZS5jcmVhdGVTdGF0ZUZvckNvbmZpZ3VyYXRpb25MaXN0KGNvbmZpZ3VyYXRpb25M
aXN0KTsKKyAgICAgICAgdmFyIGFuY2hvciA9IGxpbmsocmF0aW9HcmFwaCwgJ09wZW4gY2hhcnRz
JywgdGhpcy5yb3V0ZXIoKS51cmwoJ2NoYXJ0cycsIHN0YXRlKSk7CiAgICAgICAgIHRoaXMuX3Jl
bmRlclF1ZXVlLnB1c2goZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmF0aW9HcmFwaC51cGRh
dGUoY29uZmlndXJhdGlvbkdyb3VwLnJhdGlvKCksIGNvbmZpZ3VyYXRpb25Hcm91cC5sYWJlbCgp
KTsKKworICAgICAgICAgICAgdmFyIHdhcm5pbmdzID0gY29uZmlndXJhdGlvbkdyb3VwLndhcm5p
bmdzKCk7CisgICAgICAgICAgICB2YXIgd2FybmluZ1RleHQgPSAnJzsKKyAgICAgICAgICAgIGZv
ciAodmFyIHR5cGUgb2YgQXJyYXkuZnJvbSh3YXJuaW5ncy5rZXlzKCkpKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHBsYXRmb3JtcyA9IHdhcm5pbmdzLmdldCh0eXBlKTsKKyAgICAgICAgICAgICAg
ICB3YXJuaW5nVGV4dCArPSB0eXBlICsgJyBmb3IgZm9sbG93aW5nIHBsYXRmb3JtKHMpOiAnICsg
QXJyYXkuZnJvbShwbGF0Zm9ybXMpLmpvaW4oJywgJyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGFuY2hvci50aXRsZSA9IHdhcm5pbmdUZXh0IHx8ICdPcGVuIGNoYXJ0cyc7CisgICAg
ICAgICAgICByYXRpb0dyYXBoLnVwZGF0ZShjb25maWd1cmF0aW9uR3JvdXAucmF0aW8oKSwgY29u
ZmlndXJhdGlvbkdyb3VwLmxhYmVsKCksICEhd2FybmluZ1RleHQpOwogICAgICAgICAgICAgcmF0
aW9HcmFwaC5yZW5kZXIoKTsKICAgICAgICAgfSk7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9u
TGlzdC5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0ZCcsIHJhdGlv
R3JhcGgpOwogCi0gICAgICAgIHZhciBzdGF0ZSA9IENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVGb3JD
b25maWd1cmF0aW9uTGlzdChjb25maWd1cmF0aW9uR3JvdXAuY29uZmlndXJhdGlvbkxpc3QoKSk7
Ci0gICAgICAgIHJldHVybiBlbGVtZW50KCd0ZCcsIGxpbmsocmF0aW9HcmFwaCwgJ09wZW4gY2hh
cnRzJywgdGhpcy5yb3V0ZXIoKS51cmwoJ2NoYXJ0cycsIHN0YXRlKSkpOworICAgICAgICByZXR1
cm4gZWxlbWVudCgndGQnLCBhbmNob3IpOwogICAgIH0KIAogICAgIHN0YXRpYyBodG1sVGVtcGxh
dGUoKQpAQCAtMTY3LDE0ICsxNzcsMTQgQEAgY2xhc3MgU3VtbWFyeVBhZ2UgZXh0ZW5kcyBQYWdl
V2l0aEhlYWRpbmcgewogfQogCiBjbGFzcyBTdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb25Hcm91cCB7
Ci0gICAgY29uc3RydWN0b3IocGxhdGZvcm1zLCBtZXRyaWNzKQorICAgIGNvbnN0cnVjdG9yKHBs
YXRmb3JtcywgbWV0cmljcywgZXhjbHVkZWRDb25maWd1cmF0aW9ucykKICAgICB7CiAgICAgICAg
IHRoaXMuX21lYXN1cmVtZW50U2V0cyA9IFtdOwogICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9u
TGlzdCA9IFtdOwogICAgICAgICB0aGlzLl9zZXRUb1JhdGlvID0gbmV3IE1hcDsKICAgICAgICAg
dGhpcy5fcmF0aW8gPSBudWxsOwogICAgICAgICB0aGlzLl9sYWJlbCA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX2NoYW5nZVR5cGUgPSBudWxsOworICAgICAgICB0aGlzLl93YXJuaW5ncyA9IG5ldyBN
YXA7CiAgICAgICAgIHRoaXMuX3NtYWxsZXJJc0JldHRlciA9IG1ldHJpY3MubGVuZ3RoID8gbWV0
cmljc1swXS5pc1NtYWxsZXJCZXR0ZXIoKSA6IG51bGw7CiAKICAgICAgICAgZm9yICh2YXIgcGxh
dGZvcm0gb2YgcGxhdGZvcm1zKSB7CkBAIC0xODMsNiArMTkzLDkgQEAgY2xhc3MgU3VtbWFyeVBh
Z2VDb25maWd1cmF0aW9uR3JvdXAgewogICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1l
dHJpYyBpbnN0YW5jZW9mIE1ldHJpYyk7CiAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fc21hbGxlcklzQmV0dGVyID09IG1ldHJpYy5pc1NtYWxsZXJCZXR0ZXIoKSk7CiAgICAg
ICAgICAgICAgICAgbWV0cmljLmlzU21hbGxlckJldHRlcigpOworCisgICAgICAgICAgICAgICAg
aWYgKGV4Y2x1ZGVkQ29uZmlndXJhdGlvbnMgJiYgZXhjbHVkZWRDb25maWd1cmF0aW9ucy5oYXNP
d25Qcm9wZXJ0eShwbGF0Zm9ybS5pZCgpKSAmJiBleGNsdWRlZENvbmZpZ3VyYXRpb25zW3BsYXRm
b3JtLmlkKCldLmluY2x1ZGVzKCttZXRyaWMuaWQoKSkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybS5oYXNNZXRyaWMobWV0cmljKSkg
ewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZWFzdXJlbWVudFNldHMucHVzaChNZWFzdXJl
bWVudFNldC5maW5kU2V0KHBsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpLCBwbGF0Zm9ybS5sYXN0
TW9kaWZpZWQobWV0cmljKSkpOwogICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25maWd1cmF0
aW9uTGlzdC5wdXNoKFtwbGF0Zm9ybS5pZCgpLCBtZXRyaWMuaWQoKV0pOwpAQCAtMTkzLDYgKzIw
Niw3IEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwIHsKIAogICAgIHJhdGlv
KCkgeyByZXR1cm4gdGhpcy5fcmF0aW87IH0KICAgICBsYWJlbCgpIHsgcmV0dXJuIHRoaXMuX2xh
YmVsOyB9CisgICAgd2FybmluZ3MoKSB7IHJldHVybiB0aGlzLl93YXJuaW5nczsgfQogICAgIGNo
YW5nZVR5cGUoKSB7IHJldHVybiB0aGlzLl9jaGFuZ2VUeXBlOyB9CiAgICAgY29uZmlndXJhdGlv
bkxpc3QoKSB7IHJldHVybiB0aGlzLl9jb25maWd1cmF0aW9uTGlzdDsgfQogCkBAIC0yMTIsNiAr
MjI2LDEwIEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwIHsKICAgICBfY29t
cHV0ZVN1bW1hcnkoKQogICAgIHsKICAgICAgICAgdmFyIHJhdGlvcyA9IFtdOworICAgICAgICBp
ZiAoIXRoaXMuX21lYXN1cmVtZW50U2V0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuX3Jh
dGlvID0gTmFOOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGZvciAo
dmFyIHNldCBvZiB0aGlzLl9tZWFzdXJlbWVudFNldHMpIHsKICAgICAgICAgICAgIHZhciByYXRp
byA9IHRoaXMuX3NldFRvUmF0aW8uZ2V0KHNldCk7CiAgICAgICAgICAgICBpZiAoIWlzTmFOKHJh
dGlvKSkKQEAgLTIxOSwzNyArMjM3LDM5IEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlv
bkdyb3VwIHsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBhdmVyYWdlUmF0aW8gPSBTdGF0aXN0
aWNzLm1lYW4ocmF0aW9zKTsKLSAgICAgICAgaWYgKGlzTmFOKGF2ZXJhZ2VSYXRpbykpIHsKLSAg
ICAgICAgICAgIHRoaXMuX3N1bW1hcnkgPSAnLSc7Ci0gICAgICAgICAgICB0aGlzLl9jaGFuZ2VU
eXBlID0gbnVsbDsKKyAgICAgICAgaWYgKGlzTmFOKGF2ZXJhZ2VSYXRpbykpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoTWF0aC5hYnMoYXZlcmFnZVJhdGlv
IC0gMSkgPCAwLjAwMSkgeyAvLyBMZXNzIHRoYW4gMC4xJSBkaWZmZXJlbmNlLgotICAgICAgICAg
ICAgdGhpcy5fc3VtbWFyeSA9ICdObyBjaGFuZ2UnOwotICAgICAgICAgICAgdGhpcy5fY2hhbmdl
VHlwZSA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICB2
YXIgY3VycmVudElzU21hbGxlclRoYW5CYXNlbGluZSA9IGF2ZXJhZ2VSYXRpbyA8IDE7CiAgICAg
ICAgIHZhciBjaGFuZ2VUeXBlID0gdGhpcy5fc21hbGxlcklzQmV0dGVyID09IGN1cnJlbnRJc1Nt
YWxsZXJUaGFuQmFzZWxpbmUgPyAnYmV0dGVyJyA6ICd3b3JzZSc7Ci0gICAgICAgIGlmIChjdXJy
ZW50SXNTbWFsbGVyVGhhbkJhc2VsaW5lKQotICAgICAgICAgICAgYXZlcmFnZVJhdGlvID0gMSAv
IGF2ZXJhZ2VSYXRpbzsKKyAgICAgICAgYXZlcmFnZVJhdGlvID0gTWF0aC5hYnMoYXZlcmFnZVJh
dGlvIC0gMSk7CiAKLSAgICAgICAgdGhpcy5fcmF0aW8gPSAoYXZlcmFnZVJhdGlvIC0gMSkgKiAo
Y2hhbmdlVHlwZSA9PSAnYmV0dGVyJyA/IDEgOiAtMSk7Ci0gICAgICAgIHRoaXMuX2xhYmVsID0g
KChhdmVyYWdlUmF0aW8gLSAxKSAqIDEwMCkudG9GaXhlZCgxKSArICclJzsKKyAgICAgICAgdGhp
cy5fcmF0aW8gPSBhdmVyYWdlUmF0aW8gKiAoY2hhbmdlVHlwZSA9PSAnYmV0dGVyJyA/IDEgOiAt
MSk7CisgICAgICAgIHRoaXMuX2xhYmVsID0gKGF2ZXJhZ2VSYXRpbyAqIDEwMCkudG9GaXhlZCgx
KSArICclJzsKICAgICAgICAgdGhpcy5fY2hhbmdlVHlwZSA9IGNoYW5nZVR5cGU7CiAgICAgfQog
CiAgICAgX2ZldGNoQW5kQ29tcHV0ZVJhdGlvKHNldCwgdGltZVJhbmdlKQogICAgIHsKICAgICAg
ICAgdmFyIHNldFRvUmF0aW8gPSB0aGlzLl9zZXRUb1JhdGlvOwotICAgICAgICByZXR1cm4gU3Vt
bWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAuX2ZldGNoRGF0YShzZXQsIHRpbWVSYW5nZSkudGhl
bihmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJu
IHNldC5mZXRjaEJldHdlZW4odGltZVJhbmdlWzBdLCB0aW1lUmFuZ2VbMV0pLnRoZW4oZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgdmFyIGJhc2VsaW5lVGltZVNlcmllcyA9IHNldC5mZXRjaGVk
VGltZVNlcmllcygnYmFzZWxpbmUnLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgdmFyIGN1
cnJlbnRUaW1lU2VyaWVzID0gc2V0LmZldGNoZWRUaW1lU2VyaWVzKCdjdXJyZW50JywgZmFsc2Us
IGZhbHNlKTsKIAogICAgICAgICAgICAgdmFyIGJhc2VsaW5lTWVkaWFuID0gU3VtbWFyeVBhZ2VD
b25maWd1cmF0aW9uR3JvdXAuX21lZGlhbkZvclRpbWVSYW5nZShiYXNlbGluZVRpbWVTZXJpZXMs
IHRpbWVSYW5nZSk7CiAgICAgICAgICAgICB2YXIgY3VycmVudE1lZGlhbiA9IFN1bW1hcnlQYWdl
Q29uZmlndXJhdGlvbkdyb3VwLl9tZWRpYW5Gb3JUaW1lUmFuZ2UoY3VycmVudFRpbWVTZXJpZXMs
IHRpbWVSYW5nZSk7CisgICAgICAgICAgICB2YXIgcGxhdGZvcm1OYW1lID0gUGxhdGZvcm0uZmlu
ZEJ5SWQoc2V0LnBsYXRmb3JtSWQoKSkubmFtZSgpOworICAgICAgICAgICAgaWYgKCFiYXNlbGlu
ZU1lZGlhbikgeworICAgICAgICAgICAgICAgIHZhciBtaXNzaW5nQmFzZWxpbmVQbGF0Zm9ybXMg
PSBzZWxmLl93YXJuaW5ncy5nZXQoJ01pc3NpbmcgYmFzZWxpbmUnKSB8fCBuZXcgU2V0OworICAg
ICAgICAgICAgICAgIG1pc3NpbmdCYXNlbGluZVBsYXRmb3Jtcy5hZGQocGxhdGZvcm1OYW1lKTsK
KyAgICAgICAgICAgICAgICBzZWxmLl93YXJuaW5ncy5zZXQoJ01pc3NpbmcgYmFzZWxpbmUnLCBt
aXNzaW5nQmFzZWxpbmVQbGF0Zm9ybXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KCFjdXJyZW50TWVkaWFuKSB7CisgICAgICAgICAgICAgICAgdmFyIG1pc3NpbmdDdXJyZW50UGxh
dGZvcm1zID0gc2VsZi5fd2FybmluZ3MuZ2V0KCdNaXNzaW5nIGN1cnJlbnQnKSB8fCBuZXcgU2V0
OworICAgICAgICAgICAgICAgIG1pc3NpbmdDdXJyZW50UGxhdGZvcm1zLmFkZChwbGF0Zm9ybU5h
bWUpOworICAgICAgICAgICAgICAgIHNlbGYuX3dhcm5pbmdzLnNldCgnTWlzc2luZyBjdXJyZW50
JywgbWlzc2luZ0N1cnJlbnRQbGF0Zm9ybXMpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
c2V0VG9SYXRpby5zZXQoc2V0LCBjdXJyZW50TWVkaWFuIC8gYmFzZWxpbmVNZWRpYW4pOwogICAg
ICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBzZXRUb1JhdGlvLnNldChz
ZXQsIE5hTik7CkBAIC0yNzAsMjEgKzI5MCw0IEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJh
dGlvbkdyb3VwIHsKICAgICAgICAgdmFyIHBvaW50cyA9IHRpbWVTZXJpZXMuZGF0YUJldHdlZW5Q
b2ludHMoc3RhcnRQb2ludCwgZW5kUG9pbnQpLm1hcChmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJu
IHBvaW50LnZhbHVlOyB9KTsKICAgICAgICAgcmV0dXJuIFN0YXRpc3RpY3MubWVkaWFuKHBvaW50
cyk7CiAgICAgfQotCi0gICAgc3RhdGljIF9mZXRjaERhdGEoc2V0LCB0aW1lUmFuZ2UpCi0gICAg
ewotICAgICAgICAvLyBGSVhNRTogTWFrZSBmZXRjaEJldHdlZW4gcmV0dXJuIGEgcHJvbWlzZS4K
LSAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIHNldC5mZXRjaEJldHdlZW4o
dGltZVJhbmdlWzBdLCB0aW1lUmFuZ2VbMV0sIGZ1bmN0aW9uIChlcnJvcikgewotICAgICAgICAg
ICAgICAgIGlmIChkb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoc2V0Lmhhc0ZldGNoZWRSYW5nZSh0aW1lUmFuZ2VbMF0sIHRp
bWVSYW5nZVsxXSkpCi0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9CiB9
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJl
bWVudC1zZXQtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9t
ZWFzdXJlbWVudC1zZXQtdGVzdHMuanMKaW5kZXggMDU3NzZhZGQwZWMzMzI2NmE2ODk1MWFkNmQx
OGViZmFkYmNiNTBjNi4uZmZjMTZhY2QzNWY5YzBlMDQxY2Y3NmIwODFjNmIyNTM1M2ZiNWIzZSAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1l
bnQtc2V0LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L21lYXN1cmVtZW50LXNldC10ZXN0cy5qcwpAQCAtNDUsNyArNDUsNyBAQCBkZXNjcmliZSgnTWVh
c3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGl0KCdzaG91bGQgaW52b2tlIHRo
ZSBjYWxsYmFjayB3aGVuIHRoZSB1cC10by1kYXRlIGNhY2hlZCBwcmltYXJ5IGNsdXN0ZXIgaXMg
ZmV0Y2hlZCBhbmQgaXQgbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIHJhbmdlJywgZnVuY3Rpb24gKGRv
bmUpIHsKICAgICAgICAgICAgIHZhciBzZXQgPSBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEs
IDMwMDApOwogICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7Ci0gICAgICAgICAgICBzZXQu
ZmV0Y2hCZXR3ZWVuKDIwMDAsIDMwMDAsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBw
cm9taXNlID0gc2V0LmZldGNoQmV0d2VlbigyMDAwLCAzMDAwLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICAgY2FsbENvdW50Kys7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwpAQCAtNjIsNyArNjIsNyBAQCBkZXNjcmli
ZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0
ZXJDb3VudCc6IDIsCiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNhbGxDb3VudCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgZG9uZSgpOwpAQCAtNzEsMTEgKzcxLDE5IEBAIGRl
c2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgYW5k
IGZldGNoIGEgc2Vjb25kYXJ5IGNsdXN0ZXInCi0gICAgICAgICAgICArICd3aGVuIHRoZSBjYWNo
ZWQgcHJpbWFyeSBjbHVzdGVyIGlzIHVwLXRvLWRhdGUgYW5kIHdpdGhpbiBpbiB0aGUgcmVxdWVz
dGVkIHJhbmdlJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgZnVuY3Rpb24gd2FpdEZvck1l
YXN1cmVtZW50U2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisKKyAgICAgICAgaXQoJ3Nob3VsZCBpbnZva2UgdGhlIGNhbGxiYWNrIGFuZCBmZXRjaCBh
IHNlY29uZGFyeSBjbHVzdGVyIHdoZW4gdGhlIGNhY2hlZCBwcmltYXJ5IGNsdXN0ZXIgaXMgdXAt
dG8tZGF0ZSBhbmQgd2l0aGluIGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UnLCBmdW5jdGlvbiAoZG9u
ZSkgewogICAgICAgICAgICAgdmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwg
MzAwMCk7CiAgICAgICAgICAgICB2YXIgY2FsbENvdW50ID0gMDsKLSAgICAgICAgICAgIHNldC5m
ZXRjaEJldHdlZW4oMTAwMCwgMzAwMCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIHBy
b21pc2UgPSBzZXQuZmV0Y2hCZXR3ZWVuKDEwMDAsIDMwMDAsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBjYWxsQ291bnQrKzsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CkBAIC05Miw3ICsxMDAsNyBAQCBkZXNjcmli
ZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0
ZXJDb3VudCc6IDIsCiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAg
ICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB3
YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMV0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTIwMDAuanNvbicpOwpA
QCAtMTIxLDEzICsxMjksMTUgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgICdjbHVzdGVyQ291bnQnOiAzLAogICAgICAgICAgICAgICAg
ICdzdGF0dXMnOiAnT0snfSk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7CisgICAgICAgICAg
ICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0x
LTMwMDAuanNvbicpOwogCi0gICAgICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7CiAgICAg
ICAgICAgICAgICAgc2V0LmZldGNoQmV0d2VlbigwLCA3MDAwLCBmdW5jdGlvbiAoKSB7IGNhbGxD
b3VudCsrOyB9KTsKIAorICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yTWVhc3VyZW1lbnRT
ZXQoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjYWxsQ291bnQsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1syXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMjAwMC5qc29uJyk7CkBA
IC0xNTgsNyArMTY4LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgICdjbHVzdGVyQ291bnQnOiAzLAogICAgICAgICAgICAgICAgICdz
dGF0dXMnOiAnT0snfSk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgd2FpdEZvck1lYXN1cmVtZW50U2V0KCkudGhlbihmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Myk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy4uL2Rh
dGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0zMDAwLmpzb24nKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTQw
MDAuanNvbicpOwpAQCAtMTg3LDIzICsxOTcsMjIgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICdjbHVzdGVyQ291bnQnOiAzLAogICAg
ICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7
CisgICAgICAgICAgICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVuKGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnLi4vZGF0YS9tZWFzdXJl
bWVudC1zZXQtMS0xLTQwMDAuanNvbicpOwotCi0gICAgICAgICAgICAgICAgdmFyIGNhbGxDb3Vu
dCA9IDA7CiAgICAgICAgICAgICAgICAgc2V0LmZldGNoQmV0d2VlbigxMjA3LCAxMjkzLCBmdW5j
dGlvbiAoKSB7IGNhbGxDb3VudCsrOyB9KTsKLQorICAgICAgICAgICAgICAgIHJldHVybiB3YWl0
Rm9yTWVhc3VyZW1lbnRTZXQoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQsIDApOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEt
MjAwMC5qc29uJyk7Ci0KICAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDE5NjQsIDM0
MDEsIGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Kys7IH0pOwotCisgICAgICAgICAgICAgICAgcmV0
dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMCk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQt
c2V0LTEtMS0zMDAwLmpzb24nKTsKLQogICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAg
ICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgIGRvbmUoZXJy
b3IpOwpAQCAtMjIxLDcgKzIzMCw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0
aW9uICgpIHsKIAogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVqZWN0KDUwMCk7CiAKLSAgICAg
ICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
d2FpdEZvck1lYXN1cmVtZW50U2V0KCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgZG9uZSgpOwpAQCAtMjcx
LDcgKzI4MCw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKIAog
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVqZWN0KDQwNCk7CiAKLSAgICAgICAgICAgIFByb21p
c2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgd2FpdEZvck1lYXN1
cmVtZW50U2V0KCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNhbGxDb3VudCwgMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVy
bCwgJy4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/cGxhdGZvcm09MSZtZXRyaWM9MScpOwpAQCAtMzA2
LDcgKzMxNSw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICAnY2x1c3RlckNvdW50JzogMiwKICAgICAgICAgICAgICAgICAnc3RhdHVz
JzogJ09LJ30pOwogCi0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpLnRoZW4oZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQsIDEpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChhbHRlcm5hdGl2ZUNhbGxDb3VudCwgMSk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CkBAIC0zMzcsMTYgKzM0
NiwyMCBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICB2YXIgY2FsbENvdW50Rm9yNDAwMFRvNTAwMCA9IDA7CiAgICAgICAgICAgICB2YXIgY2Fs
bENvdW50Rm9yMjAwMCA9IDA7CiAgICAgICAgICAgICB2YXIgY2FsbENvdW50Rm9yMjAwMFRvNDAw
MCA9IDA7Ci0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpLnRoZW4oZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3I0MDAwLCAwKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1z
ZXQtMS0xLTQwMDAuanNvbicpOwogCiAgICAgICAgICAgICAgICAgc2V0LmZldGNoQmV0d2Vlbigz
NzA4LCA0ODAwLCBmdW5jdGlvbiAoKSB7IGNhbGxDb3VudEZvcjQwMDBUbzUwMDArKzsgfSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOworICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNh
bGxDb3VudEZvcjQwMDBUbzUwMDAsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDIpOwogCiAgICAgICAgICAgICAgICAgc2V0LmZldGNoQmV0d2Vlbigx
MjA3LCAxMjkzLCBmdW5jdGlvbiAoKSB7IGNhbGxDb3VudEZvcjIwMDArKzsgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOworICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3Vu
dEZvcjIwMDAsIDApOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcu
Li9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMjAwMC5qc29uJyk7CkBAIC0zNTgsNiArMzcxLDcg
QEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgICAgICAnZW5kVGltZSc6IDIwMDAsCiAgICAgICAgICAgICAgICAgICAgICdsYXN0TW9kaWZp
ZWQnOiA1MDAwLAogICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogJ09LJ30pOworICAgICAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKTsKICAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3I0
MDAwLCAwKTsKQEAgLTM2NSw3ICszNzksOCBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjIw
MDAsIDEpOwogCiAgICAgICAgICAgICAgICAgc2V0LmZldGNoQmV0d2VlbigxOTY0LCAzNDAxLCBm
dW5jdGlvbiAoKSB7IGNhbGxDb3VudEZvcjIwMDBUbzQwMDArKzsgfSk7Ci0KKyAgICAgICAgICAg
ICAgICByZXR1cm4gd2FpdEZvck1lYXN1cmVtZW50U2V0KCk7CisgICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9y
MjAwMFRvNDAwMCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLnVybCwg
Jy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0zMDAwLmpzb24nKTsKQEAgLTM3Nyw2ICszOTIs
NyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgICAgICdlbmRUaW1lJzogMzAwMCwKICAgICAgICAgICAgICAgICAgICAgJ2xhc3RNb2Rp
ZmllZCc6IDUwMDAsCiAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOwogICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxD
b3VudEZvcjQwMDAsIDApOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRG
b3I0MDAwVG81MDAwLCAxKTsKQEAgLTM5MSw2ICs0MDcsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1l
bnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICdlbmRUaW1lJzogNDAw
MCwKICAgICAgICAgICAgICAgICAgICAgJ2xhc3RNb2RpZmllZCc6IDUwMDAsCiAgICAgICAgICAg
ICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRG
b3JNZWFzdXJlbWVudFNldCgpOwogICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDAsIDEpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3I0MDAwVG81MDAwLCAyKTsKQEAgLTQw
Niw0ICs0MjMsNCBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAK
ICAgICB9KTsKIAotfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278151</attachid>
            <date>2016-05-04 18:54:48 -0700</date>
            <delta_ts>2016-05-04 21:27:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157339-20160504185528.patch</filename>
            <type>text/plain</type>
            <size>36898</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDQ1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA3MDdiOTcwOTA5OTUxZTI4ODdkNWI1ODVmYjZhMWY5MTBlMWM5YThkLi44NTQwMTI5OGE2
OGU4YmIzYzRkYTBhYTgxYmQ1NzdkNTJmNzFkMDExIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNi0wNS0wNCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBTdW1tYXJ5IHBhZ2UgZW5oYW5jZW1lbnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgc3VtbWFyeSBwYWdl
IHRvIGJlIHRoZSBkZWZhdWx0IHBhZ2Ugb2YgdjMgVUkuCisgICAgICAgIFNob3cgd2FybmluZyBp
Y29uIHdoZW4gZWl0aGVyIGJhc2VsaW5lIG9yIGN1cnJlbnQgZGF0YSBpcyBtaXNzaW5nLgorICAg
ICAgICBNYWtlIGZldGNoQmV0d2VlbiByZXR1cm5zIGEgcHJvbWlzZS4KKyAgICAgICAgVXBkYXRl
IHVuaXQgdGVzdHMgZm9yIE1lYXN1cmVtZW50U2V0LmZldGNoQmV0d2VlbiBzaW5jZSBpdCByZXR1
cm5zIGEgcHJvbWlzZSBub3cuCisgICAgICAgIEFkZCBhIHdvcmthcm91bmQgdG8gc2tpcCBzb21l
IHBsYXRmb3JtIGFuZCBtZXRyaWMgY29uZmlndXJhdGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMv
djMvY29tcG9uZW50cy9yYXRpby1iYXItZ3JhcGguanM6CisgICAgICAgIChSYXRpb0JhckdyYXBo
KToKKyAgICAgICAgKFJhdGlvQmFyR3JhcGgucHJvdG90eXBlLnVwZGF0ZSk6IEFkZCBzaG93V2Fy
bmluZ0ljb24gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlIHNob3VsZCBzaG93IHdhcm5pbmcg
aWNvbi4KKyAgICAgICAgKFJhdGlvQmFyR3JhcGgucHJvdG90eXBlLnJlbmRlcik6IFNob3cgd2Fy
bmluZyBpY29uIHdoZW4gc2hvd1dhcm5pbmdJY29uIGlzIHRydWUuCisgICAgICAgIChSYXRpb0Jh
ckdyYXBoLmNzc1RlbXBsYXRlKTogQWRkIHN0eWxlIGZvciB3YXJuaW5nIGljb24uCisgICAgICAg
ICogcHVibGljL3YzL2NvbXBvbmVudHMvd2FybmluZy1pY29uLmpzOiBBZGQgd2FybmluZyBpY29u
LgorICAgICAgICAoV2FybmluZ0ljb24pOgorICAgICAgICAoV2FybmluZ0ljb24uY3NzVGVtcGxh
dGUpOgorICAgICAgICAqIHB1YmxpYy92My9pbmRleC5odG1sOgorICAgICAgICAqIHB1YmxpYy92
My9tYWluLmpzOgorICAgICAgICAobWFpbik6IFNldCBzdW1tYXJ5IHBhZ2UgdG8gYmUgdGhlIGRl
ZmF1bHQgcGFnZSBvZiB2MyBVSS4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVt
ZW50LXNldC5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0KToKKyAgICAgICAgKE1lYXN1cmVt
ZW50U2V0LnByb3RvdHlwZS5mZXRjaEJldHdlZW4pOiBSZXR1cm5zIGEgcHJvbWlzZS4gRml4IHRo
ZSBidWcgaW4gcHJldmlvdXMgaW1wbGVtZW50YXRpb24gdGhhdCB3ZSBtaXNzIHNvbWUgY2FsbGJh
Y2tzIHNvbWV0aW1lcy4gQmFzaWNhbGx5LCB3ZSB3aWxsIGZldGNoIHByaW1hcnkgY2x1c3RlciBm
aXJzdCwgdGhlbiBzZWNvbmRhcnkgY2x1c3RlcnMuIEZvciBlYWNoIHNlY29uZGFyeSBjbHVzdGVy
IGZldGNoLCB3ZSB3aWxsIGFsd2F5cyBpbnZva2UgY2FsbGJhY2sgZXZlbiB3aGVuIGl0IGZhaWwu
CisgICAgICAgIChNZWFzdXJlbWVudFNldC5wcm90b3R5cGUuX2NvbnN0cnVjdFVybC5yZXR1cm4u
YXBpLm1lYXN1cmVtZW50LnNldCBwbGF0Zm9ybSk6CisgICAgICAgIChNZWFzdXJlbWVudFNldC5w
cm90b3R5cGUuX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoTWVh
c3VyZW1lbnRTZXQucHJvdG90eXBlLl9mZXRjaC5lbHNlLnVybC5hcGkubWVhc3VyZW1lbnQuc2V0
IHBsYXRmb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvc3VtbWFyeS1w
YWdlLmpzOgorICAgICAgICAoU3VtbWFyeVBhZ2UpOiBBZGQgYSB2YXJpYWJsZSBmb3IgZXhjbHVk
ZWQgY29uZmlndXJhdGlvbnMuCisgICAgICAgIChTdW1tYXJ5UGFnZS5wcm90b3R5cGUuX2NyZWF0
ZUNvbmZpZ3VyYXRpb25Hcm91cCk6IFBhc3MgZXhjbHVkZWQgY29uZmlndXJhdGlvbnMgd2hpbGUg
YnVpbGRpbmcgY29uZmlnIGdyb3Vwcy4KKyAgICAgICAgKFN1bW1hcnlQYWdlLnByb3RvdHlwZS5f
Y29uc3RydWN0VGFibGUpOiBSZW1vdmUgdGhlIGxvZ2ljIGZvciB1bmlmaWVkIGhlYWRlciBzaW5j
ZSBpdCBicmVha3MgY29uc2lzdGVuY3kgb2YgdGhlIHRhYmxlIGFwcGVhcmFuY2UuCisgICAgICAg
IChTdW1tYXJ5UGFnZS5wcm90b3R5cGUudGhpcy5fcmVuZGVyUXVldWUucHVzaCk6IFNob3cgd2Fy
bmluZyBtZXNzYWdlIHdoZW4gYmFzZWxpbmUvY3VycmVudCBkYXRhIGlzIG1pc3NpbmcuCisgICAg
ICAgIChTdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb25Hcm91cCk6IEFkZCBhIHZhcmlhYmxlIHRvIGtl
ZXAgdHJhY2sgb2YgdGhlIHdhcm5pbmdzIHdoaWxlIGNvbXB1dGluZyBzdW1tYXJ5LgorICAgICAg
ICAoU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAucHJvdG90eXBlLndhcm5pbmdzKToKKyAg
ICAgICAgKFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLnByb3RvdHlwZS5mZXRjaEFuZENv
bXB1dGVTdW1tYXJ5LnNldCByZXR1cm4pOgorICAgICAgICAoU3VtbWFyeVBhZ2VDb25maWd1cmF0
aW9uR3JvdXAucmV0dXJuLnNldCBmZXRjaEJldHdlZW4pOgorICAgICAgICAoU3VtbWFyeVBhZ2VD
b25maWd1cmF0aW9uR3JvdXAuc2V0IHRoZW4pOiBEZWxldGVkLgorICAgICAgICAoU3VtbWFyeVBh
Z2VDb25maWd1cmF0aW9uR3JvdXAuc2V0IHZhcik6IERlbGV0ZWQuCisgICAgICAgICogdW5pdC10
ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanM6IEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0byB3
YWl0IGZvciBmZXRjaEJldHdlZW4uIFVwZGF0ZSB1bml0IHRlc3RzIHNpbmNlIGZldGNoQmV0d2Vl
biByZXR1cm5zIGEgcHJvbWlzZSBub3cuCisgICAgICAgIChwcm9taXNlLnNldCBmZXRjaEJldHdl
ZW4pOgorICAgICAgICAoc2V0IE1lYXN1cmVtZW50U2V0KToKKyAgICAgICAgKHNldCBmZXRjaEJl
dHdlZW4pOiBEZWxldGVkLgorCiAyMDE2LTA0LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIENoYXJ0IHN0YXR1cyBzaG91bGQgYWx3YXlzIGJlIGNvbXB1dGVk
IGFnYWluc3QgcHJpb3IgdmFsdWVzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvcmF0aW8tYmFyLWdyYXBoLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3JhdGlvLWJhci1ncmFwaC5qcwppbmRl
eCA3MGY5MjM4ZWRlMWQ5YzA1ZWUzNzIyNjVkYzVkMTE4NTY1YWQ3YzVkLi5kNWVlODY4YTE2Y2Yw
MzA2MzU1OTc2YmMzNmNhODFlMmI5MjkyYjAxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvcmF0aW8tYmFyLWdyYXBoLmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9yYXRpby1iYXItZ3Jh
cGguanMKQEAgLTMsMTggKzMsMTggQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENvbXBv
bmVudEJhc2UgewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHN1cGVyKCdyYXRp
by1iYXItZ3JhcGgnKTsKLSAgICAgICAgdGhpcy5fcmF0aW8gPSAwOworICAgICAgICB0aGlzLl9y
YXRpbyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2xhYmVsID0gbnVsbDsKICAgICAgICAgdGhpcy5f
c2hvdWxkUmVuZGVyID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fYmFyID0gdGhpcy5jb250ZW50KCku
cXVlcnlTZWxlY3RvcignLmJhcicpOwotICAgICAgICB0aGlzLl9sYWJlbENvbnRhaW5lciA9IHRo
aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5sYWJlbCcpOworICAgICAgICB0aGlzLl9yYXRp
b0JhckdyYXBoID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLnJhdGlvLWJhci1ncmFw
aCcpOwogICAgIH0KIAotICAgIHVwZGF0ZShyYXRpbywgbGFiZWwpCisgICAgdXBkYXRlKHJhdGlv
LCBsYWJlbCwgc2hvd1dhcm5pbmdJY29uKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
cmF0aW8gPj0gLTEgJiYgcmF0aW8gPD0gMSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzTmFO
KHJhdGlvKSB8fCAocmF0aW8gPj0gLTEgJiYgcmF0aW8gPD0gMSkpOwogICAgICAgICB0aGlzLl9y
YXRpbyA9IHJhdGlvOwogICAgICAgICB0aGlzLl9sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlz
Ll9zaG93V2FybmluZ0ljb24gPSBzaG93V2FybmluZ0ljb247CiAgICAgICAgIHRoaXMuX3Nob3Vs
ZFJlbmRlciA9IHRydWU7CiAgICAgfQogCkBAIC0yMiwxOCArMjIsMzIgQEAgY2xhc3MgUmF0aW9C
YXJHcmFwaCBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9zaG91bGRSZW5kZXIpCiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3Nob3Vs
ZFJlbmRlciA9IGZhbHNlOworICAgICAgICB2YXIgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3Jl
YXRlRWxlbWVudDsKIAotICAgICAgICB2YXIgcGVyY2VudCA9IE1hdGguYWJzKHRoaXMuX3JhdGlv
ICogMTAwKTsKLSAgICAgICAgdGhpcy5fbGFiZWxDb250YWluZXIudGV4dENvbnRlbnQgPSB0aGlz
Ll9sYWJlbDsKLSAgICAgICAgdGhpcy5fYmFyLnN0eWxlLndpZHRoID0gTWF0aC5taW4ocGVyY2Vu
dCwgNTApICsgJyUnOwotICAgICAgICB0aGlzLl9iYXIucGFyZW50Tm9kZS5jbGFzc05hbWUgPSAn
cmF0aW8tYmFyLWdyYXBoICcgKyAodGhpcy5fcmF0aW8gPiAwID8gJ2JldHRlcicgOiAnd29yc2Un
KTsKKyAgICAgICAgdmFyIHZhbGlkQ2xhc3NOYW1lcyA9IFsnYmV0dGVyJywgJ3dvcnNlJ107Cisg
ICAgICAgIGZvciAodmFyIG5hbWUgb2YgdmFsaWRDbGFzc05hbWVzKQorICAgICAgICAgICAgdGhp
cy5fcmF0aW9CYXJHcmFwaC5jbGFzc0xpc3QucmVtb3ZlKG5hbWUpOwogCi0gICAgICAgIHRoaXMu
X3Nob3VsZFJlbmRlciA9IGZhbHNlOworICAgICAgICB2YXIgY2hpbGRyZW4gPSBbZWxlbWVudCgn
ZGl2Jywge2NsYXNzOiAnc2VwYXJhdG9yJ30pXTsKKyAgICAgICAgaWYgKHRoaXMuX3Nob3dXYXJu
aW5nSWNvbikgeworICAgICAgICAgICAgaWYgKHRoaXMuX3JhdGlvICYmIHRoaXMuX3JhdGlvIDwg
LTAuNCkKKyAgICAgICAgICAgICAgICB0aGlzLl9yYXRpb0JhckdyYXBoLmNsYXNzTGlzdC5hZGQo
J3dhcm5pbmctb24tcmlnaHQnKTsKKyAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gobmV3IFdhcm5p
bmdJY29uKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fcmF0aW8pIHsKKyAgICAgICAg
ICAgIHRoaXMuX3JhdGlvQmFyR3JhcGguY2xhc3NMaXN0LmFkZCh0aGlzLl9yYXRpbyA+IDAgPyAn
YmV0dGVyJyA6ICd3b3JzZScpOworICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlbGVtZW50KCdk
aXYnLCB7Y2xhc3M6ICdiYXInLCBzdHlsZTogJ3dpZHRoOicgKyBNYXRoLm1pbihNYXRoLmFicyh0
aGlzLl9yYXRpbyAqIDEwMCksIDUwKSArICclJ30pKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dGhpcy5fbGFiZWwpCisgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGVsZW1lbnQoJ2RpdicsIHtj
bGFzczogJ2xhYmVsJ30sIHRoaXMuX2xhYmVsKSk7CisKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBs
YWNlKHRoaXMuX3JhdGlvQmFyR3JhcGgsIGNoaWxkcmVuKTsKICAgICB9CiAKICAgICBzdGF0aWMg
aHRtbFRlbXBsYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0icmF0aW8t
YmFyLWdyYXBoIj48ZGl2IGNsYXNzPSJzZXBlcmF0b3IiPjwvZGl2PjxkaXYgY2xhc3M9ImJhciI+
PC9kaXY+PGRpdiBjbGFzcz0ibGFiZWwiPjwvZGl2PjwvZGl2PmA7CisgICAgICAgIHJldHVybiBg
PGRpdiBjbGFzcz0icmF0aW8tYmFyLWdyYXBoIj48L2Rpdj5gOwogICAgIH0KIAogICAgIHN0YXRp
YyBjc3NUZW1wbGF0ZSgpCkBAIC01MCw3ICs2NCwxMiBAQCBjbGFzcyBSYXRpb0JhckdyYXBoIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOwogICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIC5yYXRpby1iYXItZ3JhcGggLnNlcGVyYXRvciB7CisgICAgICAgICAgICAucmF0aW8t
YmFyLWdyYXBoIHdhcm5pbmctaWNvbiB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgICAgIHRv
cDogMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5yYXRpby1iYXItZ3JhcGggLnNlcGFy
YXRvciB7CiAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAg
ICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgICAgICB3aWR0aDogMHB4OwpAQCAtNjgsNiArODcs
MTMgQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAg
ICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgICAgICAgICAg
YmFja2dyb3VuZDogI2MzMzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5yYXRpby1iYXIt
Z3JhcGg6bm90KC53YXJuaW5nLW9uLXJpZ2h0KSB3YXJuaW5nLWljb24geworICAgICAgICAgICAg
ICAgIGxlZnQ6IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAucmF0aW8tYmFyLWdyYXBo
Lndhcm5pbmctb24tcmlnaHQgd2FybmluZy1pY29uIHsKKyAgICAgICAgICAgICAgICB0cmFuc2Zv
cm06IHNjYWxlWCgtMSk7CisgICAgICAgICAgICAgICAgcmlnaHQ6IDA7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICAucmF0aW8tYmFyLWdyYXBoLmJldHRlciAuYmFyIHsKICAgICAgICAgICAg
ICAgICBiYWNrZ3JvdW5kOiAjM2MzOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3dhcm5pbmctaWNvbi5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy93YXJuaW5nLWlj
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDBiMzg4OWQ2MjE5ZWMzY2I2ZDJkOGI2NjIxNDEwOTNkNTUwYzIz
MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy93YXJuaW5nLWljb24uanMKQEAgLTAsMCArMSwzMyBAQAorCitjbGFzcyBXYXJu
aW5nSWNvbiBleHRlbmRzIEJ1dHRvbkJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCd3YXJuaW5nLWljb24nKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY3NzVGVt
cGxhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmNzc1RlbXBsYXRlKCkgKyBgCisg
ICAgICAgICAgICAuYnV0dG9uIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMC43cmVtOworICAgICAgICAgICAgICAgIGhlaWdodDogMC43
cmVtOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmJ1dHRvbiBzdmcgeworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgfQorICAgICAgICBgOworICAgIH0K
KworICAgIHN0YXRpYyBodG1sVGVtcGxhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGA8YSBj
bGFzcz0iYnV0dG9uIiBocmVmPSIjIj48c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KKyAgICAg
ICAgICAgIDxnIHN0cm9rZT0iIzlmNjAwMCIgZmlsbD0iIzlmNjAwMCIgc3Ryb2tlLXdpZHRoPSI3
Ij4KKyAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCwgMTAwLDAsIDAsMTAwIiAv
PgorICAgICAgICAgICAgPC9nPgorICAgICAgICA8L3N2Zz48L2E+YDsKKyAgICB9CisKK30KKwor
Q29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCd3YXJuaW5nLWljb24nLCBXYXJuaW5nSWNvbik7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0
bWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwKaW5kZXgg
M2RiNjU3YjVmNmUxZmQ0MmVhZTM3OGY3MzA0NTAxMjU1OWU5ZDI5YS4uM2QxMTA2OGJhNzkwYThl
MTNiNDNjZjA3NTk2NjYyNGQ1ZDkyNDVjZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9pbmRleC5odG1sCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvaW5kZXguaHRtbApAQCAtNjYsNiArNjYsNyBAQCBSdW4gdG9vbHMvYnVuZGxl
LXYzLXNjcmlwdHMgdG8gc3BlZWQgdXAgdGhlIGxvYWQgdGltZSBmb3IgcHJvZHVjdGlvbi5gKTsK
ICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAg
ICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3NwaW5uZXItaWNvbi5qcyI+PC9zY3JpcHQ+CiAg
ICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2J1dHRvbi1iYXNlLmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvd2FybmluZy1pY29uLmpzIj48L3Njcmlw
dD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvY2xvc2UtYnV0dG9uLmpzIj48L3Nj
cmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIu
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9lZGl0YWJsZS10
ZXh0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbWFpbi5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbWFp
bi5qcwppbmRleCBhMjFiNzM1N2Q0ZTMxMjZlY2E3MTkyNDM0YWUyNmJmNzEwMTgxMzgyLi5jMDcz
YjM4ZWY0MGNkYmY5NGMxMjAzYjhhMjRlYWUwYTc1ZTIzMjBhIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21haW4uanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tYWluLmpzCkBAIC0yMCw3ICsyMCw3IEBAIGZ1bmN0aW9uIG1h
aW4oKSB7CiAgICAgICAgIHZhciByb3V0ZXIgPSBuZXcgUGFnZVJvdXRlcigpOwogICAgICAgICB2
YXIgY2hhcnRzVG9vbGJhciA9IG5ldyBDaGFydHNUb29sYmFyOwogCi0gICAgICAgIHZhciBzdW1t
YXJ5UGFnZSA9IG5ldyBTdW1tYXJ5UGFnZShtYW5pZmVzdC5zdW1tYXJ5KTsKKyAgICAgICAgdmFy
IHN1bW1hcnlQYWdlID0gbWFuaWZlc3Quc3VtbWFyeSA/IG5ldyBTdW1tYXJ5UGFnZShtYW5pZmVz
dC5zdW1tYXJ5KSA6IG51bGw7CiAgICAgICAgIHZhciBjaGFydHNQYWdlID0gbmV3IENoYXJ0c1Bh
Z2UoY2hhcnRzVG9vbGJhcik7CiAgICAgICAgIHZhciBhbmFseXNpc0NhdGVnb3J5UGFnZSA9IG5l
dyBBbmFseXNpc0NhdGVnb3J5UGFnZSgpOwogCkBAIC0zMSwxMyArMzEsMTQgQEAgZnVuY3Rpb24g
bWFpbigpIHsKICAgICAgICAgYW5hbHlzaXNUYXNrUGFnZS5zZXRQYXJlbnRQYWdlKGFuYWx5c2lz
Q2F0ZWdvcnlQYWdlKTsKIAogICAgICAgICB2YXIgaGVhZGluZyA9IG5ldyBIZWFkaW5nKG1hbmlm
ZXN0LnNpdGVUaXRsZSk7Ci0gICAgICAgIGhlYWRpbmcuYWRkUGFnZUdyb3VwKFtzdW1tYXJ5UGFn
ZSwgY2hhcnRzUGFnZSwgYW5hbHlzaXNDYXRlZ29yeVBhZ2VdKTsKKyAgICAgICAgaGVhZGluZy5h
ZGRQYWdlR3JvdXAoW3N1bW1hcnlQYWdlLCBjaGFydHNQYWdlLCBhbmFseXNpc0NhdGVnb3J5UGFn
ZV0uZmlsdGVyKGZ1bmN0aW9uIChwYWdlKSB7IHJldHVybiBwYWdlOyB9KSk7CiAKICAgICAgICAg
aGVhZGluZy5zZXRUaXRsZShtYW5pZmVzdC5zaXRlVGl0bGUpOwogICAgICAgICBoZWFkaW5nLmFk
ZFBhZ2VHcm91cChkYXNoYm9hcmRQYWdlcyk7CiAKICAgICAgICAgdmFyIHJvdXRlciA9IG5ldyBQ
YWdlUm91dGVyKCk7Ci0gICAgICAgIHJvdXRlci5hZGRQYWdlKHN1bW1hcnlQYWdlKTsKKyAgICAg
ICAgaWYoc3VtbWFyeVBhZ2UpCisgICAgICAgICAgICByb3V0ZXIuYWRkUGFnZShzdW1tYXJ5UGFn
ZSk7CiAgICAgICAgIHJvdXRlci5hZGRQYWdlKGNoYXJ0c1BhZ2UpOwogICAgICAgICByb3V0ZXIu
YWRkUGFnZShjcmVhdGVBbmFseXNpc1Rhc2tQYWdlKTsKICAgICAgICAgcm91dGVyLmFkZFBhZ2Uo
YW5hbHlzaXNUYXNrUGFnZSk7CkBAIC00NSw3ICs0Niw5IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAg
ICAgICAgIGZvciAodmFyIHBhZ2Ugb2YgZGFzaGJvYXJkUGFnZXMpCiAgICAgICAgICAgICByb3V0
ZXIuYWRkUGFnZShwYWdlKTsKIAotICAgICAgICBpZiAoZGFzaGJvYXJkUGFnZXMpCisgICAgICAg
IGlmIChzdW1tYXJ5UGFnZSkKKyAgICAgICAgICAgIHJvdXRlci5zZXREZWZhdWx0UGFnZShzdW1t
YXJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKGRhc2hib2FyZFBhZ2VzKQogICAgICAgICAgICAg
cm91dGVyLnNldERlZmF1bHRQYWdlKGRhc2hib2FyZFBhZ2VzWzBdKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcm91dGVyLnNldERlZmF1bHRQYWdlKGNoYXJ0c1BhZ2UpOwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQt
c2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3Vy
ZW1lbnQtc2V0LmpzCmluZGV4IDk3ZTkyMDZjODc2YTg4ZGM0MWVmYThiNmZlODk2NDM5MjAyODM4
MmEuLjUyMjMyNzZmMTE5MDMyZDEzYTBjMGJhZTYyY2VhODVhMTU1NzEwZDMgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNl
dC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFz
dXJlbWVudC1zZXQuanMKQEAgLTEwLDE3ICsxMCwxNyBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7
CiAgICAgICAgIHRoaXMuX21ldHJpY0lkID0gbWV0cmljSWQ7CiAgICAgICAgIHRoaXMuX2xhc3RN
b2RpZmllZCA9ICtsYXN0TW9kaWZpZWQ7CiAKLSAgICAgICAgdGhpcy5fd2FpdGluZ0ZvclByaW1h
cnlDbHVzdGVyID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZmV0Y2hlZFByaW1hcnkgPSBmYWxzZTsK
LSAgICAgICAgdGhpcy5fZW5kVGltZVRvQ2FsbGJhY2sgPSB7fTsKLQogICAgICAgICB0aGlzLl9z
b3J0ZWRDbHVzdGVycyA9IFtdOwogICAgICAgICB0aGlzLl9wcmltYXJ5Q2x1c3RlckVuZFRpbWUg
PSBudWxsOwogICAgICAgICB0aGlzLl9jbHVzdGVyQ291bnQgPSBudWxsOwogICAgICAgICB0aGlz
Ll9jbHVzdGVyU3RhcnQgPSBudWxsOwogICAgICAgICB0aGlzLl9jbHVzdGVyU2l6ZSA9IG51bGw7
CisgICAgICAgIHRoaXMuX2FsbEZldGNoZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fcHJpbWFyeUNs
dXN0ZXJQcm9taXNlID0gbnVsbDsKICAgICB9CiAKKyAgICBwbGF0Zm9ybUlkKCkgeyByZXR1cm4g
dGhpcy5fcGxhdGZvcm1JZDsgfQorCiAgICAgc3RhdGljIGZpbmRTZXQocGxhdGZvcm1JZCwgbWV0
cmljSWQsIGxhc3RNb2RpZmllZCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2V0KQpAQCAt
MzUsNyArMzUsNiBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgewogICAgICAgICB2YXIg
Y2x1c3RlclN0YXJ0ID0gdGhpcy5fY2x1c3RlclN0YXJ0OwogICAgICAgICB2YXIgY2x1c3RlclNp
emUgPSB0aGlzLl9jbHVzdGVyU2l6ZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY2x1c3RlclN0
YXJ0ICYmIGNsdXN0ZXJTaXplKTsKIAogICAgICAgICBmdW5jdGlvbiBjb21wdXRlQ2x1c3RlclN0
YXJ0KHRpbWUpIHsKICAgICAgICAgICAgIHZhciBkaWZmID0gdGltZSAtIGNsdXN0ZXJTdGFydDsK
QEAgLTU4LDg3ICs1Nyw2MSBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAKICAgICBmZXRjaEJl
dHdlZW4oc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fZmV0Y2hlZFByaW1hcnkpIHsKLSAgICAgICAgICAgIHZhciBwcmltYXJ5RmV0Y2hIYWRG
YWlsZWQgPSB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgPT09IGZhbHNlOwotICAgICAg
ICAgICAgaWYgKHByaW1hcnlGZXRjaEhhZEZhaWxlZCkgewotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXRoaXMuX3ByaW1h
cnlDbHVzdGVyUHJvbWlzZSkKKyAgICAgICAgICAgIHRoaXMuX3ByaW1hcnlDbHVzdGVyUHJvbWlz
ZSA9IHRoaXMuX2ZldGNoUHJpbWFyeUNsdXN0ZXIoKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgICAgICB0aGlzLl9wcmltYXJ5Q2x1c3RlclByb21pc2UuY2F0Y2goY2FsbGJhY2spOwor
ICAgICAgICByZXR1cm4gdGhpcy5fcHJpbWFyeUNsdXN0ZXJQcm9taXNlLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgdmFyIHByb21pc2VMaXN0ID0gW107CisgICAgICAgICAgICBmb3Ig
KHZhciBjbHVzdGVyRW5kVGltZSBvZiBzZWxmLmZpbmRDbHVzdGVycyhzdGFydFRpbWUsIGVuZFRp
bWUpKSB7CisgICAgICAgICAgICAgICAgaWYoIXNlbGYuX2FsbEZldGNoZXNbY2x1c3RlckVuZFRp
bWVdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hbGxGZXRjaGVzW2NsdXN0ZXJFbmRUaW1l
XSA9IHNlbGYuX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcihjbHVzdGVyRW5kVGltZSk7CisgICAgICAg
ICAgICAgICAgc2VsZi5fYWxsRmV0Y2hlc1tjbHVzdGVyRW5kVGltZV0udGhlbihjYWxsYmFjaywg
Y2FsbGJhY2spOworICAgICAgICAgICAgICAgIHByb21pc2VMaXN0LnB1c2goc2VsZi5fYWxsRmV0
Y2hlc1tjbHVzdGVyRW5kVGltZV0pOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIg
c2hvdWxkU3RhcnRQcmltYXJ5RmV0Y2ggPSAhdGhpcy5fd2FpdGluZ0ZvclByaW1hcnlDbHVzdGVy
OwotICAgICAgICAgICAgaWYgKHNob3VsZFN0YXJ0UHJpbWFyeUZldGNoKQotICAgICAgICAgICAg
ICAgIHRoaXMuX3dhaXRpbmdGb3JQcmltYXJ5Q2x1c3RlciA9IFtdOwotCi0gICAgICAgICAgICB0
aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIucHVzaCh7c3RhcnRUaW1lOiBzdGFydFRpbWUs
IGVuZFRpbWU6IGVuZFRpbWUsIGNhbGxiYWNrOiBjYWxsYmFja30pOwotCi0gICAgICAgICAgICBp
ZiAoc2hvdWxkU3RhcnRQcmltYXJ5RmV0Y2gpCi0gICAgICAgICAgICAgICAgdGhpcy5fZmV0Y2go
bnVsbCwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcnMoc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxsYmFj
ayk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUxpc3QpOworICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBfZmV0Y2hTZWNvbmRhcnlDbHVzdGVycyhzdGFydFRpbWUsIGVu
ZFRpbWUsIGNhbGxiYWNrKQorICAgIF9jb25zdHJ1Y3RVcmwodXNlQ2FjaGUsIGNsdXN0ZXJFbmRU
aW1lKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmV0Y2hlZFByaW1hcnkp
OwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jbHVzdGVyU3RhcnQgJiYgdGhpcy5fY2x1
c3RlclNpemUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zb3J0ZWRDbHVzdGVycy5s
ZW5ndGgpOwotCi0gICAgICAgIHZhciBjbHVzdGVycyA9IHRoaXMuZmluZENsdXN0ZXJzKHN0YXJ0
VGltZSwgZW5kVGltZSk7Ci0gICAgICAgIHZhciBzaG91bGRJbnZva2VDYWxsYWNrTm93ID0gZmFs
c2U7Ci0gICAgICAgIGZvciAodmFyIGVuZFRpbWUgb2YgY2x1c3RlcnMpIHsKLSAgICAgICAgICAg
IHZhciBpc1ByaW1hcnlDbHVzdGVyID0gZW5kVGltZSA9PSB0aGlzLl9wcmltYXJ5Q2x1c3RlckVu
ZFRpbWU7Ci0gICAgICAgICAgICB2YXIgc2hvdWxkU3RhcnRGZXRjaCA9ICFpc1ByaW1hcnlDbHVz
dGVyICYmICEoZW5kVGltZSBpbiB0aGlzLl9lbmRUaW1lVG9DYWxsYmFjayk7Ci0gICAgICAgICAg
ICBpZiAoc2hvdWxkU3RhcnRGZXRjaCkKLSAgICAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lVG9D
YWxsYmFja1tlbmRUaW1lXSA9IFtdOwotCi0gICAgICAgICAgICB2YXIgY2FsbGJhY2tMaXN0ID0g
dGhpcy5fZW5kVGltZVRvQ2FsbGJhY2tbZW5kVGltZV07Ci0gICAgICAgICAgICBpZiAoaXNQcmlt
YXJ5Q2x1c3RlciB8fCBjYWxsYmFja0xpc3QgPT09IHRydWUpCi0gICAgICAgICAgICAgICAgc2hv
dWxkSW52b2tlQ2FsbGFja05vdyA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICghY2FsbGJh
Y2tMaXN0LmluY2x1ZGVzKGNhbGxiYWNrKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0xpc3Qu
cHVzaChjYWxsYmFjayk7Ci0KLSAgICAgICAgICAgIGlmIChzaG91bGRTdGFydEZldGNoKQotICAg
ICAgICAgICAgICAgIHRoaXMuX2ZldGNoKGVuZFRpbWUsIHRydWUpOworICAgICAgICBpZiAoIXVz
ZUNhY2hlKSB7CisgICAgICAgICAgICByZXR1cm4gYC4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/cGxh
dGZvcm09JHt0aGlzLl9wbGF0Zm9ybUlkfSZtZXRyaWM9JHt0aGlzLl9tZXRyaWNJZH1gOwogICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHNob3VsZEludm9rZUNhbGxhY2tOb3cpCi0gICAgICAgICAg
ICBjYWxsYmFjaygpOwotICAgIH0KLQotICAgIF9mZXRjaChjbHVzdGVyRW5kVGltZSwgdXNlQ2Fj
aGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghY2x1c3RlckVuZFRpbWUgfHwgdXNl
Q2FjaGUpOwotCiAgICAgICAgIHZhciB1cmw7Ci0gICAgICAgIGlmICh1c2VDYWNoZSkgewotICAg
ICAgICAgICAgdXJsID0gYC4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LSR7dGhpcy5fcGxhdGZvcm1J
ZH0tJHt0aGlzLl9tZXRyaWNJZH1gOwotICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmRUaW1lKQot
ICAgICAgICAgICAgICAgIHVybCArPSAnLScgKyArY2x1c3RlckVuZFRpbWU7Ci0gICAgICAgICAg
ICB1cmwgKz0gJy5qc29uJzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB1cmwgPSBgLi4v
YXBpL21lYXN1cmVtZW50LXNldD9wbGF0Zm9ybT0ke3RoaXMuX3BsYXRmb3JtSWR9Jm1ldHJpYz0k
e3RoaXMuX21ldHJpY0lkfWA7CisgICAgICAgIHVybCA9IGAuLi9kYXRhL21lYXN1cmVtZW50LXNl
dC0ke3RoaXMuX3BsYXRmb3JtSWR9LSR7dGhpcy5fbWV0cmljSWR9YDsKKyAgICAgICAgaWYgKGNs
dXN0ZXJFbmRUaW1lKQorICAgICAgICAgICAgdXJsICs9ICctJyArICtjbHVzdGVyRW5kVGltZTsK
KyAgICAgICAgdXJsICs9ICcuanNvbic7CisgICAgICAgIHJldHVybiB1cmw7CisgICAgfQogCisg
ICAgX2ZldGNoUHJpbWFyeUNsdXN0ZXIoKSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAg
ICAgICAgcmV0dXJuIFJlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxmLl9jb25zdHJ1Y3RV
cmwodHJ1ZSwgbnVsbCkpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIGlmICgr
ZGF0YVsnbGFzdE1vZGlmaWVkJ10gPCBzZWxmLl9sYXN0TW9kaWZpZWQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFJlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxmLl9jb25zdHJ1Y3RVcmwo
ZmFsc2UsIG51bGwpKTsKKyAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICB9KS5jYXRj
aChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGlmKGVycm9yID09IDQwNCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHNlbGYuX2NvbnN0
cnVjdFVybChmYWxzZSwgbnVsbCkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KGVycm9yKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAg
c2VsZi5fZGlkRmV0Y2hKU09OKHRydWUsIGRhdGEpOworICAgICAgICAgICAgc2VsZi5fYWxsRmV0
Y2hlc1tzZWxmLl9wcmltYXJ5Q2x1c3RlckVuZFRpbWVdID0gc2VsZi5fcHJpbWFyeUNsdXN0ZXJQ
cm9taXNlOworICAgICAgICB9KTsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIFJlbW90ZUFQSS5n
ZXRKU09OV2l0aFN0YXR1cyh1cmwpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKLSAgICAgICAgICAg
IGlmICghY2x1c3RlckVuZFRpbWUgJiYgdXNlQ2FjaGUgJiYgK2RhdGFbJ2xhc3RNb2RpZmllZCdd
IDwgc2VsZi5fbGFzdE1vZGlmaWVkKQotICAgICAgICAgICAgICAgIHNlbGYuX2ZldGNoKGNsdXN0
ZXJFbmRUaW1lLCBmYWxzZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fZGlkRmV0Y2hKU09OKCFjbHVzdGVyRW5kVGltZSwgZGF0YSk7Ci0gICAgICAgIH0sIGZ1bmN0
aW9uIChlcnJvciwgeGhyKSB7Ci0gICAgICAgICAgICBpZiAoIWNsdXN0ZXJFbmRUaW1lICYmIGVy
cm9yID09IDQwNCAmJiB1c2VDYWNoZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9mZXRjaChjbHVz
dGVyRW5kVGltZSwgZmFsc2UpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNl
bGYuX2ZhaWxlZFRvRmV0Y2hKU09OKGNsdXN0ZXJFbmRUaW1lLCBlcnJvcik7CisgICAgX2ZldGNo
U2Vjb25kYXJ5Q2x1c3RlcihlbmRUaW1lKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAg
ICAgICAgcmV0dXJuIFJlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxmLl9jb25zdHJ1Y3RV
cmwodHJ1ZSwgZW5kVGltZSkpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNl
bGYuX2RpZEZldGNoSlNPTihmYWxzZSwgZGF0YSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAg
IF9kaWRGZXRjaEpTT04oaXNQcmltYXJ5Q2x1c3RlciwgcmVzcG9uc2UsIGNsdXN0ZXJFbmRUaW1l
KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNQcmltYXJ5Q2x1c3RlciB8fCB0aGlz
Ll9mZXRjaGVkUHJpbWFyeSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzUHJpbWFyeUNsdXN0
ZXIpOwogCiAgICAgICAgIGlmIChpc1ByaW1hcnlDbHVzdGVyKSB7CiAgICAgICAgICAgICB0aGlz
Ll9wcmltYXJ5Q2x1c3RlckVuZFRpbWUgPSByZXNwb25zZVsnZW5kVGltZSddOwpAQCAtMTQ5LDQw
ICsxMjIsNiBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9wcmltYXJ5Q2x1c3RlckVuZFRpbWUpOwogCiAgICAgICAgIHRoaXMuX2FkZEZl
dGNoZWRDbHVzdGVyKG5ldyBNZWFzdXJlbWVudENsdXN0ZXIocmVzcG9uc2UpKTsKLQotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIpOwotICAgICAg
ICBpZiAoIWlzUHJpbWFyeUNsdXN0ZXIpIHsKLSAgICAgICAgICAgIHRoaXMuX2ludm9rZUNhbGxi
YWNrcyhyZXNwb25zZS5lbmRUaW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgaW5z
dGFuY2VvZiBBcnJheSk7Ci0KLSAgICAgICAgdGhpcy5fZmV0Y2hlZFByaW1hcnkgPSB0cnVlOwot
ICAgICAgICBmb3IgKHZhciBlbnRyeSBvZiB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIp
Ci0gICAgICAgICAgICB0aGlzLl9mZXRjaFNlY29uZGFyeUNsdXN0ZXJzKGVudHJ5LnN0YXJ0VGlt
ZSwgZW50cnkuZW5kVGltZSwgZW50cnkuY2FsbGJhY2spOwotICAgICAgICB0aGlzLl93YWl0aW5n
Rm9yUHJpbWFyeUNsdXN0ZXIgPSB0cnVlOwotICAgIH0KLQotICAgIF9mYWlsZWRUb0ZldGNoSlNP
TihjbHVzdGVyRW5kVGltZSwgZXJyb3IpCi0gICAgewotICAgICAgICBpZiAoY2x1c3RlckVuZFRp
bWUpIHsKLSAgICAgICAgICAgIHRoaXMuX2ludm9rZUNhbGxiYWNrcyhjbHVzdGVyRW5kVGltZSwg
ZXJyb3IgfHwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmV0Y2hlZFByaW1hcnkpOwotICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgaW5zdGFuY2VvZiBBcnJheSk7
Ci0gICAgICAgIGZvciAodmFyIGVudHJ5IG9mIHRoaXMuX3dhaXRpbmdGb3JQcmltYXJ5Q2x1c3Rl
cikKLSAgICAgICAgICAgIGVudHJ5LmNhbGxiYWNrKGVycm9yIHx8IHRydWUpOwotICAgICAgICB0
aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBfaW52
b2tlQ2FsbGJhY2tzKGNsdXN0ZXJFbmRUaW1lLCBlcnJvcikKLSAgICB7Ci0gICAgICAgIHZhciBj
YWxsYmFja0xpc3QgPSB0aGlzLl9lbmRUaW1lVG9DYWxsYmFja1tjbHVzdGVyRW5kVGltZV07Ci0g
ICAgICAgIGZvciAodmFyIGNhbGxiYWNrIG9mIGNhbGxiYWNrTGlzdCkKLSAgICAgICAgICAgIGNh
bGxiYWNrKGVycm9yKTsKLSAgICAgICAgdGhpcy5fZW5kVGltZVRvQ2FsbGJhY2tbY2x1c3RlckVu
ZFRpbWVdID0gdHJ1ZTsKICAgICB9CiAKICAgICBfYWRkRmV0Y2hlZENsdXN0ZXIoY2x1c3RlcikK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvc3Vt
bWFyeS1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9z
dW1tYXJ5LXBhZ2UuanMKaW5kZXggNWU2MGIwZjg5OTBjYjg1YjFmMzAyMWEzOWQxOWFkZWZkMjhm
NWFkNi4uZDYwNzFjMWVjMTI1ZDliY2ExOTEwODM1YjYyNmQ4Y2E1YjJmYTk3YyAxMDA2NDQKLS0t
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9zdW1tYXJ5LXBhZ2Uu
anMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9zdW1tYXJ5
LXBhZ2UuanMKQEAgLTEyLDYgKzEyLDcgQEAgY2xhc3MgU3VtbWFyeVBhZ2UgZXh0ZW5kcyBQYWdl
V2l0aEhlYWRpbmcgewogICAgICAgICB0aGlzLl9zaG91bGRDb25zdHJ1Y3RUYWJsZSA9IHRydWU7
CiAgICAgICAgIHRoaXMuX3JlbmRlclF1ZXVlID0gW107CiAgICAgICAgIHRoaXMuX2NvbmZpZ0dy
b3VwcyA9IFtdOworICAgICAgICB0aGlzLl9leGNsdWRlZENvbmZpZ3VyYXRpb25zID0gc3VtbWFy
eVNldHRpbmdzLmV4Y2x1ZGVkQ29uZmlndXJhdGlvbnM7CiAKICAgICAgICAgZm9yICh2YXIgbWV0
cmljR3JvdXAgb2Ygc3VtbWFyeVNldHRpbmdzLm1ldHJpY0dyb3VwcykgewogICAgICAgICAgICAg
dmFyIGdyb3VwID0ge25hbWU6IG1ldHJpY0dyb3VwLm5hbWUsIHJvd3M6IFtdfTsKQEAgLTUyLDcg
KzUzLDcgQEAgY2xhc3MgU3VtbWFyeVBhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAg
IHsKICAgICAgICAgdmFyIHBsYXRmb3JtcyA9IHBsYXRmb3JtSWRMaXN0Lm1hcChmdW5jdGlvbiAo
aWQpIHsgcmV0dXJuIFBsYXRmb3JtLmZpbmRCeUlkKGlkKTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChv
YmopIHsgcmV0dXJuICEhb2JqOyB9KTsKICAgICAgICAgdmFyIG1ldHJpY3MgPSBtZXRyaWNJZExp
c3QubWFwKGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gTWV0cmljLmZpbmRCeUlkKGlkKTsgfSkuZmls
dGVyKGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuICEhb2JqOyB9KTsKLSAgICAgICAgdmFyIGNvbmZp
Z0dyb3VwID0gbmV3IFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwKHBsYXRmb3JtcywgbWV0
cmljcyk7CisgICAgICAgIHZhciBjb25maWdHcm91cCA9IG5ldyBTdW1tYXJ5UGFnZUNvbmZpZ3Vy
YXRpb25Hcm91cChwbGF0Zm9ybXMsIG1ldHJpY3MsIHRoaXMuX2V4Y2x1ZGVkQ29uZmlndXJhdGlv
bnMpOwogICAgICAgICB0aGlzLl9jb25maWdHcm91cHMucHVzaChjb25maWdHcm91cCk7CiAgICAg
ICAgIHJldHVybiBjb25maWdHcm91cDsKICAgICB9CkBAIC03NSwxMyArNzYsOSBAQCBjbGFzcyBT
dW1tYXJ5UGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICB0aGlzLl90
YWJsZS5ncm91cHMubWFwKGZ1bmN0aW9uIChyb3dHcm91cCkgewogICAgICAgICAgICAgICAgIHJl
dHVybiByb3dHcm91cC5yb3dzLm1hcChmdW5jdGlvbiAocm93LCByb3dJbmRleCkgewogICAgICAg
ICAgICAgICAgICAgICB2YXIgaGVhZGluZ3M7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyb3dH
cm91cC5yb3dzLmxlbmd0aCA9PSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ3Mg
PSBbZWxlbWVudCgndGgnLCB7Y2xhc3M6ICd1bmlmaWVkSGVhZGVyJywgY29sc3BhbjogMn0sIHJv
dy5uYW1lKV07Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGluZ3MgPSBbZWxlbWVudCgndGgnLCB7Y2xhc3M6ICdtaW5vckhlYWRlcid9LCBy
b3cubmFtZSldOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dJbmRleCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5ncy51bnNoaWZ0KGVsZW1lbnQoJ3RoJywge2Ns
YXNzOiAnbWFqb3JIZWFkZXInLCByb3dzcGFuOiByb3dHcm91cC5yb3dzLmxlbmd0aH0sIHJvd0dy
b3VwLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBo
ZWFkaW5ncyA9IFtlbGVtZW50KCd0aCcsIHtjbGFzczogJ21pbm9ySGVhZGVyJ30sIHJvdy5uYW1l
KV07CisgICAgICAgICAgICAgICAgICAgIGlmICghcm93SW5kZXgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWFkaW5ncy51bnNoaWZ0KGVsZW1lbnQoJ3RoJywge2NsYXNzOiAnbWFqb3JIZWFk
ZXInLCByb3dzcGFuOiByb3dHcm91cC5yb3dzLmxlbmd0aH0sIHJvd0dyb3VwLm5hbWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RyJywgW2hlYWRpbmdzLCByb3cuY2Vs
bHMubWFwKHNlbGYuX2NvbnN0cnVjdFJhdGlvR3JhcGguYmluZChzZWxmKSldKTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIH0pLApAQCAtOTIsMTYgKzg5LDI4IEBAIGNsYXNzIFN1
bW1hcnlQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICB7CiAgICAgICAgIHZhciBl
bGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwogICAgICAgICB2YXIgbGluayA9
IENvbXBvbmVudEJhc2UuY3JlYXRlTGluazsKKyAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb25MaXN0
ID0gY29uZmlndXJhdGlvbkdyb3VwLmNvbmZpZ3VyYXRpb25MaXN0KCk7CiAKICAgICAgICAgdmFy
IHJhdGlvR3JhcGggPSBuZXcgUmF0aW9CYXJHcmFwaCgpOwogCisgICAgICAgIHZhciBzdGF0ZSA9
IENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVGb3JDb25maWd1cmF0aW9uTGlzdChjb25maWd1cmF0aW9u
TGlzdCk7CisgICAgICAgIHZhciBhbmNob3IgPSBsaW5rKHJhdGlvR3JhcGgsICdPcGVuIGNoYXJ0
cycsIHRoaXMucm91dGVyKCkudXJsKCdjaGFydHMnLCBzdGF0ZSkpOwogICAgICAgICB0aGlzLl9y
ZW5kZXJRdWV1ZS5wdXNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJhdGlvR3JhcGgudXBk
YXRlKGNvbmZpZ3VyYXRpb25Hcm91cC5yYXRpbygpLCBjb25maWd1cmF0aW9uR3JvdXAubGFiZWwo
KSk7CisgICAgICAgICAgICB2YXIgd2FybmluZ3MgPSBjb25maWd1cmF0aW9uR3JvdXAud2Fybmlu
Z3MoKTsKKyAgICAgICAgICAgIHZhciB3YXJuaW5nVGV4dCA9ICcnOworICAgICAgICAgICAgZm9y
ICh2YXIgdHlwZSBpbiB3YXJuaW5ncykgeworICAgICAgICAgICAgICAgIHZhciBwbGF0Zm9ybXMg
PSB3YXJuaW5nc1t0eXBlXTsKKyAgICAgICAgICAgICAgICB3YXJuaW5nVGV4dCArPSAnTWlzc2lu
ZyAnICsgdHlwZSArICcgZm9yIGZvbGxvd2luZyBwbGF0Zm9ybShzKTogJyArIEFycmF5LmZyb20o
cGxhdGZvcm1zKS5tYXAoZnVuY3Rpb24gKHBsYXRmb3JtKSB7IHJldHVybiBwbGF0Zm9ybS5uYW1l
KCk7IH0pLmpvaW4oJywgJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFuY2hvci50
aXRsZSA9IHdhcm5pbmdUZXh0IHx8ICdPcGVuIGNoYXJ0cyc7CisgICAgICAgICAgICByYXRpb0dy
YXBoLnVwZGF0ZShjb25maWd1cmF0aW9uR3JvdXAucmF0aW8oKSwgY29uZmlndXJhdGlvbkdyb3Vw
LmxhYmVsKCksICEhd2FybmluZ1RleHQpOwogICAgICAgICAgICAgcmF0aW9HcmFwaC5yZW5kZXIo
KTsKICAgICAgICAgfSk7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uTGlzdC5sZW5ndGggPT0g
MCkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0ZCcsIHJhdGlvR3JhcGgpOwogCi0gICAg
ICAgIHZhciBzdGF0ZSA9IENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVGb3JDb25maWd1cmF0aW9uTGlz
dChjb25maWd1cmF0aW9uR3JvdXAuY29uZmlndXJhdGlvbkxpc3QoKSk7Ci0gICAgICAgIHJldHVy
biBlbGVtZW50KCd0ZCcsIGxpbmsocmF0aW9HcmFwaCwgJ09wZW4gY2hhcnRzJywgdGhpcy5yb3V0
ZXIoKS51cmwoJ2NoYXJ0cycsIHN0YXRlKSkpOworICAgICAgICByZXR1cm4gZWxlbWVudCgndGQn
LCBhbmNob3IpOwogICAgIH0KIAogICAgIHN0YXRpYyBodG1sVGVtcGxhdGUoKQpAQCAtMTY3LDE0
ICsxNzYsMTQgQEAgY2xhc3MgU3VtbWFyeVBhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewog
fQogCiBjbGFzcyBTdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb25Hcm91cCB7Ci0gICAgY29uc3RydWN0
b3IocGxhdGZvcm1zLCBtZXRyaWNzKQorICAgIGNvbnN0cnVjdG9yKHBsYXRmb3JtcywgbWV0cmlj
cywgZXhjbHVkZWRDb25maWd1cmF0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMuX21lYXN1cmVt
ZW50U2V0cyA9IFtdOwogICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uTGlzdCA9IFtdOwogICAg
ICAgICB0aGlzLl9zZXRUb1JhdGlvID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fcmF0aW8gPSBu
dWxsOwogICAgICAgICB0aGlzLl9sYWJlbCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2NoYW5nZVR5
cGUgPSBudWxsOworICAgICAgICB0aGlzLl93YXJuaW5ncyA9IHt9OwogICAgICAgICB0aGlzLl9z
bWFsbGVySXNCZXR0ZXIgPSBtZXRyaWNzLmxlbmd0aCA/IG1ldHJpY3NbMF0uaXNTbWFsbGVyQmV0
dGVyKCkgOiBudWxsOwogCiAgICAgICAgIGZvciAodmFyIHBsYXRmb3JtIG9mIHBsYXRmb3Jtcykg
ewpAQCAtMTgzLDYgKzE5Miw5IEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3Vw
IHsKICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtZXRyaWMgaW5zdGFuY2VvZiBNZXRy
aWMpOwogICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NtYWxsZXJJc0JldHRl
ciA9PSBtZXRyaWMuaXNTbWFsbGVyQmV0dGVyKCkpOwogICAgICAgICAgICAgICAgIG1ldHJpYy5p
c1NtYWxsZXJCZXR0ZXIoKTsKKworICAgICAgICAgICAgICAgIGlmIChleGNsdWRlZENvbmZpZ3Vy
YXRpb25zICYmIHBsYXRmb3JtLmlkKCkgaW4gZXhjbHVkZWRDb25maWd1cmF0aW9ucyAmJiBleGNs
dWRlZENvbmZpZ3VyYXRpb25zW3BsYXRmb3JtLmlkKCldLmluY2x1ZGVzKCttZXRyaWMuaWQoKSkp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwbGF0
Zm9ybS5oYXNNZXRyaWMobWV0cmljKSkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZWFz
dXJlbWVudFNldHMucHVzaChNZWFzdXJlbWVudFNldC5maW5kU2V0KHBsYXRmb3JtLmlkKCksIG1l
dHJpYy5pZCgpLCBwbGF0Zm9ybS5sYXN0TW9kaWZpZWQobWV0cmljKSkpOwogICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uTGlzdC5wdXNoKFtwbGF0Zm9ybS5pZCgpLCBtZXRy
aWMuaWQoKV0pOwpAQCAtMTkzLDYgKzIwNSw3IEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJh
dGlvbkdyb3VwIHsKIAogICAgIHJhdGlvKCkgeyByZXR1cm4gdGhpcy5fcmF0aW87IH0KICAgICBs
YWJlbCgpIHsgcmV0dXJuIHRoaXMuX2xhYmVsOyB9CisgICAgd2FybmluZ3MoKSB7IHJldHVybiB0
aGlzLl93YXJuaW5nczsgfQogICAgIGNoYW5nZVR5cGUoKSB7IHJldHVybiB0aGlzLl9jaGFuZ2VU
eXBlOyB9CiAgICAgY29uZmlndXJhdGlvbkxpc3QoKSB7IHJldHVybiB0aGlzLl9jb25maWd1cmF0
aW9uTGlzdDsgfQogCkBAIC0yMTksMzcgKzIzMiw0MCBAQCBjbGFzcyBTdW1tYXJ5UGFnZUNvbmZp
Z3VyYXRpb25Hcm91cCB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgYXZlcmFnZVJhdGlvID0g
U3RhdGlzdGljcy5tZWFuKHJhdGlvcyk7Ci0gICAgICAgIGlmIChpc05hTihhdmVyYWdlUmF0aW8p
KSB7Ci0gICAgICAgICAgICB0aGlzLl9zdW1tYXJ5ID0gJy0nOwotICAgICAgICAgICAgdGhpcy5f
Y2hhbmdlVHlwZSA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoTWF0aC5hYnMoYXZlcmFnZVJhdGlvIC0gMSkgPCAwLjAwMSkgeyAvLyBMZXNzIHRo
YW4gMC4xJSBkaWZmZXJlbmNlLgotICAgICAgICAgICAgdGhpcy5fc3VtbWFyeSA9ICdObyBjaGFu
Z2UnOwotICAgICAgICAgICAgdGhpcy5fY2hhbmdlVHlwZSA9IG51bGw7CisgICAgICAgIGlmIChp
c05hTihhdmVyYWdlUmF0aW8pKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAg
ICAgICAgdmFyIGN1cnJlbnRJc1NtYWxsZXJUaGFuQmFzZWxpbmUgPSBhdmVyYWdlUmF0aW8gPCAx
OwogICAgICAgICB2YXIgY2hhbmdlVHlwZSA9IHRoaXMuX3NtYWxsZXJJc0JldHRlciA9PSBjdXJy
ZW50SXNTbWFsbGVyVGhhbkJhc2VsaW5lID8gJ2JldHRlcicgOiAnd29yc2UnOwotICAgICAgICBp
ZiAoY3VycmVudElzU21hbGxlclRoYW5CYXNlbGluZSkKLSAgICAgICAgICAgIGF2ZXJhZ2VSYXRp
byA9IDEgLyBhdmVyYWdlUmF0aW87CisgICAgICAgIGF2ZXJhZ2VSYXRpbyA9IE1hdGguYWJzKGF2
ZXJhZ2VSYXRpbyAtIDEpOwogCi0gICAgICAgIHRoaXMuX3JhdGlvID0gKGF2ZXJhZ2VSYXRpbyAt
IDEpICogKGNoYW5nZVR5cGUgPT0gJ2JldHRlcicgPyAxIDogLTEpOwotICAgICAgICB0aGlzLl9s
YWJlbCA9ICgoYXZlcmFnZVJhdGlvIC0gMSkgKiAxMDApLnRvRml4ZWQoMSkgKyAnJSc7CisgICAg
ICAgIHRoaXMuX3JhdGlvID0gYXZlcmFnZVJhdGlvICogKGNoYW5nZVR5cGUgPT0gJ2JldHRlcicg
PyAxIDogLTEpOworICAgICAgICB0aGlzLl9sYWJlbCA9IChhdmVyYWdlUmF0aW8gKiAxMDApLnRv
Rml4ZWQoMSkgKyAnJSc7CiAgICAgICAgIHRoaXMuX2NoYW5nZVR5cGUgPSBjaGFuZ2VUeXBlOwog
ICAgIH0KIAogICAgIF9mZXRjaEFuZENvbXB1dGVSYXRpbyhzZXQsIHRpbWVSYW5nZSkKICAgICB7
CiAgICAgICAgIHZhciBzZXRUb1JhdGlvID0gdGhpcy5fc2V0VG9SYXRpbzsKLSAgICAgICAgcmV0
dXJuIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLl9mZXRjaERhdGEoc2V0LCB0aW1lUmFu
Z2UpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg
IHJldHVybiBzZXQuZmV0Y2hCZXR3ZWVuKHRpbWVSYW5nZVswXSwgdGltZVJhbmdlWzFdKS50aGVu
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHZhciBiYXNlbGluZVRpbWVTZXJpZXMgPSBzZXQu
ZmV0Y2hlZFRpbWVTZXJpZXMoJ2Jhc2VsaW5lJywgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAg
IHZhciBjdXJyZW50VGltZVNlcmllcyA9IHNldC5mZXRjaGVkVGltZVNlcmllcygnY3VycmVudCcs
IGZhbHNlLCBmYWxzZSk7CiAKICAgICAgICAgICAgIHZhciBiYXNlbGluZU1lZGlhbiA9IFN1bW1h
cnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLl9tZWRpYW5Gb3JUaW1lUmFuZ2UoYmFzZWxpbmVUaW1l
U2VyaWVzLCB0aW1lUmFuZ2UpOwogICAgICAgICAgICAgdmFyIGN1cnJlbnRNZWRpYW4gPSBTdW1t
YXJ5UGFnZUNvbmZpZ3VyYXRpb25Hcm91cC5fbWVkaWFuRm9yVGltZVJhbmdlKGN1cnJlbnRUaW1l
U2VyaWVzLCB0aW1lUmFuZ2UpOworICAgICAgICAgICAgdmFyIHBsYXRmb3JtID0gUGxhdGZvcm0u
ZmluZEJ5SWQoc2V0LnBsYXRmb3JtSWQoKSk7CisgICAgICAgICAgICBpZiAoIWJhc2VsaW5lTWVk
aWFuKSB7CisgICAgICAgICAgICAgICAgaWYoISgnYmFzZWxpbmUnIGluIHNlbGYuX3dhcm5pbmdz
KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FybmluZ3NbJ2Jhc2VsaW5lJ10gPSBuZXcg
U2V0OworICAgICAgICAgICAgICAgIHNlbGYuX3dhcm5pbmdzWydiYXNlbGluZSddLmFkZChwbGF0
Zm9ybSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRNZWRpYW4pIHsK
KyAgICAgICAgICAgICAgICBpZighKCdjdXJyZW50JyBpbiBzZWxmLl93YXJuaW5ncykpCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3dhcm5pbmdzWydjdXJyZW50J10gPSBuZXcgU2V0OworICAg
ICAgICAgICAgICAgIHNlbGYuX3dhcm5pbmdzWydjdXJyZW50J10uYWRkKHBsYXRmb3JtKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgc2V0VG9SYXRpby5zZXQoc2V0LCBjdXJyZW50TWVk
aWFuIC8gYmFzZWxpbmVNZWRpYW4pOwogICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICBzZXRUb1JhdGlvLnNldChzZXQsIE5hTik7CkBAIC0yNzAsMjEgKzI4Niw0IEBA
IGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwIHsKICAgICAgICAgdmFyIHBvaW50
cyA9IHRpbWVTZXJpZXMuZGF0YUJldHdlZW5Qb2ludHMoc3RhcnRQb2ludCwgZW5kUG9pbnQpLm1h
cChmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50LnZhbHVlOyB9KTsKICAgICAgICAgcmV0
dXJuIFN0YXRpc3RpY3MubWVkaWFuKHBvaW50cyk7CiAgICAgfQotCi0gICAgc3RhdGljIF9mZXRj
aERhdGEoc2V0LCB0aW1lUmFuZ2UpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTWFrZSBmZXRj
aEJldHdlZW4gcmV0dXJuIGEgcHJvbWlzZS4KLSAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIHNldC5mZXRjaEJldHdlZW4odGltZVJhbmdlWzBdLCB0aW1lUmFuZ2VbMV0sIGZ1
bmN0aW9uIChlcnJvcikgewotICAgICAgICAgICAgICAgIGlmIChkb25lKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
ICAgICAgICByZWplY3QobnVsbCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2V0Lmhhc0Zl
dGNoZWRSYW5nZSh0aW1lUmFuZ2VbMF0sIHRpbWVSYW5nZVsxXSkpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMKaW5kZXgg
MDU3NzZhZGQwZWMzMzI2NmE2ODk1MWFkNmQxOGViZmFkYmNiNTBjNi4uZmZjMTZhY2QzNWY5YzBl
MDQxY2Y3NmIwODFjNmIyNTM1M2ZiNWIzZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC10ZXN0cy5qcwpAQCAt
NDUsNyArNDUsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgIGl0KCdzaG91bGQgaW52b2tlIHRoZSBjYWxsYmFjayB3aGVuIHRoZSB1cC10by1kYXRl
IGNhY2hlZCBwcmltYXJ5IGNsdXN0ZXIgaXMgZmV0Y2hlZCBhbmQgaXQgbWF0Y2hlcyB0aGUgcmVx
dWVzdGVkIHJhbmdlJywgZnVuY3Rpb24gKGRvbmUpIHsKICAgICAgICAgICAgIHZhciBzZXQgPSBN
ZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDMwMDApOwogICAgICAgICAgICAgdmFyIGNhbGxD
b3VudCA9IDA7Ci0gICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDIwMDAsIDMwMDAsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gc2V0LmZldGNoQmV0d2VlbigyMDAw
LCAzMDAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgY2FsbENvdW50Kys7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEp
OwpAQCAtNjIsNyArNjIsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0ZXJDb3VudCc6IDIsCiAgICAgICAgICAgICAgICAg
J3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAgICAgICAgcmVxdWVzdHNbMF0ucHJvbWlzZS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgZG9u
ZSgpOwpAQCAtNzEsMTEgKzcxLDE5IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hv
dWxkIGludm9rZSB0aGUgY2FsbGJhY2sgYW5kIGZldGNoIGEgc2Vjb25kYXJ5IGNsdXN0ZXInCi0g
ICAgICAgICAgICArICd3aGVuIHRoZSBjYWNoZWQgcHJpbWFyeSBjbHVzdGVyIGlzIHVwLXRvLWRh
dGUgYW5kIHdpdGhpbiBpbiB0aGUgcmVxdWVzdGVkIHJhbmdlJywgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICAgICAgZnVuY3Rpb24gd2FpdEZvck1lYXN1cmVtZW50U2V0KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaXQoJ3Nob3VsZCBpbnZv
a2UgdGhlIGNhbGxiYWNrIGFuZCBmZXRjaCBhIHNlY29uZGFyeSBjbHVzdGVyIHdoZW4gdGhlIGNh
Y2hlZCBwcmltYXJ5IGNsdXN0ZXIgaXMgdXAtdG8tZGF0ZSBhbmQgd2l0aGluIGluIHRoZSByZXF1
ZXN0ZWQgcmFuZ2UnLCBmdW5jdGlvbiAoZG9uZSkgewogICAgICAgICAgICAgdmFyIHNldCA9IE1l
YXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwgMzAwMCk7CiAgICAgICAgICAgICB2YXIgY2FsbENv
dW50ID0gMDsKLSAgICAgICAgICAgIHNldC5mZXRjaEJldHdlZW4oMTAwMCwgMzAwMCwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgdmFyIHByb21pc2UgPSBzZXQuZmV0Y2hCZXR3ZWVuKDEwMDAs
IDMwMDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBjYWxsQ291bnQrKzsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CkBAIC05Miw3ICsxMDAsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0ZXJDb3VudCc6IDIsCiAgICAgICAgICAgICAgICAg
J3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVuKGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAxKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnLi4vZGF0YS9tZWFzdXJl
bWVudC1zZXQtMS0xLTIwMDAuanNvbicpOwpAQCAtMTIxLDEzICsxMjksMTUgQEAgZGVzY3JpYmUo
J01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICdjbHVzdGVy
Q291bnQnOiAzLAogICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CiAKLSAgICAgICAg
ICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFy
IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVu
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVu
Z3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAn
Li4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTMwMDAuanNvbicpOwogCi0gICAgICAgICAgICAg
ICAgdmFyIGNhbGxDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgc2V0LmZldGNoQmV0d2Vlbigw
LCA3MDAwLCBmdW5jdGlvbiAoKSB7IGNhbGxDb3VudCsrOyB9KTsKIAorICAgICAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQsIDEpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcuLi9kYXRhL21lYXN1cmVt
ZW50LXNldC0xLTEtMjAwMC5qc29uJyk7CkBAIC0xNTgsNyArMTY4LDcgQEAgZGVzY3JpYmUoJ01l
YXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICdjbHVzdGVyQ291
bnQnOiAzLAogICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CiAKLSAgICAgICAgICAg
IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgd2FpdEZv
ck1lYXN1cmVtZW50U2V0KCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzFdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0zMDAwLmpz
b24nKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnLi4v
ZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTQwMDAuanNvbicpOwpAQCAtMTg3LDIzICsxOTcsMjIg
QEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgICdjbHVzdGVyQ291bnQnOiAzLAogICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7
CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICB3YWl0Rm9yTWVhc3VyZW1l
bnRTZXQoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHNbMV0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTQwMDAuanNvbicpOwotCi0g
ICAgICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgc2V0LmZl
dGNoQmV0d2VlbigxMjA3LCAxMjkzLCBmdW5jdGlvbiAoKSB7IGNhbGxDb3VudCsrOyB9KTsKLQor
ICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKTsKKyAgICAgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
YWxsQ291bnQsIDApOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcu
Li9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMjAwMC5qc29uJyk7Ci0KICAgICAgICAgICAgICAg
ICBzZXQuZmV0Y2hCZXR3ZWVuKDE5NjQsIDM0MDEsIGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Kys7
IH0pOwotCisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOwor
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNhbGxDb3VudCwgMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNd
LnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0zMDAwLmpzb24nKTsKLQogICAgICAg
ICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikg
ewogICAgICAgICAgICAgICAgIGRvbmUoZXJyb3IpOwpAQCAtMjIxLDcgKzIzMCw3IEBAIGRlc2Ny
aWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKIAogICAgICAgICAgICAgcmVxdWVz
dHNbMF0ucmVqZWN0KDUwMCk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgd2FpdEZvck1lYXN1cmVtZW50U2V0KCkudGhlbihm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMSk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAg
ICAgICAgICAgICAgZG9uZSgpOwpAQCAtMjcxLDcgKzI4MCw3IEBAIGRlc2NyaWJlKCdNZWFzdXJl
bWVudFNldCcsIGZ1bmN0aW9uICgpIHsKIAogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVqZWN0
KDQwNCk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgd2FpdEZvck1lYXN1cmVtZW50U2V0KCkudGhlbihmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMCk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/cGxh
dGZvcm09MSZtZXRyaWM9MScpOwpAQCAtMzA2LDcgKzMxNSw3IEBAIGRlc2NyaWJlKCdNZWFzdXJl
bWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAnY2x1c3RlckNvdW50Jzog
MiwKICAgICAgICAgICAgICAgICAnc3RhdHVzJzogJ09LJ30pOwogCi0gICAgICAgICAgICBQcm9t
aXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHdhaXRGb3JNZWFz
dXJlbWVudFNldCgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjYWxsQ291bnQsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChhbHRlcm5h
dGl2ZUNhbGxDb3VudCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CkBAIC0zMzcsMTYgKzM0NiwyMCBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRT
ZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICB2YXIgY2FsbENvdW50Rm9yNDAwMFRvNTAw
MCA9IDA7CiAgICAgICAgICAgICB2YXIgY2FsbENvdW50Rm9yMjAwMCA9IDA7CiAgICAgICAgICAg
ICB2YXIgY2FsbENvdW50Rm9yMjAwMFRvNDAwMCA9IDA7Ci0gICAgICAgICAgICBQcm9taXNlLnJl
c29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHdhaXRGb3JNZWFzdXJlbWVu
dFNldCgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
YWxsQ291bnRGb3I0MDAwLCAwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0u
dXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTQwMDAuanNvbicpOwogCiAgICAgICAg
ICAgICAgICAgc2V0LmZldGNoQmV0d2VlbigzNzA4LCA0ODAwLCBmdW5jdGlvbiAoKSB7IGNhbGxD
b3VudEZvcjQwMDBUbzUwMDArKzsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JN
ZWFzdXJlbWVudFNldCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDBUbzUwMDAsIDEpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogCiAgICAgICAg
ICAgICAgICAgc2V0LmZldGNoQmV0d2VlbigxMjA3LCAxMjkzLCBmdW5jdGlvbiAoKSB7IGNhbGxD
b3VudEZvcjIwMDArKzsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJl
bWVudFNldCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjIwMDAsIDApOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMjAw
MC5qc29uJyk7CkBAIC0zNTgsNiArMzcxLDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0Jywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAnZW5kVGltZSc6IDIwMDAsCiAgICAg
ICAgICAgICAgICAgICAgICdsYXN0TW9kaWZpZWQnOiA1MDAwLAogICAgICAgICAgICAgICAgICAg
ICAnc3RhdHVzJzogJ09LJ30pOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yTWVhc3Vy
ZW1lbnRTZXQoKTsKICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3I0MDAwLCAwKTsKQEAgLTM2NSw3ICszNzksOCBAQCBk
ZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjIwMDAsIDEpOwogCiAgICAgICAgICAgICAgICAgc2V0
LmZldGNoQmV0d2VlbigxOTY0LCAzNDAxLCBmdW5jdGlvbiAoKSB7IGNhbGxDb3VudEZvcjIwMDBU
bzQwMDArKzsgfSk7Ci0KKyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvck1lYXN1cmVtZW50
U2V0KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9yMjAwMFRvNDAwMCwgMSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0z
MDAwLmpzb24nKTsKQEAgLTM3Nyw2ICszOTIsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICdlbmRUaW1lJzogMzAwMCwKICAg
ICAgICAgICAgICAgICAgICAgJ2xhc3RNb2RpZmllZCc6IDUwMDAsCiAgICAgICAgICAgICAgICAg
ICAgICdzdGF0dXMnOiAnT0snfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFz
dXJlbWVudFNldCgpOwogICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDAsIDApOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3I0MDAwVG81MDAwLCAxKTsKQEAgLTM5MSw2ICs0
MDcsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICdlbmRUaW1lJzogNDAwMCwKICAgICAgICAgICAgICAgICAgICAgJ2xhc3RN
b2RpZmllZCc6IDUwMDAsCiAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOwogICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNh
bGxDb3VudEZvcjQwMDAsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291
bnRGb3I0MDAwVG81MDAwLCAyKTsKQEAgLTQwNiw0ICs0MjMsNCBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAKICAgICB9KTsKIAotfSk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278155</attachid>
            <date>2016-05-04 21:27:11 -0700</date>
            <delta_ts>2016-05-04 22:26:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157339-20160504212751.patch</filename>
            <type>text/plain</type>
            <size>37842</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDQ4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA3MDdiOTcwOTA5OTUxZTI4ODdkNWI1ODVmYjZhMWY5MTBlMWM5YThkLi5mOWYwZDYyNDJl
NGM5ZDFhNjI0NjM5YTQ4NTdkNmFlMzQ4MTUyZTJjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxNi0wNS0wNCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBTdW1tYXJ5IHBhZ2Ugc2hvdWxkIHNob3cgd2FybmluZ3Mg
d2hlbiBjdXJyZW50IG9yIGJhc2VsaW5lIGRhdGEgaXMgbWlzc2luZy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzMzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTZXQgc3VtbWFyeSBwYWdlIHRvIGJlIHRo
ZSBkZWZhdWx0IHBhZ2Ugb2YgdjMgVUkuCisgICAgICAgIFNob3cgd2FybmluZyBpY29uIHdoZW4g
ZWl0aGVyIGJhc2VsaW5lIG9yIGN1cnJlbnQgZGF0YSBpcyBtaXNzaW5nLgorICAgICAgICBNYWtl
IGZldGNoQmV0d2VlbiByZXR1cm5zIGEgcHJvbWlzZS4KKyAgICAgICAgVXBkYXRlIHVuaXQgdGVz
dHMgZm9yIE1lYXN1cmVtZW50U2V0LmZldGNoQmV0d2VlbiBzaW5jZSBpdCByZXR1cm5zIGEgcHJv
bWlzZSBub3cuCisgICAgICAgIEFkZCBhIHdvcmthcm91bmQgdG8gc2tpcCBzb21lIHBsYXRmb3Jt
IGFuZCBtZXRyaWMgY29uZmlndXJhdGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9u
ZW50cy9yYXRpby1iYXItZ3JhcGguanM6CisgICAgICAgIChSYXRpb0JhckdyYXBoKToKKyAgICAg
ICAgKFJhdGlvQmFyR3JhcGgucHJvdG90eXBlLnVwZGF0ZSk6IEFkZCBzaG93V2FybmluZ0ljb24g
ZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlIHNob3VsZCBzaG93IHdhcm5pbmcgaWNvbi4KKyAg
ICAgICAgKFJhdGlvQmFyR3JhcGgucHJvdG90eXBlLnJlbmRlcik6IFNob3cgd2FybmluZyBpY29u
IHdoZW4gc2hvd1dhcm5pbmdJY29uIGlzIHRydWUuCisgICAgICAgIChSYXRpb0JhckdyYXBoLmNz
c1RlbXBsYXRlKTogQWRkIHN0eWxlIGZvciB3YXJuaW5nIGljb24uCisgICAgICAgICogcHVibGlj
L3YzL2NvbXBvbmVudHMvd2FybmluZy1pY29uLmpzOiBBZGQgd2FybmluZyBpY29uLgorICAgICAg
ICAoV2FybmluZ0ljb24pOgorICAgICAgICAoV2FybmluZ0ljb24uY3NzVGVtcGxhdGUpOgorICAg
ICAgICAqIHB1YmxpYy92My9pbmRleC5odG1sOgorICAgICAgICAqIHB1YmxpYy92My9tYWluLmpz
OgorICAgICAgICAobWFpbik6IFNldCBzdW1tYXJ5IHBhZ2UgdG8gYmUgdGhlIGRlZmF1bHQgcGFn
ZSBvZiB2MyBVSS4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5q
czoKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0KToKKyAgICAgICAgKE1lYXN1cmVtZW50U2V0LnBy
b3RvdHlwZS5mZXRjaEJldHdlZW4pOiBSZXR1cm5zIGEgcHJvbWlzZS4gRml4IHRoZSBidWcgaW4g
cHJldmlvdXMgaW1wbGVtZW50YXRpb24gdGhhdCB3ZSBtaXNzCisgICAgICAgIHNvbWUgY2FsbGJh
Y2tzIHNvbWV0aW1lcy4gQmFzaWNhbGx5LCB3ZSB3aWxsIGZldGNoIHByaW1hcnkgY2x1c3RlciBm
aXJzdCwgdGhlbiBzZWNvbmRhcnkgY2x1c3RlcnMuIEZvciBlYWNoCisgICAgICAgIHNlY29uZGFy
eSBjbHVzdGVyIGZldGNoLCB3ZSB3aWxsIGFsd2F5cyBpbnZva2UgY2FsbGJhY2sgZXZlbiB3aGVu
IGl0IGZhaWxzLgorICAgICAgICAoTWVhc3VyZW1lbnRTZXQucHJvdG90eXBlLl9mZXRjaFNlY29u
ZGFyeUNsdXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKE1lYXN1cmVtZW50U2V0LnByb3RvdHlw
ZS5fZmV0Y2guZWxzZS51cmwuYXBpLm1lYXN1cmVtZW50LnNldCBwbGF0Zm9ybSk6IERlbGV0ZWQu
CisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL3N1bW1hcnktcGFnZS5qczoKKyAgICAgICAgKFN1
bW1hcnlQYWdlKTogQWRkIGEgdmFyaWFibGUgZm9yIGV4Y2x1ZGVkIGNvbmZpZ3VyYXRpb25zLgor
ICAgICAgICAoU3VtbWFyeVBhZ2UucHJvdG90eXBlLl9jcmVhdGVDb25maWd1cmF0aW9uR3JvdXAp
OiBQYXNzIGV4Y2x1ZGVkIGNvbmZpZ3VyYXRpb25zIHdoaWxlIGJ1aWxkaW5nIGNvbmZpZyBncm91
cHMuCisgICAgICAgIChTdW1tYXJ5UGFnZS5wcm90b3R5cGUuX2NvbnN0cnVjdFRhYmxlKTogUmVt
b3ZlIHRoZSBsb2dpYyBmb3IgdW5pZmllZCBoZWFkZXIgc2luY2UgaXQgYnJlYWtzIGNvbnNpc3Rl
bmN5IG9mIHRoZSB0YWJsZSBhcHBlYXJhbmNlLgorICAgICAgICAoU3VtbWFyeVBhZ2UucHJvdG90
eXBlLnRoaXMuX3JlbmRlclF1ZXVlLnB1c2gpOiBTaG93IHdhcm5pbmcgbWVzc2FnZSB3aGVuIGJh
c2VsaW5lL2N1cnJlbnQgZGF0YSBpcyBtaXNzaW5nLgorICAgICAgICAoU3VtbWFyeVBhZ2VDb25m
aWd1cmF0aW9uR3JvdXApOiBBZGQgYSB2YXJpYWJsZSB0byBrZWVwIHRyYWNrIG9mIHRoZSB3YXJu
aW5ncyB3aGlsZSBjb21wdXRpbmcgc3VtbWFyeS4KKyAgICAgICAgKFN1bW1hcnlQYWdlQ29uZmln
dXJhdGlvbkdyb3VwLnByb3RvdHlwZS53YXJuaW5ncyk6IEEgZ2V0dGVyIGZvciB3YXJuaW5ncy4K
KyAgICAgICAgKFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLl9jb21wdXRlU3VtbWFyeSk6
IEZpeCBhIGJ1ZyBpbiBjYWxjdWxhdGluZyByYXRpb3MuIFdlIHNob3VsZCBhbHdheXMgdXNlCisg
ICAgICAgIGN1cnJlbnQvYmFzZWxpbmUgZm9yIHJhdGlvIGFuZCBwcmVzZW50IHRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gcmF0aW8gYW5kIDEgaW4gdGhlIHN1bW1hcnkgcGFnZS4KKyAgICAgICAgKFN1
bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLnNldCB0aGVuKTogRGVsZXRlZC4KKyAgICAgICAg
KFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwLnNldCB2YXIpOiBEZWxldGVkLgorICAgICAg
ICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpzOiBBZGQgYSBoZWxwZXIgZnVu
Y3Rpb24gdG8gd2FpdCBmb3IgZmV0Y2hCZXR3ZWVuLiBVcGRhdGUgdW5pdCB0ZXN0cyBzaW5jZSBm
ZXRjaEJldHdlZW4gcmV0dXJucyBhIHByb21pc2Ugbm93LgorICAgICAgICAocHJvbWlzZS5zZXQg
ZmV0Y2hCZXR3ZWVuKToKKyAgICAgICAgKHNldCBNZWFzdXJlbWVudFNldCk6CisgICAgICAgIChz
ZXQgZmV0Y2hCZXR3ZWVuKTogRGVsZXRlZC4KKwogMjAxNi0wNC0yNiAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDaGFydCBzdGF0dXMgc2hvdWxkIGFsd2F5cyBi
ZSBjb21wdXRlZCBhZ2FpbnN0IHByaW9yIHZhbHVlcwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3JhdGlvLWJhci1ncmFwaC5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9yYXRpby1iYXItZ3Jh
cGguanMKaW5kZXggNzBmOTIzOGVkZTFkOWMwNWVlMzcyMjY1ZGM1ZDExODU2NWFkN2M1ZC4uZjE5
OWM2ZTA5M2IxMDk2ODQxMzViM2VhMTUyZjBmNTZkMzU3MzE5YiAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3JhdGlvLWJhci1ncmFwaC5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvcmF0
aW8tYmFyLWdyYXBoLmpzCkBAIC0zLDE4ICszLDE4IEBAIGNsYXNzIFJhdGlvQmFyR3JhcGggZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBz
dXBlcigncmF0aW8tYmFyLWdyYXBoJyk7Ci0gICAgICAgIHRoaXMuX3JhdGlvID0gMDsKKyAgICAg
ICAgdGhpcy5fcmF0aW8gPSBudWxsOwogICAgICAgICB0aGlzLl9sYWJlbCA9IG51bGw7CiAgICAg
ICAgIHRoaXMuX3Nob3VsZFJlbmRlciA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2JhciA9IHRoaXMu
Y29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5iYXInKTsKLSAgICAgICAgdGhpcy5fbGFiZWxDb250
YWluZXIgPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcubGFiZWwnKTsKKyAgICAgICAg
dGhpcy5fcmF0aW9CYXJHcmFwaCA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5yYXRp
by1iYXItZ3JhcGgnKTsKICAgICB9CiAKLSAgICB1cGRhdGUocmF0aW8sIGxhYmVsKQorICAgIHVw
ZGF0ZShyYXRpbywgbGFiZWwsIHNob3dXYXJuaW5nSWNvbikKICAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJhdGlvID49IC0xICYmIHJhdGlvIDw9IDEpOworICAgICAgICBjb25zb2xlLmFz
c2VydChpc05hTihyYXRpbykgfHwgKHJhdGlvID49IC0xICYmIHJhdGlvIDw9IDEpKTsKICAgICAg
ICAgdGhpcy5fcmF0aW8gPSByYXRpbzsKICAgICAgICAgdGhpcy5fbGFiZWwgPSBsYWJlbDsKKyAg
ICAgICAgdGhpcy5fc2hvd1dhcm5pbmdJY29uID0gc2hvd1dhcm5pbmdJY29uOwogICAgICAgICB0
aGlzLl9zaG91bGRSZW5kZXIgPSB0cnVlOwogICAgIH0KIApAQCAtMjIsMTggKzIyLDM1IEBAIGNs
YXNzIFJhdGlvQmFyR3JhcGggZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fc2hvdWxkUmVuZGVyKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLl9zaG91bGRSZW5kZXIgPSBmYWxzZTsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21wb25l
bnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CiAKLSAgICAgICAgdmFyIHBlcmNlbnQgPSBNYXRoLmFicyh0
aGlzLl9yYXRpbyAqIDEwMCk7Ci0gICAgICAgIHRoaXMuX2xhYmVsQ29udGFpbmVyLnRleHRDb250
ZW50ID0gdGhpcy5fbGFiZWw7Ci0gICAgICAgIHRoaXMuX2Jhci5zdHlsZS53aWR0aCA9IE1hdGgu
bWluKHBlcmNlbnQsIDUwKSArICclJzsKLSAgICAgICAgdGhpcy5fYmFyLnBhcmVudE5vZGUuY2xh
c3NOYW1lID0gJ3JhdGlvLWJhci1ncmFwaCAnICsgKHRoaXMuX3JhdGlvID4gMCA/ICdiZXR0ZXIn
IDogJ3dvcnNlJyk7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IFtlbGVtZW50KCdkaXYnLCB7Y2xh
c3M6ICdzZXBhcmF0b3InfSldOworICAgICAgICBpZiAodGhpcy5fc2hvd1dhcm5pbmdJY29uKSB7
CisgICAgICAgICAgICBpZiAodGhpcy5fcmF0aW8gJiYgdGhpcy5fcmF0aW8gPCAtMC40KQorICAg
ICAgICAgICAgICAgIHRoaXMuX3JhdGlvQmFyR3JhcGguY2xhc3NMaXN0LmFkZCgnd2FybmluZy1v
bi1yaWdodCcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3JhdGlv
QmFyR3JhcGguY2xhc3NMaXN0LnJlbW92ZSgnd2FybmluZy1vbi1yaWdodCcpOworICAgICAgICAg
ICAgY2hpbGRyZW4ucHVzaChuZXcgV2FybmluZ0ljb24pOworICAgICAgICB9CiAKLSAgICAgICAg
dGhpcy5fc2hvdWxkUmVuZGVyID0gZmFsc2U7CisgICAgICAgIHZhciBiYXJDbGFzc05hbWUgPSAn
YmFyJzsKKyAgICAgICAgdmFyIGxhYmVsQ2xhc3NOYW1lID0gJ2xhYmVsJzsKKyAgICAgICAgaWYg
KHRoaXMuX3JhdGlvKSB7CisgICAgICAgICAgICB2YXIgcmF0aW9UeXBlID0gdGhpcy5fcmF0aW8g
PiAwID8gJ2JldHRlcicgOiAnd29yc2UnOworICAgICAgICAgICAgYmFyQ2xhc3NOYW1lID0gW2Jh
ckNsYXNzTmFtZSwgcmF0aW9UeXBlXS5qb2luKCcgJyk7CisgICAgICAgICAgICBsYWJlbENsYXNz
TmFtZSA9IFtsYWJlbENsYXNzTmFtZSwgcmF0aW9UeXBlXS5qb2luKCcgJyk7CisgICAgICAgICAg
ICBjaGlsZHJlbi5wdXNoKGVsZW1lbnQoJ2RpdicsIHtjbGFzczogYmFyQ2xhc3NOYW1lLCBzdHls
ZTogJ3dpZHRoOicgKyBNYXRoLm1pbihNYXRoLmFicyh0aGlzLl9yYXRpbyAqIDEwMCksIDUwKSAr
ICclJ30pKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fbGFiZWwpCisgICAgICAgICAg
ICBjaGlsZHJlbi5wdXNoKGVsZW1lbnQoJ2RpdicsIHtjbGFzczogbGFiZWxDbGFzc05hbWV9LCB0
aGlzLl9sYWJlbCkpOworCisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLl9yYXRpb0Jh
ckdyYXBoLCBjaGlsZHJlbik7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InJhdGlvLWJhci1ncmFwaCI+PGRpdiBj
bGFzcz0ic2VwZXJhdG9yIj48L2Rpdj48ZGl2IGNsYXNzPSJiYXIiPjwvZGl2PjxkaXYgY2xhc3M9
ImxhYmVsIj48L2Rpdj48L2Rpdj5gOworICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InJhdGlv
LWJhci1ncmFwaCI+PC9kaXY+YDsKICAgICB9CiAKICAgICBzdGF0aWMgY3NzVGVtcGxhdGUoKQpA
QCAtNTAsNyArNjcsMTkgQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENvbXBvbmVudEJh
c2UgewogICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAg
ICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAucmF0aW8tYmFy
LWdyYXBoIC5zZXBlcmF0b3IgeworICAgICAgICAgICAgLnJhdGlvLWJhci1ncmFwaCB3YXJuaW5n
LWljb24geworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAucmF0aW8tYmFyLWdyYXBoOm5vdCgud2FybmluZy1vbi1yaWdodCkg
d2FybmluZy1pY29uIHsKKyAgICAgICAgICAgICAgICBsZWZ0OiAwOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnJhdGlvLWJhci1ncmFwaC53YXJuaW5nLW9uLXJpZ2h0IHdhcm5pbmctaWNv
biB7CisgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOworICAgICAgICAgICAg
ICAgIHJpZ2h0OiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnJhdGlvLWJhci1ncmFw
aCAuc2VwYXJhdG9yIHsKICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAg
ICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICAgICAgIHdpZHRoOiAwcHg7CkBAIC02
NCwyMiArOTMsMjIgQEAgY2xhc3MgUmF0aW9CYXJHcmFwaCBleHRlbmRzIENvbXBvbmVudEJhc2Ug
ewogICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMXJlbSk7CiAgICAgICAgICAg
ICAgICAgYmFja2dyb3VuZDogI2NjYzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC5yYXRp
by1iYXItZ3JhcGgud29yc2UgLmJhciB7CisgICAgICAgICAgICAucmF0aW8tYmFyLWdyYXBoIC5i
YXIud29yc2UgewogICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7
CiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2MzMzsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIC5yYXRpby1iYXItZ3JhcGguYmV0dGVyIC5iYXIgeworICAgICAgICAgICAgLnJhdGlv
LWJhci1ncmFwaCAuYmFyLmJldHRlciB7CiAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzNj
MzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC5yYXRpby1iYXItZ3JhcGggLmxhYmVsIHsK
ICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgICAgICAgbGlu
ZS1oZWlnaHQ6IDIuNXJlbTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC5yYXRpby1iYXIt
Z3JhcGgud29yc2UgLmxhYmVsIHsKKyAgICAgICAgICAgIC5yYXRpby1iYXItZ3JhcGggLmxhYmVs
LndvcnNlIHsKICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICAg
ICAgIGxlZnQ6IGNhbGMoNTAlICsgMC4ycmVtKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IC5yYXRpby1iYXItZ3JhcGguYmV0dGVyIC5sYWJlbCB7CisgICAgICAgICAgICAucmF0aW8tYmFy
LWdyYXBoIC5sYWJlbC5iZXR0ZXIgewogICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0
OwogICAgICAgICAgICAgICAgIHJpZ2h0OiBjYWxjKDUwJSArIDAuMnJlbSk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvd2FybmluZy1pY29uLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9jb21wb25lbnRzL3dhcm5pbmctaWNvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGIzODg5ZDYyMTllYzNj
YjZkMmQ4YjY2MjE0MTA5M2Q1NTBjMjMzCi0tLSAvZGV2L251bGwKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3dhcm5pbmctaWNvbi5qcwpAQCAtMCww
ICsxLDMzIEBACisKK2NsYXNzIFdhcm5pbmdJY29uIGV4dGVuZHMgQnV0dG9uQmFzZSB7CisgICAg
Y29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoJ3dhcm5pbmctaWNvbicpOworICAg
IH0KKworICAgIHN0YXRpYyBjc3NUZW1wbGF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3Vw
ZXIuY3NzVGVtcGxhdGUoKSArIGAKKyAgICAgICAgICAgIC5idXR0b24geworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgICAgIHdpZHRoOiAwLjdyZW07CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAwLjdyZW07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
YnV0dG9uIHN2ZyB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgICAg
ICB9CisgICAgICAgIGA7CisgICAgfQorCisgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYDxhIGNsYXNzPSJidXR0b24iIGhyZWY9IiMiPjxzdmcgdmlld0Jv
eD0iMCAwIDEwMCAxMDAiPgorICAgICAgICAgICAgPGcgc3Ryb2tlPSIjOWY2MDAwIiBmaWxsPSIj
OWY2MDAwIiBzdHJva2Utd2lkdGg9IjciPgorICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50
cz0iMCwwLCAxMDAsMCwgMCwxMDAiIC8+CisgICAgICAgICAgICA8L2c+CisgICAgICAgIDwvc3Zn
PjwvYT5gOworICAgIH0KKworfQorCitDb21wb25lbnRCYXNlLmRlZmluZUVsZW1lbnQoJ3dhcm5p
bmctaWNvbicsIFdhcm5pbmdJY29uKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvaW5kZXguaHRtbAppbmRleCAzZGI2NTdiNWY2ZTFmZDQyZWFlMzc4ZjczMDQ1MDEyNTU5
ZTlkMjlhLi4zZDExMDY4YmE3OTBhOGUxM2I0M2NmMDc1OTY2NjI0ZDVkOTI0NWNkIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9pbmRleC5odG1sCkBAIC02Niw2ICs2
Niw3IEBAIFJ1biB0b29scy9idW5kbGUtdjMtc2NyaXB0cyB0byBzcGVlZCB1cCB0aGUgbG9hZCB0
aW1lIGZvciBwcm9kdWN0aW9uLmApOwogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9i
YXNlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvc3Bpbm5l
ci1pY29uLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvYnV0
dG9uLWJhc2UuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy93
YXJuaW5nLWljb24uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50
cy9jbG9zZS1idXR0b24uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9u
ZW50cy9jb21taXQtbG9nLXZpZXdlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3Jj
PSJjb21wb25lbnRzL2VkaXRhYmxlLXRleHQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tYWluLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tYWluLmpzCmluZGV4IGEyMWI3MzU3ZDRlMzEyNmVjYTcxOTI0
MzRhZTI2YmY3MTAxODEzODIuLmMwNzNiMzhlZjQwY2RiZjk0YzEyMDNiOGEyNGVhZTBhNzVlMjMy
MGEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbWFpbi5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21haW4uanMKQEAgLTIw
LDcgKzIwLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgdmFyIHJvdXRlciA9IG5ldyBQ
YWdlUm91dGVyKCk7CiAgICAgICAgIHZhciBjaGFydHNUb29sYmFyID0gbmV3IENoYXJ0c1Rvb2xi
YXI7CiAKLSAgICAgICAgdmFyIHN1bW1hcnlQYWdlID0gbmV3IFN1bW1hcnlQYWdlKG1hbmlmZXN0
LnN1bW1hcnkpOworICAgICAgICB2YXIgc3VtbWFyeVBhZ2UgPSBtYW5pZmVzdC5zdW1tYXJ5ID8g
bmV3IFN1bW1hcnlQYWdlKG1hbmlmZXN0LnN1bW1hcnkpIDogbnVsbDsKICAgICAgICAgdmFyIGNo
YXJ0c1BhZ2UgPSBuZXcgQ2hhcnRzUGFnZShjaGFydHNUb29sYmFyKTsKICAgICAgICAgdmFyIGFu
YWx5c2lzQ2F0ZWdvcnlQYWdlID0gbmV3IEFuYWx5c2lzQ2F0ZWdvcnlQYWdlKCk7CiAKQEAgLTMx
LDEzICszMSwxNCBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgICAgICBhbmFseXNpc1Rhc2tQYWdl
LnNldFBhcmVudFBhZ2UoYW5hbHlzaXNDYXRlZ29yeVBhZ2UpOwogCiAgICAgICAgIHZhciBoZWFk
aW5nID0gbmV3IEhlYWRpbmcobWFuaWZlc3Quc2l0ZVRpdGxlKTsKLSAgICAgICAgaGVhZGluZy5h
ZGRQYWdlR3JvdXAoW3N1bW1hcnlQYWdlLCBjaGFydHNQYWdlLCBhbmFseXNpc0NhdGVnb3J5UGFn
ZV0pOworICAgICAgICBoZWFkaW5nLmFkZFBhZ2VHcm91cChbc3VtbWFyeVBhZ2UsIGNoYXJ0c1Bh
Z2UsIGFuYWx5c2lzQ2F0ZWdvcnlQYWdlXS5maWx0ZXIoZnVuY3Rpb24gKHBhZ2UpIHsgcmV0dXJu
IHBhZ2U7IH0pKTsKIAogICAgICAgICBoZWFkaW5nLnNldFRpdGxlKG1hbmlmZXN0LnNpdGVUaXRs
ZSk7CiAgICAgICAgIGhlYWRpbmcuYWRkUGFnZUdyb3VwKGRhc2hib2FyZFBhZ2VzKTsKIAogICAg
ICAgICB2YXIgcm91dGVyID0gbmV3IFBhZ2VSb3V0ZXIoKTsKLSAgICAgICAgcm91dGVyLmFkZFBh
Z2Uoc3VtbWFyeVBhZ2UpOworICAgICAgICBpZihzdW1tYXJ5UGFnZSkKKyAgICAgICAgICAgIHJv
dXRlci5hZGRQYWdlKHN1bW1hcnlQYWdlKTsKICAgICAgICAgcm91dGVyLmFkZFBhZ2UoY2hhcnRz
UGFnZSk7CiAgICAgICAgIHJvdXRlci5hZGRQYWdlKGNyZWF0ZUFuYWx5c2lzVGFza1BhZ2UpOwog
ICAgICAgICByb3V0ZXIuYWRkUGFnZShhbmFseXNpc1Rhc2tQYWdlKTsKQEAgLTQ1LDcgKzQ2LDkg
QEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgZm9yICh2YXIgcGFnZSBvZiBkYXNoYm9hcmRQ
YWdlcykKICAgICAgICAgICAgIHJvdXRlci5hZGRQYWdlKHBhZ2UpOwogCi0gICAgICAgIGlmIChk
YXNoYm9hcmRQYWdlcykKKyAgICAgICAgaWYgKHN1bW1hcnlQYWdlKQorICAgICAgICAgICAgcm91
dGVyLnNldERlZmF1bHRQYWdlKHN1bW1hcnlQYWdlKTsKKyAgICAgICAgZWxzZSBpZiAoZGFzaGJv
YXJkUGFnZXMpCiAgICAgICAgICAgICByb3V0ZXIuc2V0RGVmYXVsdFBhZ2UoZGFzaGJvYXJkUGFn
ZXNbMF0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByb3V0ZXIuc2V0RGVmYXVsdFBhZ2Uo
Y2hhcnRzUGFnZSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMKaW5kZXggOTdlOTIwNmM4NzZhODhk
YzQxZWZhOGI2ZmU4OTY0MzkyMDI4MzgyYS4uYThiZGY2NmZmMTYyYmI0ZjkyMzJiMTI3NDA3ZjJl
NmVkMzI1ZjcwZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcwpAQCAtMTAsMTcgKzEwLDE3IEBA
IGNsYXNzIE1lYXN1cmVtZW50U2V0IHsKICAgICAgICAgdGhpcy5fbWV0cmljSWQgPSBtZXRyaWNJ
ZDsKICAgICAgICAgdGhpcy5fbGFzdE1vZGlmaWVkID0gK2xhc3RNb2RpZmllZDsKIAotICAgICAg
ICB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgPSBudWxsOwotICAgICAgICB0aGlzLl9m
ZXRjaGVkUHJpbWFyeSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9lbmRUaW1lVG9DYWxsYmFjayA9
IHt9OwotCiAgICAgICAgIHRoaXMuX3NvcnRlZENsdXN0ZXJzID0gW107CiAgICAgICAgIHRoaXMu
X3ByaW1hcnlDbHVzdGVyRW5kVGltZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NsdXN0ZXJDb3Vu
dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NsdXN0ZXJTdGFydCA9IG51bGw7CiAgICAgICAgIHRo
aXMuX2NsdXN0ZXJTaXplID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsRmV0Y2hlcyA9IHt9Owor
ICAgICAgICB0aGlzLl9wcmltYXJ5Q2x1c3RlclByb21pc2UgPSBudWxsOwogICAgIH0KIAorICAg
IHBsYXRmb3JtSWQoKSB7IHJldHVybiB0aGlzLl9wbGF0Zm9ybUlkOyB9CisKICAgICBzdGF0aWMg
ZmluZFNldChwbGF0Zm9ybUlkLCBtZXRyaWNJZCwgbGFzdE1vZGlmaWVkKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9zZXQpCkBAIC0zNSw3ICszNSw2IEBAIGNsYXNzIE1lYXN1cmVtZW50U2V0
IHsKICAgICB7CiAgICAgICAgIHZhciBjbHVzdGVyU3RhcnQgPSB0aGlzLl9jbHVzdGVyU3RhcnQ7
CiAgICAgICAgIHZhciBjbHVzdGVyU2l6ZSA9IHRoaXMuX2NsdXN0ZXJTaXplOwotICAgICAgICBj
b25zb2xlLmFzc2VydChjbHVzdGVyU3RhcnQgJiYgY2x1c3RlclNpemUpOwogCiAgICAgICAgIGZ1
bmN0aW9uIGNvbXB1dGVDbHVzdGVyU3RhcnQodGltZSkgewogICAgICAgICAgICAgdmFyIGRpZmYg
PSB0aW1lIC0gY2x1c3RlclN0YXJ0OwpAQCAtNTgsODcgKzU3LDYxIEBAIGNsYXNzIE1lYXN1cmVt
ZW50U2V0IHsKIAogICAgIGZldGNoQmV0d2VlbihzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9mZXRjaGVkUHJpbWFyeSkgewotICAgICAgICAg
ICAgdmFyIHByaW1hcnlGZXRjaEhhZEZhaWxlZCA9IHRoaXMuX3dhaXRpbmdGb3JQcmltYXJ5Q2x1
c3RlciA9PT0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAocHJpbWFyeUZldGNoSGFkRmFpbGVkKSB7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBzaG91bGRTdGFydFByaW1hcnlGZXRjaCA9
ICF0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXI7Ci0gICAgICAgICAgICBpZiAoc2hvdWxk
U3RhcnRQcmltYXJ5RmV0Y2gpCi0gICAgICAgICAgICAgICAgdGhpcy5fd2FpdGluZ0ZvclByaW1h
cnlDbHVzdGVyID0gW107Ci0KLSAgICAgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JQcmltYXJ5Q2x1
c3Rlci5wdXNoKHtzdGFydFRpbWU6IHN0YXJ0VGltZSwgZW5kVGltZTogZW5kVGltZSwgY2FsbGJh
Y2s6IGNhbGxiYWNrfSk7Ci0KLSAgICAgICAgICAgIGlmIChzaG91bGRTdGFydFByaW1hcnlGZXRj
aCkKLSAgICAgICAgICAgICAgICB0aGlzLl9mZXRjaChudWxsLCB0cnVlKTsKLQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fZmV0Y2hTZWNvbmRhcnlDbHVz
dGVycyhzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxiYWNrKTsKKyAgICAgICAgaWYgKCF0aGlzLl9w
cmltYXJ5Q2x1c3RlclByb21pc2UpCisgICAgICAgICAgICB0aGlzLl9wcmltYXJ5Q2x1c3RlclBy
b21pc2UgPSB0aGlzLl9mZXRjaFByaW1hcnlDbHVzdGVyKCk7CisgICAgICAgIHZhciBzZWxmID0g
dGhpczsKKyAgICAgICAgdGhpcy5fcHJpbWFyeUNsdXN0ZXJQcm9taXNlLmNhdGNoKGNhbGxiYWNr
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ByaW1hcnlDbHVzdGVyUHJvbWlzZS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBwcm9taXNlTGlzdCA9IFtdOworICAgICAgICAgICAg
c2VsZi5maW5kQ2x1c3RlcnMoc3RhcnRUaW1lLCBlbmRUaW1lKS5tYXAoZnVuY3Rpb24gKGNsdXN0
ZXJFbmRUaW1lKSB7CisgICAgICAgICAgICAgICAgaWYoIXNlbGYuX2FsbEZldGNoZXNbY2x1c3Rl
ckVuZFRpbWVdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hbGxGZXRjaGVzW2NsdXN0ZXJF
bmRUaW1lXSA9IHNlbGYuX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcihjbHVzdGVyRW5kVGltZSk7Cisg
ICAgICAgICAgICAgICAgc2VsZi5fYWxsRmV0Y2hlc1tjbHVzdGVyRW5kVGltZV0udGhlbihjYWxs
YmFjaywgY2FsbGJhY2spOworICAgICAgICAgICAgICAgIHByb21pc2VMaXN0LnB1c2goc2VsZi5f
YWxsRmV0Y2hlc1tjbHVzdGVyRW5kVGltZV0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUxpc3QpOworICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBfZmV0Y2hTZWNvbmRhcnlDbHVzdGVycyhzdGFydFRpbWUsIGVuZFRpbWUsIGNhbGxiYWNr
KQorICAgIF9jb25zdHJ1Y3RVcmwodXNlQ2FjaGUsIGNsdXN0ZXJFbmRUaW1lKQogICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmV0Y2hlZFByaW1hcnkpOwotICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9jbHVzdGVyU3RhcnQgJiYgdGhpcy5fY2x1c3RlclNpemUpOwotICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zb3J0ZWRDbHVzdGVycy5sZW5ndGgpOwotCi0gICAg
ICAgIHZhciBjbHVzdGVycyA9IHRoaXMuZmluZENsdXN0ZXJzKHN0YXJ0VGltZSwgZW5kVGltZSk7
Ci0gICAgICAgIHZhciBzaG91bGRJbnZva2VDYWxsYWNrTm93ID0gZmFsc2U7Ci0gICAgICAgIGZv
ciAodmFyIGVuZFRpbWUgb2YgY2x1c3RlcnMpIHsKLSAgICAgICAgICAgIHZhciBpc1ByaW1hcnlD
bHVzdGVyID0gZW5kVGltZSA9PSB0aGlzLl9wcmltYXJ5Q2x1c3RlckVuZFRpbWU7Ci0gICAgICAg
ICAgICB2YXIgc2hvdWxkU3RhcnRGZXRjaCA9ICFpc1ByaW1hcnlDbHVzdGVyICYmICEoZW5kVGlt
ZSBpbiB0aGlzLl9lbmRUaW1lVG9DYWxsYmFjayk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkU3Rh
cnRGZXRjaCkKLSAgICAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lVG9DYWxsYmFja1tlbmRUaW1l
XSA9IFtdOwotCi0gICAgICAgICAgICB2YXIgY2FsbGJhY2tMaXN0ID0gdGhpcy5fZW5kVGltZVRv
Q2FsbGJhY2tbZW5kVGltZV07Ci0gICAgICAgICAgICBpZiAoaXNQcmltYXJ5Q2x1c3RlciB8fCBj
YWxsYmFja0xpc3QgPT09IHRydWUpCi0gICAgICAgICAgICAgICAgc2hvdWxkSW52b2tlQ2FsbGFj
a05vdyA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICghY2FsbGJhY2tMaXN0LmluY2x1ZGVz
KGNhbGxiYWNrKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0xpc3QucHVzaChjYWxsYmFjayk7
Ci0KLSAgICAgICAgICAgIGlmIChzaG91bGRTdGFydEZldGNoKQotICAgICAgICAgICAgICAgIHRo
aXMuX2ZldGNoKGVuZFRpbWUsIHRydWUpOworICAgICAgICBpZiAoIXVzZUNhY2hlKSB7CisgICAg
ICAgICAgICByZXR1cm4gYC4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/cGxhdGZvcm09JHt0aGlzLl9w
bGF0Zm9ybUlkfSZtZXRyaWM9JHt0aGlzLl9tZXRyaWNJZH1gOwogICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHNob3VsZEludm9rZUNhbGxhY2tOb3cpCi0gICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgIH0KLQotICAgIF9mZXRjaChjbHVzdGVyRW5kVGltZSwgdXNlQ2FjaGUpCi0gICAgewotICAg
ICAgICBjb25zb2xlLmFzc2VydCghY2x1c3RlckVuZFRpbWUgfHwgdXNlQ2FjaGUpOwotCiAgICAg
ICAgIHZhciB1cmw7Ci0gICAgICAgIGlmICh1c2VDYWNoZSkgewotICAgICAgICAgICAgdXJsID0g
YC4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LSR7dGhpcy5fcGxhdGZvcm1JZH0tJHt0aGlzLl9tZXRy
aWNJZH1gOwotICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmRUaW1lKQotICAgICAgICAgICAgICAg
IHVybCArPSAnLScgKyArY2x1c3RlckVuZFRpbWU7Ci0gICAgICAgICAgICB1cmwgKz0gJy5qc29u
JzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB1cmwgPSBgLi4vYXBpL21lYXN1cmVtZW50
LXNldD9wbGF0Zm9ybT0ke3RoaXMuX3BsYXRmb3JtSWR9Jm1ldHJpYz0ke3RoaXMuX21ldHJpY0lk
fWA7CisgICAgICAgIHVybCA9IGAuLi9kYXRhL21lYXN1cmVtZW50LXNldC0ke3RoaXMuX3BsYXRm
b3JtSWR9LSR7dGhpcy5fbWV0cmljSWR9YDsKKyAgICAgICAgaWYgKGNsdXN0ZXJFbmRUaW1lKQor
ICAgICAgICAgICAgdXJsICs9ICctJyArICtjbHVzdGVyRW5kVGltZTsKKyAgICAgICAgdXJsICs9
ICcuanNvbic7CisgICAgICAgIHJldHVybiB1cmw7CisgICAgfQogCisgICAgX2ZldGNoUHJpbWFy
eUNsdXN0ZXIoKSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJuIFJl
bW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxmLl9jb25zdHJ1Y3RVcmwodHJ1ZSwgbnVsbCkp
LnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIGlmICgrZGF0YVsnbGFzdE1vZGlm
aWVkJ10gPCBzZWxmLl9sYXN0TW9kaWZpZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlbW90
ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxmLl9jb25zdHJ1Y3RVcmwoZmFsc2UsIG51bGwpKTsK
KyAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJy
b3IpIHsKKyAgICAgICAgICAgIGlmKGVycm9yID09IDQwNCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHNlbGYuX2NvbnN0cnVjdFVybChmYWxzZSwg
bnVsbCkpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi5fZGlkRmV0Y2hK
U09OKHRydWUsIGRhdGEpOworICAgICAgICAgICAgc2VsZi5fYWxsRmV0Y2hlc1tzZWxmLl9wcmlt
YXJ5Q2x1c3RlckVuZFRpbWVdID0gc2VsZi5fcHJpbWFyeUNsdXN0ZXJQcm9taXNlOworICAgICAg
ICB9KTsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIFJlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1
cyh1cmwpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKLSAgICAgICAgICAgIGlmICghY2x1c3RlckVu
ZFRpbWUgJiYgdXNlQ2FjaGUgJiYgK2RhdGFbJ2xhc3RNb2RpZmllZCddIDwgc2VsZi5fbGFzdE1v
ZGlmaWVkKQotICAgICAgICAgICAgICAgIHNlbGYuX2ZldGNoKGNsdXN0ZXJFbmRUaW1lLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2VsZi5fZGlkRmV0Y2hKU09O
KCFjbHVzdGVyRW5kVGltZSwgZGF0YSk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvciwgeGhy
KSB7Ci0gICAgICAgICAgICBpZiAoIWNsdXN0ZXJFbmRUaW1lICYmIGVycm9yID09IDQwNCAmJiB1
c2VDYWNoZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9mZXRjaChjbHVzdGVyRW5kVGltZSwgZmFs
c2UpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNlbGYuX2ZhaWxlZFRvRmV0
Y2hKU09OKGNsdXN0ZXJFbmRUaW1lLCBlcnJvcik7CisgICAgX2ZldGNoU2Vjb25kYXJ5Q2x1c3Rl
cihlbmRUaW1lKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJuIFJl
bW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyhzZWxmLl9jb25zdHJ1Y3RVcmwodHJ1ZSwgZW5kVGlt
ZSkpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYuX2RpZEZldGNoSlNP
TihmYWxzZSwgZGF0YSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIF9kaWRGZXRjaEpTT04o
aXNQcmltYXJ5Q2x1c3RlciwgcmVzcG9uc2UsIGNsdXN0ZXJFbmRUaW1lKQogICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoaXNQcmltYXJ5Q2x1c3RlciB8fCB0aGlzLl9mZXRjaGVkUHJpbWFy
eSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzUHJpbWFyeUNsdXN0ZXIpOwogCiAgICAgICAg
IGlmIChpc1ByaW1hcnlDbHVzdGVyKSB7CiAgICAgICAgICAgICB0aGlzLl9wcmltYXJ5Q2x1c3Rl
ckVuZFRpbWUgPSByZXNwb25zZVsnZW5kVGltZSddOwpAQCAtMTQ5LDQwICsxMjIsNiBAQCBjbGFz
cyBNZWFzdXJlbWVudFNldCB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcmlt
YXJ5Q2x1c3RlckVuZFRpbWUpOwogCiAgICAgICAgIHRoaXMuX2FkZEZldGNoZWRDbHVzdGVyKG5l
dyBNZWFzdXJlbWVudENsdXN0ZXIocmVzcG9uc2UpKTsKLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIpOwotICAgICAgICBpZiAoIWlzUHJpbWFy
eUNsdXN0ZXIpIHsKLSAgICAgICAgICAgIHRoaXMuX2ludm9rZUNhbGxiYWNrcyhyZXNwb25zZS5l
bmRUaW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgaW5zdGFuY2VvZiBBcnJheSk7
Ci0KLSAgICAgICAgdGhpcy5fZmV0Y2hlZFByaW1hcnkgPSB0cnVlOwotICAgICAgICBmb3IgKHZh
ciBlbnRyeSBvZiB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIpCi0gICAgICAgICAgICB0
aGlzLl9mZXRjaFNlY29uZGFyeUNsdXN0ZXJzKGVudHJ5LnN0YXJ0VGltZSwgZW50cnkuZW5kVGlt
ZSwgZW50cnkuY2FsbGJhY2spOwotICAgICAgICB0aGlzLl93YWl0aW5nRm9yUHJpbWFyeUNsdXN0
ZXIgPSB0cnVlOwotICAgIH0KLQotICAgIF9mYWlsZWRUb0ZldGNoSlNPTihjbHVzdGVyRW5kVGlt
ZSwgZXJyb3IpCi0gICAgewotICAgICAgICBpZiAoY2x1c3RlckVuZFRpbWUpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2ludm9rZUNhbGxiYWNrcyhjbHVzdGVyRW5kVGltZSwgZXJyb3IgfHwgdHJ1ZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fZmV0Y2hlZFByaW1hcnkpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl93
YWl0aW5nRm9yUHJpbWFyeUNsdXN0ZXIgaW5zdGFuY2VvZiBBcnJheSk7Ci0gICAgICAgIGZvciAo
dmFyIGVudHJ5IG9mIHRoaXMuX3dhaXRpbmdGb3JQcmltYXJ5Q2x1c3RlcikKLSAgICAgICAgICAg
IGVudHJ5LmNhbGxiYWNrKGVycm9yIHx8IHRydWUpOwotICAgICAgICB0aGlzLl93YWl0aW5nRm9y
UHJpbWFyeUNsdXN0ZXIgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBfaW52b2tlQ2FsbGJhY2tzKGNs
dXN0ZXJFbmRUaW1lLCBlcnJvcikKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja0xpc3QgPSB0
aGlzLl9lbmRUaW1lVG9DYWxsYmFja1tjbHVzdGVyRW5kVGltZV07Ci0gICAgICAgIGZvciAodmFy
IGNhbGxiYWNrIG9mIGNhbGxiYWNrTGlzdCkKLSAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsK
LSAgICAgICAgdGhpcy5fZW5kVGltZVRvQ2FsbGJhY2tbY2x1c3RlckVuZFRpbWVdID0gdHJ1ZTsK
ICAgICB9CiAKICAgICBfYWRkRmV0Y2hlZENsdXN0ZXIoY2x1c3RlcikKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvc3VtbWFyeS1wYWdlLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9zdW1tYXJ5LXBhZ2UuanMK
aW5kZXggNWU2MGIwZjg5OTBjYjg1YjFmMzAyMWEzOWQxOWFkZWZkMjhmNWFkNi4uNTUxNjllOWVl
ZmZkYmQwNjEzNGFkNzcwZmMzMGJmZjVhNTI5YTg1YyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9zdW1tYXJ5LXBhZ2UuanMKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9zdW1tYXJ5LXBhZ2UuanMKQEAgLTEy
LDYgKzEyLDcgQEAgY2xhc3MgU3VtbWFyeVBhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewog
ICAgICAgICB0aGlzLl9zaG91bGRDb25zdHJ1Y3RUYWJsZSA9IHRydWU7CiAgICAgICAgIHRoaXMu
X3JlbmRlclF1ZXVlID0gW107CiAgICAgICAgIHRoaXMuX2NvbmZpZ0dyb3VwcyA9IFtdOworICAg
ICAgICB0aGlzLl9leGNsdWRlZENvbmZpZ3VyYXRpb25zID0gc3VtbWFyeVNldHRpbmdzLmV4Y2x1
ZGVkQ29uZmlndXJhdGlvbnM7CiAKICAgICAgICAgZm9yICh2YXIgbWV0cmljR3JvdXAgb2Ygc3Vt
bWFyeVNldHRpbmdzLm1ldHJpY0dyb3VwcykgewogICAgICAgICAgICAgdmFyIGdyb3VwID0ge25h
bWU6IG1ldHJpY0dyb3VwLm5hbWUsIHJvd3M6IFtdfTsKQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3Mg
U3VtbWFyeVBhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgIHsKICAgICAgICAgdmFy
IHBsYXRmb3JtcyA9IHBsYXRmb3JtSWRMaXN0Lm1hcChmdW5jdGlvbiAoaWQpIHsgcmV0dXJuIFBs
YXRmb3JtLmZpbmRCeUlkKGlkKTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuICEh
b2JqOyB9KTsKICAgICAgICAgdmFyIG1ldHJpY3MgPSBtZXRyaWNJZExpc3QubWFwKGZ1bmN0aW9u
IChpZCkgeyByZXR1cm4gTWV0cmljLmZpbmRCeUlkKGlkKTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChv
YmopIHsgcmV0dXJuICEhb2JqOyB9KTsKLSAgICAgICAgdmFyIGNvbmZpZ0dyb3VwID0gbmV3IFN1
bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwKHBsYXRmb3JtcywgbWV0cmljcyk7CisgICAgICAg
IHZhciBjb25maWdHcm91cCA9IG5ldyBTdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb25Hcm91cChwbGF0
Zm9ybXMsIG1ldHJpY3MsIHRoaXMuX2V4Y2x1ZGVkQ29uZmlndXJhdGlvbnMpOwogICAgICAgICB0
aGlzLl9jb25maWdHcm91cHMucHVzaChjb25maWdHcm91cCk7CiAgICAgICAgIHJldHVybiBjb25m
aWdHcm91cDsKICAgICB9CkBAIC03NSwxMyArNzYsOSBAQCBjbGFzcyBTdW1tYXJ5UGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICB0aGlzLl90YWJsZS5ncm91cHMubWFw
KGZ1bmN0aW9uIChyb3dHcm91cCkgewogICAgICAgICAgICAgICAgIHJldHVybiByb3dHcm91cC5y
b3dzLm1hcChmdW5jdGlvbiAocm93LCByb3dJbmRleCkgewogICAgICAgICAgICAgICAgICAgICB2
YXIgaGVhZGluZ3M7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyb3dHcm91cC5yb3dzLmxlbmd0
aCA9PSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ3MgPSBbZWxlbWVudCgndGgn
LCB7Y2xhc3M6ICd1bmlmaWVkSGVhZGVyJywgY29sc3BhbjogMn0sIHJvdy5uYW1lKV07Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ3Mg
PSBbZWxlbWVudCgndGgnLCB7Y2xhc3M6ICdtaW5vckhlYWRlcid9LCByb3cubmFtZSldOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dJbmRleCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWFkaW5ncy51bnNoaWZ0KGVsZW1lbnQoJ3RoJywge2NsYXNzOiAnbWFqb3JIZWFk
ZXInLCByb3dzcGFuOiByb3dHcm91cC5yb3dzLmxlbmd0aH0sIHJvd0dyb3VwLm5hbWUpKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBoZWFkaW5ncyA9IFtlbGVt
ZW50KCd0aCcsIHtjbGFzczogJ21pbm9ySGVhZGVyJ30sIHJvdy5uYW1lKV07CisgICAgICAgICAg
ICAgICAgICAgIGlmICghcm93SW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5n
cy51bnNoaWZ0KGVsZW1lbnQoJ3RoJywge2NsYXNzOiAnbWFqb3JIZWFkZXInLCByb3dzcGFuOiBy
b3dHcm91cC5yb3dzLmxlbmd0aH0sIHJvd0dyb3VwLm5hbWUpKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQoJ3RyJywgW2hlYWRpbmdzLCByb3cuY2VsbHMubWFwKHNlbGYuX2Nv
bnN0cnVjdFJhdGlvR3JhcGguYmluZChzZWxmKSldKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pLApAQCAtOTIsMTYgKzg5LDI4IEBAIGNsYXNzIFN1bW1hcnlQYWdlIGV4dGVu
ZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gQ29tcG9u
ZW50QmFzZS5jcmVhdGVFbGVtZW50OwogICAgICAgICB2YXIgbGluayA9IENvbXBvbmVudEJhc2Uu
Y3JlYXRlTGluazsKKyAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb25MaXN0ID0gY29uZmlndXJhdGlv
bkdyb3VwLmNvbmZpZ3VyYXRpb25MaXN0KCk7CiAKICAgICAgICAgdmFyIHJhdGlvR3JhcGggPSBu
ZXcgUmF0aW9CYXJHcmFwaCgpOwogCisgICAgICAgIHZhciBzdGF0ZSA9IENoYXJ0c1BhZ2UuY3Jl
YXRlU3RhdGVGb3JDb25maWd1cmF0aW9uTGlzdChjb25maWd1cmF0aW9uTGlzdCk7CisgICAgICAg
IHZhciBhbmNob3IgPSBsaW5rKHJhdGlvR3JhcGgsIHRoaXMucm91dGVyKCkudXJsKCdjaGFydHMn
LCBzdGF0ZSkpOwogICAgICAgICB0aGlzLl9yZW5kZXJRdWV1ZS5wdXNoKGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgIHJhdGlvR3JhcGgudXBkYXRlKGNvbmZpZ3VyYXRpb25Hcm91cC5yYXRpbygp
LCBjb25maWd1cmF0aW9uR3JvdXAubGFiZWwoKSk7CisgICAgICAgICAgICB2YXIgd2FybmluZ3Mg
PSBjb25maWd1cmF0aW9uR3JvdXAud2FybmluZ3MoKTsKKyAgICAgICAgICAgIHZhciB3YXJuaW5n
VGV4dCA9ICcnOworICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB3YXJuaW5ncykgeworICAg
ICAgICAgICAgICAgIHZhciBwbGF0Zm9ybVN0cmluZyA9IEFycmF5LmZyb20od2FybmluZ3NbdHlw
ZV0pLm1hcChmdW5jdGlvbiAocGxhdGZvcm0pIHsgcmV0dXJuIHBsYXRmb3JtLm5hbWUoKTsgfSku
am9pbignLCAnKTsKKyAgICAgICAgICAgICAgICB3YXJuaW5nVGV4dCArPSBgTWlzc2luZyAke3R5
cGV9IGZvciBmb2xsb3dpbmcgcGxhdGZvcm0ocyk6ICR7cGxhdGZvcm1TdHJpbmd9YDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYW5jaG9yLnRpdGxlID0gd2FybmluZ1RleHQgfHwgJ09w
ZW4gY2hhcnRzJzsKKyAgICAgICAgICAgIHJhdGlvR3JhcGgudXBkYXRlKGNvbmZpZ3VyYXRpb25H
cm91cC5yYXRpbygpLCBjb25maWd1cmF0aW9uR3JvdXAubGFiZWwoKSwgISF3YXJuaW5nVGV4dCk7
CiAgICAgICAgICAgICByYXRpb0dyYXBoLnJlbmRlcigpOwogICAgICAgICB9KTsKKyAgICAgICAg
aWYgKGNvbmZpZ3VyYXRpb25MaXN0Lmxlbmd0aCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQoJ3RkJywgcmF0aW9HcmFwaCk7CiAKLSAgICAgICAgdmFyIHN0YXRlID0gQ2hhcnRzUGFn
ZS5jcmVhdGVTdGF0ZUZvckNvbmZpZ3VyYXRpb25MaXN0KGNvbmZpZ3VyYXRpb25Hcm91cC5jb25m
aWd1cmF0aW9uTGlzdCgpKTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RkJywgbGluayhyYXRp
b0dyYXBoLCAnT3BlbiBjaGFydHMnLCB0aGlzLnJvdXRlcigpLnVybCgnY2hhcnRzJywgc3RhdGUp
KSk7CisgICAgICAgIHJldHVybiBlbGVtZW50KCd0ZCcsIGFuY2hvcik7CiAgICAgfQogCiAgICAg
c3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC0xNjcsMTQgKzE3NiwxNCBAQCBjbGFzcyBTdW1tYXJ5
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiB9CiAKIGNsYXNzIFN1bW1hcnlQYWdlQ29u
ZmlndXJhdGlvbkdyb3VwIHsKLSAgICBjb25zdHJ1Y3RvcihwbGF0Zm9ybXMsIG1ldHJpY3MpCisg
ICAgY29uc3RydWN0b3IocGxhdGZvcm1zLCBtZXRyaWNzLCBleGNsdWRlZENvbmZpZ3VyYXRpb25z
KQogICAgIHsKICAgICAgICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRzID0gW107CiAgICAgICAgIHRo
aXMuX2NvbmZpZ3VyYXRpb25MaXN0ID0gW107CiAgICAgICAgIHRoaXMuX3NldFRvUmF0aW8gPSBu
ZXcgTWFwOwogICAgICAgICB0aGlzLl9yYXRpbyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2xhYmVs
ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fY2hhbmdlVHlwZSA9IG51bGw7CisgICAgICAgIHRoaXMu
X3dhcm5pbmdzID0ge307CiAgICAgICAgIHRoaXMuX3NtYWxsZXJJc0JldHRlciA9IG1ldHJpY3Mu
bGVuZ3RoID8gbWV0cmljc1swXS5pc1NtYWxsZXJCZXR0ZXIoKSA6IG51bGw7CiAKICAgICAgICAg
Zm9yICh2YXIgcGxhdGZvcm0gb2YgcGxhdGZvcm1zKSB7CkBAIC0xODMsNiArMTkyLDkgQEAgY2xh
c3MgU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAgewogICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG1ldHJpYyBpbnN0YW5jZW9mIE1ldHJpYyk7CiAgICAgICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fc21hbGxlcklzQmV0dGVyID09IG1ldHJpYy5pc1NtYWxsZXJCZXR0
ZXIoKSk7CiAgICAgICAgICAgICAgICAgbWV0cmljLmlzU21hbGxlckJldHRlcigpOworCisgICAg
ICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkQ29uZmlndXJhdGlvbnMgJiYgcGxhdGZvcm0uaWQoKSBp
biBleGNsdWRlZENvbmZpZ3VyYXRpb25zICYmIGV4Y2x1ZGVkQ29uZmlndXJhdGlvbnNbcGxhdGZv
cm0uaWQoKV0uaW5jbHVkZXMoK21ldHJpYy5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtLmhhc01ldHJpYyhtZXRyaWMpKSB7
CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21lYXN1cmVtZW50U2V0cy5wdXNoKE1lYXN1cmVt
ZW50U2V0LmZpbmRTZXQocGxhdGZvcm0uaWQoKSwgbWV0cmljLmlkKCksIHBsYXRmb3JtLmxhc3RN
b2RpZmllZChtZXRyaWMpKSk7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRp
b25MaXN0LnB1c2goW3BsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpXSk7CkBAIC0xOTMsNiArMjA1
LDcgQEAgY2xhc3MgU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAgewogCiAgICAgcmF0aW8o
KSB7IHJldHVybiB0aGlzLl9yYXRpbzsgfQogICAgIGxhYmVsKCkgeyByZXR1cm4gdGhpcy5fbGFi
ZWw7IH0KKyAgICB3YXJuaW5ncygpIHsgcmV0dXJuIHRoaXMuX3dhcm5pbmdzOyB9CiAgICAgY2hh
bmdlVHlwZSgpIHsgcmV0dXJuIHRoaXMuX2NoYW5nZVR5cGU7IH0KICAgICBjb25maWd1cmF0aW9u
TGlzdCgpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb25MaXN0OyB9CiAKQEAgLTIxOSwzNyAr
MjMyLDQwIEBAIGNsYXNzIFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3VwIHsKICAgICAgICAg
fQogCiAgICAgICAgIHZhciBhdmVyYWdlUmF0aW8gPSBTdGF0aXN0aWNzLm1lYW4ocmF0aW9zKTsK
LSAgICAgICAgaWYgKGlzTmFOKGF2ZXJhZ2VSYXRpbykpIHsKLSAgICAgICAgICAgIHRoaXMuX3N1
bW1hcnkgPSAnLSc7Ci0gICAgICAgICAgICB0aGlzLl9jaGFuZ2VUeXBlID0gbnVsbDsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChNYXRoLmFicyhhdmVyYWdl
UmF0aW8gLSAxKSA8IDAuMDAxKSB7IC8vIExlc3MgdGhhbiAwLjElIGRpZmZlcmVuY2UuCi0gICAg
ICAgICAgICB0aGlzLl9zdW1tYXJ5ID0gJ05vIGNoYW5nZSc7Ci0gICAgICAgICAgICB0aGlzLl9j
aGFuZ2VUeXBlID0gbnVsbDsKKyAgICAgICAgaWYgKGlzTmFOKGF2ZXJhZ2VSYXRpbykpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICB2YXIgY3VycmVudElzU21hbGxl
clRoYW5CYXNlbGluZSA9IGF2ZXJhZ2VSYXRpbyA8IDE7CiAgICAgICAgIHZhciBjaGFuZ2VUeXBl
ID0gdGhpcy5fc21hbGxlcklzQmV0dGVyID09IGN1cnJlbnRJc1NtYWxsZXJUaGFuQmFzZWxpbmUg
PyAnYmV0dGVyJyA6ICd3b3JzZSc7Ci0gICAgICAgIGlmIChjdXJyZW50SXNTbWFsbGVyVGhhbkJh
c2VsaW5lKQotICAgICAgICAgICAgYXZlcmFnZVJhdGlvID0gMSAvIGF2ZXJhZ2VSYXRpbzsKKyAg
ICAgICAgYXZlcmFnZVJhdGlvID0gTWF0aC5hYnMoYXZlcmFnZVJhdGlvIC0gMSk7CiAKLSAgICAg
ICAgdGhpcy5fcmF0aW8gPSAoYXZlcmFnZVJhdGlvIC0gMSkgKiAoY2hhbmdlVHlwZSA9PSAnYmV0
dGVyJyA/IDEgOiAtMSk7Ci0gICAgICAgIHRoaXMuX2xhYmVsID0gKChhdmVyYWdlUmF0aW8gLSAx
KSAqIDEwMCkudG9GaXhlZCgxKSArICclJzsKKyAgICAgICAgdGhpcy5fcmF0aW8gPSBhdmVyYWdl
UmF0aW8gKiAoY2hhbmdlVHlwZSA9PSAnYmV0dGVyJyA/IDEgOiAtMSk7CisgICAgICAgIHRoaXMu
X2xhYmVsID0gKGF2ZXJhZ2VSYXRpbyAqIDEwMCkudG9GaXhlZCgxKSArICclJzsKICAgICAgICAg
dGhpcy5fY2hhbmdlVHlwZSA9IGNoYW5nZVR5cGU7CiAgICAgfQogCiAgICAgX2ZldGNoQW5kQ29t
cHV0ZVJhdGlvKHNldCwgdGltZVJhbmdlKQogICAgIHsKICAgICAgICAgdmFyIHNldFRvUmF0aW8g
PSB0aGlzLl9zZXRUb1JhdGlvOwotICAgICAgICByZXR1cm4gU3VtbWFyeVBhZ2VDb25maWd1cmF0
aW9uR3JvdXAuX2ZldGNoRGF0YShzZXQsIHRpbWVSYW5nZSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJuIHNldC5mZXRjaEJldHdlZW4o
dGltZVJhbmdlWzBdLCB0aW1lUmFuZ2VbMV0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgdmFyIGJhc2VsaW5lVGltZVNlcmllcyA9IHNldC5mZXRjaGVkVGltZVNlcmllcygnYmFzZWxp
bmUnLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lU2VyaWVzID0g
c2V0LmZldGNoZWRUaW1lU2VyaWVzKCdjdXJyZW50JywgZmFsc2UsIGZhbHNlKTsKIAogICAgICAg
ICAgICAgdmFyIGJhc2VsaW5lTWVkaWFuID0gU3VtbWFyeVBhZ2VDb25maWd1cmF0aW9uR3JvdXAu
X21lZGlhbkZvclRpbWVSYW5nZShiYXNlbGluZVRpbWVTZXJpZXMsIHRpbWVSYW5nZSk7CiAgICAg
ICAgICAgICB2YXIgY3VycmVudE1lZGlhbiA9IFN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbkdyb3Vw
Ll9tZWRpYW5Gb3JUaW1lUmFuZ2UoY3VycmVudFRpbWVTZXJpZXMsIHRpbWVSYW5nZSk7CisgICAg
ICAgICAgICB2YXIgcGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlJZChzZXQucGxhdGZvcm1JZCgp
KTsKKyAgICAgICAgICAgIGlmICghYmFzZWxpbmVNZWRpYW4pIHsKKyAgICAgICAgICAgICAgICBp
ZighKCdiYXNlbGluZScgaW4gc2VsZi5fd2FybmluZ3MpKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93YXJuaW5nc1snYmFzZWxpbmUnXSA9IG5ldyBTZXQ7CisgICAgICAgICAgICAgICAgc2Vs
Zi5fd2FybmluZ3NbJ2Jhc2VsaW5lJ10uYWRkKHBsYXRmb3JtKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghY3VycmVudE1lZGlhbikgeworICAgICAgICAgICAgICAgIGlmKCEoJ2N1
cnJlbnQnIGluIHNlbGYuX3dhcm5pbmdzKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2Fy
bmluZ3NbJ2N1cnJlbnQnXSA9IG5ldyBTZXQ7CisgICAgICAgICAgICAgICAgc2VsZi5fd2Fybmlu
Z3NbJ2N1cnJlbnQnXS5hZGQocGxhdGZvcm0pOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBzZXRUb1JhdGlvLnNldChzZXQsIGN1cnJlbnRNZWRpYW4gLyBiYXNlbGluZU1lZGlhbik7CiAg
ICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHNldFRvUmF0aW8uc2V0
KHNldCwgTmFOKTsKQEAgLTI3MCwyMSArMjg2LDQgQEAgY2xhc3MgU3VtbWFyeVBhZ2VDb25maWd1
cmF0aW9uR3JvdXAgewogICAgICAgICB2YXIgcG9pbnRzID0gdGltZVNlcmllcy5kYXRhQmV0d2Vl
blBvaW50cyhzdGFydFBvaW50LCBlbmRQb2ludCkubWFwKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1
cm4gcG9pbnQudmFsdWU7IH0pOwogICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5tZWRpYW4ocG9p
bnRzKTsKICAgICB9Ci0KLSAgICBzdGF0aWMgX2ZldGNoRGF0YShzZXQsIHRpbWVSYW5nZSkKLSAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBNYWtlIGZldGNoQmV0d2VlbiByZXR1cm4gYSBwcm9taXNl
LgotICAgICAgICB2YXIgZG9uZSA9IGZhbHNlOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
ZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgc2V0LmZldGNoQmV0d2Vl
bih0aW1lUmFuZ2VbMF0sIHRpbWVSYW5nZVsxXSwgZnVuY3Rpb24gKGVycm9yKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChzZXQuaGFzRmV0Y2hlZFJhbmdlKHRpbWVSYW5nZVswXSwg
dGltZVJhbmdlWzFdKSkKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1
cmVtZW50LXNldC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L21lYXN1cmVtZW50LXNldC10ZXN0cy5qcwppbmRleCAwNTc3NmFkZDBlYzMzMjY2YTY4OTUxYWQ2
ZDE4ZWJmYWRiY2I1MGM2Li5mZmMxNmFjZDM1ZjljMGUwNDFjZjc2YjA4MWM2YjI1MzUzZmI1YjNl
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJl
bWVudC1zZXQtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVz
dHMvbWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpzCkBAIC00NSw3ICs0NSw3IEBAIGRlc2NyaWJlKCdN
ZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgaXQoJ3Nob3VsZCBpbnZva2Ug
dGhlIGNhbGxiYWNrIHdoZW4gdGhlIHVwLXRvLWRhdGUgY2FjaGVkIHByaW1hcnkgY2x1c3RlciBp
cyBmZXRjaGVkIGFuZCBpdCBtYXRjaGVzIHRoZSByZXF1ZXN0ZWQgcmFuZ2UnLCBmdW5jdGlvbiAo
ZG9uZSkgewogICAgICAgICAgICAgdmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwg
MSwgMzAwMCk7CiAgICAgICAgICAgICB2YXIgY2FsbENvdW50ID0gMDsKLSAgICAgICAgICAgIHNl
dC5mZXRjaEJldHdlZW4oMjAwMCwgMzAwMCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFy
IHByb21pc2UgPSBzZXQuZmV0Y2hCZXR3ZWVuKDIwMDAsIDMwMDAsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICBjYWxsQ291bnQrKzsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CkBAIC02Miw3ICs2Miw3IEBAIGRlc2Ny
aWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAnY2x1
c3RlckNvdW50JzogMiwKICAgICAgICAgICAgICAgICAnc3RhdHVzJzogJ09LJ30pOwogCi0gICAg
ICAgICAgICByZXF1ZXN0c1swXS5wcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY2FsbENvdW50LCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBkb25lKCk7CkBAIC03MSwxMSArNzEsMTkgQEAg
ZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgaW52b2tlIHRoZSBjYWxsYmFjayBh
bmQgZmV0Y2ggYSBzZWNvbmRhcnkgY2x1c3RlcicKLSAgICAgICAgICAgICsgJ3doZW4gdGhlIGNh
Y2hlZCBwcmltYXJ5IGNsdXN0ZXIgaXMgdXAtdG8tZGF0ZSBhbmQgd2l0aGluIGluIHRoZSByZXF1
ZXN0ZWQgcmFuZ2UnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBmdW5jdGlvbiB3YWl0Rm9y
TWVhc3VyZW1lbnRTZXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgYW5kIGZldGNo
IGEgc2Vjb25kYXJ5IGNsdXN0ZXIgd2hlbiB0aGUgY2FjaGVkIHByaW1hcnkgY2x1c3RlciBpcyB1
cC10by1kYXRlIGFuZCB3aXRoaW4gaW4gdGhlIHJlcXVlc3RlZCByYW5nZScsIGZ1bmN0aW9uIChk
b25lKSB7CiAgICAgICAgICAgICB2YXIgc2V0ID0gTWVhc3VyZW1lbnRTZXQuZmluZFNldCgxLCAx
LCAzMDAwKTsKICAgICAgICAgICAgIHZhciBjYWxsQ291bnQgPSAwOwotICAgICAgICAgICAgc2V0
LmZldGNoQmV0d2VlbigxMDAwLCAzMDAwLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIg
cHJvbWlzZSA9IHNldC5mZXRjaEJldHdlZW4oMTAwMCwgMzAwMCwgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGNhbGxDb3VudCsrOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKQEAgLTkyLDcgKzEwMCw3IEBAIGRlc2Ny
aWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAnY2x1
c3RlckNvdW50JzogMiwKICAgICAgICAgICAgICAgICAnc3RhdHVzJzogJ09LJ30pOwogCi0gICAg
ICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHdhaXRGb3JNZWFzdXJlbWVudFNldCgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0c1sxXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMjAwMC5qc29uJyk7
CkBAIC0xMjEsMTMgKzEyOSwxNSBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0ZXJDb3VudCc6IDMsCiAgICAgICAgICAgICAg
ICAgJ3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhl
bihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgY2FsbENvdW50ID0gMDsKKyAgICAgICAg
ICAgIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0x
LTEtMzAwMC5qc29uJyk7CiAKLSAgICAgICAgICAgICAgICB2YXIgY2FsbENvdW50ID0gMDsKICAg
ICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDAsIDcwMDAsIGZ1bmN0aW9uICgpIHsgY2Fs
bENvdW50Kys7IH0pOwogCisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVu
dFNldCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzJdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0yMDAwLmpzb24nKTsK
QEAgLTE1OCw3ICsxNjgsNyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0ZXJDb3VudCc6IDMsCiAgICAgICAgICAgICAgICAg
J3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVuKGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAzKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnLi4v
ZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTMwMDAuanNvbicpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1syXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEt
NDAwMC5qc29uJyk7CkBAIC0xODcsMjMgKzE5NywyMiBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRT
ZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgJ2NsdXN0ZXJDb3VudCc6IDMsCiAg
ICAgICAgICAgICAgICAgJ3N0YXR1cyc6ICdPSyd9KTsKIAotICAgICAgICAgICAgUHJvbWlzZS5y
ZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgY2FsbENvdW50ID0g
MDsKKyAgICAgICAgICAgIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpLnRoZW4oZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcuLi9kYXRhL21lYXN1
cmVtZW50LXNldC0xLTEtNDAwMC5qc29uJyk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgY2FsbENv
dW50ID0gMDsKICAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDEyMDcsIDEyOTMsIGZ1
bmN0aW9uICgpIHsgY2FsbENvdW50Kys7IH0pOwotCisgICAgICAgICAgICAgICAgcmV0dXJuIHdh
aXRGb3JNZWFzdXJlbWVudFNldCgpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMCk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEt
MS0yMDAwLmpzb24nKTsKLQogICAgICAgICAgICAgICAgIHNldC5mZXRjaEJldHdlZW4oMTk2NCwg
MzQwMSwgZnVuY3Rpb24gKCkgeyBjYWxsQ291bnQrKzsgfSk7Ci0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gd2FpdEZvck1lYXN1cmVtZW50U2V0KCk7CisgICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAwKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVu
dC1zZXQtMS0xLTMwMDAuanNvbicpOwotCiAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAg
ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgZG9uZShl
cnJvcik7CkBAIC0yMjEsNyArMjMwLDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVu
Y3Rpb24gKCkgewogCiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZWplY3QoNTAwKTsKIAotICAg
ICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBkb25lKCk7CkBAIC0y
NzEsNyArMjgwLDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewog
CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZWplY3QoNDA0KTsKIAotICAgICAgICAgICAgUHJv
bWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB3YWl0Rm9yTWVh
c3VyZW1lbnRTZXQoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY2FsbENvdW50LCAwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0u
dXJsLCAnLi4vYXBpL21lYXN1cmVtZW50LXNldD9wbGF0Zm9ybT0xJm1ldHJpYz0xJyk7CkBAIC0z
MDYsNyArMzE1LDcgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICdjbHVzdGVyQ291bnQnOiAyLAogICAgICAgICAgICAgICAgICdzdGF0
dXMnOiAnT0snfSk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgd2FpdEZvck1lYXN1cmVtZW50U2V0KCkudGhlbihmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMSk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFsdGVybmF0aXZlQ2FsbENvdW50LCAxKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKQEAgLTMzNywxNiAr
MzQ2LDIwIEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIHZhciBjYWxsQ291bnRGb3I0MDAwVG81MDAwID0gMDsKICAgICAgICAgICAgIHZhciBj
YWxsQ291bnRGb3IyMDAwID0gMDsKICAgICAgICAgICAgIHZhciBjYWxsQ291bnRGb3IyMDAwVG80
MDAwID0gMDsKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgd2FpdEZvck1lYXN1cmVtZW50U2V0KCkudGhlbihmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDAsIDApOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50
LXNldC0xLTEtNDAwMC5qc29uJyk7CiAKICAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVu
KDM3MDgsIDQ4MDAsIGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Rm9yNDAwMFRvNTAwMCsrOyB9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvck1lYXN1cmVtZW50U2V0KCk7CisgICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y2FsbENvdW50Rm9yNDAwMFRvNTAwMCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMik7CiAKICAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVu
KDEyMDcsIDEyOTMsIGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Rm9yMjAwMCsrOyB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvck1lYXN1cmVtZW50U2V0KCk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENv
dW50Rm9yMjAwMCwgMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLnVybCwg
Jy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0yMDAwLmpzb24nKTsKQEAgLTM1OCw2ICszNzEs
NyBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgICAgICdlbmRUaW1lJzogMjAwMCwKICAgICAgICAgICAgICAgICAgICAgJ2xhc3RNb2Rp
ZmllZCc6IDUwMDAsCiAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnT0snfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JNZWFzdXJlbWVudFNldCgpOwogICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZv
cjQwMDAsIDApOwpAQCAtMzY1LDcgKzM3OSw4IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9y
MjAwMCwgMSk7CiAKICAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDE5NjQsIDM0MDEs
IGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Rm9yMjAwMFRvNDAwMCsrOyB9KTsKLQorICAgICAgICAg
ICAgICAgIHJldHVybiB3YWl0Rm9yTWVhc3VyZW1lbnRTZXQoKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRG
b3IyMDAwVG80MDAwLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCA0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJs
LCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTMwMDAuanNvbicpOwpAQCAtMzc3LDYgKzM5
Miw3IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICAgICAgJ2VuZFRpbWUnOiAzMDAwLAogICAgICAgICAgICAgICAgICAgICAnbGFzdE1v
ZGlmaWVkJzogNTAwMCwKICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6ICdPSyd9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvck1lYXN1cmVtZW50U2V0KCk7CiAgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2Fs
bENvdW50Rm9yNDAwMCwgMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3Vu
dEZvcjQwMDBUbzUwMDAsIDEpOwpAQCAtMzkxLDYgKzQwNyw3IEBAIGRlc2NyaWJlKCdNZWFzdXJl
bWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgJ2VuZFRpbWUnOiA0
MDAwLAogICAgICAgICAgICAgICAgICAgICAnbGFzdE1vZGlmaWVkJzogNTAwMCwKICAgICAgICAg
ICAgICAgICAgICAgJ3N0YXR1cyc6ICdPSyd9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2Fp
dEZvck1lYXN1cmVtZW50U2V0KCk7CiAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9yNDAwMCwgMSk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDBUbzUwMDAsIDIpOwpAQCAt
NDA2LDQgKzQyMyw0IEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsK
IAogICAgIH0pOwogCi19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>