<?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>202684</bug_id>
          
          <creation_ts>2019-10-07 22:12:17 -0700</creation_ts>
          <short_desc>Improve test freshness page interaction experience.</short_desc>
          <delta_ts>2019-10-14 11:22:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to>dewei_zhu</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577663</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-07 22:12:17 -0700</bug_when>
    <thetext>Improve test freshness page interaction experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577671</commentid>
    <comment_count>1</comment_count>
      <attachid>380405</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-07 23:24:18 -0700</bug_when>
    <thetext>Created attachment 380405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577898</commentid>
    <comment_count>2</comment_count>
      <attachid>380454</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-08 12:59:13 -0700</bug_when>
    <thetext>Created attachment 380454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577899</commentid>
    <comment_count>3</comment_count>
      <attachid>380455</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-08 13:08:19 -0700</bug_when>
    <thetext>Created attachment 380455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577953</commentid>
    <comment_count>4</comment_count>
      <attachid>380455</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-08 14:39:09 -0700</bug_when>
    <thetext>Comment on attachment 380455
Patch

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

&gt; Websites/perf.webkit.org/public/v3/components/freshness-indicator.js:24
&gt; +        container.onmouseenter = this.createEventHandler(() =&gt; this.dispatchAction(&apos;select&apos;, this));

Use mouseover?

&gt; Websites/perf.webkit.org/public/v3/components/freshness-indicator.js:29
&gt; +        container.onclick = this.createEventHandler(() =&gt; this.dispatchAction(&apos;click&apos;,  this));
&gt; +        container.onfocus = this.createEventHandler(() =&gt; {
&gt; +            if (!mouseInUse)
&gt; +                this.dispatchAction(&apos;focus&apos;,  this);

Things like click and focus shouldn&apos;t be an action. Maybe &quot;toggle&quot;?

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:67
&gt; +        window.addEventListener(&apos;keydown&apos;, (event) =&gt; {

All these event listeners should only come to effect when one of the indicators are in focus.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:69
&gt; +                this._builderByIndicator.keys().next().value.focus({preventScroll: true});

We should probably add a helper function or a local variable to say this is the first indicator.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:79
&gt; +            }
&gt; +            else if (event.code == &apos;ArrowDown&apos;) {

Nit: wrong style. } should come before else if.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:83
&gt; +            }
&gt; +            else if (event.code == &apos;ArrowLeft&apos;)

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:84
&gt; +                this._findAndUpdateClosestIndicator(column - 1, row, this._indicatorGrid, this.constructor.LEFT_ONLY);

Just use a string like &apos;left&apos; instead of a LEFT_ONLY.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:86
&gt; +                this._findAndUpdateClosestIndicator(column + 1, row, this._indicatorGrid, this.constructor.RIGHT_ONLY);

Ditto.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:90
&gt; +            else if (event.code == &apos;Enter&apos;) {
&gt; +                this._showTooltip = !this._showTooltip;
&gt; +                this.enqueueToRender();
&gt; +            } else if (event.code == &apos;Escape&apos;) {

I don&apos;t think we should override the behavior of enter key.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:91
&gt; +                event.preventDefault();

This should only be listened be on an indicator and maybe on the tooltip itself.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:118
&gt; +        let offSet = 1;

Should be &quot;offset&quot;.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:326
&gt; +            this._indicatorForTooltip = this._hoveringIndicator = originator;

Nit: Wrong style. Each assignment needs to happen on its own line.
https://webkit.org/code-style-guidelines/#linebreaking-multiple-statements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578044</commentid>
    <comment_count>5</comment_count>
      <attachid>380491</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-08 18:49:33 -0700</bug_when>
    <thetext>Created attachment 380491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578427</commentid>
    <comment_count>6</comment_count>
      <attachid>380491</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-09 15:44:09 -0700</bug_when>
    <thetext>Comment on attachment 380491
Patch

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

&gt; Websites/perf.webkit.org/public/v3/components/base.js:253
&gt; +    createEventHandler(callback, preventDefault=true, stopPropagation=true) { return ComponentBase.createEventHandler(callback, preventDefault, stopPropagation); }
&gt; +    static createEventHandler(callback, preventDefault=true, stopPropagation=true)

Instead of adding arguments with default values, let&apos;s do &quot;options&quot; dictionary
so that the call site would look like this:
createEventHandler(() =&gt; { ~}, {preventDefault: true})

&gt; Websites/perf.webkit.org/public/v3/components/base.js:257
&gt; +            if (preventDefault)
&gt; +                event.preventDefault();

Then, here, you can do something like !(&apos;preventDefault&apos; in options) || options[&apos;preventDefault&apos;]

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:68
&gt; +        this.content().addEventListener(&apos;click&apos;, () =&gt; this._clearIndicatorState(false));

Just check event.target to be not a dependent of tooltip.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:70
&gt; +        this.content(&apos;tooltip-table&apos;).onclick = this.createEventHandler(() =&gt; {}, false, true);

Instead of stopping the propagation here.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:77
&gt; +        }, false, false);

I think we do we want to prevent default action in this case.
We shouldn&apos;t let the browser do whatever it would normally do in this case.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:91
&gt; +            if (event.code == &apos;ArrowUp&apos;) {

Use switch?

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:98
&gt; +                this._findAndFocusOnClosestIndicatorCell(column - 1, row, this._indicatorCellGrid, &apos;left-only&apos;);

Why don&apos;t we prevent default for left &amp; right?
Those would coming into play if the window size is small enough to warrant horizontal scrolling.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:101
&gt; +        });

It seems like we should just set closestIndicatorCell in each switch statement
and then have a common patch to call focus() here.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:104
&gt; +    _findAndFocusOnClosestIndicatorCell(columnIndex, rowIndex, grid, direction)

Instead of having this extra helper function, which is adding more layers of indirections.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:127
&gt; +            if (leftIndex &gt;= 0 &amp;&amp; row[leftIndex] &amp;&amp; direction != &apos;right-only&apos;)

We usually use camelCase so &apos;rightOnly&apos;

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:130
&gt; +            if (rightIndex &lt; row.length &amp;&amp; row[rightIndex] &amp;&amp; direction != &apos;left-only&apos;)

and &apos;leftOnly&apos;

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:297
&gt; +        platforms.forEach((platform, rowIndex) =&gt;  {

Why not just do this at this point?
const tableBodyElement = platforms.map((~) =&gt; ~)

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:339
&gt; +        indicatorByMetric.set(metric, indicator);
&gt; +        coordinateForIndicator.set(indicator, [rowIndex, columnIndex]);
&gt; +        tabIndexForIndicator.set(indicator, tabIndex);
&gt; +        indicatorCellsInCurrentRow.push(cell);

All the arguments set into this map are coming from the caller.
Why don&apos;t we just set these values in _renderTable instead?
That&apos;ll make the code easier to follow.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:364
&gt; +        }, false, false);

These false, false boolean arguments are problematic.
Casual code reader can&apos;t tell what those false are specifying.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:370
&gt; +        }, true, true);

Since these are true by default, there is no point in specifying that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578428</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-09 15:44:27 -0700</bug_when>
    <thetext>I think it&apos;s getting better but we probably need one more iteration of review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578480</commentid>
    <comment_count>8</comment_count>
      <attachid>380596</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-09 17:52:57 -0700</bug_when>
    <thetext>Created attachment 380596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578993</commentid>
    <comment_count>9</comment_count>
      <attachid>380596</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-10 21:52:06 -0700</bug_when>
    <thetext>Comment on attachment 380596
Patch

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

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:96
&gt; +            event.preventDefault();

This should probably happen before the first indicator is focused above.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:98
&gt; +            switch(event.code)
&gt; +            {

Nit: switch (event.code) {
So a space between switch &amp; ( and no line break between ) and {.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:317
&gt; +                const cell = element(&apos;td&apos;, {class: &apos;status-cell&apos;, tabindex: currentTabIndex}, indicator);
&gt; +                this._configureContainerCellForIndicator(cell, indicator);

Hm... why don&apos;t we make _constructTableCell return cell &amp; indicator instead? as in:
const [indicator, cell] = this._constructTableCell(~);

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:324
&gt; +                currentTabIndex += 1;

Nit: ++currentTabIndex.

&gt; Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:367
&gt; +            if (event.code == &apos;Enter&apos; || event.code == &apos;Escape&apos;) {
&gt; +                event.preventDefault();
&gt; +                event.stopPropagation();
&gt; +                this._showTooltip = event.code == &apos;Enter&apos; ? !this._showTooltip : false;
&gt; +                this.enqueueToRender();

We really shouldn&apos;t be listening to enter key like this. Instead, wrap each cell&apos;s content into &apos;a&apos; element and listen for click.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579716</commentid>
    <comment_count>10</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-14 11:22:17 -0700</bug_when>
    <thetext>Landed in r251028.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380405</attachid>
            <date>2019-10-07 23:24:18 -0700</date>
            <delta_ts>2019-10-08 12:59:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202684-20191007232417.patch</filename>
            <type>text/plain</type>
            <size>22853</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODE1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzYjE5NjQxYWEwODljNjdlYTMyZjA2Yjk3NGVhYjc5ZDAzNWViNDkxLi4yM2ZmZGQzZGFi
YWI4YjUyYjQ1NjJjODk2M2Q2NjI2ODkxNTA1YzUyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOS0xMC0wNyAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHRlc3QgZnJlc2huZXNzIHBhZ2UgaW50ZXJh
Y3Rpb24gZXhwZXJpZW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0ZXN0IGZyZXNobmVzcyBwYWdlIHNob3cgdG9vbHRpcCBvbiBjbGlj
ayBpbnN0ZWFkIG9mIHBvcHVwaW5nIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIEFuZCBjbGlja2lu
ZyBhbnl3aGVyZSBpbiAncGFnZS13aXRoLWhlYWRpbmcnIHNlY3Rpb24gZXhjZXB0IHRoZSB0b29s
dGlwIGNhbiBkaXNtaXNzIHRvb2x0aXAuCisgICAgICAgIEFkZCBrZXlib2FyZCBzdXBwb3J0IHRv
IG1vdmUgZm9jdXMgYXJvdW5kIGluY2x1ZGluZyAnVGFiJyBrZXkgc3VwcG9ydC4KKyAgICAgICAg
VXNlICdFbnRlcicga2V5IHRvIHNob3cgb3IgZGlzbWlzcyB0b29sdGlwLgorCisgICAgICAgICog
cHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qczogQWRkZWQgc3VwcG9ydCBmb3IgY3VzdG9taXpp
bmcgd2hldGhlciBvciBub3QgcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uCisg
ICAgICAgIHdoaWxlIGNyZWF0aW5nIGV2ZW50IGhhbmRsZXIuCisgICAgICAgIChDb21wb25lbnRC
YXNlLnByb3RvdHlwZS5jcmVhdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoQ29tcG9uZW50QmFz
ZS5jcmVhdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoQ29tcG9uZW50QmFzZSk6CisgICAgICAg
ICogcHVibGljL3YzL2NvbXBvbmVudHMvZnJlc2huZXNzLWluZGljYXRvci5qczoKKyAgICAgICAg
KEZyZXNobmVzc0luZGljYXRvcik6IFJlbW92ZWQgJ3VybCcgcHJvcGVydHkuCisgICAgICAgIChG
cmVzaG5lc3NJbmRpY2F0b3IucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChGcmVzaG5lc3NJ
bmRpY2F0b3IucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOiBBZGRlZCBsaXN0ZW5l
ciB0byBmb2N1cyBhbmQgbW91c2UgZG93biBldmVudC4KKyAgICAgICAgKEZyZXNobmVzc0luZGlj
YXRvci5wcm90b3R5cGUuZm9jdXMpOgorICAgICAgICAoRnJlc2huZXNzSW5kaWNhdG9yLmh0bWxU
ZW1wbGF0ZSk6CisgICAgICAgIChGcmVzaG5lc3NJbmRpY2F0b3IuY3NzVGVtcGxhdGUpOiBBZGRl
ZCBzdHlsZSBzaGVldCBmb3IgZm9jdXMuCisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL3Rlc3Qt
ZnJlc2huZXNzLXBhZ2UuanM6CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZSk6IENoYW5nZWQg
dG8gc2hvdyB0b29sdGlwIG9uIGNsaWNrIGFuZCBhZGRlZCBrZXkgYm9hcmQgZXZlbnQuCisgICAg
ICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6
IEFkZGVkIGtleSBldmVudCBzdXBwb3J0LgorICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UucHJv
dG90eXBlLl9maW5kQW5kVXBkYXRlQ2xvc2VzdEluZGljYXRvcik6CisgICAgICAgIChUZXN0RnJl
c2huZXNzUGFnZS5wcm90b3R5cGUuX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZSk6
CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAg
KFRlc3RGcmVzaG5lc3NQYWdlLnByb3RvdHlwZS5fcmVuZGVyVG9vbHRpcCk6CisgICAgICAgIChU
ZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuX2NsZWFySW5kaWNhdG9yU3RhdGUpOgorICAgICAg
ICAoVGVzdEZyZXNobmVzc1BhZ2UuY3NzVGVtcGxhdGUpOiBDaGFuZ2UgY29sb3Igb2YgbGlua3Mg
aW4gdG9vbHRpcCB0byBhIG1vcmUgcmVhZGFibGUgY29sb3IuCisgICAgICAgIChUZXN0RnJlc2hu
ZXNzUGFnZS5wcm90b3R5cGUuX2ZldGNoVGVzdFJlc3VsdHMpOiBEZWxldGVkLgorICAgICAgICAo
VGVzdEZyZXNobmVzc1BhZ2UucHJvdG90eXBlLl9jb25zdHJ1Y3RUYWJsZUNlbGwpOiBEZWxldGVk
LgorCiAyMDE5LTEwLTA0ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbcGVyZiBkYXNoYm9hcmRdIFRlc3QgZnJlc3NuZXNzIHBvcG92ZXIgc29tZXRpbWVz
IHBvaW50IHRvIHdyb25nIHBsYWNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzCmluZGV4IGYzYTVlNjVlNTg3ZmEzZWM0NmRk
OTg3ODllNmE5NmVmN2UxMjc5Y2UuLjdlYTU4ZjQ2OTk4YTQ4NTgwYzY5OWFmZWZlN2VkNmFmMjNk
OTUwMzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9iYXNlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9iYXNlLmpzCkBAIC0yNDksMTIgKzI0OSwxNCBAQCBjbGFzcyBDb21wb25lbnRC
YXNlIGV4dGVuZHMgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGN1c3RvbUVsZW1lbnRz
LmRlZmluZShuYW1lLCBlbGVtZW50Q2xhc3MpOwogICAgIH0KIAotICAgIGNyZWF0ZUV2ZW50SGFu
ZGxlcihjYWxsYmFjaykgeyByZXR1cm4gQ29tcG9uZW50QmFzZS5jcmVhdGVFdmVudEhhbmRsZXIo
Y2FsbGJhY2spOyB9Ci0gICAgc3RhdGljIGNyZWF0ZUV2ZW50SGFuZGxlcihjYWxsYmFjaykKKyAg
ICBjcmVhdGVFdmVudEhhbmRsZXIoY2FsbGJhY2ssIHByZXZlbnREZWZhdWx0PXRydWUsIHN0b3BQ
cm9wYWdhdGlvbj10cnVlKSB7IHJldHVybiBDb21wb25lbnRCYXNlLmNyZWF0ZUV2ZW50SGFuZGxl
cihjYWxsYmFjaywgcHJldmVudERlZmF1bHQsIHN0b3BQcm9wYWdhdGlvbik7IH0KKyAgICBzdGF0
aWMgY3JlYXRlRXZlbnRIYW5kbGVyKGNhbGxiYWNrLCBwcmV2ZW50RGVmYXVsdD10cnVlLCBzdG9w
UHJvcGFnYXRpb249dHJ1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkKKyAg
ICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgaWYgKHN0
b3BQcm9wYWdhdGlvbikKKyAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsK
ICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgZXZlbnQpOwogICAgICAgICB9OwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9mcmVzaG5lc3MtaW5kaWNhdG9yLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKaW5kZXggNGZiYjkyMGNl
MDYyNDRhMzEyMWRhYTk2ODU2Mjg1ZDk1OTA5NWI3YS4uODIxOTUzNmUxODI4MzFjMDQxYmM4ZDE4
NTUyZGE1OWFjZDQxNjcxOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3Iu
anMKQEAgLTEsMjAgKzEsMTggQEAKIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENv
bXBvbmVudEJhc2UgewotICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVz
dEFnZVRvbGVyYW5jZSwgc3VtbWFyeSwgdXJsKQorICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9p
bnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgc3VtbWFyeSkKICAgICB7CiAgICAgICAgIHN1
cGVyKCdmcmVzaG5lc3MtaW5kaWNhdG9yJyk7CiAgICAgICAgIHRoaXMuX2xhc3REYXRhUG9pbnRE
dXJhdGlvbiA9IGxhc3REYXRhUG9pbnREdXJhdGlvbjsKICAgICAgICAgdGhpcy5fdGVzdEFnZVRv
bGVyYW5jZSA9IHRlc3RBZ2VUb2xlcmFuY2U7Ci0gICAgICAgIHRoaXMuX3VybCA9IHVybDsKICAg
ICAgICAgdGhpcy5faGlnaGxpZ2h0ZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9yZW5kZXJJ
bmRpY2F0b3JMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVy
SW5kaWNhdG9yLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIHVwZGF0ZShsYXN0RGF0YVBvaW50
RHVyYXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIHVybCwgaGlnaGxpZ2h0ZWQpCisgICAgdXBkYXRl
KGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgaGlnaGxpZ2h0ZWQpCiAg
ICAgewogICAgICAgICB0aGlzLl9sYXN0RGF0YVBvaW50RHVyYXRpb24gPSBsYXN0RGF0YVBvaW50
RHVyYXRpb247CiAgICAgICAgIHRoaXMuX3Rlc3RBZ2VUb2xlcmFuY2UgPSB0ZXN0QWdlVG9sZXJh
bmNlOwotICAgICAgICB0aGlzLl91cmwgPSB1cmw7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVk
ID0gaGlnaGxpZ2h0ZWQ7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQpA
QCAtMjIsOCArMjAsMjAgQEAgY2xhc3MgRnJlc2huZXNzSW5kaWNhdG9yIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCiAgICAgewogICAgICAgICBj
b25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRlbnQoJ2NvbnRhaW5lcicpOwotICAgICAgICBjb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ3NlbGVjdCcsIHRoaXMpKTsKLSAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1bnNlbGVjdCcpKTsK
KyAgICAgICAgbGV0IG1vdXNlSW5Vc2UgPSBmYWxzZTsKKyAgICAgICAgY29udGFpbmVyLm9ubW91
c2VlbnRlciA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rp
b24oJ3NlbGVjdCcsIHRoaXMpKTsKKyAgICAgICAgY29udGFpbmVyLm9ubW91c2Vkb3duID0gdGhp
cy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4gbW91c2VJblVzZSA9IHRydWUsIGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgIGNvbnRhaW5lci5vbmNsaWNrID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIo
KCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xpY2snLCAgdGhpcykpOworICAgICAgICBjb250
YWluZXIub25mb2N1cyA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHsKKyAgICAgICAg
ICAgIGlmICghbW91c2VJblVzZSkKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCdmb2N1cycsICB0aGlzKTsKKyAgICAgICAgICAgIG1vdXNlSW5Vc2UgPSBmYWxzZTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZm9jdXMob3B0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b250ZW50KCdjb250YWluZXInKS5mb2N1cyhvcHRpb24pOwogICAgIH0KIAogICAgIHJlbmRlcigp
CkBAIC00Niw3ICs1Niw3IEBAIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENvbXBv
bmVudEJhc2UgewogICAgICAgICBjb25zdCByYXRpbmcgPSAxIC8gKDEgKyBNYXRoLmV4cChNYXRo
LmxvZygxLjIpICogKGhvdXJzU2luY2VMYXN0RGF0YVBvaW50IC0gdGVzdEFnZVRvbGVyYW5jZUlu
SG91cnMpKSk7CiAgICAgICAgIGNvbnN0IGh1ZSA9IE1hdGgucm91bmQoMTIwICogcmF0aW5nKTsK
ICAgICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IE1hdGgucm91bmQoMzAgKyA1MCAqIHJhdGluZyk7
Ci0gICAgICAgIGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgaHJl
ZjogdXJsLCBjbGFzczogaGlnaGxpZ2h0ZWQgPyAnaGlnaGxpZ2h0JyA6ICcnfSk7CisgICAgICAg
IGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgY2xhc3M6IGAke2hp
Z2hsaWdodGVkID8gJ2hpZ2hsaWdodCcgOiAnJ31gfSk7CiAKICAgICAgICAgaW5kaWNhdG9yLnN0
eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtodWV9LCAxMDAlLCAke2JyaWdodG5lc3N9JSlg
OwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdjb250YWluZXInKSwg
aW5kaWNhdG9yKTsKQEAgLTU0LDcgKzY0LDcgQEAgY2xhc3MgRnJlc2huZXNzSW5kaWNhdG9yIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBgPGRpdiBpZD0nY29udGFpbmVyJz48L2Rpdj5gOworICAgICAgICBy
ZXR1cm4gYDxkaXYgaWQ9J2NvbnRhaW5lcicgdGFiSW5kZXg9JzAnPjwvZGl2PmA7CiAgICAgfQog
CiAgICAgc3RhdGljICBjc3NUZW1wbGF0ZSgpCkBAIC02NCw2ICs3NCwxNiBAQCBjbGFzcyBGcmVz
aG5lc3NJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBt
YXJnaW46IGF1dG87CiAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjhyZW07CiAgICAgICAgICAg
ICAgICAgd2lkdGg6IDEuOHJlbTsKKyAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGl2OmZvY3VzOjphZnRlciB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIgIjsKKyAg
ICAgICAgICAgICAgICB0b3A6IC0xLjFyZW07CisgICAgICAgICAgICAgICAgbGVmdDogMC42OHJl
bTsKKyAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAuMnJlbTsKKyAgICAgICAgICAgICAg
ICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJh
bnNwYXJlbnQgdHJhbnNwYXJlbnQgcmVkIHRyYW5zcGFyZW50OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYSB7CiAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNz
LXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3Rlc3Qt
ZnJlc2huZXNzLXBhZ2UuanMKaW5kZXggZjA5MmRkYjliN2M1NDA3ZWY4NzdiMzIzOGMyODNkN2Mw
YWM3ZWQzNy4uOTJjNDExZDQ3MjE5ZDEwZWY2NjkwMDRjODliNGYxMjljYmZmYzkzZSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy90ZXN0LWZyZXNo
bmVzcy1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFn
ZXMvdGVzdC1mcmVzaG5lc3MtcGFnZS5qcwpAQCAtOSwyNyArOSwxOCBAQCBjbGFzcyBUZXN0RnJl
c2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIHRoaXMuX2xhc3RE
YXRhUG9pbnRCeUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9pbmRpY2F0b3JC
eUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9yZW5kZXJUYWJsZUxhemlseSA9
IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUYWJsZS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBudWxsOwot
ICAgICAgICB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faG92
ZXJpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlw
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fYnVpbGRlckJ5SW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY29vcmRpbmF0ZUZv
ckluZGljYXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuX2luZGljYXRvckdyaWQgPSBudWxsOwor
ICAgICAgICB0aGlzLl9za2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlclRvb2x0aXAuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fbG9hZENv
bmZpZyhzdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb24pOwogICAgIH0KIAotICAgIGRpZENvbnN0cnVj
dFNoYWRvd1RyZWUoKQotICAgIHsKLSAgICAgICAgY29uc3QgdG9vbHRpcFRhYmxlID0gdGhpcy5j
b250ZW50KCd0b29sdGlwLXRhYmxlJyk7Ci0gICAgICAgIHRvb2x0aXBUYWJsZS5hZGRFdmVudExp
c3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gewotICAgICAgICAgICAgdGhpcy5faG92ZXJpbmdU
b29sdGlwID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICB0b29sdGlwVGFibGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2
ZScsICgpID0+IHsKLSAgICAgICAgICAgIHRoaXMuX2hvdmVyaW5nVG9vbHRpcCA9IGZhbHNlOwot
ICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
CiAgICAgbmFtZSgpIHsgcmV0dXJuICdUZXN0LUZyZXNobmVzcyc7IH0KIAogICAgIF9sb2FkQ29u
ZmlnKHN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbikKQEAgLTY4LDYgKzU5LDczIEBAIGNsYXNzIFRl
c3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgc3VwZXIu
b3BlbihzdGF0ZSk7CiAgICAgfQogCisgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCisgICAg
eworICAgICAgICBzdXBlci5kaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCk7CisgICAgICAgIHRoaXMu
Y29udGVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5fY2xlYXJJbmRp
Y2F0b3JTdGF0ZShmYWxzZSkpOworICAgICAgICB0aGlzLmNvbnRlbnQoJ3Rvb2x0aXAtdGFibGUn
KS5vbmNsaWNrID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4ge30sIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgIGlmICghdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCAmJiAhdGhpcy5f
aG92ZXJpbmdJbmRpY2F0b3IpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyQnlJbmRp
Y2F0b3Iua2V5cygpLm5leHQoKS52YWx1ZS5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3QgW3JvdywgY29sdW1uXSA9IHRoaXMuX2Nvb3JkaW5hdGVGb3JJbmRpY2F0b3IuZ2V0KHRoaXMu
X2luZGljYXRvckZvclRvb2x0aXAgfHwgdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IpOworCisgICAg
ICAgICAgICBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dVcCcpIHsKKyAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRVcGRh
dGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbiwgcm93IC0gMSwgdGhpcy5faW5kaWNhdG9yR3JpZCwg
dGhpcy5jb25zdHJ1Y3Rvci5CT1RIX0RJUkVDVElPTlMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dEb3duJykgeworICAgICAgICAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZmluZEFu
ZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uLCByb3cgKyAxLCB0aGlzLl9pbmRpY2F0b3JH
cmlkLCB0aGlzLmNvbnN0cnVjdG9yLkJPVEhfRElSRUNUSU9OUyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChldmVudC5jb2RlID09ICdBcnJvd0xlZnQnKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2ZpbmRBbmRVcGRhdGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbiAtIDEsIHJv
dywgdGhpcy5faW5kaWNhdG9yR3JpZCwgdGhpcy5jb25zdHJ1Y3Rvci5MRUZUX09OTFkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dSaWdodCcpCisgICAgICAgICAg
ICAgICAgdGhpcy5fZmluZEFuZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uICsgMSwgcm93
LCB0aGlzLl9pbmRpY2F0b3JHcmlkLCB0aGlzLmNvbnN0cnVjdG9yLlJJR0hUX09OTFkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnRW50ZXInKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSAhdGhpcy5fc2hvd1Rvb2x0aXA7CisgICAgICAgICAgICAg
ICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgX2ZpbmRBbmRVcGRhdGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbkluZGV4LCBy
b3dJbmRleCwgZ3JpZCwgZGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAgY29uc3QgY2xvc2VzdElu
ZGljYXRvciA9IHRoaXMuX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZShjb2x1bW5J
bmRleCwgcm93SW5kZXgsIGdyaWQsIGRpcmVjdGlvbik7CisgICAgICAgIGlmICghY2xvc2VzdElu
ZGljYXRvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VzdEluZGljYXRvci5m
b2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZShjb2x1bW5JbmRleCwgcm93SW5k
ZXgsIGdyaWQsIGRpcmVjdGlvbikKKyAgICB7CisgICAgICAgIHJvd0luZGV4ID0gTWF0aC5taW4o
TWF0aC5tYXgocm93SW5kZXgsIDApLCBncmlkLmxlbmd0aCAtIDEpOworICAgICAgICBjb25zdCBy
b3cgPSBncmlkW3Jvd0luZGV4XTsKKyAgICAgICAgaWYgKCFyb3cubGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihNYXRoLm1h
eChjb2x1bW5JbmRleCwgMCksIHJvdy5sZW5ndGggLSAxKTsKKyAgICAgICAgaWYgKHJvd1tzdGFy
dF0pCisgICAgICAgICAgICByZXR1cm4gcm93W3N0YXJ0XTsKKworICAgICAgICBsZXQgb2ZmU2V0
ID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNvbnN0IGxlZnRJbmRl
eCA9IHN0YXJ0IC0gb2ZmU2V0OworICAgICAgICAgICAgaWYgKGxlZnRJbmRleCA+PSAwICYmIHJv
d1tsZWZ0SW5kZXhdICYmIGRpcmVjdGlvbiAhPSB0aGlzLmNvbnN0cnVjdG9yLlJJR0hUX09OTFkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1tsZWZ0SW5kZXhdOworICAgICAgICAgICAgY29u
c3QgcmlnaHRJbmRleCA9IHN0YXJ0ICsgb2ZmU2V0OworICAgICAgICAgICAgaWYgKHJpZ2h0SW5k
ZXggPCByb3cubGVuZ3RoICYmIHJvd1tyaWdodEluZGV4XSAmJiBkaXJlY3Rpb24gIT0gdGhpcy5j
b25zdHJ1Y3Rvci5MRUZUX09OTFkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1tyaWdodElu
ZGV4XTsKKyAgICAgICAgICAgIGlmIChsZWZ0SW5kZXggPCAwICYmIHJpZ2h0SW5kZXggPj0gcm93
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG9mZlNldCArPSAx
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKwogICAgIF9mZXRjaFRl
c3RSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lYXN1cmVtZW50U2V0RmV0Y2hUaW1l
ID0gRGF0ZS5ub3coKTsKQEAgLTEyMywzNiArMTgxLDQ1IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKIAogICAgICAgICB0aGlzLl9yZW5kZXJUYWJs
ZUxhemlseS5ldmFsdWF0ZSh0aGlzLl9wbGF0Zm9ybXMsIHRoaXMuX21ldHJpY3MpOwogCi0gICAg
ICAgIGxldCBidWlsZFN1bW1hcnlGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9IG51
bGw7Ci0gICAgICAgIGxldCBidWlsZEZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0g
bnVsbDsKLSAgICAgICAgbGV0IGNvbW1pdFNldEZvckN1cnJlbnRIaWdobGlnaHRlZEluZGljYXRv
ciA9IG51bGw7Ci0gICAgICAgIGNvbnN0IGJ1aWxkZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZElu
ZGljYXRvciA9IHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID8gdGhpcy5fYnVp
bGRlckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvcikg
OiBudWxsOworICAgICAgICBsZXQgYnVpbGRTdW1tYXJ5Rm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBu
dWxsOworICAgICAgICBsZXQgYnVpbGRGb3JGb2N1c2luZ0luZGljYXRvciA9IG51bGw7CisgICAg
ICAgIGxldCBjb21taXRTZXRGb3JGb2N1c2luZ2RJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBs
ZXQgY2hhcnRVUkxGb3JGb2N1c2luZ0luZGljYXRvciA9IG51bGw7CisgICAgICAgIGxldCBwbGF0
Zm9ybUZvckZvY3VzaW5nSW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgbGV0IG1ldHJpY0ZvckZv
Y3VzaW5nSW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgY29uc3QgYnVpbGRlckZvckZvY3VzaW5n
SW5kaWNhdG9yID0gdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA/IHRoaXMuX2J1aWxkZXJCeUlu
ZGljYXRvci5nZXQodGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCkgOiBudWxsOworICAgICAgICBj
b25zdCBidWlsZGVyRm9ySG92ZXJpbmdJbmRpY2F0b3IgPSB0aGlzLl9ob3ZlcmluZ0luZGljYXRv
ciA/IHRoaXMuX2J1aWxkZXJCeUluZGljYXRvci5nZXQodGhpcy5faG92ZXJpbmdJbmRpY2F0b3Ip
IDogbnVsbDsKICAgICAgICAgZm9yIChjb25zdCBbcGxhdGZvcm0sIGxhc3REYXRhUG9pbnRCeU1l
dHJpY10gb2YgdGhpcy5fbGFzdERhdGFQb2ludEJ5Q29uZmlndXJhdGlvbi5lbnRyaWVzKCkpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgW21ldHJpYywgbGFzdERhdGFQb2ludF0gb2YgbGFzdERh
dGFQb2ludEJ5TWV0cmljLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVE
dXJhdGlvbiA9IHRoaXMuX21lYXN1cmVtZW50U2V0RmV0Y2hUaW1lIC0gbGFzdERhdGFQb2ludC50
aW1lOwogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEdXJhdGlvblN1bW1hcnlQcmVmaXggPSBs
YXN0RGF0YVBvaW50Lmhhc0N1cnJlbnREYXRhUG9pbnQgPyAnJyA6ICdNb3JlIHRoYW4gJzsKICAg
ICAgICAgICAgICAgICBjb25zdCB0aW1lRHVyYXRpb25TdW1tYXJ5ID0gQnVpbGRSZXF1ZXN0LmZv
cm1hdFRpbWVJbnRlcnZhbCh0aW1lRHVyYXRpb24pOwogICAgICAgICAgICAgICAgIGNvbnN0IHN1
bW1hcnkgPSBgJHt0aW1lRHVyYXRpb25TdW1tYXJ5UHJlZml4fSR7dGltZUR1cmF0aW9uU3VtbWFy
eX0gc2luY2UgbGF0ZXN0IGRhdGEgcG9pbnQuYDsKLSAgICAgICAgICAgICAgICBjb25zdCB1cmwg
PSB0aGlzLl9yb3V0ZXIudXJsKCdjaGFydHMnLCBDaGFydHNQYWdlLmNyZWF0ZVN0YXRlRm9yRGFz
aGJvYXJkSXRlbShwbGF0Zm9ybS5pZCgpLCBtZXRyaWMuaWQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUgLSB0aGlzLl90aW1lRHVyYXRpb24pKTsK
IAogICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IHRoaXMuX2luZGljYXRvckJ5Q29u
ZmlndXJhdGlvbi5nZXQocGxhdGZvcm0pLmdldChtZXRyaWMpOwotICAgICAgICAgICAgICAgIGlm
ICh0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciAmJiB0aGlzLl9jdXJyZW50bHlI
aWdobGlnaHRlZEluZGljYXRvciA9PT0gaW5kaWNhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJ1aWxkU3VtbWFyeUZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gc3VtbWFyeTsK
LSAgICAgICAgICAgICAgICAgICAgYnVpbGRGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRv
ciA9IGxhc3REYXRhUG9pbnQubGFzdEJ1aWxkOwotICAgICAgICAgICAgICAgICAgICBjb21taXRT
ZXRGb3JDdXJyZW50SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBsYXN0RGF0YVBvaW50LmNvbW1pdFNl
dE9mTGFzdFBvaW50OworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbmRpY2F0b3JGb3JUb29s
dGlwICYmIHRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgPT09IGluZGljYXRvcikgeworICAgICAg
ICAgICAgICAgICAgICBidWlsZFN1bW1hcnlGb3JGb2N1c2luZ0luZGljYXRvciA9IHN1bW1hcnk7
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBsYXN0RGF0
YVBvaW50Lmxhc3RCdWlsZDsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0U2V0Rm9yRm9jdXNp
bmdkSW5kaWNhdG9yID0gbGFzdERhdGFQb2ludC5jb21taXRTZXRPZkxhc3RQb2ludDsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhcnRVUkxGb3JGb2N1c2luZ0luZGljYXRvciA9ICB0aGlzLl9yb3V0
ZXIudXJsKCdjaGFydHMnLCBDaGFydHNQYWdlLmNyZWF0ZVN0YXRlRm9yRGFzaGJvYXJkSXRlbShw
bGF0Zm9ybS5pZCgpLCBtZXRyaWMuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
X21lYXN1cmVtZW50U2V0RmV0Y2hUaW1lIC0gdGhpcy5fdGltZUR1cmF0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBwbGF0Zm9ybTsKKyAg
ICAgICAgICAgICAgICAgICAgbWV0cmljRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBtZXRyaWM7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkZXJCeUluZGljYXRv
ci5zZXQoaW5kaWNhdG9yLCBsYXN0RGF0YVBvaW50LmJ1aWxkZXIpOwotICAgICAgICAgICAgICAg
IGluZGljYXRvci51cGRhdGUodGltZUR1cmF0aW9uLCB0aGlzLl90ZXN0QWdlVG9sZXJhbmNlLCB1
cmwsIGJ1aWxkZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciAmJiBidWlsZGVyRm9y
Q3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPT09IGxhc3REYXRhUG9pbnQuYnVpbGRlcik7
CisgICAgICAgICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBidWlsZGVyRm9yRm9jdXNpbmdJ
bmRpY2F0b3IgJiYgYnVpbGRlckZvckZvY3VzaW5nSW5kaWNhdG9yID09IGxhc3REYXRhUG9pbnQu
YnVpbGRlcgorICAgICAgICAgICAgICAgICAgICB8fCBidWlsZGVyRm9ySG92ZXJpbmdJbmRpY2F0
b3IgJiYgYnVpbGRlckZvckhvdmVyaW5nSW5kaWNhdG9yID09PSBsYXN0RGF0YVBvaW50LmJ1aWxk
ZXI7CisgICAgICAgICAgICAgICAgaW5kaWNhdG9yLnVwZGF0ZSh0aW1lRHVyYXRpb24sIHRoaXMu
X3Rlc3RBZ2VUb2xlcmFuY2UsIGhpZ2hsaWdodGVkKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5LmV2YWx1YXRlKHRoaXMuX2N1cnJl
bnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yLCB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAsIGJ1aWxkU3Vt
bWFyeUZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yLCBidWlsZEZvckN1cnJlbnRseUhp
Z2hsaWdodGVkSW5kaWNhdG9yLCBjb21taXRTZXRGb3JDdXJyZW50SGlnaGxpZ2h0ZWRJbmRpY2F0
b3IpOworICAgICAgICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5LmV2YWx1YXRlKHRoaXMuX2lu
ZGljYXRvckZvclRvb2x0aXAsIHRoaXMuX3Nob3dUb29sdGlwLCBidWlsZFN1bW1hcnlGb3JGb2N1
c2luZ0luZGljYXRvciwgYnVpbGRGb3JGb2N1c2luZ0luZGljYXRvciwKKyAgICAgICAgICAgIGNv
bW1pdFNldEZvckZvY3VzaW5nZEluZGljYXRvciwgY2hhcnRVUkxGb3JGb2N1c2luZ0luZGljYXRv
ciwgcGxhdGZvcm1Gb3JGb2N1c2luZ0luZGljYXRvciwgbWV0cmljRm9yRm9jdXNpbmdJbmRpY2F0
b3IpOwogICAgIH0KIAotICAgIF9yZW5kZXJUb29sdGlwKGluZGljYXRvciwgaG92ZXJpbmdUb29s
dGlwLCBidWlsZFN1bW1hcnksIGJ1aWxkLCBjb21taXRTZXQpCisgICAgX3JlbmRlclRvb2x0aXAo
aW5kaWNhdG9yLCBzaG93VG9vbHRpcCwgYnVpbGRTdW1tYXJ5LCBidWlsZCwgY29tbWl0U2V0LCBj
aGFydFVSTCwgcGxhdGZvcm0sIG1ldHJpYykKICAgICB7Ci0gICAgICAgIGlmICghaW5kaWNhdG9y
IHx8ICFidWlsZFN1bW1hcnkpIHsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgndG9vbHRpcC1h
bmNob3InKS5zdHlsZS5kaXNwbGF5ID0gaG92ZXJpbmdUb29sdGlwID8gbnVsbCA6ICdub25lJzsK
KyAgICAgICAgaWYgKCFpbmRpY2F0b3IgfHwgIWJ1aWxkU3VtbWFyeSB8fCAhc2hvd1Rvb2x0aXAp
IHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCgndG9vbHRpcC1hbmNob3InKS5zdHlsZS5kaXNw
bGF5ID0gIHNob3dUb29sdGlwID8gbnVsbCA6ICdub25lJzsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVF
bGVtZW50OwpAQCAtMTY2LDYgKzIzMywxNCBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAKICAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IFtlbGVt
ZW50KCd0cicsIGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9LCBidWlsZFN1bW1hcnkpKV07CiAK
KyAgICAgICAgaWYgKGNoYXJ0VVJMKSB7CisgICAgICAgICAgICBjb25zdCBsaW5rRGVzY3JpcHRp
b24gPSBgJHttZXRyaWMudGVzdCgpLm5hbWUoKX0gb24gJHtwbGF0Zm9ybS5uYW1lKCl9YDsKKyAg
ICAgICAgICAgIHRhYmxlQ29udGVudC5wdXNoKGVsZW1lbnQoJ3RyJywgWworICAgICAgICAgICAg
ICAgIGVsZW1lbnQoJ3RkJywgJ0NoYXJ0JyksCisgICAgICAgICAgICAgICAgZWxlbWVudCgndGQn
LCB7Y29sc3BhbjogMn0sIGxpbmsobGlua0Rlc2NyaXB0aW9uLCBsaW5rRGVzY3JpcHRpb24sIGNo
YXJ0VVJMLCB0cnVlKSkKKyAgICAgICAgICAgIF0pKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlm
IChjb21taXRTZXQpIHsKICAgICAgICAgICAgIGlmIChjb21taXRTZXQucmVwb3NpdG9yaWVzKCku
bGVuZ3RoKQogICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5wdXNoKGVsZW1lbnQoJ3RyJywg
ZWxlbWVudCgndGgnLCB7Y29sc3BhbjogMn0sICdMYXRlc3QgYnVpbGQgaW5mb3JtYXRpb24nKSkp
OwpAQCAtMjAzLDE0ICsyNzgsMjMgQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQ
YWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgdGFibGVIZWFkRWxlbWVudHMucHVzaChlbGVt
ZW50KCd0aCcsIHtjbGFzczogJ2RpYWdvbmFsLWhlYWQnfSwgZWxlbWVudCgnZGl2JywgbWV0cmlj
LnRlc3QoKS5mdWxsTmFtZSgpKSkpOwogCiAgICAgICAgIHRoaXMuX2luZGljYXRvckJ5Q29uZmln
dXJhdGlvbiA9IG5ldyBNYXA7Ci0gICAgICAgIGZvciAoY29uc3QgcGxhdGZvcm0gb2YgcGxhdGZv
cm1zKSB7CisgICAgICAgIHRoaXMuX2Nvb3JkaW5hdGVGb3JJbmRpY2F0b3IgPSBuZXcgTWFwOwor
ICAgICAgICB0aGlzLl9pbmRpY2F0b3JHcmlkID0gW107CisKKyAgICAgICAgcGxhdGZvcm1zLmZv
ckVhY2goKHBsYXRmb3JtLCByb3dJbmRleCkgPT4gIHsKICAgICAgICAgICAgIGNvbnN0IGluZGlj
YXRvckJ5TWV0cmljID0gbmV3IE1hcDsKICAgICAgICAgICAgIHRoaXMuX2luZGljYXRvckJ5Q29u
ZmlndXJhdGlvbi5zZXQocGxhdGZvcm0sIGluZGljYXRvckJ5TWV0cmljKTsKKworICAgICAgICAg
ICAgbGV0IGluZGljYXRvcnNJbkN1cnJlbnRSb3cgPSBbXTsKICAgICAgICAgICAgIHRhYmxlQm9k
eUVsZW1lbnQucHVzaChlbGVtZW50KCd0cicsCi0gICAgICAgICAgICAgICAgW2VsZW1lbnQoJ3Ro
Jywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFiZWwoKSksIC4uLm1ldHJpY3MubWFw
KChtZXRyaWMpID0+IHRoaXMuX2NvbnN0cnVjdFRhYmxlQ2VsbChwbGF0Zm9ybSwgbWV0cmljLCBp
bmRpY2F0b3JCeU1ldHJpYykpXSkpOwotICAgICAgICB9CisgICAgICAgICAgICAgICAgW2VsZW1l
bnQoJ3RoJywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFiZWwoKSksIC4uLm1ldHJp
Y3MubWFwKChtZXRyaWMsIGNvbHVtbkluZGV4KSA9PiB0aGlzLl9jb25zdHJ1Y3RUYWJsZUNlbGwo
cGxhdGZvcm0sIG1ldHJpYywgcm93SW5kZXgsIGNvbHVtbkluZGV4LCBpbmRpY2F0b3JCeU1ldHJp
YywgaW5kaWNhdG9yc0luQ3VycmVudFJvdywgdGhpcy5fY29vcmRpbmF0ZUZvckluZGljYXRvcikp
XSkpOworICAgICAgICAgICAgdGhpcy5faW5kaWNhdG9yR3JpZC5wdXNoKGluZGljYXRvcnNJbkN1
cnJlbnRSb3cpOworICAgICAgICB9KTsKKworICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBlbGVt
ZW50KCd0Ym9keScsIHRhYmxlQm9keUVsZW1lbnQpOworICAgICAgICB0YWJsZUJvZHkuYWRkRXZl
bnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fY2xlYXJJbmRpY2F0b3JTdGF0ZSh0cnVl
KSk7CiAKLSAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgndGVzdC1oZWFs
dGgnKSwgW2VsZW1lbnQoJ3RoZWFkJywgdGFibGVIZWFkRWxlbWVudHMpLCBlbGVtZW50KCd0Ym9k
eScsIHRhYmxlQm9keUVsZW1lbnQpXSk7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlz
LmNvbnRlbnQoJ3Rlc3QtaGVhbHRoJyksIFtlbGVtZW50KCd0aGVhZCcsIHRhYmxlSGVhZEVsZW1l
bnRzKSwgdGFibGVCb2R5XSk7CiAgICAgfQogCiAgICAgX2lzVmFsaWRQbGF0Zm9ybU1ldHJpY0Nv
bWJpbmF0aW9uKHBsYXRmb3JtLCBtZXRyaWMpCkBAIC0yMjAsMjQgKzMwNCw1MiBAQCBjbGFzcyBU
ZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICAm
JiBwbGF0Zm9ybS5oYXNNZXRyaWMobWV0cmljKTsKICAgICB9CiAKLSAgICBfY29uc3RydWN0VGFi
bGVDZWxsKHBsYXRmb3JtLCBtZXRyaWMsIGluZGljYXRvckJ5TWV0cmljKQorICAgIF9jb25zdHJ1
Y3RUYWJsZUNlbGwocGxhdGZvcm0sIG1ldHJpYywgcm93SW5kZXgsIGNvbHVtbkluZGV4LCBpbmRp
Y2F0b3JCeU1ldHJpYywgaW5kaWNhdG9yc0luQ3VycmVudFJvdywgY29vcmRpbmF0ZUZvckluZGlj
YXRvcikKICAgICB7CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0
ZUVsZW1lbnQ7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkUGxhdGZvcm1NZXRyaWNDb21i
aW5hdGlvbihwbGF0Zm9ybSwgbWV0cmljKSkKKyAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkUGxh
dGZvcm1NZXRyaWNDb21iaW5hdGlvbihwbGF0Zm9ybSwgbWV0cmljKSkgeworICAgICAgICAgICAg
aW5kaWNhdG9yc0luQ3VycmVudFJvdy5wdXNoKG51bGwpOwogICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQoJ3RkJywge2NsYXNzOiAnYmxhbmstY2VsbCd9LCBlbGVtZW50KCdkaXYnKSk7CisgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBuZXcgRnJlc2huZXNzSW5kaWNhdG9y
OwogICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdCcsIChvcmlnaW5hdG9y
KSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9
IG9yaWdpbmF0b3I7CisgICAgICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IG9yaWdp
bmF0b3I7CiAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB9KTsK
LSAgICAgICAgaW5kaWNhdG9yLmxpc3RlblRvQWN0aW9uKCd1bnNlbGVjdCcsICgpID0+IHsKLSAg
ICAgICAgICAgIHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gbnVsbDsKKyAg
ICAgICAgaW5kaWNhdG9yLmxpc3RlblRvQWN0aW9uKCdmb2N1cycsIChvcmlnaW5hdG9yKSA9PiB7
CisgICAgICAgICAgICBjb25zb2xlLmxvZygnZm9jdXMhJyk7CisgICAgICAgICAgICB0aGlzLl9p
bmRpY2F0b3JGb3JUb29sdGlwID0gdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IgPSBvcmlnaW5hdG9y
OworICAgICAgICAgICAgdGhpcy5fc2tpcE5leHRTdGF0ZUNsZWFuT25TY3JvbGwgPSB0cnVlOwog
ICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAgICAgfSk7CisgICAgICAg
IGluZGljYXRvci5saXN0ZW5Ub0FjdGlvbignY2xpY2snLCAob3JpZ2luYXRvcikgPT4geworICAg
ICAgICAgICAgY29uc29sZS5sb2coJ2NsaWNrJyk7CisgICAgICAgICAgICB0aGlzLl9zaG93VG9v
bHRpcCA9ICF0aGlzLl9zaG93VG9vbHRpcCB8fCB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwICE9
IG9yaWdpbmF0b3I7CisgICAgICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IG9yaWdp
bmF0b3I7CisgICAgICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwID0gb3JpZ2luYXRv
cjsKKyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0pOworCiAg
ICAgICAgIGluZGljYXRvckJ5TWV0cmljLnNldChtZXRyaWMsIGluZGljYXRvcik7Ci0gICAgICAg
IHJldHVybiBlbGVtZW50KCd0ZCcsIHtjbGFzczogJ3N0YXR1cy1jZWxsJ30sIGluZGljYXRvcik7
CisgICAgICAgIGNvb3JkaW5hdGVGb3JJbmRpY2F0b3Iuc2V0KGluZGljYXRvciwgW3Jvd0luZGV4
LCBjb2x1bW5JbmRleF0pOworICAgICAgICBpbmRpY2F0b3JzSW5DdXJyZW50Um93LnB1c2goaW5k
aWNhdG9yKTsKKyAgICAgICAgY29uc3QgaW5kaWNhdG9yQ2VsbCA9IGVsZW1lbnQoJ3RkJywge2Ns
YXNzOiAnc3RhdHVzLWNlbGwnfSwgaW5kaWNhdG9yKTsKKyAgICAgICAgcmV0dXJuIGluZGljYXRv
ckNlbGw7CisgICAgfQorCisgICAgX2NsZWFySW5kaWNhdG9yU3RhdGUoZHVlVG9TY3JvbGwpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fc2tpcE5leHRTdGF0ZUNsZWFuT25TY3JvbGwpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3NraXBOZXh0U3RhdGVDbGVhbk9uU2Nyb2xsID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAoZHVlVG9TY3JvbGwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuX3Nob3dUb29sdGlwID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2lu
ZGljYXRvckZvclRvb2x0aXAgPSBudWxsOworICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRv
ciA9IG51bGw7CisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIGh0bWxUZW1wbGF0ZSgpCkBAIC0zNDksOCArNDYxLDggQEAgY2xhc3MgVGVzdEZyZXNo
bmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgI3Rvb2x0aXAt
dGFibGUgewogICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAg
ICAgICB3aWR0aDogMjJyZW07Ci0gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzM0
NDk1RTsKLSAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk7CisgICAgICAgICAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogIzY5Njk2OTsKKyAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk2Owog
ICAgICAgICAgICAgICAgIG1hcmdpbjogMC4zcmVtOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6
IDAuM3JlbTsKICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjRyZW07CkBAIC0zNzQs
MTAgKzQ4NiwxMCBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVh
ZGluZyB7CiAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0wLjNyZW07CiAgICAgICAgICAg
ICAgICAgYm9yZGVyLXdpZHRoOiAwLjNyZW07CiAgICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxl
OiBzb2xpZDsKLSAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICMzNDQ5NUUgdHJhbnNwYXJl
bnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7CisgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9y
OiAjNjk2OTY5IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgI3Rvb2x0aXAtdGFibGUgYSB7Ci0gICAgICAgICAgICAgICAgY29s
b3I6ICNCMDNBMkU7CisgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICAg
ICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICAgfQogICAgICAgICBgOwpAQCAtMzg1
LDMgKzQ5Nyw2IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFk
aW5nIHsKIAogICAgIHJvdXRlTmFtZSgpIHsgcmV0dXJuICd0ZXN0LWZyZXNobmVzcyc7IH0KIH0K
K1Rlc3RGcmVzaG5lc3NQYWdlLkxFRlRfT05MWSA9IC0xOworVGVzdEZyZXNobmVzc1BhZ2UuUklH
SFRfT05MWSA9IDE7CitUZXN0RnJlc2huZXNzUGFnZS5CT1RIX0RJUkVDVElPTlMgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380454</attachid>
            <date>2019-10-08 12:59:13 -0700</date>
            <delta_ts>2019-10-08 13:08:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202684-20191008125912.patch</filename>
            <type>text/plain</type>
            <size>22782</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODE1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzYjE5NjQxYWEwODljNjdlYTMyZjA2Yjk3NGVhYjc5ZDAzNWViNDkxLi4yM2ZmZGQzZGFi
YWI4YjUyYjQ1NjJjODk2M2Q2NjI2ODkxNTA1YzUyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOS0xMC0wNyAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHRlc3QgZnJlc2huZXNzIHBhZ2UgaW50ZXJh
Y3Rpb24gZXhwZXJpZW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0ZXN0IGZyZXNobmVzcyBwYWdlIHNob3cgdG9vbHRpcCBvbiBjbGlj
ayBpbnN0ZWFkIG9mIHBvcHVwaW5nIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIEFuZCBjbGlja2lu
ZyBhbnl3aGVyZSBpbiAncGFnZS13aXRoLWhlYWRpbmcnIHNlY3Rpb24gZXhjZXB0IHRoZSB0b29s
dGlwIGNhbiBkaXNtaXNzIHRvb2x0aXAuCisgICAgICAgIEFkZCBrZXlib2FyZCBzdXBwb3J0IHRv
IG1vdmUgZm9jdXMgYXJvdW5kIGluY2x1ZGluZyAnVGFiJyBrZXkgc3VwcG9ydC4KKyAgICAgICAg
VXNlICdFbnRlcicga2V5IHRvIHNob3cgb3IgZGlzbWlzcyB0b29sdGlwLgorCisgICAgICAgICog
cHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qczogQWRkZWQgc3VwcG9ydCBmb3IgY3VzdG9taXpp
bmcgd2hldGhlciBvciBub3QgcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uCisg
ICAgICAgIHdoaWxlIGNyZWF0aW5nIGV2ZW50IGhhbmRsZXIuCisgICAgICAgIChDb21wb25lbnRC
YXNlLnByb3RvdHlwZS5jcmVhdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoQ29tcG9uZW50QmFz
ZS5jcmVhdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoQ29tcG9uZW50QmFzZSk6CisgICAgICAg
ICogcHVibGljL3YzL2NvbXBvbmVudHMvZnJlc2huZXNzLWluZGljYXRvci5qczoKKyAgICAgICAg
KEZyZXNobmVzc0luZGljYXRvcik6IFJlbW92ZWQgJ3VybCcgcHJvcGVydHkuCisgICAgICAgIChG
cmVzaG5lc3NJbmRpY2F0b3IucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChGcmVzaG5lc3NJ
bmRpY2F0b3IucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOiBBZGRlZCBsaXN0ZW5l
ciB0byBmb2N1cyBhbmQgbW91c2UgZG93biBldmVudC4KKyAgICAgICAgKEZyZXNobmVzc0luZGlj
YXRvci5wcm90b3R5cGUuZm9jdXMpOgorICAgICAgICAoRnJlc2huZXNzSW5kaWNhdG9yLmh0bWxU
ZW1wbGF0ZSk6CisgICAgICAgIChGcmVzaG5lc3NJbmRpY2F0b3IuY3NzVGVtcGxhdGUpOiBBZGRl
ZCBzdHlsZSBzaGVldCBmb3IgZm9jdXMuCisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL3Rlc3Qt
ZnJlc2huZXNzLXBhZ2UuanM6CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZSk6IENoYW5nZWQg
dG8gc2hvdyB0b29sdGlwIG9uIGNsaWNrIGFuZCBhZGRlZCBrZXkgYm9hcmQgZXZlbnQuCisgICAg
ICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6
IEFkZGVkIGtleSBldmVudCBzdXBwb3J0LgorICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UucHJv
dG90eXBlLl9maW5kQW5kVXBkYXRlQ2xvc2VzdEluZGljYXRvcik6CisgICAgICAgIChUZXN0RnJl
c2huZXNzUGFnZS5wcm90b3R5cGUuX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZSk6
CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAg
KFRlc3RGcmVzaG5lc3NQYWdlLnByb3RvdHlwZS5fcmVuZGVyVG9vbHRpcCk6CisgICAgICAgIChU
ZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuX2NsZWFySW5kaWNhdG9yU3RhdGUpOgorICAgICAg
ICAoVGVzdEZyZXNobmVzc1BhZ2UuY3NzVGVtcGxhdGUpOiBDaGFuZ2UgY29sb3Igb2YgbGlua3Mg
aW4gdG9vbHRpcCB0byBhIG1vcmUgcmVhZGFibGUgY29sb3IuCisgICAgICAgIChUZXN0RnJlc2hu
ZXNzUGFnZS5wcm90b3R5cGUuX2ZldGNoVGVzdFJlc3VsdHMpOiBEZWxldGVkLgorICAgICAgICAo
VGVzdEZyZXNobmVzc1BhZ2UucHJvdG90eXBlLl9jb25zdHJ1Y3RUYWJsZUNlbGwpOiBEZWxldGVk
LgorCiAyMDE5LTEwLTA0ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbcGVyZiBkYXNoYm9hcmRdIFRlc3QgZnJlc3NuZXNzIHBvcG92ZXIgc29tZXRpbWVz
IHBvaW50IHRvIHdyb25nIHBsYWNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzCmluZGV4IGYzYTVlNjVlNTg3ZmEzZWM0NmRk
OTg3ODllNmE5NmVmN2UxMjc5Y2UuLjdlYTU4ZjQ2OTk4YTQ4NTgwYzY5OWFmZWZlN2VkNmFmMjNk
OTUwMzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9iYXNlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9iYXNlLmpzCkBAIC0yNDksMTIgKzI0OSwxNCBAQCBjbGFzcyBDb21wb25lbnRC
YXNlIGV4dGVuZHMgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGN1c3RvbUVsZW1lbnRz
LmRlZmluZShuYW1lLCBlbGVtZW50Q2xhc3MpOwogICAgIH0KIAotICAgIGNyZWF0ZUV2ZW50SGFu
ZGxlcihjYWxsYmFjaykgeyByZXR1cm4gQ29tcG9uZW50QmFzZS5jcmVhdGVFdmVudEhhbmRsZXIo
Y2FsbGJhY2spOyB9Ci0gICAgc3RhdGljIGNyZWF0ZUV2ZW50SGFuZGxlcihjYWxsYmFjaykKKyAg
ICBjcmVhdGVFdmVudEhhbmRsZXIoY2FsbGJhY2ssIHByZXZlbnREZWZhdWx0PXRydWUsIHN0b3BQ
cm9wYWdhdGlvbj10cnVlKSB7IHJldHVybiBDb21wb25lbnRCYXNlLmNyZWF0ZUV2ZW50SGFuZGxl
cihjYWxsYmFjaywgcHJldmVudERlZmF1bHQsIHN0b3BQcm9wYWdhdGlvbik7IH0KKyAgICBzdGF0
aWMgY3JlYXRlRXZlbnRIYW5kbGVyKGNhbGxiYWNrLCBwcmV2ZW50RGVmYXVsdD10cnVlLCBzdG9w
UHJvcGFnYXRpb249dHJ1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkKKyAg
ICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgaWYgKHN0
b3BQcm9wYWdhdGlvbikKKyAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsK
ICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgZXZlbnQpOwogICAgICAgICB9OwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9mcmVzaG5lc3MtaW5kaWNhdG9yLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKaW5kZXggNGZiYjkyMGNl
MDYyNDRhMzEyMWRhYTk2ODU2Mjg1ZDk1OTA5NWI3YS4uODIxOTUzNmUxODI4MzFjMDQxYmM4ZDE4
NTUyZGE1OWFjZDQxNjcxOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3Iu
anMKQEAgLTEsMjAgKzEsMTggQEAKIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENv
bXBvbmVudEJhc2UgewotICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVz
dEFnZVRvbGVyYW5jZSwgc3VtbWFyeSwgdXJsKQorICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9p
bnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgc3VtbWFyeSkKICAgICB7CiAgICAgICAgIHN1
cGVyKCdmcmVzaG5lc3MtaW5kaWNhdG9yJyk7CiAgICAgICAgIHRoaXMuX2xhc3REYXRhUG9pbnRE
dXJhdGlvbiA9IGxhc3REYXRhUG9pbnREdXJhdGlvbjsKICAgICAgICAgdGhpcy5fdGVzdEFnZVRv
bGVyYW5jZSA9IHRlc3RBZ2VUb2xlcmFuY2U7Ci0gICAgICAgIHRoaXMuX3VybCA9IHVybDsKICAg
ICAgICAgdGhpcy5faGlnaGxpZ2h0ZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9yZW5kZXJJ
bmRpY2F0b3JMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVy
SW5kaWNhdG9yLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIHVwZGF0ZShsYXN0RGF0YVBvaW50
RHVyYXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIHVybCwgaGlnaGxpZ2h0ZWQpCisgICAgdXBkYXRl
KGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgaGlnaGxpZ2h0ZWQpCiAg
ICAgewogICAgICAgICB0aGlzLl9sYXN0RGF0YVBvaW50RHVyYXRpb24gPSBsYXN0RGF0YVBvaW50
RHVyYXRpb247CiAgICAgICAgIHRoaXMuX3Rlc3RBZ2VUb2xlcmFuY2UgPSB0ZXN0QWdlVG9sZXJh
bmNlOwotICAgICAgICB0aGlzLl91cmwgPSB1cmw7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVk
ID0gaGlnaGxpZ2h0ZWQ7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQpA
QCAtMjIsOCArMjAsMjAgQEAgY2xhc3MgRnJlc2huZXNzSW5kaWNhdG9yIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCiAgICAgewogICAgICAgICBj
b25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRlbnQoJ2NvbnRhaW5lcicpOwotICAgICAgICBjb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ3NlbGVjdCcsIHRoaXMpKTsKLSAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1bnNlbGVjdCcpKTsK
KyAgICAgICAgbGV0IG1vdXNlSW5Vc2UgPSBmYWxzZTsKKyAgICAgICAgY29udGFpbmVyLm9ubW91
c2VlbnRlciA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rp
b24oJ3NlbGVjdCcsIHRoaXMpKTsKKyAgICAgICAgY29udGFpbmVyLm9ubW91c2Vkb3duID0gdGhp
cy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4gbW91c2VJblVzZSA9IHRydWUsIGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgIGNvbnRhaW5lci5vbmNsaWNrID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIo
KCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xpY2snLCAgdGhpcykpOworICAgICAgICBjb250
YWluZXIub25mb2N1cyA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHsKKyAgICAgICAg
ICAgIGlmICghbW91c2VJblVzZSkKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCdmb2N1cycsICB0aGlzKTsKKyAgICAgICAgICAgIG1vdXNlSW5Vc2UgPSBmYWxzZTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZm9jdXMob3B0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b250ZW50KCdjb250YWluZXInKS5mb2N1cyhvcHRpb24pOwogICAgIH0KIAogICAgIHJlbmRlcigp
CkBAIC00Niw3ICs1Niw3IEBAIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENvbXBv
bmVudEJhc2UgewogICAgICAgICBjb25zdCByYXRpbmcgPSAxIC8gKDEgKyBNYXRoLmV4cChNYXRo
LmxvZygxLjIpICogKGhvdXJzU2luY2VMYXN0RGF0YVBvaW50IC0gdGVzdEFnZVRvbGVyYW5jZUlu
SG91cnMpKSk7CiAgICAgICAgIGNvbnN0IGh1ZSA9IE1hdGgucm91bmQoMTIwICogcmF0aW5nKTsK
ICAgICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IE1hdGgucm91bmQoMzAgKyA1MCAqIHJhdGluZyk7
Ci0gICAgICAgIGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgaHJl
ZjogdXJsLCBjbGFzczogaGlnaGxpZ2h0ZWQgPyAnaGlnaGxpZ2h0JyA6ICcnfSk7CisgICAgICAg
IGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgY2xhc3M6IGAke2hp
Z2hsaWdodGVkID8gJ2hpZ2hsaWdodCcgOiAnJ31gfSk7CiAKICAgICAgICAgaW5kaWNhdG9yLnN0
eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtodWV9LCAxMDAlLCAke2JyaWdodG5lc3N9JSlg
OwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdjb250YWluZXInKSwg
aW5kaWNhdG9yKTsKQEAgLTU0LDcgKzY0LDcgQEAgY2xhc3MgRnJlc2huZXNzSW5kaWNhdG9yIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBgPGRpdiBpZD0nY29udGFpbmVyJz48L2Rpdj5gOworICAgICAgICBy
ZXR1cm4gYDxkaXYgaWQ9J2NvbnRhaW5lcicgdGFiSW5kZXg9JzAnPjwvZGl2PmA7CiAgICAgfQog
CiAgICAgc3RhdGljICBjc3NUZW1wbGF0ZSgpCkBAIC02NCw2ICs3NCwxNiBAQCBjbGFzcyBGcmVz
aG5lc3NJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBt
YXJnaW46IGF1dG87CiAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjhyZW07CiAgICAgICAgICAg
ICAgICAgd2lkdGg6IDEuOHJlbTsKKyAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGl2OmZvY3VzOjphZnRlciB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIgIjsKKyAg
ICAgICAgICAgICAgICB0b3A6IC0xLjFyZW07CisgICAgICAgICAgICAgICAgbGVmdDogMC42OHJl
bTsKKyAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAuMnJlbTsKKyAgICAgICAgICAgICAg
ICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJh
bnNwYXJlbnQgdHJhbnNwYXJlbnQgcmVkIHRyYW5zcGFyZW50OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYSB7CiAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNz
LXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3Rlc3Qt
ZnJlc2huZXNzLXBhZ2UuanMKaW5kZXggZjA5MmRkYjliN2M1NDA3ZWY4NzdiMzIzOGMyODNkN2Mw
YWM3ZWQzNy4uZmE5MmFhYjE0YTk0NTIyODhiZGJmOTE3ZTJjZTlkZDVhOTI0MGM0YSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy90ZXN0LWZyZXNo
bmVzcy1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFn
ZXMvdGVzdC1mcmVzaG5lc3MtcGFnZS5qcwpAQCAtOSwyNyArOSwxOCBAQCBjbGFzcyBUZXN0RnJl
c2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIHRoaXMuX2xhc3RE
YXRhUG9pbnRCeUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9pbmRpY2F0b3JC
eUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9yZW5kZXJUYWJsZUxhemlseSA9
IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUYWJsZS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBudWxsOwot
ICAgICAgICB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faG92
ZXJpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlw
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fYnVpbGRlckJ5SW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY29vcmRpbmF0ZUZv
ckluZGljYXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuX2luZGljYXRvckdyaWQgPSBudWxsOwor
ICAgICAgICB0aGlzLl9za2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlclRvb2x0aXAuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fbG9hZENv
bmZpZyhzdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb24pOwogICAgIH0KIAotICAgIGRpZENvbnN0cnVj
dFNoYWRvd1RyZWUoKQotICAgIHsKLSAgICAgICAgY29uc3QgdG9vbHRpcFRhYmxlID0gdGhpcy5j
b250ZW50KCd0b29sdGlwLXRhYmxlJyk7Ci0gICAgICAgIHRvb2x0aXBUYWJsZS5hZGRFdmVudExp
c3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gewotICAgICAgICAgICAgdGhpcy5faG92ZXJpbmdU
b29sdGlwID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICB0b29sdGlwVGFibGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2
ZScsICgpID0+IHsKLSAgICAgICAgICAgIHRoaXMuX2hvdmVyaW5nVG9vbHRpcCA9IGZhbHNlOwot
ICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
CiAgICAgbmFtZSgpIHsgcmV0dXJuICdUZXN0LUZyZXNobmVzcyc7IH0KIAogICAgIF9sb2FkQ29u
ZmlnKHN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbikKQEAgLTY4LDYgKzU5LDczIEBAIGNsYXNzIFRl
c3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgc3VwZXIu
b3BlbihzdGF0ZSk7CiAgICAgfQogCisgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCisgICAg
eworICAgICAgICBzdXBlci5kaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCk7CisgICAgICAgIHRoaXMu
Y29udGVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5fY2xlYXJJbmRp
Y2F0b3JTdGF0ZShmYWxzZSkpOworICAgICAgICB0aGlzLmNvbnRlbnQoJ3Rvb2x0aXAtdGFibGUn
KS5vbmNsaWNrID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4ge30sIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgIGlmICghdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCAmJiAhdGhpcy5f
aG92ZXJpbmdJbmRpY2F0b3IpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyQnlJbmRp
Y2F0b3Iua2V5cygpLm5leHQoKS52YWx1ZS5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3QgW3JvdywgY29sdW1uXSA9IHRoaXMuX2Nvb3JkaW5hdGVGb3JJbmRpY2F0b3IuZ2V0KHRoaXMu
X2luZGljYXRvckZvclRvb2x0aXAgfHwgdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IpOworCisgICAg
ICAgICAgICBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dVcCcpIHsKKyAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRVcGRh
dGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbiwgcm93IC0gMSwgdGhpcy5faW5kaWNhdG9yR3JpZCwg
dGhpcy5jb25zdHJ1Y3Rvci5CT1RIX0RJUkVDVElPTlMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dEb3duJykgeworICAgICAgICAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZmluZEFu
ZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uLCByb3cgKyAxLCB0aGlzLl9pbmRpY2F0b3JH
cmlkLCB0aGlzLmNvbnN0cnVjdG9yLkJPVEhfRElSRUNUSU9OUyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChldmVudC5jb2RlID09ICdBcnJvd0xlZnQnKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2ZpbmRBbmRVcGRhdGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbiAtIDEsIHJv
dywgdGhpcy5faW5kaWNhdG9yR3JpZCwgdGhpcy5jb25zdHJ1Y3Rvci5MRUZUX09OTFkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dSaWdodCcpCisgICAgICAgICAg
ICAgICAgdGhpcy5fZmluZEFuZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uICsgMSwgcm93
LCB0aGlzLl9pbmRpY2F0b3JHcmlkLCB0aGlzLmNvbnN0cnVjdG9yLlJJR0hUX09OTFkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnRW50ZXInKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSAhdGhpcy5fc2hvd1Rvb2x0aXA7CisgICAgICAgICAgICAg
ICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgX2ZpbmRBbmRVcGRhdGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbkluZGV4LCBy
b3dJbmRleCwgZ3JpZCwgZGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAgY29uc3QgY2xvc2VzdElu
ZGljYXRvciA9IHRoaXMuX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZShjb2x1bW5J
bmRleCwgcm93SW5kZXgsIGdyaWQsIGRpcmVjdGlvbik7CisgICAgICAgIGlmICghY2xvc2VzdElu
ZGljYXRvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VzdEluZGljYXRvci5m
b2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZShjb2x1bW5JbmRleCwgcm93SW5k
ZXgsIGdyaWQsIGRpcmVjdGlvbikKKyAgICB7CisgICAgICAgIHJvd0luZGV4ID0gTWF0aC5taW4o
TWF0aC5tYXgocm93SW5kZXgsIDApLCBncmlkLmxlbmd0aCAtIDEpOworICAgICAgICBjb25zdCBy
b3cgPSBncmlkW3Jvd0luZGV4XTsKKyAgICAgICAgaWYgKCFyb3cubGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihNYXRoLm1h
eChjb2x1bW5JbmRleCwgMCksIHJvdy5sZW5ndGggLSAxKTsKKyAgICAgICAgaWYgKHJvd1tzdGFy
dF0pCisgICAgICAgICAgICByZXR1cm4gcm93W3N0YXJ0XTsKKworICAgICAgICBsZXQgb2ZmU2V0
ID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNvbnN0IGxlZnRJbmRl
eCA9IHN0YXJ0IC0gb2ZmU2V0OworICAgICAgICAgICAgaWYgKGxlZnRJbmRleCA+PSAwICYmIHJv
d1tsZWZ0SW5kZXhdICYmIGRpcmVjdGlvbiAhPSB0aGlzLmNvbnN0cnVjdG9yLlJJR0hUX09OTFkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1tsZWZ0SW5kZXhdOworICAgICAgICAgICAgY29u
c3QgcmlnaHRJbmRleCA9IHN0YXJ0ICsgb2ZmU2V0OworICAgICAgICAgICAgaWYgKHJpZ2h0SW5k
ZXggPCByb3cubGVuZ3RoICYmIHJvd1tyaWdodEluZGV4XSAmJiBkaXJlY3Rpb24gIT0gdGhpcy5j
b25zdHJ1Y3Rvci5MRUZUX09OTFkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1tyaWdodElu
ZGV4XTsKKyAgICAgICAgICAgIGlmIChsZWZ0SW5kZXggPCAwICYmIHJpZ2h0SW5kZXggPj0gcm93
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG9mZlNldCArPSAx
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKwogICAgIF9mZXRjaFRl
c3RSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lYXN1cmVtZW50U2V0RmV0Y2hUaW1l
ID0gRGF0ZS5ub3coKTsKQEAgLTEyMywzNiArMTgxLDQ1IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKIAogICAgICAgICB0aGlzLl9yZW5kZXJUYWJs
ZUxhemlseS5ldmFsdWF0ZSh0aGlzLl9wbGF0Zm9ybXMsIHRoaXMuX21ldHJpY3MpOwogCi0gICAg
ICAgIGxldCBidWlsZFN1bW1hcnlGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9IG51
bGw7Ci0gICAgICAgIGxldCBidWlsZEZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0g
bnVsbDsKLSAgICAgICAgbGV0IGNvbW1pdFNldEZvckN1cnJlbnRIaWdobGlnaHRlZEluZGljYXRv
ciA9IG51bGw7Ci0gICAgICAgIGNvbnN0IGJ1aWxkZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZElu
ZGljYXRvciA9IHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID8gdGhpcy5fYnVp
bGRlckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvcikg
OiBudWxsOworICAgICAgICBsZXQgYnVpbGRTdW1tYXJ5Rm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBu
dWxsOworICAgICAgICBsZXQgYnVpbGRGb3JGb2N1c2luZ0luZGljYXRvciA9IG51bGw7CisgICAg
ICAgIGxldCBjb21taXRTZXRGb3JGb2N1c2luZ2RJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBs
ZXQgY2hhcnRVUkxGb3JGb2N1c2luZ0luZGljYXRvciA9IG51bGw7CisgICAgICAgIGxldCBwbGF0
Zm9ybUZvckZvY3VzaW5nSW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgbGV0IG1ldHJpY0ZvckZv
Y3VzaW5nSW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgY29uc3QgYnVpbGRlckZvckZvY3VzaW5n
SW5kaWNhdG9yID0gdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA/IHRoaXMuX2J1aWxkZXJCeUlu
ZGljYXRvci5nZXQodGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCkgOiBudWxsOworICAgICAgICBj
b25zdCBidWlsZGVyRm9ySG92ZXJpbmdJbmRpY2F0b3IgPSB0aGlzLl9ob3ZlcmluZ0luZGljYXRv
ciA/IHRoaXMuX2J1aWxkZXJCeUluZGljYXRvci5nZXQodGhpcy5faG92ZXJpbmdJbmRpY2F0b3Ip
IDogbnVsbDsKICAgICAgICAgZm9yIChjb25zdCBbcGxhdGZvcm0sIGxhc3REYXRhUG9pbnRCeU1l
dHJpY10gb2YgdGhpcy5fbGFzdERhdGFQb2ludEJ5Q29uZmlndXJhdGlvbi5lbnRyaWVzKCkpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgW21ldHJpYywgbGFzdERhdGFQb2ludF0gb2YgbGFzdERh
dGFQb2ludEJ5TWV0cmljLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVE
dXJhdGlvbiA9IHRoaXMuX21lYXN1cmVtZW50U2V0RmV0Y2hUaW1lIC0gbGFzdERhdGFQb2ludC50
aW1lOwogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEdXJhdGlvblN1bW1hcnlQcmVmaXggPSBs
YXN0RGF0YVBvaW50Lmhhc0N1cnJlbnREYXRhUG9pbnQgPyAnJyA6ICdNb3JlIHRoYW4gJzsKICAg
ICAgICAgICAgICAgICBjb25zdCB0aW1lRHVyYXRpb25TdW1tYXJ5ID0gQnVpbGRSZXF1ZXN0LmZv
cm1hdFRpbWVJbnRlcnZhbCh0aW1lRHVyYXRpb24pOwogICAgICAgICAgICAgICAgIGNvbnN0IHN1
bW1hcnkgPSBgJHt0aW1lRHVyYXRpb25TdW1tYXJ5UHJlZml4fSR7dGltZUR1cmF0aW9uU3VtbWFy
eX0gc2luY2UgbGF0ZXN0IGRhdGEgcG9pbnQuYDsKLSAgICAgICAgICAgICAgICBjb25zdCB1cmwg
PSB0aGlzLl9yb3V0ZXIudXJsKCdjaGFydHMnLCBDaGFydHNQYWdlLmNyZWF0ZVN0YXRlRm9yRGFz
aGJvYXJkSXRlbShwbGF0Zm9ybS5pZCgpLCBtZXRyaWMuaWQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUgLSB0aGlzLl90aW1lRHVyYXRpb24pKTsK
IAogICAgICAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IHRoaXMuX2luZGljYXRvckJ5Q29u
ZmlndXJhdGlvbi5nZXQocGxhdGZvcm0pLmdldChtZXRyaWMpOwotICAgICAgICAgICAgICAgIGlm
ICh0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciAmJiB0aGlzLl9jdXJyZW50bHlI
aWdobGlnaHRlZEluZGljYXRvciA9PT0gaW5kaWNhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJ1aWxkU3VtbWFyeUZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gc3VtbWFyeTsK
LSAgICAgICAgICAgICAgICAgICAgYnVpbGRGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRv
ciA9IGxhc3REYXRhUG9pbnQubGFzdEJ1aWxkOwotICAgICAgICAgICAgICAgICAgICBjb21taXRT
ZXRGb3JDdXJyZW50SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBsYXN0RGF0YVBvaW50LmNvbW1pdFNl
dE9mTGFzdFBvaW50OworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbmRpY2F0b3JGb3JUb29s
dGlwICYmIHRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgPT09IGluZGljYXRvcikgeworICAgICAg
ICAgICAgICAgICAgICBidWlsZFN1bW1hcnlGb3JGb2N1c2luZ0luZGljYXRvciA9IHN1bW1hcnk7
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBsYXN0RGF0
YVBvaW50Lmxhc3RCdWlsZDsKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0U2V0Rm9yRm9jdXNp
bmdkSW5kaWNhdG9yID0gbGFzdERhdGFQb2ludC5jb21taXRTZXRPZkxhc3RQb2ludDsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhcnRVUkxGb3JGb2N1c2luZ0luZGljYXRvciA9ICB0aGlzLl9yb3V0
ZXIudXJsKCdjaGFydHMnLCBDaGFydHNQYWdlLmNyZWF0ZVN0YXRlRm9yRGFzaGJvYXJkSXRlbShw
bGF0Zm9ybS5pZCgpLCBtZXRyaWMuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
X21lYXN1cmVtZW50U2V0RmV0Y2hUaW1lIC0gdGhpcy5fdGltZUR1cmF0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBwbGF0Zm9ybTsKKyAg
ICAgICAgICAgICAgICAgICAgbWV0cmljRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBtZXRyaWM7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkZXJCeUluZGljYXRv
ci5zZXQoaW5kaWNhdG9yLCBsYXN0RGF0YVBvaW50LmJ1aWxkZXIpOwotICAgICAgICAgICAgICAg
IGluZGljYXRvci51cGRhdGUodGltZUR1cmF0aW9uLCB0aGlzLl90ZXN0QWdlVG9sZXJhbmNlLCB1
cmwsIGJ1aWxkZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciAmJiBidWlsZGVyRm9y
Q3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPT09IGxhc3REYXRhUG9pbnQuYnVpbGRlcik7
CisgICAgICAgICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBidWlsZGVyRm9yRm9jdXNpbmdJ
bmRpY2F0b3IgJiYgYnVpbGRlckZvckZvY3VzaW5nSW5kaWNhdG9yID09IGxhc3REYXRhUG9pbnQu
YnVpbGRlcgorICAgICAgICAgICAgICAgICAgICB8fCBidWlsZGVyRm9ySG92ZXJpbmdJbmRpY2F0
b3IgJiYgYnVpbGRlckZvckhvdmVyaW5nSW5kaWNhdG9yID09PSBsYXN0RGF0YVBvaW50LmJ1aWxk
ZXI7CisgICAgICAgICAgICAgICAgaW5kaWNhdG9yLnVwZGF0ZSh0aW1lRHVyYXRpb24sIHRoaXMu
X3Rlc3RBZ2VUb2xlcmFuY2UsIGhpZ2hsaWdodGVkKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5LmV2YWx1YXRlKHRoaXMuX2N1cnJl
bnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yLCB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAsIGJ1aWxkU3Vt
bWFyeUZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yLCBidWlsZEZvckN1cnJlbnRseUhp
Z2hsaWdodGVkSW5kaWNhdG9yLCBjb21taXRTZXRGb3JDdXJyZW50SGlnaGxpZ2h0ZWRJbmRpY2F0
b3IpOworICAgICAgICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5LmV2YWx1YXRlKHRoaXMuX2lu
ZGljYXRvckZvclRvb2x0aXAsIHRoaXMuX3Nob3dUb29sdGlwLCBidWlsZFN1bW1hcnlGb3JGb2N1
c2luZ0luZGljYXRvciwgYnVpbGRGb3JGb2N1c2luZ0luZGljYXRvciwKKyAgICAgICAgICAgIGNv
bW1pdFNldEZvckZvY3VzaW5nZEluZGljYXRvciwgY2hhcnRVUkxGb3JGb2N1c2luZ0luZGljYXRv
ciwgcGxhdGZvcm1Gb3JGb2N1c2luZ0luZGljYXRvciwgbWV0cmljRm9yRm9jdXNpbmdJbmRpY2F0
b3IpOwogICAgIH0KIAotICAgIF9yZW5kZXJUb29sdGlwKGluZGljYXRvciwgaG92ZXJpbmdUb29s
dGlwLCBidWlsZFN1bW1hcnksIGJ1aWxkLCBjb21taXRTZXQpCisgICAgX3JlbmRlclRvb2x0aXAo
aW5kaWNhdG9yLCBzaG93VG9vbHRpcCwgYnVpbGRTdW1tYXJ5LCBidWlsZCwgY29tbWl0U2V0LCBj
aGFydFVSTCwgcGxhdGZvcm0sIG1ldHJpYykKICAgICB7Ci0gICAgICAgIGlmICghaW5kaWNhdG9y
IHx8ICFidWlsZFN1bW1hcnkpIHsKLSAgICAgICAgICAgIHRoaXMuY29udGVudCgndG9vbHRpcC1h
bmNob3InKS5zdHlsZS5kaXNwbGF5ID0gaG92ZXJpbmdUb29sdGlwID8gbnVsbCA6ICdub25lJzsK
KyAgICAgICAgaWYgKCFpbmRpY2F0b3IgfHwgIWJ1aWxkU3VtbWFyeSB8fCAhc2hvd1Rvb2x0aXAp
IHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCgndG9vbHRpcC1hbmNob3InKS5zdHlsZS5kaXNw
bGF5ID0gIHNob3dUb29sdGlwID8gbnVsbCA6ICdub25lJzsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVF
bGVtZW50OwpAQCAtMTY2LDYgKzIzMywxNCBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAKICAgICAgICAgbGV0IHRhYmxlQ29udGVudCA9IFtlbGVt
ZW50KCd0cicsIGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9LCBidWlsZFN1bW1hcnkpKV07CiAK
KyAgICAgICAgaWYgKGNoYXJ0VVJMKSB7CisgICAgICAgICAgICBjb25zdCBsaW5rRGVzY3JpcHRp
b24gPSBgJHttZXRyaWMudGVzdCgpLm5hbWUoKX0gb24gJHtwbGF0Zm9ybS5uYW1lKCl9YDsKKyAg
ICAgICAgICAgIHRhYmxlQ29udGVudC5wdXNoKGVsZW1lbnQoJ3RyJywgWworICAgICAgICAgICAg
ICAgIGVsZW1lbnQoJ3RkJywgJ0NoYXJ0JyksCisgICAgICAgICAgICAgICAgZWxlbWVudCgndGQn
LCB7Y29sc3BhbjogMn0sIGxpbmsobGlua0Rlc2NyaXB0aW9uLCBsaW5rRGVzY3JpcHRpb24sIGNo
YXJ0VVJMLCB0cnVlKSkKKyAgICAgICAgICAgIF0pKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlm
IChjb21taXRTZXQpIHsKICAgICAgICAgICAgIGlmIChjb21taXRTZXQucmVwb3NpdG9yaWVzKCku
bGVuZ3RoKQogICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5wdXNoKGVsZW1lbnQoJ3RyJywg
ZWxlbWVudCgndGgnLCB7Y29sc3BhbjogMn0sICdMYXRlc3QgYnVpbGQgaW5mb3JtYXRpb24nKSkp
OwpAQCAtMjAzLDE0ICsyNzgsMjMgQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQ
YWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgdGFibGVIZWFkRWxlbWVudHMucHVzaChlbGVt
ZW50KCd0aCcsIHtjbGFzczogJ2RpYWdvbmFsLWhlYWQnfSwgZWxlbWVudCgnZGl2JywgbWV0cmlj
LnRlc3QoKS5mdWxsTmFtZSgpKSkpOwogCiAgICAgICAgIHRoaXMuX2luZGljYXRvckJ5Q29uZmln
dXJhdGlvbiA9IG5ldyBNYXA7Ci0gICAgICAgIGZvciAoY29uc3QgcGxhdGZvcm0gb2YgcGxhdGZv
cm1zKSB7CisgICAgICAgIHRoaXMuX2Nvb3JkaW5hdGVGb3JJbmRpY2F0b3IgPSBuZXcgTWFwOwor
ICAgICAgICB0aGlzLl9pbmRpY2F0b3JHcmlkID0gW107CisKKyAgICAgICAgcGxhdGZvcm1zLmZv
ckVhY2goKHBsYXRmb3JtLCByb3dJbmRleCkgPT4gIHsKICAgICAgICAgICAgIGNvbnN0IGluZGlj
YXRvckJ5TWV0cmljID0gbmV3IE1hcDsKICAgICAgICAgICAgIHRoaXMuX2luZGljYXRvckJ5Q29u
ZmlndXJhdGlvbi5zZXQocGxhdGZvcm0sIGluZGljYXRvckJ5TWV0cmljKTsKKworICAgICAgICAg
ICAgbGV0IGluZGljYXRvcnNJbkN1cnJlbnRSb3cgPSBbXTsKICAgICAgICAgICAgIHRhYmxlQm9k
eUVsZW1lbnQucHVzaChlbGVtZW50KCd0cicsCi0gICAgICAgICAgICAgICAgW2VsZW1lbnQoJ3Ro
Jywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFiZWwoKSksIC4uLm1ldHJpY3MubWFw
KChtZXRyaWMpID0+IHRoaXMuX2NvbnN0cnVjdFRhYmxlQ2VsbChwbGF0Zm9ybSwgbWV0cmljLCBp
bmRpY2F0b3JCeU1ldHJpYykpXSkpOwotICAgICAgICB9CisgICAgICAgICAgICAgICAgW2VsZW1l
bnQoJ3RoJywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFiZWwoKSksIC4uLm1ldHJp
Y3MubWFwKChtZXRyaWMsIGNvbHVtbkluZGV4KSA9PiB0aGlzLl9jb25zdHJ1Y3RUYWJsZUNlbGwo
cGxhdGZvcm0sIG1ldHJpYywgcm93SW5kZXgsIGNvbHVtbkluZGV4LCBpbmRpY2F0b3JCeU1ldHJp
YywgaW5kaWNhdG9yc0luQ3VycmVudFJvdywgdGhpcy5fY29vcmRpbmF0ZUZvckluZGljYXRvcikp
XSkpOworICAgICAgICAgICAgdGhpcy5faW5kaWNhdG9yR3JpZC5wdXNoKGluZGljYXRvcnNJbkN1
cnJlbnRSb3cpOworICAgICAgICB9KTsKKworICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBlbGVt
ZW50KCd0Ym9keScsIHRhYmxlQm9keUVsZW1lbnQpOworICAgICAgICB0YWJsZUJvZHkuYWRkRXZl
bnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fY2xlYXJJbmRpY2F0b3JTdGF0ZSh0cnVl
KSk7CiAKLSAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgndGVzdC1oZWFs
dGgnKSwgW2VsZW1lbnQoJ3RoZWFkJywgdGFibGVIZWFkRWxlbWVudHMpLCBlbGVtZW50KCd0Ym9k
eScsIHRhYmxlQm9keUVsZW1lbnQpXSk7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlz
LmNvbnRlbnQoJ3Rlc3QtaGVhbHRoJyksIFtlbGVtZW50KCd0aGVhZCcsIHRhYmxlSGVhZEVsZW1l
bnRzKSwgdGFibGVCb2R5XSk7CiAgICAgfQogCiAgICAgX2lzVmFsaWRQbGF0Zm9ybU1ldHJpY0Nv
bWJpbmF0aW9uKHBsYXRmb3JtLCBtZXRyaWMpCkBAIC0yMjAsMjQgKzMwNCw1MCBAQCBjbGFzcyBU
ZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICAm
JiBwbGF0Zm9ybS5oYXNNZXRyaWMobWV0cmljKTsKICAgICB9CiAKLSAgICBfY29uc3RydWN0VGFi
bGVDZWxsKHBsYXRmb3JtLCBtZXRyaWMsIGluZGljYXRvckJ5TWV0cmljKQorICAgIF9jb25zdHJ1
Y3RUYWJsZUNlbGwocGxhdGZvcm0sIG1ldHJpYywgcm93SW5kZXgsIGNvbHVtbkluZGV4LCBpbmRp
Y2F0b3JCeU1ldHJpYywgaW5kaWNhdG9yc0luQ3VycmVudFJvdywgY29vcmRpbmF0ZUZvckluZGlj
YXRvcikKICAgICB7CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0
ZUVsZW1lbnQ7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkUGxhdGZvcm1NZXRyaWNDb21i
aW5hdGlvbihwbGF0Zm9ybSwgbWV0cmljKSkKKyAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkUGxh
dGZvcm1NZXRyaWNDb21iaW5hdGlvbihwbGF0Zm9ybSwgbWV0cmljKSkgeworICAgICAgICAgICAg
aW5kaWNhdG9yc0luQ3VycmVudFJvdy5wdXNoKG51bGwpOwogICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQoJ3RkJywge2NsYXNzOiAnYmxhbmstY2VsbCd9LCBlbGVtZW50KCdkaXYnKSk7CisgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBuZXcgRnJlc2huZXNzSW5kaWNhdG9y
OwogICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdCcsIChvcmlnaW5hdG9y
KSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9
IG9yaWdpbmF0b3I7CisgICAgICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IG9yaWdp
bmF0b3I7CiAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB9KTsK
LSAgICAgICAgaW5kaWNhdG9yLmxpc3RlblRvQWN0aW9uKCd1bnNlbGVjdCcsICgpID0+IHsKLSAg
ICAgICAgICAgIHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gbnVsbDsKKyAg
ICAgICAgaW5kaWNhdG9yLmxpc3RlblRvQWN0aW9uKCdmb2N1cycsIChvcmlnaW5hdG9yKSA9PiB7
CisgICAgICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwID0gdGhpcy5faG92ZXJpbmdJ
bmRpY2F0b3IgPSBvcmlnaW5hdG9yOworICAgICAgICAgICAgdGhpcy5fc2tpcE5leHRTdGF0ZUNs
ZWFuT25TY3JvbGwgPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsK
ICAgICAgICAgfSk7CisgICAgICAgIGluZGljYXRvci5saXN0ZW5Ub0FjdGlvbignY2xpY2snLCAo
b3JpZ2luYXRvcikgPT4geworICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSAhdGhpcy5f
c2hvd1Rvb2x0aXAgfHwgdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCAhPSBvcmlnaW5hdG9yOwor
ICAgICAgICAgICAgdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IgPSBvcmlnaW5hdG9yOworICAgICAg
ICAgICAgdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA9IG9yaWdpbmF0b3I7CisgICAgICAgICAg
ICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICB9KTsKKwogICAgICAgICBpbmRpY2F0
b3JCeU1ldHJpYy5zZXQobWV0cmljLCBpbmRpY2F0b3IpOwotICAgICAgICByZXR1cm4gZWxlbWVu
dCgndGQnLCB7Y2xhc3M6ICdzdGF0dXMtY2VsbCd9LCBpbmRpY2F0b3IpOworICAgICAgICBjb29y
ZGluYXRlRm9ySW5kaWNhdG9yLnNldChpbmRpY2F0b3IsIFtyb3dJbmRleCwgY29sdW1uSW5kZXhd
KTsKKyAgICAgICAgaW5kaWNhdG9yc0luQ3VycmVudFJvdy5wdXNoKGluZGljYXRvcik7CisgICAg
ICAgIGNvbnN0IGluZGljYXRvckNlbGwgPSBlbGVtZW50KCd0ZCcsIHtjbGFzczogJ3N0YXR1cy1j
ZWxsJ30sIGluZGljYXRvcik7CisgICAgICAgIHJldHVybiBpbmRpY2F0b3JDZWxsOworICAgIH0K
KworICAgIF9jbGVhckluZGljYXRvclN0YXRlKGR1ZVRvU2Nyb2xsKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX3NraXBOZXh0U3RhdGVDbGVhbk9uU2Nyb2xsKSB7CisgICAgICAgICAgICB0aGlz
Ll9za2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGR1
ZVRvU2Nyb2xsKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9zaG93VG9vbHRpcCA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29s
dGlwID0gbnVsbDsKKyAgICAgICAgdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IgPSBudWxsOworICAg
ICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAogICAgIHN0YXRpYyBodG1sVGVt
cGxhdGUoKQpAQCAtMzQ5LDggKzQ1OSw4IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVu
ZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgICN0b29sdGlwLXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDIy
cmVtOwotICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzNDQ5NUU7Ci0gICAgICAg
ICAgICAgICAgb3BhY2l0eTogMC45OworICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6
ICM2OTY5Njk7CisgICAgICAgICAgICAgICAgb3BhY2l0eTogMC45NjsKICAgICAgICAgICAgICAg
ICBtYXJnaW46IDAuM3JlbTsKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjNyZW07CiAgICAg
ICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMC40cmVtOwpAQCAtMzc0LDEwICs0ODQsMTAgQEAg
Y2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAg
ICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMC4zcmVtOwogICAgICAgICAgICAgICAgIGJvcmRlci13
aWR0aDogMC4zcmVtOwogICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7Ci0gICAg
ICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMzQ0OTVFIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50
IHRyYW5zcGFyZW50OworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzY5Njk2OSB0cmFu
c3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICN0b29sdGlwLXRhYmxlIGEgewotICAgICAgICAgICAgICAgIGNvbG9yOiAjQjAzQTJFOwor
ICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgICAgICBmb250LXdlaWdo
dDogYm9sZDsKICAgICAgICAgICAgIH0KICAgICAgICAgYDsKQEAgLTM4NSwzICs0OTUsNiBAQCBj
bGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAKICAgICBy
b3V0ZU5hbWUoKSB7IHJldHVybiAndGVzdC1mcmVzaG5lc3MnOyB9CiB9CitUZXN0RnJlc2huZXNz
UGFnZS5MRUZUX09OTFkgPSAtMTsKK1Rlc3RGcmVzaG5lc3NQYWdlLlJJR0hUX09OTFkgPSAxOwor
VGVzdEZyZXNobmVzc1BhZ2UuQk9USF9ESVJFQ1RJT05TID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380455</attachid>
            <date>2019-10-08 13:08:19 -0700</date>
            <delta_ts>2019-10-08 18:49:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202684-20191008130819.patch</filename>
            <type>text/plain</type>
            <size>22958</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODE1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzYjE5NjQxYWEwODljNjdlYTMyZjA2Yjk3NGVhYjc5ZDAzNWViNDkxLi4yM2ZmZGQzZGFi
YWI4YjUyYjQ1NjJjODk2M2Q2NjI2ODkxNTA1YzUyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOS0xMC0wNyAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHRlc3QgZnJlc2huZXNzIHBhZ2UgaW50ZXJh
Y3Rpb24gZXhwZXJpZW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0ZXN0IGZyZXNobmVzcyBwYWdlIHNob3cgdG9vbHRpcCBvbiBjbGlj
ayBpbnN0ZWFkIG9mIHBvcHVwaW5nIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIEFuZCBjbGlja2lu
ZyBhbnl3aGVyZSBpbiAncGFnZS13aXRoLWhlYWRpbmcnIHNlY3Rpb24gZXhjZXB0IHRoZSB0b29s
dGlwIGNhbiBkaXNtaXNzIHRvb2x0aXAuCisgICAgICAgIEFkZCBrZXlib2FyZCBzdXBwb3J0IHRv
IG1vdmUgZm9jdXMgYXJvdW5kIGluY2x1ZGluZyAnVGFiJyBrZXkgc3VwcG9ydC4KKyAgICAgICAg
VXNlICdFbnRlcicga2V5IHRvIHNob3cgb3IgZGlzbWlzcyB0b29sdGlwLgorCisgICAgICAgICog
cHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qczogQWRkZWQgc3VwcG9ydCBmb3IgY3VzdG9taXpp
bmcgd2hldGhlciBvciBub3QgcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uCisg
ICAgICAgIHdoaWxlIGNyZWF0aW5nIGV2ZW50IGhhbmRsZXIuCisgICAgICAgIChDb21wb25lbnRC
YXNlLnByb3RvdHlwZS5jcmVhdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoQ29tcG9uZW50QmFz
ZS5jcmVhdGVFdmVudEhhbmRsZXIpOgorICAgICAgICAoQ29tcG9uZW50QmFzZSk6CisgICAgICAg
ICogcHVibGljL3YzL2NvbXBvbmVudHMvZnJlc2huZXNzLWluZGljYXRvci5qczoKKyAgICAgICAg
KEZyZXNobmVzc0luZGljYXRvcik6IFJlbW92ZWQgJ3VybCcgcHJvcGVydHkuCisgICAgICAgIChG
cmVzaG5lc3NJbmRpY2F0b3IucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChGcmVzaG5lc3NJ
bmRpY2F0b3IucHJvdG90eXBlLmRpZENvbnN0cnVjdFNoYWRvd1RyZWUpOiBBZGRlZCBsaXN0ZW5l
ciB0byBmb2N1cyBhbmQgbW91c2UgZG93biBldmVudC4KKyAgICAgICAgKEZyZXNobmVzc0luZGlj
YXRvci5wcm90b3R5cGUuZm9jdXMpOgorICAgICAgICAoRnJlc2huZXNzSW5kaWNhdG9yLmh0bWxU
ZW1wbGF0ZSk6CisgICAgICAgIChGcmVzaG5lc3NJbmRpY2F0b3IuY3NzVGVtcGxhdGUpOiBBZGRl
ZCBzdHlsZSBzaGVldCBmb3IgZm9jdXMuCisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL3Rlc3Qt
ZnJlc2huZXNzLXBhZ2UuanM6CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZSk6IENoYW5nZWQg
dG8gc2hvdyB0b29sdGlwIG9uIGNsaWNrIGFuZCBhZGRlZCBrZXkgYm9hcmQgZXZlbnQuCisgICAg
ICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6
IEFkZGVkIGtleSBldmVudCBzdXBwb3J0LgorICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UucHJv
dG90eXBlLl9maW5kQW5kVXBkYXRlQ2xvc2VzdEluZGljYXRvcik6CisgICAgICAgIChUZXN0RnJl
c2huZXNzUGFnZS5wcm90b3R5cGUuX2ZpbmRDbG9zZXN0SW5kaWNhdG9yRm9yQ29vcmRpbmF0ZSk6
CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAg
KFRlc3RGcmVzaG5lc3NQYWdlLnByb3RvdHlwZS5fcmVuZGVyVG9vbHRpcCk6CisgICAgICAgIChU
ZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuX2NsZWFySW5kaWNhdG9yU3RhdGUpOgorICAgICAg
ICAoVGVzdEZyZXNobmVzc1BhZ2UuY3NzVGVtcGxhdGUpOiBDaGFuZ2UgY29sb3Igb2YgbGlua3Mg
aW4gdG9vbHRpcCB0byBhIG1vcmUgcmVhZGFibGUgY29sb3IuCisgICAgICAgIChUZXN0RnJlc2hu
ZXNzUGFnZS5wcm90b3R5cGUuX2ZldGNoVGVzdFJlc3VsdHMpOiBEZWxldGVkLgorICAgICAgICAo
VGVzdEZyZXNobmVzc1BhZ2UucHJvdG90eXBlLl9jb25zdHJ1Y3RUYWJsZUNlbGwpOiBEZWxldGVk
LgorCiAyMDE5LTEwLTA0ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbcGVyZiBkYXNoYm9hcmRdIFRlc3QgZnJlc3NuZXNzIHBvcG92ZXIgc29tZXRpbWVz
IHBvaW50IHRvIHdyb25nIHBsYWNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzCmluZGV4IGYzYTVlNjVlNTg3ZmEzZWM0NmRk
OTg3ODllNmE5NmVmN2UxMjc5Y2UuLjdlYTU4ZjQ2OTk4YTQ4NTgwYzY5OWFmZWZlN2VkNmFmMjNk
OTUwMzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9iYXNlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9iYXNlLmpzCkBAIC0yNDksMTIgKzI0OSwxNCBAQCBjbGFzcyBDb21wb25lbnRC
YXNlIGV4dGVuZHMgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGN1c3RvbUVsZW1lbnRz
LmRlZmluZShuYW1lLCBlbGVtZW50Q2xhc3MpOwogICAgIH0KIAotICAgIGNyZWF0ZUV2ZW50SGFu
ZGxlcihjYWxsYmFjaykgeyByZXR1cm4gQ29tcG9uZW50QmFzZS5jcmVhdGVFdmVudEhhbmRsZXIo
Y2FsbGJhY2spOyB9Ci0gICAgc3RhdGljIGNyZWF0ZUV2ZW50SGFuZGxlcihjYWxsYmFjaykKKyAg
ICBjcmVhdGVFdmVudEhhbmRsZXIoY2FsbGJhY2ssIHByZXZlbnREZWZhdWx0PXRydWUsIHN0b3BQ
cm9wYWdhdGlvbj10cnVlKSB7IHJldHVybiBDb21wb25lbnRCYXNlLmNyZWF0ZUV2ZW50SGFuZGxl
cihjYWxsYmFjaywgcHJldmVudERlZmF1bHQsIHN0b3BQcm9wYWdhdGlvbik7IH0KKyAgICBzdGF0
aWMgY3JlYXRlRXZlbnRIYW5kbGVyKGNhbGxiYWNrLCBwcmV2ZW50RGVmYXVsdD10cnVlLCBzdG9w
UHJvcGFnYXRpb249dHJ1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkKKyAg
ICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgaWYgKHN0
b3BQcm9wYWdhdGlvbikKKyAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsK
ICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgZXZlbnQpOwogICAgICAgICB9OwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy9mcmVzaG5lc3MtaW5kaWNhdG9yLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKaW5kZXggNGZiYjkyMGNl
MDYyNDRhMzEyMWRhYTk2ODU2Mjg1ZDk1OTA5NWI3YS4uODIxOTUzNmUxODI4MzFjMDQxYmM4ZDE4
NTUyZGE1OWFjZDQxNjcxOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3Iu
anMKQEAgLTEsMjAgKzEsMTggQEAKIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENv
bXBvbmVudEJhc2UgewotICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVz
dEFnZVRvbGVyYW5jZSwgc3VtbWFyeSwgdXJsKQorICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9p
bnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgc3VtbWFyeSkKICAgICB7CiAgICAgICAgIHN1
cGVyKCdmcmVzaG5lc3MtaW5kaWNhdG9yJyk7CiAgICAgICAgIHRoaXMuX2xhc3REYXRhUG9pbnRE
dXJhdGlvbiA9IGxhc3REYXRhUG9pbnREdXJhdGlvbjsKICAgICAgICAgdGhpcy5fdGVzdEFnZVRv
bGVyYW5jZSA9IHRlc3RBZ2VUb2xlcmFuY2U7Ci0gICAgICAgIHRoaXMuX3VybCA9IHVybDsKICAg
ICAgICAgdGhpcy5faGlnaGxpZ2h0ZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9yZW5kZXJJ
bmRpY2F0b3JMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVy
SW5kaWNhdG9yLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIHVwZGF0ZShsYXN0RGF0YVBvaW50
RHVyYXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIHVybCwgaGlnaGxpZ2h0ZWQpCisgICAgdXBkYXRl
KGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgaGlnaGxpZ2h0ZWQpCiAg
ICAgewogICAgICAgICB0aGlzLl9sYXN0RGF0YVBvaW50RHVyYXRpb24gPSBsYXN0RGF0YVBvaW50
RHVyYXRpb247CiAgICAgICAgIHRoaXMuX3Rlc3RBZ2VUb2xlcmFuY2UgPSB0ZXN0QWdlVG9sZXJh
bmNlOwotICAgICAgICB0aGlzLl91cmwgPSB1cmw7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVk
ID0gaGlnaGxpZ2h0ZWQ7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQpA
QCAtMjIsOCArMjAsMjAgQEAgY2xhc3MgRnJlc2huZXNzSW5kaWNhdG9yIGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCiAgICAgewogICAgICAgICBj
b25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRlbnQoJ2NvbnRhaW5lcicpOwotICAgICAgICBjb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ3NlbGVjdCcsIHRoaXMpKTsKLSAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1bnNlbGVjdCcpKTsK
KyAgICAgICAgbGV0IG1vdXNlSW5Vc2UgPSBmYWxzZTsKKyAgICAgICAgY29udGFpbmVyLm9ubW91
c2VlbnRlciA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rp
b24oJ3NlbGVjdCcsIHRoaXMpKTsKKyAgICAgICAgY29udGFpbmVyLm9ubW91c2Vkb3duID0gdGhp
cy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4gbW91c2VJblVzZSA9IHRydWUsIGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgIGNvbnRhaW5lci5vbmNsaWNrID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIo
KCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xpY2snLCAgdGhpcykpOworICAgICAgICBjb250
YWluZXIub25mb2N1cyA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHsKKyAgICAgICAg
ICAgIGlmICghbW91c2VJblVzZSkKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoQWN0aW9u
KCdmb2N1cycsICB0aGlzKTsKKyAgICAgICAgICAgIG1vdXNlSW5Vc2UgPSBmYWxzZTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZm9jdXMob3B0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b250ZW50KCdjb250YWluZXInKS5mb2N1cyhvcHRpb24pOwogICAgIH0KIAogICAgIHJlbmRlcigp
CkBAIC00Niw3ICs1Niw3IEBAIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENvbXBv
bmVudEJhc2UgewogICAgICAgICBjb25zdCByYXRpbmcgPSAxIC8gKDEgKyBNYXRoLmV4cChNYXRo
LmxvZygxLjIpICogKGhvdXJzU2luY2VMYXN0RGF0YVBvaW50IC0gdGVzdEFnZVRvbGVyYW5jZUlu
SG91cnMpKSk7CiAgICAgICAgIGNvbnN0IGh1ZSA9IE1hdGgucm91bmQoMTIwICogcmF0aW5nKTsK
ICAgICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IE1hdGgucm91bmQoMzAgKyA1MCAqIHJhdGluZyk7
Ci0gICAgICAgIGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgaHJl
ZjogdXJsLCBjbGFzczogaGlnaGxpZ2h0ZWQgPyAnaGlnaGxpZ2h0JyA6ICcnfSk7CisgICAgICAg
IGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgY2xhc3M6IGAke2hp
Z2hsaWdodGVkID8gJ2hpZ2hsaWdodCcgOiAnJ31gfSk7CiAKICAgICAgICAgaW5kaWNhdG9yLnN0
eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtodWV9LCAxMDAlLCAke2JyaWdodG5lc3N9JSlg
OwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdjb250YWluZXInKSwg
aW5kaWNhdG9yKTsKQEAgLTU0LDcgKzY0LDcgQEAgY2xhc3MgRnJlc2huZXNzSW5kaWNhdG9yIGV4
dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBgPGRpdiBpZD0nY29udGFpbmVyJz48L2Rpdj5gOworICAgICAgICBy
ZXR1cm4gYDxkaXYgaWQ9J2NvbnRhaW5lcicgdGFiSW5kZXg9JzAnPjwvZGl2PmA7CiAgICAgfQog
CiAgICAgc3RhdGljICBjc3NUZW1wbGF0ZSgpCkBAIC02NCw2ICs3NCwxNiBAQCBjbGFzcyBGcmVz
aG5lc3NJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBt
YXJnaW46IGF1dG87CiAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjhyZW07CiAgICAgICAgICAg
ICAgICAgd2lkdGg6IDEuOHJlbTsKKyAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGl2OmZvY3VzOjphZnRlciB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIgIjsKKyAg
ICAgICAgICAgICAgICB0b3A6IC0xLjFyZW07CisgICAgICAgICAgICAgICAgbGVmdDogMC42OHJl
bTsKKyAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAuMnJlbTsKKyAgICAgICAgICAgICAg
ICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJh
bnNwYXJlbnQgdHJhbnNwYXJlbnQgcmVkIHRyYW5zcGFyZW50OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYSB7CiAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNz
LXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL3Rlc3Qt
ZnJlc2huZXNzLXBhZ2UuanMKaW5kZXggZjA5MmRkYjliN2M1NDA3ZWY4NzdiMzIzOGMyODNkN2Mw
YWM3ZWQzNy4uMTVmMWZjODc0MzZjNTk4NGUwNWI5ZDRjNDUyNzQ1ODQ4ODllY2EyYSAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy90ZXN0LWZyZXNo
bmVzcy1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFn
ZXMvdGVzdC1mcmVzaG5lc3MtcGFnZS5qcwpAQCAtOSwyNyArOSwxOCBAQCBjbGFzcyBUZXN0RnJl
c2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIHRoaXMuX2xhc3RE
YXRhUG9pbnRCeUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9pbmRpY2F0b3JC
eUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9yZW5kZXJUYWJsZUxhemlseSA9
IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJUYWJsZS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBudWxsOwot
ICAgICAgICB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faG92
ZXJpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlw
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fYnVpbGRlckJ5SW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY29vcmRpbmF0ZUZv
ckluZGljYXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuX2luZGljYXRvckdyaWQgPSBudWxsOwor
ICAgICAgICB0aGlzLl9za2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9yZW5kZXJUb29sdGlwTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlclRvb2x0aXAuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fbG9hZENv
bmZpZyhzdW1tYXJ5UGFnZUNvbmZpZ3VyYXRpb24pOwogICAgIH0KIAotICAgIGRpZENvbnN0cnVj
dFNoYWRvd1RyZWUoKQotICAgIHsKLSAgICAgICAgY29uc3QgdG9vbHRpcFRhYmxlID0gdGhpcy5j
b250ZW50KCd0b29sdGlwLXRhYmxlJyk7Ci0gICAgICAgIHRvb2x0aXBUYWJsZS5hZGRFdmVudExp
c3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gewotICAgICAgICAgICAgdGhpcy5faG92ZXJpbmdU
b29sdGlwID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICB0b29sdGlwVGFibGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2
ZScsICgpID0+IHsKLSAgICAgICAgICAgIHRoaXMuX2hvdmVyaW5nVG9vbHRpcCA9IGZhbHNlOwot
ICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
CiAgICAgbmFtZSgpIHsgcmV0dXJuICdUZXN0LUZyZXNobmVzcyc7IH0KIAogICAgIF9sb2FkQ29u
ZmlnKHN1bW1hcnlQYWdlQ29uZmlndXJhdGlvbikKQEAgLTY4LDYgKzU5LDc3IEBAIGNsYXNzIFRl
c3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgc3VwZXIu
b3BlbihzdGF0ZSk7CiAgICAgfQogCisgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCisgICAg
eworICAgICAgICBzdXBlci5kaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCk7CisgICAgICAgIHRoaXMu
Y29udGVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5fY2xlYXJJbmRp
Y2F0b3JTdGF0ZShmYWxzZSkpOworICAgICAgICB0aGlzLmNvbnRlbnQoJ3Rvb2x0aXAtdGFibGUn
KS5vbmNsaWNrID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKCkgPT4ge30sIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgIGlmICghdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCAmJiAhdGhpcy5f
aG92ZXJpbmdJbmRpY2F0b3IpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyQnlJbmRp
Y2F0b3Iua2V5cygpLm5leHQoKS52YWx1ZS5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3QgW3JvdywgY29sdW1uXSA9IHRoaXMuX2Nvb3JkaW5hdGVGb3JJbmRpY2F0b3IuZ2V0KHRoaXMu
X2luZGljYXRvckZvclRvb2x0aXAgfHwgdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IpOworCisgICAg
ICAgICAgICBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dVcCcpIHsKKyAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRVcGRh
dGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbiwgcm93IC0gMSwgdGhpcy5faW5kaWNhdG9yR3JpZCwg
dGhpcy5jb25zdHJ1Y3Rvci5CT1RIX0RJUkVDVElPTlMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dEb3duJykgeworICAgICAgICAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZmluZEFu
ZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uLCByb3cgKyAxLCB0aGlzLl9pbmRpY2F0b3JH
cmlkLCB0aGlzLmNvbnN0cnVjdG9yLkJPVEhfRElSRUNUSU9OUyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChldmVudC5jb2RlID09ICdBcnJvd0xlZnQnKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2ZpbmRBbmRVcGRhdGVDbG9zZXN0SW5kaWNhdG9yKGNvbHVtbiAtIDEsIHJv
dywgdGhpcy5faW5kaWNhdG9yR3JpZCwgdGhpcy5jb25zdHJ1Y3Rvci5MRUZUX09OTFkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnQXJyb3dSaWdodCcpCisgICAgICAgICAg
ICAgICAgdGhpcy5fZmluZEFuZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uICsgMSwgcm93
LCB0aGlzLl9pbmRpY2F0b3JHcmlkLCB0aGlzLmNvbnN0cnVjdG9yLlJJR0hUX09OTFkpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZXZlbnQuY29kZSA9PSAnRW50ZXInKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSAhdGhpcy5fc2hvd1Rvb2x0aXA7CisgICAgICAgICAgICAg
ICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQu
Y29kZSA9PSAnRXNjYXBlJykgeworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBfZmluZEFuZFVwZGF0ZUNsb3Nlc3RJbmRpY2F0b3IoY29sdW1uSW5k
ZXgsIHJvd0luZGV4LCBncmlkLCBkaXJlY3Rpb24pCisgICAgeworICAgICAgICBjb25zdCBjbG9z
ZXN0SW5kaWNhdG9yID0gdGhpcy5fZmluZENsb3Nlc3RJbmRpY2F0b3JGb3JDb29yZGluYXRlKGNv
bHVtbkluZGV4LCByb3dJbmRleCwgZ3JpZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKCFjbG9z
ZXN0SW5kaWNhdG9yKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjbG9zZXN0SW5kaWNh
dG9yLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBfZmluZENsb3Nlc3RJbmRpY2F0b3JGb3JDb29yZGluYXRlKGNvbHVtbkluZGV4LCBy
b3dJbmRleCwgZ3JpZCwgZGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAgcm93SW5kZXggPSBNYXRo
Lm1pbihNYXRoLm1heChyb3dJbmRleCwgMCksIGdyaWQubGVuZ3RoIC0gMSk7CisgICAgICAgIGNv
bnN0IHJvdyA9IGdyaWRbcm93SW5kZXhdOworICAgICAgICBpZiAoIXJvdy5sZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKE1h
dGgubWF4KGNvbHVtbkluZGV4LCAwKSwgcm93Lmxlbmd0aCAtIDEpOworICAgICAgICBpZiAocm93
W3N0YXJ0XSkKKyAgICAgICAgICAgIHJldHVybiByb3dbc3RhcnRdOworCisgICAgICAgIGxldCBv
ZmZTZXQgPSAxOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY29uc3QgbGVm
dEluZGV4ID0gc3RhcnQgLSBvZmZTZXQ7CisgICAgICAgICAgICBpZiAobGVmdEluZGV4ID49IDAg
JiYgcm93W2xlZnRJbmRleF0gJiYgZGlyZWN0aW9uICE9IHRoaXMuY29uc3RydWN0b3IuUklHSFRf
T05MWSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm93W2xlZnRJbmRleF07CisgICAgICAgICAg
ICBjb25zdCByaWdodEluZGV4ID0gc3RhcnQgKyBvZmZTZXQ7CisgICAgICAgICAgICBpZiAocmln
aHRJbmRleCA8IHJvdy5sZW5ndGggJiYgcm93W3JpZ2h0SW5kZXhdICYmIGRpcmVjdGlvbiAhPSB0
aGlzLmNvbnN0cnVjdG9yLkxFRlRfT05MWSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm93W3Jp
Z2h0SW5kZXhdOworICAgICAgICAgICAgaWYgKGxlZnRJbmRleCA8IDAgJiYgcmlnaHRJbmRleCA+
PSByb3cubGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgb2ZmU2V0
ICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCiAgICAgX2Zl
dGNoVGVzdFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRj
aFRpbWUgPSBEYXRlLm5vdygpOwpAQCAtMTIzLDM2ICsxODUsNDUgQEAgY2xhc3MgVGVzdEZyZXNo
bmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogCiAgICAgICAgIHRoaXMuX3JlbmRl
clRhYmxlTGF6aWx5LmV2YWx1YXRlKHRoaXMuX3BsYXRmb3JtcywgdGhpcy5fbWV0cmljcyk7CiAK
LSAgICAgICAgbGV0IGJ1aWxkU3VtbWFyeUZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9y
ID0gbnVsbDsKLSAgICAgICAgbGV0IGJ1aWxkRm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0
b3IgPSBudWxsOwotICAgICAgICBsZXQgY29tbWl0U2V0Rm9yQ3VycmVudEhpZ2hsaWdodGVkSW5k
aWNhdG9yID0gbnVsbDsKLSAgICAgICAgY29uc3QgYnVpbGRlckZvckN1cnJlbnRseUhpZ2hsaWdo
dGVkSW5kaWNhdG9yID0gdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPyB0aGlz
Ll9idWlsZGVyQnlJbmRpY2F0b3IuZ2V0KHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNh
dG9yKSA6IG51bGw7CisgICAgICAgIGxldCBidWlsZFN1bW1hcnlGb3JGb2N1c2luZ0luZGljYXRv
ciA9IG51bGw7CisgICAgICAgIGxldCBidWlsZEZvckZvY3VzaW5nSW5kaWNhdG9yID0gbnVsbDsK
KyAgICAgICAgbGV0IGNvbW1pdFNldEZvckZvY3VzaW5nZEluZGljYXRvciA9IG51bGw7CisgICAg
ICAgIGxldCBjaGFydFVSTEZvckZvY3VzaW5nSW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgbGV0
IHBsYXRmb3JtRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBsZXQgbWV0cmlj
Rm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBjb25zdCBidWlsZGVyRm9yRm9j
dXNpbmdJbmRpY2F0b3IgPSB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwID8gdGhpcy5fYnVpbGRl
ckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwKSA6IG51bGw7CisgICAg
ICAgIGNvbnN0IGJ1aWxkZXJGb3JIb3ZlcmluZ0luZGljYXRvciA9IHRoaXMuX2hvdmVyaW5nSW5k
aWNhdG9yID8gdGhpcy5fYnVpbGRlckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9ob3ZlcmluZ0luZGlj
YXRvcikgOiBudWxsOwogICAgICAgICBmb3IgKGNvbnN0IFtwbGF0Zm9ybSwgbGFzdERhdGFQb2lu
dEJ5TWV0cmljXSBvZiB0aGlzLl9sYXN0RGF0YVBvaW50QnlDb25maWd1cmF0aW9uLmVudHJpZXMo
KSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBbbWV0cmljLCBsYXN0RGF0YVBvaW50XSBvZiBs
YXN0RGF0YVBvaW50QnlNZXRyaWMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
dGltZUR1cmF0aW9uID0gdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUgLSBsYXN0RGF0YVBv
aW50LnRpbWU7CiAgICAgICAgICAgICAgICAgY29uc3QgdGltZUR1cmF0aW9uU3VtbWFyeVByZWZp
eCA9IGxhc3REYXRhUG9pbnQuaGFzQ3VycmVudERhdGFQb2ludCA/ICcnIDogJ01vcmUgdGhhbiAn
OwogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEdXJhdGlvblN1bW1hcnkgPSBCdWlsZFJlcXVl
c3QuZm9ybWF0VGltZUludGVydmFsKHRpbWVEdXJhdGlvbik7CiAgICAgICAgICAgICAgICAgY29u
c3Qgc3VtbWFyeSA9IGAke3RpbWVEdXJhdGlvblN1bW1hcnlQcmVmaXh9JHt0aW1lRHVyYXRpb25T
dW1tYXJ5fSBzaW5jZSBsYXRlc3QgZGF0YSBwb2ludC5gOwotICAgICAgICAgICAgICAgIGNvbnN0
IHVybCA9IHRoaXMuX3JvdXRlci51cmwoJ2NoYXJ0cycsIENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVG
b3JEYXNoYm9hcmRJdGVtKHBsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpLAotICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9tZWFzdXJlbWVudFNldEZldGNoVGltZSAtIHRoaXMuX3RpbWVEdXJhdGlv
bikpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yID0gdGhpcy5faW5kaWNhdG9y
QnlDb25maWd1cmF0aW9uLmdldChwbGF0Zm9ybSkuZ2V0KG1ldHJpYyk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yICYmIHRoaXMuX2N1cnJl
bnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID09PSBpbmRpY2F0b3IpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYnVpbGRTdW1tYXJ5Rm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBzdW1t
YXJ5OwotICAgICAgICAgICAgICAgICAgICBidWlsZEZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5k
aWNhdG9yID0gbGFzdERhdGFQb2ludC5sYXN0QnVpbGQ7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bW1pdFNldEZvckN1cnJlbnRIaWdobGlnaHRlZEluZGljYXRvciA9IGxhc3REYXRhUG9pbnQuY29t
bWl0U2V0T2ZMYXN0UG9pbnQ7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGljYXRvckZv
clRvb2x0aXAgJiYgdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA9PT0gaW5kaWNhdG9yKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkU3VtbWFyeUZvckZvY3VzaW5nSW5kaWNhdG9yID0gc3Vt
bWFyeTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRGb3JGb2N1c2luZ0luZGljYXRvciA9IGxh
c3REYXRhUG9pbnQubGFzdEJ1aWxkOworICAgICAgICAgICAgICAgICAgICBjb21taXRTZXRGb3JG
b2N1c2luZ2RJbmRpY2F0b3IgPSBsYXN0RGF0YVBvaW50LmNvbW1pdFNldE9mTGFzdFBvaW50Owor
ICAgICAgICAgICAgICAgICAgICBjaGFydFVSTEZvckZvY3VzaW5nSW5kaWNhdG9yID0gIHRoaXMu
X3JvdXRlci51cmwoJ2NoYXJ0cycsIENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVGb3JEYXNoYm9hcmRJ
dGVtKHBsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUgLSB0aGlzLl90aW1lRHVyYXRpb24pKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGxhdGZvcm1Gb3JGb2N1c2luZ0luZGljYXRvciA9IHBsYXRmb3Jt
OworICAgICAgICAgICAgICAgICAgICBtZXRyaWNGb3JGb2N1c2luZ0luZGljYXRvciA9IG1ldHJp
YzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGhpcy5fYnVpbGRlckJ5SW5k
aWNhdG9yLnNldChpbmRpY2F0b3IsIGxhc3REYXRhUG9pbnQuYnVpbGRlcik7Ci0gICAgICAgICAg
ICAgICAgaW5kaWNhdG9yLnVwZGF0ZSh0aW1lRHVyYXRpb24sIHRoaXMuX3Rlc3RBZ2VUb2xlcmFu
Y2UsIHVybCwgYnVpbGRlckZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yICYmIGJ1aWxk
ZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9PT0gbGFzdERhdGFQb2ludC5idWls
ZGVyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBoaWdobGlnaHRlZCA9IGJ1aWxkZXJGb3JGb2N1
c2luZ0luZGljYXRvciAmJiBidWlsZGVyRm9yRm9jdXNpbmdJbmRpY2F0b3IgPT0gbGFzdERhdGFQ
b2ludC5idWlsZGVyCisgICAgICAgICAgICAgICAgICAgIHx8IGJ1aWxkZXJGb3JIb3ZlcmluZ0lu
ZGljYXRvciAmJiBidWlsZGVyRm9ySG92ZXJpbmdJbmRpY2F0b3IgPT09IGxhc3REYXRhUG9pbnQu
YnVpbGRlcjsKKyAgICAgICAgICAgICAgICBpbmRpY2F0b3IudXBkYXRlKHRpbWVEdXJhdGlvbiwg
dGhpcy5fdGVzdEFnZVRvbGVyYW5jZSwgaGlnaGxpZ2h0ZWQpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIHRoaXMuX3JlbmRlclRvb2x0aXBMYXppbHkuZXZhbHVhdGUodGhpcy5f
Y3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIHRoaXMuX2hvdmVyaW5nVG9vbHRpcCwgYnVp
bGRTdW1tYXJ5Rm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIGJ1aWxkRm9yQ3VycmVu
dGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIGNvbW1pdFNldEZvckN1cnJlbnRIaWdobGlnaHRlZElu
ZGljYXRvcik7CisgICAgICAgIHRoaXMuX3JlbmRlclRvb2x0aXBMYXppbHkuZXZhbHVhdGUodGhp
cy5faW5kaWNhdG9yRm9yVG9vbHRpcCwgdGhpcy5fc2hvd1Rvb2x0aXAsIGJ1aWxkU3VtbWFyeUZv
ckZvY3VzaW5nSW5kaWNhdG9yLCBidWlsZEZvckZvY3VzaW5nSW5kaWNhdG9yLAorICAgICAgICAg
ICAgY29tbWl0U2V0Rm9yRm9jdXNpbmdkSW5kaWNhdG9yLCBjaGFydFVSTEZvckZvY3VzaW5nSW5k
aWNhdG9yLCBwbGF0Zm9ybUZvckZvY3VzaW5nSW5kaWNhdG9yLCBtZXRyaWNGb3JGb2N1c2luZ0lu
ZGljYXRvcik7CiAgICAgfQogCi0gICAgX3JlbmRlclRvb2x0aXAoaW5kaWNhdG9yLCBob3Zlcmlu
Z1Rvb2x0aXAsIGJ1aWxkU3VtbWFyeSwgYnVpbGQsIGNvbW1pdFNldCkKKyAgICBfcmVuZGVyVG9v
bHRpcChpbmRpY2F0b3IsIHNob3dUb29sdGlwLCBidWlsZFN1bW1hcnksIGJ1aWxkLCBjb21taXRT
ZXQsIGNoYXJ0VVJMLCBwbGF0Zm9ybSwgbWV0cmljKQogICAgIHsKLSAgICAgICAgaWYgKCFpbmRp
Y2F0b3IgfHwgIWJ1aWxkU3VtbWFyeSkgewotICAgICAgICAgICAgdGhpcy5jb250ZW50KCd0b29s
dGlwLWFuY2hvcicpLnN0eWxlLmRpc3BsYXkgPSBob3ZlcmluZ1Rvb2x0aXAgPyBudWxsIDogJ25v
bmUnOworICAgICAgICBpZiAoIWluZGljYXRvciB8fCAhYnVpbGRTdW1tYXJ5IHx8ICFzaG93VG9v
bHRpcCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50KCd0b29sdGlwLWFuY2hvcicpLnN0eWxl
LmRpc3BsYXkgPSAgc2hvd1Rvb2x0aXAgPyBudWxsIDogJ25vbmUnOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNy
ZWF0ZUVsZW1lbnQ7CkBAIC0xNjYsNiArMjM3LDE0IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdl
IGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKIAogICAgICAgICBsZXQgdGFibGVDb250ZW50ID0g
W2VsZW1lbnQoJ3RyJywgZWxlbWVudCgndGQnLCB7Y29sc3BhbjogMn0sIGJ1aWxkU3VtbWFyeSkp
XTsKIAorICAgICAgICBpZiAoY2hhcnRVUkwpIHsKKyAgICAgICAgICAgIGNvbnN0IGxpbmtEZXNj
cmlwdGlvbiA9IGAke21ldHJpYy50ZXN0KCkubmFtZSgpfSBvbiAke3BsYXRmb3JtLm5hbWUoKX1g
OworICAgICAgICAgICAgdGFibGVDb250ZW50LnB1c2goZWxlbWVudCgndHInLCBbCisgICAgICAg
ICAgICAgICAgZWxlbWVudCgndGQnLCAnQ2hhcnQnKSwKKyAgICAgICAgICAgICAgICBlbGVtZW50
KCd0ZCcsIHtjb2xzcGFuOiAyfSwgbGluayhsaW5rRGVzY3JpcHRpb24sIGxpbmtEZXNjcmlwdGlv
biwgY2hhcnRVUkwsIHRydWUpKQorICAgICAgICAgICAgXSkpOworICAgICAgICB9CisKICAgICAg
ICAgaWYgKGNvbW1pdFNldCkgewogICAgICAgICAgICAgaWYgKGNvbW1pdFNldC5yZXBvc2l0b3Jp
ZXMoKS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgdGFibGVDb250ZW50LnB1c2goZWxlbWVudCgn
dHInLCBlbGVtZW50KCd0aCcsIHtjb2xzcGFuOiAyfSwgJ0xhdGVzdCBidWlsZCBpbmZvcm1hdGlv
bicpKSk7CkBAIC0yMDMsMTQgKzI4MiwyMyBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICB0YWJsZUhlYWRFbGVtZW50cy5wdXNo
KGVsZW1lbnQoJ3RoJywge2NsYXNzOiAnZGlhZ29uYWwtaGVhZCd9LCBlbGVtZW50KCdkaXYnLCBt
ZXRyaWMudGVzdCgpLmZ1bGxOYW1lKCkpKSk7CiAKICAgICAgICAgdGhpcy5faW5kaWNhdG9yQnlD
b25maWd1cmF0aW9uID0gbmV3IE1hcDsKLSAgICAgICAgZm9yIChjb25zdCBwbGF0Zm9ybSBvZiBw
bGF0Zm9ybXMpIHsKKyAgICAgICAgdGhpcy5fY29vcmRpbmF0ZUZvckluZGljYXRvciA9IG5ldyBN
YXA7CisgICAgICAgIHRoaXMuX2luZGljYXRvckdyaWQgPSBbXTsKKworICAgICAgICBwbGF0Zm9y
bXMuZm9yRWFjaCgocGxhdGZvcm0sIHJvd0luZGV4KSA9PiAgewogICAgICAgICAgICAgY29uc3Qg
aW5kaWNhdG9yQnlNZXRyaWMgPSBuZXcgTWFwOwogICAgICAgICAgICAgdGhpcy5faW5kaWNhdG9y
QnlDb25maWd1cmF0aW9uLnNldChwbGF0Zm9ybSwgaW5kaWNhdG9yQnlNZXRyaWMpOworCisgICAg
ICAgICAgICBsZXQgaW5kaWNhdG9yc0luQ3VycmVudFJvdyA9IFtdOwogICAgICAgICAgICAgdGFi
bGVCb2R5RWxlbWVudC5wdXNoKGVsZW1lbnQoJ3RyJywKLSAgICAgICAgICAgICAgICBbZWxlbWVu
dCgndGgnLCB7Y2xhc3M6ICdyb3ctaGVhZCd9LCBwbGF0Zm9ybS5sYWJlbCgpKSwgLi4ubWV0cmlj
cy5tYXAoKG1ldHJpYykgPT4gdGhpcy5fY29uc3RydWN0VGFibGVDZWxsKHBsYXRmb3JtLCBtZXRy
aWMsIGluZGljYXRvckJ5TWV0cmljKSldKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBb
ZWxlbWVudCgndGgnLCB7Y2xhc3M6ICdyb3ctaGVhZCd9LCBwbGF0Zm9ybS5sYWJlbCgpKSwgLi4u
bWV0cmljcy5tYXAoKG1ldHJpYywgY29sdW1uSW5kZXgpID0+IHRoaXMuX2NvbnN0cnVjdFRhYmxl
Q2VsbChwbGF0Zm9ybSwgbWV0cmljLCByb3dJbmRleCwgY29sdW1uSW5kZXgsIGluZGljYXRvckJ5
TWV0cmljLCBpbmRpY2F0b3JzSW5DdXJyZW50Um93LCB0aGlzLl9jb29yZGluYXRlRm9ySW5kaWNh
dG9yKSldKSk7CisgICAgICAgICAgICB0aGlzLl9pbmRpY2F0b3JHcmlkLnB1c2goaW5kaWNhdG9y
c0luQ3VycmVudFJvdyk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnN0IHRhYmxlQm9keSA9
IGVsZW1lbnQoJ3Rib2R5JywgdGFibGVCb2R5RWxlbWVudCk7CisgICAgICAgIHRhYmxlQm9keS5h
ZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9jbGVhckluZGljYXRvclN0YXRl
KHRydWUpKTsKIAotICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCd0ZXN0
LWhlYWx0aCcpLCBbZWxlbWVudCgndGhlYWQnLCB0YWJsZUhlYWRFbGVtZW50cyksIGVsZW1lbnQo
J3Rib2R5JywgdGFibGVCb2R5RWxlbWVudCldKTsKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNl
KHRoaXMuY29udGVudCgndGVzdC1oZWFsdGgnKSwgW2VsZW1lbnQoJ3RoZWFkJywgdGFibGVIZWFk
RWxlbWVudHMpLCB0YWJsZUJvZHldKTsKICAgICB9CiAKICAgICBfaXNWYWxpZFBsYXRmb3JtTWV0
cmljQ29tYmluYXRpb24ocGxhdGZvcm0sIG1ldHJpYykKQEAgLTIyMCwyNCArMzA4LDUwIEBAIGNs
YXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAg
ICAgICYmIHBsYXRmb3JtLmhhc01ldHJpYyhtZXRyaWMpOwogICAgIH0KIAotICAgIF9jb25zdHJ1
Y3RUYWJsZUNlbGwocGxhdGZvcm0sIG1ldHJpYywgaW5kaWNhdG9yQnlNZXRyaWMpCisgICAgX2Nv
bnN0cnVjdFRhYmxlQ2VsbChwbGF0Zm9ybSwgbWV0cmljLCByb3dJbmRleCwgY29sdW1uSW5kZXgs
IGluZGljYXRvckJ5TWV0cmljLCBpbmRpY2F0b3JzSW5DdXJyZW50Um93LCBjb29yZGluYXRlRm9y
SW5kaWNhdG9yKQogICAgIHsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2Uu
Y3JlYXRlRWxlbWVudDsKIAotICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWRQbGF0Zm9ybU1ldHJp
Y0NvbWJpbmF0aW9uKHBsYXRmb3JtLCBtZXRyaWMpKQorICAgICAgICBpZiAoIXRoaXMuX2lzVmFs
aWRQbGF0Zm9ybU1ldHJpY0NvbWJpbmF0aW9uKHBsYXRmb3JtLCBtZXRyaWMpKSB7CisgICAgICAg
ICAgICBpbmRpY2F0b3JzSW5DdXJyZW50Um93LnB1c2gobnVsbCk7CiAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudCgndGQnLCB7Y2xhc3M6ICdibGFuay1jZWxsJ30sIGVsZW1lbnQoJ2RpdicpKTsK
KyAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IG5ldyBGcmVzaG5lc3NJbmRp
Y2F0b3I7CiAgICAgICAgIGluZGljYXRvci5saXN0ZW5Ub0FjdGlvbignc2VsZWN0JywgKG9yaWdp
bmF0b3IpID0+IHsKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNh
dG9yID0gb3JpZ2luYXRvcjsKKyAgICAgICAgICAgIHRoaXMuX2hvdmVyaW5nSW5kaWNhdG9yID0g
b3JpZ2luYXRvcjsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAg
IH0pOwotICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24oJ3Vuc2VsZWN0JywgKCkgPT4g
ewotICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBudWxs
OworICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24oJ2ZvY3VzJywgKG9yaWdpbmF0b3Ip
ID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgPSB0aGlzLl9ob3Zl
cmluZ0luZGljYXRvciA9IG9yaWdpbmF0b3I7CisgICAgICAgICAgICB0aGlzLl9za2lwTmV4dFN0
YXRlQ2xlYW5PblNjcm9sbCA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRl
cigpOwogICAgICAgICB9KTsKKyAgICAgICAgaW5kaWNhdG9yLmxpc3RlblRvQWN0aW9uKCdjbGlj
aycsIChvcmlnaW5hdG9yKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcCA9ICF0
aGlzLl9zaG93VG9vbHRpcCB8fCB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwICE9IG9yaWdpbmF0
b3I7CisgICAgICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IG9yaWdpbmF0b3I7Cisg
ICAgICAgICAgICB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwID0gb3JpZ2luYXRvcjsKKyAgICAg
ICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0pOworCiAgICAgICAgIGlu
ZGljYXRvckJ5TWV0cmljLnNldChtZXRyaWMsIGluZGljYXRvcik7Ci0gICAgICAgIHJldHVybiBl
bGVtZW50KCd0ZCcsIHtjbGFzczogJ3N0YXR1cy1jZWxsJ30sIGluZGljYXRvcik7CisgICAgICAg
IGNvb3JkaW5hdGVGb3JJbmRpY2F0b3Iuc2V0KGluZGljYXRvciwgW3Jvd0luZGV4LCBjb2x1bW5J
bmRleF0pOworICAgICAgICBpbmRpY2F0b3JzSW5DdXJyZW50Um93LnB1c2goaW5kaWNhdG9yKTsK
KyAgICAgICAgY29uc3QgaW5kaWNhdG9yQ2VsbCA9IGVsZW1lbnQoJ3RkJywge2NsYXNzOiAnc3Rh
dHVzLWNlbGwnfSwgaW5kaWNhdG9yKTsKKyAgICAgICAgcmV0dXJuIGluZGljYXRvckNlbGw7Cisg
ICAgfQorCisgICAgX2NsZWFySW5kaWNhdG9yU3RhdGUoZHVlVG9TY3JvbGwpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fc2tpcE5leHRTdGF0ZUNsZWFuT25TY3JvbGwpIHsKKyAgICAgICAgICAg
IHRoaXMuX3NraXBOZXh0U3RhdGVDbGVhbk9uU2Nyb2xsID0gZmFsc2U7CisgICAgICAgICAgICBp
ZiAoZHVlVG9TY3JvbGwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIHRoaXMuX3Nob3dUb29sdGlwID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2luZGljYXRvckZv
clRvb2x0aXAgPSBudWxsOworICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IG51bGw7
CisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGh0
bWxUZW1wbGF0ZSgpCkBAIC0zNDksOCArNDYzLDggQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2Ug
ZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAgI3Rvb2x0aXAtdGFibGUgewog
ICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICB3aWR0
aDogMjJyZW07Ci0gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzM0NDk1RTsKLSAg
ICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk7CisgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogIzY5Njk2OTsKKyAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk2OwogICAgICAgICAg
ICAgICAgIG1hcmdpbjogMC4zcmVtOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuM3JlbTsK
ICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjRyZW07CkBAIC0zNzQsMTAgKzQ4OCwx
MCBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAg
ICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0wLjNyZW07CiAgICAgICAgICAgICAgICAgYm9y
ZGVyLXdpZHRoOiAwLjNyZW07CiAgICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsK
LSAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICMzNDQ5NUUgdHJhbnNwYXJlbnQgdHJhbnNw
YXJlbnQgdHJhbnNwYXJlbnQ7CisgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5
IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgI3Rvb2x0aXAtdGFibGUgYSB7Ci0gICAgICAgICAgICAgICAgY29sb3I6ICNCMDNB
MkU7CisgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICAgICAgIGZvbnQt
d2VpZ2h0OiBib2xkOwogICAgICAgICAgICAgfQogICAgICAgICBgOwpAQCAtMzg1LDMgKzQ5OSw2
IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKIAog
ICAgIHJvdXRlTmFtZSgpIHsgcmV0dXJuICd0ZXN0LWZyZXNobmVzcyc7IH0KIH0KK1Rlc3RGcmVz
aG5lc3NQYWdlLkxFRlRfT05MWSA9IC0xOworVGVzdEZyZXNobmVzc1BhZ2UuUklHSFRfT05MWSA9
IDE7CitUZXN0RnJlc2huZXNzUGFnZS5CT1RIX0RJUkVDVElPTlMgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380491</attachid>
            <date>2019-10-08 18:49:33 -0700</date>
            <delta_ts>2019-10-09 17:52:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202684-20191008184932.patch</filename>
            <type>text/plain</type>
            <size>27037</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODE1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzYjE5NjQxYWEwODljNjdlYTMyZjA2Yjk3NGVhYjc5ZDAzNWViNDkxLi4zYzRkYzUwMGI3
OWQ2MWViZTUzNTdhNWQxMWZmYTQ0ZjIxN2NiYjU2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0xMC0wOCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHRlc3QgZnJlc2huZXNzIHBhZ2UgaW50ZXJh
Y3Rpb24gZXhwZXJpZW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0ZXN0IGZyZXNobmVzcyBwYWdlIHNob3cgdG9vbHRpcCBvbiBjbGlj
ayBpbnN0ZWFkIG9mIHBvcHVwaW5nIG9uIG1vdXNlIGhvdmVyLgorICAgICAgICBBbmQgY2xpY2tp
bmcgYW55d2hlcmUgaW4gJ3BhZ2Utd2l0aC1oZWFkaW5nJyBzZWN0aW9uIGV4Y2VwdCB0aGUgdG9v
bHRpcCBjYW4gZGlzbWlzcyB0b29sdGlwLgorICAgICAgICBBZGQga2V5Ym9hcmQgc3VwcG9ydCB0
byBtb3ZlIGZvY3VzIGFyb3VuZCBpbmNsdWRpbmcgJ1RhYicga2V5IHN1cHBvcnQuCisgICAgICAg
IEFkZCBzdXBwb3J0IHRvIHVzZSAnRW50ZXInIGtleSB0byBzaG93IG9yIGRpc21pc3MgdG9vbHRp
cC4KKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gdXNlICdFc2NhcGUnIGtleSB0byBkaXNtaXNzIHRv
b2x0aXAuCisKKyAgICAgICAgKiBwdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5q
czogQWRkZWQgc3VwcG9ydCBmb3IgbGluayB0byBzcGVjaWZ5ICd0YWJpbmRleCcuCisgICAgICAg
IChDb21tb25Db21wb25lbnRCYXNlLnByb3RvdHlwZS5jcmVhdGVMaW5rKToKKyAgICAgICAgKENv
bW1vbkNvbXBvbmVudEJhc2UuY3JlYXRlTGluayk6CisgICAgICAgIChDb21tb25Db21wb25lbnRC
YXNlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzOiBBZGRlZCBzdXBw
b3J0IGZvciBjdXN0b21pemluZyB3aGV0aGVyIG9yIG5vdCBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0
b3AgcHJvcGFnYXRpb24KKyAgICAgICAgd2hpbGUgY3JlYXRpbmcgZXZlbnQgaGFuZGxlci4KKyAg
ICAgICAgKENvbXBvbmVudEJhc2UucHJvdG90eXBlLmNyZWF0ZUV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChDb21wb25lbnRCYXNlLmNyZWF0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb21wb25l
bnRCYXNlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9mcmVzaG5lc3MtaW5kaWNh
dG9yLmpzOgorICAgICAgICAoRnJlc2huZXNzSW5kaWNhdG9yKTogUmVtb3ZlZCAndXJsJyBwcm9w
ZXJ0eSBhbmQgcmVtb3ZlZCBjdXN0b21pemF0aW9uIGZvciBtb3VzZSBldmVudC4KKyAgICAgICAg
KEZyZXNobmVzc0luZGljYXRvci5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKEZyZXNobmVz
c0luZGljYXRvci5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcHVibGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNzLXBhZ2UuanM6CisgICAgICAg
IChUZXN0RnJlc2huZXNzUGFnZSk6IENoYW5nZWQgdG8gc2hvdyB0b29sdGlwIG9uIGNsaWNrIGFu
ZCBhZGRlZCBrZXkgYm9hcmQgZXZlbnQuCisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90
b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6IEFkZGVkIGtleSBldmVudCBzdXBwb3J0Lgor
ICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UucHJvdG90eXBlLl9maW5kQW5kRm9jdXNPbkNsb3Nl
c3RJbmRpY2F0b3JDZWxsKToKKyAgICAgICAgKFRlc3RGcmVzaG5lc3NQYWdlLnByb3RvdHlwZS5f
ZmluZENsb3Nlc3RJbmRpY2F0b3JDZWxsRm9yQ29vcmRpbmF0ZSk6CisgICAgICAgIChUZXN0RnJl
c2huZXNzUGFnZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFRlc3RGcmVzaG5lc3NQYWdl
LnByb3RvdHlwZS5fcmVuZGVyVG9vbHRpcCk6CisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5w
cm90b3R5cGUuX2NvbnN0cnVjdFRhYmxlQ2VsbCk6IEFkZGVkIHRhYkluZGV4IGZvciBlYWNoIGNl
bGwgdGhhdCBjb250YWlucyBmcmVzaG5lc3MgaW5kaWNhdG9yLgorICAgICAgICAoVGVzdEZyZXNo
bmVzc1BhZ2UucHJvdG90eXBlLl9jb25maWd1cmVDb250YWluZXJDZWxsRm9ySW5kaWNhdG9yKTog
QWRkZWQgZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBjZWxsLgorICAgICAgICAoVGVzdEZyZXNobmVz
c1BhZ2UucHJvdG90eXBlLl9jbGVhckluZGljYXRvclN0YXRlKToKKyAgICAgICAgKFRlc3RGcmVz
aG5lc3NQYWdlLmNzc1RlbXBsYXRlKTogQ2hhbmdlZCB0aGUgY29sb3Igb2YgbGlua3MgaW4gdG9v
bHRpcCB0byBhIG1vcmUgcmVhZGFibGUgY29sb3IuCisgICAgICAgIEFkZGVkIHN0eWxlcyB3aGVu
IHN0YXR1cyBjZWxsIGFuZCBsaW5rcyBvbiB0b29sdGlwIGFyZSBmb2N1c2VkLgorCiAyMDE5LTEw
LTA0ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbcGVy
ZiBkYXNoYm9hcmRdIFRlc3QgZnJlc3NuZXNzIHBvcG92ZXIgc29tZXRpbWVzIHBvaW50IHRvIHdy
b25nIHBsYWNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3No
YXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3NoYXJlZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKaW5kZXggNzk5MTEzZjVlN2Uz
YmRhMGRmNjQ5Y2NiZmI5ZjY2MWQ5YjE2MGY4Yy4uYzU2ZTJiMDA5MTcxOGMwOTA3Mjc3MTYyNDQ1
ZjdjOWVlN2E0ODkyZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcwpAQCAtMTM1LDEy
ICsxMzUsMTIgQEAgY2xhc3MgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICBlbGVt
ZW50LmFwcGVuZENoaWxkKENvbW1vbkNvbXBvbmVudEJhc2UuX2NvbnRleHQuY3JlYXRlVGV4dE5v
ZGUoY29udGVudCkpOwogICAgIH0KIAotICAgIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNh
bGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCkKKyAgICBjcmVhdGVMaW5rKGNvbnRlbnQsIHRp
dGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCiAgICAg
ewotICAgICAgICByZXR1cm4gQ29tbW9uQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rKGNvbnRlbnQs
IHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwpOworICAgICAgICByZXR1cm4g
Q29tbW9uQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywg
Y2FsbGJhY2ssIGlzRXh0ZXJuYWwsIHRhYkluZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3Jl
YXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ssIGNhbGxiYWNrLCBpc0V4dGVybmFsKQor
ICAgIHN0YXRpYyBjcmVhdGVMaW5rKGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ss
IGlzRXh0ZXJuYWwsIHRhYkluZGV4PW51bGwpCiAgICAgewogICAgICAgICB2YXIgdGl0bGUgPSB0
aXRsZU9yQ2FsbGJhY2s7CiAgICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7CkBA
IC0xNTMsNiArMTUzLDkgQEAgY2xhc3MgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgICAg
ICB0aXRsZTogdGl0bGUsCiAgICAgICAgIH07CiAKKyAgICAgICAgaWYgKHRhYkluZGV4KQorICAg
ICAgICAgICAgYXR0cmlidXRlc1sndGFiaW5kZXgnXSA9IHRhYkluZGV4OworCiAgICAgICAgIGlm
ICh0eXBlb2YoY2FsbGJhY2spID09PSAnc3RyaW5nJykKICAgICAgICAgICAgIGF0dHJpYnV0ZXNb
J2hyZWYnXSA9IGNhbGxiYWNrOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzCmluZGV4IGYzYTVlNjVl
NTg3ZmEzZWM0NmRkOTg3ODllNmE5NmVmN2UxMjc5Y2UuLjdlYTU4ZjQ2OTk4YTQ4NTgwYzY5OWFm
ZWZlN2VkNmFmMjNkOTUwMzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzCkBAIC0yNDksMTIgKzI0OSwxNCBAQCBjbGFz
cyBDb21wb25lbnRCYXNlIGV4dGVuZHMgQ29tbW9uQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIGN1
c3RvbUVsZW1lbnRzLmRlZmluZShuYW1lLCBlbGVtZW50Q2xhc3MpOwogICAgIH0KIAotICAgIGNy
ZWF0ZUV2ZW50SGFuZGxlcihjYWxsYmFjaykgeyByZXR1cm4gQ29tcG9uZW50QmFzZS5jcmVhdGVF
dmVudEhhbmRsZXIoY2FsbGJhY2spOyB9Ci0gICAgc3RhdGljIGNyZWF0ZUV2ZW50SGFuZGxlcihj
YWxsYmFjaykKKyAgICBjcmVhdGVFdmVudEhhbmRsZXIoY2FsbGJhY2ssIHByZXZlbnREZWZhdWx0
PXRydWUsIHN0b3BQcm9wYWdhdGlvbj10cnVlKSB7IHJldHVybiBDb21wb25lbnRCYXNlLmNyZWF0
ZUV2ZW50SGFuZGxlcihjYWxsYmFjaywgcHJldmVudERlZmF1bHQsIHN0b3BQcm9wYWdhdGlvbik7
IH0KKyAgICBzdGF0aWMgY3JlYXRlRXZlbnRIYW5kbGVyKGNhbGxiYWNrLCBwcmV2ZW50RGVmYXVs
dD10cnVlLCBzdG9wUHJvcGFnYXRpb249dHJ1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAg
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIGlmIChwcmV2ZW50
RGVmYXVsdCkKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAg
ICAgICAgaWYgKHN0b3BQcm9wYWdhdGlvbikKKyAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJv
cGFnYXRpb24oKTsKICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgZXZlbnQpOwogICAg
ICAgICB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvY29tcG9uZW50cy9mcmVzaG5lc3MtaW5kaWNhdG9yLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKaW5k
ZXggNGZiYjkyMGNlMDYyNDRhMzEyMWRhYTk2ODU2Mjg1ZDk1OTA5NWI3YS4uYTA0Nzg0YmUyMmQw
OTk0YTRkMjYxYTc0ZjI5MTU4ZDU3Y2RmMGQ3OCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVzcy1pbmRpY2F0b3IuanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ZyZXNobmVz
cy1pbmRpY2F0b3IuanMKQEAgLTEsMzEgKzEsMjIgQEAKIGNsYXNzIEZyZXNobmVzc0luZGljYXRv
ciBleHRlbmRzIENvbXBvbmVudEJhc2UgewotICAgIGNvbnN0cnVjdG9yKGxhc3REYXRhUG9pbnRE
dXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgc3VtbWFyeSwgdXJsKQorICAgIGNvbnN0cnVjdG9y
KGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgc3VtbWFyeSkKICAgICB7
CiAgICAgICAgIHN1cGVyKCdmcmVzaG5lc3MtaW5kaWNhdG9yJyk7CiAgICAgICAgIHRoaXMuX2xh
c3REYXRhUG9pbnREdXJhdGlvbiA9IGxhc3REYXRhUG9pbnREdXJhdGlvbjsKICAgICAgICAgdGhp
cy5fdGVzdEFnZVRvbGVyYW5jZSA9IHRlc3RBZ2VUb2xlcmFuY2U7Ci0gICAgICAgIHRoaXMuX3Vy
bCA9IHVybDsKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWQgPSBmYWxzZTsKIAogICAgICAgICB0
aGlzLl9yZW5kZXJJbmRpY2F0b3JMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24o
dGhpcy5fcmVuZGVySW5kaWNhdG9yLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIHVwZGF0ZShs
YXN0RGF0YVBvaW50RHVyYXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIHVybCwgaGlnaGxpZ2h0ZWQp
CisgICAgdXBkYXRlKGxhc3REYXRhUG9pbnREdXJhdGlvbiwgdGVzdEFnZVRvbGVyYW5jZSwgaGln
aGxpZ2h0ZWQpCiAgICAgewogICAgICAgICB0aGlzLl9sYXN0RGF0YVBvaW50RHVyYXRpb24gPSBs
YXN0RGF0YVBvaW50RHVyYXRpb247CiAgICAgICAgIHRoaXMuX3Rlc3RBZ2VUb2xlcmFuY2UgPSB0
ZXN0QWdlVG9sZXJhbmNlOwotICAgICAgICB0aGlzLl91cmwgPSB1cmw7CiAgICAgICAgIHRoaXMu
X2hpZ2hsaWdodGVkID0gaGlnaGxpZ2h0ZWQ7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCk7CiAgICAgfQogCi0gICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCi0gICAgewotICAgICAg
ICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRlbnQoJ2NvbnRhaW5lcicpOwotICAgICAgICBj
b250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuZGlzcGF0
Y2hBY3Rpb24oJ3NlbGVjdCcsIHRoaXMpKTsKLSAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1bnNlbGVjdCcp
KTsKLSAgICB9Ci0KICAgICByZW5kZXIoKQogICAgIHsKICAgICAgICAgc3VwZXIucmVuZGVyKCk7
CkBAIC00Niw3ICszNyw3IEBAIGNsYXNzIEZyZXNobmVzc0luZGljYXRvciBleHRlbmRzIENvbXBv
bmVudEJhc2UgewogICAgICAgICBjb25zdCByYXRpbmcgPSAxIC8gKDEgKyBNYXRoLmV4cChNYXRo
LmxvZygxLjIpICogKGhvdXJzU2luY2VMYXN0RGF0YVBvaW50IC0gdGVzdEFnZVRvbGVyYW5jZUlu
SG91cnMpKSk7CiAgICAgICAgIGNvbnN0IGh1ZSA9IE1hdGgucm91bmQoMTIwICogcmF0aW5nKTsK
ICAgICAgICAgY29uc3QgYnJpZ2h0bmVzcyA9IE1hdGgucm91bmQoMzAgKyA1MCAqIHJhdGluZyk7
Ci0gICAgICAgIGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgaHJl
ZjogdXJsLCBjbGFzczogaGlnaGxpZ2h0ZWQgPyAnaGlnaGxpZ2h0JyA6ICcnfSk7CisgICAgICAg
IGNvbnN0IGluZGljYXRvciA9IGVsZW1lbnQoJ2EnLCB7aWQ6ICdjZWxsJywgY2xhc3M6IGAke2hp
Z2hsaWdodGVkID8gJ2hpZ2hsaWdodCcgOiAnJ31gfSk7CiAKICAgICAgICAgaW5kaWNhdG9yLnN0
eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtodWV9LCAxMDAlLCAke2JyaWdodG5lc3N9JSlg
OwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdjb250YWluZXInKSwg
aW5kaWNhdG9yKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvcGFnZXMvdGVzdC1mcmVzaG5lc3MtcGFnZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvcGFnZXMvdGVzdC1mcmVzaG5lc3MtcGFnZS5qcwppbmRleCBmMDkyZGRiOWI3
YzU0MDdlZjg3N2IzMjM4YzI4M2Q3YzBhYzdlZDM3Li4zNWIzNDA0ZDMwMTdhM2RiMTg5MzNjZDNi
ZTVhYzkxYzE2ZTMxZWU0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNzLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy90ZXN0LWZyZXNobmVzcy1wYWdlLmpzCkBAIC05LDI3
ICs5LDIxIEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5n
IHsKICAgICAgICAgdGhpcy5fbGFzdERhdGFQb2ludEJ5Q29uZmlndXJhdGlvbiA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX2luZGljYXRvckJ5Q29uZmlndXJhdGlvbiA9IG51bGw7CiAgICAgICAgIHRo
aXMuX3JlbmRlclRhYmxlTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMu
X3JlbmRlclRhYmxlLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9jdXJyZW50bHlIaWdobGln
aHRlZEluZGljYXRvciA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2hvdmVyaW5nVG9vbHRpcCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IG51bGw7CisgICAgICAgIHRo
aXMuX2luZGljYXRvckZvclRvb2x0aXAgPSBudWxsOworICAgICAgICB0aGlzLl9maXJzdEluZGlj
YXRvckNlbGwgPSBudWxsOworICAgICAgICB0aGlzLl9zaG93VG9vbHRpcCA9IGZhbHNlOwogICAg
ICAgICB0aGlzLl9idWlsZGVyQnlJbmRpY2F0b3IgPSBudWxsOworICAgICAgICB0aGlzLl90YWJJ
bmRleEZvckluZGljYXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuX2Nvb3JkaW5hdGVGb3JJbmRp
Y2F0b3IgPSBudWxsOworICAgICAgICB0aGlzLl9pbmRpY2F0b3JDZWxsR3JpZCA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX3NraXBOZXh0U3RhdGVDbGVhbk9uU2Nyb2xsID0gZmFsc2U7CisgICAgICAg
IHRoaXMuX2xhc3RGb2N1c2VkQ2VsbCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3JlbmRlclRvb2x0
aXBMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVyVG9vbHRp
cC5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0aGlzLl9sb2FkQ29uZmlnKHN1bW1hcnlQYWdlQ29u
ZmlndXJhdGlvbik7CiAgICAgfQogCi0gICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCi0gICAg
ewotICAgICAgICBjb25zdCB0b29sdGlwVGFibGUgPSB0aGlzLmNvbnRlbnQoJ3Rvb2x0aXAtdGFi
bGUnKTsKLSAgICAgICAgdG9vbHRpcFRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXIn
LCAoKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAgPSB0cnVlOwotICAg
ICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHRv
b2x0aXBUYWJsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gewotICAgICAg
ICAgICAgdGhpcy5faG92ZXJpbmdUb29sdGlwID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLmVu
cXVldWVUb1JlbmRlcigpOwotICAgICAgICB9KTsKLSAgICB9Ci0KICAgICBuYW1lKCkgeyByZXR1
cm4gJ1Rlc3QtRnJlc2huZXNzJzsgfQogCiAgICAgX2xvYWRDb25maWcoc3VtbWFyeVBhZ2VDb25m
aWd1cmF0aW9uKQpAQCAtNjgsNiArNjIsODAgQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0
ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICBzdXBlci5vcGVuKHN0YXRlKTsKICAgICB9
CiAKKyAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKKyAgICB7CisgICAgICAgIHN1cGVyLmRp
ZENvbnN0cnVjdFNoYWRvd1RyZWUoKTsKKyAgICAgICAgdGhpcy5jb250ZW50KCkuYWRkRXZlbnRM
aXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLl9jbGVhckluZGljYXRvclN0YXRlKGZhbHNlKSk7
CisKKyAgICAgICAgdGhpcy5jb250ZW50KCd0b29sdGlwLXRhYmxlJykub25jbGljayA9IHRoaXMu
Y3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHt9LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHRoaXMu
Y29udGVudCgndG9vbHRpcC10YWJsZScpLm9ua2V5ZG93biA9IHRoaXMuY3JlYXRlRXZlbnRIYW5k
bGVyKChldmVudCkgPT4geworICAgICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0VzY2FwZScp
IHsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RG
b2N1c2VkQ2VsbC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9LCBmYWxzZSwgZmFsc2UpOworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBpZiAoIVsnQXJyb3dVcCcs
ICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnXS5pbmNsdWRlcyhldmVudC5j
b2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghdGhpcy5f
aW5kaWNhdG9yRm9yVG9vbHRpcCAmJiAhdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fZmlyc3RJbmRpY2F0b3JDZWxsKQorICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9maXJzdEluZGljYXRvckNlbGwuZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNvbnN0IFtyb3csIGNvbHVtbl0gPSB0aGlzLl9jb29yZGluYXRlRm9ySW5kaWNhdG9yLmdldCh0
aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwIHx8IHRoaXMuX2hvdmVyaW5nSW5kaWNhdG9yKTsKKwor
ICAgICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0Fycm93VXAnKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maW5kQW5k
Rm9jdXNPbkNsb3Nlc3RJbmRpY2F0b3JDZWxsKGNvbHVtbiwgcm93IC0gMSwgdGhpcy5faW5kaWNh
dG9yQ2VsbEdyaWQsICdib3RoLWRpcmVjdGlvbnMnKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
ZXZlbnQuY29kZSA9PSAnQXJyb3dEb3duJykgeworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZmluZEFuZEZvY3VzT25DbG9zZXN0
SW5kaWNhdG9yQ2VsbChjb2x1bW4sIHJvdyArIDEsIHRoaXMuX2luZGljYXRvckNlbGxHcmlkLCAn
Ym90aC1kaXJlY3Rpb25zJyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT0g
J0Fycm93TGVmdCcpCisgICAgICAgICAgICAgICAgdGhpcy5fZmluZEFuZEZvY3VzT25DbG9zZXN0
SW5kaWNhdG9yQ2VsbChjb2x1bW4gLSAxLCByb3csIHRoaXMuX2luZGljYXRvckNlbGxHcmlkLCAn
bGVmdC1vbmx5Jyk7CisgICAgICAgICAgICBlbHNlIGlmIChldmVudC5jb2RlID09ICdBcnJvd1Jp
Z2h0JykKKyAgICAgICAgICAgICAgICB0aGlzLl9maW5kQW5kRm9jdXNPbkNsb3Nlc3RJbmRpY2F0
b3JDZWxsKGNvbHVtbiArIDEsIHJvdywgdGhpcy5faW5kaWNhdG9yQ2VsbEdyaWQsICdyaWdodC1v
bmx5Jyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9maW5kQW5kRm9jdXNPbkNsb3Nlc3RJ
bmRpY2F0b3JDZWxsKGNvbHVtbkluZGV4LCByb3dJbmRleCwgZ3JpZCwgZGlyZWN0aW9uKQorICAg
IHsKKyAgICAgICAgY29uc3QgY2xvc2VzdEluZGljYXRvckNlbGwgPSB0aGlzLl9maW5kQ2xvc2Vz
dEluZGljYXRvckNlbGxGb3JDb29yZGluYXRlKGNvbHVtbkluZGV4LCByb3dJbmRleCwgZ3JpZCwg
ZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKCFjbG9zZXN0SW5kaWNhdG9yQ2VsbCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VzdEluZGljYXRvckNlbGwuZm9jdXMoe3ByZXZlbnRT
Y3JvbGw6IHRydWV9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9maW5kQ2xvc2Vz
dEluZGljYXRvckNlbGxGb3JDb29yZGluYXRlKGNvbHVtbkluZGV4LCByb3dJbmRleCwgZ3JpZCwg
ZGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAgcm93SW5kZXggPSBNYXRoLm1pbihNYXRoLm1heChy
b3dJbmRleCwgMCksIGdyaWQubGVuZ3RoIC0gMSk7CisgICAgICAgIGNvbnN0IHJvdyA9IGdyaWRb
cm93SW5kZXhdOworICAgICAgICBpZiAoIXJvdy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKworICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKE1hdGgubWF4KGNvbHVtbklu
ZGV4LCAwKSwgcm93Lmxlbmd0aCAtIDEpOworICAgICAgICBpZiAocm93W3N0YXJ0XSkKKyAgICAg
ICAgICAgIHJldHVybiByb3dbc3RhcnRdOworCisgICAgICAgIGxldCBvZmZzZXQgPSAxOworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY29uc3QgbGVmdEluZGV4ID0gc3RhcnQg
LSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAobGVmdEluZGV4ID49IDAgJiYgcm93W2xlZnRJbmRl
eF0gJiYgZGlyZWN0aW9uICE9ICdyaWdodC1vbmx5JykKKyAgICAgICAgICAgICAgICByZXR1cm4g
cm93W2xlZnRJbmRleF07CisgICAgICAgICAgICBjb25zdCByaWdodEluZGV4ID0gc3RhcnQgKyBv
ZmZzZXQ7CisgICAgICAgICAgICBpZiAocmlnaHRJbmRleCA8IHJvdy5sZW5ndGggJiYgcm93W3Jp
Z2h0SW5kZXhdICYmIGRpcmVjdGlvbiAhPSAnbGVmdC1vbmx5JykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcm93W3JpZ2h0SW5kZXhdOworICAgICAgICAgICAgaWYgKGxlZnRJbmRleCA8IDAgJiYg
cmlnaHRJbmRleCA+PSByb3cubGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgb2Zmc2V0ICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorCiAgICAgX2ZldGNoVGVzdFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fbWVhc3Vy
ZW1lbnRTZXRGZXRjaFRpbWUgPSBEYXRlLm5vdygpOwpAQCAtMTIzLDM2ICsxOTEsNDUgQEAgY2xh
c3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogCiAgICAgICAg
IHRoaXMuX3JlbmRlclRhYmxlTGF6aWx5LmV2YWx1YXRlKHRoaXMuX3BsYXRmb3JtcywgdGhpcy5f
bWV0cmljcyk7CiAKLSAgICAgICAgbGV0IGJ1aWxkU3VtbWFyeUZvckN1cnJlbnRseUhpZ2hsaWdo
dGVkSW5kaWNhdG9yID0gbnVsbDsKLSAgICAgICAgbGV0IGJ1aWxkRm9yQ3VycmVudGx5SGlnaGxp
Z2h0ZWRJbmRpY2F0b3IgPSBudWxsOwotICAgICAgICBsZXQgY29tbWl0U2V0Rm9yQ3VycmVudEhp
Z2hsaWdodGVkSW5kaWNhdG9yID0gbnVsbDsKLSAgICAgICAgY29uc3QgYnVpbGRlckZvckN1cnJl
bnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRp
Y2F0b3IgPyB0aGlzLl9idWlsZGVyQnlJbmRpY2F0b3IuZ2V0KHRoaXMuX2N1cnJlbnRseUhpZ2hs
aWdodGVkSW5kaWNhdG9yKSA6IG51bGw7CisgICAgICAgIGxldCBidWlsZFN1bW1hcnlGb3JGb2N1
c2luZ0luZGljYXRvciA9IG51bGw7CisgICAgICAgIGxldCBidWlsZEZvckZvY3VzaW5nSW5kaWNh
dG9yID0gbnVsbDsKKyAgICAgICAgbGV0IGNvbW1pdFNldEZvckZvY3VzaW5nZEluZGljYXRvciA9
IG51bGw7CisgICAgICAgIGxldCBjaGFydFVSTEZvckZvY3VzaW5nSW5kaWNhdG9yID0gbnVsbDsK
KyAgICAgICAgbGV0IHBsYXRmb3JtRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAg
ICBsZXQgbWV0cmljRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBjb25zdCBi
dWlsZGVyRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwID8g
dGhpcy5fYnVpbGRlckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwKSA6
IG51bGw7CisgICAgICAgIGNvbnN0IGJ1aWxkZXJGb3JIb3ZlcmluZ0luZGljYXRvciA9IHRoaXMu
X2hvdmVyaW5nSW5kaWNhdG9yID8gdGhpcy5fYnVpbGRlckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9o
b3ZlcmluZ0luZGljYXRvcikgOiBudWxsOwogICAgICAgICBmb3IgKGNvbnN0IFtwbGF0Zm9ybSwg
bGFzdERhdGFQb2ludEJ5TWV0cmljXSBvZiB0aGlzLl9sYXN0RGF0YVBvaW50QnlDb25maWd1cmF0
aW9uLmVudHJpZXMoKSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBbbWV0cmljLCBsYXN0RGF0
YVBvaW50XSBvZiBsYXN0RGF0YVBvaW50QnlNZXRyaWMuZW50cmllcygpKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgdGltZUR1cmF0aW9uID0gdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUg
LSBsYXN0RGF0YVBvaW50LnRpbWU7CiAgICAgICAgICAgICAgICAgY29uc3QgdGltZUR1cmF0aW9u
U3VtbWFyeVByZWZpeCA9IGxhc3REYXRhUG9pbnQuaGFzQ3VycmVudERhdGFQb2ludCA/ICcnIDog
J01vcmUgdGhhbiAnOwogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEdXJhdGlvblN1bW1hcnkg
PSBCdWlsZFJlcXVlc3QuZm9ybWF0VGltZUludGVydmFsKHRpbWVEdXJhdGlvbik7CiAgICAgICAg
ICAgICAgICAgY29uc3Qgc3VtbWFyeSA9IGAke3RpbWVEdXJhdGlvblN1bW1hcnlQcmVmaXh9JHt0
aW1lRHVyYXRpb25TdW1tYXJ5fSBzaW5jZSBsYXRlc3QgZGF0YSBwb2ludC5gOwotICAgICAgICAg
ICAgICAgIGNvbnN0IHVybCA9IHRoaXMuX3JvdXRlci51cmwoJ2NoYXJ0cycsIENoYXJ0c1BhZ2Uu
Y3JlYXRlU3RhdGVGb3JEYXNoYm9hcmRJdGVtKHBsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpLAot
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZWFzdXJlbWVudFNldEZldGNoVGltZSAtIHRoaXMu
X3RpbWVEdXJhdGlvbikpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yID0gdGhp
cy5faW5kaWNhdG9yQnlDb25maWd1cmF0aW9uLmdldChwbGF0Zm9ybSkuZ2V0KG1ldHJpYyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yICYm
IHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID09PSBpbmRpY2F0b3IpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYnVpbGRTdW1tYXJ5Rm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRp
Y2F0b3IgPSBzdW1tYXJ5OwotICAgICAgICAgICAgICAgICAgICBidWlsZEZvckN1cnJlbnRseUhp
Z2hsaWdodGVkSW5kaWNhdG9yID0gbGFzdERhdGFQb2ludC5sYXN0QnVpbGQ7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbW1pdFNldEZvckN1cnJlbnRIaWdobGlnaHRlZEluZGljYXRvciA9IGxhc3RE
YXRhUG9pbnQuY29tbWl0U2V0T2ZMYXN0UG9pbnQ7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2luZGljYXRvckZvclRvb2x0aXAgJiYgdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA9PT0gaW5k
aWNhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkU3VtbWFyeUZvckZvY3VzaW5nSW5k
aWNhdG9yID0gc3VtbWFyeTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRGb3JGb2N1c2luZ0lu
ZGljYXRvciA9IGxhc3REYXRhUG9pbnQubGFzdEJ1aWxkOworICAgICAgICAgICAgICAgICAgICBj
b21taXRTZXRGb3JGb2N1c2luZ2RJbmRpY2F0b3IgPSBsYXN0RGF0YVBvaW50LmNvbW1pdFNldE9m
TGFzdFBvaW50OworICAgICAgICAgICAgICAgICAgICBjaGFydFVSTEZvckZvY3VzaW5nSW5kaWNh
dG9yID0gIHRoaXMuX3JvdXRlci51cmwoJ2NoYXJ0cycsIENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVG
b3JEYXNoYm9hcmRJdGVtKHBsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUgLSB0aGlzLl90aW1lRHVy
YXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1Gb3JGb2N1c2luZ0luZGljYXRv
ciA9IHBsYXRmb3JtOworICAgICAgICAgICAgICAgICAgICBtZXRyaWNGb3JGb2N1c2luZ0luZGlj
YXRvciA9IG1ldHJpYzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGhpcy5f
YnVpbGRlckJ5SW5kaWNhdG9yLnNldChpbmRpY2F0b3IsIGxhc3REYXRhUG9pbnQuYnVpbGRlcik7
Ci0gICAgICAgICAgICAgICAgaW5kaWNhdG9yLnVwZGF0ZSh0aW1lRHVyYXRpb24sIHRoaXMuX3Rl
c3RBZ2VUb2xlcmFuY2UsIHVybCwgYnVpbGRlckZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNh
dG9yICYmIGJ1aWxkZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9PT0gbGFzdERh
dGFQb2ludC5idWlsZGVyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBoaWdobGlnaHRlZCA9IGJ1
aWxkZXJGb3JGb2N1c2luZ0luZGljYXRvciAmJiBidWlsZGVyRm9yRm9jdXNpbmdJbmRpY2F0b3Ig
PT0gbGFzdERhdGFQb2ludC5idWlsZGVyCisgICAgICAgICAgICAgICAgICAgIHx8IGJ1aWxkZXJG
b3JIb3ZlcmluZ0luZGljYXRvciAmJiBidWlsZGVyRm9ySG92ZXJpbmdJbmRpY2F0b3IgPT09IGxh
c3REYXRhUG9pbnQuYnVpbGRlcjsKKyAgICAgICAgICAgICAgICBpbmRpY2F0b3IudXBkYXRlKHRp
bWVEdXJhdGlvbiwgdGhpcy5fdGVzdEFnZVRvbGVyYW5jZSwgaGlnaGxpZ2h0ZWQpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JlbmRlclRvb2x0aXBMYXppbHkuZXZh
bHVhdGUodGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIHRoaXMuX2hvdmVyaW5n
VG9vbHRpcCwgYnVpbGRTdW1tYXJ5Rm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIGJ1
aWxkRm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIGNvbW1pdFNldEZvckN1cnJlbnRI
aWdobGlnaHRlZEluZGljYXRvcik7CisgICAgICAgIHRoaXMuX3JlbmRlclRvb2x0aXBMYXppbHku
ZXZhbHVhdGUodGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCwgdGhpcy5fc2hvd1Rvb2x0aXAsIGJ1
aWxkU3VtbWFyeUZvckZvY3VzaW5nSW5kaWNhdG9yLCBidWlsZEZvckZvY3VzaW5nSW5kaWNhdG9y
LAorICAgICAgICAgICAgY29tbWl0U2V0Rm9yRm9jdXNpbmdkSW5kaWNhdG9yLCBjaGFydFVSTEZv
ckZvY3VzaW5nSW5kaWNhdG9yLCBwbGF0Zm9ybUZvckZvY3VzaW5nSW5kaWNhdG9yLCBtZXRyaWNG
b3JGb2N1c2luZ0luZGljYXRvciwgdGhpcy5fdGFiSW5kZXhGb3JJbmRpY2F0b3IuZ2V0KHRoaXMu
X2luZGljYXRvckZvclRvb2x0aXApKTsKICAgICB9CiAKLSAgICBfcmVuZGVyVG9vbHRpcChpbmRp
Y2F0b3IsIGhvdmVyaW5nVG9vbHRpcCwgYnVpbGRTdW1tYXJ5LCBidWlsZCwgY29tbWl0U2V0KQor
ICAgIF9yZW5kZXJUb29sdGlwKGluZGljYXRvciwgc2hvd1Rvb2x0aXAsIGJ1aWxkU3VtbWFyeSwg
YnVpbGQsIGNvbW1pdFNldCwgY2hhcnRVUkwsIHBsYXRmb3JtLCBtZXRyaWMsIHRhYkluZGV4KQog
ICAgIHsKLSAgICAgICAgaWYgKCFpbmRpY2F0b3IgfHwgIWJ1aWxkU3VtbWFyeSkgewotICAgICAg
ICAgICAgdGhpcy5jb250ZW50KCd0b29sdGlwLWFuY2hvcicpLnN0eWxlLmRpc3BsYXkgPSBob3Zl
cmluZ1Rvb2x0aXAgPyBudWxsIDogJ25vbmUnOworICAgICAgICBpZiAoIWluZGljYXRvciB8fCAh
YnVpbGRTdW1tYXJ5IHx8ICFzaG93VG9vbHRpcCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50
KCd0b29sdGlwLWFuY2hvcicpLnN0eWxlLmRpc3BsYXkgPSAgc2hvd1Rvb2x0aXAgPyBudWxsIDog
J25vbmUnOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IGVs
ZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CkBAIC0xNjYsNiArMjQzLDE0IEBA
IGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKIAogICAg
ICAgICBsZXQgdGFibGVDb250ZW50ID0gW2VsZW1lbnQoJ3RyJywgZWxlbWVudCgndGQnLCB7Y29s
c3BhbjogMn0sIGJ1aWxkU3VtbWFyeSkpXTsKIAorICAgICAgICBpZiAoY2hhcnRVUkwpIHsKKyAg
ICAgICAgICAgIGNvbnN0IGxpbmtEZXNjcmlwdGlvbiA9IGAke21ldHJpYy50ZXN0KCkubmFtZSgp
fSBvbiAke3BsYXRmb3JtLm5hbWUoKX1gOworICAgICAgICAgICAgdGFibGVDb250ZW50LnB1c2go
ZWxlbWVudCgndHInLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgndGQnLCAnQ2hhcnQnKSwK
KyAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgbGluayhsaW5rRGVz
Y3JpcHRpb24sIGxpbmtEZXNjcmlwdGlvbiwgY2hhcnRVUkwsIHRydWUsIHRhYkluZGV4KSkKKyAg
ICAgICAgICAgIF0pKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChjb21taXRTZXQpIHsKICAg
ICAgICAgICAgIGlmIChjb21taXRTZXQucmVwb3NpdG9yaWVzKCkubGVuZ3RoKQogICAgICAgICAg
ICAgICAgIHRhYmxlQ29udGVudC5wdXNoKGVsZW1lbnQoJ3RyJywgZWxlbWVudCgndGgnLCB7Y29s
c3BhbjogMn0sICdMYXRlc3QgYnVpbGQgaW5mb3JtYXRpb24nKSkpOwpAQCAtMTc0LDcgKzI1OSw3
IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAg
ICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBjb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCgndHInLCBbCiAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywgcmVwb3NpdG9yeS5uYW1lKCkpLAotICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGNvbW1pdC51cmwoKSA/IGxpbmsoY29tbWl0
LmxhYmVsKCksIGNvbW1pdC5sYWJlbCgpLCBjb21taXQudXJsKCksIHRydWUpIDogY29tbWl0Lmxh
YmVsKCkpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywgY29tbWl0LnVybCgpID8g
bGluayhjb21taXQubGFiZWwoKSwgY29tbWl0LmxhYmVsKCksIGNvbW1pdC51cmwoKSwgdHJ1ZSwg
dGFiSW5kZXgpIDogY29tbWl0LmxhYmVsKCkpCiAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAg
ICAgICB9KSk7CiAgICAgICAgIH0KQEAgLTE4NSw3ICsyNzAsNyBAQCBjbGFzcyBUZXN0RnJlc2hu
ZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICB0YWJsZUNvbnRl
bnQucHVzaChlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsICdC
dWlsZCcpLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9LCBbCi0g
ICAgICAgICAgICAgICAgICAgIHVybCA/IGxpbmsoYnVpbGROdW1iZXIsIGJ1aWxkLmxhYmVsKCks
IHVybCwgdHJ1ZSkgOiBidWlsZE51bWJlcgorICAgICAgICAgICAgICAgICAgICB1cmwgPyBsaW5r
KGJ1aWxkTnVtYmVyLCBidWlsZC5sYWJlbCgpLCB1cmwsIHRydWUsIHRhYkluZGV4KSA6IGJ1aWxk
TnVtYmVyCiAgICAgICAgICAgICAgICAgXSksCiAgICAgICAgICAgICBdKSk7CiAgICAgICAgIH0K
QEAgLTIwMywxNCArMjg4LDI5IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFn
ZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAgIHRhYmxlSGVhZEVsZW1lbnRzLnB1c2goZWxlbWVu
dCgndGgnLCB7Y2xhc3M6ICdkaWFnb25hbC1oZWFkJ30sIGVsZW1lbnQoJ2RpdicsIG1ldHJpYy50
ZXN0KCkuZnVsbE5hbWUoKSkpKTsKIAogICAgICAgICB0aGlzLl9pbmRpY2F0b3JCeUNvbmZpZ3Vy
YXRpb24gPSBuZXcgTWFwOwotICAgICAgICBmb3IgKGNvbnN0IHBsYXRmb3JtIG9mIHBsYXRmb3Jt
cykgeworICAgICAgICB0aGlzLl9jb29yZGluYXRlRm9ySW5kaWNhdG9yID0gbmV3IE1hcDsKKyAg
ICAgICAgdGhpcy5fdGFiSW5kZXhGb3JJbmRpY2F0b3IgPSBuZXcgTWFwOworICAgICAgICB0aGlz
Ll9pbmRpY2F0b3JDZWxsR3JpZCA9IFtdOworICAgICAgICB0aGlzLl9maXJzdEluZGljYXRvckNl
bGwgPSBudWxsOworICAgICAgICBsZXQgY3VycmVudFRhYkluZGV4ID0gMTsKKworICAgICAgICBw
bGF0Zm9ybXMuZm9yRWFjaCgocGxhdGZvcm0sIHJvd0luZGV4KSA9PiAgewogICAgICAgICAgICAg
Y29uc3QgaW5kaWNhdG9yQnlNZXRyaWMgPSBuZXcgTWFwOwogICAgICAgICAgICAgdGhpcy5faW5k
aWNhdG9yQnlDb25maWd1cmF0aW9uLnNldChwbGF0Zm9ybSwgaW5kaWNhdG9yQnlNZXRyaWMpOwor
CisgICAgICAgICAgICBsZXQgaW5kaWNhdG9yQ2VsbHNJbkN1cnJlbnRSb3cgPSBbXTsKICAgICAg
ICAgICAgIHRhYmxlQm9keUVsZW1lbnQucHVzaChlbGVtZW50KCd0cicsCi0gICAgICAgICAgICAg
ICAgW2VsZW1lbnQoJ3RoJywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFiZWwoKSks
IC4uLm1ldHJpY3MubWFwKChtZXRyaWMpID0+IHRoaXMuX2NvbnN0cnVjdFRhYmxlQ2VsbChwbGF0
Zm9ybSwgbWV0cmljLCBpbmRpY2F0b3JCeU1ldHJpYykpXSkpOwotICAgICAgICB9CisgICAgICAg
ICAgICAgICAgW2VsZW1lbnQoJ3RoJywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFi
ZWwoKSksIC4uLm1ldHJpY3MubWFwKChtZXRyaWMsIGNvbHVtbkluZGV4KSA9PgorICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3RUYWJsZUNlbGwocGxhdGZvcm0sIG1ldHJpYywgcm93
SW5kZXgsIGNvbHVtbkluZGV4LCBjdXJyZW50VGFiSW5kZXgrKywgdGhpcy5fdGFiSW5kZXhGb3JJ
bmRpY2F0b3IsIGluZGljYXRvckJ5TWV0cmljLCBpbmRpY2F0b3JDZWxsc0luQ3VycmVudFJvdywg
dGhpcy5fY29vcmRpbmF0ZUZvckluZGljYXRvcikpXSkpOworICAgICAgICAgICAgdGhpcy5faW5k
aWNhdG9yQ2VsbEdyaWQucHVzaChpbmRpY2F0b3JDZWxsc0luQ3VycmVudFJvdyk7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuX2ZpcnN0SW5kaWNhdG9yQ2VsbCkKKyAgICAgICAgICAgICAgICB0aGlz
Ll9maXJzdEluZGljYXRvckNlbGwgPSBpbmRpY2F0b3JDZWxsc0luQ3VycmVudFJvdy5maW5kKChp
bmRpY2F0b3IpID0+IGluZGljYXRvcik7CisgICAgICAgIH0pOwogCi0gICAgICAgIHRoaXMucmVu
ZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoJ3Rlc3QtaGVhbHRoJyksIFtlbGVtZW50KCd0aGVhZCcs
IHRhYmxlSGVhZEVsZW1lbnRzKSwgZWxlbWVudCgndGJvZHknLCB0YWJsZUJvZHlFbGVtZW50KV0p
OworICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBlbGVtZW50KCd0Ym9keScsIHRhYmxlQm9keUVs
ZW1lbnQpOworICAgICAgICB0YWJsZUJvZHkuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkg
PT4gdGhpcy5fY2xlYXJJbmRpY2F0b3JTdGF0ZSh0cnVlKSk7CisKKyAgICAgICAgdGhpcy5yZW5k
ZXJSZXBsYWNlKHRoaXMuY29udGVudCgndGVzdC1oZWFsdGgnKSwgW2VsZW1lbnQoJ3RoZWFkJywg
dGFibGVIZWFkRWxlbWVudHMpLCB0YWJsZUJvZHldKTsKICAgICB9CiAKICAgICBfaXNWYWxpZFBs
YXRmb3JtTWV0cmljQ29tYmluYXRpb24ocGxhdGZvcm0sIG1ldHJpYykKQEAgLTIyMCwzMyArMzIw
LDc2IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsK
ICAgICAgICAgICAgICYmIHBsYXRmb3JtLmhhc01ldHJpYyhtZXRyaWMpOwogICAgIH0KIAotICAg
IF9jb25zdHJ1Y3RUYWJsZUNlbGwocGxhdGZvcm0sIG1ldHJpYywgaW5kaWNhdG9yQnlNZXRyaWMp
CisgICAgX2NvbnN0cnVjdFRhYmxlQ2VsbChwbGF0Zm9ybSwgbWV0cmljLCByb3dJbmRleCwgY29s
dW1uSW5kZXgsIHRhYkluZGV4LCB0YWJJbmRleEZvckluZGljYXRvciwgaW5kaWNhdG9yQnlNZXRy
aWMsIGluZGljYXRvckNlbGxzSW5DdXJyZW50Um93LCBjb29yZGluYXRlRm9ySW5kaWNhdG9yKQog
ICAgIHsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVu
dDsKIAotICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWRQbGF0Zm9ybU1ldHJpY0NvbWJpbmF0aW9u
KHBsYXRmb3JtLCBtZXRyaWMpKQorICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWRQbGF0Zm9ybU1l
dHJpY0NvbWJpbmF0aW9uKHBsYXRmb3JtLCBtZXRyaWMpKSB7CisgICAgICAgICAgICBpbmRpY2F0
b3JDZWxsc0luQ3VycmVudFJvdy5wdXNoKG51bGwpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQoJ3RkJywge2NsYXNzOiAnYmxhbmstY2VsbCd9LCBlbGVtZW50KCdkaXYnKSk7CisgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBuZXcgRnJlc2huZXNzSW5kaWNhdG9yOwot
ICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdCcsIChvcmlnaW5hdG9yKSA9
PiB7Ci0gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlIaWdobGlnaHRlZEluZGljYXRvciA9IG9y
aWdpbmF0b3I7CisgICAgICAgIGNvbnN0IGNlbGwgPSBlbGVtZW50KCd0ZCcsIHtjbGFzczogJ3N0
YXR1cy1jZWxsJywgdGFiaW5kZXg6IHRhYkluZGV4fSwgaW5kaWNhdG9yKTsKKyAgICAgICAgdGhp
cy5fY29uZmlndXJlQ29udGFpbmVyQ2VsbEZvckluZGljYXRvcihjZWxsLCBpbmRpY2F0b3IpOwor
CisgICAgICAgIGluZGljYXRvckJ5TWV0cmljLnNldChtZXRyaWMsIGluZGljYXRvcik7CisgICAg
ICAgIGNvb3JkaW5hdGVGb3JJbmRpY2F0b3Iuc2V0KGluZGljYXRvciwgW3Jvd0luZGV4LCBjb2x1
bW5JbmRleF0pOworICAgICAgICB0YWJJbmRleEZvckluZGljYXRvci5zZXQoaW5kaWNhdG9yLCB0
YWJJbmRleCk7CisgICAgICAgIGluZGljYXRvckNlbGxzSW5DdXJyZW50Um93LnB1c2goY2VsbCk7
CisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0KKworICAgIF9jb25maWd1cmVDb250YWluZXJD
ZWxsRm9ySW5kaWNhdG9yKGNlbGwsIGluZGljYXRvcikKKyAgICB7CisgICAgICAgIGNlbGwub25t
b3VzZW92ZXIgPSB0aGlzLmNyZWF0ZUV2ZW50SGFuZGxlcigoKSA9PiB7CisgICAgICAgICAgICB0
aGlzLl9ob3ZlcmluZ0luZGljYXRvciA9IGluZGljYXRvcjsKICAgICAgICAgICAgIHRoaXMuZW5x
dWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0pOwotICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9B
Y3Rpb24oJ3Vuc2VsZWN0JywgKCkgPT4gewotICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5SGln
aGxpZ2h0ZWRJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBjZWxsLm9uZm9jdXMgPSB0aGlzLmNy
ZWF0ZUV2ZW50SGFuZGxlcigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcCA9
ICF0aGlzLl9zaG93VG9vbHRpcCB8fCB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwICE9IGluZGlj
YXRvcjsKKyAgICAgICAgICAgIHRoaXMuX2hvdmVyaW5nSW5kaWNhdG9yID0gaW5kaWNhdG9yOwor
ICAgICAgICAgICAgdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA9IGluZGljYXRvcjsKKyAgICAg
ICAgICAgIHRoaXMuX2xhc3RGb2N1c2VkQ2VsbCA9IGNlbGw7CisgICAgICAgICAgICB0aGlzLl9z
a2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLmVucXVl
dWVUb1JlbmRlcigpOwogICAgICAgICB9KTsKLSAgICAgICAgaW5kaWNhdG9yQnlNZXRyaWMuc2V0
KG1ldHJpYywgaW5kaWNhdG9yKTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RkJywge2NsYXNz
OiAnc3RhdHVzLWNlbGwnfSwgaW5kaWNhdG9yKTsKKyAgICAgICAgY2VsbC5vbmtleWRvd24gPSB0
aGlzLmNyZWF0ZUV2ZW50SGFuZGxlcigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGlmIChldmVu
dC5jb2RlID09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PSAnRXNjYXBlJykgeworICAgICAgICAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBldmVu
dC5jb2RlID09ICdFbnRlcicgPyAhdGhpcy5fc2hvd1Rvb2x0aXAgOiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9
LCBmYWxzZSwgZmFsc2UpOworICAgICAgICBjZWxsLm9uY2xpY2sgPSB0aGlzLmNyZWF0ZUV2ZW50
SGFuZGxlcigoKSA9PiB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3Nob3dUb29sdGlwKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSB0cnVlOworICAgICAgICAgICAgICAg
IHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHRydWUs
IHRydWUpOworICAgIH0KKworICAgIF9jbGVhckluZGljYXRvclN0YXRlKGR1ZVRvU2Nyb2xsKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NraXBOZXh0U3RhdGVDbGVhbk9uU2Nyb2xsKSB7Cisg
ICAgICAgICAgICB0aGlzLl9za2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IGZhbHNlOworICAg
ICAgICAgICAgaWYgKGR1ZVRvU2Nyb2xsKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9zaG93VG9vbHRpcCA9IGZhbHNlOworICAgICAgICB0aGlzLl9p
bmRpY2F0b3JGb3JUb29sdGlwID0gbnVsbDsKKyAgICAgICAgdGhpcy5faG92ZXJpbmdJbmRpY2F0
b3IgPSBudWxsOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAogICAg
IHN0YXRpYyBodG1sVGVtcGxhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGA8c2VjdGlvbiBj
bGFzcz0icGFnZS13aXRoLWhlYWRpbmciPgorICAgICAgICAgICAgPHRhYmxlIGlkPSJ0ZXN0LWhl
YWx0aCI+PC90YWJsZT4KICAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtYW5jaG9yIj4KICAg
ICAgICAgICAgICAgICA8dGFibGUgaWQ9InRvb2x0aXAtdGFibGUiPjwvdGFibGU+CiAgICAgICAg
ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDx0YWJsZSBpZD0idGVzdC1oZWFsdGgiPjwvdGFibGU+
CiAgICAgICAgIDwvc2VjdGlvbj5gOwogICAgIH0KIApAQCAtMjk1LDYgKzQzOCw3IEBAIGNsYXNz
IFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgICAg
ICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNHJlbSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAjdGVzdC1oZWFsdGggdGQuc3RhdHVzLWNlbGwgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgICAg
ICAgcGFkZGluZzogMDsKICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIuMnJlbTsKQEAgLTMw
Miw2ICs0NDYsMjEgQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhl
YWRpbmcgewogICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMi4ycmVtOwogICAgICAgICAgICAg
ICAgIG1pbi1oZWlnaHQ6IDIuMnJlbTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICN0ZXN0
LWhlYWx0aCB0ZC5zdGF0dXMtY2VsbDpmb2N1cyB7CisgICAgICAgICAgICAgICAgb3V0bGluZTog
bm9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICN0ZXN0LWhlYWx0aCB0ZC5zdGF0dXMt
Y2VsbDpmb2N1czo6YWZ0ZXIgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgICAgICAgICAgICBjb250ZW50OiAiIjsKKyAgICAgICAgICAgICAgICBib3R0b206IC0w
LjFyZW07CisgICAgICAgICAgICAgICAgbGVmdDogNTAlOworICAgICAgICAgICAgICAgIG1hcmdp
bi1sZWZ0OiAtMC4ycmVtOworICAgICAgICAgICAgICAgIGhlaWdodDogMHJlbTsKKyAgICAgICAg
ICAgICAgICBib3JkZXItd2lkdGg6IDAuMnJlbTsKKyAgICAgICAgICAgICAgICBib3JkZXItc3R5
bGU6IHNvbGlkOworICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJh
bnNwYXJlbnQgcmVkIHRyYW5zcGFyZW50OworICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAjdGVzdC1oZWFsdGggdGQuYmxhbmstY2VsbCB7
CiAgICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7
CkBAIC0zNDksOCArNTA4LDggQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdl
V2l0aEhlYWRpbmcgewogICAgICAgICAgICAgI3Rvb2x0aXAtdGFibGUgewogICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICB3aWR0aDogMjJyZW07Ci0g
ICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzM0NDk1RTsKLSAgICAgICAgICAgICAg
ICBvcGFjaXR5OiAwLjk7CisgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY5Njk2
OTsKKyAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk2OwogICAgICAgICAgICAgICAgIG1hcmdp
bjogMC4zcmVtOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuM3JlbTsKICAgICAgICAgICAg
ICAgICBib3JkZXItcmFkaXVzOiAwLjRyZW07CkBAIC0zNzQsMTQgKzUzMywxOCBAQCBjbGFzcyBU
ZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICAg
ICAgbWFyZ2luLWxlZnQ6IC0wLjNyZW07CiAgICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAw
LjNyZW07CiAgICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICAgICAgICAg
ICAgICBib3JkZXItY29sb3I6ICMzNDQ5NUUgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNw
YXJlbnQ7CisgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5IHRyYW5zcGFyZW50
IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgI3Rv
b2x0aXAtdGFibGUgYSB7Ci0gICAgICAgICAgICAgICAgY29sb3I6ICNCMDNBMkU7CisgICAgICAg
ICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xk
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgI3Rvb2x0aXAtdGFibGUgYTpmb2N1cyB7Cisg
ICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0FBQjdCODsKKyAgICAgICAgICAgICAg
ICBvdXRsaW5lOiBub25lOworICAgICAgICAgICAgfQogICAgICAgICBgOwogICAgIH0KIAogICAg
IHJvdXRlTmFtZSgpIHsgcmV0dXJuICd0ZXN0LWZyZXNobmVzcyc7IH0KLX0KK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380596</attachid>
            <date>2019-10-09 17:52:57 -0700</date>
            <delta_ts>2019-10-10 21:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202684-20191009175257.patch</filename>
            <type>text/plain</type>
            <size>27111</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODE1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzYjE5NjQxYWEwODljNjdlYTMyZjA2Yjk3NGVhYjc5ZDAzNWViNDkxLi41YjFlNTZlMGNm
ODM3MWE2MDE2NTZiYjc3ZmJiMjJmZjY3ODk4Yjk2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0xMC0wOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHRlc3QgZnJlc2huZXNzIHBhZ2UgaW50ZXJh
Y3Rpb24gZXhwZXJpZW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0ZXN0IGZyZXNobmVzcyBwYWdlIHNob3cgdG9vbHRpcCBvbiBjbGlj
ayBpbnN0ZWFkIG9mIHBvcHVwaW5nIG9uIG1vdXNlIGhvdmVyLgorICAgICAgICBBbmQgY2xpY2tp
bmcgYW55d2hlcmUgaW4gJ3BhZ2Utd2l0aC1oZWFkaW5nJyBzZWN0aW9uIGV4Y2VwdCB0aGUgdG9v
bHRpcCBjYW4gZGlzbWlzcyB0b29sdGlwLgorICAgICAgICBBZGQga2V5Ym9hcmQgc3VwcG9ydCB0
byBtb3ZlIGZvY3VzIGFyb3VuZCBpbmNsdWRpbmcgJ1RhYicga2V5IHN1cHBvcnQuCisgICAgICAg
IEFkZCBzdXBwb3J0IHRvIHVzZSAnRW50ZXInIGtleSB0byBzaG93IG9yIGRpc21pc3MgdG9vbHRp
cC4KKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gdXNlICdFc2NhcGUnIGtleSB0byBkaXNtaXNzIHRv
b2x0aXAuCisKKyAgICAgICAgKiBwdWJsaWMvc2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5q
czogQWRkZWQgc3VwcG9ydCBmb3IgbGluayB0byBzcGVjaWZ5ICd0YWJpbmRleCcuCisgICAgICAg
IChDb21tb25Db21wb25lbnRCYXNlLnByb3RvdHlwZS5jcmVhdGVMaW5rKToKKyAgICAgICAgKENv
bW1vbkNvbXBvbmVudEJhc2UuY3JlYXRlTGluayk6CisgICAgICAgIChDb21tb25Db21wb25lbnRC
YXNlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzOiBBZGRlZCBzdXBw
b3J0IGZvciBjdXN0b21pemluZyB3aGV0aGVyIG9yIG5vdCBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0
b3AgcHJvcGFnYXRpb24KKyAgICAgICAgd2hpbGUgY3JlYXRpbmcgZXZlbnQgaGFuZGxlci4KKyAg
ICAgICAgKENvbXBvbmVudEJhc2UucHJvdG90eXBlLmNyZWF0ZUV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChDb21wb25lbnRCYXNlLmNyZWF0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb21wb25l
bnRCYXNlKToKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9mcmVzaG5lc3MtaW5kaWNh
dG9yLmpzOgorICAgICAgICAoRnJlc2huZXNzSW5kaWNhdG9yKTogUmVtb3ZlZCAndXJsJyBwcm9w
ZXJ0eSBhbmQgcmVtb3ZlZCBjdXN0b21pemF0aW9uIGZvciBtb3VzZSBldmVudC4KKyAgICAgICAg
KEZyZXNobmVzc0luZGljYXRvci5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKEZyZXNobmVz
c0luZGljYXRvci5wcm90b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcHVibGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNzLXBhZ2UuanM6CisgICAgICAg
IChUZXN0RnJlc2huZXNzUGFnZSk6IENoYW5nZWQgdG8gc2hvdyB0b29sdGlwIG9uIGNsaWNrIGFu
ZCBhZGRlZCBrZXkgYm9hcmQgZXZlbnQuCisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90
b3R5cGUuZGlkQ29uc3RydWN0U2hhZG93VHJlZSk6IEFkZGVkIGtleSBldmVudCBzdXBwb3J0Lgor
ICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UucHJvdG90eXBlLl9maW5kQ2xvc2VzdEluZGljYXRv
ckNlbGxGb3JDb29yZGluYXRlKToKKyAgICAgICAgKFRlc3RGcmVzaG5lc3NQYWdlLnByb3RvdHlw
ZS5yZW5kZXIpOgorICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UucHJvdG90eXBlLl9yZW5kZXJU
b29sdGlwKToKKyAgICAgICAgKFRlc3RGcmVzaG5lc3NQYWdlLnByb3RvdHlwZS5fY29uc3RydWN0
VGFibGVDZWxsKTogQWRkZWQgdGFiSW5kZXggZm9yIGVhY2ggY2VsbCB0aGF0IGNvbnRhaW5zIGZy
ZXNobmVzcyBpbmRpY2F0b3IuCisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUu
X2NvbmZpZ3VyZUNvbnRhaW5lckNlbGxGb3JJbmRpY2F0b3IpOiBBZGRlZCBldmVudCBsaXN0ZW5l
ciBmb3IgdGhlIGNlbGwuCisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5wcm90b3R5cGUuX2Ns
ZWFySW5kaWNhdG9yU3RhdGUpOgorICAgICAgICAoVGVzdEZyZXNobmVzc1BhZ2UuY3NzVGVtcGxh
dGUpOiBDaGFuZ2VkIHRoZSBjb2xvciBvZiBsaW5rcyBpbiB0b29sdGlwIHRvIGEgbW9yZSByZWFk
YWJsZSBjb2xvci4KKyAgICAgICAgQWRkZWQgc3R5bGVzIHdoZW4gc3RhdHVzIGNlbGwgYW5kIGxp
bmtzIG9uIHRvb2x0aXAgYXJlIGZvY3VzZWQuCisgICAgICAgIChUZXN0RnJlc2huZXNzUGFnZS5w
cm90b3R5cGUuX2NvbnN0cnVjdFRhYmxlQ2VsbCk6IERlbGV0ZWQuCisKIDIwMTktMTAtMDQgIFpo
aWZlaSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtwZXJmIGRhc2hi
b2FyZF0gVGVzdCBmcmVzc25lc3MgcG9wb3ZlciBzb21ldGltZXMgcG9pbnQgdG8gd3JvbmcgcGxh
Y2UKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL2Nv
bW1vbi1jb21wb25lbnQtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
c2hhcmVkL2NvbW1vbi1jb21wb25lbnQtYmFzZS5qcwppbmRleCA3OTkxMTNmNWU3ZTNiZGEwZGY2
NDljY2JmYjlmNjYxZDliMTYwZjhjLi5jNTZlMmIwMDkxNzE4YzA5MDcyNzcxNjI0NDVmN2M5ZWU3
YTQ4OTJkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJl
ZC9jb21tb24tY29tcG9uZW50LWJhc2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9zaGFyZWQvY29tbW9uLWNvbXBvbmVudC1iYXNlLmpzCkBAIC0xMzUsMTIgKzEzNSwx
MiBAQCBjbGFzcyBDb21tb25Db21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIGVsZW1lbnQuYXBw
ZW5kQ2hpbGQoQ29tbW9uQ29tcG9uZW50QmFzZS5fY29udGV4dC5jcmVhdGVUZXh0Tm9kZShjb250
ZW50KSk7CiAgICAgfQogCi0gICAgY3JlYXRlTGluayhjb250ZW50LCB0aXRsZU9yQ2FsbGJhY2ss
IGNhbGxiYWNrLCBpc0V4dGVybmFsKQorICAgIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNh
bGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCwgdGFiSW5kZXg9bnVsbCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBDb21tb25Db21wb25lbnRCYXNlLmNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVP
ckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRlcm5hbCk7CisgICAgICAgIHJldHVybiBDb21tb25D
b21wb25lbnRCYXNlLmNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFj
aywgaXNFeHRlcm5hbCwgdGFiSW5kZXgpOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVMaW5r
KGNvbnRlbnQsIHRpdGxlT3JDYWxsYmFjaywgY2FsbGJhY2ssIGlzRXh0ZXJuYWwpCisgICAgc3Rh
dGljIGNyZWF0ZUxpbmsoY29udGVudCwgdGl0bGVPckNhbGxiYWNrLCBjYWxsYmFjaywgaXNFeHRl
cm5hbCwgdGFiSW5kZXg9bnVsbCkKICAgICB7CiAgICAgICAgIHZhciB0aXRsZSA9IHRpdGxlT3JD
YWxsYmFjazsKICAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHsKQEAgLTE1Myw2
ICsxNTMsOSBAQCBjbGFzcyBDb21tb25Db21wb25lbnRCYXNlIHsKICAgICAgICAgICAgIHRpdGxl
OiB0aXRsZSwKICAgICAgICAgfTsKIAorICAgICAgICBpZiAodGFiSW5kZXgpCisgICAgICAgICAg
ICBhdHRyaWJ1dGVzWyd0YWJpbmRleCddID0gdGFiSW5kZXg7CisKICAgICAgICAgaWYgKHR5cGVv
ZihjYWxsYmFjaykgPT09ICdzdHJpbmcnKQogICAgICAgICAgICAgYXR0cmlidXRlc1snaHJlZidd
ID0gY2FsbGJhY2s7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9iYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2Jhc2UuanMKaW5kZXggZjNhNWU2NWU1ODdmYTNl
YzQ2ZGQ5ODc4OWU2YTk2ZWY3ZTEyNzljZS4uMWZkNzllMGE0ZjBkYzdjZWIxMGI5NWE4OTc3Zjg2
YWJkYjIwNTAyZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9jb21wb25lbnRzL2Jhc2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL2Jhc2UuanMKQEAgLTI0OSwxMiArMjQ5LDE0IEBAIGNsYXNzIENvbXBv
bmVudEJhc2UgZXh0ZW5kcyBDb21tb25Db21wb25lbnRCYXNlIHsKICAgICAgICAgY3VzdG9tRWxl
bWVudHMuZGVmaW5lKG5hbWUsIGVsZW1lbnRDbGFzcyk7CiAgICAgfQogCi0gICAgY3JlYXRlRXZl
bnRIYW5kbGVyKGNhbGxiYWNrKSB7IHJldHVybiBDb21wb25lbnRCYXNlLmNyZWF0ZUV2ZW50SGFu
ZGxlcihjYWxsYmFjayk7IH0KLSAgICBzdGF0aWMgY3JlYXRlRXZlbnRIYW5kbGVyKGNhbGxiYWNr
KQorICAgIGNyZWF0ZUV2ZW50SGFuZGxlcihjYWxsYmFjaywgb3B0aW9ucz17fSkgeyByZXR1cm4g
Q29tcG9uZW50QmFzZS5jcmVhdGVFdmVudEhhbmRsZXIoY2FsbGJhY2ssIG9wdGlvbnMpOyB9Cisg
ICAgc3RhdGljIGNyZWF0ZUV2ZW50SGFuZGxlcihjYWxsYmFjaywgb3B0aW9ucz17fSkKICAgICB7
CiAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAg
ICAgICAgICAgIGlmICghKCdwcmV2ZW50RGVmYXVsdCcgaW4gb3B0aW9ucykgfHwgb3B0aW9uc1sn
cHJldmVudERlZmF1bHQnXSkKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OworICAgICAgICAgICAgaWYgKCEoJ3N0b3BQcm9wYWdhdGlvbicgaW4gb3B0aW9ucykgfHwgb3B0
aW9uc1snc3RvcFByb3BhZ2F0aW9uJ10pCisgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CiAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIGV2ZW50KTsKICAgICAg
ICAgfTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2NvbXBvbmVudHMvZnJlc2huZXNzLWluZGljYXRvci5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9mcmVzaG5lc3MtaW5kaWNhdG9yLmpzCmluZGV4
IDRmYmI5MjBjZTA2MjQ0YTMxMjFkYWE5Njg1NjI4NWQ5NTkwOTViN2EuLmEwNDc4NGJlMjJkMDk5
NGE0ZDI2MWE3NGYyOTE1OGQ1N2NkZjBkNzggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9mcmVzaG5lc3MtaW5kaWNhdG9yLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9mcmVzaG5lc3Mt
aW5kaWNhdG9yLmpzCkBAIC0xLDMxICsxLDIyIEBACiBjbGFzcyBGcmVzaG5lc3NJbmRpY2F0b3Ig
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKLSAgICBjb25zdHJ1Y3RvcihsYXN0RGF0YVBvaW50RHVy
YXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIHN1bW1hcnksIHVybCkKKyAgICBjb25zdHJ1Y3Rvcihs
YXN0RGF0YVBvaW50RHVyYXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIHN1bW1hcnkpCiAgICAgewog
ICAgICAgICBzdXBlcignZnJlc2huZXNzLWluZGljYXRvcicpOwogICAgICAgICB0aGlzLl9sYXN0
RGF0YVBvaW50RHVyYXRpb24gPSBsYXN0RGF0YVBvaW50RHVyYXRpb247CiAgICAgICAgIHRoaXMu
X3Rlc3RBZ2VUb2xlcmFuY2UgPSB0ZXN0QWdlVG9sZXJhbmNlOwotICAgICAgICB0aGlzLl91cmwg
PSB1cmw7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkID0gZmFsc2U7CiAKICAgICAgICAgdGhp
cy5fcmVuZGVySW5kaWNhdG9yTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRo
aXMuX3JlbmRlckluZGljYXRvci5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICB1cGRhdGUobGFz
dERhdGFQb2ludER1cmF0aW9uLCB0ZXN0QWdlVG9sZXJhbmNlLCB1cmwsIGhpZ2hsaWdodGVkKQor
ICAgIHVwZGF0ZShsYXN0RGF0YVBvaW50RHVyYXRpb24sIHRlc3RBZ2VUb2xlcmFuY2UsIGhpZ2hs
aWdodGVkKQogICAgIHsKICAgICAgICAgdGhpcy5fbGFzdERhdGFQb2ludER1cmF0aW9uID0gbGFz
dERhdGFQb2ludER1cmF0aW9uOwogICAgICAgICB0aGlzLl90ZXN0QWdlVG9sZXJhbmNlID0gdGVz
dEFnZVRvbGVyYW5jZTsKLSAgICAgICAgdGhpcy5fdXJsID0gdXJsOwogICAgICAgICB0aGlzLl9o
aWdobGlnaHRlZCA9IGhpZ2hsaWdodGVkOwogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigp
OwogICAgIH0KIAotICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQotICAgIHsKLSAgICAgICAg
Y29uc3QgY29udGFpbmVyID0gdGhpcy5jb250ZW50KCdjb250YWluZXInKTsKLSAgICAgICAgY29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB0aGlzLmRpc3BhdGNo
QWN0aW9uKCdzZWxlY3QnLCB0aGlzKSk7Ci0gICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3Rl
bmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigndW5zZWxlY3QnKSk7
Ci0gICAgfQotCiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAgICAgIHN1cGVyLnJlbmRlcigpOwpA
QCAtNDYsNyArMzcsNyBAQCBjbGFzcyBGcmVzaG5lc3NJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICAgICAgY29uc3QgcmF0aW5nID0gMSAvICgxICsgTWF0aC5leHAoTWF0aC5s
b2coMS4yKSAqIChob3Vyc1NpbmNlTGFzdERhdGFQb2ludCAtIHRlc3RBZ2VUb2xlcmFuY2VJbkhv
dXJzKSkpOwogICAgICAgICBjb25zdCBodWUgPSBNYXRoLnJvdW5kKDEyMCAqIHJhdGluZyk7CiAg
ICAgICAgIGNvbnN0IGJyaWdodG5lc3MgPSBNYXRoLnJvdW5kKDMwICsgNTAgKiByYXRpbmcpOwot
ICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBlbGVtZW50KCdhJywge2lkOiAnY2VsbCcsIGhyZWY6
IHVybCwgY2xhc3M6IGhpZ2hsaWdodGVkID8gJ2hpZ2hsaWdodCcgOiAnJ30pOworICAgICAgICBj
b25zdCBpbmRpY2F0b3IgPSBlbGVtZW50KCdhJywge2lkOiAnY2VsbCcsIGNsYXNzOiBgJHtoaWdo
bGlnaHRlZCA/ICdoaWdobGlnaHQnIDogJyd9YH0pOwogCiAgICAgICAgIGluZGljYXRvci5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSBgaHNsKCR7aHVlfSwgMTAwJSwgJHticmlnaHRuZXNzfSUpYDsK
ICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnY29udGFpbmVyJyksIGlu
ZGljYXRvcik7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L3BhZ2VzL3Rlc3QtZnJlc2huZXNzLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL3BhZ2VzL3Rlc3QtZnJlc2huZXNzLXBhZ2UuanMKaW5kZXggZjA5MmRkYjliN2M1
NDA3ZWY4NzdiMzIzOGMyODNkN2MwYWM3ZWQzNy4uYzY5Mzc1M2JlZThhZjA1NWQ1ZjNmNmY4MjZl
OTZiNGRmNTQ5MWEzOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9wYWdlcy90ZXN0LWZyZXNobmVzcy1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvdGVzdC1mcmVzaG5lc3MtcGFnZS5qcwpAQCAtOSwyNyAr
OSwyMSBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7
CiAgICAgICAgIHRoaXMuX2xhc3REYXRhUG9pbnRCeUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAg
ICAgICB0aGlzLl9pbmRpY2F0b3JCeUNvbmZpZ3VyYXRpb24gPSBudWxsOwogICAgICAgICB0aGlz
Ll9yZW5kZXJUYWJsZUxhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9y
ZW5kZXJUYWJsZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0
ZWRJbmRpY2F0b3IgPSBudWxsOwotICAgICAgICB0aGlzLl9ob3ZlcmluZ1Rvb2x0aXAgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5faG92ZXJpbmdJbmRpY2F0b3IgPSBudWxsOworICAgICAgICB0aGlz
Ll9pbmRpY2F0b3JGb3JUb29sdGlwID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZmlyc3RJbmRpY2F0
b3JDZWxsID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fYnVpbGRlckJ5SW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdGFiSW5k
ZXhGb3JJbmRpY2F0b3IgPSBudWxsOworICAgICAgICB0aGlzLl9jb29yZGluYXRlRm9ySW5kaWNh
dG9yID0gbnVsbDsKKyAgICAgICAgdGhpcy5faW5kaWNhdG9yQ2VsbEdyaWQgPSBudWxsOworICAg
ICAgICB0aGlzLl9za2lwTmV4dFN0YXRlQ2xlYW5PblNjcm9sbCA9IGZhbHNlOworICAgICAgICB0
aGlzLl9sYXN0Rm9jdXNlZENlbGwgPSBudWxsOwogICAgICAgICB0aGlzLl9yZW5kZXJUb29sdGlw
TGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclRvb2x0aXAu
YmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fbG9hZENvbmZpZyhzdW1tYXJ5UGFnZUNvbmZp
Z3VyYXRpb24pOwogICAgIH0KIAotICAgIGRpZENvbnN0cnVjdFNoYWRvd1RyZWUoKQotICAgIHsK
LSAgICAgICAgY29uc3QgdG9vbHRpcFRhYmxlID0gdGhpcy5jb250ZW50KCd0b29sdGlwLXRhYmxl
Jyk7Ci0gICAgICAgIHRvb2x0aXBUYWJsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywg
KCkgPT4gewotICAgICAgICAgICAgdGhpcy5faG92ZXJpbmdUb29sdGlwID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Ci0gICAgICAgIH0pOwotICAgICAgICB0b29s
dGlwVGFibGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHsKLSAgICAgICAg
ICAgIHRoaXMuX2hvdmVyaW5nVG9vbHRpcCA9IGZhbHNlOwotICAgICAgICAgICAgdGhpcy5lbnF1
ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAgICAgbmFtZSgpIHsgcmV0dXJu
ICdUZXN0LUZyZXNobmVzcyc7IH0KIAogICAgIF9sb2FkQ29uZmlnKHN1bW1hcnlQYWdlQ29uZmln
dXJhdGlvbikKQEAgLTY4LDYgKzYyLDg3IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVu
ZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICAgICAgc3VwZXIub3BlbihzdGF0ZSk7CiAgICAgfQog
CisgICAgZGlkQ29uc3RydWN0U2hhZG93VHJlZSgpCisgICAgeworICAgICAgICBzdXBlci5kaWRD
b25zdHJ1Y3RTaGFkb3dUcmVlKCk7CisKKyAgICAgICAgY29uc3QgdG9vbHRpcFRhYmxlID0gdGhp
cy5jb250ZW50KCd0b29sdGlwLXRhYmxlJyk7CisgICAgICAgIHRoaXMuY29udGVudCgpLmFkZEV2
ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBpZiAoIXRvb2x0
aXBUYWJsZS5jb250YWlucyhldmVudC50YXJnZXQpKQorICAgICAgICAgICAgICAgIHRoaXMuX2Ns
ZWFySW5kaWNhdG9yU3RhdGUoZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICB0b29sdGlw
VGFibGUub25rZXlkb3duID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICBpZiAoZXZlbnQuY29kZSA9PSAnRXNjYXBlJykgeworICAgICAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fbGFzdEZvY3VzZWRDZWxsLmZvY3VzKHtw
cmV2ZW50U2Nyb2xsOiB0cnVlfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHtwcmV2ZW50
RGVmYXVsdDogZmFsc2UsIHN0b3BQcm9wYWdhdGlvbjogZmFsc2V9KTsKKworICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4geworICAgICAgICAgICAg
aWYgKCFbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J10u
aW5jbHVkZXMoZXZlbnQuY29kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBpZiAoIXRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgJiYgIXRoaXMuX2hvdmVyaW5nSW5k
aWNhdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ZpcnN0SW5kaWNhdG9yQ2VsbCkK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RJbmRpY2F0b3JDZWxsLmZvY3VzKHtwcmV2
ZW50U2Nyb2xsOiB0cnVlfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBsZXQgW3JvdywgY29sdW1uXSA9IHRoaXMuX2Nvb3JkaW5hdGVGb3JJ
bmRpY2F0b3IuZ2V0KHRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgfHwgdGhpcy5faG92ZXJpbmdJ
bmRpY2F0b3IpOworICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IG51bGw7CisKKyAgICAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICBzd2l0Y2goZXZlbnQuY29k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlICdBcnJvd1VwJzoKKyAgICAg
ICAgICAgICAgICAgICAgcm93IC09IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6CisgICAgICAgICAgICAgICAgICAgIHJvdyAr
PSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdB
cnJvd0xlZnQnOgorICAgICAgICAgICAgICAgICAgICBjb2x1bW4gLT0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0aW9uID0gJ2xlZnRPbmx5JworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzoKKyAgICAgICAgICAgICAgICAg
ICAgY29sdW1uICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdyaWdodE9u
bHknCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RJbmRpY2F0b3JD
ZWxsID0gdGhpcy5fZmluZENsb3Nlc3RJbmRpY2F0b3JDZWxsRm9yQ29vcmRpbmF0ZShjb2x1bW4s
IHJvdywgdGhpcy5faW5kaWNhdG9yQ2VsbEdyaWQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICBp
ZiAoY2xvc2VzdEluZGljYXRvckNlbGwpCisgICAgICAgICAgICAgICAgY2xvc2VzdEluZGljYXRv
ckNlbGwuZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgX2ZpbmRDbG9zZXN0SW5kaWNhdG9yQ2VsbEZvckNvb3JkaW5hdGUoY29sdW1uSW5kZXgs
IHJvd0luZGV4LCBncmlkLCBkaXJlY3Rpb24pCisgICAgeworICAgICAgICByb3dJbmRleCA9IE1h
dGgubWluKE1hdGgubWF4KHJvd0luZGV4LCAwKSwgZ3JpZC5sZW5ndGggLSAxKTsKKyAgICAgICAg
Y29uc3Qgcm93ID0gZ3JpZFtyb3dJbmRleF07CisgICAgICAgIGlmICghcm93Lmxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4o
TWF0aC5tYXgoY29sdW1uSW5kZXgsIDApLCByb3cubGVuZ3RoIC0gMSk7CisgICAgICAgIGlmIChy
b3dbc3RhcnRdKQorICAgICAgICAgICAgcmV0dXJuIHJvd1tzdGFydF07CisKKyAgICAgICAgbGV0
IG9mZnNldCA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjb25zdCBs
ZWZ0SW5kZXggPSBzdGFydCAtIG9mZnNldDsKKyAgICAgICAgICAgIGlmIChsZWZ0SW5kZXggPj0g
MCAmJiByb3dbbGVmdEluZGV4XSAmJiBkaXJlY3Rpb24gIT0gJ3JpZ2h0T25seScpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJvd1tsZWZ0SW5kZXhdOworICAgICAgICAgICAgY29uc3QgcmlnaHRJ
bmRleCA9IHN0YXJ0ICsgb2Zmc2V0OworICAgICAgICAgICAgaWYgKHJpZ2h0SW5kZXggPCByb3cu
bGVuZ3RoICYmIHJvd1tyaWdodEluZGV4XSAmJiBkaXJlY3Rpb24gIT0gJ2xlZnRPbmx5JykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcm93W3JpZ2h0SW5kZXhdOworICAgICAgICAgICAgaWYgKGxl
ZnRJbmRleCA8IDAgJiYgcmlnaHRJbmRleCA+PSByb3cubGVuZ3RoKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgb2Zmc2V0ICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgfQorCiAgICAgX2ZldGNoVGVzdFJlc3VsdHMoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUgPSBEYXRlLm5vdygpOwpAQCAtMTIzLDM2
ICsxOTgsNDUgQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRp
bmcgewogCiAgICAgICAgIHRoaXMuX3JlbmRlclRhYmxlTGF6aWx5LmV2YWx1YXRlKHRoaXMuX3Bs
YXRmb3JtcywgdGhpcy5fbWV0cmljcyk7CiAKLSAgICAgICAgbGV0IGJ1aWxkU3VtbWFyeUZvckN1
cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gbnVsbDsKLSAgICAgICAgbGV0IGJ1aWxkRm9y
Q3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBudWxsOwotICAgICAgICBsZXQgY29tbWl0
U2V0Rm9yQ3VycmVudEhpZ2hsaWdodGVkSW5kaWNhdG9yID0gbnVsbDsKLSAgICAgICAgY29uc3Qg
YnVpbGRlckZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gdGhpcy5fY3VycmVudGx5
SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPyB0aGlzLl9idWlsZGVyQnlJbmRpY2F0b3IuZ2V0KHRoaXMu
X2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yKSA6IG51bGw7CisgICAgICAgIGxldCBidWls
ZFN1bW1hcnlGb3JGb2N1c2luZ0luZGljYXRvciA9IG51bGw7CisgICAgICAgIGxldCBidWlsZEZv
ckZvY3VzaW5nSW5kaWNhdG9yID0gbnVsbDsKKyAgICAgICAgbGV0IGNvbW1pdFNldEZvckZvY3Vz
aW5nZEluZGljYXRvciA9IG51bGw7CisgICAgICAgIGxldCBjaGFydFVSTEZvckZvY3VzaW5nSW5k
aWNhdG9yID0gbnVsbDsKKyAgICAgICAgbGV0IHBsYXRmb3JtRm9yRm9jdXNpbmdJbmRpY2F0b3Ig
PSBudWxsOworICAgICAgICBsZXQgbWV0cmljRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSBudWxsOwor
ICAgICAgICBjb25zdCBidWlsZGVyRm9yRm9jdXNpbmdJbmRpY2F0b3IgPSB0aGlzLl9pbmRpY2F0
b3JGb3JUb29sdGlwID8gdGhpcy5fYnVpbGRlckJ5SW5kaWNhdG9yLmdldCh0aGlzLl9pbmRpY2F0
b3JGb3JUb29sdGlwKSA6IG51bGw7CisgICAgICAgIGNvbnN0IGJ1aWxkZXJGb3JIb3ZlcmluZ0lu
ZGljYXRvciA9IHRoaXMuX2hvdmVyaW5nSW5kaWNhdG9yID8gdGhpcy5fYnVpbGRlckJ5SW5kaWNh
dG9yLmdldCh0aGlzLl9ob3ZlcmluZ0luZGljYXRvcikgOiBudWxsOwogICAgICAgICBmb3IgKGNv
bnN0IFtwbGF0Zm9ybSwgbGFzdERhdGFQb2ludEJ5TWV0cmljXSBvZiB0aGlzLl9sYXN0RGF0YVBv
aW50QnlDb25maWd1cmF0aW9uLmVudHJpZXMoKSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBb
bWV0cmljLCBsYXN0RGF0YVBvaW50XSBvZiBsYXN0RGF0YVBvaW50QnlNZXRyaWMuZW50cmllcygp
KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgdGltZUR1cmF0aW9uID0gdGhpcy5fbWVhc3VyZW1l
bnRTZXRGZXRjaFRpbWUgLSBsYXN0RGF0YVBvaW50LnRpbWU7CiAgICAgICAgICAgICAgICAgY29u
c3QgdGltZUR1cmF0aW9uU3VtbWFyeVByZWZpeCA9IGxhc3REYXRhUG9pbnQuaGFzQ3VycmVudERh
dGFQb2ludCA/ICcnIDogJ01vcmUgdGhhbiAnOwogICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVE
dXJhdGlvblN1bW1hcnkgPSBCdWlsZFJlcXVlc3QuZm9ybWF0VGltZUludGVydmFsKHRpbWVEdXJh
dGlvbik7CiAgICAgICAgICAgICAgICAgY29uc3Qgc3VtbWFyeSA9IGAke3RpbWVEdXJhdGlvblN1
bW1hcnlQcmVmaXh9JHt0aW1lRHVyYXRpb25TdW1tYXJ5fSBzaW5jZSBsYXRlc3QgZGF0YSBwb2lu
dC5gOwotICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHRoaXMuX3JvdXRlci51cmwoJ2NoYXJ0
cycsIENoYXJ0c1BhZ2UuY3JlYXRlU3RhdGVGb3JEYXNoYm9hcmRJdGVtKHBsYXRmb3JtLmlkKCks
IG1ldHJpYy5pZCgpLAotICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZWFzdXJlbWVudFNldEZl
dGNoVGltZSAtIHRoaXMuX3RpbWVEdXJhdGlvbikpOwogCiAgICAgICAgICAgICAgICAgY29uc3Qg
aW5kaWNhdG9yID0gdGhpcy5faW5kaWNhdG9yQnlDb25maWd1cmF0aW9uLmdldChwbGF0Zm9ybSku
Z2V0KG1ldHJpYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdo
dGVkSW5kaWNhdG9yICYmIHRoaXMuX2N1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID09PSBp
bmRpY2F0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRTdW1tYXJ5Rm9yQ3VycmVudGx5
SGlnaGxpZ2h0ZWRJbmRpY2F0b3IgPSBzdW1tYXJ5OwotICAgICAgICAgICAgICAgICAgICBidWls
ZEZvckN1cnJlbnRseUhpZ2hsaWdodGVkSW5kaWNhdG9yID0gbGFzdERhdGFQb2ludC5sYXN0QnVp
bGQ7Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1pdFNldEZvckN1cnJlbnRIaWdobGlnaHRlZElu
ZGljYXRvciA9IGxhc3REYXRhUG9pbnQuY29tbWl0U2V0T2ZMYXN0UG9pbnQ7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgJiYgdGhpcy5faW5kaWNhdG9yRm9y
VG9vbHRpcCA9PT0gaW5kaWNhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkU3VtbWFy
eUZvckZvY3VzaW5nSW5kaWNhdG9yID0gc3VtbWFyeTsKKyAgICAgICAgICAgICAgICAgICAgYnVp
bGRGb3JGb2N1c2luZ0luZGljYXRvciA9IGxhc3REYXRhUG9pbnQubGFzdEJ1aWxkOworICAgICAg
ICAgICAgICAgICAgICBjb21taXRTZXRGb3JGb2N1c2luZ2RJbmRpY2F0b3IgPSBsYXN0RGF0YVBv
aW50LmNvbW1pdFNldE9mTGFzdFBvaW50OworICAgICAgICAgICAgICAgICAgICBjaGFydFVSTEZv
ckZvY3VzaW5nSW5kaWNhdG9yID0gIHRoaXMuX3JvdXRlci51cmwoJ2NoYXJ0cycsIENoYXJ0c1Bh
Z2UuY3JlYXRlU3RhdGVGb3JEYXNoYm9hcmRJdGVtKHBsYXRmb3JtLmlkKCksIG1ldHJpYy5pZCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWVhc3VyZW1lbnRTZXRGZXRjaFRpbWUg
LSB0aGlzLl90aW1lRHVyYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1Gb3JG
b2N1c2luZ0luZGljYXRvciA9IHBsYXRmb3JtOworICAgICAgICAgICAgICAgICAgICBtZXRyaWNG
b3JGb2N1c2luZ0luZGljYXRvciA9IG1ldHJpYzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgdGhpcy5fYnVpbGRlckJ5SW5kaWNhdG9yLnNldChpbmRpY2F0b3IsIGxhc3REYXRh
UG9pbnQuYnVpbGRlcik7Ci0gICAgICAgICAgICAgICAgaW5kaWNhdG9yLnVwZGF0ZSh0aW1lRHVy
YXRpb24sIHRoaXMuX3Rlc3RBZ2VUb2xlcmFuY2UsIHVybCwgYnVpbGRlckZvckN1cnJlbnRseUhp
Z2hsaWdodGVkSW5kaWNhdG9yICYmIGJ1aWxkZXJGb3JDdXJyZW50bHlIaWdobGlnaHRlZEluZGlj
YXRvciA9PT0gbGFzdERhdGFQb2ludC5idWlsZGVyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBo
aWdobGlnaHRlZCA9IGJ1aWxkZXJGb3JGb2N1c2luZ0luZGljYXRvciAmJiBidWlsZGVyRm9yRm9j
dXNpbmdJbmRpY2F0b3IgPT0gbGFzdERhdGFQb2ludC5idWlsZGVyCisgICAgICAgICAgICAgICAg
ICAgIHx8IGJ1aWxkZXJGb3JIb3ZlcmluZ0luZGljYXRvciAmJiBidWlsZGVyRm9ySG92ZXJpbmdJ
bmRpY2F0b3IgPT09IGxhc3REYXRhUG9pbnQuYnVpbGRlcjsKKyAgICAgICAgICAgICAgICBpbmRp
Y2F0b3IudXBkYXRlKHRpbWVEdXJhdGlvbiwgdGhpcy5fdGVzdEFnZVRvbGVyYW5jZSwgaGlnaGxp
Z2h0ZWQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JlbmRlclRv
b2x0aXBMYXppbHkuZXZhbHVhdGUodGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3Is
IHRoaXMuX2hvdmVyaW5nVG9vbHRpcCwgYnVpbGRTdW1tYXJ5Rm9yQ3VycmVudGx5SGlnaGxpZ2h0
ZWRJbmRpY2F0b3IsIGJ1aWxkRm9yQ3VycmVudGx5SGlnaGxpZ2h0ZWRJbmRpY2F0b3IsIGNvbW1p
dFNldEZvckN1cnJlbnRIaWdobGlnaHRlZEluZGljYXRvcik7CisgICAgICAgIHRoaXMuX3JlbmRl
clRvb2x0aXBMYXppbHkuZXZhbHVhdGUodGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCwgdGhpcy5f
c2hvd1Rvb2x0aXAsIGJ1aWxkU3VtbWFyeUZvckZvY3VzaW5nSW5kaWNhdG9yLCBidWlsZEZvckZv
Y3VzaW5nSW5kaWNhdG9yLAorICAgICAgICAgICAgY29tbWl0U2V0Rm9yRm9jdXNpbmdkSW5kaWNh
dG9yLCBjaGFydFVSTEZvckZvY3VzaW5nSW5kaWNhdG9yLCBwbGF0Zm9ybUZvckZvY3VzaW5nSW5k
aWNhdG9yLCBtZXRyaWNGb3JGb2N1c2luZ0luZGljYXRvciwgdGhpcy5fdGFiSW5kZXhGb3JJbmRp
Y2F0b3IuZ2V0KHRoaXMuX2luZGljYXRvckZvclRvb2x0aXApKTsKICAgICB9CiAKLSAgICBfcmVu
ZGVyVG9vbHRpcChpbmRpY2F0b3IsIGhvdmVyaW5nVG9vbHRpcCwgYnVpbGRTdW1tYXJ5LCBidWls
ZCwgY29tbWl0U2V0KQorICAgIF9yZW5kZXJUb29sdGlwKGluZGljYXRvciwgc2hvd1Rvb2x0aXAs
IGJ1aWxkU3VtbWFyeSwgYnVpbGQsIGNvbW1pdFNldCwgY2hhcnRVUkwsIHBsYXRmb3JtLCBtZXRy
aWMsIHRhYkluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKCFpbmRpY2F0b3IgfHwgIWJ1aWxkU3Vt
bWFyeSkgewotICAgICAgICAgICAgdGhpcy5jb250ZW50KCd0b29sdGlwLWFuY2hvcicpLnN0eWxl
LmRpc3BsYXkgPSBob3ZlcmluZ1Rvb2x0aXAgPyBudWxsIDogJ25vbmUnOworICAgICAgICBpZiAo
IWluZGljYXRvciB8fCAhYnVpbGRTdW1tYXJ5IHx8ICFzaG93VG9vbHRpcCkgeworICAgICAgICAg
ICAgdGhpcy5jb250ZW50KCd0b29sdGlwLWFuY2hvcicpLnN0eWxlLmRpc3BsYXkgPSAgc2hvd1Rv
b2x0aXAgPyBudWxsIDogJ25vbmUnOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CkBAIC0x
NjYsNiArMjUwLDE0IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhI
ZWFkaW5nIHsKIAogICAgICAgICBsZXQgdGFibGVDb250ZW50ID0gW2VsZW1lbnQoJ3RyJywgZWxl
bWVudCgndGQnLCB7Y29sc3BhbjogMn0sIGJ1aWxkU3VtbWFyeSkpXTsKIAorICAgICAgICBpZiAo
Y2hhcnRVUkwpIHsKKyAgICAgICAgICAgIGNvbnN0IGxpbmtEZXNjcmlwdGlvbiA9IGAke21ldHJp
Yy50ZXN0KCkubmFtZSgpfSBvbiAke3BsYXRmb3JtLm5hbWUoKX1gOworICAgICAgICAgICAgdGFi
bGVDb250ZW50LnB1c2goZWxlbWVudCgndHInLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgn
dGQnLCAnQ2hhcnQnKSwKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAy
fSwgbGluayhsaW5rRGVzY3JpcHRpb24sIGxpbmtEZXNjcmlwdGlvbiwgY2hhcnRVUkwsIHRydWUs
IHRhYkluZGV4KSkKKyAgICAgICAgICAgIF0pKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChj
b21taXRTZXQpIHsKICAgICAgICAgICAgIGlmIChjb21taXRTZXQucmVwb3NpdG9yaWVzKCkubGVu
Z3RoKQogICAgICAgICAgICAgICAgIHRhYmxlQ29udGVudC5wdXNoKGVsZW1lbnQoJ3RyJywgZWxl
bWVudCgndGgnLCB7Y29sc3BhbjogMn0sICdMYXRlc3QgYnVpbGQgaW5mb3JtYXRpb24nKSkpOwpA
QCAtMTc0LDcgKzI2Niw3IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdp
dGhIZWFkaW5nIHsKICAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBjb21taXRTZXQuY29t
bWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxl
bWVudCgndHInLCBbCiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywgcmVwb3NpdG9y
eS5uYW1lKCkpLAotICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGNvbW1pdC51cmwo
KSA/IGxpbmsoY29tbWl0LmxhYmVsKCksIGNvbW1pdC5sYWJlbCgpLCBjb21taXQudXJsKCksIHRy
dWUpIDogY29tbWl0LmxhYmVsKCkpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywg
Y29tbWl0LnVybCgpID8gbGluayhjb21taXQubGFiZWwoKSwgY29tbWl0LmxhYmVsKCksIGNvbW1p
dC51cmwoKSwgdHJ1ZSwgdGFiSW5kZXgpIDogY29tbWl0LmxhYmVsKCkpCiAgICAgICAgICAgICAg
ICAgXSk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgIH0KQEAgLTE4NSw3ICsyNzcsNyBAQCBj
bGFzcyBUZXN0RnJlc2huZXNzUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAg
ICAgICB0YWJsZUNvbnRlbnQucHVzaChlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICBl
bGVtZW50KCd0ZCcsICdCdWlsZCcpLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywge2Nv
bHNwYW46IDJ9LCBbCi0gICAgICAgICAgICAgICAgICAgIHVybCA/IGxpbmsoYnVpbGROdW1iZXIs
IGJ1aWxkLmxhYmVsKCksIHVybCwgdHJ1ZSkgOiBidWlsZE51bWJlcgorICAgICAgICAgICAgICAg
ICAgICB1cmwgPyBsaW5rKGJ1aWxkTnVtYmVyLCBidWlsZC5sYWJlbCgpLCB1cmwsIHRydWUsIHRh
YkluZGV4KSA6IGJ1aWxkTnVtYmVyCiAgICAgICAgICAgICAgICAgXSksCiAgICAgICAgICAgICBd
KSk7CiAgICAgICAgIH0KQEAgLTE5NiwyMSArMjg4LDU0IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAgICBfcmVuZGVyVGFibGUocGxhdGZvcm1z
LCBtZXRyaWNzKQogICAgIHsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2Uu
Y3JlYXRlRWxlbWVudDsKLSAgICAgICAgY29uc3QgdGFibGVCb2R5RWxlbWVudCA9IFtdOwogICAg
ICAgICBjb25zdCB0YWJsZUhlYWRFbGVtZW50cyA9IFtlbGVtZW50KCd0aCcsICB7Y2xhc3M6ICd0
YWJsZS1jb3JuZXIgcm93LWhlYWQnfSwgJ1BsYXRmb3JtIFxcIFRlc3QnKV07CiAKICAgICAgICAg
Zm9yIChjb25zdCBtZXRyaWMgb2YgbWV0cmljcykKICAgICAgICAgICAgIHRhYmxlSGVhZEVsZW1l
bnRzLnB1c2goZWxlbWVudCgndGgnLCB7Y2xhc3M6ICdkaWFnb25hbC1oZWFkJ30sIGVsZW1lbnQo
J2RpdicsIG1ldHJpYy50ZXN0KCkuZnVsbE5hbWUoKSkpKTsKIAogICAgICAgICB0aGlzLl9pbmRp
Y2F0b3JCeUNvbmZpZ3VyYXRpb24gPSBuZXcgTWFwOwotICAgICAgICBmb3IgKGNvbnN0IHBsYXRm
b3JtIG9mIHBsYXRmb3JtcykgeworICAgICAgICB0aGlzLl9jb29yZGluYXRlRm9ySW5kaWNhdG9y
ID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fdGFiSW5kZXhGb3JJbmRpY2F0b3IgPSBuZXcgTWFw
OworICAgICAgICB0aGlzLl9pbmRpY2F0b3JDZWxsR3JpZCA9IFtdOworICAgICAgICB0aGlzLl9m
aXJzdEluZGljYXRvckNlbGwgPSBudWxsOworICAgICAgICBsZXQgY3VycmVudFRhYkluZGV4ID0g
MTsKKworICAgICAgICBjb25zdCB0YWJsZUJvZHlFbGVtZW50ID0gcGxhdGZvcm1zLm1hcCgocGxh
dGZvcm0sIHJvd0luZGV4KSA9PiAgewogICAgICAgICAgICAgY29uc3QgaW5kaWNhdG9yQnlNZXRy
aWMgPSBuZXcgTWFwOwogICAgICAgICAgICAgdGhpcy5faW5kaWNhdG9yQnlDb25maWd1cmF0aW9u
LnNldChwbGF0Zm9ybSwgaW5kaWNhdG9yQnlNZXRyaWMpOwotICAgICAgICAgICAgdGFibGVCb2R5
RWxlbWVudC5wdXNoKGVsZW1lbnQoJ3RyJywKLSAgICAgICAgICAgICAgICBbZWxlbWVudCgndGgn
LCB7Y2xhc3M6ICdyb3ctaGVhZCd9LCBwbGF0Zm9ybS5sYWJlbCgpKSwgLi4ubWV0cmljcy5tYXAo
KG1ldHJpYykgPT4gdGhpcy5fY29uc3RydWN0VGFibGVDZWxsKHBsYXRmb3JtLCBtZXRyaWMsIGlu
ZGljYXRvckJ5TWV0cmljKSldKSk7Ci0gICAgICAgIH0KIAotICAgICAgICB0aGlzLnJlbmRlclJl
cGxhY2UodGhpcy5jb250ZW50KCd0ZXN0LWhlYWx0aCcpLCBbZWxlbWVudCgndGhlYWQnLCB0YWJs
ZUhlYWRFbGVtZW50cyksIGVsZW1lbnQoJ3Rib2R5JywgdGFibGVCb2R5RWxlbWVudCldKTsKKyAg
ICAgICAgICAgIGxldCBpbmRpY2F0b3JDZWxsc0luQ3VycmVudFJvdyA9IFtdOworCisgICAgICAg
ICAgICBjb25zdCBjZWxscyA9IG1ldHJpY3MubWFwKChtZXRyaWMsIGNvbHVtbkluZGV4KSA9PiB7
CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkUGxhdGZvcm1NZXRyaWNDb21iaW5h
dGlvbihwbGF0Zm9ybSwgbWV0cmljKSkgeworICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JD
ZWxsc0luQ3VycmVudFJvdy5wdXNoKG51bGwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudCgndGQnLCB7Y2xhc3M6ICdibGFuay1jZWxsJ30sIGVsZW1lbnQoJ2RpdicpKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBuZXcg
RnJlc2huZXNzSW5kaWNhdG9yOworICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBlbGVtZW50
KCd0ZCcsIHtjbGFzczogJ3N0YXR1cy1jZWxsJywgdGFiaW5kZXg6IGN1cnJlbnRUYWJJbmRleH0s
IGluZGljYXRvcik7CisgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJlQ29udGFpbmVyQ2Vs
bEZvckluZGljYXRvcihjZWxsLCBpbmRpY2F0b3IpOworCisgICAgICAgICAgICAgICAgaW5kaWNh
dG9yQ2VsbHNJbkN1cnJlbnRSb3cucHVzaChjZWxsKTsKKyAgICAgICAgICAgICAgICBpbmRpY2F0
b3JCeU1ldHJpYy5zZXQobWV0cmljLCBpbmRpY2F0b3IpOworICAgICAgICAgICAgICAgIHRoaXMu
X3RhYkluZGV4Rm9ySW5kaWNhdG9yLnNldChpbmRpY2F0b3IsIGN1cnJlbnRUYWJJbmRleCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fY29vcmRpbmF0ZUZvckluZGljYXRvci5zZXQoaW5kaWNhdG9y
LCBbcm93SW5kZXgsIGNvbHVtbkluZGV4XSk7CisKKyAgICAgICAgICAgICAgICBjdXJyZW50VGFi
SW5kZXggKz0gMTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2ZpcnN0SW5kaWNhdG9yQ2Vs
bCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RJbmRpY2F0b3JDZWxsID0gY2VsbDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgdGhpcy5faW5kaWNhdG9yQ2VsbEdyaWQucHVzaChpbmRpY2F0b3JDZWxsc0luQ3VycmVudFJv
dyk7CisKKyAgICAgICAgICAgIGNvbnN0IHJvdyA9IGVsZW1lbnQoJ3RyJywgW2VsZW1lbnQoJ3Ro
Jywge2NsYXNzOiAncm93LWhlYWQnfSwgcGxhdGZvcm0ubGFiZWwoKSksIC4uLmNlbGxzXSk7Cisg
ICAgICAgICAgICByZXR1cm4gcm93OworICAgICAgICB9KTsKKworICAgICAgICBjb25zdCB0YWJs
ZUJvZHkgPSBlbGVtZW50KCd0Ym9keScsIHRhYmxlQm9keUVsZW1lbnQpOworICAgICAgICB0YWJs
ZUJvZHkub25zY3JvbGwgPSB0aGlzLmNyZWF0ZUV2ZW50SGFuZGxlcigoKSA9PiB0aGlzLl9jbGVh
ckluZGljYXRvclN0YXRlKHRydWUpKTsKKworICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhp
cy5jb250ZW50KCd0ZXN0LWhlYWx0aCcpLCBbZWxlbWVudCgndGhlYWQnLCB0YWJsZUhlYWRFbGVt
ZW50cyksIHRhYmxlQm9keV0pOwogICAgIH0KIAogICAgIF9pc1ZhbGlkUGxhdGZvcm1NZXRyaWND
b21iaW5hdGlvbihwbGF0Zm9ybSwgbWV0cmljKQpAQCAtMjIwLDMzICszNDUsNTYgQEAgY2xhc3Mg
VGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAgICAg
JiYgcGxhdGZvcm0uaGFzTWV0cmljKG1ldHJpYyk7CiAgICAgfQogCi0gICAgX2NvbnN0cnVjdFRh
YmxlQ2VsbChwbGF0Zm9ybSwgbWV0cmljLCBpbmRpY2F0b3JCeU1ldHJpYykKKyAgICBfY29uZmln
dXJlQ29udGFpbmVyQ2VsbEZvckluZGljYXRvcihjZWxsLCBpbmRpY2F0b3IpCiAgICAgewotICAg
ICAgICBjb25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwotCi0gICAg
ICAgIGlmICghdGhpcy5faXNWYWxpZFBsYXRmb3JtTWV0cmljQ29tYmluYXRpb24ocGxhdGZvcm0s
IG1ldHJpYykpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudCgndGQnLCB7Y2xhc3M6ICdibGFu
ay1jZWxsJ30sIGVsZW1lbnQoJ2RpdicpKTsKLQotICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSBu
ZXcgRnJlc2huZXNzSW5kaWNhdG9yOwotICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24o
J3NlbGVjdCcsIChvcmlnaW5hdG9yKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlI
aWdobGlnaHRlZEluZGljYXRvciA9IG9yaWdpbmF0b3I7CisgICAgICAgIGNlbGwub25tb3VzZW92
ZXIgPSB0aGlzLmNyZWF0ZUV2ZW50SGFuZGxlcigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9o
b3ZlcmluZ0luZGljYXRvciA9IGluZGljYXRvcjsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRv
UmVuZGVyKCk7CiAgICAgICAgIH0pOwotICAgICAgICBpbmRpY2F0b3IubGlzdGVuVG9BY3Rpb24o
J3Vuc2VsZWN0JywgKCkgPT4gewotICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5SGlnaGxpZ2h0
ZWRJbmRpY2F0b3IgPSBudWxsOworICAgICAgICBjZWxsLm9uZm9jdXMgPSB0aGlzLmNyZWF0ZUV2
ZW50SGFuZGxlcigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcCA9ICF0aGlz
Ll9zaG93VG9vbHRpcCB8fCB0aGlzLl9pbmRpY2F0b3JGb3JUb29sdGlwICE9IGluZGljYXRvcjsK
KyAgICAgICAgICAgIHRoaXMuX2hvdmVyaW5nSW5kaWNhdG9yID0gaW5kaWNhdG9yOworICAgICAg
ICAgICAgdGhpcy5faW5kaWNhdG9yRm9yVG9vbHRpcCA9IGluZGljYXRvcjsKKyAgICAgICAgICAg
IHRoaXMuX2xhc3RGb2N1c2VkQ2VsbCA9IGNlbGw7CisgICAgICAgICAgICB0aGlzLl9za2lwTmV4
dFN0YXRlQ2xlYW5PblNjcm9sbCA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1Jl
bmRlcigpOwogICAgICAgICB9KTsKLSAgICAgICAgaW5kaWNhdG9yQnlNZXRyaWMuc2V0KG1ldHJp
YywgaW5kaWNhdG9yKTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RkJywge2NsYXNzOiAnc3Rh
dHVzLWNlbGwnfSwgaW5kaWNhdG9yKTsKKyAgICAgICAgY2VsbC5vbmtleWRvd24gPSB0aGlzLmNy
ZWF0ZUV2ZW50SGFuZGxlcigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGlmIChldmVudC5jb2Rl
ID09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PSAnRXNjYXBlJykgeworICAgICAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAgPSBldmVudC5jb2Rl
ID09ICdFbnRlcicgPyAhdGhpcy5fc2hvd1Rvb2x0aXAgOiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9LCB7cHJl
dmVudERlZmF1bHQ6IGZhbHNlLCBzdG9wUHJvcGFnYXRpb246IGZhbHNlfSk7CisgICAgICAgIGNl
bGwub25jbGljayA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHsKKyAgICAgICAgICAg
IGlmICghdGhpcy5fc2hvd1Rvb2x0aXApIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaG93VG9v
bHRpcCA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX2NsZWFySW5kaWNhdG9yU3Rh
dGUoZHVlVG9TY3JvbGwpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2tpcE5leHRTdGF0ZUNs
ZWFuT25TY3JvbGwpIHsKKyAgICAgICAgICAgIHRoaXMuX3NraXBOZXh0U3RhdGVDbGVhbk9uU2Ny
b2xsID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoZHVlVG9TY3JvbGwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Nob3dUb29sdGlwID0gZmFsc2U7
CisgICAgICAgIHRoaXMuX2luZGljYXRvckZvclRvb2x0aXAgPSBudWxsOworICAgICAgICB0aGlz
Ll9ob3ZlcmluZ0luZGljYXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYDxzZWN0aW9uIGNsYXNzPSJwYWdlLXdpdGgtaGVhZGluZyI+CisgICAgICAgICAgICA8
dGFibGUgaWQ9InRlc3QtaGVhbHRoIj48L3RhYmxlPgogICAgICAgICAgICAgPGRpdiBpZD0idG9v
bHRpcC1hbmNob3IiPgogICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0idG9vbHRpcC10YWJsZSI+
PC90YWJsZT4KICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPHRhYmxlIGlkPSJ0ZXN0
LWhlYWx0aCI+PC90YWJsZT4KICAgICAgICAgPC9zZWN0aW9uPmA7CiAgICAgfQogCkBAIC0yOTUs
NiArNDQzLDcgQEAgY2xhc3MgVGVzdEZyZXNobmVzc1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRp
bmcgewogICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDI0cmVtKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICN0ZXN0LWhlYWx0aCB0ZC5zdGF0dXMtY2VsbCB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgIG1hcmdpbjog
MDsKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICAgICAgIG1heC13aWR0
aDogMi4ycmVtOwpAQCAtMzAyLDYgKzQ1MSwyMSBAQCBjbGFzcyBUZXN0RnJlc2huZXNzUGFnZSBl
eHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAyLjJy
ZW07CiAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogMi4ycmVtOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgI3Rlc3QtaGVhbHRoIHRkLnN0YXR1cy1jZWxsOmZvY3VzIHsKKyAgICAgICAg
ICAgICAgICBvdXRsaW5lOiBub25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgI3Rlc3Qt
aGVhbHRoIHRkLnN0YXR1cy1jZWxsOmZvY3VzOjphZnRlciB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIiOworICAgICAgICAg
ICAgICAgIGJvdHRvbTogLTAuMXJlbTsKKyAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7CisgICAg
ICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0wLjJyZW07CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAwcmVtOworICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMC4ycmVtOworICAgICAgICAg
ICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7CisgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9y
OiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCByZWQgdHJhbnNwYXJlbnQ7CisgICAgICAgICAgICAg
ICAgb3V0bGluZTogbm9uZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICN0ZXN0LWhlYWx0
aCB0ZC5ibGFuay1jZWxsIHsKICAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAg
ICAgICAgcGFkZGluZzogMDsKQEAgLTM0OSw4ICs1MTMsOCBAQCBjbGFzcyBUZXN0RnJlc2huZXNz
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgICAgICAjdG9vbHRpcC10YWJs
ZSB7CiAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAg
IHdpZHRoOiAyMnJlbTsKLSAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ0OTVF
OwotICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOTsKKyAgICAgICAgICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjNjk2OTY5OworICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOTY7CiAgICAg
ICAgICAgICAgICAgbWFyZ2luOiAwLjNyZW07CiAgICAgICAgICAgICAgICAgcGFkZGluZzogMC4z
cmVtOwogICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNHJlbTsKQEAgLTM3NCwxNCAr
NTM4LDE4IEBAIGNsYXNzIFRlc3RGcmVzaG5lc3NQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5n
IHsKICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTAuM3JlbTsKICAgICAgICAgICAgICAg
ICBib3JkZXItd2lkdGg6IDAuM3JlbTsKICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6IHNv
bGlkOwotICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzM0NDk1RSB0cmFuc3BhcmVudCB0
cmFuc3BhcmVudCB0cmFuc3BhcmVudDsKKyAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICM2
OTY5NjkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAjdG9vbHRpcC10YWJsZSBhIHsKLSAgICAgICAgICAgICAgICBjb2xvcjog
I0IwM0EyRTsKKyAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgICAgICAg
Zm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAjdG9vbHRpcC10
YWJsZSBhOmZvY3VzIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUFCN0I4
OworICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CisgICAgICAgICAgICB9CiAgICAgICAg
IGA7CiAgICAgfQogCiAgICAgcm91dGVOYW1lKCkgeyByZXR1cm4gJ3Rlc3QtZnJlc2huZXNzJzsg
fQotfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="396343"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>