<?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>194721</bug_id>
          
          <creation_ts>2019-02-15 13:47:46 -0800</creation_ts>
          <short_desc>Web Inspector: make debounce Proxy into its own class</short_desc>
          <delta_ts>2019-02-24 19:10:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194687</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506758</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-15 13:47:46 -0800</bug_when>
    <thetext>Using a `Proxy` with an instantiated object from a class will clash with other instances of the same class when trying to debounce.  This can be seen in `WI.TreeOutline.prototype.updateVirtualizedElements`, which get&apos;s `soon`d each time any operation would modify the DOM structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506846</commentid>
    <comment_count>1</comment_count>
      <attachid>362178</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-15 16:26:27 -0800</bug_when>
    <thetext>Created attachment 362178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506865</commentid>
    <comment_count>2</comment_count>
      <attachid>362178</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-15 16:45:34 -0800</bug_when>
    <thetext>Comment on attachment 362178
Patch

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

I like the direction you&apos;re going! Proxies made stacktraces hard to use.

&gt; Source/WebInspectorUI/UserInterface/Base/Debouncer.js:82
&gt; +        queueMicrotask(() =&gt; {

Today I learned!
https://www.chromestatus.com/feature/5111086432911360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506873</commentid>
    <comment_count>3</comment_count>
      <attachid>362178</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-15 17:00:49 -0800</bug_when>
    <thetext>Comment on attachment 362178
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Base/Debouncer.js:26
&gt; +class Debouncer

I&apos;d encourage a description at the top of this file, much like we do for *Chart.js files that explains the problem this solves, how to use it, and so on. For a Base class like this, it would be nice!

&gt; Source/WebInspectorUI/UserInterface/Base/Debouncer.js:42
&gt; +    force()

Other possible names `fireNow`, `runNow`, `invokeNow`?

&gt; Source/WebInspectorUI/UserInterface/Base/Throttler.js:26
&gt; +class Throttler

I&apos;d encourage a description at the top of this file, much like we do for *Chart.js files that explains the problem this solves, how to use it, and so on. For a Base class like this, it would be nice!

&gt; Source/WebInspectorUI/UserInterface/Base/Throttler.js:68
&gt; +        let remaining = this._delay - (Date.now() - this._lastFireTime);
&gt; +        if (remaining &lt;= 0) {
&gt; +            this._execute();
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        if (this._timeoutIdentifier)
&gt; +            return;

I find this rather difficult to read. It is setting a timer only for the remainder of the delay (weird), it is checking if timeoutIdentifier even though it already cancelled above.

I would expect a Throttler to always start a repeating timer the first time someone asks it to fire and should stop itself when it finally fires and nobody tickled it.

So I&apos;d expect:

    constructor(callback, delay)
    {
        this._callback = callback;
        this._delay = delay;

        this._lastArguments = [];
        this._shouldContinue = false;
        this._timeoutIdentifier = undefined;
    }

    force()
    {
        this.cancel();
        this._lastArguments = arguments;
        this.start();
    }

    fire()
    {
        this._lastArguments = arguments;

        if (!this._timeoutIdentifier) {
            this._start();
            return;
        }

        this._shouldContinue = true;
    }

    cancel()
    {
        this._lastArguments = [];
        this._shouldContinue = false;

        if (this._timeoutIdentifier) {
            clearTimeout(this._timeoutIdentifier);
            this._timeoutIdentifier = undefined;
        }
    }

    // Private

    _executeCallback()
    {
        let args = this._lastArguments;

        this._lastArguments = [];
        this._shouldContinue = false;

        this.callback.apply(undefined, args);
    }

    _start()
    {
        console.assert(!this._timeoutIdentifier);
        console.assert(!this._shouldContinue);

        this._timeoutIdentifier = setInterval(() =&gt; {
            this._timerFired();
        }, this._delay);

        this._executeCallback();
    }

    _timerFired()
    {
        console.assert(this._timeoutIdentifier);

        if (this._shouldContinue)
            this._executeCallback();
        else
            this.cancel();
    }

The interesting thing here is:

    • force() does a cancel to completely reset the state of the Throttler and then starts it again.
    • a setInterval is always running and each time it fires it says &quot;should I continue or stop&quot;

This seems way simpler to me at the cost of always running a timer (which I still think is the right thing to do).

This can also be written with a setTimeout instead of a setInterval, but I don&apos;t think that actually changes anything important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506896</commentid>
    <comment_count>4</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-15 17:34:44 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #3)
&gt; &gt; Source/WebInspectorUI/UserInterface/Base/Throttler.js:68
&gt; &gt; +        let remaining = this._delay - (Date.now() - this._lastFireTime);
&gt; &gt; +        if (remaining &lt;= 0) {
&gt; &gt; +            this._execute();
&gt; &gt; +            return;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        if (this._timeoutIdentifier)
&gt; &gt; +            return;
&gt; 
&gt; I find this rather difficult to read. It is setting a timer only for the remainder of the delay (weird), it is checking if timeoutIdentifier even though it already cancelled above.
That was a mistake on my part.  We shouldn&apos;t be calling `cancel`.  The reason it uses the remainder is so that it doesn&apos;t have to call `setTimeout` if it&apos;s only executed once.  It only creates the timer on the second call (within `delay` amount of time), at which point some time has already passed, which should be taken into account when throttling.

&gt; I would expect a Throttler to always start a repeating timer the first time someone asks it to fire and should stop itself when it finally fires and nobody tickled it.
I don&apos;t like the idea of using `setInterval`, as it involves an additional call after `callback` gets executed to actually cancel the interval.

&gt; This seems way simpler to me at the cost of always running a timer (which I still think is the right thing to do).
I disagree.  It involves more code (literally, the number of lines is greater) and has the &quot;side effect&quot; of keeping the timer alive one iteration longer than necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506900</commentid>
    <comment_count>5</comment_count>
      <attachid>362193</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-15 17:37:37 -0800</bug_when>
    <thetext>Created attachment 362193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506974</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-15 22:56:25 -0800</bug_when>
    <thetext>&gt; &gt; I would expect a Throttler to always start a repeating timer the first time someone asks it to fire and should stop itself when it finally fires and nobody tickled it.
&gt;
&gt; I don&apos;t like the idea of using `setInterval`, as it involves an additional
&gt; call after `callback` gets executed to actually cancel the interval.

The whole point of a Throttler class is to throttle something that is likely called multiple times. Timers are expected.

&gt; &gt; This seems way simpler to me at the cost of always running a timer (which I still think is the right thing to do).
&gt;
&gt; I disagree.  It involves more code (literally, the number of lines is
&gt; greater) and has the &quot;side effect&quot; of keeping the timer alive one iteration
&gt; longer than necessary.

Logically and semantically I see this as much simpler. Throttler simply takes a callback `callback` and calls it at no more than a given frequency of `delay`. This can be literally translated into code as `call callback` and `setInterval(delay)`. Playing games with sometimes setting a timeout (which is an expected case) at different remainder times feels like complexity for no concrete benefit. But for something that is less than 100 lines it seems unimportant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506977</commentid>
    <comment_count>7</comment_count>
      <attachid>362193</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-15 23:19:18 -0800</bug_when>
    <thetext>Comment on attachment 362193
Patch

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

Awesome! I can&apos;t wait to use these.

Reading the tests hurts my eyes. Maybe we should rename the file so that the diff is cleaner? Or maybe I&apos;ll just apply it locally and review like that.

&gt; Source/WebInspectorUI/UserInterface/Base/Debouncer.js:28
&gt; +// Debouncer can be used to wrap a function and &quot;delay&quot; it&apos;s execution for a certain amount of time
&gt; +// after it&apos;s most recent call.  As an example, calling `delayForTime(10)` will prevent `callback`
&gt; +// from firing until 10ms after the most recent time it was called.

I expected something more like:

    // Debouncer wraps a function and continues to delay its invocation as long as
    // clients continue to delay its firing. The most recent delay call overrides
    // previous calls. Delays may be timeouts, animation frames, or microtasks.
    // 
    // Example:
    // 
    //     let debouncer = new Debouncer(() =&gt; { this.refresh() });
    //     elem.onkeydown = (event) =&gt; { debouncer.delayForTime(100); }
    // 
    // Will ensure `refresh` will not happen until no keyevent has happened in 100ms:
    // 
    //               0ms          100ms         200ms         300ms         400ms
    //     time:      |-------------|-------------|-------------|-------------|
    //     delay:     ^     ^ ^        ^      ^        ^    ^   ^
    //     refreshes:                                                         * (1)

&gt; Source/WebInspectorUI/UserInterface/Base/Throttler.js:28
&gt; +// Throttler can be used to wrap a function and ensure that it won&apos;t be called more than once every
&gt; +// `delay`ms.  Calling `fire` twice in a row will execute `callback` synchronously on the first call
&gt; +// and asynchronously `delay`ms after the first call (scheduled by the second call).

I expected something more like:

    // Throttler wraps a function and ensures it doesn&apos;t get called more than once every `delay` ms.
    // The first fire will always trigger synchronous, and subsequent calls that need to be throttled
    // will happen later asynchronously.
    // 
    // Example:
    // 
    //     let throttler = new Throttler(250, () =&gt; { this.refresh() });
    //     elem.onkeydown = (event) =&gt; { throttler.fire(); }
    // 
    // Will ensure `refresh` happens at a frequency of 250ms no matter how often `fire` is called:
    // 
    //               0ms                        250ms                       500ms
    //     time:      |---------------------------|---------------------------|
    //     fire:      ^     ^ ^        ^      ^        ^    ^   ^
    //     refreshes: * (1)                       * (2)                       * (3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507032</commentid>
    <comment_count>8</comment_count>
      <attachid>362220</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-16 11:21:55 -0800</bug_when>
    <thetext>Created attachment 362220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508604</commentid>
    <comment_count>9</comment_count>
      <attachid>362220</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-21 12:16:27 -0800</bug_when>
    <thetext>Comment on attachment 362220
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Base/Debouncer.js:79
&gt; +    delayForFrame()

Up to you but I like these names better:

    delayForTime()
    delayUntilNextFrame()
    delayUntilNextMicrotask()

And there could be a convenience:

    delayUntilNextEventLoop() which is delayForTime(0)

&gt; Source/WebInspectorUI/UserInterface/Base/Throttler.js:75
&gt; +        if (isNaN(this._lastFireTime)) {
&gt; +            this._execute();
&gt; +            return;
&gt; +        }

If we initialize `this._lastFireTime` to `0` instead of NaN we can eliminate this case entirely and everything should behave as expected.

&gt; Source/WebInspectorUI/UserInterface/Views/BezierEditor.js:104
&gt; -            this[key].addEventListener(&quot;input&quot;, this.debounce(250)._handleNumberInputInput);
&gt; +            this[key].addEventListener(&quot;input&quot;, this._handleNumberInputInput.bind(this));

So this doesn&apos;t debounce at all now? Seems fine.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js:95
&gt; +        this._dispatchCurrentRepresentedObjectsDidChange = new Debouncer(() =&gt; {

Normally you name members with a suffix such as `fooDebouncer` or `fooThrottler`, much like we often do for Maps and Sets. I like that pattern. This one got missed.

   this._displayCurrentRepresentedObjectsDidChangeDebouncer

&gt; Source/WebInspectorUI/UserInterface/Views/RecordingContentView.js:111
&gt; +        this._generateContentThrottler.fire();

Nice, this even eliminates the need to track `index` because when the throttler fires it uses `this._index`!

&gt; Source/WebInspectorUI/UserInterface/Views/ShaderProgramContentView.js:47
&gt; +            textEditor.addEventListener(WI.TextEditor.Event.ContentDidChange, (event) =&gt; {
&gt; +                contentDidChangeDebouncer.delayForTime(250, event);
&gt; +            }, this);

This is so much clearer! So much win!

&gt; Source/WebInspectorUI/UserInterface/Views/SpringEditor.js:220
&gt; +        this._updatePreviewAnimation(event);

Another case where we are removing a debounce? Seems fine

&gt; LayoutTests/inspector/unit-tests/throttler.html:125
&gt; +            throttler.fire();
&gt; +            throttler.fire();
&gt; +
&gt; +            throttler.cancel();

We should assert that this fired once and won&apos;t fire the 2nd time. (as you said, just add a log in the throttler)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508634</commentid>
    <comment_count>10</comment_count>
      <attachid>362220</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-21 13:18:51 -0800</bug_when>
    <thetext>Comment on attachment 362220
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Debouncer.js:79
&gt;&gt; +    delayForFrame()
&gt; 
&gt; Up to you but I like these names better:
&gt; 
&gt;     delayForTime()
&gt;     delayUntilNextFrame()
&gt;     delayUntilNextMicrotask()
&gt; 
&gt; And there could be a convenience:
&gt; 
&gt;     delayUntilNextEventLoop() which is delayForTime(0)

I prefer the alliteration :)

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Throttler.js:75
&gt;&gt; +        }
&gt; 
&gt; If we initialize `this._lastFireTime` to `0` instead of NaN we can eliminate this case entirely and everything should behave as expected.

Ooooo, I like it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508635</commentid>
    <comment_count>11</comment_count>
      <attachid>362636</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-21 13:19:24 -0800</bug_when>
    <thetext>Created attachment 362636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509516</commentid>
    <comment_count>12</comment_count>
      <attachid>362636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-24 19:04:07 -0800</bug_when>
    <thetext>Comment on attachment 362636
Patch

Clearing flags on attachment: 362636

Committed r242017: &lt;https://trac.webkit.org/changeset/242017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509517</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-24 19:04:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509520</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-24 19:10:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/48349963&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362178</attachid>
            <date>2019-02-15 16:26:27 -0800</date>
            <delta_ts>2019-02-15 17:37:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194721-20190215162622.patch</filename>
            <type>text/plain</type>
            <size>70259</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg4MDY2NmY5Y2IzNDBkMDYwZTdlN2MxYTZiZTlm
OTkzYTI2YWViYWYuLmUyYWU4ZDBiYzA4MjFjMzJiYWNhNTg4OWNkN2E2YTFiMGU4OWQ4YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE5LTAyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
YWtlIGRlYm91bmNlIFByb3h5IGludG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGBkZWJvdW5jZWAvYHRocm90dGxlYCBm
dW5jdGlvbnMgbGV2ZXJhZ2VkIGEgYFByb3h5YCB0byBpbnRlcmNlcHQgdGhlIGZ1bmN0aW9uIGNh
bGwgYW5kCisgICAgICAgIHJlcGxhY2UgaXQgd2l0aCBhICJkZWxheWVkIiB2ZXJzaW9uLiBUaGUg
aXNzdWUgd2l0aCB0aGlzIGlzIHRoYXQgaXQgc2V0IHRoZSBpZGVudGlmaWVyIGZvcgorICAgICAg
ICB0aGUgdGltZXIgb24gdGhlIGZ1bmN0aW9uIGl0c2VsZiwgd2hpY2ggaXMgc2hhcmVkIGFjcm9z
cyBhbGwgaW5zdGFuY2VzIG9mIGEgZ2l2ZW4gY2xhc3MuCisgICAgICAgIFdoZW4gZGlmZmVyZW50
IGluc3RhbmNlcyBjYWxsIHRoZSBzYW1lIGRlbGF5ZWQgZnVuY3Rpb24sIHRoZXknZCBjbG9iYmVy
IGVhY2hvdGhlcidzIGF0dGVtcHRzCisgICAgICAgIHRvIGRlbGF5IHdvcmsuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKERlYm91
bmNlcik6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmZvcmNlKToKKyAgICAgICAgKERl
Ym91bmNlci5wcm90b3R5cGUuZGVsYXlGb3JUaW1lKToKKyAgICAgICAgKERlYm91bmNlci5wcm90
b3R5cGUuZGVsYXlGb3JGcmFtZSk6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmRlbGF5
Rm9yTWljcm90YXNrKToKKyAgICAgICAgKERlYm91bmNlci5wcm90b3R5cGUuY2FuY2VsKToKKyAg
ICAgICAgKERlYm91bmNlci5wcm90b3R5cGUuX2V4ZWN1dGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9UaHJvdHRsZXIuanM6IEFkZGVkLgorICAgICAgICAoVGhyb3R0bGVyKToKKyAg
ICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuZm9yY2UpOgorICAgICAgICAoVGhyb3R0bGVyLnBy
b3RvdHlwZS5maXJlKToKKyAgICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuY2FuY2VsKToKKyAg
ICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuX2V4ZWN1dGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanM6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0JlemllckVkaXRvci5qczoKKyAgICAgICAgKFdJLkJlemllckVkaXRvcik6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qczoKKyAgICAgICAgKFdJLkNvbnRl
bnRCcm93c2VyKToKKyAgICAgICAgKFdJLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5fY29udGVu
dFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvbnRl
bnRCcm93c2VyLnByb3RvdHlwZS5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLl9j
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRl
ci5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVVcGRhdGVyKToKKyAgICAgICAgKFdJLkRPTVRyZWVV
cGRhdGVyLnByb3RvdHlwZS5fbm9kZUF0dHJpYnV0ZU1vZGlmaWVkKToKKyAgICAgICAgKFdJLkRP
TVRyZWVVcGRhdGVyLnByb3RvdHlwZS5fbm9kZUluc2VydGVkKToKKyAgICAgICAgKFdJLkRPTVRy
ZWVVcGRhdGVyLnByb3RvdHlwZS5fbm9kZVJlbW92ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLnNob3dFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcik6CisgICAgICAgIChXSS5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5oaWRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXIpOgorICAg
ICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudXBkYXRlRmlsdGVyKToK
KyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duKToKKyAg
ICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl91cGRhdGVDb250ZW50
T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkKToKKyAgICAgICAgKFdJ
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudERpc2Nsb3N1cmVE
aWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXSS5SZWNvcmRpbmdDb250ZW50Vmlldyk6CisgICAgICAgIChX
SS5SZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlQWN0aW9uSW5kZXgpOgorICAg
ICAgICAoV0kuUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanM6Cisg
ICAgICAgIChXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWZyZXNo
UmVsYXRlZFJlc291cmNlc1NlY3Rpb24pOgorICAgICAgICAoV0kuUmVzb3VyY2VEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5fYXBwbHlSZXNvdXJjZUV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5TaGFk
ZXJQcm9ncmFtQ29udGVudFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3By
aW5nRWRpdG9yLmpzOgorICAgICAgICAoV0kuU3ByaW5nRWRpdG9yLnByb3RvdHlwZS5fcmVzZXRQ
cmV2aWV3QW5pbWF0aW9uKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLnNldCBoaWRkZW4pOgor
ICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmRpZENoYW5nZSk6CisgICAgICAgIChX
SS5UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFjaCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2RldGFjaCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUu
Y29sbGFwc2UpOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZCk6Cisg
ICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUp
OgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnJlZ2lzdGVyU2Nyb2xsVmlydHVh
bGl6ZXIpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLmdldCB1cGRhdGVWaXJ0
dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyKTogQWRkZWQuCisgICAgICAgIChXSS5UcmVlT3V0bGlu
ZS5wcm90b3R5cGUuX3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMpOiBBZGRlZC4KKyAgICAgICAg
KFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzLndhbGsp
OiBEZWxldGVkLgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnVwZGF0ZVZpcnR1
YWxpemVkRWxlbWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViU29ja2V0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmll
dyk6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24pOgor
ICAgICAgICAoV0kuV2ViU29ja2V0Q29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVGcmFtZXNT
b29uKToKKyAgICAgICAgKFdJLldlYlNvY2tldENvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRl
RnJhbWVzKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIC5lc2xpbnRyYzoKKwogMjAxOS0w
Mi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQ2FudmFzOiBhbGwgYWN0aW9ucyBhZnRlciBhbiBvZmZzY3JlZW4gcGF0aCBtb2Rp
ZmljYXRpb24gYXJlIG1hcmtlZCBhcyBvZmZzY3JlZW4gcGF0aCBlcnJvcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
LmVzbGludHJjCmluZGV4IGE4YzA0ZGRjMDYyN2FjMDU4NDJmZDJiMDBkODNmZDU2MzFiZGE0MGEu
LmQyMDEwNDM1NmQ4ZDNhMTMxNjE4Nzk0ZjM0ZTQzNmNjYWMxNjkzNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
Ly5lc2xpbnRyYwpAQCAtNjQsNiArNjQsNyBAQAogCiAgICAgICAgIC8vIFdlYkluc3BlY3Rvcgog
ICAgICAgICAiQXN5bmNUZXN0U3VpdGUiOiB0cnVlLAorICAgICAgICAiRGVib3VuY2VyIjogdHJ1
ZSwKICAgICAgICAgIkZvcm1hdHRlciI6IHRydWUsCiAgICAgICAgICJGb3JtYXR0ZXJDb250ZW50
QnVpbGRlciI6IHRydWUsCiAgICAgICAgICJGcm9udGVuZFRlc3RIYXJuZXNzIjogdHJ1ZSwKQEAg
LTgwLDYgKzgxLDcgQEAKICAgICAgICAgIlN5bmNUZXN0U3VpdGUiOiB0cnVlLAogICAgICAgICAi
VGVzdEhhcm5lc3MiOiB0cnVlLAogICAgICAgICAiVGVzdFN1aXRlIjogdHJ1ZSwKKyAgICAgICAg
IlRocm90dGxlciI6IHRydWUsCiAKICAgICAgICAgLy8gRXh0ZXJuYWxzCiAgICAgICAgICJDb2Rl
TWlycm9yIjogdHJ1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9EZWJvdW5jZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc4YzlkNGJlMmVlYmI5ZGE3ZjY0
MTg4MzczNWY5ZjAyMjVlMWIyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzCkBAIC0wLDAgKzEsMTE2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworY2xhc3MgRGVib3VuY2VyCit7CisgICAgY29uc3RydWN0b3IoY2FsbGJhY2sp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5j
dGlvbiIpOworCisgICAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIHRo
aXMuX2xhc3RBcmd1bWVudHMgPSBbXTsKKworICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRpZmll
ciA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZGVudGlmaWVyID0g
dW5kZWZpbmVkOworICAgICAgICB0aGlzLl9wcm9taXNlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsK
KyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGZvcmNlKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2xhc3RBcmd1bWVudHMgPSBhcmd1bWVudHM7CisgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsK
KyAgICB9CisKKyAgICBkZWxheUZvclRpbWUodGltZSwgLi4uYXJncykKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRpbWUgPj0gMCk7CisKKyAgICAgICAgdGhpcy5jYW5jZWwoKTsKKwor
ICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gYXJnczsKKworICAgICAgICB0aGlzLl90aW1l
b3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgdGhpcy5fZXhl
Y3V0ZSgpOworICAgICAgICB9LCB0aW1lKTsKKyAgICB9CisKKyAgICBkZWxheUZvckZyYW1lKCkK
KyAgICB7CisgICAgICAgIHRoaXMuY2FuY2VsKCk7CisKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3Vt
ZW50cyA9IGFyZ3VtZW50czsKKworICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZUlkZW50aWZp
ZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICAgICAgdGhpcy5fZXhl
Y3V0ZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBkZWxheUZvck1pY3JvdGFzaygpCisg
ICAgeworICAgICAgICB0aGlzLmNhbmNlbCgpOworCisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVu
dHMgPSBhcmd1bWVudHM7CisKKyAgICAgICAgbGV0IHByb21pc2VJZGVudGlmaWVyID0gU3ltYm9s
KCJuZXh0LW1pY3JvdGFzayIpOworCisgICAgICAgIHRoaXMuX3Byb21pc2VJZGVudGlmaWVyID0g
cHJvbWlzZUlkZW50aWZpZXI7CisKKyAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4geworICAg
ICAgICAgICAgaWYgKHRoaXMuX3Byb21pc2VJZGVudGlmaWVyID09PSBwcm9taXNlSWRlbnRpZmll
cikKKyAgICAgICAgICAgICAgICB0aGlzLl9leGVjdXRlKCk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGNhbmNlbCgpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gW107
CisKKyAgICAgICAgaWYgKHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBj
bGVhclRpbWVvdXQodGhpcy5fdGltZW91dElkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5f
dGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGhpcy5fYW5pbWF0aW9uRnJhbWVJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYW5jZWxBbmlt
YXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZUlkZW50aWZpZXIpOworICAgICAgICAgICAg
dGhpcy5fYW5pbWF0aW9uRnJhbWVJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRoaXMuX3Byb21pc2VJZGVudGlmaWVyKQorICAgICAgICAgICAgdGhpcy5f
cHJvbWlzZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX2V4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgbGV0IGFyZ3MgPSB0aGlzLl9sYXN0QXJn
dW1lbnRzOworCisgICAgICAgIHRoaXMuY2FuY2VsKCk7CisKKyAgICAgICAgdGhpcy5fY2FsbGJh
Y2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rocm90dGxlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGhyb3R0bGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUzMDBmNzI5YzMwMzE0MGQ3YjVlMGM3ZmJiZDRlOWNkZWJkNjJhMzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rocm90dGxlci5q
cwpAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworY2xhc3MgVGhyb3R0bGVyCit7CisgICAg
Y29uc3RydWN0b3IoY2FsbGJhY2ssIGRlbGF5KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGVsYXkgPj0gMCk7CisKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICAgICAgdGhpcy5fZGVsYXkgPSBkZWxheTsKKworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRz
ID0gW107CisKKyAgICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7Cisg
ICAgICAgIHRoaXMuX2xhc3RGaXJlVGltZSA9IE5hTjsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMK
KworICAgIGZvcmNlKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBhcmd1
bWVudHM7CisgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICB9CisKKyAgICBmaXJlKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuY2FuY2VsKCk7CisKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50
cyA9IGFyZ3VtZW50czsKKworICAgICAgICBpZiAoaXNOYU4odGhpcy5fbGFzdEZpcmVUaW1lKSkg
eworICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbGV0IHJlbWFpbmluZyA9IHRoaXMuX2RlbGF5IC0gKERhdGUubm93
KCkgLSB0aGlzLl9sYXN0RmlyZVRpbWUpOworICAgICAgICBpZiAocmVtYWluaW5nIDw9IDApIHsK
KyAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh0aGlzLl90aW1lb3V0SWRlbnRpZmllcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQo
KCkgPT4geworICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZSgpOworICAgICAgICB9LCByZW1haW5p
bmcpOworICAgIH0KKworICAgIGNhbmNlbCgpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0QXJn
dW1lbnRzID0gW107CisKKyAgICAgICAgaWYgKHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyKSB7Cisg
ICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dElkZW50aWZpZXIpOworICAgICAg
ICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZXhlY3V0ZSgpCisgICAgeworICAgICAgICB0
aGlzLl9sYXN0RmlyZVRpbWUgPSBEYXRlLm5vdygpOworCisgICAgICAgIGxldCBhcmdzID0gdGhp
cy5fbGFzdEFyZ3VtZW50czsKKworICAgICAgICB0aGlzLmNhbmNlbCgpOworCisgICAgICAgIHRo
aXMuX2NhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpp
bmRleCA5M2E0ZjllYTkwNGI2YTliMGNkM2U1NWE3YzNlNzFiOGVmOTA1OWI2Li4xZmFlYmE5MzVk
MTIxYWQwOWRhNjM3Y2M2MWFlNzQ3Y2NiZmUwNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtMTQ4MCwxNTUg
KzE0ODAsNiBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJvbWlzZSwgImRlbGF5IiwKICAgICB9
CiB9KTsKIAotKGZ1bmN0aW9uKCkgewotICAgIC8vIFRoZSBgZGVib3VuY2VgIGZ1bmN0aW9uIGxl
dHMgeW91IGNhbGwgYW55IGZ1bmN0aW9uIG9uIGFuIG9iamVjdCB3aXRoIGEgZGVsYXkKLSAgICAv
LyBhbmQgaWYgdGhlIGZ1bmN0aW9uIGtlZXBzIGdldHRpbmcgY2FsbGVkLCB0aGUgZGVsYXkgZ2V0
cyByZXNldC4gU2luY2UgYGRlYm91bmNlYAotICAgIC8vIHJldHVybnMgYSBQcm94eSwgeW91IGNh
biBjYWNoZSBpdCBhbmQgY2FsbCBtdWx0aXBsZSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBkZWxh
eS4KLQotICAgIC8vIFVzZTogb2JqZWN0LmRlYm91bmNlKDIwMCkuZm9vKCJBcmd1bWVudCAxIiwg
IkFyZ3VtZW50IDIiKQotICAgIC8vIE5vdGU6IFRoZSBsYXN0IGNhbGwncyBhcmd1bWVudHMgZ2V0
IHVzZWQgZm9yIHRoZSBkZWxheWVkIGNhbGwuCi0KLSAgICBjb25zdCBkZWJvdW5jZVRpbWVvdXRT
eW1ib2wgPSBTeW1ib2woImRlYm91bmNlLXRpbWVvdXQiKTsKLSAgICBjb25zdCBkZWJvdW5jZVNv
b25Qcm94eVN5bWJvbCA9IFN5bWJvbCgiZGVib3VuY2Utc29vbi1wcm94eSIpOwotCi0gICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJzb29uIiwKLSAgICB7Ci0gICAg
ICAgIGdldCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpc1tkZWJvdW5jZVNvb25Q
cm94eVN5bWJvbF0pCi0gICAgICAgICAgICAgICAgdGhpc1tkZWJvdW5jZVNvb25Qcm94eVN5bWJv
bF0gPSB0aGlzLmRlYm91bmNlKDApOwotICAgICAgICAgICAgcmV0dXJuIHRoaXNbZGVib3VuY2VT
b29uUHJveHlTeW1ib2xdOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgImRlYm91bmNlIiwKLSAgICB7Ci0gICAgICAgIHZh
bHVlKGRlbGF5KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChkZWxheSA+
PSAwKTsKLQotICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7Ci0gICAgICAgICAg
ICAgICAgZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAoLi4uYXJncykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9y
aWdpbmFsID0gdGFyZ2V0W3Byb3BlcnR5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHR5cGVvZiBvcmlnaW5hbCA9PT0gImZ1bmN0aW9uIik7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChvcmlnaW5hbFtkZWJvdW5jZVRpbWVvdXRTeW1ib2xdKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChvcmlnaW5hbFtkZWJvdW5jZVRpbWVv
dXRTeW1ib2xdKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmZvcm1Xb3JrID0g
KCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW2RlYm91bmNlVGlt
ZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Jp
Z2luYWwuYXBwbHkodGFyZ2V0LCBhcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW2RlYm91bmNlVGltZW91dFN5bWJvbF0g
PSBzZXRUaW1lb3V0KHBlcmZvcm1Xb3JrLCBkZWxheSk7Ci0gICAgICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICJjYW5jZWxE
ZWJvdW5jZSIsCi0gICAgewotICAgICAgICB2YWx1ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghdGhpc1tkZWJvdW5jZVRpbWVvdXRTeW1ib2xdKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXNbZGVib3VuY2VUaW1lb3V0U3ltYm9s
XSk7Ci0gICAgICAgICAgICB0aGlzW2RlYm91bmNlVGltZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZVN5
bWJvbCA9IFN5bWJvbCgicGVmb3JtLW9uLWFuaW1hdGlvbi1mcmFtZSIpOwotICAgIGNvbnN0IHJl
cXVlc3RBbmltYXRpb25GcmFtZVByb3h5U3ltYm9sID0gU3ltYm9sKCJwZXJmb3JtLW9uLWFuaW1h
dGlvbi1mcmFtZS1wcm94eSIpOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5w
cm90b3R5cGUsICJvbk5leHRGcmFtZSIsCi0gICAgewotICAgICAgICBnZXQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIXRoaXNbcmVxdWVzdEFuaW1hdGlvbkZyYW1lUHJveHlTeW1ib2xd
KSB7Ci0gICAgICAgICAgICAgICAgdGhpc1tyZXF1ZXN0QW5pbWF0aW9uRnJhbWVQcm94eVN5bWJv
bF0gPSBuZXcgUHJveHkodGhpcywgewotICAgICAgICAgICAgICAgICAgICBnZXQodGFyZ2V0LCBw
cm9wZXJ0eSwgcmVjZWl2ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4u
YXJncykgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbCA9IHRh
cmdldFtwcm9wZXJ0eV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQodHlwZW9mIG9yaWdpbmFsID09PSAiZnVuY3Rpb24iKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChvcmlnaW5hbFtyZXF1ZXN0QW5pbWF0aW9uRnJhbWVTeW1ib2xdKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZXQgcGVyZm9ybVdvcmsgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9yaWdpbmFsW3JlcXVlc3RBbmltYXRpb25GcmFtZVN5bWJvbF0gPSB1bmRl
ZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsLmFwcGx5KHRh
cmdldCwgYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW3JlcXVlc3RBbmltYXRpb25GcmFtZVN5bWJvbF0g
PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocGVyZm9ybVdvcmspOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gdGhpc1tyZXF1ZXN0QW5pbWF0aW9uRnJh
bWVQcm94eVN5bWJvbF07Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHRocm90dGxl
VGltZW91dFN5bWJvbCA9IFN5bWJvbCgidGhyb3R0bGUtdGltZW91dCIpOwotCi0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJ0aHJvdHRsZSIsCi0gICAgewotICAg
ICAgICB2YWx1ZShkZWxheSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZGVsYXkgPj0gMCk7Ci0KLSAgICAgICAgICAgIGxldCBsYXN0RmlyZVRpbWUgPSBOYU47Ci0gICAg
ICAgICAgICBsZXQgbW9zdFJlY2VudEFyZ3VtZW50cyA9IG51bGw7Ci0KLSAgICAgICAgICAgIHJl
dHVybiBuZXcgUHJveHkodGhpcywgewotICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3Bl
cnR5LCByZWNlaXZlcikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbCA9IHRhcmdldFtwcm9wZXJ0
eV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygb3JpZ2lu
YWwgPT09ICJmdW5jdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbW9zdFJlY2VudEFy
Z3VtZW50cyA9IGFyZ3M7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHBlcmZv
cm1Xb3JrKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RGaXJlVGltZSA9IERh
dGUubm93KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxbdGhyb3R0bGVU
aW1lb3V0U3ltYm9sXSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cmlnaW5hbC5hcHBseSh0YXJnZXQsIG1vc3RSZWNlbnRBcmd1bWVudHMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4obGFzdEZp
cmVUaW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1Xb3JrKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVtYWluaW5nID0gZGVsYXkgLSAo
RGF0ZS5ub3coKSAtIGxhc3RGaXJlVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cmVtYWluaW5nIDw9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbC5j
YW5jZWxUaHJvdHRsZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1Xb3Jr
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsW3Rocm90
dGxlVGltZW91dFN5bWJvbF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxb
dGhyb3R0bGVUaW1lb3V0U3ltYm9sXSA9IHNldFRpbWVvdXQocGVyZm9ybVdvcmssIHJlbWFpbmlu
Zyk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShG
dW5jdGlvbi5wcm90b3R5cGUsICJjYW5jZWxUaHJvdHRsZSIsCi0gICAgewotICAgICAgICB2YWx1
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpc1t0aHJvdHRsZVRpbWVvdXRTeW1i
b2xdKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0
KHRoaXNbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSk7Ci0gICAgICAgICAgICB0aGlzW3Rocm90dGxl
VGltZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0pKCk7Ci0K
IGZ1bmN0aW9uIGFwcGVuZFdlYkluc3BlY3RvclNvdXJjZVVSTChzdHJpbmcpCiB7CiAgICAgaWYg
KHN0cmluZy5pbmNsdWRlcygiLy8jIHNvdXJjZVVSTCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDQwZGRmODM5NTE1OGQ1ZGY5NTQ2Y2E0
YmVmZDg3Nzg2OGYxNTMxM2IuLjMzMGJmZmVhMGY3NGZjN2FmZTdmNjAxMzVmNzdmNGUwYWIxOTYx
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
QEAgLTI3NSwxMSArMjc1LDEzIEBACiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9XZWJJbnNwZWN0
b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1BsYXRmb3JtLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJvdW5jZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJCYXNlL0RlYnVnZ2FibGVUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9JbmRleFNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJh
c2UvTGlua2VkTGlzdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlzdE11
bHRpbWFwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9PYmplY3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCYXNlL1Rocm90dGxlci5qcyI+PC9zY3JpcHQ+CiAK
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9ET01VdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJCYXNlL0V2ZW50TGlzdGVuZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDA2YTBkODRhOGEzMzA0
NzJhZTA0Yzc1MjlmZDkyYmFiZDk3NzM3ZjUuLjMzNjE0NDc0Y2E4MzE2Y2E1ZmQwZDA4YjJhNTdk
OTRlMzU4NTYzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9U
ZXN0Lmh0bWwKQEAgLTM3LDExICszNywxMyBAQAogCiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvV2Vi
SW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9QbGF0Zm9ybS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvRGVib3VuY2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1Z2dhYmxlVHlwZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvSW5kZXhTZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJCYXNlL0xpbmtlZExpc3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNl
L0xpc3RNdWx0aW1hcC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9UaHJvdHRsZXIuanMiPjwvc2Ny
aXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJUZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQmV6
aWVyRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
QmV6aWVyRWRpdG9yLmpzCmluZGV4IDEzMjI4NTlhNjA4MTZmYmFmMjAwYjMxMTNiMjcxYzZlODQ5
ZDk4MjguLjM5NWExNWJkY2Q1OTdmNDY0ODZiOTkzNGY0OGZhZTUyOTFmMGI1ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JlemllckVkaXRv
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CZXpp
ZXJFZGl0b3IuanMKQEAgLTEwMSw3ICsxMDEsNyBAQCBXSS5CZXppZXJFZGl0b3IgPSBjbGFzcyBC
ZXppZXJFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICghaXNOYU4obWF4
KSkKICAgICAgICAgICAgICAgICB0aGlzW2tleV0ubWF4ID0gbWF4OwogCi0gICAgICAgICAgICB0
aGlzW2tleV0uYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLmRlYm91bmNlKDI1MCkuX2hh
bmRsZU51bWJlcklucHV0SW5wdXQpOworICAgICAgICAgICAgdGhpc1trZXldLmFkZEV2ZW50TGlz
dGVuZXIoImlucHV0IiwgdGhpcy5faGFuZGxlTnVtYmVySW5wdXRJbnB1dC5iaW5kKHRoaXMpKTsK
ICAgICAgICAgICAgIHRoaXNba2V5XS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
aGFuZGxlTnVtYmVySW5wdXRLZXlkb3duLmJpbmQodGhpcykpOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRC
cm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudEJyb3dzZXIuanMKaW5kZXggMzVlN2I1NjUyZTY2YTA1ZGE0YjJmN2JjN2IxNDk4MzMwNWM0
ZTNhYy4uNmEwZTM3YjMxODc2N2ZmMGJjYThiMDk1NjJkYWFmOGYyMmYzOGE1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dz
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudEJyb3dzZXIuanMKQEAgLTkxLDYgKzkxLDEwIEBAIFdJLkNvbnRlbnRCcm93c2VyID0gY2xh
c3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX2RlbGVnYXRl
ID0gZGVsZWdhdGUgfHwgbnVsbDsKIAogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdO
YXZpZ2F0aW9uSXRlbXMgPSBbXTsKKworICAgICAgICB0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXBy
ZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsKKyAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRCcm93c2VyLkV2ZW50
LkN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOworICAgICAgICB9KTsKICAgICB9
CiAKICAgICAvLyBQdWJsaWMKQEAgLTQ2OSwxMyArNDczLDYgQEAgV0kuQ29udGVudEJyb3dzZXIg
PSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgfQogICAgIH0K
IAotICAgIF9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudCgp
Ci0gICAgewotICAgICAgICB0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2VFdmVudC5jYW5jZWxEZWJvdW5jZSgpOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRSZXByZXNlbnRl
ZE9iamVjdHNEaWRDaGFuZ2UpOwotICAgIH0KLQogICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBh
dGhDb21wb25lbnREaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFy
Z2V0ICE9PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldykKQEAgLTQ5Miw3ICs0ODksNyBAQCBXSS5D
b250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogCiAg
ICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIubmVlZHNMYXlvdXQoKTsKIAotICAgICAgICB0aGlz
LnNvb24uX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7
CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZS5kZWxheUZvclRpbWUoMCk7CiAgICAgfQogCiAgICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFs
UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKGV2ZW50KQpAQCAtNTA0LDcgKzUwMSw3IEBAIFdJ
LkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAg
ICAgICAgIGlmIChldmVudC50YXJnZXQucGFyZW50Q29udGFpbmVyICE9PSB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLnNvb24u
X2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7CisgICAg
ICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZS5kZWxh
eUZvclRpbWUoMCk7CiAgICAgfQogCiAgICAgX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZShl
dmVudCkKQEAgLTUyMiw3ICs1MTksNyBAQCBXSS5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRl
bnRCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZSk7CiAKLSAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3Rz
RGlkQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlLmZvcmNlKCk7CiAgICAgfQogCiAgICAgX2NvbnRlbnRWaWV3TmF2
aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwppbmRleCBh
NTQ2MDI2NmUzNWQyODFlMzY4MTYxYmFlZTYyOGVmZjJjZjE5ZjE1Li5jMjQ1NWE2NjNkNTk0MjBi
NTVlNTM3NGEyYzVmMTNjY2QwZTJhNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwpAQCAtNDgs
NiArNDgsMTAgQEAgV0kuRE9NVHJlZVVwZGF0ZXIgPSBmdW5jdGlvbih0cmVlT3V0bGluZSkKIAog
ICAgIC8vIER1bW15ICJhdHRyaWJ1dGUiIHRoYXQgaXMgdXNlZCB0byB0cmFjayB0ZXh0Q29udGVu
dCBjaGFuZ2VzLgogICAgIHRoaXMuX3RleHRDb250ZW50QXR0cmlidXRlU3ltYm9sID0gU3ltYm9s
KCJ0ZXh0LWNvbnRlbnQtYXR0cmlidXRlIik7CisKKyAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5v
ZGVzRGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoKSA9PiB7CisgICAgICAgIHRoaXMuX3VwZGF0
ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICB9KTsKIH07CiAKIFdJLkRPTVRyZWVVcGRhdGVyLnByb3Rv
dHlwZSA9IHsKQEAgLTgxLDIxICs4NSwyMSBAQCBXSS5ET01UcmVlVXBkYXRlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2Rlcy5hZGQobm9kZSk7CiAKICAg
ICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQotICAgICAgICAgICAgdGhpcy5v
bk5leHRGcmFtZS5fdXBkYXRlTW9kaWZpZWROb2RlcygpOworICAgICAgICAgICAgdGhpcy5fdXBk
YXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAgICB9LAogCiAg
ICAgX25vZGVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9y
ZWNlbnRseUluc2VydGVkTm9kZXMuc2V0KGV2ZW50LmRhdGEubm9kZSwge3BhcmVudDogZXZlbnQu
ZGF0YS5wYXJlbnR9KTsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQot
ICAgICAgICAgICAgdGhpcy5vbk5leHRGcmFtZS5fdXBkYXRlTW9kaWZpZWROb2RlcygpOworICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZvckZyYW1l
KCk7CiAgICAgfSwKIAogICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9yZWNlbnRseURlbGV0ZWROb2Rlcy5zZXQoZXZlbnQuZGF0YS5ub2RlLCB7
cGFyZW50OiBldmVudC5kYXRhLnBhcmVudH0pOwogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxp
bmUuX3Zpc2libGUpCi0gICAgICAgICAgICB0aGlzLm9uTmV4dEZyYW1lLl91cGRhdGVNb2RpZmll
ZE5vZGVzKCk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzRGVib3VuY2Vy
LmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9LAogCiAgICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZDog
ZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRl
eCBjNTNkZjRhZTNhNjM3YjQ0NWM3YmExYzYwMDMwOTRmMzc5ZjMyMDRjLi4xMzllN2Y2MmI5NGI3
MjlkZmY2MDgzZmQyNTBmMmFiYzJjZDQwNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanMKQEAgLTMxLDcgKzMxLDE0IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAK
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5hdmlnYXRpb24iKTsKIAotICAg
ICAgICB0aGlzLmNvbnRlbnRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwg
dGhpcy5zb29uLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KTsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlciA9
IG5ldyBEZWJvdW5jZXIoKCkgPT4geworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5fYm91
bmRVcGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5U29vbiA9IChldmVudCkgPT4g
eworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0
eURlYm91bmNlci5kZWxheUZvclRpbWUoMCk7CisgICAgICAgIH07CisKKyAgICAgICAgdGhpcy5j
b250ZW50Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2JvdW5k
VXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eVNvb24pOwogCiAgICAgICAgIHRo
aXMuX2NvbnRlbnRUcmVlT3V0bGluZUdyb3VwID0gbmV3IFdJLlRyZWVPdXRsaW5lR3JvdXA7CiAg
ICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVP
dXRsaW5lKCk7CkBAIC00OSw4ICs1Niw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBj
bGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAg
ICAgICAgICB0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLk92ZXJmbG93U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1l
LCAidG9wIik7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9ib3VuZFVwZGF0ZUNvbnRlbnRP
dmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkgPSB0aGlzLnNvb24uX3VwZGF0ZUNvbnRlbnRPdmVyZmxv
d1NoYWRvd1Zpc2liaWxpdHk7Ci0gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNp
emUiLCB0aGlzLl9ib3VuZFVwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkpOwor
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRVcGRh
dGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5U29vbik7CiAKICAgICAgICAgdGhpcy5f
ZmlsdGVyc1NldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhpZGVudGlmaWVyICsgIi1uYXZpZ2F0aW9u
LXNpZGViYXItZmlsdGVycyIsIHt9KTsKICAgICAgICAgdGhpcy5fZmlsdGVyQmFyLmZpbHRlcnMg
PSB0aGlzLl9maWx0ZXJzU2V0dGluZy52YWx1ZTsKQEAgLTc3LDcgKzgzLDcgQEAgV0kuTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
SS5TaWRlYmFyUGFuZWwKIAogICAgIGNsb3NlZCgpCiAgICAgewotICAgICAgICB3aW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRVcGRhdGVDb250ZW50T3ZlcmZs
b3dTaGFkb3dWaXNpYmlsaXR5KTsKKyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIo
InJlc2l6ZSIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0
eVNvb24pOwogICAgICAgICBXSS5GcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGws
IHRoaXMpOwogICAgIH0KIApAQCAtMjczLDcgKzI3OSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBh
bmVsCiAgICAgICAgIGxldCBlbXB0eUNvbnRlbnRQbGFjZWhvbGRlclBhcmVudEVsZW1lbnQgPSB0
cmVlT3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGU7CiAgICAgICAgIGVtcHR5Q29udGVudFBsYWNl
aG9sZGVyUGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChlbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVs
ZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2li
aWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJp
bGl0eURlYm91bmNlci5mb3JjZSgpOwogCiAgICAgICAgIHJldHVybiBlbXB0eUNvbnRlbnRQbGFj
ZWhvbGRlckVsZW1lbnQ7CiAgICAgfQpAQCAtMjg5LDcgKzI5NSw3IEBAIFdJLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lk
ZWJhclBhbmVsCiAgICAgICAgIGVtcHR5Q29udGVudFBsYWNlaG9sZGVyRWxlbWVudC5yZW1vdmUo
KTsKICAgICAgICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50cy5kZWxldGUo
dHJlZU91dGxpbmUpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRv
d1Zpc2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eURlYm91bmNlci5mb3JjZSgpOwogICAgIH0KIAogICAgIHVwZGF0ZUVtcHR5Q29u
dGVudFBsYWNlaG9sZGVyKG1lc3NhZ2UsIHRyZWVPdXRsaW5lKQpAQCAtMzQ1LDcgKzM1MSw3IEBA
IFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
IGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jaGVj
a0ZvckVtcHR5RmlsdGVyUmVzdWx0cygpOwotICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3Zl
cmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVy
Zmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZm9yY2UoKTsKICAgICB9CiAKICAgICByZXNl
dEZpbHRlcigpCkBAIC00NjgsNyArNDc0LDcgQEAgV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9
IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5TaWRlYmFyUGFuZWwKICAg
ICB7CiAgICAgICAgIHN1cGVyLnNob3duKCk7CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOworICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50
T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5RGVib3VuY2VyLmZvcmNlKCk7CiAgICAgfQogCiAgICAg
Ly8gUHJvdGVjdGVkCkBAIC01MDMsOCArNTA5LDYgQEAgV0kuTmF2aWdhdGlvblNpZGViYXJQYW5l
bCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5TaWRlYmFyUGFuZWwK
ICAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eS5jYW5jZWxEZWJv
dW5jZSgpOwotCiAgICAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSB0aGlzLmNvbnRlbnRWaWV3LmVs
ZW1lbnQuc2Nyb2xsSGVpZ2h0OwogICAgICAgICBsZXQgb2Zmc2V0SGVpZ2h0ID0gdGhpcy5jb250
ZW50Vmlldy5lbGVtZW50Lm9mZnNldEhlaWdodDsKIApAQCAtNjA3LDcgKzYxMSw3IEBAIFdJLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVu
ZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIHRoaXMuX2NoZWNrRm9yRW1wdHlGaWx0ZXJSZXN1
bHRzKCk7CiAKICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMuc29v
bi5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOworICAgICAgICAgICAg
dGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlci5kZWxh
eUZvclRpbWUoMCk7CiAKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICB0
aGlzLl9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZShbdHJlZUVsZW1lbnRd
KTsKQEAgLTYxNSw3ICs2MTksNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3Mg
TmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogCiAgICAgX3Ry
ZWVFbGVtZW50RGlzY2xvc3VyZURpZENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMu
c29vbi5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOworICAgICAgICB0
aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5RGVib3VuY2VyLmRlbGF5
Rm9yVGltZSgwKTsKICAgICB9CiAKICAgICBfY2hlY2tGb3JTdGFsZVJlc291cmNlc0lmTmVlZGVk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1JlY29yZGluZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVudFZpZXcuanMKaW5kZXggZThmN2RiMTM5N2VlYTUz
MGZkOWQwMzU4MmNhN2I3ZTQxMTRkYWIxYS4uMTM3Yzk1NzhmNDUxMjQwMjc0NzMyZDE4NDU4ZGE1
MzZjNmZjZDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVjb3JkaW5nQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVudFZpZXcuanMKQEAgLTM1LDcg
KzM1LDEyIEBAIFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgUmVjb3JkaW5nQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9hY3Rpb24gPSBudWxs
OwogICAgICAgICB0aGlzLl9zbmFwc2hvdHMgPSBbXTsKICAgICAgICAgdGhpcy5faW5pdGlhbENv
bnRlbnQgPSBudWxsOwotICAgICAgICB0aGlzLl90aHJvdHRsZXIgPSB0aGlzLnRocm90dGxlKDIw
MCk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudFRocm90dGxlciA9IG5ldyBUaHJvdHRs
ZXIoKCkgPT4geworICAgICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlwZSA9
PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzMkQpCisgICAgICAgICAgICAgICAgdGhpcy5fZ2Vu
ZXJhdGVDb250ZW50Q2FudmFzMkQodGhpcy5faW5kZXgpOworICAgICAgICAgICAgZWxzZSBpZiAo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5SZWNvcmRpbmcuVHlwZS5DYW52YXNC
aXRtYXBSZW5kZXJlciB8fCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdJLlJlY29y
ZGluZy5UeXBlLkNhbnZhc1dlYkdMKQorICAgICAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29u
dGVudEZyb21TbmFwc2hvdCh0aGlzLl9pbmRleCk7CisgICAgICAgIH0sIDIwMCk7CiAKICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlY29yZGluZyIsIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QudHlwZSk7CiAKQEAgLTEwMywxMCArMTA4LDcgQEAgV0kuUmVjb3JkaW5nQ29udGVu
dFZpZXcgPSBjbGFzcyBSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3
CiAKICAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWUoKTsKIAotICAgICAgICBpZiAodGhp
cy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5SZWNvcmRpbmcuVHlwZS5DYW52YXMyRCkK
LSAgICAgICAgICAgIHRoaXMuX3Rocm90dGxlci5fZ2VuZXJhdGVDb250ZW50Q2FudmFzMkQoaW5k
ZXgpOwotICAgICAgICBlbHNlIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdJ
LlJlY29yZGluZy5UeXBlLkNhbnZhc0JpdG1hcFJlbmRlcmVyIHx8IHRoaXMucmVwcmVzZW50ZWRP
YmplY3QudHlwZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzV2ViR0wpCi0gICAgICAgICAg
ICB0aGlzLl90aHJvdHRsZXIuX2dlbmVyYXRlQ29udGVudEZyb21TbmFwc2hvdChpbmRleCk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudFRocm90dGxlci5maXJlKCk7CiAKICAgICAgICAg
dGhpcy5fYWN0aW9uID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hY3Rpb25zW3RoaXMuX2luZGV4
XTsKIApAQCAtMTMxLDggKzEzMyw3IEBAIFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3Mg
UmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgIHsKICAgICAg
ICAgc3VwZXIuaGlkZGVuKCk7CiAKLSAgICAgICAgdGhpcy5fZ2VuZXJhdGVDb250ZW50Q2FudmFz
MkQuY2FuY2VsVGhyb3R0bGUoKTsKLSAgICAgICAgdGhpcy5fZ2VuZXJhdGVDb250ZW50RnJvbVNu
YXBzaG90LmNhbmNlbFRocm90dGxlKCk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudFRo
cm90dGxlci5jYW5jZWwoKTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWls
c1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA0Y2Y5YjhhYzVhOTkxODli
MTViOWUwZmVkYmVmYjM3ZTE5ZjI0Y2RjLi43NTllNWQ2NTg3NGI5OWNiMmU3OTQ4Nzk5YzJkYjJi
NWZhZTkyOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCkBAIC0yNjMsOCArMjYzLDYgQEAgV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0g
Y2xhc3MgUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGUKIAogICAgIF9y
ZWZyZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmVm
cmVzaFJlbGF0ZWRSZXNvdXJjZXNTZWN0aW9uLmNhbmNlbFRocm90dGxlKCk7Ci0KICAgICAgICAg
Ly8gSGlkZSB0aGUgc2VjdGlvbiBpZiB3ZSBkb24ndCBoYXZlIGFueXRoaW5nIHRvIHNob3cuCiAg
ICAgICAgIGxldCBncm91cHMgPSB0aGlzLl9sb2NhdGlvblNlY3Rpb24uZ3JvdXBzOwogICAgICAg
ICBsZXQgaXNTZWN0aW9uVmlzaWJsZSA9IGdyb3Vwcy5pbmNsdWRlcyh0aGlzLl9yZWxhdGVkUmVz
b3VyY2VzR3JvdXApOwpAQCAtNjA3LDggKzYwNSwxMSBAQCBXSS5SZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5E
ZQogCiAgICAgX2FwcGx5UmVzb3VyY2VFdmVudExpc3RlbmVycygpCiAgICAgewotICAgICAgICBp
ZiAoIXRoaXMuX3Rocm90dGxlcikKLSAgICAgICAgICAgIHRoaXMuX3Rocm90dGxlciA9IHRoaXMu
dGhyb3R0bGUoMjUwKTsKKyAgICAgICAgaWYgKCF0aGlzLl9yZWZyZXNoUmVsYXRlZFJlc291cmNl
c1NlY3Rpb25UaHJvdHRsZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVz
b3VyY2VzU2VjdGlvblRocm90dGxlciA9IG5ldyBUaHJvdHRsZXIoKCkgPT4geworICAgICAgICAg
ICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVzb3VyY2VzU2VjdGlvbigpOworICAgICAgICAg
ICAgfSwgMjUwKTsKKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50
TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuVVJMRGlkQ2hhbmdlLCB0aGlzLl9yZWZyZXNoVVJM
LCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNv
dXJjZS5FdmVudC5NSU1FVHlwZURpZENoYW5nZSwgdGhpcy5fcmVmcmVzaE1JTUVUeXBlLCB0aGlz
KTsKQEAgLTYyMCw3ICs2MjEsOSBAQCBXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgPSBj
bGFzcyBSZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZQogICAgICAgICB0
aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50Lk1ldHJpY3NE
aWRDaGFuZ2UsIHRoaXMuX3JlZnJlc2hSZXF1ZXN0QW5kUmVzcG9uc2UsIHRoaXMpOwogICAgICAg
ICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlNpemVE
aWRDaGFuZ2UsIHRoaXMuX3JlZnJlc2hEZWNvZGVkU2l6ZSwgdGhpcyk7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXpl
RGlkQ2hhbmdlLCB0aGlzLl9yZWZyZXNoVHJhbnNmZXJTaXplLCB0aGlzKTsKLSAgICAgICAgdGhp
cy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5Jbml0aWF0ZWRS
ZXNvdXJjZXNEaWRDaGFuZ2UsIHRoaXMuX3Rocm90dGxlci5fcmVmcmVzaFJlbGF0ZWRSZXNvdXJj
ZXNTZWN0aW9uLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5l
cihXSS5SZXNvdXJjZS5FdmVudC5Jbml0aWF0ZWRSZXNvdXJjZXNEaWRDaGFuZ2UsICgpID0+IHsK
KyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVzb3VyY2VzU2VjdGlvblRocm90dGxl
ci5maXJlKCk7CisgICAgICAgIH0sIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX25lZWRzVG9SZW1v
dmVSZXNvdXJjZUV2ZW50TGlzdGVuZXJzID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFk
ZXJQcm9ncmFtQ29udGVudFZpZXcuanMKaW5kZXggMTY3OTY5MDk1ZGVmYjdlZTU2OTI0OWY3ZTdi
YTVkNzQ1MGYyZjgzZi4uMjgzZWM0OTkwNzcxN2M4NWRkYWRiYmMwZTJhNWRjYjI5YWFlMDUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hh
ZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcwpAQCAtMzEsNiArMzEs
MTAgQEAgV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3ID0gY2xhc3MgU2hhZGVyUHJvZ3JhbUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAgICBzdXBlcihzaGFkZXJQcm9n
cmFtKTsKIAorICAgICAgICBsZXQgY29udGVudERpZENoYW5nZURlYm91bmNlciA9IG5ldyBEZWJv
dW5jZXIoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50RGlkQ2hhbmdlKGV2
ZW50KTsKKyAgICAgICAgfSk7CisKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InNoYWRlci1wcm9ncmFtIik7CiAKICAgICAgICAgbGV0IGNyZWF0ZUVkaXRvciA9IChzaGFkZXJU
eXBlKSA9PiB7CkBAIC0zOCw3ICs0Miw5IEBAIFdJLlNoYWRlclByb2dyYW1Db250ZW50VmlldyA9
IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAgICAg
ICAgICAgICB0ZXh0RWRpdG9yLnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgICAgICAgICB0ZXh0RWRp
dG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5Gb2N1c2VkLCB0aGlzLl9l
ZGl0b3JGb2N1c2VkLCB0aGlzKTsKICAgICAgICAgICAgIHRleHRFZGl0b3IuYWRkRXZlbnRMaXN0
ZW5lcihXSS5UZXh0RWRpdG9yLkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwg
dGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAg
IHRleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5UZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRE
aWRDaGFuZ2UsIHRoaXMuZGVib3VuY2UoMjUwKS5fY29udGVudERpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVu
dC5Db250ZW50RGlkQ2hhbmdlLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBjb250ZW50
RGlkQ2hhbmdlRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgyNTAsIGV2ZW50KTsKKyAgICAgICAgICAg
IH0sIHRoaXMpOwogICAgICAgICAgICAgdGV4dEVkaXRvci5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InNoYWRlciIpOwogCiAgICAgICAgICAgICBsZXQgc2hhZGVyVHlwZUNvbnRhaW5lciA9IHRleHRF
ZGl0b3IuZWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyYmVnaW4iLCBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJpbmdFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJpbmdFZGl0b3IuanMKaW5kZXggNjNkYWY3YTUy
Y2ZkOWI2NzJjYjY5MmUwYjEyNTZiNTU2MDI0MTA3NS4uZDA2MGZkNWVkNDBmMTAyYTY1MmY5NDBm
ODhmMTBiZWIzY2E0ZTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3ByaW5nRWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmluZ0VkaXRvci5qcwpAQCAtMjksMTUgKzI5LDE5IEBA
IFdJLlNwcmluZ0VkaXRvciA9IGNsYXNzIFNwcmluZ0VkaXRvciBleHRlbmRzIFdJLk9iamVjdAog
ICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAorICAgICAgICBsZXQgYm91bmRSZXNldFByZXZpZXdB
bmltYXRpb24gPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3Jlc2V0UHJldmlld0Fu
aW1hdGlvbihldmVudCk7CisgICAgICAgIH07CisKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInNwcmluZy1lZGl0b3IiKTsKIAogICAgICAgICB0aGlzLl9wcmV2aWV3Q29udGFp
bmVyID0gdGhpcy5fZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwcmluZy1wcmV2aWV3Iik7
CiAgICAgICAgIHRoaXMuX3ByZXZpZXdDb250YWluZXIudGl0bGUgPSBXSS5VSVN0cmluZygiUmVz
dGFydCBhbmltYXRpb24iKTsKLSAgICAgICAgdGhpcy5fcHJldmlld0NvbnRhaW5lci5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9yZXNldFByZXZpZXdBbmltYXRpb24uYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX3ByZXZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgYm91bmRSZXNldFByZXZpZXdBbmltYXRpb24pOwogCiAgICAgICAgIHRoaXMu
X3ByZXZpZXdFbGVtZW50ID0gdGhpcy5fcHJldmlld0NvbnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2
Iik7Ci0gICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5z
aXRpb25lbmQiLCB0aGlzLmRlYm91bmNlKDUwMCkuX3Jlc2V0UHJldmlld0FuaW1hdGlvbik7Cisg
ICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25l
bmQiLCBib3VuZFJlc2V0UHJldmlld0FuaW1hdGlvbik7CiAKICAgICAgICAgdGhpcy5fdGltaW5n
Q29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNwcmluZy10aW1p
bmciKTsKIApAQCAtMjEzLDcgKzIxNyw3IEBAIFdJLlNwcmluZ0VkaXRvciA9IGNsYXNzIFNwcmlu
Z0VkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWV2ZW50KQogICAgICAgICAg
ICAgdGhpcy5fdGltaW5nQ29udGFpbmVyLmRhdGFzZXQuZHVyYXRpb24gPSAiMCI7CiAKLSAgICAg
ICAgdGhpcy5kZWJvdW5jZSg1MDApLl91cGRhdGVQcmV2aWV3QW5pbWF0aW9uKGV2ZW50KTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlUHJldmlld0FuaW1hdGlvbihldmVudCk7CiAgICAgfQogCiAgICAg
X3VwZGF0ZVByZXZpZXdBbmltYXRpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50LmpzCmluZGV4IGQzYjg5
Mjk0MzUyNzc2NjEyOWIyNDRhZmZiOWE5NjllMDAyNmEwMmEuLmVmZjk4ZThmYmVlN2ZmY2Q2Mzhh
NWIzMWYyZjg5ZGM2MWJmMzNhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50LmpzCkBAIC0xNjUsMTAgKzE2NSwx
MiBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmhpZGRlbiA9IHRoaXMuX2hpZGRl
bjsKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkgewotICAgICAgICAgICAgbGV0IGZv
Y3VzZWRUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2hpZGRlbiAm
JiB0aGlzLnNlbGVjdGVkKQotICAgICAgICAgICAgICAgIGZvY3VzZWRUcmVlRWxlbWVudCA9IHRo
aXM7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24udXBkYXRlVmlydHVhbGl6ZWRF
bGVtZW50cyhmb2N1c2VkVHJlZUVsZW1lbnQpOworICAgICAgICAgICAgaWYgKHRoaXMudHJlZU91
dGxpbmUudmlydHVhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICBsZXQgZm9jdXNlZFRyZWVFbGVt
ZW50ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2hpZGRlbiAmJiB0aGlzLnNl
bGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBmb2N1c2VkVHJlZUVsZW1lbnQgPSB0aGlzOwor
ICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50
c0RlYm91bmNlci5kZWxheUZvclRpbWUoMCwgZm9jdXNlZFRyZWVFbGVtZW50KTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuRWxlbWVudFZpc2liaWxpdHlEaWRDaGFuZ2UsIHtl
bGVtZW50OiB0aGlzfSk7CiAgICAgICAgIH0KQEAgLTIwMyw3ICsyMDUsMTMgQEAgV0kuVHJlZUVs
ZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAo
IXRoaXMudHJlZU91dGxpbmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5v
bk5leHRGcmFtZS5fZmlyZURpZENoYW5nZSgpOworICAgICAgICBpZiAoIXRoaXMuX2ZpcmVEaWRD
aGFuZ2VEZWJvdW5jZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2ZpcmVEaWRDaGFuZ2VEZWJvdW5j
ZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9maXJlRGlk
Q2hhbmdlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Zp
cmVEaWRDaGFuZ2VEZWJvdW5jZXIuZGVsYXlGb3JGcmFtZSgpOwogICAgIH0KIAogICAgIF9zZXRM
aXN0SXRlbU5vZGVDb250ZW50KCkKQEAgLTI2MSw4ICsyNjksOCBAQCBXSS5UcmVlRWxlbWVudCA9
IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhp
cy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUsIHRoaXMuX2xpc3RJdGVtTm9kZS5uZXh0U2libGluZyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
c29vbi51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKCk7CisgICAgICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUudmlydHVhbGl6ZWQpCisgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZGVsYXlGb3JU
aW1lKDApOwogCiAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKQogICAgICAgICAgICAgdGhpcy5z
ZWxlY3QoKTsKQEAgLTI3OSw4ICsyODcsOCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVF
bGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSkKICAgICAgICAgICAgIHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9jaGlsZHJl
bkxpc3ROb2RlKTsKIAotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKLSAgICAgICAgICAg
IHRoaXMudHJlZU91dGxpbmUuc29vbi51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKCk7CisgICAg
ICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUudmlydHVhbGl6ZWQp
CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNE
ZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogICAgIH0KIAogICAgIHN0YXRpYyB0cmVlRWxlbWVu
dFRvZ2dsZWQoZXZlbnQpCkBAIC0zNDYsOCArMzU0LDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFz
cyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGhpcy5vbmNvbGxh
cHNlKQogICAgICAgICAgICAgdGhpcy5vbmNvbGxhcHNlKHRoaXMpOwogCi0gICAgICAgIGlmICh0
aGlzLnRyZWVPdXRsaW5lKSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24udXBk
YXRlVmlydHVhbGl6ZWRFbGVtZW50cyh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxp
bmUgJiYgdGhpcy50cmVlT3V0bGluZS52aXJ0dWFsaXplZCkgeworICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9yVGlt
ZSgwLCB0aGlzKTsKIAogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuRWxlbWVudERpc2Nsb3N1cmVEaWRDaGFu
Z2VkLCB7ZWxlbWVudDogdGhpc30pOwogICAgICAgICB9CkBAIC00MTMsOCArNDIxLDggQEAgV0ku
VHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAodGhpcy5vbmV4cGFuZCkKICAgICAgICAgICAgIHRoaXMub25leHBhbmQodGhpcyk7CiAK
LSAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUpIHsKLSAgICAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuc29vbi51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKHRoaXMpOworICAgICAgICBpZiAo
dGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRyZWVPdXRsaW5lLnZpcnR1YWxpemVkKSB7CisgICAg
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5j
ZXIuZGVsYXlGb3JUaW1lKDAsIHRoaXMpOwogCiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVlT3V0bGluZS5FdmVudC5FbGVtZW50RGlz
Y2xvc3VyZURpZENoYW5nZWQsIHtlbGVtZW50OiB0aGlzfSk7CiAgICAgICAgIH0KQEAgLTQ2Niw4
ICs0NzQsOCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgb25yZXZlYWws
IGFzIHNvbWUgc3ViY2xhc3NlcyB3aWxsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgYW5kCiAgICAg
ICAgIC8vIHdlIHNob3VsZCB1cGRhdGUgdGhlIHZpc2libGUgZWxlbWVudHMgYmVmb3JlIGF0dGVt
cHRpbmcgdG8gc2Nyb2xsLgotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKLSAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cyh0aGlzKTsKKyAg
ICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS52aXJ0dWFsaXpl
ZCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50
c0RlYm91bmNlci5mb3JjZSh0aGlzKTsKIAogICAgICAgICBpZiAodGhpcy5vbnJldmVhbCkKICAg
ICAgICAgICAgIHRoaXMub25yZXZlYWwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IDlmMjFh
MmM1NWE3OGUxMjY3M2JmNDlkOTU3MGVjNWEwNDg1ZjZhOWIuLmZlNTdjNzg1ZWMyZjY3YmY4MzQx
N2YzZjljYjFiMTE5ODFjMzIyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC02Miw2ICs2Miw3IEBA
IFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgdGhpcy5fcHJvY2Vzc2luZ1NlbGVjdGlvbkNoYW5nZSA9IGZhbHNlOwogICAgICAgICB0
aGlzLl9zdXBwcmVzc05leHRTZWxlY3Rpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwogCisgICAg
ICAgIHRoaXMuX3ZpcnR1YWxpemVkRGVib3VuY2VyID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmly
dHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVh
bGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxp
emVkU2Nyb2xsQ29udGFpbmVyID0gbnVsbDsKQEAgLTY4OCw2ICs2ODksMTEgQEAgV0kuVHJlZU91
dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWlzTmFOKHRyZWVJdGVtSGVpZ2h0KSk7CiAKKyAgICAgICAgbGV0
IGJvdW5kVXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cyA9IChmb2N1c2VkVHJlZUVsZW1lbnQpID0+
IHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRy
ZWVFbGVtZW50KTsKKyAgICAgICAgfTsKKworICAgICAgICB0aGlzLl92aXJ0dWFsaXplZERlYm91
bmNlciA9IG5ldyBEZWJvdW5jZXIoYm91bmRVcGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKTsKICAg
ICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gbmV3IFNldDsKICAg
ICAgICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IG5ldyBTZXQ7CiAg
ICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVy
OwpAQCAtNjk1LDEwNCArNzAxLDE1IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxp
bmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6
ZWRCb3R0b21TcGFjZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIAotICAgICAg
ICBsZXQgdGhyb3R0bGVyID0gdGhpcy50aHJvdHRsZSgxMDAwIC8gMTYpOworICAgICAgICBsZXQg
dGhyb3R0bGVyID0gbmV3IFRocm90dGxlcihib3VuZFVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMs
IDEwMDAgLyAxNik7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyLmFk
ZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIChldmVudCkgPT4gewotICAgICAgICAgICAgdGhyb3R0
bGVyLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoKTsKKyAgICAgICAgICAgIHRocm90dGxlci5m
aXJlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHVwZGF0ZVZpcnR1YWxpemVkRWxlbWVu
dHMoZm9jdXNlZFRyZWVFbGVtZW50KQorICAgIGdldCB1cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRz
RGVib3VuY2VyKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy52aXJ0dWFsaXplZCkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBmdW5jdGlvbiB3YWxrKHBhcmVudCwgY2FsbGJhY2ss
IGNvdW50ID0gMCkgewotICAgICAgICAgICAgbGV0IHNob3VsZFJldHVybiA9IGZhbHNlOwotICAg
ICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgcGFyZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjaGlsZC5yZXZlYWxlZChmYWxzZSkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkUmV0dXJuID0gY2FsbGJhY2soY2hpbGQs
IGNvdW50KTsKLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmV0dXJuKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAg
ICAgaWYgKGNoaWxkLmV4cGFuZGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQg
PSB3YWxrKGNoaWxkLCBjYWxsYmFjaywgY291bnQpOwotICAgICAgICAgICAgICAgICAgICBjb3Vu
dCA9IHJlc3VsdC5jb3VudDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zaG91bGRS
ZXR1cm4pCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2NvdW50LCBzaG91bGRSZXR1cm59
OwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHtudW1iZXJWaXNpYmxlLCBleHRyYVJvd3MsIGZp
cnN0SXRlbSwgbGFzdEl0ZW19ID0gdGhpcy5fY2FsY3VsYXRlVmlydHVhbGl6ZWRWYWx1ZXMoKTsK
LQotICAgICAgICBsZXQgc2hvdWxkU2Nyb2xsID0gZmFsc2U7Ci0gICAgICAgIGlmIChmb2N1c2Vk
VHJlZUVsZW1lbnQgJiYgZm9jdXNlZFRyZWVFbGVtZW50LnJldmVhbGVkKGZhbHNlKSkgewotICAg
ICAgICAgICAgbGV0IGluZGV4ID0gd2Fsayh0aGlzLCAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVt
ZW50ID09PSBmb2N1c2VkVHJlZUVsZW1lbnQpLmNvdW50OwotICAgICAgICAgICAgaWYgKGluZGV4
IDwgZmlyc3RJdGVtKSB7Ci0gICAgICAgICAgICAgICAgZmlyc3RJdGVtID0gaW5kZXggLSBleHRy
YVJvd3M7Ci0gICAgICAgICAgICAgICAgbGFzdEl0ZW0gPSBpbmRleCArIG51bWJlclZpc2libGUg
KyBleHRyYVJvd3M7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID4gbGFzdEl0ZW0pIHsK
LSAgICAgICAgICAgICAgICBmaXJzdEl0ZW0gPSBpbmRleCAtIG51bWJlclZpc2libGUgLSBleHRy
YVJvd3M7Ci0gICAgICAgICAgICAgICAgbGFzdEl0ZW0gPSBpbmRleCArIGV4dHJhUm93czsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT25seSBzY3JvbGwgaWYgdGhlIGBmb2N1c2Vk
VHJlZUVsZW1lbnRgIGlzIG91dHNpZGUgdGhlIHZpc2libGUgaXRlbXMsIG5vdCBpbmNsdWRpbmcK
LSAgICAgICAgICAgIC8vIHRoZSBhZGRlZCBidWZmZXIgYGV4dHJhUm93c2AuCi0gICAgICAgICAg
ICBzaG91bGRTY3JvbGwgPSAoaW5kZXggPCBmaXJzdEl0ZW0gKyBleHRyYVJvd3MpIHx8IChpbmRl
eCA+IGxhc3RJdGVtIC0gZXh0cmFSb3dzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGZpcnN0SXRlbSA8IGxhc3RJdGVtKTsKLQotICAgICAgICBsZXQgdmlzaWJsZVRyZWVF
bGVtZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCB0cmVlRWxlbWVudHNUb0F0dGFjaCA9IG5l
dyBTZXQ7Ci0gICAgICAgIGxldCB0cmVlRWxlbWVudHNUb0RldGFjaCA9IG5ldyBTZXQ7Ci0gICAg
ICAgIGxldCB0b3RhbEl0ZW1zID0gd2Fsayh0aGlzLCAodHJlZUVsZW1lbnQsIGNvdW50KSA9PiB7
Ci0gICAgICAgICAgICBpZiAoY291bnQgPj0gZmlyc3RJdGVtICYmIGNvdW50IDw9IGxhc3RJdGVt
KSB7Ci0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRzVG9BdHRhY2guYWRkKHRyZWVFbGVtZW50
KTsKLSAgICAgICAgICAgICAgICBpZiAoY291bnQgPj0gZmlyc3RJdGVtICsgZXh0cmFSb3dzICYm
IGNvdW50IDw9IGxhc3RJdGVtIC0gZXh0cmFSb3dzKQotICAgICAgICAgICAgICAgICAgICB2aXNp
YmxlVHJlZUVsZW1lbnRzLmFkZCh0cmVlRWxlbWVudCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KHRyZWVFbGVtZW50LmVsZW1lbnQucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICB0cmVlRWxl
bWVudHNUb0RldGFjaC5hZGQodHJlZUVsZW1lbnQpOwotCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0pLmNvdW50OwotCi0gICAgICAgIC8vIFJlZHJhdyBpZiB3ZSBhcmUgYWJv
dXQgdG8gc2Nyb2xsLgotICAgICAgICBpZiAoIXNob3VsZFNjcm9sbCkgewotICAgICAgICAgICAg
Ly8gUmVkcmF3IGlmIGFsbCBvZiB0aGUgcHJldmlvdXNseSBjZW50ZXJlZCBgV0kuVHJlZUVsZW1l
bnRgIGFyZSBubyBsb25nZXIgY2VudGVyZWQuCi0gICAgICAgICAgICBpZiAodmlzaWJsZVRyZWVF
bGVtZW50cy5pbnRlcnNlY3RzKHRoaXMuX3ZpcnR1YWxpemVkVmlzaWJsZVRyZWVFbGVtZW50cykp
IHsKLSAgICAgICAgICAgICAgICAvLyBSZWRyYXcgaWYgdGhlcmUgaXMgYSBgV0kuVHJlZUVsZW1l
bnRgIHRoYXQgc2hvdWxkIGJlIHNob3duIHRoYXQgaXNuJ3QgYXR0YWNoZWQuCi0gICAgICAgICAg
ICAgICAgaWYgKHZpc2libGVUcmVlRWxlbWVudHMuaXNTdWJzZXRPZih0aGlzLl92aXJ0dWFsaXpl
ZEF0dGFjaGVkVHJlZUVsZW1lbnRzKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxl
VHJlZUVsZW1lbnRzID0gdmlzaWJsZVRyZWVFbGVtZW50czsKLSAgICAgICAgdGhpcy5fdmlydHVh
bGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IHRyZWVFbGVtZW50c1RvQXR0YWNoOwotCi0gICAg
ICAgIGZvciAobGV0IHRyZWVFbGVtZW50IG9mIHRyZWVFbGVtZW50c1RvRGV0YWNoKQotICAgICAg
ICAgICAgdHJlZUVsZW1lbnQuZWxlbWVudC5yZW1vdmUoKTsKLQotICAgICAgICBmb3IgKGxldCB0
cmVlRWxlbWVudCBvZiB0cmVlRWxlbWVudHNUb0F0dGFjaCkgewotICAgICAgICAgICAgdHJlZUVs
ZW1lbnQucGFyZW50Ll9jaGlsZHJlbkxpc3ROb2RlLmFwcGVuZENoaWxkKHRyZWVFbGVtZW50LmVs
ZW1lbnQpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50Ll9jaGlsZHJlbkxpc3ROb2RlKQot
ICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5hcHBl
bmRDaGlsZCh0cmVlRWxlbWVudC5fY2hpbGRyZW5MaXN0Tm9kZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLl92aXJ0dWFsaXplZFRvcFNwYWNlci5zdHlsZS5oZWlnaHQgPSAoTWF0aC5tYXgo
Zmlyc3RJdGVtLCAwKSAqIHRoaXMuX3ZpcnR1YWxpemVkVHJlZUl0ZW1IZWlnaHQpICsgInB4IjsK
LSAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICE9PSB0aGlz
Ll92aXJ0dWFsaXplZFRvcFNwYWNlcikKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZSh0aGlzLl92aXJ0dWFsaXplZFRvcFNwYWNlciwgdGhpcy5lbGVtZW50
KTsKLQotICAgICAgICB0aGlzLl92aXJ0dWFsaXplZEJvdHRvbVNwYWNlci5zdHlsZS5oZWlnaHQg
PSAoTWF0aC5tYXgodG90YWxJdGVtcyAtIGxhc3RJdGVtLCAwKSAqIHRoaXMuX3ZpcnR1YWxpemVk
VHJlZUl0ZW1IZWlnaHQpICsgInB4IjsKLSAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5uZXh0RWxl
bWVudFNpYmxpbmcgIT09IHRoaXMuX3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyKQotICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX3ZpcnR1YWxpemVk
Qm90dG9tU3BhY2VyLCB0aGlzLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKTsKLQotICAgICAg
ICBpZiAoc2hvdWxkU2Nyb2xsKQotICAgICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRTY3JvbGxD
b250YWluZXIuc2Nyb2xsVG9wID0gKGZpcnN0SXRlbSArIGV4dHJhUm93cykgKiB0aGlzLl92aXJ0
dWFsaXplZFRyZWVJdGVtSGVpZ2h0OworICAgICAgICByZXR1cm4gdGhpcy5fdmlydHVhbGl6ZWRE
ZWJvdW5jZXI7CiAgICAgfQogCiAgICAgLy8gU2VsZWN0aW9uQ29udHJvbGxlciBkZWxlZ2F0ZQpA
QCAtOTkwLDYgKzkwNyw5OSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH07CiAgICAgfQogCisgICAgX3VwZGF0ZVZpcnR1YWxp
emVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy52aXJ0dWFsaXplZCk7CisKKyAgICAgICAgZnVuY3Rpb24gd2FsayhwYXJlbnQs
IGNhbGxiYWNrLCBjb3VudCA9IDApIHsKKyAgICAgICAgICAgIGxldCBzaG91bGRSZXR1cm4gPSBm
YWxzZTsKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHBhcmVudC5jaGlsZHJlbikgewor
ICAgICAgICAgICAgICAgIGlmICghY2hpbGQucmV2ZWFsZWQoZmFsc2UpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHNob3VsZFJldHVybiA9IGNhbGxi
YWNrKGNoaWxkLCBjb3VudCk7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJldHVybikKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICArK2NvdW50OworICAg
ICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkgeworICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gd2FsayhjaGlsZCwgY2FsbGJhY2ssIGNvdW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgY291bnQgPSByZXN1bHQuY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQuc2hvdWxkUmV0dXJuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHtjb3VudCwgc2hv
dWxkUmV0dXJufTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB7bnVtYmVyVmlzaWJsZSwgZXh0
cmFSb3dzLCBmaXJzdEl0ZW0sIGxhc3RJdGVtfSA9IHRoaXMuX2NhbGN1bGF0ZVZpcnR1YWxpemVk
VmFsdWVzKCk7CisKKyAgICAgICAgbGV0IHNob3VsZFNjcm9sbCA9IGZhbHNlOworICAgICAgICBp
ZiAoZm9jdXNlZFRyZWVFbGVtZW50ICYmIGZvY3VzZWRUcmVlRWxlbWVudC5yZXZlYWxlZChmYWxz
ZSkpIHsKKyAgICAgICAgICAgIGxldCBpbmRleCA9IHdhbGsodGhpcywgKHRyZWVFbGVtZW50KSA9
PiB0cmVlRWxlbWVudCA9PT0gZm9jdXNlZFRyZWVFbGVtZW50KS5jb3VudDsKKyAgICAgICAgICAg
IGlmIChpbmRleCA8IGZpcnN0SXRlbSkgeworICAgICAgICAgICAgICAgIGZpcnN0SXRlbSA9IGlu
ZGV4IC0gZXh0cmFSb3dzOworICAgICAgICAgICAgICAgIGxhc3RJdGVtID0gaW5kZXggKyBudW1i
ZXJWaXNpYmxlICsgZXh0cmFSb3dzOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA+IGxh
c3RJdGVtKSB7CisgICAgICAgICAgICAgICAgZmlyc3RJdGVtID0gaW5kZXggLSBudW1iZXJWaXNp
YmxlIC0gZXh0cmFSb3dzOworICAgICAgICAgICAgICAgIGxhc3RJdGVtID0gaW5kZXggKyBleHRy
YVJvd3M7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE9ubHkgc2Nyb2xsIGlmIHRo
ZSBgZm9jdXNlZFRyZWVFbGVtZW50YCBpcyBvdXRzaWRlIHRoZSB2aXNpYmxlIGl0ZW1zLCBub3Qg
aW5jbHVkaW5nCisgICAgICAgICAgICAvLyB0aGUgYWRkZWQgYnVmZmVyIGBleHRyYVJvd3NgLgor
ICAgICAgICAgICAgc2hvdWxkU2Nyb2xsID0gKGluZGV4IDwgZmlyc3RJdGVtICsgZXh0cmFSb3dz
KSB8fCAoaW5kZXggPiBsYXN0SXRlbSAtIGV4dHJhUm93cyk7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zb2xlLmFzc2VydChmaXJzdEl0ZW0gPCBsYXN0SXRlbSk7CisKKyAgICAgICAgbGV0IHZp
c2libGVUcmVlRWxlbWVudHMgPSBuZXcgU2V0OworICAgICAgICBsZXQgdHJlZUVsZW1lbnRzVG9B
dHRhY2ggPSBuZXcgU2V0OworICAgICAgICBsZXQgdHJlZUVsZW1lbnRzVG9EZXRhY2ggPSBuZXcg
U2V0OworICAgICAgICBsZXQgdG90YWxJdGVtcyA9IHdhbGsodGhpcywgKHRyZWVFbGVtZW50LCBj
b3VudCkgPT4geworICAgICAgICAgICAgaWYgKGNvdW50ID49IGZpcnN0SXRlbSAmJiBjb3VudCA8
PSBsYXN0SXRlbSkgeworICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50c1RvQXR0YWNoLmFkZCh0
cmVlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKGNvdW50ID49IGZpcnN0SXRlbSArIGV4
dHJhUm93cyAmJiBjb3VudCA8PSBsYXN0SXRlbSAtIGV4dHJhUm93cykKKyAgICAgICAgICAgICAg
ICAgICAgdmlzaWJsZVRyZWVFbGVtZW50cy5hZGQodHJlZUVsZW1lbnQpOworICAgICAgICAgICAg
fSBlbHNlIGlmICh0cmVlRWxlbWVudC5lbGVtZW50LnBhcmVudE5vZGUpCisgICAgICAgICAgICAg
ICAgdHJlZUVsZW1lbnRzVG9EZXRhY2guYWRkKHRyZWVFbGVtZW50KTsKKworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9KS5jb3VudDsKKworICAgICAgICAvLyBSZWRyYXcgaWYg
d2UgYXJlIGFib3V0IHRvIHNjcm9sbC4KKyAgICAgICAgaWYgKCFzaG91bGRTY3JvbGwpIHsKKyAg
ICAgICAgICAgIC8vIFJlZHJhdyBpZiBhbGwgb2YgdGhlIHByZXZpb3VzbHkgY2VudGVyZWQgYFdJ
LlRyZWVFbGVtZW50YCBhcmUgbm8gbG9uZ2VyIGNlbnRlcmVkLgorICAgICAgICAgICAgaWYgKHZp
c2libGVUcmVlRWxlbWVudHMuaW50ZXJzZWN0cyh0aGlzLl92aXJ0dWFsaXplZFZpc2libGVUcmVl
RWxlbWVudHMpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVkcmF3IGlmIHRoZXJlIGlzIGEgYFdJ
LlRyZWVFbGVtZW50YCB0aGF0IHNob3VsZCBiZSBzaG93biB0aGF0IGlzbid0IGF0dGFjaGVkLgor
ICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlVHJlZUVsZW1lbnRzLmlzU3Vic2V0T2YodGhpcy5f
dmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cykpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3ZpcnR1YWxp
emVkVmlzaWJsZVRyZWVFbGVtZW50cyA9IHZpc2libGVUcmVlRWxlbWVudHM7CisgICAgICAgIHRo
aXMuX3ZpcnR1YWxpemVkQXR0YWNoZWRUcmVlRWxlbWVudHMgPSB0cmVlRWxlbWVudHNUb0F0dGFj
aDsKKworICAgICAgICBmb3IgKGxldCB0cmVlRWxlbWVudCBvZiB0cmVlRWxlbWVudHNUb0RldGFj
aCkKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LmVsZW1lbnQucmVtb3ZlKCk7CisKKyAgICAgICAg
Zm9yIChsZXQgdHJlZUVsZW1lbnQgb2YgdHJlZUVsZW1lbnRzVG9BdHRhY2gpIHsKKyAgICAgICAg
ICAgIHRyZWVFbGVtZW50LnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5hcHBlbmRDaGlsZCh0cmVl
RWxlbWVudC5lbGVtZW50KTsKKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudC5fY2hpbGRyZW5M
aXN0Tm9kZSkKKyAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5wYXJlbnQuX2NoaWxkcmVuTGlz
dE5vZGUuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQuX2NoaWxkcmVuTGlzdE5vZGUpOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIuc3R5bGUuaGVpZ2h0ID0g
KE1hdGgubWF4KGZpcnN0SXRlbSwgMCkgKiB0aGlzLl92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0
KSArICJweCI7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGlu
ZyAhPT0gdGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIpCisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIsIHRo
aXMuZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRCb3R0b21TcGFjZXIuc3R5
bGUuaGVpZ2h0ID0gKE1hdGgubWF4KHRvdGFsSXRlbXMgLSBsYXN0SXRlbSwgMCkgKiB0aGlzLl92
aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0KSArICJweCI7CisgICAgICAgIGlmICh0aGlzLmVsZW1l
bnQubmV4dEVsZW1lbnRTaWJsaW5nICE9PSB0aGlzLl92aXJ0dWFsaXplZEJvdHRvbVNwYWNlcikK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl92
aXJ0dWFsaXplZEJvdHRvbVNwYWNlciwgdGhpcy5lbGVtZW50Lm5leHRFbGVtZW50U2libGluZyk7
CisKKyAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkKKyAgICAgICAgICAgIHRoaXMuX3ZpcnR1YWxp
emVkU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9IChmaXJzdEl0ZW0gKyBleHRyYVJvd3MpICog
dGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRlbUhlaWdodDsKKyAgICB9CisKICAgICBfaGFuZGxlQ29u
dGV4dG1lbnUoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLnRy
ZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcu
anMKaW5kZXggM2JmMGQ2NDYzYzVhZjc3YzgzMGM0Y2FjOTEwMGIyYzFhNWNhYzhhMS4uZTQ3NjEy
Mzk3ZmVlNGUxY2VlODRlYjc2MGVmOThmMzIxNDU5MDNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0
Q29udGVudFZpZXcuanMKQEAgLTMxLDYgKzMxLDEwIEBAIFdJLldlYlNvY2tldENvbnRlbnRWaWV3
ID0gY2xhc3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAg
ICAgICAgIHN1cGVyKHJlc291cmNlKTsKIAorICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXNEZWJv
dW5jZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZy
YW1lcygpOworICAgICAgICB9KTsKKwogICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNl
OwogICAgICAgICB0aGlzLl9mcmFtZXNSZW5kZXJlZCA9IDA7CiAgICAgICAgIHRoaXMuX2xhc3RS
ZW5kZXJlZFJlYWR5U3RhdGUgPSBudWxsOwpAQCAtODEsNyArODUsNyBAQCBXSS5XZWJTb2NrZXRD
b250ZW50VmlldyA9IGNsYXNzIFdlYlNvY2tldENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZXcKIAogICAgIHNob3duKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUZyYW1lcygp
OworICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXNEZWJvdW5jZXIuZm9yY2UoKTsKICAgICAgICAg
dGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5XZWJTb2NrZXRSZXNvdXJjZS5FdmVu
dC5GcmFtZUFkZGVkLCB0aGlzLl91cGRhdGVGcmFtZXNTb29uLCB0aGlzKTsKICAgICAgICAgdGhp
cy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5XZWJTb2NrZXRSZXNvdXJjZS5FdmVudC5S
ZWFkeVN0YXRlQ2hhbmdlZCwgdGhpcy5fdXBkYXRlRnJhbWVzU29vbiwgdGhpcyk7CiAgICAgfQpA
QCAtOTYsNyArMTAwLDcgQEAgV0kuV2ViU29ja2V0Q29udGVudFZpZXcgPSBjbGFzcyBXZWJTb2Nr
ZXRDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBfdXBkYXRlRnJhbWVz
U29vbigpCiAgICAgewotICAgICAgICB0aGlzLm9uTmV4dEZyYW1lLl91cGRhdGVGcmFtZXMoKTsK
KyAgICAgICAgdGhpcy5fdXBkYXRlRnJhbWVzRGVib3VuY2VyLmRlbGF5Rm9yRnJhbWUoKTsKICAg
ICB9CiAKICAgICBfdXBkYXRlRnJhbWVzKCkKQEAgLTExOSw4ICsxMjMsMTUgQEAgV0kuV2ViU29j
a2V0Q29udGVudFZpZXcgPSBjbGFzcyBXZWJTb2NrZXRDb250ZW50VmlldyBleHRlbmRzIFdJLkNv
bnRlbnRWaWV3CiAgICAgICAgICAgICB0aGlzLl9sYXN0UmVuZGVyZWRSZWFkeVN0YXRlID0gdGhp
cy5fcmVzb3VyY2UucmVhZHlTdGF0ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzaG91bGRT
Y3JvbGxUb0JvdHRvbSkKLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLm9uTmV4dEZyYW1lLnNj
cm9sbFRvTGFzdFJvdygpOworICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsVG9Cb3R0b20pIHsKKyAg
ICAgICAgICAgIGlmICghdGhpcy5fc2Nyb2xsVG9MYXN0Um93RGVib3VuY2VyKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fc2Nyb2xsVG9MYXN0Um93RGVib3VuY2VyID0gbmV3IERlYm91bmNlcigo
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbFRvTGFzdFJv
dygpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0
aGlzLl9zY3JvbGxUb0xhc3RSb3dEZWJvdW5jZXIuZGVsYXlGb3JGcmFtZSgpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgX2FkZEZyYW1lKGRhdGEsIGlzT3V0Z29pbmcsIG9wY29kZSwgdGltZSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMzkwZTQ5ZjhlODNiNWIyZmYyZjAxMWFmMDM1MjNjMGQ5ZmMwZDgxLi5kZGY0ODU1
M2I0NjNjNGNmMTQ3YTdjZWM0YmM5Y2RlMzBhYjYxOWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTktMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IG1ha2UgZGVib3VuY2UgUHJveHkgaW50byBpdHMgb3duIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ3MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVz
dHMvZGVib3VuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3Rz
L3Rocm90dGxlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUt
ZXhwZWN0ZWQudHh0OgorCiAyMDE5LTAyLTE1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViVlRUXSBJbmxpbmUgV2ViVlRUIHN0eWxlcyBzaG91bGQg
c3RhcnQgd2l0aCAnOjpjdWUnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQKaW5kZXggNjAwOTgwNTMyMzZiYTdjNDJhMmNk
OTk1OTE3MGZiNTNkZDgxZTQ5My4uMzhjNjJiYjk1YWE5YWVmNzZlMjZiNGE4Y2MwYmI2YTQ5MzY0
MzkyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3Vu
Y2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Rl
Ym91bmNlLWV4cGVjdGVkLnR4dApAQCAtMSwxMSArMSwxMCBAQAotVGVzdGluZyBkZWJvdW5jZSBw
cm94eSBzdXBwb3J0LgorVGVzdGluZyBkZWJvdW5jZSBmdW5jdGlvbmFsaXR5LgogCiAKID09IFJ1
bm5pbmcgdGVzdCBzdWl0ZTogRGVib3VuY2UKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCYXNpYyBE
ZWJvdW5jZQogUEFTUzogRGVib3VuY2VkIHN1Y2Nlc3NmdWxseS4KIFBBU1M6IENhbGwgZGVsYXll
ZCBhdCBsZWFzdCAxMG1zLgotUEFTUzogYHRoaXNgIGlzIHRoZSByaWdodCBvYmplY3QuCiBQQVNT
OiBBcmd1bWVudHMgbGVuZ3RoIGlzIDIuCiBQQVNTOiBGaXJzdCBhcmd1bWVudCBpcyA0LgogUEFT
UzogU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMnLgpAQCAtMTMsMTQgKzEyLDEyIEBAIFBBU1M6IFNl
Y29uZCBhcmd1bWVudCBpcyAnYWJjJy4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aXBsZSBE
ZWJvdW5jZSBEZWxheXMKIFBBU1M6IERlYm91bmNlZCBzdWNjZXNzZnVsbHkuCiBQQVNTOiBDYWxs
IGRlbGF5ZWQgYXQgbGVhc3QgNDBtcy4KLVBBU1M6IGB0aGlzYCBpcyB0aGUgcmlnaHQgb2JqZWN0
LgogUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgogUEFTUzogRmlyc3QgYXJndW1lbnQgaXMg
NC4KIFBBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KIAogLS0gUnVubmluZyB0ZXN0IGNh
c2U6IFNvb24gRGVib3VuY2UKIFBBU1M6IERlYm91bmNlZCBzdWNjZXNzZnVsbHkuCi1QQVNTOiBg
dGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4KIFBBU1M6IEFyZ3VtZW50cyBsZW5ndGggaXMgMi4K
IFBBU1M6IEZpcnN0IGFyZ3VtZW50IGlzIDQuCiBQQVNTOiBTZWNvbmQgYXJndW1lbnQgaXMgJ2Fi
YycuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5j
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2UuaHRtbApp
bmRleCBhNGYwMDcxOGViZjU0OGQzMDhiODc3MjM1YjcyN2EyMjA2MWU4NzdhLi5hNmZlOGQ3OWZh
M2IwYzlhMWM3YzE5MDRmNTQ3YzAzMzBmMjNhYTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IWRvY3R5cGUg
aHRtbD4KKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgpAQCAtMTMsMjkgKzEzLDI1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0
IGNhbGxDb3VudCA9IDA7CiAgICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uu
bm93KCk7CiAKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVz
dChmb28sIGJhcikgewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjYWxsQ291bnQgPT09IDEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBz
dWNjZXNzZnVsbHkuIik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcy4iKTsKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3Vu
Y2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAgIGlmICgrK2NhbGxDb3VudCA9PT0g
MSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgc3Vj
Y2Vzc2Z1bGx5LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIG11bHRpcGxlIHRp
bWVzLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChw
ZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSAxMCwgIkNhbGwgZGVsYXllZCBhdCBsZWFz
dCAxMG1zLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJm
b3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSAxMCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCAx
MG1zLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0
aGlzID09PSBvYmplY3QsICJgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFyZ3VtZW50cy5sZW5ndGggPT09
IDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChmb28gPT09IDQsICJGaXJzdCBhcmd1bWVudCBpcyA0LiIpOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJj
IiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiwgIkFyZ3VtZW50cyBsZW5n
dGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9v
ID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJj
Jy4iKTsKIAotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgbGV0IGRlYm91bmNlUHJveHkgPSBvYmplY3QuZGVib3VuY2Uo
MTApOwotICAgICAgICAgICAgZGVib3VuY2VQcm94eS50ZXN0KDEsICd4eXonKTsKLSAgICAgICAg
ICAgIGRlYm91bmNlUHJveHkudGVzdCgyLCAnZmdoJyk7Ci0gICAgICAgICAgICBkZWJvdW5jZVBy
b3h5LnRlc3QoMywgJ2VydCcpOwotICAgICAgICAgICAgZGVib3VuY2VQcm94eS50ZXN0KDQsICdh
YmMnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDEsICd4eXonKTsK
KyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDIsICdmZ2gnKTsKKyAgICAg
ICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDMsICdlcnQnKTsKKyAgICAgICAgICAg
IGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDQsICdhYmMnKTsKIAogICAgICAgICAgICAgaWYg
KCFjYWxsQ291bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTEsMjggKzQ3LDI1IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CiAgICAgICAg
ICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CiAKLSAgICAgICAgICAgIGxl
dCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKKyAgICAg
ICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJhcikgPT4geworICAg
ICAgICAgICAgICAgIGlmICgrK2NhbGxDb3VudCA9PT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LiIpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJv
dW5jZWQgZnVuY3Rpb24gY2FsbGVkIG11bHRpcGxlIHRpbWVzLiIpOwogCi0gICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0
VGltZSA+PSA0MCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCA0MG1zLiIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGlt
ZSA+PSA0MCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCA0MG1zLiIpOwogCi0gICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0aGlzID09PSBvYmplY3QsICJgdGhpc2Ag
aXMgdGhlIHJpZ2h0IG9iamVjdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGFyZ3VtZW50cy5sZW5ndGggPT09IDIsICJBcmd1bWVudHMgbGVuZ3RoIGlz
IDIuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChmb28g
PT09IDQsICJGaXJzdCBhcmd1bWVudCBpcyA0LiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAn
YWJjJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYXJndW1l
bnRzLmxlbmd0aCA9PT0gMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9vID09PSA0LCAiRmlyc3QgYXJndW1lbnQg
aXMgNC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09
PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKIAotICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgb2Jq
ZWN0LmRlYm91bmNlKDEwKS50ZXN0KDEsICd4eXonKTsKLSAgICAgICAgICAgIG9iamVjdC5kZWJv
dW5jZSgyMCkudGVzdCgyLCAnZmdoJyk7Ci0gICAgICAgICAgICBvYmplY3QuZGVib3VuY2UoMzAp
LnRlc3QoMywgJ2VydCcpOwotICAgICAgICAgICAgb2JqZWN0LmRlYm91bmNlKDQwKS50ZXN0KDQs
ICdhYmMnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDEsICd4eXon
KTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMjAsIDIsICdmZ2gnKTsKKyAg
ICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMzAsIDMsICdlcnQnKTsKKyAgICAgICAg
ICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoNDAsIDQsICdhYmMnKTsKIAogICAgICAgICAgICAg
aWYgKCFjYWxsQ291bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcsMjYgKzgwLDIz
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAg
ICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CiAKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7
Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3Vu
Y2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKKyAgICAgICAgICAgIGxldCBk
ZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAg
IGlmICgrK2NhbGxDb3VudCA9PT0gMSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKCJEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LiIpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rp
b24gY2FsbGVkIG11bHRpcGxlIHRpbWVzLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdCh0aGlzID09PSBvYmplY3QsICJgdGhpc2AgaXMgdGhlIHJpZ2h0
IG9iamVjdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KGFyZ3VtZW50cy5sZW5ndGggPT09IDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChmb28gPT09IDQsICJGaXJz
dCBhcmd1bWVudCBpcyA0LiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoZm9vID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNl
Y29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKIAotICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgb2JqZWN0LnNvb24udGVz
dCgxLCAneHl6Jyk7Ci0gICAgICAgICAgICBvYmplY3Quc29vbi50ZXN0KDIsICdmZ2gnKTsKLSAg
ICAgICAgICAgIG9iamVjdC5zb29uLnRlc3QoMywgJ2VydCcpOwotICAgICAgICAgICAgb2JqZWN0
LnNvb24udGVzdCg0LCAnYWJjJyk7CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1l
KDAsIDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMCwgMiwg
J2ZnaCcpOworICAgICAgICAgICAgZGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwLCAzLCAnZXJ0Jyk7
CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDAsIDQsICdhYmMnKTsKIAogICAg
ICAgICAgICAgaWYgKCFjYWxsQ291bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE5
LDE3ICsxMDksMTggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewog
ICAgICAgICBuYW1lOiAiQ2FuY2VsIERlYm91bmNlIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVz
dCgpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQg
ZnVuY3Rpb24gY2FsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkLiIpOwotICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsIHNob3Vs
ZCBoYXZlIGJlZW4gY2FuY2VsZWQuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIG9iamVjdC5kZWJvdW5jZSgxMCkudGVzdCgpOwot
ICAgICAgICAgICAgb2JqZWN0LnRlc3QuY2FuY2VsRGVib3VuY2UoKTsKKyAgICAgICAgICAgIGRl
Ym91bmNlci5kZWxheUZvclRpbWUoMTApOworICAgICAgICAgICAgZGVib3VuY2VyLmNhbmNlbCgp
OwogCi0gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgSW5zcGVjdG9yVGVzdC5wYXNzKCJE
ZWJvdW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQuIik7IHJlc29sdmUoKTsgfSwgMjApOworICAgICAg
ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5w
YXNzKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQuIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSwgMjApOwogICAgICAgICB9CiAgICAgfSk7CiAKQEAgLTEz
OCw2ICsxMjksNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3RpbmcgZGVib3VuY2UgcHJveHkgc3VwcG9y
dC48L3A+CisgICAgPHA+VGVzdGluZyBkZWJvdW5jZSBmdW5jdGlvbmFsaXR5LjwvcD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L3Rocm90dGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L3Rocm90dGxlLWV4cGVjdGVkLnR4dAppbmRleCBiYTgyMWM5MzEzNjQxZmRjYWJmZjM1YmRjMGY1
Zjk5MjAyMGI0Yjg1Li41OGVhZmY3ZTdhMDZiMWMzZmQwYjM3MzZiNTQ1NGZmNzdjNTU1ZTNhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdCB0aHJvdHRsZSBwcm94eSBzdXBwb3J0
LgorVGVzdCB0aHJvdHRsZSBmdW5jdGlvbmFsaXR5LgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogVGhyb3R0bGUKQEAgLTYsOSArNiw2IEBAIFRlc3QgdGhyb3R0bGUgcHJveHkgc3VwcG9ydC4K
IENhbGwgdGhyb3R0bGVkIGZ1bmN0aW9uIGV2ZXJ5IDEgbXMgZm9yIDExMCBtcy4KIFBBU1M6IEFs
bCBjYWxscyBkZWxheWVkIGF0IGxlYXN0IDUwIG1zLgogCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTog
VGhyb3R0bGUgcHJveHkgdW5pcXVlbmVzcwotUEFTUzogRWFjaCBjYWxsIHRvIHRocm90dGxlIHNo
b3VsZCByZXR1cm4gYSBuZXcgcHJveHkuCi0KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUaHJvdHRs
ZWQgZnVuY3Rpb24gYXJndW1lbnRzCiBQQVNTOiBUcmFpbGluZyBjYWxsIGludm9rZWQgd2l0aCBt
b3N0IHJlY2VudCBhcmd1bWVudHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91bml0LXRlc3RzL3Rocm90dGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy90aHJvdHRsZS5odG1sCmluZGV4IGY4ZDZkMmQ4MmM4NTJkOGE1M2Q4OWU4N2QzYWVhNmQ0
ZjcyYjcxZTAuLjE5M2U0NjY1Yzc3ODBkOTg3NzdmNDQyYzM3NmUzOGY2YzZhYzcyOTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUuaHRtbApAQCAtMSw0
ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CkBAIC0xNyw1MSArMTcsMzcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICBsZXQgbGFzdENhbGxUaW1lID0gTmFOOwogICAgICAgICAgICAgbGV0
IG51bWJlck9mQ2FsbHMgPSAwOwogCi0gICAgICAgICAgICBsZXQgb2JqZWN0ID0gewotICAgICAg
ICAgICAgICAgIHRlc3QoaXNUcmFpbGluZykgewotICAgICAgICAgICAgICAgICAgICBsZXQgbm93
ID0gRGF0ZS5ub3coKTsKKyAgICAgICAgICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVy
KChpc1RyYWlsaW5nKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IG5vdyA9IERhdGUubm93KCk7
CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCsrbnVtYmVyT2ZDYWxscyA+IG1heGltdW1OdW1i
ZXJPZkNhbGxzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoIlRocm90dGxlZCBm
dW5jdGlvbiBjYWxsZWQgdG9vIG1hbnkgdGltZXMuIik7CisgICAgICAgICAgICAgICAgaWYgKCsr
bnVtYmVyT2ZDYWxscyA+IG1heGltdW1OdW1iZXJPZkNhbGxzKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlamVjdCgiVGhyb3R0bGVkIGZ1bmN0aW9uIGNhbGxlZCB0b28gbWFueSB0aW1lcy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmICghaXNOYU4obGFzdENhbGxUaW1lKSkgeworICAgICAgICAgICAgICAgICAg
ICBsZXQgYWN0dWFsRGVsYXkgPSBub3cgLSBsYXN0Q2FsbFRpbWU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChhY3R1YWxEZWxheSA8IGRlbGF5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmZhaWwoYERlbGF5IHNob3VsZCBiZSBhdCBsZWFzdCAke2RlbGF5fSBtcy4g
V2FzICR7YWN0dWFsRGVsYXl9IG1zLmApOworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGxhc3RDYWxsVGltZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxEZWxheSA9IG5vdyAtIGxhc3RDYWxsVGlt
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxEZWxheSA8IGRlbGF5KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKGBEZWxheSBzaG91
bGQgYmUgYXQgbGVhc3QgJHtkZWxheX0gbXMuIFdhcyAke2FjdHVhbERlbGF5fSBtcy5gKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBsYXN0Q2FsbFRpbWUgPSBub3c7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzVHJhaWxpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucGFzcyhgQWxsIGNhbGxzIGRlbGF5ZWQgYXQgbGVhc3QgJHtkZWxh
eX0gbXMuYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworCisgICAgICAg
ICAgICAgICAgbGFzdENhbGxUaW1lID0gbm93OworCisgICAgICAgICAgICAgICAgaWYgKGlzVHJh
aWxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBBbGwgY2Fs
bHMgZGVsYXllZCBhdCBsZWFzdCAke2RlbGF5fSBtcy5gKTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIGRlbGF5KTsKIAog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYENhbGwgdGhyb3R0bGVkIGZ1bmN0aW9uIGV2
ZXJ5IDEgbXMgZm9yICR7ZHVyYXRpb259IG1zLmApOwogCi0gICAgICAgICAgICBsZXQgdGhyb3R0
bGVQcm94eSA9IG9iamVjdC50aHJvdHRsZShkZWxheSk7Ci0gICAgICAgICAgICB0aHJvdHRsZVBy
b3h5LnRlc3QoKTsKKyAgICAgICAgICAgIHRocm90dGxlci5maXJlKCk7CiAKICAgICAgICAgICAg
IGZvciAobGV0IGkgPSAxOyBpIDw9IGR1cmF0aW9uOyBpKyspCi0gICAgICAgICAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7IHRocm90dGxlUHJveHkudGVzdChpID09PSBkdXJhdGlvbik7IH0sIGkp
OwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAg
IG5hbWU6ICJUaHJvdHRsZSBwcm94eSB1bmlxdWVuZXNzIiwKLSAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7fTsKLSAgICAgICAgICAgIGxl
dCBmaXJzdFByb3h5ID0gb2JqZWN0LnRocm90dGxlKDEpOwotICAgICAgICAgICAgbGV0IHNlY29u
ZFByb3h5ID0gb2JqZWN0LnRocm90dGxlKDEpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3ROb3RFcXVhbChmaXJzdFByb3h5LCBzZWNvbmRQcm94eSwgIkVhY2ggY2FsbCB0byB0aHJv
dHRsZSBzaG91bGQgcmV0dXJuIGEgbmV3IHByb3h5LiIpOwotICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRsZXIuZmlyZShpID09
PSBkdXJhdGlvbik7IH0sIGkpOwogICAgICAgICB9CiAgICAgfSk7CiAKQEAgLTcxLDIzICs1Nywy
MCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBbMSwgMiwgM107
CiAgICAgICAgICAgICBsZXQgaXNMZWFkaW5nQ2FsbCA9IHRydWU7CiAKLSAgICAgICAgICAgIGxl
dCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdCh2YWx1ZSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNMZWFkaW5nQ2FsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNM
ZWFkaW5nQ2FsbCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0g
dmFsdWVzLmxhc3RWYWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbCh2YWx1ZSwgZXhwZWN0ZWQsICJUcmFpbGluZyBjYWxsIGludm9rZWQgd2l0aCBtb3N0
IHJlY2VudCBhcmd1bWVudHMuIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVyKCh2YWx1ZSkgPT4geworICAg
ICAgICAgICAgICAgIGlmIChpc0xlYWRpbmdDYWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlz
TGVhZGluZ0NhbGwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBsZXQgZXhwZWN0
ZWQgPSB2YWx1ZXMubGFzdFZhbHVlOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwodmFsdWUsIGV4cGVjdGVkLCAiVHJhaWxpbmcgY2FsbCBpbnZva2VkIHdpdGggbW9z
dCByZWNlbnQgYXJndW1lbnRzLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgICAgIH0sIDUwKTsKIAogICAgICAgICAgICAgbGV0IGkgPSAwOwotICAgICAgICAgICAgbGV0
IHRocm90dGxlUHJveHkgPSBvYmplY3QudGhyb3R0bGUoNTApOwogICAgICAgICAgICAgZm9yIChs
ZXQgdmFsdWUgb2YgdmFsdWVzKQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0
aHJvdHRsZVByb3h5LnRlc3QodmFsdWUpOyB9LCBpKyspOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4geyB0aHJvdHRsZXIuZmlyZSh2YWx1ZSk7IH0sIGkrKyk7CiAgICAgICAgIH0K
ICAgICB9KTsKIApAQCAtOTYsMjAgKzc5LDE3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7
CiAKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdCgpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxlZCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJDYWxs
ZWQgdGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVyIGNhbmNlbC4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVyKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWNhbmNlbGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJDYWxsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVy
IGNhbmNlbC4iKTsKKyAgICAgICAgICAgICAgICByZWplY3QoKTsKKyAgICAgICAgICAgIH0sIDIw
KTsKIAotICAgICAgICAgICAgbGV0IHRocm90dGxlUHJveHkgPSBvYmplY3QudGhyb3R0bGUoMjAp
OwotICAgICAgICAgICAgdGhyb3R0bGVQcm94eS50ZXN0KCk7Ci0gICAgICAgICAgICB0aHJvdHRs
ZVByb3h5LnRlc3QoKTsKKyAgICAgICAgICAgIHRocm90dGxlci5maXJlKCk7CisgICAgICAgICAg
ICB0aHJvdHRsZXIuZmlyZSgpOwogCi0gICAgICAgICAgICBvYmplY3QudGVzdC5jYW5jZWxUaHJv
dHRsZSgpOworICAgICAgICAgICAgdGhyb3R0bGVyLmNhbmNlbCgpOwogICAgICAgICAgICAgY2Fu
Y2VsZWQgPSB0cnVlOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2FuY2VsZWQg
dGhyb3R0bGVkIGZ1bmN0aW9uLiIpOwpAQCAtMTI2LDYgKzEwNiw2IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+
VGVzdCB0aHJvdHRsZSBwcm94eSBzdXBwb3J0LjwvcD4KKyAgICA8cD5UZXN0IHRocm90dGxlIGZ1
bmN0aW9uYWxpdHkuPC9wPgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362193</attachid>
            <date>2019-02-15 17:37:37 -0800</date>
            <delta_ts>2019-02-16 11:21:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194721-20190215173736.patch</filename>
            <type>text/plain</type>
            <size>70796</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg4MDY2NmY5Y2IzNDBkMDYwZTdlN2MxYTZiZTlm
OTkzYTI2YWViYWYuLmUyYWU4ZDBiYzA4MjFjMzJiYWNhNTg4OWNkN2E2YTFiMGU4OWQ4YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE5LTAyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
YWtlIGRlYm91bmNlIFByb3h5IGludG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGBkZWJvdW5jZWAvYHRocm90dGxlYCBm
dW5jdGlvbnMgbGV2ZXJhZ2VkIGEgYFByb3h5YCB0byBpbnRlcmNlcHQgdGhlIGZ1bmN0aW9uIGNh
bGwgYW5kCisgICAgICAgIHJlcGxhY2UgaXQgd2l0aCBhICJkZWxheWVkIiB2ZXJzaW9uLiBUaGUg
aXNzdWUgd2l0aCB0aGlzIGlzIHRoYXQgaXQgc2V0IHRoZSBpZGVudGlmaWVyIGZvcgorICAgICAg
ICB0aGUgdGltZXIgb24gdGhlIGZ1bmN0aW9uIGl0c2VsZiwgd2hpY2ggaXMgc2hhcmVkIGFjcm9z
cyBhbGwgaW5zdGFuY2VzIG9mIGEgZ2l2ZW4gY2xhc3MuCisgICAgICAgIFdoZW4gZGlmZmVyZW50
IGluc3RhbmNlcyBjYWxsIHRoZSBzYW1lIGRlbGF5ZWQgZnVuY3Rpb24sIHRoZXknZCBjbG9iYmVy
IGVhY2hvdGhlcidzIGF0dGVtcHRzCisgICAgICAgIHRvIGRlbGF5IHdvcmsuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKERlYm91
bmNlcik6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmZvcmNlKToKKyAgICAgICAgKERl
Ym91bmNlci5wcm90b3R5cGUuZGVsYXlGb3JUaW1lKToKKyAgICAgICAgKERlYm91bmNlci5wcm90
b3R5cGUuZGVsYXlGb3JGcmFtZSk6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmRlbGF5
Rm9yTWljcm90YXNrKToKKyAgICAgICAgKERlYm91bmNlci5wcm90b3R5cGUuY2FuY2VsKToKKyAg
ICAgICAgKERlYm91bmNlci5wcm90b3R5cGUuX2V4ZWN1dGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9UaHJvdHRsZXIuanM6IEFkZGVkLgorICAgICAgICAoVGhyb3R0bGVyKToKKyAg
ICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuZm9yY2UpOgorICAgICAgICAoVGhyb3R0bGVyLnBy
b3RvdHlwZS5maXJlKToKKyAgICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuY2FuY2VsKToKKyAg
ICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuX2V4ZWN1dGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanM6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0JlemllckVkaXRvci5qczoKKyAgICAgICAgKFdJLkJlemllckVkaXRvcik6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qczoKKyAgICAgICAgKFdJLkNvbnRl
bnRCcm93c2VyKToKKyAgICAgICAgKFdJLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5fY29udGVu
dFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvbnRl
bnRCcm93c2VyLnByb3RvdHlwZS5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLl9j
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRl
ci5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVVcGRhdGVyKToKKyAgICAgICAgKFdJLkRPTVRyZWVV
cGRhdGVyLnByb3RvdHlwZS5fbm9kZUF0dHJpYnV0ZU1vZGlmaWVkKToKKyAgICAgICAgKFdJLkRP
TVRyZWVVcGRhdGVyLnByb3RvdHlwZS5fbm9kZUluc2VydGVkKToKKyAgICAgICAgKFdJLkRPTVRy
ZWVVcGRhdGVyLnByb3RvdHlwZS5fbm9kZVJlbW92ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLnNob3dFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcik6CisgICAgICAgIChXSS5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5oaWRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXIpOgorICAg
ICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudXBkYXRlRmlsdGVyKToK
KyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duKToKKyAg
ICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl91cGRhdGVDb250ZW50
T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkKToKKyAgICAgICAgKFdJ
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudERpc2Nsb3N1cmVE
aWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXSS5SZWNvcmRpbmdDb250ZW50Vmlldyk6CisgICAgICAgIChX
SS5SZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlQWN0aW9uSW5kZXgpOgorICAg
ICAgICAoV0kuUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanM6Cisg
ICAgICAgIChXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWZyZXNo
UmVsYXRlZFJlc291cmNlc1NlY3Rpb24pOgorICAgICAgICAoV0kuUmVzb3VyY2VEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5fYXBwbHlSZXNvdXJjZUV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5TaGFk
ZXJQcm9ncmFtQ29udGVudFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3By
aW5nRWRpdG9yLmpzOgorICAgICAgICAoV0kuU3ByaW5nRWRpdG9yLnByb3RvdHlwZS5fcmVzZXRQ
cmV2aWV3QW5pbWF0aW9uKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLnNldCBoaWRkZW4pOgor
ICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmRpZENoYW5nZSk6CisgICAgICAgIChX
SS5UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFjaCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2RldGFjaCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUu
Y29sbGFwc2UpOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZCk6Cisg
ICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUp
OgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnJlZ2lzdGVyU2Nyb2xsVmlydHVh
bGl6ZXIpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLmdldCB1cGRhdGVWaXJ0
dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyKTogQWRkZWQuCisgICAgICAgIChXSS5UcmVlT3V0bGlu
ZS5wcm90b3R5cGUuX3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMpOiBBZGRlZC4KKyAgICAgICAg
KFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzLndhbGsp
OiBEZWxldGVkLgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnVwZGF0ZVZpcnR1
YWxpemVkRWxlbWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViU29ja2V0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmll
dyk6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24pOgor
ICAgICAgICAoV0kuV2ViU29ja2V0Q29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVGcmFtZXNT
b29uKToKKyAgICAgICAgKFdJLldlYlNvY2tldENvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRl
RnJhbWVzKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIC5lc2xpbnRyYzoKKwogMjAxOS0w
Mi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQ2FudmFzOiBhbGwgYWN0aW9ucyBhZnRlciBhbiBvZmZzY3JlZW4gcGF0aCBtb2Rp
ZmljYXRpb24gYXJlIG1hcmtlZCBhcyBvZmZzY3JlZW4gcGF0aCBlcnJvcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
LmVzbGludHJjCmluZGV4IGE4YzA0ZGRjMDYyN2FjMDU4NDJmZDJiMDBkODNmZDU2MzFiZGE0MGEu
LmQyMDEwNDM1NmQ4ZDNhMTMxNjE4Nzk0ZjM0ZTQzNmNjYWMxNjkzNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
Ly5lc2xpbnRyYwpAQCAtNjQsNiArNjQsNyBAQAogCiAgICAgICAgIC8vIFdlYkluc3BlY3Rvcgog
ICAgICAgICAiQXN5bmNUZXN0U3VpdGUiOiB0cnVlLAorICAgICAgICAiRGVib3VuY2VyIjogdHJ1
ZSwKICAgICAgICAgIkZvcm1hdHRlciI6IHRydWUsCiAgICAgICAgICJGb3JtYXR0ZXJDb250ZW50
QnVpbGRlciI6IHRydWUsCiAgICAgICAgICJGcm9udGVuZFRlc3RIYXJuZXNzIjogdHJ1ZSwKQEAg
LTgwLDYgKzgxLDcgQEAKICAgICAgICAgIlN5bmNUZXN0U3VpdGUiOiB0cnVlLAogICAgICAgICAi
VGVzdEhhcm5lc3MiOiB0cnVlLAogICAgICAgICAiVGVzdFN1aXRlIjogdHJ1ZSwKKyAgICAgICAg
IlRocm90dGxlciI6IHRydWUsCiAKICAgICAgICAgLy8gRXh0ZXJuYWxzCiAgICAgICAgICJDb2Rl
TWlycm9yIjogdHJ1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9EZWJvdW5jZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJjZmIxZTkzNjc1OWUzMjYyMTdm
NzVmZDQ5YmJlZjQ3YTQ4NGZkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzCkBAIC0wLDAgKzEsMTIwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLy8gRGVib3VuY2VyIGNhbiBiZSB1c2VkIHRvIHdyYXAgYSBmdW5jdGlvbiBh
bmQgImRlbGF5IiBpdCdzIGV4ZWN1dGlvbiBmb3IgYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lCisv
LyBhZnRlciBpdCdzIG1vc3QgcmVjZW50IGNhbGwuICBBcyBhbiBleGFtcGxlLCBjYWxsaW5nIGBk
ZWxheUZvclRpbWUoMTApYCB3aWxsIHByZXZlbnQgYGNhbGxiYWNrYAorLy8gZnJvbSBmaXJpbmcg
dW50aWwgMTBtcyBhZnRlciB0aGUgbW9zdCByZWNlbnQgdGltZSBpdCB3YXMgY2FsbGVkLgorCitj
bGFzcyBEZWJvdW5jZXIKK3sKKyAgICBjb25zdHJ1Y3RvcihjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7CisKKyAg
ICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3Vt
ZW50cyA9IFtdOworCisgICAgICAgIHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVk
OworICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Cisg
ICAgICAgIHRoaXMuX3Byb21pc2VJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgZm9yY2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3Vt
ZW50cyA9IGFyZ3VtZW50czsKKyAgICAgICAgdGhpcy5fZXhlY3V0ZSgpOworICAgIH0KKworICAg
IGRlbGF5Rm9yVGltZSh0aW1lLCAuLi5hcmdzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGltZSA+PSAwKTsKKworICAgICAgICB0aGlzLmNhbmNlbCgpOworCisgICAgICAgIHRoaXMu
X2xhc3RBcmd1bWVudHMgPSBhcmdzOworCisgICAgICAgIHRoaXMuX3RpbWVvdXRJZGVudGlmaWVy
ID0gc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9leGVjdXRlKCk7CisgICAg
ICAgIH0sIHRpbWUpOworICAgIH0KKworICAgIGRlbGF5Rm9yRnJhbWUoKQorICAgIHsKKyAgICAg
ICAgdGhpcy5jYW5jZWwoKTsKKworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gYXJndW1l
bnRzOworCisgICAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRpZmllciA9IHJlcXVlc3RB
bmltYXRpb25GcmFtZSgoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9leGVjdXRlKCk7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGRlbGF5Rm9yTWljcm90YXNrKCkKKyAgICB7CisgICAgICAg
IHRoaXMuY2FuY2VsKCk7CisKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IGFyZ3VtZW50
czsKKworICAgICAgICBsZXQgcHJvbWlzZUlkZW50aWZpZXIgPSBTeW1ib2woIm5leHQtbWljcm90
YXNrIik7CisKKyAgICAgICAgdGhpcy5fcHJvbWlzZUlkZW50aWZpZXIgPSBwcm9taXNlSWRlbnRp
ZmllcjsKKworICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fcHJvbWlzZUlkZW50aWZpZXIgPT09IHByb21pc2VJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY2FuY2Vs
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBbXTsKKworICAgICAgICBp
ZiAodGhpcy5fdGltZW91dElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0
aGlzLl90aW1lb3V0SWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRp
ZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9hbmltYXRp
b25GcmFtZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRo
aXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl9hbmltYXRp
b25GcmFtZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGhpcy5fcHJvbWlzZUlkZW50aWZpZXIpCisgICAgICAgICAgICB0aGlzLl9wcm9taXNlSWRlbnRp
ZmllciA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZXhlY3V0
ZSgpCisgICAgeworICAgICAgICBsZXQgYXJncyA9IHRoaXMuX2xhc3RBcmd1bWVudHM7CisKKyAg
ICAgICAgdGhpcy5jYW5jZWwoKTsKKworICAgICAgICB0aGlzLl9jYWxsYmFjay5hcHBseSh1bmRl
ZmluZWQsIGFyZ3MpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGhyb3R0bGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9UaHJvdHRsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNmOGQ3OWIxNjRh
NmQyOGMwZjRlNTI2ODFkZDdmODJkM2M4ZjJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGhyb3R0bGVyLmpzCkBAIC0wLDAgKzEs
OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisvLyBUaHJvdHRsZXIgY2FuIGJlIHVzZWQgdG8gd3JhcCBhIGZ1
bmN0aW9uIGFuZCBlbnN1cmUgdGhhdCBpdCB3b24ndCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ug
ZXZlcnkKKy8vIGBkZWxheWBtcy4gIENhbGxpbmcgYGZpcmVgIHR3aWNlIGluIGEgcm93IHdpbGwg
ZXhlY3V0ZSBgY2FsbGJhY2tgIHN5bmNocm9ub3VzbHkgb24gdGhlIGZpcnN0IGNhbGwKKy8vIGFu
ZCBhc3luY2hyb25vdXNseSBgZGVsYXlgbXMgYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgKHNjaGVkdWxl
ZCBieSB0aGUgc2Vjb25kIGNhbGwpLgorCitjbGFzcyBUaHJvdHRsZXIKK3sKKyAgICBjb25zdHJ1
Y3RvcihjYWxsYmFjaywgZGVsYXkpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBl
b2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpOworICAgICAgICBjb25zb2xlLmFzc2VydChkZWxh
eSA+PSAwKTsKKworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICB0
aGlzLl9kZWxheSA9IGRlbGF5OworCisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBbXTsK
KworICAgICAgICB0aGlzLl90aW1lb3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAg
dGhpcy5fbGFzdEZpcmVUaW1lID0gTmFOOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAg
Zm9yY2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IGFyZ3VtZW50czsK
KyAgICAgICAgdGhpcy5fZXhlY3V0ZSgpOworICAgIH0KKworICAgIGZpcmUoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IGFyZ3VtZW50czsKKworICAgICAgICBpZiAoaXNO
YU4odGhpcy5fbGFzdEZpcmVUaW1lKSkgeworICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZSgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHJlbWFpbmluZyA9
IHRoaXMuX2RlbGF5IC0gKERhdGUubm93KCkgLSB0aGlzLl9sYXN0RmlyZVRpbWUpOworICAgICAg
ICBpZiAocmVtYWluaW5nIDw9IDApIHsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl90aW1lb3V0
SWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl90aW1lb3V0
SWRlbnRpZmllciA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgdGhpcy5fZXhlY3V0
ZSgpOworICAgICAgICB9LCByZW1haW5pbmcpOworICAgIH0KKworICAgIGNhbmNlbCgpCisgICAg
eworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gW107CisKKyAgICAgICAgaWYgKHRoaXMu
X3RpbWVvdXRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGlt
ZW91dElkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSB1
bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZXhl
Y3V0ZSgpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0RmlyZVRpbWUgPSBEYXRlLm5vdygpOwor
CisgICAgICAgIGxldCBhcmdzID0gdGhpcy5fbGFzdEFyZ3VtZW50czsKKworICAgICAgICB0aGlz
LmNhbmNlbCgpOworCisgICAgICAgIHRoaXMuX2NhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJn
cyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL1V0aWxpdGllcy5qcwppbmRleCA5M2E0ZjllYTkwNGI2YTliMGNkM2U1NWE3YzNl
NzFiOGVmOTA1OWI2Li4xZmFlYmE5MzVkMTIxYWQwOWRhNjM3Y2M2MWFlNzQ3Y2NiZmUwNzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxp
dGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0
aWxpdGllcy5qcwpAQCAtMTQ4MCwxNTUgKzE0ODAsNiBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHko
UHJvbWlzZSwgImRlbGF5IiwKICAgICB9CiB9KTsKIAotKGZ1bmN0aW9uKCkgewotICAgIC8vIFRo
ZSBgZGVib3VuY2VgIGZ1bmN0aW9uIGxldHMgeW91IGNhbGwgYW55IGZ1bmN0aW9uIG9uIGFuIG9i
amVjdCB3aXRoIGEgZGVsYXkKLSAgICAvLyBhbmQgaWYgdGhlIGZ1bmN0aW9uIGtlZXBzIGdldHRp
bmcgY2FsbGVkLCB0aGUgZGVsYXkgZ2V0cyByZXNldC4gU2luY2UgYGRlYm91bmNlYAotICAgIC8v
IHJldHVybnMgYSBQcm94eSwgeW91IGNhbiBjYWNoZSBpdCBhbmQgY2FsbCBtdWx0aXBsZSBmdW5j
dGlvbnMgd2l0aCB0aGUgc2FtZSBkZWxheS4KLQotICAgIC8vIFVzZTogb2JqZWN0LmRlYm91bmNl
KDIwMCkuZm9vKCJBcmd1bWVudCAxIiwgIkFyZ3VtZW50IDIiKQotICAgIC8vIE5vdGU6IFRoZSBs
YXN0IGNhbGwncyBhcmd1bWVudHMgZ2V0IHVzZWQgZm9yIHRoZSBkZWxheWVkIGNhbGwuCi0KLSAg
ICBjb25zdCBkZWJvdW5jZVRpbWVvdXRTeW1ib2wgPSBTeW1ib2woImRlYm91bmNlLXRpbWVvdXQi
KTsKLSAgICBjb25zdCBkZWJvdW5jZVNvb25Qcm94eVN5bWJvbCA9IFN5bWJvbCgiZGVib3VuY2Ut
c29vbi1wcm94eSIpOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5
cGUsICJzb29uIiwKLSAgICB7Ci0gICAgICAgIGdldCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghdGhpc1tkZWJvdW5jZVNvb25Qcm94eVN5bWJvbF0pCi0gICAgICAgICAgICAgICAgdGhp
c1tkZWJvdW5jZVNvb25Qcm94eVN5bWJvbF0gPSB0aGlzLmRlYm91bmNlKDApOwotICAgICAgICAg
ICAgcmV0dXJuIHRoaXNbZGVib3VuY2VTb29uUHJveHlTeW1ib2xdOwotICAgICAgICB9Ci0gICAg
fSk7Ci0KLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgImRlYm91
bmNlIiwKLSAgICB7Ci0gICAgICAgIHZhbHVlKGRlbGF5KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChkZWxheSA+PSAwKTsKLQotICAgICAgICAgICAgcmV0dXJuIG5ldyBQ
cm94eSh0aGlzLCB7Ci0gICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2Vp
dmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsID0gdGFyZ2V0W3Byb3BlcnR5XTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBvcmlnaW5hbCA9PT0gImZ1
bmN0aW9uIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5hbFtkZWJvdW5j
ZVRpbWVvdXRTeW1ib2xdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91
dChvcmlnaW5hbFtkZWJvdW5jZVRpbWVvdXRTeW1ib2xdKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IHBlcmZvcm1Xb3JrID0gKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9yaWdpbmFsW2RlYm91bmNlVGltZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwuYXBwbHkodGFyZ2V0LCBhcmdzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFs
W2RlYm91bmNlVGltZW91dFN5bWJvbF0gPSBzZXRUaW1lb3V0KHBlcmZvcm1Xb3JrLCBkZWxheSk7
Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5j
dGlvbi5wcm90b3R5cGUsICJjYW5jZWxEZWJvdW5jZSIsCi0gICAgewotICAgICAgICB2YWx1ZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpc1tkZWJvdW5jZVRpbWVvdXRTeW1ib2xd
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXNbZGVib3VuY2VUaW1lb3V0U3ltYm9sXSk7Ci0gICAgICAgICAgICB0aGlzW2RlYm91bmNlVGlt
ZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IHJlcXVlc3RBbmltYXRpb25GcmFtZVN5bWJvbCA9IFN5bWJvbCgicGVmb3JtLW9uLWFuaW1hdGlv
bi1mcmFtZSIpOwotICAgIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZVByb3h5U3ltYm9sID0g
U3ltYm9sKCJwZXJmb3JtLW9uLWFuaW1hdGlvbi1mcmFtZS1wcm94eSIpOwotCi0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJvbk5leHRGcmFtZSIsCi0gICAgewot
ICAgICAgICBnZXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXNbcmVxdWVzdEFu
aW1hdGlvbkZyYW1lUHJveHlTeW1ib2xdKSB7Ci0gICAgICAgICAgICAgICAgdGhpc1tyZXF1ZXN0
QW5pbWF0aW9uRnJhbWVQcm94eVN5bWJvbF0gPSBuZXcgUHJveHkodGhpcywgewotICAgICAgICAg
ICAgICAgICAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCBvcmlnaW5hbCA9IHRhcmdldFtwcm9wZXJ0eV07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG9yaWdpbmFsID09PSAiZnVuY3Rpb24i
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5hbFtyZXF1ZXN0QW5p
bWF0aW9uRnJhbWVTeW1ib2xdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGVyZm9ybVdvcmsgPSAoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW3JlcXVlc3RBbmlt
YXRpb25GcmFtZVN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9yaWdpbmFsLmFwcGx5KHRhcmdldCwgYXJncyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW3JlcXVl
c3RBbmltYXRpb25GcmFtZVN5bWJvbF0gPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocGVyZm9ybVdv
cmspOwotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4g
dGhpc1tyZXF1ZXN0QW5pbWF0aW9uRnJhbWVQcm94eVN5bWJvbF07Ci0gICAgICAgIH0KLSAgICB9
KTsKLQotICAgIGNvbnN0IHRocm90dGxlVGltZW91dFN5bWJvbCA9IFN5bWJvbCgidGhyb3R0bGUt
dGltZW91dCIpOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUs
ICJ0aHJvdHRsZSIsCi0gICAgewotICAgICAgICB2YWx1ZShkZWxheSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsYXkgPj0gMCk7Ci0KLSAgICAgICAgICAgIGxldCBs
YXN0RmlyZVRpbWUgPSBOYU47Ci0gICAgICAgICAgICBsZXQgbW9zdFJlY2VudEFyZ3VtZW50cyA9
IG51bGw7Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkodGhpcywgewotICAgICAgICAg
ICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcikgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBv
cmlnaW5hbCA9IHRhcmdldFtwcm9wZXJ0eV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCh0eXBlb2Ygb3JpZ2luYWwgPT09ICJmdW5jdGlvbiIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbW9zdFJlY2VudEFyZ3VtZW50cyA9IGFyZ3M7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHBlcmZvcm1Xb3JrKCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RGaXJlVGltZSA9IERhdGUubm93KCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSA9IHVuZGVmaW5lZDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbC5hcHBseSh0YXJnZXQsIG1vc3RSZWNlbnRB
cmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNOYU4obGFzdEZpcmVUaW1lKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBlcmZvcm1Xb3JrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVtYWluaW5nID0gZGVsYXkgLSAoRGF0ZS5ub3coKSAtIGxhc3RGaXJlVGltZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nIDw9IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcmlnaW5hbC5jYW5jZWxUaHJvdHRsZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBlcmZvcm1Xb3JrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIW9yaWdpbmFsW3Rocm90dGxlVGltZW91dFN5bWJvbF0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3JpZ2luYWxbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSA9IHNldFRpbWVv
dXQocGVyZm9ybVdvcmssIHJlbWFpbmluZyk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICJjYW5jZWxUaHJvdHRs
ZSIsCi0gICAgewotICAgICAgICB2YWx1ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
dGhpc1t0aHJvdHRsZVRpbWVvdXRTeW1ib2xdKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXNbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSk7Ci0g
ICAgICAgICAgICB0aGlzW3Rocm90dGxlVGltZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLX0pKCk7Ci0KIGZ1bmN0aW9uIGFwcGVuZFdlYkluc3BlY3RvclNvdXJj
ZVVSTChzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pbmNsdWRlcygiLy8jIHNvdXJjZVVSTCIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IDQwZGRmODM5NTE1OGQ1ZGY5NTQ2Y2E0YmVmZDg3Nzg2OGYxNTMxM2IuLjMzMGJmZmVhMGY3NGZj
N2FmZTdmNjAxMzVmNzdmNGUwYWIxOTYxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTI3NSwxMSArMjc1LDEzIEBACiAKICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9XZWJJbnNwZWN0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJCYXNlL1BsYXRmb3JtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJv
dW5jZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RlYnVnZ2FibGVUeXBl
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9JbmRleFNldC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlua2VkTGlzdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJhc2UvTGlzdE11bHRpbWFwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCYXNlL1Ro
cm90dGxlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9ET01VdGlsaXRp
ZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0V2ZW50TGlzdGVuZXIuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sCmluZGV4IDA2YTBkODRhOGEzMzA0NzJhZTA0Yzc1MjlmZDkyYmFiZDk3NzM3ZjUuLjMzNjE0
NDc0Y2E4MzE2Y2E1ZmQwZDA4YjJhNTdkOTRlMzU4NTYzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTM3LDExICszNywxMyBAQAogCiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9QbGF0Zm9ybS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkJh
c2UvRGVib3VuY2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1Z2dh
YmxlVHlwZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvSW5kZXhTZXQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpbmtlZExpc3QuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpc3RNdWx0aW1hcC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
QmFzZS9UaHJvdHRsZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVz
dEhhcm5lc3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUZXN0L0Zyb250ZW5kVGVz
dEhhcm5lc3MuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQmV6aWVyRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQmV6aWVyRWRpdG9yLmpzCmluZGV4IDEzMjI4NTlhNjA4
MTZmYmFmMjAwYjMxMTNiMjcxYzZlODQ5ZDk4MjguLjM5NWExNWJkY2Q1OTdmNDY0ODZiOTkzNGY0
OGZhZTUyOTFmMGI1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JlemllckVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CZXppZXJFZGl0b3IuanMKQEAgLTEwMSw3ICsxMDEsNyBAQCBX
SS5CZXppZXJFZGl0b3IgPSBjbGFzcyBCZXppZXJFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgICAgIGlmICghaXNOYU4obWF4KSkKICAgICAgICAgICAgICAgICB0aGlzW2tleV0ubWF4
ID0gbWF4OwogCi0gICAgICAgICAgICB0aGlzW2tleV0uYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQi
LCB0aGlzLmRlYm91bmNlKDI1MCkuX2hhbmRsZU51bWJlcklucHV0SW5wdXQpOworICAgICAgICAg
ICAgdGhpc1trZXldLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5faGFuZGxlTnVtYmVy
SW5wdXRJbnB1dC5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgIHRoaXNba2V5XS5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgdGhpcy5faGFuZGxlTnVtYmVySW5wdXRLZXlkb3duLmJpbmQodGhp
cykpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKaW5kZXggMzVlN2I1NjUyZTY2
YTA1ZGE0YjJmN2JjN2IxNDk4MzMwNWM0ZTNhYy4uNmEwZTM3YjMxODc2N2ZmMGJjYThiMDk1NjJk
YWFmOGYyMmYzOGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKQEAgLTkxLDYgKzkxLDEwIEBA
IFdJLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIAogICAgICAgICB0
aGlzLl9jdXJyZW50Q29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXMgPSBbXTsKKworICAgICAgICB0
aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UgPSBuZXcgRGVi
b3VuY2VyKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFu
Z2UpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTQ2OSwxMyArNDcz
LDYgQEAgV0kuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdJ
LlZpZXcKICAgICAgICAgfQogICAgIH0KIAotICAgIF9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRl
ZE9iamVjdHNEaWRDaGFuZ2VFdmVudCgpCi0gICAgewotICAgICAgICB0aGlzLl9kaXNwYXRjaEN1
cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudC5jYW5jZWxEZWJvdW5jZSgpOwot
Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRCcm93c2Vy
LkV2ZW50LkN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwotICAgIH0KLQogICAg
IF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldykK
QEAgLTQ5Miw3ICs0ODksNyBAQCBXSS5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93
c2VyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIubmVlZHNM
YXlvdXQoKTsKIAotICAgICAgICB0aGlzLnNvb24uX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVk
T2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJl
cHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZS5kZWxheUZvclRpbWUoMCk7CiAgICAgfQogCiAgICAg
X2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKGV2ZW50
KQpAQCAtNTA0LDcgKzUwMSw3IEBAIFdJLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJy
b3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChldmVudC50YXJnZXQucGFyZW50Q29u
dGFpbmVyICE9PSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lcikKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB0aGlzLnNvb24uX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZUV2ZW50KCk7CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2Vu
dGVkT2JqZWN0c0RpZENoYW5nZS5kZWxheUZvclRpbWUoMCk7CiAgICAgfQogCiAgICAgX2N1cnJl
bnRDb250ZW50Vmlld0RpZENoYW5nZShldmVudCkKQEAgLTUyMiw3ICs1MTksNyBAQCBXSS5Db250
ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRCcm93c2VyLkV2ZW50
LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSk7CiAKLSAgICAgICAgdGhpcy5fZGlzcGF0Y2hD
dXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAgdGhpcy5f
ZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLmZvcmNlKCk7CiAgICAg
fQogCiAgICAgX2NvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKGV2ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZVVwZGF0ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlVXBkYXRlci5qcwppbmRleCBhNTQ2MDI2NmUzNWQyODFlMzY4MTYxYmFlZTYyOGVmZjJj
ZjE5ZjE1Li5jMjQ1NWE2NjNkNTk0MjBiNTVlNTM3NGEyYzVmMTNjY2QwZTJhNmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBk
YXRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlVXBkYXRlci5qcwpAQCAtNDgsNiArNDgsMTAgQEAgV0kuRE9NVHJlZVVwZGF0ZXIgPSBm
dW5jdGlvbih0cmVlT3V0bGluZSkKIAogICAgIC8vIER1bW15ICJhdHRyaWJ1dGUiIHRoYXQgaXMg
dXNlZCB0byB0cmFjayB0ZXh0Q29udGVudCBjaGFuZ2VzLgogICAgIHRoaXMuX3RleHRDb250ZW50
QXR0cmlidXRlU3ltYm9sID0gU3ltYm9sKCJ0ZXh0LWNvbnRlbnQtYXR0cmlidXRlIik7CisKKyAg
ICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzRGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoKSA9
PiB7CisgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICB9KTsKIH07CiAK
IFdJLkRPTVRyZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsKQEAgLTgxLDIxICs4NSwyMSBAQCBXSS5E
T01UcmVlVXBkYXRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZp
ZWROb2Rlcy5hZGQobm9kZSk7CiAKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNp
YmxlKQotICAgICAgICAgICAgdGhpcy5vbk5leHRGcmFtZS5fdXBkYXRlTW9kaWZpZWROb2Rlcygp
OworICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZv
ckZyYW1lKCk7CiAgICAgICB9LAogCiAgICAgX25vZGVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLl9yZWNlbnRseUluc2VydGVkTm9kZXMuc2V0KGV2ZW50LmRh
dGEubm9kZSwge3BhcmVudDogZXZlbnQuZGF0YS5wYXJlbnR9KTsKICAgICAgICAgaWYgKHRoaXMu
X3RyZWVPdXRsaW5lLl92aXNpYmxlKQotICAgICAgICAgICAgdGhpcy5vbk5leHRGcmFtZS5fdXBk
YXRlTW9kaWZpZWROb2RlcygpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rl
c0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAgfSwKIAogICAgIF9ub2RlUmVtb3ZlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNlbnRseURlbGV0ZWROb2Rl
cy5zZXQoZXZlbnQuZGF0YS5ub2RlLCB7cGFyZW50OiBldmVudC5kYXRhLnBhcmVudH0pOwogICAg
ICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCi0gICAgICAgICAgICB0aGlzLm9u
TmV4dEZyYW1lLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7CisgICAgICAgICAgICB0aGlzLl91cGRh
dGVNb2RpZmllZE5vZGVzRGVib3VuY2VyLmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9LAogCiAgICAg
X2NoaWxkTm9kZUNvdW50VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBjNTNkZjRhZTNhNjM3YjQ0NWM3YmExYzYwMDMwOTRm
Mzc5ZjMyMDRjLi4xMzllN2Y2MmI5NGI3MjlkZmY2MDgzZmQyNTBmMmFiYzJjZDQwNzE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTMxLDcgKzMxLDE0IEBAIFdJ
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoIm5hdmlnYXRpb24iKTsKIAotICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5zb29uLl91cGRhdGVDb250ZW50T3ZlcmZsb3dT
aGFkb3dWaXNpYmlsaXR5KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hh
ZG93VmlzaWJpbGl0eURlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKCkgPT4geworICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOworICAgICAg
ICB9KTsKKyAgICAgICAgdGhpcy5fYm91bmRVcGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNp
YmlsaXR5U29vbiA9IChldmVudCkgPT4geworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlci5kZWxheUZvclRpbWUoMCk7CisgICAg
ICAgIH07CisKKyAgICAgICAgdGhpcy5jb250ZW50Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoInNjcm9sbCIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJp
bGl0eVNvb24pOwogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZUdyb3VwID0gbmV3
IFdJLlRyZWVPdXRsaW5lR3JvdXA7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSA9
IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKCk7CkBAIC00OSw4ICs1Niw3IEBAIFdJLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVu
ZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgICAgICB0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLk92ZXJmbG93U2hh
ZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lLCAidG9wIik7CiAgICAgICAgIH0KIAotICAgICAgICB0
aGlzLl9ib3VuZFVwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkgPSB0aGlzLnNv
b24uX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHk7Ci0gICAgICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9ib3VuZFVwZGF0ZUNvbnRlbnRPdmVy
Zmxvd1NoYWRvd1Zpc2liaWxpdHkpOworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
cmVzaXplIiwgdGhpcy5fYm91bmRVcGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5
U29vbik7CiAKICAgICAgICAgdGhpcy5fZmlsdGVyc1NldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhp
ZGVudGlmaWVyICsgIi1uYXZpZ2F0aW9uLXNpZGViYXItZmlsdGVycyIsIHt9KTsKICAgICAgICAg
dGhpcy5fZmlsdGVyQmFyLmZpbHRlcnMgPSB0aGlzLl9maWx0ZXJzU2V0dGluZy52YWx1ZTsKQEAg
LTc3LDcgKzgzLDcgQEAgV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRp
b25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5TaWRlYmFyUGFuZWwKIAogICAgIGNsb3NlZCgpCiAg
ICAgewotICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5f
Ym91bmRVcGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KTsKKyAgICAgICAgd2lu
ZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eVNvb24pOwogICAgICAgICBXSS5GcmFtZS5yZW1vdmVF
dmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgIH0KIApAQCAtMjczLDcgKzI3OSw3
IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIGxldCBlbXB0eUNvbnRlbnRQbGFj
ZWhvbGRlclBhcmVudEVsZW1lbnQgPSB0cmVlT3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGU7CiAg
ICAgICAgIGVtcHR5Q29udGVudFBsYWNlaG9sZGVyUGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChl
bXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNv
bnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29u
dGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlci5mb3JjZSgpOwogCiAgICAgICAg
IHJldHVybiBlbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQ7CiAgICAgfQpAQCAtMjg5LDcg
KzI5NSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIGVtcHR5Q29udGVudFBs
YWNlaG9sZGVyRWxlbWVudC5yZW1vdmUoKTsKICAgICAgICAgdGhpcy5fZW1wdHlDb250ZW50UGxh
Y2Vob2xkZXJFbGVtZW50cy5kZWxldGUodHJlZU91dGxpbmUpOwogCi0gICAgICAgIHRoaXMuX3Vw
ZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlci5mb3JjZSgpOwogICAg
IH0KIAogICAgIHVwZGF0ZUVtcHR5Q29udGVudFBsYWNlaG9sZGVyKG1lc3NhZ2UsIHRyZWVPdXRs
aW5lKQpAQCAtMzQ1LDcgKzM1MSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLl9jaGVja0ZvckVtcHR5RmlsdGVyUmVzdWx0cygpOwotICAgICAg
ICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7CisgICAgICAg
IHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZm9y
Y2UoKTsKICAgICB9CiAKICAgICByZXNldEZpbHRlcigpCkBAIC00NjgsNyArNDc0LDcgQEAgV0ku
TmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXSS5TaWRlYmFyUGFuZWwKICAgICB7CiAgICAgICAgIHN1cGVyLnNob3duKCk7CiAKLSAg
ICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOworICAg
ICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5RGVib3VuY2Vy
LmZvcmNlKCk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCkBAIC01MDMsOCArNTA5LDYgQEAg
V0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXSS5TaWRlYmFyUGFuZWwKICAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hh
ZG93VmlzaWJpbGl0eS5jYW5jZWxEZWJvdW5jZSgpOwotCiAgICAgICAgIGxldCBzY3JvbGxIZWln
aHQgPSB0aGlzLmNvbnRlbnRWaWV3LmVsZW1lbnQuc2Nyb2xsSGVpZ2h0OwogICAgICAgICBsZXQg
b2Zmc2V0SGVpZ2h0ID0gdGhpcy5jb250ZW50Vmlldy5lbGVtZW50Lm9mZnNldEhlaWdodDsKIApA
QCAtNjA3LDcgKzYxMSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIHRoaXMu
X2NoZWNrRm9yRW1wdHlGaWx0ZXJSZXN1bHRzKCk7CiAKICAgICAgICAgaWYgKHRoaXMudmlzaWJs
ZSkKLSAgICAgICAgICAgIHRoaXMuc29vbi5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93Vmlz
aWJpbGl0eSgpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eURlYm91bmNlci5kZWxheUZvclRpbWUoMCk7CiAKICAgICAgICAgaWYgKHRoaXMu
c2VsZWN0ZWQpCiAgICAgICAgICAgICB0aGlzLl9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdT
dGF0ZUNvb2tpZShbdHJlZUVsZW1lbnRdKTsKQEAgLTYxNSw3ICs2MTksNyBAQCBXSS5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJ
LlNpZGViYXJQYW5lbAogCiAgICAgX3RyZWVFbGVtZW50RGlzY2xvc3VyZURpZENoYW5nZShldmVu
dCkKICAgICB7Ci0gICAgICAgIHRoaXMuc29vbi5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eSgpOworICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dW
aXNpYmlsaXR5RGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwKTsKICAgICB9CiAKICAgICBfY2hlY2tG
b3JTdGFsZVJlc291cmNlc0lmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVudFZpZXcu
anMKaW5kZXggZThmN2RiMTM5N2VlYTUzMGZkOWQwMzU4MmNhN2I3ZTQxMTRkYWIxYS4uMTM3Yzk1
NzhmNDUxMjQwMjc0NzMyZDE4NDU4ZGE1MzZjNmZjZDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVudFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5n
Q29udGVudFZpZXcuanMKQEAgLTM1LDcgKzM1LDEyIEBAIFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3
ID0gY2xhc3MgUmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAg
ICAgICB0aGlzLl9hY3Rpb24gPSBudWxsOwogICAgICAgICB0aGlzLl9zbmFwc2hvdHMgPSBbXTsK
ICAgICAgICAgdGhpcy5faW5pdGlhbENvbnRlbnQgPSBudWxsOwotICAgICAgICB0aGlzLl90aHJv
dHRsZXIgPSB0aGlzLnRocm90dGxlKDIwMCk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVu
dFRocm90dGxlciA9IG5ldyBUaHJvdHRsZXIoKCkgPT4geworICAgICAgICAgICAgaWYgKHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QudHlwZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzMkQpCisg
ICAgICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVDb250ZW50Q2FudmFzMkQodGhpcy5faW5kZXgp
OworICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBX
SS5SZWNvcmRpbmcuVHlwZS5DYW52YXNCaXRtYXBSZW5kZXJlciB8fCB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LnR5cGUgPT09IFdJLlJlY29yZGluZy5UeXBlLkNhbnZhc1dlYkdMKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudEZyb21TbmFwc2hvdCh0aGlzLl9pbmRleCk7Cisg
ICAgICAgIH0sIDIwMCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJl
Y29yZGluZyIsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlwZSk7CiAKQEAgLTEwMywxMCArMTA4
LDcgQEAgV0kuUmVjb3JkaW5nQ29udGVudFZpZXcgPSBjbGFzcyBSZWNvcmRpbmdDb250ZW50Vmll
dyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFs
dWUoKTsKIAotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5S
ZWNvcmRpbmcuVHlwZS5DYW52YXMyRCkKLSAgICAgICAgICAgIHRoaXMuX3Rocm90dGxlci5fZ2Vu
ZXJhdGVDb250ZW50Q2FudmFzMkQoaW5kZXgpOwotICAgICAgICBlbHNlIGlmICh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LnR5cGUgPT09IFdJLlJlY29yZGluZy5UeXBlLkNhbnZhc0JpdG1hcFJlbmRl
cmVyIHx8IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlwZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUu
Q2FudmFzV2ViR0wpCi0gICAgICAgICAgICB0aGlzLl90aHJvdHRsZXIuX2dlbmVyYXRlQ29udGVu
dEZyb21TbmFwc2hvdChpbmRleCk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudFRocm90
dGxlci5maXJlKCk7CiAKICAgICAgICAgdGhpcy5fYWN0aW9uID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5hY3Rpb25zW3RoaXMuX2luZGV4XTsKIApAQCAtMTMxLDggKzEzMyw3IEBAIFdJLlJlY29y
ZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgUmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50VmlldwogICAgIHsKICAgICAgICAgc3VwZXIuaGlkZGVuKCk7CiAKLSAgICAgICAgdGhp
cy5fZ2VuZXJhdGVDb250ZW50Q2FudmFzMkQuY2FuY2VsVGhyb3R0bGUoKTsKLSAgICAgICAgdGhp
cy5fZ2VuZXJhdGVDb250ZW50RnJvbVNuYXBzaG90LmNhbmNlbFRocm90dGxlKCk7CisgICAgICAg
IHRoaXMuX2dlbmVyYXRlQ29udGVudFRocm90dGxlci5jYW5jZWwoKTsKICAgICB9CiAKICAgICAv
LyBQcm90ZWN0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5q
cwppbmRleCA0Y2Y5YjhhYzVhOTkxODliMTViOWUwZmVkYmVmYjM3ZTE5ZjI0Y2RjLi43NTllNWQ2
NTg3NGI5OWNiMmU3OTQ4Nzk5YzJkYjJiNWZhZTkyOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0yNjMsOCArMjYzLDYgQEAgV0kuUmVzb3Vy
Y2VEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dGVuZHMgV0kuRGUKIAogICAgIF9yZWZyZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fcmVmcmVzaFJlbGF0ZWRSZXNvdXJjZXNTZWN0aW9uLmNhbmNl
bFRocm90dGxlKCk7Ci0KICAgICAgICAgLy8gSGlkZSB0aGUgc2VjdGlvbiBpZiB3ZSBkb24ndCBo
YXZlIGFueXRoaW5nIHRvIHNob3cuCiAgICAgICAgIGxldCBncm91cHMgPSB0aGlzLl9sb2NhdGlv
blNlY3Rpb24uZ3JvdXBzOwogICAgICAgICBsZXQgaXNTZWN0aW9uVmlzaWJsZSA9IGdyb3Vwcy5p
bmNsdWRlcyh0aGlzLl9yZWxhdGVkUmVzb3VyY2VzR3JvdXApOwpAQCAtNjA3LDggKzYwNSwxMSBA
QCBXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZQogCiAgICAgX2FwcGx5UmVzb3VyY2VFdmVudExpc3Rl
bmVycygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3Rocm90dGxlcikKLSAgICAgICAgICAg
IHRoaXMuX3Rocm90dGxlciA9IHRoaXMudGhyb3R0bGUoMjUwKTsKKyAgICAgICAgaWYgKCF0aGlz
Ll9yZWZyZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb25UaHJvdHRsZXIpIHsKKyAgICAgICAgICAg
IHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVzb3VyY2VzU2VjdGlvblRocm90dGxlciA9IG5ldyBUaHJv
dHRsZXIoKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVzb3Vy
Y2VzU2VjdGlvbigpOworICAgICAgICAgICAgfSwgMjUwKTsKKyAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuVVJMRGlk
Q2hhbmdlLCB0aGlzLl9yZWZyZXNoVVJMLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5NSU1FVHlwZURpZENoYW5nZSwgdGhp
cy5fcmVmcmVzaE1JTUVUeXBlLCB0aGlzKTsKQEAgLTYyMCw3ICs2MjEsOSBAQCBXSS5SZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXSS5EZQogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJ
LlJlc291cmNlLkV2ZW50Lk1ldHJpY3NEaWRDaGFuZ2UsIHRoaXMuX3JlZnJlc2hSZXF1ZXN0QW5k
UmVzcG9uc2UsIHRoaXMpOwogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVy
KFdJLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHRoaXMuX3JlZnJlc2hEZWNvZGVkU2l6
ZSwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVz
b3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlLCB0aGlzLl9yZWZyZXNoVHJhbnNmZXJT
aXplLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5S
ZXNvdXJjZS5FdmVudC5Jbml0aWF0ZWRSZXNvdXJjZXNEaWRDaGFuZ2UsIHRoaXMuX3Rocm90dGxl
ci5fcmVmcmVzaFJlbGF0ZWRSZXNvdXJjZXNTZWN0aW9uLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5Jbml0aWF0ZWRSZXNv
dXJjZXNEaWRDaGFuZ2UsICgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVk
UmVzb3VyY2VzU2VjdGlvblRocm90dGxlci5maXJlKCk7CisgICAgICAgIH0sIHRoaXMpOwogCiAg
ICAgICAgIHRoaXMuX25lZWRzVG9SZW1vdmVSZXNvdXJjZUV2ZW50TGlzdGVuZXJzID0gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMKaW5kZXggMTY3
OTY5MDk1ZGVmYjdlZTU2OTI0OWY3ZTdiYTVkNzQ1MGYyZjgzZi4uMjgzZWM0OTkwNzcxN2M4NWRk
YWRiYmMwZTJhNWRjYjI5YWFlMDUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250
ZW50Vmlldy5qcwpAQCAtMzEsNiArMzEsMTAgQEAgV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3
ID0gY2xhc3MgU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAog
ICAgICAgICBzdXBlcihzaGFkZXJQcm9ncmFtKTsKIAorICAgICAgICBsZXQgY29udGVudERpZENo
YW5nZURlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICB0
aGlzLl9jb250ZW50RGlkQ2hhbmdlKGV2ZW50KTsKKyAgICAgICAgfSk7CisKICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNoYWRlci1wcm9ncmFtIik7CiAKICAgICAgICAgbGV0
IGNyZWF0ZUVkaXRvciA9IChzaGFkZXJUeXBlKSA9PiB7CkBAIC0zOCw3ICs0Miw5IEBAIFdJLlNo
YWRlclByb2dyYW1Db250ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWCiAgICAgICAgICAgICB0ZXh0RWRpdG9yLnJlYWRPbmx5ID0gZmFs
c2U7CiAgICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRv
ci5FdmVudC5Gb2N1c2VkLCB0aGlzLl9lZGl0b3JGb2N1c2VkLCB0aGlzKTsKICAgICAgICAgICAg
IHRleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5UZXh0RWRpdG9yLkV2ZW50Lk51bWJlck9m
U2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hh
bmdlLCB0aGlzKTsKLSAgICAgICAgICAgIHRleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5U
ZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuZGVib3VuY2UoMjUwKS5fY29u
dGVudERpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICBjb250ZW50RGlkQ2hhbmdlRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgy
NTAsIGV2ZW50KTsKKyAgICAgICAgICAgIH0sIHRoaXMpOwogICAgICAgICAgICAgdGV4dEVkaXRv
ci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNoYWRlciIpOwogCiAgICAgICAgICAgICBsZXQgc2hh
ZGVyVHlwZUNvbnRhaW5lciA9IHRleHRFZGl0b3IuZWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1l
bnQoImFmdGVyYmVnaW4iLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJpbmdFZGl0
b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJpbmdF
ZGl0b3IuanMKaW5kZXggNjNkYWY3YTUyY2ZkOWI2NzJjYjY5MmUwYjEyNTZiNTU2MDI0MTA3NS4u
ZDA2MGZkNWVkNDBmMTAyYTY1MmY5NDBmODhmMTBiZWIzY2E0ZTQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByaW5nRWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmluZ0VkaXRv
ci5qcwpAQCAtMjksMTUgKzI5LDE5IEBAIFdJLlNwcmluZ0VkaXRvciA9IGNsYXNzIFNwcmluZ0Vk
aXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAorICAgICAg
ICBsZXQgYm91bmRSZXNldFByZXZpZXdBbmltYXRpb24gPSAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc2V0UHJldmlld0FuaW1hdGlvbihldmVudCk7CisgICAgICAgIH07CisKICAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNwcmluZy1lZGl0b3IiKTsKIAogICAg
ICAgICB0aGlzLl9wcmV2aWV3Q29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5jcmVhdGVDaGlsZCgi
ZGl2IiwgInNwcmluZy1wcmV2aWV3Iik7CiAgICAgICAgIHRoaXMuX3ByZXZpZXdDb250YWluZXIu
dGl0bGUgPSBXSS5VSVN0cmluZygiUmVzdGFydCBhbmltYXRpb24iKTsKLSAgICAgICAgdGhpcy5f
cHJldmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9yZXNl
dFByZXZpZXdBbmltYXRpb24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3ByZXZpZXdDb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgYm91bmRSZXNldFByZXZpZXdBbmlt
YXRpb24pOwogCiAgICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50ID0gdGhpcy5fcHJldmlld0Nv
bnRhaW5lci5jcmVhdGVDaGlsZCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCB0aGlzLmRlYm91bmNlKDUwMCkuX3Jl
c2V0UHJldmlld0FuaW1hdGlvbik7CisgICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCBib3VuZFJlc2V0UHJldmlld0FuaW1hdGlvbik7
CiAKICAgICAgICAgdGhpcy5fdGltaW5nQ29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5jcmVhdGVD
aGlsZCgiZGl2IiwgInNwcmluZy10aW1pbmciKTsKIApAQCAtMjEzLDcgKzIxNyw3IEBAIFdJLlNw
cmluZ0VkaXRvciA9IGNsYXNzIFNwcmluZ0VkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAoIWV2ZW50KQogICAgICAgICAgICAgdGhpcy5fdGltaW5nQ29udGFpbmVyLmRhdGFzZXQu
ZHVyYXRpb24gPSAiMCI7CiAKLSAgICAgICAgdGhpcy5kZWJvdW5jZSg1MDApLl91cGRhdGVQcmV2
aWV3QW5pbWF0aW9uKGV2ZW50KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlUHJldmlld0FuaW1hdGlv
bihldmVudCk7CiAgICAgfQogCiAgICAgX3VwZGF0ZVByZXZpZXdBbmltYXRpb24oZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Ry
ZWVFbGVtZW50LmpzCmluZGV4IGQzYjg5Mjk0MzUyNzc2NjEyOWIyNDRhZmZiOWE5NjllMDAyNmEw
MmEuLmVmZjk4ZThmYmVlN2ZmY2Q2MzhhNWIzMWYyZjg5ZGM2MWJmMzNhMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVt
ZW50LmpzCkBAIC0xNjUsMTAgKzE2NSwxMiBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVF
bGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlLmhpZGRlbiA9IHRoaXMuX2hpZGRlbjsKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSkgewotICAgICAgICAgICAgbGV0IGZvY3VzZWRUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAg
ICAgICBpZiAoIXRoaXMuX2hpZGRlbiAmJiB0aGlzLnNlbGVjdGVkKQotICAgICAgICAgICAgICAg
IGZvY3VzZWRUcmVlRWxlbWVudCA9IHRoaXM7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnNvb24udXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cyhmb2N1c2VkVHJlZUVsZW1lbnQpOworICAg
ICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUudmlydHVhbGl6ZWQpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgZm9jdXNlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAo
IXRoaXMuX2hpZGRlbiAmJiB0aGlzLnNlbGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBmb2N1
c2VkVHJlZUVsZW1lbnQgPSB0aGlzOworICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
dXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50c0RlYm91bmNlci5kZWxheUZvclRpbWUoMCwgZm9jdXNl
ZFRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy50cmVlT3V0
bGluZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuRWxlbWVu
dFZpc2liaWxpdHlEaWRDaGFuZ2UsIHtlbGVtZW50OiB0aGlzfSk7CiAgICAgICAgIH0KQEAgLTIw
Myw3ICsyMDUsMTMgQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdGhpcy5vbk5leHRGcmFtZS5fZmlyZURpZENoYW5nZSgpOworICAg
ICAgICBpZiAoIXRoaXMuX2ZpcmVEaWRDaGFuZ2VEZWJvdW5jZXIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2ZpcmVEaWRDaGFuZ2VEZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9maXJlRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX2ZpcmVEaWRDaGFuZ2VEZWJvdW5jZXIuZGVsYXlGb3JGcmFt
ZSgpOwogICAgIH0KIAogICAgIF9zZXRMaXN0SXRlbU5vZGVDb250ZW50KCkKQEAgLTI2MSw4ICsy
NjksOCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0
QmVmb3JlKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUsIHRoaXMuX2xpc3RJdGVtTm9kZS5uZXh0U2li
bGluZyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKLSAgICAg
ICAgICAgIHRoaXMudHJlZU91dGxpbmUuc29vbi51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKCk7
CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUudmlydHVh
bGl6ZWQpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxl
bWVudHNEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogCiAgICAgICAgIGlmICh0aGlzLnNlbGVj
dGVkKQogICAgICAgICAgICAgdGhpcy5zZWxlY3QoKTsKQEAgLTI3OSw4ICsyODcsOCBAQCBXSS5U
cmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFy
ZW50Tm9kZSkKICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZCh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKTsKIAotICAgICAgICBpZiAodGhpcy50
cmVlT3V0bGluZSkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc29vbi51cGRhdGVWaXJ0
dWFsaXplZEVsZW1lbnRzKCk7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMu
dHJlZU91dGxpbmUudmlydHVhbGl6ZWQpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVw
ZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogICAgIH0K
IAogICAgIHN0YXRpYyB0cmVlRWxlbWVudFRvZ2dsZWQoZXZlbnQpCkBAIC0zNDYsOCArMzU0LDgg
QEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICBpZiAodGhpcy5vbmNvbGxhcHNlKQogICAgICAgICAgICAgdGhpcy5vbmNvbGxhcHNl
KHRoaXMpOwogCi0gICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lKSB7Ci0gICAgICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnNvb24udXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cyh0aGlzKTsKKyAg
ICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS52aXJ0dWFsaXpl
ZCkgeworICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1l
bnRzRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwLCB0aGlzKTsKIAogICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQu
RWxlbWVudERpc2Nsb3N1cmVEaWRDaGFuZ2VkLCB7ZWxlbWVudDogdGhpc30pOwogICAgICAgICB9
CkBAIC00MTMsOCArNDIxLDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGhpcy5vbmV4cGFuZCkKICAgICAgICAgICAg
IHRoaXMub25leHBhbmQodGhpcyk7CiAKLSAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUpIHsK
LSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc29vbi51cGRhdGVWaXJ0dWFsaXplZEVsZW1l
bnRzKHRoaXMpOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRyZWVPdXRs
aW5lLnZpcnR1YWxpemVkKSB7CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVZp
cnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDAsIHRoaXMpOwogCiAgICAg
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UcmVl
T3V0bGluZS5FdmVudC5FbGVtZW50RGlzY2xvc3VyZURpZENoYW5nZWQsIHtlbGVtZW50OiB0aGlz
fSk7CiAgICAgICAgIH0KQEAgLTQ2Niw4ICs0NzQsOCBAQCBXSS5UcmVlRWxlbWVudCA9IGNsYXNz
IFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgLy8gVGhpcyBtdXN0IGJl
IGNhbGxlZCBiZWZvcmUgb25yZXZlYWwsIGFzIHNvbWUgc3ViY2xhc3NlcyB3aWxsIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQgYW5kCiAgICAgICAgIC8vIHdlIHNob3VsZCB1cGRhdGUgdGhlIHZpc2li
bGUgZWxlbWVudHMgYmVmb3JlIGF0dGVtcHRpbmcgdG8gc2Nyb2xsLgotICAgICAgICBpZiAodGhp
cy50cmVlT3V0bGluZSkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVmlydHVh
bGl6ZWRFbGVtZW50cyh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhp
cy50cmVlT3V0bGluZS52aXJ0dWFsaXplZCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
dXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50c0RlYm91bmNlci5mb3JjZSh0aGlzKTsKIAogICAgICAg
ICBpZiAodGhpcy5vbnJldmVhbCkKICAgICAgICAgICAgIHRoaXMub25yZXZlYWwodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
T3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Ry
ZWVPdXRsaW5lLmpzCmluZGV4IDlmMjFhMmM1NWE3OGUxMjY3M2JmNDlkOTU3MGVjNWEwNDg1ZjZh
OWIuLmZlNTdjNzg1ZWMyZjY3YmY4MzQxN2YzZjljYjFiMTE5ODFjMzIyMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCkBAIC02Miw2ICs2Miw3IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxp
bmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ1NlbGVjdGlvbkNo
YW5nZSA9IGZhbHNlOwogICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRTZWxlY3Rpb25EaWRDaGFu
Z2VFdmVudCA9IGZhbHNlOwogCisgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkRGVib3VuY2VyID0g
bnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gbnVs
bDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IG51bGw7
CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyID0gbnVsbDsKQEAgLTY4
OCw2ICs2ODksMTEgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRz
IFdJLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWlzTmFOKHRyZWVJdGVt
SGVpZ2h0KSk7CiAKKyAgICAgICAgbGV0IGJvdW5kVXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cyA9
IChmb2N1c2VkVHJlZUVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpcnR1
YWxpemVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVtZW50KTsKKyAgICAgICAgfTsKKworICAgICAg
ICB0aGlzLl92aXJ0dWFsaXplZERlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoYm91bmRVcGRhdGVW
aXJ0dWFsaXplZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJl
ZUVsZW1lbnRzID0gbmV3IFNldDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRy
ZWVFbGVtZW50cyA9IG5ldyBTZXQ7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29u
dGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyOwpAQCAtNjk1LDEwNCArNzAxLDE1IEBAIFdJLlRyZWVP
dXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhp
cy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRCb3R0b21TcGFjZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKIAotICAgICAgICBsZXQgdGhyb3R0bGVyID0gdGhpcy50aHJvdHRsZSgx
MDAwIC8gMTYpOworICAgICAgICBsZXQgdGhyb3R0bGVyID0gbmV3IFRocm90dGxlcihib3VuZFVw
ZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMsIDEwMDAgLyAxNik7CiAgICAgICAgIHRoaXMuX3ZpcnR1
YWxpemVkU2Nyb2xsQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIChldmVudCkg
PT4gewotICAgICAgICAgICAgdGhyb3R0bGVyLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoKTsK
KyAgICAgICAgICAgIHRocm90dGxlci5maXJlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAg
IHVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVtZW50KQorICAgIGdldCB1
cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyKCkKICAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy52aXJ0dWFsaXplZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmdW5jdGlv
biB3YWxrKHBhcmVudCwgY2FsbGJhY2ssIGNvdW50ID0gMCkgewotICAgICAgICAgICAgbGV0IHNo
b3VsZFJldHVybiA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgcGFyZW50
LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5yZXZlYWxlZChmYWxzZSkp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgc2hvdWxk
UmV0dXJuID0gY2FsbGJhY2soY2hpbGQsIGNvdW50KTsKLSAgICAgICAgICAgICAgICBpZiAoc2hv
dWxkUmV0dXJuKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAg
ICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmV4cGFuZGVkKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxldCByZXN1bHQgPSB3YWxrKGNoaWxkLCBjYWxsYmFjaywgY291bnQpOwot
ICAgICAgICAgICAgICAgICAgICBjb3VudCA9IHJlc3VsdC5jb3VudDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC5zaG91bGRSZXR1cm4pCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4ge2NvdW50LCBzaG91bGRSZXR1cm59OwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHtudW1i
ZXJWaXNpYmxlLCBleHRyYVJvd3MsIGZpcnN0SXRlbSwgbGFzdEl0ZW19ID0gdGhpcy5fY2FsY3Vs
YXRlVmlydHVhbGl6ZWRWYWx1ZXMoKTsKLQotICAgICAgICBsZXQgc2hvdWxkU2Nyb2xsID0gZmFs
c2U7Ci0gICAgICAgIGlmIChmb2N1c2VkVHJlZUVsZW1lbnQgJiYgZm9jdXNlZFRyZWVFbGVtZW50
LnJldmVhbGVkKGZhbHNlKSkgewotICAgICAgICAgICAgbGV0IGluZGV4ID0gd2Fsayh0aGlzLCAo
dHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50ID09PSBmb2N1c2VkVHJlZUVsZW1lbnQpLmNvdW50
OwotICAgICAgICAgICAgaWYgKGluZGV4IDwgZmlyc3RJdGVtKSB7Ci0gICAgICAgICAgICAgICAg
Zmlyc3RJdGVtID0gaW5kZXggLSBleHRyYVJvd3M7Ci0gICAgICAgICAgICAgICAgbGFzdEl0ZW0g
PSBpbmRleCArIG51bWJlclZpc2libGUgKyBleHRyYVJvd3M7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGluZGV4ID4gbGFzdEl0ZW0pIHsKLSAgICAgICAgICAgICAgICBmaXJzdEl0ZW0gPSBpbmRl
eCAtIG51bWJlclZpc2libGUgLSBleHRyYVJvd3M7Ci0gICAgICAgICAgICAgICAgbGFzdEl0ZW0g
PSBpbmRleCArIGV4dHJhUm93czsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT25s
eSBzY3JvbGwgaWYgdGhlIGBmb2N1c2VkVHJlZUVsZW1lbnRgIGlzIG91dHNpZGUgdGhlIHZpc2li
bGUgaXRlbXMsIG5vdCBpbmNsdWRpbmcKLSAgICAgICAgICAgIC8vIHRoZSBhZGRlZCBidWZmZXIg
YGV4dHJhUm93c2AuCi0gICAgICAgICAgICBzaG91bGRTY3JvbGwgPSAoaW5kZXggPCBmaXJzdEl0
ZW0gKyBleHRyYVJvd3MpIHx8IChpbmRleCA+IGxhc3RJdGVtIC0gZXh0cmFSb3dzKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZpcnN0SXRlbSA8IGxhc3RJdGVtKTsKLQot
ICAgICAgICBsZXQgdmlzaWJsZVRyZWVFbGVtZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCB0
cmVlRWxlbWVudHNUb0F0dGFjaCA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCB0cmVlRWxlbWVudHNU
b0RldGFjaCA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCB0b3RhbEl0ZW1zID0gd2Fsayh0aGlzLCAo
dHJlZUVsZW1lbnQsIGNvdW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoY291bnQgPj0gZmlyc3RJ
dGVtICYmIGNvdW50IDw9IGxhc3RJdGVtKSB7Ci0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRz
VG9BdHRhY2guYWRkKHRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoY291bnQgPj0g
Zmlyc3RJdGVtICsgZXh0cmFSb3dzICYmIGNvdW50IDw9IGxhc3RJdGVtIC0gZXh0cmFSb3dzKQot
ICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVHJlZUVsZW1lbnRzLmFkZCh0cmVlRWxlbWVudCk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRyZWVFbGVtZW50LmVsZW1lbnQucGFyZW50Tm9kZSkK
LSAgICAgICAgICAgICAgICB0cmVlRWxlbWVudHNUb0RldGFjaC5hZGQodHJlZUVsZW1lbnQpOwot
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0pLmNvdW50OwotCi0gICAgICAg
IC8vIFJlZHJhdyBpZiB3ZSBhcmUgYWJvdXQgdG8gc2Nyb2xsLgotICAgICAgICBpZiAoIXNob3Vs
ZFNjcm9sbCkgewotICAgICAgICAgICAgLy8gUmVkcmF3IGlmIGFsbCBvZiB0aGUgcHJldmlvdXNs
eSBjZW50ZXJlZCBgV0kuVHJlZUVsZW1lbnRgIGFyZSBubyBsb25nZXIgY2VudGVyZWQuCi0gICAg
ICAgICAgICBpZiAodmlzaWJsZVRyZWVFbGVtZW50cy5pbnRlcnNlY3RzKHRoaXMuX3ZpcnR1YWxp
emVkVmlzaWJsZVRyZWVFbGVtZW50cykpIHsKLSAgICAgICAgICAgICAgICAvLyBSZWRyYXcgaWYg
dGhlcmUgaXMgYSBgV0kuVHJlZUVsZW1lbnRgIHRoYXQgc2hvdWxkIGJlIHNob3duIHRoYXQgaXNu
J3QgYXR0YWNoZWQuCi0gICAgICAgICAgICAgICAgaWYgKHZpc2libGVUcmVlRWxlbWVudHMuaXNT
dWJzZXRPZih0aGlzLl92aXJ0dWFsaXplZEF0dGFjaGVkVHJlZUVsZW1lbnRzKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
dGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gdmlzaWJsZVRyZWVFbGVtZW50
czsKLSAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IHRyZWVF
bGVtZW50c1RvQXR0YWNoOwotCi0gICAgICAgIGZvciAobGV0IHRyZWVFbGVtZW50IG9mIHRyZWVF
bGVtZW50c1RvRGV0YWNoKQotICAgICAgICAgICAgdHJlZUVsZW1lbnQuZWxlbWVudC5yZW1vdmUo
KTsKLQotICAgICAgICBmb3IgKGxldCB0cmVlRWxlbWVudCBvZiB0cmVlRWxlbWVudHNUb0F0dGFj
aCkgewotICAgICAgICAgICAgdHJlZUVsZW1lbnQucGFyZW50Ll9jaGlsZHJlbkxpc3ROb2RlLmFw
cGVuZENoaWxkKHRyZWVFbGVtZW50LmVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVt
ZW50Ll9jaGlsZHJlbkxpc3ROb2RlKQotICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnBhcmVu
dC5fY2hpbGRyZW5MaXN0Tm9kZS5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudC5fY2hpbGRyZW5MaXN0
Tm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFRvcFNwYWNlci5z
dHlsZS5oZWlnaHQgPSAoTWF0aC5tYXgoZmlyc3RJdGVtLCAwKSAqIHRoaXMuX3ZpcnR1YWxpemVk
VHJlZUl0ZW1IZWlnaHQpICsgInB4IjsKLSAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5wcmV2aW91
c0VsZW1lbnRTaWJsaW5nICE9PSB0aGlzLl92aXJ0dWFsaXplZFRvcFNwYWNlcikKLSAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl92aXJ0dWFsaXpl
ZFRvcFNwYWNlciwgdGhpcy5lbGVtZW50KTsKLQotICAgICAgICB0aGlzLl92aXJ0dWFsaXplZEJv
dHRvbVNwYWNlci5zdHlsZS5oZWlnaHQgPSAoTWF0aC5tYXgodG90YWxJdGVtcyAtIGxhc3RJdGVt
LCAwKSAqIHRoaXMuX3ZpcnR1YWxpemVkVHJlZUl0ZW1IZWlnaHQpICsgInB4IjsKLSAgICAgICAg
aWYgKHRoaXMuZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcgIT09IHRoaXMuX3ZpcnR1YWxpemVk
Qm90dG9tU3BhY2VyKQotICAgICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0
QmVmb3JlKHRoaXMuX3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyLCB0aGlzLmVsZW1lbnQubmV4dEVs
ZW1lbnRTaWJsaW5nKTsKLQotICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKQotICAgICAgICAgICAg
dGhpcy5fdmlydHVhbGl6ZWRTY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wID0gKGZpcnN0SXRlbSAr
IGV4dHJhUm93cykgKiB0aGlzLl92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0OworICAgICAgICBy
ZXR1cm4gdGhpcy5fdmlydHVhbGl6ZWREZWJvdW5jZXI7CiAgICAgfQogCiAgICAgLy8gU2VsZWN0
aW9uQ29udHJvbGxlciBkZWxlZ2F0ZQpAQCAtOTkwLDYgKzkwNyw5OSBAQCBXSS5UcmVlT3V0bGlu
ZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH07CiAgICAg
fQogCisgICAgX3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVtZW50KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy52aXJ0dWFsaXplZCk7CisKKyAgICAg
ICAgZnVuY3Rpb24gd2FsayhwYXJlbnQsIGNhbGxiYWNrLCBjb3VudCA9IDApIHsKKyAgICAgICAg
ICAgIGxldCBzaG91bGRSZXR1cm4gPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAobGV0IGNoaWxk
IG9mIHBhcmVudC5jaGlsZHJlbikgeworICAgICAgICAgICAgICAgIGlmICghY2hpbGQucmV2ZWFs
ZWQoZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZFJldHVybiA9IGNhbGxiYWNrKGNoaWxkLCBjb3VudCk7CisgICAgICAgICAgICAg
ICAgaWYgKHNob3VsZFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkg
eworICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gd2FsayhjaGlsZCwgY2FsbGJhY2ss
IGNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgY291bnQgPSByZXN1bHQuY291bnQ7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2hvdWxkUmV0dXJuKQorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIHtjb3VudCwgc2hvdWxkUmV0dXJufTsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCB7bnVtYmVyVmlzaWJsZSwgZXh0cmFSb3dzLCBmaXJzdEl0ZW0sIGxhc3RJdGVtfSA9IHRo
aXMuX2NhbGN1bGF0ZVZpcnR1YWxpemVkVmFsdWVzKCk7CisKKyAgICAgICAgbGV0IHNob3VsZFNj
cm9sbCA9IGZhbHNlOworICAgICAgICBpZiAoZm9jdXNlZFRyZWVFbGVtZW50ICYmIGZvY3VzZWRU
cmVlRWxlbWVudC5yZXZlYWxlZChmYWxzZSkpIHsKKyAgICAgICAgICAgIGxldCBpbmRleCA9IHdh
bGsodGhpcywgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudCA9PT0gZm9jdXNlZFRyZWVFbGVt
ZW50KS5jb3VudDsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IGZpcnN0SXRlbSkgeworICAgICAg
ICAgICAgICAgIGZpcnN0SXRlbSA9IGluZGV4IC0gZXh0cmFSb3dzOworICAgICAgICAgICAgICAg
IGxhc3RJdGVtID0gaW5kZXggKyBudW1iZXJWaXNpYmxlICsgZXh0cmFSb3dzOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChpbmRleCA+IGxhc3RJdGVtKSB7CisgICAgICAgICAgICAgICAgZmlyc3RJ
dGVtID0gaW5kZXggLSBudW1iZXJWaXNpYmxlIC0gZXh0cmFSb3dzOworICAgICAgICAgICAgICAg
IGxhc3RJdGVtID0gaW5kZXggKyBleHRyYVJvd3M7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIE9ubHkgc2Nyb2xsIGlmIHRoZSBgZm9jdXNlZFRyZWVFbGVtZW50YCBpcyBvdXRzaWRl
IHRoZSB2aXNpYmxlIGl0ZW1zLCBub3QgaW5jbHVkaW5nCisgICAgICAgICAgICAvLyB0aGUgYWRk
ZWQgYnVmZmVyIGBleHRyYVJvd3NgLgorICAgICAgICAgICAgc2hvdWxkU2Nyb2xsID0gKGluZGV4
IDwgZmlyc3RJdGVtICsgZXh0cmFSb3dzKSB8fCAoaW5kZXggPiBsYXN0SXRlbSAtIGV4dHJhUm93
cyk7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChmaXJzdEl0ZW0gPCBsYXN0
SXRlbSk7CisKKyAgICAgICAgbGV0IHZpc2libGVUcmVlRWxlbWVudHMgPSBuZXcgU2V0OworICAg
ICAgICBsZXQgdHJlZUVsZW1lbnRzVG9BdHRhY2ggPSBuZXcgU2V0OworICAgICAgICBsZXQgdHJl
ZUVsZW1lbnRzVG9EZXRhY2ggPSBuZXcgU2V0OworICAgICAgICBsZXQgdG90YWxJdGVtcyA9IHdh
bGsodGhpcywgKHRyZWVFbGVtZW50LCBjb3VudCkgPT4geworICAgICAgICAgICAgaWYgKGNvdW50
ID49IGZpcnN0SXRlbSAmJiBjb3VudCA8PSBsYXN0SXRlbSkgeworICAgICAgICAgICAgICAgIHRy
ZWVFbGVtZW50c1RvQXR0YWNoLmFkZCh0cmVlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgaWYg
KGNvdW50ID49IGZpcnN0SXRlbSArIGV4dHJhUm93cyAmJiBjb3VudCA8PSBsYXN0SXRlbSAtIGV4
dHJhUm93cykKKyAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRyZWVFbGVtZW50cy5hZGQodHJl
ZUVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0cmVlRWxlbWVudC5lbGVtZW50LnBh
cmVudE5vZGUpCisgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRzVG9EZXRhY2guYWRkKHRyZWVF
bGVtZW50KTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9KS5jb3VudDsK
KworICAgICAgICAvLyBSZWRyYXcgaWYgd2UgYXJlIGFib3V0IHRvIHNjcm9sbC4KKyAgICAgICAg
aWYgKCFzaG91bGRTY3JvbGwpIHsKKyAgICAgICAgICAgIC8vIFJlZHJhdyBpZiBhbGwgb2YgdGhl
IHByZXZpb3VzbHkgY2VudGVyZWQgYFdJLlRyZWVFbGVtZW50YCBhcmUgbm8gbG9uZ2VyIGNlbnRl
cmVkLgorICAgICAgICAgICAgaWYgKHZpc2libGVUcmVlRWxlbWVudHMuaW50ZXJzZWN0cyh0aGlz
Ll92aXJ0dWFsaXplZFZpc2libGVUcmVlRWxlbWVudHMpKSB7CisgICAgICAgICAgICAgICAgLy8g
UmVkcmF3IGlmIHRoZXJlIGlzIGEgYFdJLlRyZWVFbGVtZW50YCB0aGF0IHNob3VsZCBiZSBzaG93
biB0aGF0IGlzbid0IGF0dGFjaGVkLgorICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlVHJlZUVs
ZW1lbnRzLmlzU3Vic2V0T2YodGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVtZW50cykp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkVmlzaWJsZVRyZWVFbGVtZW50cyA9IHZpc2libGVU
cmVlRWxlbWVudHM7CisgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkQXR0YWNoZWRUcmVlRWxlbWVu
dHMgPSB0cmVlRWxlbWVudHNUb0F0dGFjaDsKKworICAgICAgICBmb3IgKGxldCB0cmVlRWxlbWVu
dCBvZiB0cmVlRWxlbWVudHNUb0RldGFjaCkKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LmVsZW1l
bnQucmVtb3ZlKCk7CisKKyAgICAgICAgZm9yIChsZXQgdHJlZUVsZW1lbnQgb2YgdHJlZUVsZW1l
bnRzVG9BdHRhY2gpIHsKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LnBhcmVudC5fY2hpbGRyZW5M
aXN0Tm9kZS5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudC5lbGVtZW50KTsKKyAgICAgICAgICAgIGlm
ICh0cmVlRWxlbWVudC5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgICAgICB0cmVlRWxl
bWVudC5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQuX2No
aWxkcmVuTGlzdE5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRU
b3BTcGFjZXIuc3R5bGUuaGVpZ2h0ID0gKE1hdGgubWF4KGZpcnN0SXRlbSwgMCkgKiB0aGlzLl92
aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0KSArICJweCI7CisgICAgICAgIGlmICh0aGlzLmVsZW1l
bnQucHJldmlvdXNFbGVtZW50U2libGluZyAhPT0gdGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIp
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5f
dmlydHVhbGl6ZWRUb3BTcGFjZXIsIHRoaXMuZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdmly
dHVhbGl6ZWRCb3R0b21TcGFjZXIuc3R5bGUuaGVpZ2h0ID0gKE1hdGgubWF4KHRvdGFsSXRlbXMg
LSBsYXN0SXRlbSwgMCkgKiB0aGlzLl92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0KSArICJweCI7
CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nICE9PSB0aGlzLl92
aXJ0dWFsaXplZEJvdHRvbVNwYWNlcikKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZSh0aGlzLl92aXJ0dWFsaXplZEJvdHRvbVNwYWNlciwgdGhpcy5lbGVt
ZW50Lm5leHRFbGVtZW50U2libGluZyk7CisKKyAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkKKyAg
ICAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9IChm
aXJzdEl0ZW0gKyBleHRyYVJvd3MpICogdGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRlbUhlaWdodDsK
KyAgICB9CisKICAgICBfaGFuZGxlQ29udGV4dG1lbnUoZXZlbnQpCiAgICAgewogICAgICAgICBs
ZXQgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tl
dENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvV2ViU29ja2V0Q29udGVudFZpZXcuanMKaW5kZXggM2JmMGQ2NDYzYzVhZjc3YzgzMGM0Y2Fj
OTEwMGIyYzFhNWNhYzhhMS4uZTQ3NjEyMzk3ZmVlNGUxY2VlODRlYjc2MGVmOThmMzIxNDU5MDNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViU29ja2V0Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcuanMKQEAgLTMxLDYgKzMxLDEwIEBA
IFdJLldlYlNvY2tldENvbnRlbnRWaWV3ID0gY2xhc3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHN1cGVyKHJlc291cmNlKTsKIAorICAgICAg
ICB0aGlzLl91cGRhdGVGcmFtZXNEZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUZyYW1lcygpOworICAgICAgICB9KTsKKwogICAgICAgICB0
aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOwogICAgICAgICB0aGlzLl9mcmFtZXNSZW5kZXJlZCA9
IDA7CiAgICAgICAgIHRoaXMuX2xhc3RSZW5kZXJlZFJlYWR5U3RhdGUgPSBudWxsOwpAQCAtODEs
NyArODUsNyBAQCBXSS5XZWJTb2NrZXRDb250ZW50VmlldyA9IGNsYXNzIFdlYlNvY2tldENvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgIHNob3duKCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX3VwZGF0ZUZyYW1lcygpOworICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXNEZWJv
dW5jZXIuZm9yY2UoKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihX
SS5XZWJTb2NrZXRSZXNvdXJjZS5FdmVudC5GcmFtZUFkZGVkLCB0aGlzLl91cGRhdGVGcmFtZXNT
b29uLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5X
ZWJTb2NrZXRSZXNvdXJjZS5FdmVudC5SZWFkeVN0YXRlQ2hhbmdlZCwgdGhpcy5fdXBkYXRlRnJh
bWVzU29vbiwgdGhpcyk7CiAgICAgfQpAQCAtOTYsNyArMTAwLDcgQEAgV0kuV2ViU29ja2V0Q29u
dGVudFZpZXcgPSBjbGFzcyBXZWJTb2NrZXRDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAKICAgICBfdXBkYXRlRnJhbWVzU29vbigpCiAgICAgewotICAgICAgICB0aGlzLm9uTmV4
dEZyYW1lLl91cGRhdGVGcmFtZXMoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRnJhbWVzRGVib3Vu
Y2VyLmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9CiAKICAgICBfdXBkYXRlRnJhbWVzKCkKQEAgLTEx
OSw4ICsxMjMsMTUgQEAgV0kuV2ViU29ja2V0Q29udGVudFZpZXcgPSBjbGFzcyBXZWJTb2NrZXRD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgICAgICB0aGlzLl9sYXN0
UmVuZGVyZWRSZWFkeVN0YXRlID0gdGhpcy5fcmVzb3VyY2UucmVhZHlTdGF0ZTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChzaG91bGRTY3JvbGxUb0JvdHRvbSkKLSAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLm9uTmV4dEZyYW1lLnNjcm9sbFRvTGFzdFJvdygpOworICAgICAgICBpZiAoc2hv
dWxkU2Nyb2xsVG9Cb3R0b20pIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fc2Nyb2xsVG9MYXN0
Um93RGVib3VuY2VyKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9MYXN0Um93RGVi
b3VuY2VyID0gbmV3IERlYm91bmNlcigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnNjcm9sbFRvTGFzdFJvdygpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0xhc3RSb3dEZWJvdW5jZXIuZGVs
YXlGb3JGcmFtZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgX2FkZEZyYW1lKGRhdGEsIGlz
T3V0Z29pbmcsIG9wY29kZSwgdGltZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMzkwZTQ5ZjhlODNiNWIyZmYyZjAxMWFm
MDM1MjNjMGQ5ZmMwZDgxLi5kZGY0ODU1M2I0NjNjNGNmMTQ3YTdjZWM0YmM5Y2RlMzBhYjYxOWI2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1ha2UgZGVib3VuY2UgUHJv
eHkgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQ3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2UtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTAyLTE1ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViVlRUXSBJbmxp
bmUgV2ViVlRUIHN0eWxlcyBzaG91bGQgc3RhcnQgd2l0aCAnOjpjdWUnCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQKaW5k
ZXggNjAwOTgwNTMyMzZiYTdjNDJhMmNkOTk1OTE3MGZiNTNkZDgxZTQ5My4uMzhjNjJiYjk1YWE5
YWVmNzZlMjZiNGE4Y2MwYmI2YTQ5MzY0MzkyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLWV4cGVjdGVkLnR4dApAQCAtMSwxMSArMSwx
MCBAQAotVGVzdGluZyBkZWJvdW5jZSBwcm94eSBzdXBwb3J0LgorVGVzdGluZyBkZWJvdW5jZSBm
dW5jdGlvbmFsaXR5LgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVib3VuY2UKIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBCYXNpYyBEZWJvdW5jZQogUEFTUzogRGVib3VuY2VkIHN1Y2Nlc3Nm
dWxseS4KIFBBU1M6IENhbGwgZGVsYXllZCBhdCBsZWFzdCAxMG1zLgotUEFTUzogYHRoaXNgIGlz
IHRoZSByaWdodCBvYmplY3QuCiBQQVNTOiBBcmd1bWVudHMgbGVuZ3RoIGlzIDIuCiBQQVNTOiBG
aXJzdCBhcmd1bWVudCBpcyA0LgogUEFTUzogU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMnLgpAQCAt
MTMsMTQgKzEyLDEyIEBAIFBBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KIC0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBNdWx0aXBsZSBEZWJvdW5jZSBEZWxheXMKIFBBU1M6IERlYm91bmNlZCBz
dWNjZXNzZnVsbHkuCiBQQVNTOiBDYWxsIGRlbGF5ZWQgYXQgbGVhc3QgNDBtcy4KLVBBU1M6IGB0
aGlzYCBpcyB0aGUgcmlnaHQgb2JqZWN0LgogUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgog
UEFTUzogRmlyc3QgYXJndW1lbnQgaXMgNC4KIFBBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJj
Jy4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNvb24gRGVib3VuY2UKIFBBU1M6IERlYm91bmNl
ZCBzdWNjZXNzZnVsbHkuCi1QQVNTOiBgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4KIFBBU1M6
IEFyZ3VtZW50cyBsZW5ndGggaXMgMi4KIFBBU1M6IEZpcnN0IGFyZ3VtZW50IGlzIDQuCiBQQVNT
OiBTZWNvbmQgYXJndW1lbnQgaXMgJ2FiYycuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvZGVib3VuY2UuaHRtbAppbmRleCBhNGYwMDcxOGViZjU0OGQzMDhiODc3MjM1Yjcy
N2EyMjA2MWU4NzdhLi5hNmZlOGQ3OWZhM2IwYzlhMWM3YzE5MDRmNTQ3YzAzMzBmMjNhYTRmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWwKQEAg
LTEsNCArMSw0IEBACi08IWRvY3R5cGUgaHRtbD4KKzwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgpAQCAtMTMsMjkgKzEzLDI1IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CiAgICAgICAgICAgICBsZXQg
c3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CiAKLSAgICAgICAgICAgIGxldCBvYmplY3Qg
PSB7Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVi
b3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKKyAgICAgICAgICAgIGxl
dCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAg
ICAgIGlmICgrK2NhbGxDb3VudCA9PT0gMSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5wYXNzKCJEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LiIpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVu
Y3Rpb24gY2FsbGVkIG11bHRpcGxlIHRpbWVzLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSAx
MCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCAxMG1zLiIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSAxMCwg
IkNhbGwgZGVsYXllZCBhdCBsZWFzdCAxMG1zLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0aGlzID09PSBvYmplY3QsICJgdGhpc2AgaXMgdGhlIHJp
Z2h0IG9iamVjdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGFyZ3VtZW50cy5sZW5ndGggPT09IDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChmb28gPT09IDQsICJG
aXJzdCBhcmd1bWVudCBpcyA0LiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYXJndW1lbnRzLmxlbmd0
aCA9PT0gMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9vID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwg
IlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKIAotICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgbGV0IGRlYm91bmNl
UHJveHkgPSBvYmplY3QuZGVib3VuY2UoMTApOwotICAgICAgICAgICAgZGVib3VuY2VQcm94eS50
ZXN0KDEsICd4eXonKTsKLSAgICAgICAgICAgIGRlYm91bmNlUHJveHkudGVzdCgyLCAnZmdoJyk7
Ci0gICAgICAgICAgICBkZWJvdW5jZVByb3h5LnRlc3QoMywgJ2VydCcpOwotICAgICAgICAgICAg
ZGVib3VuY2VQcm94eS50ZXN0KDQsICdhYmMnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxh
eUZvclRpbWUoMTAsIDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRp
bWUoMTAsIDIsICdmZ2gnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAs
IDMsICdlcnQnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDQsICdh
YmMnKTsKIAogICAgICAgICAgICAgaWYgKCFjYWxsQ291bnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNTEsMjggKzQ3LDI1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0
IGNhbGxDb3VudCA9IDA7CiAgICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uu
bm93KCk7CiAKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVz
dChmb28sIGJhcikgewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjYWxsQ291bnQgPT09IDEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBz
dWNjZXNzZnVsbHkuIik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcy4iKTsKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3Vu
Y2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAgIGlmICgrK2NhbGxDb3VudCA9PT0g
MSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgc3Vj
Y2Vzc2Z1bGx5LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIG11bHRpcGxlIHRp
bWVzLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChw
ZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSA0MCwgIkNhbGwgZGVsYXllZCBhdCBsZWFz
dCA0MG1zLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJm
b3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSA0MCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCA0
MG1zLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0
aGlzID09PSBvYmplY3QsICJgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFyZ3VtZW50cy5sZW5ndGggPT09
IDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChmb28gPT09IDQsICJGaXJzdCBhcmd1bWVudCBpcyA0LiIpOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJj
IiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiwgIkFyZ3VtZW50cyBsZW5n
dGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9v
ID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJj
Jy4iKTsKIAotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgb2JqZWN0LmRlYm91bmNlKDEwKS50ZXN0KDEsICd4eXonKTsK
LSAgICAgICAgICAgIG9iamVjdC5kZWJvdW5jZSgyMCkudGVzdCgyLCAnZmdoJyk7Ci0gICAgICAg
ICAgICBvYmplY3QuZGVib3VuY2UoMzApLnRlc3QoMywgJ2VydCcpOwotICAgICAgICAgICAgb2Jq
ZWN0LmRlYm91bmNlKDQwKS50ZXN0KDQsICdhYmMnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5k
ZWxheUZvclRpbWUoMTAsIDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZv
clRpbWUoMjAsIDIsICdmZ2gnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUo
MzAsIDMsICdlcnQnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoNDAsIDQs
ICdhYmMnKTsKIAogICAgICAgICAgICAgaWYgKCFjYWxsQ291bnQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtODcsMjYgKzgwLDIzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CiAKLSAg
ICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHku
Iik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1l
cy4iKTsKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJh
cikgPT4geworICAgICAgICAgICAgICAgIGlmICgrK2NhbGxDb3VudCA9PT0gMSkKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LiIp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIG11bHRpcGxlIHRpbWVzLiIpOwogCi0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0aGlzID09PSBvYmpl
Y3QsICJgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4iKTsKLSAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFyZ3VtZW50cy5sZW5ndGggPT09IDIsICJBcmd1bWVu
dHMgbGVuZ3RoIGlzIDIuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChmb28gPT09IDQsICJGaXJzdCBhcmd1bWVudCBpcyA0LiIpOwotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBh
cmd1bWVudCBpcyAnYWJjJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9vID09PSA0LCAiRmly
c3QgYXJndW1lbnQgaXMgNC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKIAotICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKIAotICAg
ICAgICAgICAgb2JqZWN0LnNvb24udGVzdCgxLCAneHl6Jyk7Ci0gICAgICAgICAgICBvYmplY3Qu
c29vbi50ZXN0KDIsICdmZ2gnKTsKLSAgICAgICAgICAgIG9iamVjdC5zb29uLnRlc3QoMywgJ2Vy
dCcpOwotICAgICAgICAgICAgb2JqZWN0LnNvb24udGVzdCg0LCAnYWJjJyk7CisgICAgICAgICAg
ICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDAsIDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91
bmNlci5kZWxheUZvclRpbWUoMCwgMiwgJ2ZnaCcpOworICAgICAgICAgICAgZGVib3VuY2VyLmRl
bGF5Rm9yVGltZSgwLCAzLCAnZXJ0Jyk7CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JU
aW1lKDAsIDQsICdhYmMnKTsKIAogICAgICAgICAgICAgaWYgKCFjYWxsQ291bnQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDE3ICsxMDksMTggQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiQ2FuY2VsIERlYm91bmNlIiwK
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBvYmplY3Qg
PSB7Ci0gICAgICAgICAgICAgICAgdGVzdCgpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbCBzaG91bGQgaGF2ZSBiZWVuIGNh
bmNlbGVkLiIpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVi
b3VuY2VyKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91
bmNlZCBmdW5jdGlvbiBjYWxsIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQuIik7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIG9iamVj
dC5kZWJvdW5jZSgxMCkudGVzdCgpOwotICAgICAgICAgICAgb2JqZWN0LnRlc3QuY2FuY2VsRGVi
b3VuY2UoKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTApOworICAgICAg
ICAgICAgZGVib3VuY2VyLmNhbmNlbCgpOwogCi0gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHsgSW5zcGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQuIik7IHJl
c29sdmUoKTsgfSwgMjApOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQu
Iik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSwgMjApOwogICAg
ICAgICB9CiAgICAgfSk7CiAKQEAgLTEzOCw2ICsxMjksNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3Rp
bmcgZGVib3VuY2UgcHJveHkgc3VwcG9ydC48L3A+CisgICAgPHA+VGVzdGluZyBkZWJvdW5jZSBm
dW5jdGlvbmFsaXR5LjwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLWV4cGVjdGVkLnR4dAppbmRleCBiYTgy
MWM5MzEzNjQxZmRjYWJmZjM1YmRjMGY1Zjk5MjAyMGI0Yjg1Li41OGVhZmY3ZTdhMDZiMWMzZmQw
YjM3MzZiNTQ1NGZmNzdjNTU1ZTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dW5pdC10ZXN0cy90aHJvdHRsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVz
dCB0aHJvdHRsZSBwcm94eSBzdXBwb3J0LgorVGVzdCB0aHJvdHRsZSBmdW5jdGlvbmFsaXR5Lgog
CiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGhyb3R0bGUKQEAgLTYsOSArNiw2IEBAIFRlc3Qg
dGhyb3R0bGUgcHJveHkgc3VwcG9ydC4KIENhbGwgdGhyb3R0bGVkIGZ1bmN0aW9uIGV2ZXJ5IDEg
bXMgZm9yIDExMCBtcy4KIFBBU1M6IEFsbCBjYWxscyBkZWxheWVkIGF0IGxlYXN0IDUwIG1zLgog
Ci0tLSBSdW5uaW5nIHRlc3QgY2FzZTogVGhyb3R0bGUgcHJveHkgdW5pcXVlbmVzcwotUEFTUzog
RWFjaCBjYWxsIHRvIHRocm90dGxlIHNob3VsZCByZXR1cm4gYSBuZXcgcHJveHkuCi0KIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBUaHJvdHRsZWQgZnVuY3Rpb24gYXJndW1lbnRzCiBQQVNTOiBUcmFp
bGluZyBjYWxsIGludm9rZWQgd2l0aCBtb3N0IHJlY2VudCBhcmd1bWVudHMuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZS5odG1sCmluZGV4IGY4ZDZkMmQ4
MmM4NTJkOGE1M2Q4OWU4N2QzYWVhNmQ0ZjcyYjcxZTAuLjE5M2U0NjY1Yzc3ODBkOTg3NzdmNDQy
YzM3NmUzOGY2YzZhYzcyOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0
LXRlc3RzL3Rocm90dGxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVz
dHMvdGhyb3R0bGUuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CkBAIC0xNyw1
MSArMTcsMzcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBsZXQgbGFzdENhbGxUaW1l
ID0gTmFOOwogICAgICAgICAgICAgbGV0IG51bWJlck9mQ2FsbHMgPSAwOwogCi0gICAgICAgICAg
ICBsZXQgb2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHRlc3QoaXNUcmFpbGluZykgewotICAg
ICAgICAgICAgICAgICAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTsKKyAgICAgICAgICAgIGxldCB0
aHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVyKChpc1RyYWlsaW5nKSA9PiB7CisgICAgICAgICAgICAg
ICAgbGV0IG5vdyA9IERhdGUubm93KCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCsrbnVt
YmVyT2ZDYWxscyA+IG1heGltdW1OdW1iZXJPZkNhbGxzKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZWplY3QoIlRocm90dGxlZCBmdW5jdGlvbiBjYWxsZWQgdG9vIG1hbnkgdGltZXMuIik7
CisgICAgICAgICAgICAgICAgaWYgKCsrbnVtYmVyT2ZDYWxscyA+IG1heGltdW1OdW1iZXJPZkNh
bGxzKSB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdCgiVGhyb3R0bGVkIGZ1bmN0aW9uIGNh
bGxlZCB0b28gbWFueSB0aW1lcy4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaXNOYU4obGFzdENhbGxUaW1l
KSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYWN0dWFsRGVsYXkgPSBub3cgLSBsYXN0Q2Fs
bFRpbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxEZWxheSA8IGRlbGF5KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoYERlbGF5IHNob3VsZCBi
ZSBhdCBsZWFzdCAke2RlbGF5fSBtcy4gV2FzICR7YWN0dWFsRGVsYXl9IG1zLmApOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
TmFOKGxhc3RDYWxsVGltZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxE
ZWxheSA9IG5vdyAtIGxhc3RDYWxsVGltZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
Y3R1YWxEZWxheSA8IGRlbGF5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5mYWlsKGBEZWxheSBzaG91bGQgYmUgYXQgbGVhc3QgJHtkZWxheX0gbXMuIFdhcyAk
e2FjdHVhbERlbGF5fSBtcy5gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3Qo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBs
YXN0Q2FsbFRpbWUgPSBub3c7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzVHJhaWxpbmcp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgQWxsIGNhbGxz
IGRlbGF5ZWQgYXQgbGVhc3QgJHtkZWxheX0gbXMuYCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgbGFzdENhbGxUaW1lID0gbm93OworCisg
ICAgICAgICAgICAgICAgaWYgKGlzVHJhaWxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5wYXNzKGBBbGwgY2FsbHMgZGVsYXllZCBhdCBsZWFzdCAke2RlbGF5fSBtcy5g
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sIGRlbGF5KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYENh
bGwgdGhyb3R0bGVkIGZ1bmN0aW9uIGV2ZXJ5IDEgbXMgZm9yICR7ZHVyYXRpb259IG1zLmApOwog
Ci0gICAgICAgICAgICBsZXQgdGhyb3R0bGVQcm94eSA9IG9iamVjdC50aHJvdHRsZShkZWxheSk7
Ci0gICAgICAgICAgICB0aHJvdHRsZVByb3h5LnRlc3QoKTsKKyAgICAgICAgICAgIHRocm90dGxl
ci5maXJlKCk7CiAKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGR1cmF0aW9uOyBp
KyspCi0gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRocm90dGxlUHJveHkudGVz
dChpID09PSBkdXJhdGlvbik7IH0sIGkpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJUaHJvdHRsZSBwcm94eSB1bmlxdWVuZXNz
IiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBvYmpl
Y3QgPSB7fTsKLSAgICAgICAgICAgIGxldCBmaXJzdFByb3h5ID0gb2JqZWN0LnRocm90dGxlKDEp
OwotICAgICAgICAgICAgbGV0IHNlY29uZFByb3h5ID0gb2JqZWN0LnRocm90dGxlKDEpOwotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RFcXVhbChmaXJzdFByb3h5LCBzZWNvbmRQ
cm94eSwgIkVhY2ggY2FsbCB0byB0aHJvdHRsZSBzaG91bGQgcmV0dXJuIGEgbmV3IHByb3h5LiIp
OwotICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkg
PT4geyB0aHJvdHRsZXIuZmlyZShpID09PSBkdXJhdGlvbik7IH0sIGkpOwogICAgICAgICB9CiAg
ICAgfSk7CiAKQEAgLTcxLDIzICs1NywyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IGxldCB2YWx1ZXMgPSBbMSwgMiwgM107CiAgICAgICAgICAgICBsZXQgaXNMZWFkaW5nQ2FsbCA9
IHRydWU7CiAKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVz
dCh2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNMZWFkaW5nQ2FsbCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaXNMZWFkaW5nQ2FsbCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgbGV0IGV4cGVjdGVkID0gdmFsdWVzLmxhc3RWYWx1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh2YWx1ZSwgZXhwZWN0ZWQsICJUcmFpbGlu
ZyBjYWxsIGludm9rZWQgd2l0aCBtb3N0IHJlY2VudCBhcmd1bWVudHMuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhy
b3R0bGVyKCh2YWx1ZSkgPT4geworICAgICAgICAgICAgICAgIGlmIChpc0xlYWRpbmdDYWxsKSB7
CisgICAgICAgICAgICAgICAgICAgIGlzTGVhZGluZ0NhbGwgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSB2YWx1ZXMubGFzdFZhbHVlOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmFsdWUsIGV4cGVjdGVkLCAiVHJhaWxp
bmcgY2FsbCBpbnZva2VkIHdpdGggbW9zdCByZWNlbnQgYXJndW1lbnRzLiIpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDUwKTsKIAogICAgICAgICAgICAgbGV0
IGkgPSAwOwotICAgICAgICAgICAgbGV0IHRocm90dGxlUHJveHkgPSBvYmplY3QudGhyb3R0bGUo
NTApOwogICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKQotICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRsZVByb3h5LnRlc3QodmFsdWUpOyB9LCBpKysp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRsZXIuZmlyZSh2YWx1
ZSk7IH0sIGkrKyk7CiAgICAgICAgIH0KICAgICB9KTsKIApAQCAtOTYsMjAgKzc5LDE3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAg
ICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0g
ICAgICAgICAgICAgICAgdGVzdCgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxl
ZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5mYWlsKCJDYWxsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVyIGNhbmNl
bC4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVy
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGVkKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJDYWxsZWQg
dGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVyIGNhbmNlbC4iKTsKKyAgICAgICAgICAgICAgICByZWpl
Y3QoKTsKKyAgICAgICAgICAgIH0sIDIwKTsKIAotICAgICAgICAgICAgbGV0IHRocm90dGxlUHJv
eHkgPSBvYmplY3QudGhyb3R0bGUoMjApOwotICAgICAgICAgICAgdGhyb3R0bGVQcm94eS50ZXN0
KCk7Ci0gICAgICAgICAgICB0aHJvdHRsZVByb3h5LnRlc3QoKTsKKyAgICAgICAgICAgIHRocm90
dGxlci5maXJlKCk7CisgICAgICAgICAgICB0aHJvdHRsZXIuZmlyZSgpOwogCi0gICAgICAgICAg
ICBvYmplY3QudGVzdC5jYW5jZWxUaHJvdHRsZSgpOworICAgICAgICAgICAgdGhyb3R0bGVyLmNh
bmNlbCgpOwogICAgICAgICAgICAgY2FuY2VsZWQgPSB0cnVlOwogCiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiQ2FuY2VsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uLiIpOwpAQCAtMTI2LDYg
KzEwNiw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdCB0aHJvdHRsZSBwcm94eSBzdXBwb3J0LjwvcD4K
KyAgICA8cD5UZXN0IHRocm90dGxlIGZ1bmN0aW9uYWxpdHkuPC9wPgogPC9ib2R5PgogPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362220</attachid>
            <date>2019-02-16 11:21:55 -0800</date>
            <delta_ts>2019-02-21 13:19:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194721-20190216112154.patch</filename>
            <type>text/plain</type>
            <size>86945</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg4MDY2NmY5Y2IzNDBkMDYwZTdlN2MxYTZiZTlm
OTkzYTI2YWViYWYuLjM5YWE2MjVjNTJlNGZhZmI2OTM2OGFjYjdhMTZlNTg3ZTk0MTA3YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE5LTAyLTE2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
YWtlIGRlYm91bmNlIFByb3h5IGludG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGBkZWJvdW5jZWAvYHRocm90dGxlYCBm
dW5jdGlvbnMgbGV2ZXJhZ2VkIGEgYFByb3h5YCB0byBpbnRlcmNlcHQgdGhlIGZ1bmN0aW9uIGNh
bGwgYW5kCisgICAgICAgIHJlcGxhY2UgaXQgd2l0aCBhICJkZWxheWVkIiB2ZXJzaW9uLiBUaGUg
aXNzdWUgd2l0aCB0aGlzIGlzIHRoYXQgaXQgc2V0IHRoZSBpZGVudGlmaWVyIGZvcgorICAgICAg
ICB0aGUgdGltZXIgb24gdGhlIGZ1bmN0aW9uIGl0c2VsZiwgd2hpY2ggaXMgc2hhcmVkIGFjcm9z
cyBhbGwgaW5zdGFuY2VzIG9mIGEgZ2l2ZW4gY2xhc3MuCisgICAgICAgIFdoZW4gZGlmZmVyZW50
IGluc3RhbmNlcyBjYWxsIHRoZSBzYW1lIGRlbGF5ZWQgZnVuY3Rpb24sIHRoZXknZCBjbG9iYmVy
IGVhY2hvdGhlcidzIGF0dGVtcHRzCisgICAgICAgIHRvIGRlbGF5IHdvcmsuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKERlYm91
bmNlcik6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmZvcmNlKToKKyAgICAgICAgKERl
Ym91bmNlci5wcm90b3R5cGUuZGVsYXlGb3JUaW1lKToKKyAgICAgICAgKERlYm91bmNlci5wcm90
b3R5cGUuZGVsYXlGb3JGcmFtZSk6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmRlbGF5
Rm9yTWljcm90YXNrKToKKyAgICAgICAgKERlYm91bmNlci5wcm90b3R5cGUuY2FuY2VsKToKKyAg
ICAgICAgKERlYm91bmNlci5wcm90b3R5cGUuX2V4ZWN1dGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9UaHJvdHRsZXIuanM6IEFkZGVkLgorICAgICAgICAoVGhyb3R0bGVyKToKKyAg
ICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuZm9yY2UpOgorICAgICAgICAoVGhyb3R0bGVyLnBy
b3RvdHlwZS5maXJlKToKKyAgICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuY2FuY2VsKToKKyAg
ICAgICAgKFRocm90dGxlci5wcm90b3R5cGUuX2V4ZWN1dGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanM6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0JlemllckVkaXRvci5qczoKKyAgICAgICAgKFdJLkJlemllckVkaXRvcik6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qczoKKyAgICAgICAgKFdJLkNvbnRl
bnRCcm93c2VyKToKKyAgICAgICAgKFdJLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5fY29udGVu
dFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvbnRl
bnRCcm93c2VyLnByb3RvdHlwZS5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLl9j
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRl
ci5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVVcGRhdGVyKToKKyAgICAgICAgKFdJLkRPTVRyZWVV
cGRhdGVyLnByb3RvdHlwZS5fbm9kZUF0dHJpYnV0ZU1vZGlmaWVkKToKKyAgICAgICAgKFdJLkRP
TVRyZWVVcGRhdGVyLnByb3RvdHlwZS5fbm9kZUluc2VydGVkKToKKyAgICAgICAgKFdJLkRPTVRy
ZWVVcGRhdGVyLnByb3RvdHlwZS5fbm9kZVJlbW92ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLnNob3dFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcik6CisgICAgICAgIChXSS5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5oaWRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXIpOgorICAg
ICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudXBkYXRlRmlsdGVyKToK
KyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duKToKKyAg
ICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl91cGRhdGVDb250ZW50
T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkKToKKyAgICAgICAgKFdJ
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudERpc2Nsb3N1cmVE
aWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXSS5SZWNvcmRpbmdDb250ZW50Vmlldyk6CisgICAgICAgIChX
SS5SZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlQWN0aW9uSW5kZXgpOgorICAg
ICAgICAoV0kuUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanM6Cisg
ICAgICAgIChXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWZyZXNo
UmVsYXRlZFJlc291cmNlc1NlY3Rpb24pOgorICAgICAgICAoV0kuUmVzb3VyY2VEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5fYXBwbHlSZXNvdXJjZUV2ZW50TGlzdGVuZXJzKToKKyAgICAg
ICAgKFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5TaGFk
ZXJQcm9ncmFtQ29udGVudFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3By
aW5nRWRpdG9yLmpzOgorICAgICAgICAoV0kuU3ByaW5nRWRpdG9yLnByb3RvdHlwZS5fcmVzZXRQ
cmV2aWV3QW5pbWF0aW9uKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLnNldCBoaWRkZW4pOgor
ICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmRpZENoYW5nZSk6CisgICAgICAgIChX
SS5UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFjaCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2RldGFjaCk6CisgICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUu
Y29sbGFwc2UpOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZCk6Cisg
ICAgICAgIChXSS5UcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUp
OgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnJlZ2lzdGVyU2Nyb2xsVmlydHVh
bGl6ZXIpOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLmdldCB1cGRhdGVWaXJ0
dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyKTogQWRkZWQuCisgICAgICAgIChXSS5UcmVlT3V0bGlu
ZS5wcm90b3R5cGUuX3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMpOiBBZGRlZC4KKyAgICAgICAg
KFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzLndhbGsp
OiBEZWxldGVkLgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnVwZGF0ZVZpcnR1
YWxpemVkRWxlbWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViU29ja2V0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmll
dyk6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24pOgor
ICAgICAgICAoV0kuV2ViU29ja2V0Q29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVGcmFtZXNT
b29uKToKKyAgICAgICAgKFdJLldlYlNvY2tldENvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRl
RnJhbWVzKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIC5lc2xpbnRyYzoKKwogMjAxOS0w
Mi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQ2FudmFzOiBhbGwgYWN0aW9ucyBhZnRlciBhbiBvZmZzY3JlZW4gcGF0aCBtb2Rp
ZmljYXRpb24gYXJlIG1hcmtlZCBhcyBvZmZzY3JlZW4gcGF0aCBlcnJvcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
LmVzbGludHJjCmluZGV4IGE4YzA0ZGRjMDYyN2FjMDU4NDJmZDJiMDBkODNmZDU2MzFiZGE0MGEu
LmQyMDEwNDM1NmQ4ZDNhMTMxNjE4Nzk0ZjM0ZTQzNmNjYWMxNjkzNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
Ly5lc2xpbnRyYwpAQCAtNjQsNiArNjQsNyBAQAogCiAgICAgICAgIC8vIFdlYkluc3BlY3Rvcgog
ICAgICAgICAiQXN5bmNUZXN0U3VpdGUiOiB0cnVlLAorICAgICAgICAiRGVib3VuY2VyIjogdHJ1
ZSwKICAgICAgICAgIkZvcm1hdHRlciI6IHRydWUsCiAgICAgICAgICJGb3JtYXR0ZXJDb250ZW50
QnVpbGRlciI6IHRydWUsCiAgICAgICAgICJGcm9udGVuZFRlc3RIYXJuZXNzIjogdHJ1ZSwKQEAg
LTgwLDYgKzgxLDcgQEAKICAgICAgICAgIlN5bmNUZXN0U3VpdGUiOiB0cnVlLAogICAgICAgICAi
VGVzdEhhcm5lc3MiOiB0cnVlLAogICAgICAgICAiVGVzdFN1aXRlIjogdHJ1ZSwKKyAgICAgICAg
IlRocm90dGxlciI6IHRydWUsCiAKICAgICAgICAgLy8gRXh0ZXJuYWxzCiAgICAgICAgICJDb2Rl
TWlycm9yIjogdHJ1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9EZWJvdW5jZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU3N2I1MjY4YTE0OTYwYTIwNGFl
OGNmNmQ1NDc4NWYzNTUyMWU5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpzCkBAIC0wLDAgKzEsMTM0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLy8gRGVib3VuY2VyIHdyYXBzIGEgZnVuY3Rpb24gYW5kIGNvbnRpbnVlcyB0
byBkZWxheSBpdHMgaW52b2NhdGlvbiBhcyBsb25nIGFzCisvLyBjbGllbnRzIGNvbnRpbnVlIHRv
IGRlbGF5IGl0cyBmaXJpbmcuIFRoZSBtb3N0IHJlY2VudCBkZWxheSBjYWxsIG92ZXJyaWRlcwor
Ly8gcHJldmlvdXMgY2FsbHMuIERlbGF5cyBtYXkgYmUgdGltZW91dHMsIGFuaW1hdGlvbiBmcmFt
ZXMsIG9yIG1pY3JvdGFza3MuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgICAgbGV0IGRlYm91
bmNlciA9IG5ldyBEZWJvdW5jZXIoKCkgPT4geyB0aGlzLnJlZnJlc2goKSB9KTsKKy8vICAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCAoZXZlbnQpID0+IHsgZGVib3VuY2Vy
LmRlbGF5Rm9yVGltZSgxMDApOyB9KTsKKy8vCisvLyBXaWxsIGVuc3VyZSBgcmVmcmVzaGAgd2ls
bCBub3QgaGFwcGVuIHVudGlsIG5vIGtleWV2ZW50IGhhcyBoYXBwZW5lZCBpbiAxMDBtczoKKy8v
CisvLyAgICAgICAgICAgICAgIDBtcyAgICAgICAgICAxMDBtcyAgICAgICAgIDIwMG1zICAgICAg
ICAgMzAwbXMgICAgICAgICA0MDBtcworLy8gICAgIHRpbWU6ICAgICAgfC0tLS0tLS0tLS0tLS18
LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CisvLyAgICAgZGVsYXk6
ICAgICBeICAgICBeIF4gICAgICAgIF4gICAgICBeICAgICAgICBeICAgIF4gICBeCisvLyAgICAg
cmVmcmVzaGVzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICogKDEpCisvLworLy8gV2hlbiB0aGUgd3JhcHBlZCBmdW5jdGlvbiBpcyBhY3R1
YWxseSBjYWxsZWQsIGl0IHdpbGwgYmUgZ2l2ZW4gdGhlIG1vc3QgcmVjZW50IHNldCBvZiBhcmd1
bWVudHMuCisKK2NsYXNzIERlYm91bmNlcgoreworICAgIGNvbnN0cnVjdG9yKGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rp
b24iKTsKKworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICB0aGlz
Ll9sYXN0QXJndW1lbnRzID0gW107CisKKyAgICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIg
PSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRpZmllciA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fcHJvbWlzZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBmb3JjZSgpCisgICAgeworICAgICAgICB0aGlz
Ll9sYXN0QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICB0aGlzLl9leGVjdXRlKCk7Cisg
ICAgfQorCisgICAgZGVsYXlGb3JUaW1lKHRpbWUsIC4uLmFyZ3MpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aW1lID49IDApOworCisgICAgICAgIHRoaXMuY2FuY2VsKCk7CisKKyAg
ICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IGFyZ3M7CisKKyAgICAgICAgdGhpcy5fdGltZW91
dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1
dGUoKTsKKyAgICAgICAgfSwgdGltZSk7CisgICAgfQorCisgICAgZGVsYXlGb3JGcmFtZSgpCisg
ICAgeworICAgICAgICB0aGlzLmNhbmNlbCgpOworCisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVu
dHMgPSBhcmd1bWVudHM7CisKKyAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZGVudGlmaWVy
ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1
dGUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZGVsYXlGb3JNaWNyb3Rhc2soKQorICAg
IHsKKyAgICAgICAgdGhpcy5jYW5jZWwoKTsKKworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRz
ID0gYXJndW1lbnRzOworCisgICAgICAgIGxldCBwcm9taXNlSWRlbnRpZmllciA9IFN5bWJvbCgi
bmV4dC1taWNyb3Rhc2siKTsKKworICAgICAgICB0aGlzLl9wcm9taXNlSWRlbnRpZmllciA9IHBy
b21pc2VJZGVudGlmaWVyOworCisgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9wcm9taXNlSWRlbnRpZmllciA9PT0gcHJvbWlzZUlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZSgpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBjYW5jZWwoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IFtdOwor
CisgICAgICAgIGlmICh0aGlzLl90aW1lb3V0SWRlbnRpZmllcikgeworICAgICAgICAgICAgY2xl
YXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX3Rp
bWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FuY2VsQW5pbWF0
aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRo
aXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLl9wcm9taXNlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHRoaXMuX3By
b21pc2VJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKwor
ICAgIF9leGVjdXRlKCkKKyAgICB7CisgICAgICAgIGxldCBhcmdzID0gdGhpcy5fbGFzdEFyZ3Vt
ZW50czsKKworICAgICAgICB0aGlzLmNhbmNlbCgpOworCisgICAgICAgIHRoaXMuX2NhbGxiYWNr
LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UaHJvdHRsZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rocm90dGxlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ODhjMWE0NzhiOTc2ZGFmYzNhYjY3NmY5MWMxNjljZGY1NGVjOWZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UaHJvdHRsZXIuanMK
QEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaHJvdHRsZXIgd3JhcHMgYSBmdW5j
dGlvbiBhbmQgZW5zdXJlcyBpdCBkb2Vzbid0IGdldCBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgZXZl
cnkgYGRlbGF5YCBtcy4KKy8vIFRoZSBmaXJzdCBmaXJlIHdpbGwgYWx3YXlzIHRyaWdnZXIgc3lu
Y2hyb25vdXMsIGFuZCBzdWJzZXF1ZW50IGNhbGxzIHRoYXQgbmVlZCB0byBiZSB0aHJvdHRsZWQK
Ky8vIHdpbGwgaGFwcGVuIGxhdGVyIGFzeW5jaHJvbm91c2x5LgorLy8KKy8vIEV4YW1wbGU6Cisv
LworLy8gICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVyKDI1MCwgKCkgPT4geyB0aGlz
LnJlZnJlc2goKSB9KTsKKy8vICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCAoZXZlbnQpID0+IHsgdGhyb3R0bGVyLmZpcmUoKTsgfSk7CisvLworLy8gV2lsbCBlbnN1cmUg
YHJlZnJlc2hgIGhhcHBlbnMgbm8gbW9yZSB0aGFuIG9uY2UgZXZlcnkgMjUwbXMgbm8gbWF0dGVy
IGhvdyBvZnRlbiBgZmlyZWAgaXMgY2FsbGVkOgorLy8KKy8vICAgICAgICAgICAgICAgMG1zICAg
ICAgICAgICAgICAgICAgICAgICAgMjUwbXMgICAgICAgICAgICAgICAgICAgICAgIDUwMG1zCisv
LyAgICAgdGltZTogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKKy8vICAgICBmaXJlOiAgICAgIF4gICAgIF4gXiAgICAgICAgXiAg
ICAgIF4gICAgICAgIF4gICAgXiAgIF4KKy8vICAgICByZWZyZXNoZXM6ICogKDEpICAgICAgICAg
ICAgICAgICAgICAgICAqICgyKSAgICAgICAgICAgICAgICAgICAgICAgKiAoMykKKy8vCisvLyBX
aGVuIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCwgaXQgd2lsbCBiZSBn
aXZlbiB0aGUgbW9zdCByZWNlbnQgc2V0IG9mIGFyZ3VtZW50cy4KKworY2xhc3MgVGhyb3R0bGVy
Cit7CisgICAgY29uc3RydWN0b3IoY2FsbGJhY2ssIGRlbGF5KQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoZGVsYXkgPj0gMCk7CisKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxs
YmFjazsKKyAgICAgICAgdGhpcy5fZGVsYXkgPSBkZWxheTsKKworICAgICAgICB0aGlzLl9sYXN0
QXJndW1lbnRzID0gW107CisKKyAgICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSB1bmRl
ZmluZWQ7CisgICAgICAgIHRoaXMuX2xhc3RGaXJlVGltZSA9IE5hTjsKKyAgICB9CisKKyAgICAv
LyBQdWJsaWMKKworICAgIGZvcmNlKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVu
dHMgPSBhcmd1bWVudHM7CisgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICB9CisKKyAgICBm
aXJlKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBhcmd1bWVudHM7CisK
KyAgICAgICAgaWYgKGlzTmFOKHRoaXMuX2xhc3RGaXJlVGltZSkpIHsKKyAgICAgICAgICAgIHRo
aXMuX2V4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCByZW1haW5pbmcgPSB0aGlzLl9kZWxheSAtIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdEZp
cmVUaW1lKTsKKyAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSB7CisgICAgICAgICAgICB0aGlz
Ll9leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodGhpcy5fdGltZW91dElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg
ICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICAgICAgfSwgcmVtYWluaW5nKTsKKyAgICB9CisKKyAg
ICBjYW5jZWwoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IFtdOworCisg
ICAgICAgIGlmICh0aGlzLl90aW1lb3V0SWRlbnRpZmllcikgeworICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVv
dXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX2V4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEZpcmVUaW1l
ID0gRGF0ZS5ub3coKTsKKworICAgICAgICBsZXQgYXJncyA9IHRoaXMuX2xhc3RBcmd1bWVudHM7
CisKKyAgICAgICAgdGhpcy5jYW5jZWwoKTsKKworICAgICAgICB0aGlzLl9jYWxsYmFjay5hcHBs
eSh1bmRlZmluZWQsIGFyZ3MpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXggOTNhNGY5ZWE5MDRi
NmE5YjBjZDNlNTVhN2MzZTcxYjhlZjkwNTliNi4uMWZhZWJhOTM1ZDEyMWFkMDlkYTYzN2NjNjFh
ZTc0N2NjYmZlMDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTE0ODAsMTU1ICsxNDgwLDYgQEAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KFByb21pc2UsICJkZWxheSIsCiAgICAgfQogfSk7CiAKLShmdW5jdGlv
bigpIHsKLSAgICAvLyBUaGUgYGRlYm91bmNlYCBmdW5jdGlvbiBsZXRzIHlvdSBjYWxsIGFueSBm
dW5jdGlvbiBvbiBhbiBvYmplY3Qgd2l0aCBhIGRlbGF5Ci0gICAgLy8gYW5kIGlmIHRoZSBmdW5j
dGlvbiBrZWVwcyBnZXR0aW5nIGNhbGxlZCwgdGhlIGRlbGF5IGdldHMgcmVzZXQuIFNpbmNlIGBk
ZWJvdW5jZWAKLSAgICAvLyByZXR1cm5zIGEgUHJveHksIHlvdSBjYW4gY2FjaGUgaXQgYW5kIGNh
bGwgbXVsdGlwbGUgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgZGVsYXkuCi0KLSAgICAvLyBVc2U6
IG9iamVjdC5kZWJvdW5jZSgyMDApLmZvbygiQXJndW1lbnQgMSIsICJBcmd1bWVudCAyIikKLSAg
ICAvLyBOb3RlOiBUaGUgbGFzdCBjYWxsJ3MgYXJndW1lbnRzIGdldCB1c2VkIGZvciB0aGUgZGVs
YXllZCBjYWxsLgotCi0gICAgY29uc3QgZGVib3VuY2VUaW1lb3V0U3ltYm9sID0gU3ltYm9sKCJk
ZWJvdW5jZS10aW1lb3V0Iik7Ci0gICAgY29uc3QgZGVib3VuY2VTb29uUHJveHlTeW1ib2wgPSBT
eW1ib2woImRlYm91bmNlLXNvb24tcHJveHkiKTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShPYmplY3QucHJvdG90eXBlLCAic29vbiIsCi0gICAgewotICAgICAgICBnZXQoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXNbZGVib3VuY2VTb29uUHJveHlTeW1ib2xdKQotICAg
ICAgICAgICAgICAgIHRoaXNbZGVib3VuY2VTb29uUHJveHlTeW1ib2xdID0gdGhpcy5kZWJvdW5j
ZSgwKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzW2RlYm91bmNlU29vblByb3h5U3ltYm9sXTsK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5w
cm90b3R5cGUsICJkZWJvdW5jZSIsCi0gICAgewotICAgICAgICB2YWx1ZShkZWxheSkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsYXkgPj0gMCk7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBuZXcgUHJveHkodGhpcywgewotICAgICAgICAgICAgICAgIGdldCh0YXJnZXQs
IHByb3BlcnR5LCByZWNlaXZlcikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFy
Z3MpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbCA9IHRhcmdldFtw
cm9wZXJ0eV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Yg
b3JpZ2luYWwgPT09ICJmdW5jdGlvbiIpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
b3JpZ2luYWxbZGVib3VuY2VUaW1lb3V0U3ltYm9sXSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhclRpbWVvdXQob3JpZ2luYWxbZGVib3VuY2VUaW1lb3V0U3ltYm9sXSk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCBwZXJmb3JtV29yayA9ICgpID0+IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFtkZWJvdW5jZVRpbWVvdXRTeW1ib2xdID0gdW5k
ZWZpbmVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsLmFwcGx5KHRhcmdl
dCwgYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbFtkZWJvdW5jZVRpbWVvdXRTeW1ib2xdID0gc2V0VGltZW91dChwZXJm
b3JtV29yaywgZGVsYXkpOwotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCAiY2FuY2VsRGVib3VuY2UiLAotICAgIHsK
LSAgICAgICAgdmFsdWUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXNbZGVib3Vu
Y2VUaW1lb3V0U3ltYm9sXSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IGNsZWFyVGltZW91dCh0aGlzW2RlYm91bmNlVGltZW91dFN5bWJvbF0pOwotICAgICAgICAgICAg
dGhpc1tkZWJvdW5jZVRpbWVvdXRTeW1ib2xdID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAg
fSk7Ci0KLSAgICBjb25zdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVTeW1ib2wgPSBTeW1ib2woInBl
Zm9ybS1vbi1hbmltYXRpb24tZnJhbWUiKTsKLSAgICBjb25zdCByZXF1ZXN0QW5pbWF0aW9uRnJh
bWVQcm94eVN5bWJvbCA9IFN5bWJvbCgicGVyZm9ybS1vbi1hbmltYXRpb24tZnJhbWUtcHJveHki
KTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAib25OZXh0
RnJhbWUiLAotICAgIHsKLSAgICAgICAgZ2V0KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCF0aGlzW3JlcXVlc3RBbmltYXRpb25GcmFtZVByb3h5U3ltYm9sXSkgewotICAgICAgICAgICAg
ICAgIHRoaXNbcmVxdWVzdEFuaW1hdGlvbkZyYW1lUHJveHlTeW1ib2xdID0gbmV3IFByb3h5KHRo
aXMsIHsKLSAgICAgICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVy
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWwgPSB0YXJnZXRbcHJvcGVydHldOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBvcmlnaW5h
bCA9PT0gImZ1bmN0aW9uIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3Jp
Z2luYWxbcmVxdWVzdEFuaW1hdGlvbkZyYW1lU3ltYm9sXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBl
cmZvcm1Xb3JrID0gKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmln
aW5hbFtyZXF1ZXN0QW5pbWF0aW9uRnJhbWVTeW1ib2xdID0gdW5kZWZpbmVkOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbC5hcHBseSh0YXJnZXQsIGFyZ3MpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcmlnaW5hbFtyZXF1ZXN0QW5pbWF0aW9uRnJhbWVTeW1ib2xdID0gcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKHBlcmZvcm1Xb3JrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXNbcmVxdWVzdEFuaW1hdGlvbkZyYW1lUHJveHlTeW1ib2xdOwot
ICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB0aHJvdHRsZVRpbWVvdXRTeW1ib2wgPSBT
eW1ib2woInRocm90dGxlLXRpbWVvdXQiKTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShP
YmplY3QucHJvdG90eXBlLCAidGhyb3R0bGUiLAotICAgIHsKLSAgICAgICAgdmFsdWUoZGVsYXkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlbGF5ID49IDApOwotCi0g
ICAgICAgICAgICBsZXQgbGFzdEZpcmVUaW1lID0gTmFOOwotICAgICAgICAgICAgbGV0IG1vc3RS
ZWNlbnRBcmd1bWVudHMgPSBudWxsOwotCi0gICAgICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRo
aXMsIHsKLSAgICAgICAgICAgICAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZXQgb3JpZ2luYWwgPSB0YXJnZXRbcHJvcGVydHldOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG9yaWdpbmFsID09PSAiZnVuY3Rpb24i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vc3RSZWNlbnRBcmd1bWVudHMgPSBhcmdzOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwZXJmb3JtV29yaygpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0RmlyZVRpbWUgPSBEYXRlLm5vdygpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW3Rocm90dGxlVGltZW91dFN5bWJvbF0gPSB1
bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwuYXBwbHkodGFy
Z2V0LCBtb3N0UmVjZW50QXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGxhc3RGaXJlVGltZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtV29yaygpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgbGV0IHJlbWFpbmluZyA9IGRlbGF5IC0gKERhdGUubm93KCkgLSBsYXN0
RmlyZVRpbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwuY2FuY2VsVGhyb3R0bGUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtV29yaygpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcmlnaW5hbFt0aHJvdHRsZVRpbWVvdXRTeW1ib2xd
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW3Rocm90dGxlVGltZW91dFN5
bWJvbF0gPSBzZXRUaW1lb3V0KHBlcmZvcm1Xb3JrLCByZW1haW5pbmcpOwotICAgICAgICAgICAg
ICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBl
LCAiY2FuY2VsVGhyb3R0bGUiLAotICAgIHsKLSAgICAgICAgdmFsdWUoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIXRoaXNbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzW3Rocm90dGxlVGlt
ZW91dFN5bWJvbF0pOwotICAgICAgICAgICAgdGhpc1t0aHJvdHRsZVRpbWVvdXRTeW1ib2xdID0g
dW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgfSk7Ci19KSgpOwotCiBmdW5jdGlvbiBhcHBlbmRX
ZWJJbnNwZWN0b3JTb3VyY2VVUkwoc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaW5jbHVkZXMo
Ii8vIyBzb3VyY2VVUkwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAppbmRleCA0MGRkZjgzOTUxNThkNWRmOTU0NmNhNGJlZmQ4Nzc4NjhmMTUzMTNi
Li4zMzBiZmZlYTBmNzRmYzdhZmU3ZjYwMTM1Zjc3ZjRlMGFiMTk2MTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yNzUsMTEgKzI3NSwx
MyBAQAogCiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9QbGF0Zm9ybS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IkJhc2UvRGVib3VuY2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFz
ZS9EZWJ1Z2dhYmxlVHlwZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvSW5k
ZXhTZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpbmtlZExpc3QuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpc3RNdWx0aW1hcC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9UaHJvdHRsZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9
IkJhc2UvRE9NVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9F
dmVudExpc3RlbmVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAwNmEwZDg0YThhMzMwNDcyYWUwNGM3NTI5ZmQ5MmJh
YmQ5NzczN2Y1Li4zMzYxNDQ3NGNhODMxNmNhNWZkMGQwOGIyYTU3ZDk0ZTM1ODU2M2MwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0zNywx
MSArMzcsMTMgQEAKIAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1dlYkluc3BlY3Rvci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvUGxhdGZvcm0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJCYXNlL0RlYm91bmNlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvRGVidWdnYWJsZVR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJC
YXNlL0luZGV4U2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaW5rZWRM
aXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaXN0TXVsdGltYXAuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL09iamVjdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvVGhyb3R0bGVyLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3Jp
cHQgc3JjPSJUZXN0L1Rlc3RIYXJuZXNzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
VGVzdC9Gcm9udGVuZFRlc3RIYXJuZXNzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JlemllckVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JlemllckVkaXRvci5qcwpp
bmRleCAxMzIyODU5YTYwODE2ZmJhZjIwMGIzMTEzYjI3MWM2ZTg0OWQ5ODI4Li4zOTVhMTViZGNk
NTk3ZjQ2NDg2Yjk5MzRmNDhmYWU1MjkxZjBiNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CZXppZXJFZGl0b3IuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQmV6aWVyRWRpdG9yLmpzCkBAIC0x
MDEsNyArMTAxLDcgQEAgV0kuQmV6aWVyRWRpdG9yID0gY2xhc3MgQmV6aWVyRWRpdG9yIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heCkpCiAgICAgICAgICAgICAg
ICAgdGhpc1trZXldLm1heCA9IG1heDsKIAotICAgICAgICAgICAgdGhpc1trZXldLmFkZEV2ZW50
TGlzdGVuZXIoImlucHV0IiwgdGhpcy5kZWJvdW5jZSgyNTApLl9oYW5kbGVOdW1iZXJJbnB1dElu
cHV0KTsKKyAgICAgICAgICAgIHRoaXNba2V5XS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRo
aXMuX2hhbmRsZU51bWJlcklucHV0SW5wdXQuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICB0aGlz
W2tleV0uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hhbmRsZU51bWJlcklucHV0
S2V5ZG93bi5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCmlu
ZGV4IDM1ZTdiNTY1MmU2NmEwNWRhNGIyZjdiYzdiMTQ5ODMzMDVjNGUzYWMuLjZhMGUzN2IzMTg3
NjdmZjBiY2E4YjA5NTYyZGFhZjhmMjJmMzhhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCkBA
IC05MSw2ICs5MSwxMCBAQCBXSS5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2Vy
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51
bGw7CiAKICAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zID0g
W107CisKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlID0gbmV3IERlYm91bmNlcigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50UmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgLy8gUHVibGlj
CkBAIC00NjksMTMgKzQ3Myw2IEBAIFdJLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJy
b3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfZGlzcGF0Y2hD
dXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQoKQotICAgIHsKLSAgICAgICAg
dGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQuY2Fu
Y2VsRGVib3VuY2UoKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
KTsKLSAgICB9Ci0KICAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJy
ZW50Q29udGVudFZpZXcpCkBAIC00OTIsNyArNDg5LDcgQEAgV0kuQ29udGVudEJyb3dzZXIgPSBj
bGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uQmFyLm5lZWRzTGF5b3V0KCk7CiAKLSAgICAgICAgdGhpcy5zb29uLl9kaXNwYXRjaEN1
cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudCgpOworICAgICAgICB0aGlzLl9k
aXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UuZGVsYXlGb3JUaW1lKDAp
OwogICAgIH0KIAogICAgIF9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZShldmVudCkKQEAgLTUwNCw3ICs1MDEsNyBAQCBXSS5Db250ZW50QnJvd3NlciA9
IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAoZXZlbnQu
dGFyZ2V0LnBhcmVudENvbnRhaW5lciAhPT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5zb29uLl9kaXNwYXRjaEN1cnJlbnRS
ZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudCgpOworICAgICAgICB0aGlzLl9kaXNwYXRj
aEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UuZGVsYXlGb3JUaW1lKDApOwogICAg
IH0KIAogICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQpCkBAIC01MjIsNyAr
NTE5LDcgQEAgV0kuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRz
IFdJLlZpZXcKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250
ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogCi0gICAgICAg
IHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7
CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZS5mb3JjZSgpOwogICAgIH0KIAogICAgIF9jb250ZW50Vmlld05hdmlnYXRpb25JdGVtc0RpZENo
YW5nZShldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKaW5kZXggYTU0NjAyNjZlMzVkMjgxZTM2
ODE2MWJhZWU2MjhlZmYyY2YxOWYxNS4uYzI0NTVhNjYzZDU5NDIwYjU1ZTUzNzRhMmM1ZjEzY2Nk
MGUyYTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKQEAgLTQ4LDYgKzQ4LDEwIEBAIFdJLkRP
TVRyZWVVcGRhdGVyID0gZnVuY3Rpb24odHJlZU91dGxpbmUpCiAKICAgICAvLyBEdW1teSAiYXR0
cmlidXRlIiB0aGF0IGlzIHVzZWQgdG8gdHJhY2sgdGV4dENvbnRlbnQgY2hhbmdlcy4KICAgICB0
aGlzLl90ZXh0Q29udGVudEF0dHJpYnV0ZVN5bWJvbCA9IFN5bWJvbCgidGV4dC1jb250ZW50LWF0
dHJpYnV0ZSIpOworCisgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlciA9IG5l
dyBEZWJvdW5jZXIoKCkgPT4geworICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7
CisgICAgfSk7CiB9OwogCiBXSS5ET01UcmVlVXBkYXRlci5wcm90b3R5cGUgPSB7CkBAIC04MSwy
MSArODUsMjEgQEAgV0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9yZWNlbnRseU1vZGlmaWVkTm9kZXMuYWRkKG5vZGUpOwogCiAgICAgICAgIGlmICh0aGlzLl90
cmVlT3V0bGluZS5fdmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMub25OZXh0RnJhbWUuX3VwZGF0
ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNE
ZWJvdW5jZXIuZGVsYXlGb3JGcmFtZSgpOwogICAgICAgfSwKIAogICAgIF9ub2RlSW5zZXJ0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjZW50bHlJbnNlcnRlZE5v
ZGVzLnNldChldmVudC5kYXRhLm5vZGUsIHtwYXJlbnQ6IGV2ZW50LmRhdGEucGFyZW50fSk7CiAg
ICAgICAgIGlmICh0aGlzLl90cmVlT3V0bGluZS5fdmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMu
b25OZXh0RnJhbWUuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZU1vZGlmaWVkTm9kZXNEZWJvdW5jZXIuZGVsYXlGb3JGcmFtZSgpOwogICAgIH0sCiAKICAg
ICBfbm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVj
ZW50bHlEZWxldGVkTm9kZXMuc2V0KGV2ZW50LmRhdGEubm9kZSwge3BhcmVudDogZXZlbnQuZGF0
YS5wYXJlbnR9KTsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQotICAg
ICAgICAgICAgdGhpcy5vbk5leHRGcmFtZS5fdXBkYXRlTW9kaWZpZWROb2RlcygpOworICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7
CiAgICAgfSwKIAogICAgIF9jaGlsZE5vZGVDb3VudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggYzUzZGY0YWUzYTYzN2I0
NDVjN2JhMWM2MDAzMDk0ZjM3OWYzMjA0Yy4uMTM5ZTdmNjJiOTRiNzI5ZGZmNjA4M2ZkMjUwZjJh
YmMyY2Q0MDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC0z
MSw3ICszMSwxNCBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogCiAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJuYXZpZ2F0aW9uIik7CiAKLSAgICAgICAgdGhpcy5jb250ZW50
Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuc29vbi5fdXBkYXRl
Q29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNv
bnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKCgp
ID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2li
aWxpdHkoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eVNvb24gPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZGVsYXlG
b3JUaW1lKDApOworICAgICAgICB9OworCisgICAgICAgIHRoaXMuY29udGVudFZpZXcuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9ib3VuZFVwZGF0ZUNvbnRlbnRPdmVy
Zmxvd1NoYWRvd1Zpc2liaWxpdHlTb29uKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91
dGxpbmVHcm91cCA9IG5ldyBXSS5UcmVlT3V0bGluZUdyb3VwOwogICAgICAgICB0aGlzLl9jb250
ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSgpOwpAQCAtNDks
OCArNTYsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICAgICAgdGhpcy5fdG9w
T3ZlcmZsb3dTaGFkb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5PdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZSwgInRvcCIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdGhpcy5fYm91bmRVcGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNp
YmlsaXR5ID0gdGhpcy5zb29uLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5
OwotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRV
cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KTsKKyAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93
U2hhZG93VmlzaWJpbGl0eVNvb24pOwogCiAgICAgICAgIHRoaXMuX2ZpbHRlcnNTZXR0aW5nID0g
bmV3IFdJLlNldHRpbmcoaWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLWZpbHRlcnMi
LCB7fSk7CiAgICAgICAgIHRoaXMuX2ZpbHRlckJhci5maWx0ZXJzID0gdGhpcy5fZmlsdGVyc1Nl
dHRpbmcudmFsdWU7CkBAIC03Nyw3ICs4Myw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAK
ICAgICBjbG9zZWQoKQogICAgIHsKLSAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIo
InJlc2l6ZSIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0
eSk7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9i
b3VuZFVwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlTb29uKTsKICAgICAgICAg
V0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICB9CiAK
QEAgLTI3Myw3ICsyNzksNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2
aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICBsZXQg
ZW1wdHlDb250ZW50UGxhY2Vob2xkZXJQYXJlbnRFbGVtZW50ID0gdHJlZU91dGxpbmUuZWxlbWVu
dC5wYXJlbnROb2RlOwogICAgICAgICBlbXB0eUNvbnRlbnRQbGFjZWhvbGRlclBhcmVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQoZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50KTsKIAotICAgICAg
ICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7CisgICAgICAg
IHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZm9y
Y2UoKTsKIAogICAgICAgICByZXR1cm4gZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50Owog
ICAgIH0KQEAgLTI4OSw3ICsyOTUsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAg
ICBlbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIHRoaXMu
X2VtcHR5Q29udGVudFBsYWNlaG9sZGVyRWxlbWVudHMuZGVsZXRlKHRyZWVPdXRsaW5lKTsKIAot
ICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5j
ZXIuZm9yY2UoKTsKICAgICB9CiAKICAgICB1cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlciht
ZXNzYWdlLCB0cmVlT3V0bGluZSkKQEAgLTM0NSw3ICszNTEsNyBAQCBXSS5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGVi
YXJQYW5lbAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY2hlY2tGb3JFbXB0eUZpbHRlclJl
c3VsdHMoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJp
bGl0eSgpOworICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmls
aXR5RGVib3VuY2VyLmZvcmNlKCk7CiAgICAgfQogCiAgICAgcmVzZXRGaWx0ZXIoKQpAQCAtNDY4
LDcgKzQ3NCw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgewogICAgICAgICBzdXBl
ci5zaG93bigpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zp
c2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93Vmlz
aWJpbGl0eURlYm91bmNlci5mb3JjZSgpOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZApAQCAt
NTAzLDggKzUwOSw2IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIGlmICghdGhp
cy52aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNv
bnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkuY2FuY2VsRGVib3VuY2UoKTsKLQogICAgICAg
ICBsZXQgc2Nyb2xsSGVpZ2h0ID0gdGhpcy5jb250ZW50Vmlldy5lbGVtZW50LnNjcm9sbEhlaWdo
dDsKICAgICAgICAgbGV0IG9mZnNldEhlaWdodCA9IHRoaXMuY29udGVudFZpZXcuZWxlbWVudC5v
ZmZzZXRIZWlnaHQ7CiAKQEAgLTYwNyw3ICs2MTEsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5l
bAogICAgICAgICB0aGlzLl9jaGVja0ZvckVtcHR5RmlsdGVyUmVzdWx0cygpOwogCiAgICAgICAg
IGlmICh0aGlzLnZpc2libGUpCi0gICAgICAgICAgICB0aGlzLnNvb24uX3VwZGF0ZUNvbnRlbnRP
dmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRl
bnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogCiAg
ICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKQogICAgICAgICAgICAgdGhpcy5fY2hlY2tFbGVtZW50
c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUoW3RyZWVFbGVtZW50XSk7CkBAIC02MTUsNyArNjE5
LDcgQEAgV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXSS5TaWRlYmFyUGFuZWwKIAogICAgIF90cmVlRWxlbWVudERpc2Nsb3N1
cmVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLnNvb24uX3VwZGF0ZUNvbnRl
bnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlci5kZWxheUZvclRpbWUoMCk7CiAgICAg
fQogCiAgICAgX2NoZWNrRm9yU3RhbGVSZXNvdXJjZXNJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZWNvcmRpbmdDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29y
ZGluZ0NvbnRlbnRWaWV3LmpzCmluZGV4IGU4ZjdkYjEzOTdlZWE1MzBmZDlkMDM1ODJjYTdiN2U0
MTE0ZGFiMWEuLjEzN2M5NTc4ZjQ1MTI0MDI3NDczMmQxODQ1OGRhNTM2YzZmY2Q4NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29yZGlu
Z0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1JlY29yZGluZ0NvbnRlbnRWaWV3LmpzCkBAIC0zNSw3ICszNSwxMiBAQCBXSS5SZWNv
cmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFJlY29yZGluZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZXcKICAgICAgICAgdGhpcy5fYWN0aW9uID0gbnVsbDsKICAgICAgICAgdGhpcy5f
c25hcHNob3RzID0gW107CiAgICAgICAgIHRoaXMuX2luaXRpYWxDb250ZW50ID0gbnVsbDsKLSAg
ICAgICAgdGhpcy5fdGhyb3R0bGVyID0gdGhpcy50aHJvdHRsZSgyMDApOworICAgICAgICB0aGlz
Ll9nZW5lcmF0ZUNvbnRlbnRUaHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVyKCgpID0+IHsKKyAgICAg
ICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdJLlJlY29yZGluZy5U
eXBlLkNhbnZhczJEKQorICAgICAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudENhbnZh
czJEKHRoaXMuX2luZGV4KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucmVwcmVzZW50ZWRP
YmplY3QudHlwZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzQml0bWFwUmVuZGVyZXIgfHwg
dGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5SZWNvcmRpbmcuVHlwZS5DYW52YXNX
ZWJHTCkKKyAgICAgICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZUNvbnRlbnRGcm9tU25hcHNob3Qo
dGhpcy5faW5kZXgpOworICAgICAgICB9LCAyMDApOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJyZWNvcmRpbmciLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUpOwog
CkBAIC0xMDMsMTAgKzEwOCw3IEBAIFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgUmVj
b3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHRoaXMu
X3VwZGF0ZVNsaWRlclZhbHVlKCk7CiAKLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QudHlwZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzMkQpCi0gICAgICAgICAgICB0aGlz
Ll90aHJvdHRsZXIuX2dlbmVyYXRlQ29udGVudENhbnZhczJEKGluZGV4KTsKLSAgICAgICAgZWxz
ZSBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5SZWNvcmRpbmcuVHlwZS5D
YW52YXNCaXRtYXBSZW5kZXJlciB8fCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdJ
LlJlY29yZGluZy5UeXBlLkNhbnZhc1dlYkdMKQotICAgICAgICAgICAgdGhpcy5fdGhyb3R0bGVy
Ll9nZW5lcmF0ZUNvbnRlbnRGcm9tU25hcHNob3QoaW5kZXgpOworICAgICAgICB0aGlzLl9nZW5l
cmF0ZUNvbnRlbnRUaHJvdHRsZXIuZmlyZSgpOwogCiAgICAgICAgIHRoaXMuX2FjdGlvbiA9IHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuYWN0aW9uc1t0aGlzLl9pbmRleF07CiAKQEAgLTEzMSw4ICsx
MzMsNyBAQCBXSS5SZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFJlY29yZGluZ0NvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICB7CiAgICAgICAgIHN1cGVyLmhpZGRlbigp
OwogCi0gICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudENhbnZhczJELmNhbmNlbFRocm90dGxl
KCk7Ci0gICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudEZyb21TbmFwc2hvdC5jYW5jZWxUaHJv
dHRsZSgpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZUNvbnRlbnRUaHJvdHRsZXIuY2FuY2VsKCk7
CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFp
bHNTaWRlYmFyUGFuZWwuanMKaW5kZXggNGNmOWI4YWM1YTk5MTg5YjE1YjllMGZlZGJlZmIzN2Ux
OWYyNGNkYy4uNzU5ZTVkNjU4NzRiOTljYjJlNzk0ODc5OWMyZGIyYjVmYWU5MjlhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMjYzLDggKzI2
Myw2IEBAIFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlRGV0
YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRlCiAKICAgICBfcmVmcmVzaFJlbGF0ZWRSZXNv
dXJjZXNTZWN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVzb3Vy
Y2VzU2VjdGlvbi5jYW5jZWxUaHJvdHRsZSgpOwotCiAgICAgICAgIC8vIEhpZGUgdGhlIHNlY3Rp
b24gaWYgd2UgZG9uJ3QgaGF2ZSBhbnl0aGluZyB0byBzaG93LgogICAgICAgICBsZXQgZ3JvdXBz
ID0gdGhpcy5fbG9jYXRpb25TZWN0aW9uLmdyb3VwczsKICAgICAgICAgbGV0IGlzU2VjdGlvblZp
c2libGUgPSBncm91cHMuaW5jbHVkZXModGhpcy5fcmVsYXRlZFJlc291cmNlc0dyb3VwKTsKQEAg
LTYwNyw4ICs2MDUsMTEgQEAgV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3Mg
UmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGUKIAogICAgIF9hcHBseVJl
c291cmNlRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90aHJvdHRs
ZXIpCi0gICAgICAgICAgICB0aGlzLl90aHJvdHRsZXIgPSB0aGlzLnRocm90dGxlKDI1MCk7Cisg
ICAgICAgIGlmICghdGhpcy5fcmVmcmVzaFJlbGF0ZWRSZXNvdXJjZXNTZWN0aW9uVGhyb3R0bGVy
KSB7CisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb25UaHJv
dHRsZXIgPSBuZXcgVGhyb3R0bGVyKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZWZy
ZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb24oKTsKKyAgICAgICAgICAgIH0sIDI1MCk7CisgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291
cmNlLkV2ZW50LlVSTERpZENoYW5nZSwgdGhpcy5fcmVmcmVzaFVSTCwgdGhpcyk7CiAgICAgICAg
IHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuTUlNRVR5
cGVEaWRDaGFuZ2UsIHRoaXMuX3JlZnJlc2hNSU1FVHlwZSwgdGhpcyk7CkBAIC02MjAsNyArNjIx
LDkgQEAgV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VEZXRh
aWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGUKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRk
RXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5NZXRyaWNzRGlkQ2hhbmdlLCB0aGlzLl9y
ZWZyZXNoUmVxdWVzdEFuZFJlc3BvbnNlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5TaXplRGlkQ2hhbmdlLCB0aGlzLl9y
ZWZyZXNoRGVjb2RlZFNpemUsIHRoaXMpOwogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVu
dExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcy5f
cmVmcmVzaFRyYW5zZmVyU2l6ZSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2
ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuSW5pdGlhdGVkUmVzb3VyY2VzRGlkQ2hhbmdl
LCB0aGlzLl90aHJvdHRsZXIuX3JlZnJlc2hSZWxhdGVkUmVzb3VyY2VzU2VjdGlvbiwgdGhpcyk7
CisgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZl
bnQuSW5pdGlhdGVkUmVzb3VyY2VzRGlkQ2hhbmdlLCAoKSA9PiB7CisgICAgICAgICAgICB0aGlz
Ll9yZWZyZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb25UaHJvdHRsZXIuZmlyZSgpOworICAgICAg
ICB9LCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9uZWVkc1RvUmVtb3ZlUmVzb3VyY2VFdmVudExp
c3RlbmVycyA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRW
aWV3LmpzCmluZGV4IDE2Nzk2OTA5NWRlZmI3ZWU1NjkyNDlmN2U3YmE1ZDc0NTBmMmY4M2YuLjI4
M2VjNDk5MDc3MTdjODVkZGFkYmJjMGUyYTVkY2IyOWFhZTA1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
aGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMKQEAgLTMxLDYgKzMxLDEwIEBAIFdJLlNoYWRlclBy
b2dyYW1Db250ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWCiAKICAgICAgICAgc3VwZXIoc2hhZGVyUHJvZ3JhbSk7CiAKKyAgICAgICAg
bGV0IGNvbnRlbnREaWRDaGFuZ2VEZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChldmVudCkgPT4g
eworICAgICAgICAgICAgdGhpcy5fY29udGVudERpZENoYW5nZShldmVudCk7CisgICAgICAgIH0p
OworCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZXItcHJvZ3JhbSIp
OwogCiAgICAgICAgIGxldCBjcmVhdGVFZGl0b3IgPSAoc2hhZGVyVHlwZSkgPT4gewpAQCAtMzgs
NyArNDIsOSBAQCBXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9n
cmFtQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICAgICAgdGV4dEVkaXRv
ci5yZWFkT25seSA9IGZhbHNlOwogICAgICAgICAgICAgdGV4dEVkaXRvci5hZGRFdmVudExpc3Rl
bmVyKFdJLlRleHRFZGl0b3IuRXZlbnQuRm9jdXNlZCwgdGhpcy5fZWRpdG9yRm9jdXNlZCwgdGhp
cyk7CiAgICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRv
ci5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2Vh
cmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2
ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLmRl
Ym91bmNlKDI1MCkuX2NvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgdGV4dEVk
aXRvci5hZGRFdmVudExpc3RlbmVyKFdJLlRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZENoYW5n
ZSwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgY29udGVudERpZENoYW5nZURlYm91bmNl
ci5kZWxheUZvclRpbWUoMjUwLCBldmVudCk7CisgICAgICAgICAgICB9LCB0aGlzKTsKICAgICAg
ICAgICAgIHRleHRFZGl0b3IuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZXIiKTsKIAogICAg
ICAgICAgICAgbGV0IHNoYWRlclR5cGVDb250YWluZXIgPSB0ZXh0RWRpdG9yLmVsZW1lbnQuaW5z
ZXJ0QWRqYWNlbnRFbGVtZW50KCJhZnRlcmJlZ2luIiwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU3ByaW5nRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByaW5nRWRpdG9yLmpzCmluZGV4IDYzZGFmN2E1MmNmZDliNjcyY2I2OTJlMGIx
MjU2YjU1NjAyNDEwNzUuLmQwNjBmZDVlZDQwZjEwMmE2NTJmOTQwZjg4ZjEwYmViM2NhNGU0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nw
cmluZ0VkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TcHJpbmdFZGl0b3IuanMKQEAgLTI5LDE1ICsyOSwxOSBAQCBXSS5TcHJpbmdFZGl0b3Ig
PSBjbGFzcyBTcHJpbmdFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1
cGVyKCk7CiAKKyAgICAgICAgbGV0IGJvdW5kUmVzZXRQcmV2aWV3QW5pbWF0aW9uID0gKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICB0aGlzLl9yZXNldFByZXZpZXdBbmltYXRpb24oZXZlbnQpOwor
ICAgICAgICB9OworCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzcHJpbmct
ZWRpdG9yIik7CiAKICAgICAgICAgdGhpcy5fcHJldmlld0NvbnRhaW5lciA9IHRoaXMuX2VsZW1l
bnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcHJpbmctcHJldmlldyIpOwogICAgICAgICB0aGlzLl9w
cmV2aWV3Q29udGFpbmVyLnRpdGxlID0gV0kuVUlTdHJpbmcoIlJlc3RhcnQgYW5pbWF0aW9uIik7
Ci0gICAgICAgIHRoaXMuX3ByZXZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5fcmVzZXRQcmV2aWV3QW5pbWF0aW9uLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9wcmV2aWV3Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGJvdW5k
UmVzZXRQcmV2aWV3QW5pbWF0aW9uKTsKIAogICAgICAgICB0aGlzLl9wcmV2aWV3RWxlbWVudCA9
IHRoaXMuX3ByZXZpZXdDb250YWluZXIuY3JlYXRlQ2hpbGQoImRpdiIpOwotICAgICAgICB0aGlz
Ll9wcmV2aWV3RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcy5k
ZWJvdW5jZSg1MDApLl9yZXNldFByZXZpZXdBbmltYXRpb24pOworICAgICAgICB0aGlzLl9wcmV2
aWV3RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgYm91bmRSZXNldFBy
ZXZpZXdBbmltYXRpb24pOwogCiAgICAgICAgIHRoaXMuX3RpbWluZ0NvbnRhaW5lciA9IHRoaXMu
X2VsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcHJpbmctdGltaW5nIik7CiAKQEAgLTIxMyw3
ICsyMTcsNyBAQCBXSS5TcHJpbmdFZGl0b3IgPSBjbGFzcyBTcHJpbmdFZGl0b3IgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKCFldmVudCkKICAgICAgICAgICAgIHRoaXMuX3RpbWluZ0Nv
bnRhaW5lci5kYXRhc2V0LmR1cmF0aW9uID0gIjAiOwogCi0gICAgICAgIHRoaXMuZGVib3VuY2Uo
NTAwKS5fdXBkYXRlUHJldmlld0FuaW1hdGlvbihldmVudCk7CisgICAgICAgIHRoaXMuX3VwZGF0
ZVByZXZpZXdBbmltYXRpb24oZXZlbnQpOwogICAgIH0KIAogICAgIF91cGRhdGVQcmV2aWV3QW5p
bWF0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVudC5qcwppbmRleCBkM2I4OTI5NDM1Mjc3NjYxMjliMjQ0
YWZmYjlhOTY5ZTAwMjZhMDJhLi5lZmY5OGU4ZmJlZTdmZmNkNjM4YTViMzFmMmY4OWRjNjFiZjMz
YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlRWxlbWVudC5qcwpAQCAtMTY1LDEwICsxNjUsMTIgQEAgV0kuVHJlZUVsZW1l
bnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhp
cy5fY2hpbGRyZW5MaXN0Tm9kZS5oaWRkZW4gPSB0aGlzLl9oaWRkZW47CiAKICAgICAgICAgaWYg
KHRoaXMudHJlZU91dGxpbmUpIHsKLSAgICAgICAgICAgIGxldCBmb2N1c2VkVHJlZUVsZW1lbnQg
PSBudWxsOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9oaWRkZW4gJiYgdGhpcy5zZWxlY3RlZCkK
LSAgICAgICAgICAgICAgICBmb2N1c2VkVHJlZUVsZW1lbnQgPSB0aGlzOwotICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRy
ZWVFbGVtZW50KTsKKyAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnZpcnR1YWxpemVk
KSB7CisgICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRUcmVlRWxlbWVudCA9IG51bGw7CisgICAg
ICAgICAgICAgICAgaWYgKCF0aGlzLl9oaWRkZW4gJiYgdGhpcy5zZWxlY3RlZCkKKyAgICAgICAg
ICAgICAgICAgICAgZm9jdXNlZFRyZWVFbGVtZW50ID0gdGhpczsKKyAgICAgICAgICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZGVsYXlG
b3JUaW1lKDAsIGZvY3VzZWRUcmVlRWxlbWVudCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRyZWVPdXRs
aW5lLkV2ZW50LkVsZW1lbnRWaXNpYmlsaXR5RGlkQ2hhbmdlLCB7ZWxlbWVudDogdGhpc30pOwog
ICAgICAgICB9CkBAIC0yMDMsNyArMjA1LDEzIEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5l
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMub25OZXh0RnJhbWUuX2ZpcmVE
aWRDaGFuZ2UoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maXJlRGlkQ2hhbmdlRGVib3VuY2VyKSB7
CisgICAgICAgICAgICB0aGlzLl9maXJlRGlkQ2hhbmdlRGVib3VuY2VyID0gbmV3IERlYm91bmNl
cigoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5fZmlyZURpZENoYW5nZSgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9maXJlRGlkQ2hhbmdlRGVib3Vu
Y2VyLmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9CiAKICAgICBfc2V0TGlzdEl0ZW1Ob2RlQ29udGVu
dCgpCkBAIC0yNjEsOCArMjY5LDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Ll9jaGlsZHJl
bkxpc3ROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLCB0aGlzLl9saXN0
SXRlbU5vZGUubmV4dFNpYmxpbmcpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMudHJl
ZU91dGxpbmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24udXBkYXRlVmlydHVh
bGl6ZWRFbGVtZW50cygpOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRy
ZWVPdXRsaW5lLnZpcnR1YWxpemVkKQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRh
dGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwKTsKIAogICAgICAg
ICBpZiAodGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CkBAIC0yNzks
OCArMjg3LDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSAmJiB0aGlzLl9jaGls
ZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUpCiAgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSk7CiAKLSAg
ICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnNvb24udXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cygpOworICAgICAgICBpZiAodGhpcy50cmVl
T3V0bGluZSAmJiB0aGlzLnRyZWVPdXRsaW5lLnZpcnR1YWxpemVkKQorICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9y
VGltZSgwKTsKICAgICB9CiAKICAgICBzdGF0aWMgdHJlZUVsZW1lbnRUb2dnbGVkKGV2ZW50KQpA
QCAtMzQ2LDggKzM1NCw4IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKHRoaXMub25jb2xsYXBzZSkKICAgICAgICAgICAg
IHRoaXMub25jb2xsYXBzZSh0aGlzKTsKIAotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkg
ewotICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxl
bWVudHModGhpcyk7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91
dGxpbmUudmlydHVhbGl6ZWQpIHsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRl
VmlydHVhbGl6ZWRFbGVtZW50c0RlYm91bmNlci5kZWxheUZvclRpbWUoMCwgdGhpcyk7CiAKICAg
ICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRy
ZWVPdXRsaW5lLkV2ZW50LkVsZW1lbnREaXNjbG9zdXJlRGlkQ2hhbmdlZCwge2VsZW1lbnQ6IHRo
aXN9KTsKICAgICAgICAgfQpAQCAtNDEzLDggKzQyMSw4IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xh
c3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKHRoaXMub25leHBh
bmQpCiAgICAgICAgICAgICB0aGlzLm9uZXhwYW5kKHRoaXMpOwogCi0gICAgICAgIGlmICh0aGlz
LnRyZWVPdXRsaW5lKSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24udXBkYXRl
VmlydHVhbGl6ZWRFbGVtZW50cyh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUg
JiYgdGhpcy50cmVlT3V0bGluZS52aXJ0dWFsaXplZCkgeworICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgw
LCB0aGlzKTsKIAogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuRWxlbWVudERpc2Nsb3N1cmVEaWRDaGFuZ2Vk
LCB7ZWxlbWVudDogdGhpc30pOwogICAgICAgICB9CkBAIC00NjYsOCArNDc0LDggQEAgV0kuVHJl
ZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAg
IC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIG9ucmV2ZWFsLCBhcyBzb21lIHN1YmNsYXNz
ZXMgd2lsbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkIGFuZAogICAgICAgICAvLyB3ZSBzaG91bGQg
dXBkYXRlIHRoZSB2aXNpYmxlIGVsZW1lbnRzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHNjcm9sbC4K
LSAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHModGhpcyk7CisgICAgICAgIGlmICh0aGlzLnRy
ZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUudmlydHVhbGl6ZWQpCisgICAgICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZm9yY2Uo
dGhpcyk7CiAKICAgICAgICAgaWYgKHRoaXMub25yZXZlYWwpCiAgICAgICAgICAgICB0aGlzLm9u
cmV2ZWFsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCA5ZjIxYTJjNTVhNzhlMTI2NzNiZjQ5
ZDk1NzBlYzVhMDQ4NWY2YTliLi5mZTU3Yzc4NWVjMmY2N2JmODM0MTdmM2Y5Y2IxYjExOTgxYzMy
MjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpAQCAtNjIsNiArNjIsNyBAQCBXSS5UcmVlT3V0bGluZSA9
IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Byb2Nl
c3NpbmdTZWxlY3Rpb25DaGFuZ2UgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fc3VwcHJlc3NOZXh0
U2VsZWN0aW9uRGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKIAorICAgICAgICB0aGlzLl92aXJ0dWFs
aXplZERlYm91bmNlciA9IG51bGw7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkVmlzaWJsZVRy
ZWVFbGVtZW50cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkQXR0YWNoZWRUcmVl
RWxlbWVudHMgPSBudWxsOwogICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFNjcm9sbENvbnRhaW5l
ciA9IG51bGw7CkBAIC02ODgsNiArNjg5LDExIEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJl
ZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFpc05hTih0cmVlSXRlbUhlaWdodCkpOwogCisgICAgICAgIGxldCBib3VuZFVwZGF0ZVZpcnR1
YWxpemVkRWxlbWVudHMgPSAoZm9jdXNlZFRyZWVFbGVtZW50KSA9PiB7CisgICAgICAgICAgICB0
aGlzLl91cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKGZvY3VzZWRUcmVlRWxlbWVudCk7CisgICAg
ICAgIH07CisKKyAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWREZWJvdW5jZXIgPSBuZXcgRGVib3Vu
Y2VyKGJvdW5kVXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cyk7CiAgICAgICAgIHRoaXMuX3ZpcnR1
YWxpemVkVmlzaWJsZVRyZWVFbGVtZW50cyA9IG5ldyBTZXQ7CiAgICAgICAgIHRoaXMuX3ZpcnR1
YWxpemVkQXR0YWNoZWRUcmVlRWxlbWVudHMgPSBuZXcgU2V0OwogICAgICAgICB0aGlzLl92aXJ0
dWFsaXplZFNjcm9sbENvbnRhaW5lciA9IHNjcm9sbENvbnRhaW5lcjsKQEAgLTY5NSwxMDQgKzcw
MSwxNSBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkVG9wU3BhY2VyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAKLSAgICAgICAgbGV0IHRocm90dGxlciA9
IHRoaXMudGhyb3R0bGUoMTAwMCAvIDE2KTsKKyAgICAgICAgbGV0IHRocm90dGxlciA9IG5ldyBU
aHJvdHRsZXIoYm91bmRVcGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzLCAxMDAwIC8gMTYpOwogICAg
ICAgICB0aGlzLl92aXJ0dWFsaXplZFNjcm9sbENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJz
Y3JvbGwiLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIHRocm90dGxlci51cGRhdGVWaXJ0dWFs
aXplZEVsZW1lbnRzKCk7CisgICAgICAgICAgICB0aHJvdHRsZXIuZmlyZSgpOwogICAgICAgICB9
KTsKICAgICB9CiAKLSAgICB1cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKGZvY3VzZWRUcmVlRWxl
bWVudCkKKyAgICBnZXQgdXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50c0RlYm91bmNlcigpCiAgICAg
ewotICAgICAgICBpZiAoIXRoaXMudmlydHVhbGl6ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgZnVuY3Rpb24gd2FsayhwYXJlbnQsIGNhbGxiYWNrLCBjb3VudCA9IDApIHsKLSAg
ICAgICAgICAgIGxldCBzaG91bGRSZXR1cm4gPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAobGV0
IGNoaWxkIG9mIHBhcmVudC5jaGlsZHJlbikgewotICAgICAgICAgICAgICAgIGlmICghY2hpbGQu
cmV2ZWFsZWQoZmFsc2UpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgICAgIHNob3VsZFJldHVybiA9IGNhbGxiYWNrKGNoaWxkLCBjb3VudCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNob3VsZFJldHVybikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIGlmIChjaGlsZC5leHBh
bmRlZCkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gd2FsayhjaGlsZCwgY2Fs
bGJhY2ssIGNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAgY291bnQgPSByZXN1bHQuY291bnQ7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2hvdWxkUmV0dXJuKQotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHtjb3VudCwgc2hvdWxkUmV0dXJufTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGxldCB7bnVtYmVyVmlzaWJsZSwgZXh0cmFSb3dzLCBmaXJzdEl0ZW0sIGxhc3RJdGVt
fSA9IHRoaXMuX2NhbGN1bGF0ZVZpcnR1YWxpemVkVmFsdWVzKCk7Ci0KLSAgICAgICAgbGV0IHNo
b3VsZFNjcm9sbCA9IGZhbHNlOwotICAgICAgICBpZiAoZm9jdXNlZFRyZWVFbGVtZW50ICYmIGZv
Y3VzZWRUcmVlRWxlbWVudC5yZXZlYWxlZChmYWxzZSkpIHsKLSAgICAgICAgICAgIGxldCBpbmRl
eCA9IHdhbGsodGhpcywgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudCA9PT0gZm9jdXNlZFRy
ZWVFbGVtZW50KS5jb3VudDsKLSAgICAgICAgICAgIGlmIChpbmRleCA8IGZpcnN0SXRlbSkgewot
ICAgICAgICAgICAgICAgIGZpcnN0SXRlbSA9IGluZGV4IC0gZXh0cmFSb3dzOwotICAgICAgICAg
ICAgICAgIGxhc3RJdGVtID0gaW5kZXggKyBudW1iZXJWaXNpYmxlICsgZXh0cmFSb3dzOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA+IGxhc3RJdGVtKSB7Ci0gICAgICAgICAgICAgICAg
Zmlyc3RJdGVtID0gaW5kZXggLSBudW1iZXJWaXNpYmxlIC0gZXh0cmFSb3dzOwotICAgICAgICAg
ICAgICAgIGxhc3RJdGVtID0gaW5kZXggKyBleHRyYVJvd3M7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIC8vIE9ubHkgc2Nyb2xsIGlmIHRoZSBgZm9jdXNlZFRyZWVFbGVtZW50YCBpcyBv
dXRzaWRlIHRoZSB2aXNpYmxlIGl0ZW1zLCBub3QgaW5jbHVkaW5nCi0gICAgICAgICAgICAvLyB0
aGUgYWRkZWQgYnVmZmVyIGBleHRyYVJvd3NgLgotICAgICAgICAgICAgc2hvdWxkU2Nyb2xsID0g
KGluZGV4IDwgZmlyc3RJdGVtICsgZXh0cmFSb3dzKSB8fCAoaW5kZXggPiBsYXN0SXRlbSAtIGV4
dHJhUm93cyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChmaXJzdEl0ZW0g
PCBsYXN0SXRlbSk7Ci0KLSAgICAgICAgbGV0IHZpc2libGVUcmVlRWxlbWVudHMgPSBuZXcgU2V0
OwotICAgICAgICBsZXQgdHJlZUVsZW1lbnRzVG9BdHRhY2ggPSBuZXcgU2V0OwotICAgICAgICBs
ZXQgdHJlZUVsZW1lbnRzVG9EZXRhY2ggPSBuZXcgU2V0OwotICAgICAgICBsZXQgdG90YWxJdGVt
cyA9IHdhbGsodGhpcywgKHRyZWVFbGVtZW50LCBjb3VudCkgPT4gewotICAgICAgICAgICAgaWYg
KGNvdW50ID49IGZpcnN0SXRlbSAmJiBjb3VudCA8PSBsYXN0SXRlbSkgewotICAgICAgICAgICAg
ICAgIHRyZWVFbGVtZW50c1RvQXR0YWNoLmFkZCh0cmVlRWxlbWVudCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGNvdW50ID49IGZpcnN0SXRlbSArIGV4dHJhUm93cyAmJiBjb3VudCA8PSBsYXN0SXRl
bSAtIGV4dHJhUm93cykKLSAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRyZWVFbGVtZW50cy5h
ZGQodHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0cmVlRWxlbWVudC5lbGVt
ZW50LnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRzVG9EZXRhY2guYWRk
KHRyZWVFbGVtZW50KTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9KS5j
b3VudDsKLQotICAgICAgICAvLyBSZWRyYXcgaWYgd2UgYXJlIGFib3V0IHRvIHNjcm9sbC4KLSAg
ICAgICAgaWYgKCFzaG91bGRTY3JvbGwpIHsKLSAgICAgICAgICAgIC8vIFJlZHJhdyBpZiBhbGwg
b2YgdGhlIHByZXZpb3VzbHkgY2VudGVyZWQgYFdJLlRyZWVFbGVtZW50YCBhcmUgbm8gbG9uZ2Vy
IGNlbnRlcmVkLgotICAgICAgICAgICAgaWYgKHZpc2libGVUcmVlRWxlbWVudHMuaW50ZXJzZWN0
cyh0aGlzLl92aXJ0dWFsaXplZFZpc2libGVUcmVlRWxlbWVudHMpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gUmVkcmF3IGlmIHRoZXJlIGlzIGEgYFdJLlRyZWVFbGVtZW50YCB0aGF0IHNob3VsZCBi
ZSBzaG93biB0aGF0IGlzbid0IGF0dGFjaGVkLgotICAgICAgICAgICAgICAgIGlmICh2aXNpYmxl
VHJlZUVsZW1lbnRzLmlzU3Vic2V0T2YodGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVt
ZW50cykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkVmlzaWJsZVRyZWVFbGVtZW50cyA9IHZp
c2libGVUcmVlRWxlbWVudHM7Ci0gICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkQXR0YWNoZWRUcmVl
RWxlbWVudHMgPSB0cmVlRWxlbWVudHNUb0F0dGFjaDsKLQotICAgICAgICBmb3IgKGxldCB0cmVl
RWxlbWVudCBvZiB0cmVlRWxlbWVudHNUb0RldGFjaCkKLSAgICAgICAgICAgIHRyZWVFbGVtZW50
LmVsZW1lbnQucmVtb3ZlKCk7Ci0KLSAgICAgICAgZm9yIChsZXQgdHJlZUVsZW1lbnQgb2YgdHJl
ZUVsZW1lbnRzVG9BdHRhY2gpIHsKLSAgICAgICAgICAgIHRyZWVFbGVtZW50LnBhcmVudC5fY2hp
bGRyZW5MaXN0Tm9kZS5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudC5lbGVtZW50KTsKLSAgICAgICAg
ICAgIGlmICh0cmVlRWxlbWVudC5fY2hpbGRyZW5MaXN0Tm9kZSkKLSAgICAgICAgICAgICAgICB0
cmVlRWxlbWVudC5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuYXBwZW5kQ2hpbGQodHJlZUVsZW1l
bnQuX2NoaWxkcmVuTGlzdE5vZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdmlydHVh
bGl6ZWRUb3BTcGFjZXIuc3R5bGUuaGVpZ2h0ID0gKE1hdGgubWF4KGZpcnN0SXRlbSwgMCkgKiB0
aGlzLl92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0KSArICJweCI7Ci0gICAgICAgIGlmICh0aGlz
LmVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyAhPT0gdGhpcy5fdmlydHVhbGl6ZWRUb3BT
cGFjZXIpCi0gICAgICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
dGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIsIHRoaXMuZWxlbWVudCk7Ci0KLSAgICAgICAgdGhp
cy5fdmlydHVhbGl6ZWRCb3R0b21TcGFjZXIuc3R5bGUuaGVpZ2h0ID0gKE1hdGgubWF4KHRvdGFs
SXRlbXMgLSBsYXN0SXRlbSwgMCkgKiB0aGlzLl92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0KSAr
ICJweCI7Ci0gICAgICAgIGlmICh0aGlzLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nICE9PSB0
aGlzLl92aXJ0dWFsaXplZEJvdHRvbVNwYWNlcikKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5w
YXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl92aXJ0dWFsaXplZEJvdHRvbVNwYWNlciwgdGhp
cy5lbGVtZW50Lm5leHRFbGVtZW50U2libGluZyk7Ci0KLSAgICAgICAgaWYgKHNob3VsZFNjcm9s
bCkKLSAgICAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRv
cCA9IChmaXJzdEl0ZW0gKyBleHRyYVJvd3MpICogdGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRlbUhl
aWdodDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZpcnR1YWxpemVkRGVib3VuY2VyOwogICAgIH0K
IAogICAgIC8vIFNlbGVjdGlvbkNvbnRyb2xsZXIgZGVsZWdhdGUKQEAgLTk5MCw2ICs5MDcsOTkg
QEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICB9OwogICAgIH0KIAorICAgIF91cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKGZvY3Vz
ZWRUcmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMudmlydHVh
bGl6ZWQpOworCisgICAgICAgIGZ1bmN0aW9uIHdhbGsocGFyZW50LCBjYWxsYmFjaywgY291bnQg
PSAwKSB7CisgICAgICAgICAgICBsZXQgc2hvdWxkUmV0dXJuID0gZmFsc2U7CisgICAgICAgICAg
ICBmb3IgKGxldCBjaGlsZCBvZiBwYXJlbnQuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIWNoaWxkLnJldmVhbGVkKGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBzaG91bGRSZXR1cm4gPSBjYWxsYmFjayhjaGlsZCwgY291bnQp
OworICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZXR1cm4pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpZiAo
Y2hpbGQuZXhwYW5kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHdhbGso
Y2hpbGQsIGNhbGxiYWNrLCBjb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gcmVz
dWx0LmNvdW50OworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNob3VsZFJldHVybikK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB7Y291bnQsIHNob3VsZFJldHVybn07CisgICAg
ICAgIH0KKworICAgICAgICBsZXQge251bWJlclZpc2libGUsIGV4dHJhUm93cywgZmlyc3RJdGVt
LCBsYXN0SXRlbX0gPSB0aGlzLl9jYWxjdWxhdGVWaXJ0dWFsaXplZFZhbHVlcygpOworCisgICAg
ICAgIGxldCBzaG91bGRTY3JvbGwgPSBmYWxzZTsKKyAgICAgICAgaWYgKGZvY3VzZWRUcmVlRWxl
bWVudCAmJiBmb2N1c2VkVHJlZUVsZW1lbnQucmV2ZWFsZWQoZmFsc2UpKSB7CisgICAgICAgICAg
ICBsZXQgaW5kZXggPSB3YWxrKHRoaXMsICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQgPT09
IGZvY3VzZWRUcmVlRWxlbWVudCkuY291bnQ7CisgICAgICAgICAgICBpZiAoaW5kZXggPCBmaXJz
dEl0ZW0pIHsKKyAgICAgICAgICAgICAgICBmaXJzdEl0ZW0gPSBpbmRleCAtIGV4dHJhUm93czsK
KyAgICAgICAgICAgICAgICBsYXN0SXRlbSA9IGluZGV4ICsgbnVtYmVyVmlzaWJsZSArIGV4dHJh
Um93czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPiBsYXN0SXRlbSkgeworICAgICAg
ICAgICAgICAgIGZpcnN0SXRlbSA9IGluZGV4IC0gbnVtYmVyVmlzaWJsZSAtIGV4dHJhUm93czsK
KyAgICAgICAgICAgICAgICBsYXN0SXRlbSA9IGluZGV4ICsgZXh0cmFSb3dzOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBPbmx5IHNjcm9sbCBpZiB0aGUgYGZvY3VzZWRUcmVlRWxl
bWVudGAgaXMgb3V0c2lkZSB0aGUgdmlzaWJsZSBpdGVtcywgbm90IGluY2x1ZGluZworICAgICAg
ICAgICAgLy8gdGhlIGFkZGVkIGJ1ZmZlciBgZXh0cmFSb3dzYC4KKyAgICAgICAgICAgIHNob3Vs
ZFNjcm9sbCA9IChpbmRleCA8IGZpcnN0SXRlbSArIGV4dHJhUm93cykgfHwgKGluZGV4ID4gbGFz
dEl0ZW0gLSBleHRyYVJvd3MpOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
Zmlyc3RJdGVtIDwgbGFzdEl0ZW0pOworCisgICAgICAgIGxldCB2aXNpYmxlVHJlZUVsZW1lbnRz
ID0gbmV3IFNldDsKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50c1RvQXR0YWNoID0gbmV3IFNldDsK
KyAgICAgICAgbGV0IHRyZWVFbGVtZW50c1RvRGV0YWNoID0gbmV3IFNldDsKKyAgICAgICAgbGV0
IHRvdGFsSXRlbXMgPSB3YWxrKHRoaXMsICh0cmVlRWxlbWVudCwgY291bnQpID0+IHsKKyAgICAg
ICAgICAgIGlmIChjb3VudCA+PSBmaXJzdEl0ZW0gJiYgY291bnQgPD0gbGFzdEl0ZW0pIHsKKyAg
ICAgICAgICAgICAgICB0cmVlRWxlbWVudHNUb0F0dGFjaC5hZGQodHJlZUVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIGlmIChjb3VudCA+PSBmaXJzdEl0ZW0gKyBleHRyYVJvd3MgJiYgY291bnQg
PD0gbGFzdEl0ZW0gLSBleHRyYVJvd3MpCisgICAgICAgICAgICAgICAgICAgIHZpc2libGVUcmVl
RWxlbWVudHMuYWRkKHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJlZUVs
ZW1lbnQuZWxlbWVudC5wYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50c1Rv
RGV0YWNoLmFkZCh0cmVlRWxlbWVudCk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfSkuY291bnQ7CisKKyAgICAgICAgLy8gUmVkcmF3IGlmIHdlIGFyZSBhYm91dCB0byBz
Y3JvbGwuCisgICAgICAgIGlmICghc2hvdWxkU2Nyb2xsKSB7CisgICAgICAgICAgICAvLyBSZWRy
YXcgaWYgYWxsIG9mIHRoZSBwcmV2aW91c2x5IGNlbnRlcmVkIGBXSS5UcmVlRWxlbWVudGAgYXJl
IG5vIGxvbmdlciBjZW50ZXJlZC4KKyAgICAgICAgICAgIGlmICh2aXNpYmxlVHJlZUVsZW1lbnRz
LmludGVyc2VjdHModGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzKSkgeworICAg
ICAgICAgICAgICAgIC8vIFJlZHJhdyBpZiB0aGVyZSBpcyBhIGBXSS5UcmVlRWxlbWVudGAgdGhh
dCBzaG91bGQgYmUgc2hvd24gdGhhdCBpc24ndCBhdHRhY2hlZC4KKyAgICAgICAgICAgICAgICBp
ZiAodmlzaWJsZVRyZWVFbGVtZW50cy5pc1N1YnNldE9mKHRoaXMuX3ZpcnR1YWxpemVkQXR0YWNo
ZWRUcmVlRWxlbWVudHMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFZpc2libGVUcmVlRWxl
bWVudHMgPSB2aXNpYmxlVHJlZUVsZW1lbnRzOworICAgICAgICB0aGlzLl92aXJ0dWFsaXplZEF0
dGFjaGVkVHJlZUVsZW1lbnRzID0gdHJlZUVsZW1lbnRzVG9BdHRhY2g7CisKKyAgICAgICAgZm9y
IChsZXQgdHJlZUVsZW1lbnQgb2YgdHJlZUVsZW1lbnRzVG9EZXRhY2gpCisgICAgICAgICAgICB0
cmVlRWxlbWVudC5lbGVtZW50LnJlbW92ZSgpOworCisgICAgICAgIGZvciAobGV0IHRyZWVFbGVt
ZW50IG9mIHRyZWVFbGVtZW50c1RvQXR0YWNoKSB7CisgICAgICAgICAgICB0cmVlRWxlbWVudC5w
YXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQuZWxlbWVudCk7
CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQuX2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAg
ICAgICAgICAgdHJlZUVsZW1lbnQucGFyZW50Ll9jaGlsZHJlbkxpc3ROb2RlLmFwcGVuZENoaWxk
KHRyZWVFbGVtZW50Ll9jaGlsZHJlbkxpc3ROb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX3ZpcnR1YWxpemVkVG9wU3BhY2VyLnN0eWxlLmhlaWdodCA9IChNYXRoLm1heChmaXJzdEl0
ZW0sIDApICogdGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRlbUhlaWdodCkgKyAicHgiOworICAgICAg
ICBpZiAodGhpcy5lbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgIT09IHRoaXMuX3ZpcnR1
YWxpemVkVG9wU3BhY2VyKQorICAgICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUuaW5z
ZXJ0QmVmb3JlKHRoaXMuX3ZpcnR1YWxpemVkVG9wU3BhY2VyLCB0aGlzLmVsZW1lbnQpOworCisg
ICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyLnN0eWxlLmhlaWdodCA9IChNYXRo
Lm1heCh0b3RhbEl0ZW1zIC0gbGFzdEl0ZW0sIDApICogdGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRl
bUhlaWdodCkgKyAicHgiOworICAgICAgICBpZiAodGhpcy5lbGVtZW50Lm5leHRFbGVtZW50U2li
bGluZyAhPT0gdGhpcy5fdmlydHVhbGl6ZWRCb3R0b21TcGFjZXIpCisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fdmlydHVhbGl6ZWRCb3R0b21T
cGFjZXIsIHRoaXMuZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpOworCisgICAgICAgIGlmIChz
aG91bGRTY3JvbGwpCisgICAgICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFNjcm9sbENvbnRhaW5l
ci5zY3JvbGxUb3AgPSAoZmlyc3RJdGVtICsgZXh0cmFSb3dzKSAqIHRoaXMuX3ZpcnR1YWxpemVk
VHJlZUl0ZW1IZWlnaHQ7CisgICAgfQorCiAgICAgX2hhbmRsZUNvbnRleHRtZW51KGV2ZW50KQog
ICAgIHsKICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZyb21FdmVu
dChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJTb2NrZXRDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCmluZGV4IDNiZjBkNjQ2
M2M1YWY3N2M4MzBjNGNhYzkxMDBiMmMxYTVjYWM4YTEuLmU0NzYxMjM5N2ZlZTRlMWNlZTg0ZWI3
NjBlZjk4ZjMyMTQ1OTAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCkBA
IC0zMSw2ICszMSwxMCBAQCBXSS5XZWJTb2NrZXRDb250ZW50VmlldyA9IGNsYXNzIFdlYlNvY2tl
dENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAgICBzdXBlcihyZXNv
dXJjZSk7CiAKKyAgICAgICAgdGhpcy5fdXBkYXRlRnJhbWVzRGVib3VuY2VyID0gbmV3IERlYm91
bmNlcigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXMoKTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICAgICAgdGhpcy5f
ZnJhbWVzUmVuZGVyZWQgPSAwOwogICAgICAgICB0aGlzLl9sYXN0UmVuZGVyZWRSZWFkeVN0YXRl
ID0gbnVsbDsKQEAgLTgxLDcgKzg1LDcgQEAgV0kuV2ViU29ja2V0Q29udGVudFZpZXcgPSBjbGFz
cyBXZWJTb2NrZXRDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBzaG93
bigpCiAgICAgewotICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXMoKTsKKyAgICAgICAgdGhpcy5f
dXBkYXRlRnJhbWVzRGVib3VuY2VyLmZvcmNlKCk7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQuRnJhbWVBZGRlZCwgdGhp
cy5fdXBkYXRlRnJhbWVzU29vbiwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2
ZW50TGlzdGVuZXIoV0kuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQuUmVhZHlTdGF0ZUNoYW5nZWQs
IHRoaXMuX3VwZGF0ZUZyYW1lc1Nvb24sIHRoaXMpOwogICAgIH0KQEAgLTk2LDcgKzEwMCw3IEBA
IFdJLldlYlNvY2tldENvbnRlbnRWaWV3ID0gY2xhc3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgX3VwZGF0ZUZyYW1lc1Nvb24oKQogICAgIHsKLSAg
ICAgICAgdGhpcy5vbk5leHRGcmFtZS5fdXBkYXRlRnJhbWVzKCk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZUZyYW1lc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAgfQogCiAgICAgX3VwZGF0
ZUZyYW1lcygpCkBAIC0xMTksOCArMTIzLDE1IEBAIFdJLldlYlNvY2tldENvbnRlbnRWaWV3ID0g
Y2xhc3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAg
ICAgICAgdGhpcy5fbGFzdFJlbmRlcmVkUmVhZHlTdGF0ZSA9IHRoaXMuX3Jlc291cmNlLnJlYWR5
U3RhdGU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsVG9Cb3R0b20pCi0g
ICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5vbk5leHRGcmFtZS5zY3JvbGxUb0xhc3RSb3coKTsK
KyAgICAgICAgaWYgKHNob3VsZFNjcm9sbFRvQm90dG9tKSB7CisgICAgICAgICAgICBpZiAoIXRo
aXMuX3Njcm9sbFRvTGFzdFJvd0RlYm91bmNlcikgeworICAgICAgICAgICAgICAgIHRoaXMuX3Nj
cm9sbFRvTGFzdFJvd0RlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKCkgPT4geworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxUb0xhc3RSb3coKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9MYXN0
Um93RGVib3VuY2VyLmRlbGF5Rm9yRnJhbWUoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIF9h
ZGRGcmFtZShkYXRhLCBpc091dGdvaW5nLCBvcGNvZGUsIHRpbWUpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTM5MGU0OWY4
ZTgzYjViMmZmMmYwMTFhZjAzNTIzYzBkOWZjMGQ4MS4uMTZlN2E4OTQ3MTQ5OTg3M2Q5YTkxOTE3
OTMyMjVlOTdjYWMyZmRhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAyLTE2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
YWtlIGRlYm91bmNlIFByb3h5IGludG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJv
dW5jZXIuaHRtbDogUmVuYW1lZCBmcm9tIGluc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0
bWw6LgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlci1leHBlY3RlZC50
eHQ6IFJlbmFtZWQgZnJvbSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50
eHQuCisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGVyLmh0bWw6IFJlbmFt
ZWQgZnJvbSBpbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZS5odG1sOi4KKyAgICAgICAgKiBp
bnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZXItZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20g
aW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDE5LTAyLTE1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViVlRUXSBJbmxpbmUgV2ViVlRUIHN0eWxlcyBzaG91bGQg
c3RhcnQgd2l0aCAnOjpjdWUnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYwMDk4MDUzMjM2YmE3YzQyYTJjZDk5NTkxNzBmYjUzZGQ4MWU0OTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvZGVib3VuY2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzAg
KzAsMCBAQAotVGVzdGluZyBkZWJvdW5jZSBwcm94eSBzdXBwb3J0LgotCi0KLT09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogRGVib3VuY2UKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCYXNpYyBEZWJvdW5j
ZQotUEFTUzogRGVib3VuY2VkIHN1Y2Nlc3NmdWxseS4KLVBBU1M6IENhbGwgZGVsYXllZCBhdCBs
ZWFzdCAxMG1zLgotUEFTUzogYHRoaXNgIGlzIHRoZSByaWdodCBvYmplY3QuCi1QQVNTOiBBcmd1
bWVudHMgbGVuZ3RoIGlzIDIuCi1QQVNTOiBGaXJzdCBhcmd1bWVudCBpcyA0LgotUEFTUzogU2Vj
b25kIGFyZ3VtZW50IGlzICdhYmMnLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogTXVsdGlwbGUg
RGVib3VuY2UgRGVsYXlzCi1QQVNTOiBEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LgotUEFTUzogQ2Fs
bCBkZWxheWVkIGF0IGxlYXN0IDQwbXMuCi1QQVNTOiBgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVj
dC4KLVBBU1M6IEFyZ3VtZW50cyBsZW5ndGggaXMgMi4KLVBBU1M6IEZpcnN0IGFyZ3VtZW50IGlz
IDQuCi1QQVNTOiBTZWNvbmQgYXJndW1lbnQgaXMgJ2FiYycuCi0KLS0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBTb29uIERlYm91bmNlCi1QQVNTOiBEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LgotUEFTUzog
YHRoaXNgIGlzIHRoZSByaWdodCBvYmplY3QuCi1QQVNTOiBBcmd1bWVudHMgbGVuZ3RoIGlzIDIu
Ci1QQVNTOiBGaXJzdCBhcmd1bWVudCBpcyA0LgotUEFTUzogU2Vjb25kIGFyZ3VtZW50IGlzICdh
YmMnLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FuY2VsIERlYm91bmNlCi1QQVNTOiBEZWJv
dW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9kZWJvdW5jZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGYw
MDcxOGViZjU0OGQzMDhiODc3MjM1YjcyN2EyMjA2MWU4NzdhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRl
c3RzL2RlYm91bmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotPCFkb2N0
eXBlIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVBc3luY1N1aXRlKCJEZWJvdW5jZSIpOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAg
ICAgICBuYW1lOiAiQmFzaWMgRGVib3VuY2UiLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7Ci0gICAgICAgICAgICBsZXQgc3Rh
cnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7Ci0KLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7
Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3Vu
Y2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKLQotICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRp
bWUgPj0gMTAsICJDYWxsIGRlbGF5ZWQgYXQgbGVhc3QgMTBtcy4iKTsKLQotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodGhpcyA9PT0gb2JqZWN0LCAiYHRoaXNg
IGlzIHRoZSByaWdodCBvYmplY3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChhcmd1bWVudHMubGVuZ3RoID09PSAyLCAiQXJndW1lbnRzIGxlbmd0aCBp
cyAyLiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9v
ID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGJhciA9PT0gImFiYyIsICJTZWNvbmQgYXJndW1lbnQgaXMg
J2FiYycuIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGxldCBkZWJvdW5jZVByb3h5ID0g
b2JqZWN0LmRlYm91bmNlKDEwKTsKLSAgICAgICAgICAgIGRlYm91bmNlUHJveHkudGVzdCgxLCAn
eHl6Jyk7Ci0gICAgICAgICAgICBkZWJvdW5jZVByb3h5LnRlc3QoMiwgJ2ZnaCcpOwotICAgICAg
ICAgICAgZGVib3VuY2VQcm94eS50ZXN0KDMsICdlcnQnKTsKLSAgICAgICAgICAgIGRlYm91bmNl
UHJveHkudGVzdCg0LCAnYWJjJyk7Ci0KLSAgICAgICAgICAgIGlmICghY2FsbENvdW50KQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJE
ZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIGltbWVkaWF0ZWx5LiIpOwotICAgICAgICAgICAgcmVz
b2x2ZSgpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0g
ICAgICAgIG5hbWU6ICJNdWx0aXBsZSBEZWJvdW5jZSBEZWxheXMiLAotICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7Ci0gICAgICAg
ICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7Ci0KLSAgICAgICAgICAgIGxl
dCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKLQotICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocGVyZm9ybWFuY2Uubm93
KCkgLSBzdGFydFRpbWUgPj0gNDAsICJDYWxsIGRlbGF5ZWQgYXQgbGVhc3QgNDBtcy4iKTsKLQot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodGhpcyA9PT0gb2Jq
ZWN0LCAiYHRoaXNgIGlzIHRoZSByaWdodCBvYmplY3QuIik7Ci0gICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChhcmd1bWVudHMubGVuZ3RoID09PSAyLCAiQXJndW1l
bnRzIGxlbmd0aCBpcyAyLiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoZm9vID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGJhciA9PT0gImFiYyIsICJTZWNvbmQg
YXJndW1lbnQgaXMgJ2FiYycuIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIG9iamVjdC5k
ZWJvdW5jZSgxMCkudGVzdCgxLCAneHl6Jyk7Ci0gICAgICAgICAgICBvYmplY3QuZGVib3VuY2Uo
MjApLnRlc3QoMiwgJ2ZnaCcpOwotICAgICAgICAgICAgb2JqZWN0LmRlYm91bmNlKDMwKS50ZXN0
KDMsICdlcnQnKTsKLSAgICAgICAgICAgIG9iamVjdC5kZWJvdW5jZSg0MCkudGVzdCg0LCAnYWJj
Jyk7Ci0KLSAgICAgICAgICAgIGlmICghY2FsbENvdW50KQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24g
Y2FsbGVkIGltbWVkaWF0ZWx5LiIpOwotICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJTb29u
IERlYm91bmNlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAg
IGxldCBjYWxsQ291bnQgPSAwOwotCi0gICAgICAgICAgICBsZXQgb2JqZWN0ID0gewotICAgICAg
ICAgICAgICAgIHRlc3QoZm9vLCBiYXIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCsrY2Fs
bENvdW50ID09PSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNz
KCJEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LiIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91bmNlZCBmdW5j
dGlvbiBjYWxsZWQgbXVsdGlwbGUgdGltZXMuIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KHRoaXMgPT09IG9iamVjdCwgImB0aGlzYCBpcyB0aGUgcmln
aHQgb2JqZWN0LiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGZvbyA9PT0gNCwgIkZp
cnN0IGFyZ3VtZW50IGlzIDQuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChiYXIgPT09ICJhYmMiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMnLiIpOwot
Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICBvYmplY3Quc29vbi50ZXN0KDEsICd4eXonKTsKLSAg
ICAgICAgICAgIG9iamVjdC5zb29uLnRlc3QoMiwgJ2ZnaCcpOwotICAgICAgICAgICAgb2JqZWN0
LnNvb24udGVzdCgzLCAnZXJ0Jyk7Ci0gICAgICAgICAgICBvYmplY3Quc29vbi50ZXN0KDQsICdh
YmMnKTsKLQotICAgICAgICAgICAgaWYgKCFjYWxsQ291bnQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91bmNlZCBmdW5jdGlv
biBjYWxsZWQgaW1tZWRpYXRlbHkuIik7Ci0gICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkNh
bmNlbCBEZWJvdW5jZSIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICBsZXQgb2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHRlc3QoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGwgc2hv
dWxkIGhhdmUgYmVlbiBjYW5jZWxlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIG9iamVj
dC5kZWJvdW5jZSgxMCkudGVzdCgpOwotICAgICAgICAgICAgb2JqZWN0LnRlc3QuY2FuY2VsRGVi
b3VuY2UoKTsKLQotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IEluc3BlY3RvclRlc3Qu
cGFzcygiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbmNlbGVkLiIpOyByZXNvbHZlKCk7IH0sIDIwKTsK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8
cD5UZXN0aW5nIGRlYm91bmNlIHByb3h5IHN1cHBvcnQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwNDUzMWU3NmNkMzgyNmM2YTU1MGY3ZTNkY2IyNGU3
ZGRlYjdlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRl
c3RzL2RlYm91bmNlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0OSBAQAorVGVzdGluZyBEZWJv
dW5jZXIgZnVuY3Rpb25hbGl0eS4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERlYm91bmNl
cgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYm91bmNlci5UaW1lRGVsYXkuU2FtZQorUEFTUzog
Q2FsbCBkZWxheWVkIGF0IGxlYXN0IDEwbXMuCitQQVNTOiBBcmd1bWVudHMgbGVuZ3RoIGlzIDIu
CitQQVNTOiBGaXJzdCBhcmd1bWVudCBpcyA0LgorUEFTUzogU2Vjb25kIGFyZ3VtZW50IGlzICdh
YmMnLgorUEFTUzogRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBvbmNlLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogRGVib3VuY2VyLlRpbWVEZWxheS5EaWZmZXJlbnQKK1BBU1M6IENhbGwgZGVs
YXllZCBhdCBsZWFzdCA0MG1zLgorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgorUEFTUzog
Rmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KK1BB
U1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERlYm91bmNlLlRpbWVEZWxheS5aZXJvCitQQVNTOiBDYWxsIHdhcyBkZWxheWVkLgorUEFT
UzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgorUEFTUzogRmlyc3QgYXJndW1lbnQgaXMgNC4KK1BB
U1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KK1BBU1M6IERlYm91bmNlZCBmdW5jdGlvbiBj
YWxsZWQgb25jZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYm91bmNlLk1pY3JvdGFza0Rl
bGF5CitQQVNTOiBDYWxsIHdhcyBkZWxheWVkLgorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAy
LgorUEFTUzogRmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAn
YWJjJy4KK1BBU1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYm91bmNlLkRpZmZlcmVudERlbGF5cworUEFTUzogQ2FsbCB3YXMgZGVs
YXllZC4KK1BBU1M6IEFyZ3VtZW50cyBsZW5ndGggaXMgMi4KK1BBU1M6IEZpcnN0IGFyZ3VtZW50
IGlzIDMuCitQQVNTOiBTZWNvbmQgYXJndW1lbnQgaXMgJ2VydCcuCitQQVNTOiBEZWJvdW5jZWQg
ZnVuY3Rpb24gY2FsbGVkIG9uY2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJvdW5jZS5G
b3JjZQorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgorUEFTUzogRmlyc3QgYXJndW1lbnQg
aXMgMi4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnZmdoJy4KK1BBU1M6IERlYm91bmNlZCBm
dW5jdGlvbiBjYWxsZWQgaW1tZWRpYXRlbHkKK1BBU1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYWxs
ZWQgb25jZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYm91bmNlLkNhbmNlbAorUEFTUzog
RGVib3VuY2VkIGZ1bmN0aW9uIGNhbmNlbGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91bml0LXRlc3RzL2RlYm91bmNlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MWFjMDkwNmUxNWJiMTRh
OTA2NGQzMjUxMWYyNGVhNDJiOTJjZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZXIuaHRtbApAQCAtMCwwICsxLDIxNSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJEZWJvdW5jZXIiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkRlYm91bmNlci5UaW1lRGVsYXkuU2FtZSIsCisgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAg
ICAgICAgIGxldCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKKworICAgICAgICAgICAg
bGV0IGRlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKGZvbywgYmFyKSA9PiB7CisgICAgICAgICAg
ICAgICAgKytjYWxsQ291bnQ7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEdyZWF0ZXJUaGFuT3JFcXVhbChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSwgMTAsICJD
YWxsIGRlbGF5ZWQgYXQgbGVhc3QgMTBtcy4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwgIkFyZ3VtZW50cyBsZW5ndGgg
aXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZvbywg
NCwgIkZpcnN0IGFyZ3VtZW50IGlzIDQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChiYXIsICJhYmMiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMnLiIpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAs
IDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDIsICdm
Z2gnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDMsICdlcnQnKTsK
KyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDQsICdhYmMnKTsKKworICAg
ICAgICAgICAgaWYgKGNhbGxDb3VudCkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZh
aWwoIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgaW1tZWRpYXRlbHkuIik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoY2FsbENvdW50LCAxLCAiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBvbmNlLiIp
OworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDIwKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
RGVib3VuY2VyLlRpbWVEZWxheS5EaWZmZXJlbnQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBsZXQg
c3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CisKKyAgICAgICAgICAgIGxldCBkZWJvdW5j
ZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAgICsrY2Fs
bENvdW50OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RHcmVhdGVyVGhh
bk9yRXF1YWwocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUsIDQwLCAiQ2FsbCBkZWxheWVk
IGF0IGxlYXN0IDQwbXMuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKGFyZ3VtZW50cy5sZW5ndGgsIDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChmb28sIDQsICJGaXJzdCBh
cmd1bWVudCBpcyA0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoYmFyLCAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDEwLCAxLCAneHl6Jyk7
CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDIwLCAyLCAnZmdoJyk7CisgICAg
ICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDMwLCAzLCAnZXJ0Jyk7CisgICAgICAgICAg
ICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDQwLCA0LCAnYWJjJyk7CisKKyAgICAgICAgICAgIGlm
IChjYWxsQ291bnQpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5j
ZWQgZnVuY3Rpb24gY2FsbGVkIGltbWVkaWF0ZWx5LiIpOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNh
bGxDb3VudCwgMSwgIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4iKTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYm91bmNlLlRp
bWVEZWxheS5aZXJvIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAg
ICAgIGxldCBjYWxsQ291bnQgPSAwOworICAgICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IHBlcmZv
cm1hbmNlLm5vdygpOworCisgICAgICAgICAgICBsZXQgZGVib3VuY2VyID0gbmV3IERlYm91bmNl
cigoZm9vLCBiYXIpID0+IHsKKyAgICAgICAgICAgICAgICArK2NhbGxDb3VudDsKKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0R3JlYXRlclRoYW5PckVxdWFsKHBlcmZvcm1h
bmNlLm5vdygpIC0gc3RhcnRUaW1lLCAwLCAiQ2FsbCB3YXMgZGVsYXllZC4iKTsKKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwg
IkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKGZvbywgNCwgIkZpcnN0IGFyZ3VtZW50IGlzIDQuIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChiYXIsICJhYmMiLCAiU2Vjb25kIGFyZ3Vt
ZW50IGlzICdhYmMnLiIpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYm91bmNl
ci5kZWxheUZvclRpbWUoMCwgMSwgJ3h5eicpOworICAgICAgICAgICAgZGVib3VuY2VyLmRlbGF5
Rm9yVGltZSgwLCAyLCAnZmdoJyk7CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JUaW1l
KDAsIDMsICdlcnQnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMCwgNCwg
J2FiYycpOworCisgICAgICAgICAgICBpZiAoY2FsbENvdW50KQorICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZmFpbCgiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBpbW1lZGlhdGVseS4i
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChjYWxsQ291bnQsIDEsICJEZWJvdW5jZWQgZnVuY3Rpb24g
Y2FsbGVkIG9uY2UuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAg
fSwgMTApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJEZWJvdW5jZS5NaWNyb3Rhc2tEZWxheSIsCisgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAgICAg
ICAgIGxldCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKKworICAgICAgICAgICAgbGV0
IGRlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKGZvbywgYmFyKSA9PiB7CisgICAgICAgICAgICAg
ICAgKytjYWxsQ291bnQ7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEdy
ZWF0ZXJUaGFuT3JFcXVhbChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSwgMCwgIkNhbGwg
d2FzIGRlbGF5ZWQuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGFyZ3VtZW50cy5sZW5ndGgsIDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChmb28sIDQsICJGaXJzdCBhcmd1
bWVudCBpcyA0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
YmFyLCAiYWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JNaWNyb3Rhc2soMSwgJ3h5eicpOwor
ICAgICAgICAgICAgZGVib3VuY2VyLmRlbGF5Rm9yTWljcm90YXNrKDIsICdmZ2gnKTsKKyAgICAg
ICAgICAgIGRlYm91bmNlci5kZWxheUZvck1pY3JvdGFzaygzLCAnZXJ0Jyk7CisgICAgICAgICAg
ICBkZWJvdW5jZXIuZGVsYXlGb3JNaWNyb3Rhc2soNCwgJ2FiYycpOworCisgICAgICAgICAgICBp
ZiAoY2FsbENvdW50KQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3Vu
Y2VkIGZ1bmN0aW9uIGNhbGxlZCBpbW1lZGlhdGVseS4iKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChj
YWxsQ291bnQsIDEsICJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIG9uY2UuIik7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSwgMjApOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEZWJvdW5jZS5E
aWZmZXJlbnREZWxheXMiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gcGVy
Zm9ybWFuY2Uubm93KCk7CisKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3Vu
Y2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAgICsrY2FsbENvdW50OworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RHcmVhdGVyVGhhbk9yRXF1YWwocGVyZm9y
bWFuY2Uubm93KCkgLSBzdGFydFRpbWUsIDIwLCAiQ2FsbCB3YXMgZGVsYXllZC4iKTsKKworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwg
MiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKGZvbywgMywgIkZpcnN0IGFyZ3VtZW50IGlzIDMuIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChiYXIsICJlcnQiLCAiU2Vjb25kIGFy
Z3VtZW50IGlzICdlcnQnLiIpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYm91
bmNlci5kZWxheUZvck1pY3JvdGFzaygxLCAneHl6Jyk7CisgICAgICAgICAgICBkZWJvdW5jZXIu
ZGVsYXlGb3JGcmFtZSgyLCAnZmdoJyk7CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JU
aW1lKDIwLCAzLCAnZXJ0Jyk7CisKKyAgICAgICAgICAgIGlmIChjYWxsQ291bnQpCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIGlt
bWVkaWF0ZWx5LiIpOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNhbGxDb3VudCwgMSwgIkRlYm91bmNl
ZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7Cisg
ICAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYm91bmNlLkZvcmNlIiwKKyAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBjYWxsQ291bnQgPSAwOworCisgICAg
ICAgICAgICBsZXQgZGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoZm9vLCBiYXIpID0+IHsKKyAg
ICAgICAgICAgICAgICArK2NhbGxDb3VudDsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMg
Mi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZvbywgMiwg
IkZpcnN0IGFyZ3VtZW50IGlzIDIuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChiYXIsICJmZ2giLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdmZ2gnLiIpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDEs
ICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5mb3JjZSgyLCAnZmdoJyk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FsbENvdW50LCAxLCAiRGVib3VuY2Vk
IGZ1bmN0aW9uIGNhbGxlZCBpbW1lZGlhdGVseSIpOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNhbGxD
b3VudCwgMSwgIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4iKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYm91bmNlLkNhbmNl
bCIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgY2Fs
bGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2Vy
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTApOworICAgICAgICAgICAg
ZGVib3VuY2VyLmNhbmNlbCgpOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNhbGxlZCwgIkRlYm91bmNl
ZCBmdW5jdGlvbiBjYW5jZWxlZC4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICB9LCAyMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgPHA+VGVzdGluZyBEZWJvdW5jZXIgZnVuY3Rpb25hbGl0eS48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy90aHJvdHRsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy90aHJvdHRsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJhODIxYzkzMTM2NDFmZGNhYmZmMzViZGMwZjVmOTkyMDIwYjRiODUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvdGhyb3R0bGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAs
MCBAQAotVGVzdCB0aHJvdHRsZSBwcm94eSBzdXBwb3J0LgotCi0KLT09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogVGhyb3R0bGUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCYXNpYyB0aHJvdHRsZQotQ2Fs
bCB0aHJvdHRsZWQgZnVuY3Rpb24gZXZlcnkgMSBtcyBmb3IgMTEwIG1zLgotUEFTUzogQWxsIGNh
bGxzIGRlbGF5ZWQgYXQgbGVhc3QgNTAgbXMuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUaHJv
dHRsZSBwcm94eSB1bmlxdWVuZXNzCi1QQVNTOiBFYWNoIGNhbGwgdG8gdGhyb3R0bGUgc2hvdWxk
IHJldHVybiBhIG5ldyBwcm94eS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRocm90dGxlZCBm
dW5jdGlvbiBhcmd1bWVudHMKLVBBU1M6IFRyYWlsaW5nIGNhbGwgaW52b2tlZCB3aXRoIG1vc3Qg
cmVjZW50IGFyZ3VtZW50cy4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbmNlbCB0aHJvdHRs
ZQotQ2FuY2VsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uLgotUEFTUzogVGhyb3R0bGVkIGZ1bmN0aW9u
IGNhbmNlbGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy90aHJvdHRsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0
bGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhkNmQyZDgyYzg1MmQ4YTUz
ZDg5ZTg3ZDNhZWE2ZDRmNzJiNzFlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
VGhyb3R0bGUiKTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkJh
c2ljIHRocm90dGxlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAg
ICAgIGNvbnN0IGRlbGF5ID0gNTA7Ci0gICAgICAgICAgICBjb25zdCBkdXJhdGlvbiA9IDExMDsK
LSAgICAgICAgICAgIGNvbnN0IG1heGltdW1OdW1iZXJPZkNhbGxzID0gTWF0aC5jZWlsKGR1cmF0
aW9uIC8gZGVsYXkpICsgMTsgLy8gQWRkIG9uZSBmb3IgdGhlIGxlYWRpbmcgZWRnZS4gTWF0aC5j
ZWlsIGFjY291bnRzIGZvciB0aGUgdHJhaWxpbmcgZWRnZS4KLQotICAgICAgICAgICAgbGV0IGxh
c3RDYWxsVGltZSA9IE5hTjsKLSAgICAgICAgICAgIGxldCBudW1iZXJPZkNhbGxzID0gMDsKLQot
ICAgICAgICAgICAgbGV0IG9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB0ZXN0KGlzVHJhaWxp
bmcpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG5vdyA9IERhdGUubm93KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCsrbnVtYmVyT2ZDYWxscyA+IG1heGltdW1OdW1iZXJPZkNhbGxz
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoIlRocm90dGxlZCBmdW5jdGlvbiBj
YWxsZWQgdG9vIG1hbnkgdGltZXMuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFO
KGxhc3RDYWxsVGltZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxEZWxh
eSA9IG5vdyAtIGxhc3RDYWxsVGltZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1
YWxEZWxheSA8IGRlbGF5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5mYWlsKGBEZWxheSBzaG91bGQgYmUgYXQgbGVhc3QgJHtkZWxheX0gbXMuIFdhcyAke2Fj
dHVhbERlbGF5fSBtcy5gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBsYXN0
Q2FsbFRpbWUgPSBub3c7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzVHJhaWxpbmcpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgQWxsIGNhbGxzIGRl
bGF5ZWQgYXQgbGVhc3QgJHtkZWxheX0gbXMuYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQ2FsbCB0aHJvdHRs
ZWQgZnVuY3Rpb24gZXZlcnkgMSBtcyBmb3IgJHtkdXJhdGlvbn0gbXMuYCk7Ci0KLSAgICAgICAg
ICAgIGxldCB0aHJvdHRsZVByb3h5ID0gb2JqZWN0LnRocm90dGxlKGRlbGF5KTsKLSAgICAgICAg
ICAgIHRocm90dGxlUHJveHkudGVzdCgpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsg
aSA8PSBkdXJhdGlvbjsgaSsrKQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0
aHJvdHRsZVByb3h5LnRlc3QoaSA9PT0gZHVyYXRpb24pOyB9LCBpKTsKLSAgICAgICAgfQotICAg
IH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiVGhyb3R0bGUg
cHJveHkgdW5pcXVlbmVzcyIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAg
ICAgICAgICBsZXQgb2JqZWN0ID0ge307Ci0gICAgICAgICAgICBsZXQgZmlyc3RQcm94eSA9IG9i
amVjdC50aHJvdHRsZSgxKTsKLSAgICAgICAgICAgIGxldCBzZWNvbmRQcm94eSA9IG9iamVjdC50
aHJvdHRsZSgxKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwoZmly
c3RQcm94eSwgc2Vjb25kUHJveHksICJFYWNoIGNhbGwgdG8gdGhyb3R0bGUgc2hvdWxkIHJldHVy
biBhIG5ldyBwcm94eS4iKTsKLSAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfQotICAg
IH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiVGhyb3R0bGVk
IGZ1bmN0aW9uIGFyZ3VtZW50cyIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICBsZXQgdmFsdWVzID0gWzEsIDIsIDNdOwotICAgICAgICAgICAgbGV0IGlzTGVh
ZGluZ0NhbGwgPSB0cnVlOwotCi0gICAgICAgICAgICBsZXQgb2JqZWN0ID0gewotICAgICAgICAg
ICAgICAgIHRlc3QodmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGVhZGluZ0Nh
bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVhZGluZ0NhbGwgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHZhbHVlcy5sYXN0VmFsdWU7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmFsdWUsIGV4cGVjdGVk
LCAiVHJhaWxpbmcgY2FsbCBpbnZva2VkIHdpdGggbW9zdCByZWNlbnQgYXJndW1lbnRzLiIpOwot
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfTsKLQotICAgICAgICAgICAgbGV0IGkgPSAwOwotICAgICAgICAgICAgbGV0IHRocm90
dGxlUHJveHkgPSBvYmplY3QudGhyb3R0bGUoNTApOwotICAgICAgICAgICAgZm9yIChsZXQgdmFs
dWUgb2YgdmFsdWVzKQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRs
ZVByb3h5LnRlc3QodmFsdWUpOyB9LCBpKyspOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW5jZWwgdGhyb3R0bGUiLAotICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGNhbmNlbGVkID0g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVz
dCgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxlZCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWls
KCJDYWxsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVyIGNhbmNlbC4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQot
ICAgICAgICAgICAgbGV0IHRocm90dGxlUHJveHkgPSBvYmplY3QudGhyb3R0bGUoMjApOwotICAg
ICAgICAgICAgdGhyb3R0bGVQcm94eS50ZXN0KCk7Ci0gICAgICAgICAgICB0aHJvdHRsZVByb3h5
LnRlc3QoKTsKLQotICAgICAgICAgICAgb2JqZWN0LnRlc3QuY2FuY2VsVGhyb3R0bGUoKTsKLSAg
ICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIkNhbmNlbGVkIHRocm90dGxlZCBmdW5jdGlvbi4iKTsKLQotICAgICAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJUaHJvdHRs
ZWQgZnVuY3Rpb24gY2FuY2VsZWQuIik7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAg
ICAgICAgICAgfSwgNTApOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgotICAgIDxwPlRlc3QgdGhyb3R0bGUgcHJveHkgc3VwcG9ydC48L3A+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy90aHJvdHRsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVz
dHMvdGhyb3R0bGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODQyMWNhNmU4MDVjYzM5ZjQy
YmI1MGJkZDM2ODZkYTEwYzkxOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBA
CitUZXN0IFRocm90dGxlciBmdW5jdGlvbmFsaXR5LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogVGhyb3R0bGVyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGhyb3R0bGVyLkZpcmUuQmFzaWMK
K0NhbGwgdGhyb3R0bGVkIGZ1bmN0aW9uIGV2ZXJ5IDEgbXMgZm9yIDExMCBtcy4KK1BBU1M6IEFs
bCBjYWxscyBkZWxheWVkIGF0IGxlYXN0IDUwIG1zLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
VGhyb3R0bGVyLkZpcmUuTGFzdEFyZ3VtZW50cworUEFTUzogVHJhaWxpbmcgY2FsbCBpbnZva2Vk
IHdpdGggbW9zdCByZWNlbnQgYXJndW1lbnRzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGhy
b3R0bGVyLkZvcmNlCitQQVNTOiBBcmd1bWVudHMgbGVuZ3RoIGlzIDIuCitQQVNTOiBGaXJzdCBh
cmd1bWVudCBpcyAxLgorUEFTUzogU2Vjb25kIGFyZ3VtZW50IGlzICd4eXonLgorUEFTUzogQXJn
dW1lbnRzIGxlbmd0aCBpcyAyLgorUEFTUzogRmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNl
Y29uZCBhcmd1bWVudCBpcyAnYWJjJy4KK1BBU1M6IFRocm90dGxlZCBmdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIHR3aWNlLgorUEFTUzogVGhyb3R0bGVkIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUg
Y2FsbGVkIGFnYWluIGFmdGVyIGNhbGxpbmcgZm9yY2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBUaHJvdHRsZXIuQ2FuY2VsCitDYW5jZWxlZCB0aHJvdHRsZWQgZnVuY3Rpb24uCitQQVNTOiBU
aHJvdHRsZWQgZnVuY3Rpb24gY2FuY2VsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvdGhyb3R0bGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U1OGEzNmI0Mjk4NjBmODY2
MDhhODBlODU3MDk0ZjlkMTk1ZWY0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlci5odG1sCkBAIC0wLDAgKzEsMTQ0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUFzeW5jU3VpdGUoIlRocm90dGxlciIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiVGhyb3R0bGVyLkZpcmUuQmFzaWMiLAorICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgeworICAgICAgICAgICAgY29uc3QgZGVsYXkgPSA1MDsKKyAgICAgICAgICAg
IGNvbnN0IGR1cmF0aW9uID0gMTEwOworICAgICAgICAgICAgY29uc3QgbWF4aW11bU51bWJlck9m
Q2FsbHMgPSBNYXRoLmNlaWwoZHVyYXRpb24gLyBkZWxheSkgKyAxOyAvLyBBZGQgb25lIGZvciB0
aGUgbGVhZGluZyBlZGdlLiBNYXRoLmNlaWwgYWNjb3VudHMgZm9yIHRoZSB0cmFpbGluZyBlZGdl
LgorCisgICAgICAgICAgICBsZXQgbGFzdENhbGxUaW1lID0gTmFOOworICAgICAgICAgICAgbGV0
IG51bWJlck9mQ2FsbHMgPSAwOworCisgICAgICAgICAgICBsZXQgdGhyb3R0bGVyID0gbmV3IFRo
cm90dGxlcigoaXNUcmFpbGluZykgPT4geworICAgICAgICAgICAgICAgIGxldCBub3cgPSBEYXRl
Lm5vdygpOworCisgICAgICAgICAgICAgICAgaWYgKCsrbnVtYmVyT2ZDYWxscyA+IG1heGltdW1O
dW1iZXJPZkNhbGxzKSB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdCgiVGhyb3R0bGVkIGZ1
bmN0aW9uIGNhbGxlZCB0b28gbWFueSB0aW1lcy4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaXNOYU4obGFz
dENhbGxUaW1lKSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYWN0dWFsRGVsYXkgPSBub3cg
LSBsYXN0Q2FsbFRpbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxEZWxheSA8IGRl
bGF5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoYERlbGF5
IHNob3VsZCBiZSBhdCBsZWFzdCAke2RlbGF5fSBtcy4gV2FzICR7YWN0dWFsRGVsYXl9IG1zLmAp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBsYXN0Q2FsbFRpbWUgPSBub3c7CisKKyAgICAgICAgICAgICAgICBp
ZiAoaXNUcmFpbGluZykgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3Mo
YEFsbCBjYWxscyBkZWxheWVkIGF0IGxlYXN0ICR7ZGVsYXl9IG1zLmApOworICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgZGVs
YXkpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQ2FsbCB0aHJvdHRsZWQgZnVu
Y3Rpb24gZXZlcnkgMSBtcyBmb3IgJHtkdXJhdGlvbn0gbXMuYCk7CisKKyAgICAgICAgICAgIHRo
cm90dGxlci5maXJlKCk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGR1cmF0
aW9uOyBpKyspCisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRocm90dGxlci5m
aXJlKGkgPT09IGR1cmF0aW9uKTsgfSwgaSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRocm90dGxlci5GaXJlLkxhc3RBcmd1
bWVudHMiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0
IHZhbHVlcyA9IFsxLCAyLCAzXTsKKyAgICAgICAgICAgIGxldCBpc0xlYWRpbmdDYWxsID0gdHJ1
ZTsKKworICAgICAgICAgICAgbGV0IHRocm90dGxlciA9IG5ldyBUaHJvdHRsZXIoKHZhbHVlKSA9
PiB7CisgICAgICAgICAgICAgICAgaWYgKGlzTGVhZGluZ0NhbGwpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaXNMZWFkaW5nQ2FsbCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbCh2YWx1ZSwgdmFsdWVzLmxhc3RWYWx1ZSwgIlRyYWlsaW5nIGNhbGwgaW52b2tlZCB3
aXRoIG1vc3QgcmVjZW50IGFyZ3VtZW50cy4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICB9LCA1MCk7CisKKyAgICAgICAgICAgIGxldCBpID0gMDsKKyAgICAgICAg
ICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHsgdGhyb3R0bGVyLmZpcmUodmFsdWUpOyB9LCBpKyspOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUaHJvdHRsZXIu
Rm9yY2UiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0
IGNhbGxDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGxldCB0aHJvdHRsZXIgPSBuZXcgVGhyb3R0
bGVyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAgICsrY2FsbENvdW50OworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChhcmd1bWVudHMubGVuZ3RoLCAy
LCAiQXJndW1lbnRzIGxlbmd0aCBpcyAyLiIpOworCisgICAgICAgICAgICAgICAgaWYgKGNhbGxD
b3VudCA9PT0gMSkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGZvbywgMSwgIkZpcnN0IGFyZ3VtZW50IGlzIDEuIik7CisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYmFyLCAieHl6IiwgIlNlY29uZCBhcmd1bWVudCBp
cyAneHl6Jy4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZvbywgNCwgIkZpcnN0IGFyZ3VtZW50IGlzIDQu
Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYmFyLCAi
YWJjIiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9LCAyMCk7CisKKyAgICAgICAgICAgIHRocm90dGxlci5maXJlKDEsICd4eXon
KTsKKyAgICAgICAgICAgIHRocm90dGxlci5maXJlKDIsICdmZ2gnKTsKKyAgICAgICAgICAgIHRo
cm90dGxlci5maXJlKDMsICdlcnQnKTsKKworICAgICAgICAgICAgdGhyb3R0bGVyLmZvcmNlKDQs
ICdhYmMnKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FsbENvdW50
LCAyLCAiVGhyb3R0bGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UuIik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoY2FsbENvdW50LCAyLCAiVGhyb3R0bGVkIGZ1bmN0aW9uIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIGNhbGxpbmcgZm9yY2UuIik7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUaHJvdHRsZXIuQ2FuY2Vs
IiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBjYW5j
ZWxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBsZXQgdGhyb3R0bGVyID0gbmV3IFRocm90dGxl
cigoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxlZCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJDYWxs
ZWQgdGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVyIGNhbmNlbC4iKTsKKyAgICAgICAgICAgICAgICBy
ZWplY3QoKTsKKyAgICAgICAgICAgIH0sIDIwKTsKKworICAgICAgICAgICAgdGhyb3R0bGVyLmZp
cmUoKTsKKyAgICAgICAgICAgIHRocm90dGxlci5maXJlKCk7CisKKyAgICAgICAgICAgIHRocm90
dGxlci5jYW5jZWwoKTsKKyAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkNhbmNlbGVkIHRocm90dGxlZCBmdW5jdGlvbi4iKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5wYXNzKCJUaHJvdHRsZWQgZnVuY3Rpb24gY2FuY2VsZWQuIik7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3QgVGhyb3R0bGVyIGZ1bmN0
aW9uYWxpdHkuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MjEyZDY4YjA0OTg2OGMxOGMxZmVhY2YwOTJlZjBhYTJh
YWZhNzJkLi5kNDRmNWVkMmFmOTI4NTkyMTViZDE3NTllZGE1NWQ5ZjE5YTY1YjM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgd2Via2l0Lm9yZy9iLzE4MzE4OCBpbXBvcnRlZC9ibGluay9zdmcvYXMtaW1hZ2UvaW1hZ2Ut
Y2hhbmdlLXdpdGgtZXF1YWwtc2l6ZXMuaHQKIAogd2Via2l0Lm9yZy9iLzE4MzYwOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS90
ZXN0X3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCi13ZWJr
aXQub3JnL2IvMTgzNjA5IGluc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4MzYwOSBpbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJv
dHRsZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODMyMTQgY29tcG9z
aXRpbmcvdmlkZW8vcG9zdGVyLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCkBAIC0y
MDUxLDcgKzIwNTEsNyBAQCB3ZWJraXQub3JnL2IvMTg3NTg3IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvY3Jvc3Mtb3JpZ2luLXJlc291cmNlLQogCiB3ZWJraXQub3JnL2Iv
MTg3NTg4IGZhc3QvZm9ybXMvZm9ybS1jb250cm9sLWVsZW1lbnQtY3Jhc2guaHRtbCBbIFRpbWVv
dXQgUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xODc1ODkgaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVi
b3VuY2UuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCit3ZWJraXQub3JnL2IvMTg3NTg5IGluc3BlY3Rv
ci91bml0LXRlc3RzL2RlYm91bmNlci5odG1sIFsgVGltZW91dCBQYXNzIF0KIAogd2Via2l0Lm9y
Zy9iLzE4NzU5MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25z
L3RpbWluZy1tb2RlbC90aW1lbGluZXMvZG9jdW1lbnQtdGltZWxpbmVzLmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGMzYTk0ODRmNDlmMTY5ZjU2ZWE4MzkwZGUyZmUzM2U2ZWRlYWM3YzYuLmQ3NGVlZDZjZDcyOGE2
OTcyMmM3NDQwMDBkYmExZjcyYWZlZGUxYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMDc3LDEwICsxMDc3LDEwIEBAIHdlYmtpdC5vcmcvYi8xNjgx
NDYgWyBEZWJ1ZyBdIGluc3BlY3Rvci9wcm90b2NvbC9pbnNwZWN0b3ItYmFja2VuZC1pbnZvY2F0
aW9uLXJlCiB3ZWJraXQub3JnL2IvMTQ4NjM2IGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0
LXdlYWstY29sbGVjdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzE1MzEwOCBbIERlYnVnIF0gaW5zcGVjdG9yL21vZGVsL3Njb3BlLWNoYWluLW5vZGUuaHRt
bCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTY0Mjc4IGluc3BlY3Rvci9zdG9yYWdl
L2RvbVN0b3JhZ2UtZXZlbnRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE4
NDA1NyBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xODQwNTcgaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2VyLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NTYwNyBpbnNwZWN0b3IvdW5pdC10ZXN0
cy9oZWFwLXNuYXBzaG90Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzE1Nzk5
OSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9oZWFwLXNuYXBzaG90LWNvbGxlY3Rpb24tZXZlbnQuaHRt
bCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTgxODMyIGluc3BlY3Rvci91bml0LXRl
c3RzL3Rocm90dGxlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4MTgzMiBp
bnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMTYxMzYxIGluc3BlY3Rvci91bml0LXRlc3RzL3lpZWxkYWJsZS10YXNrLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE2OTIyOCBpbnNwZWN0b3Ivd29ya2VyL2Nv
bnNvbGUtYmFzaWMuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTY0ODcyIGlu
c3BlY3Rvci93b3JrZXIvZGVidWdnZXItbXVsdGlwbGUtdGFyZ2V0cy1wYXVzZS5odG1sIFsgUGFz
cyBGYWlsdXJlIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362636</attachid>
            <date>2019-02-21 13:19:24 -0800</date>
            <delta_ts>2019-02-24 19:04:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194721-20190221131923.patch</filename>
            <type>text/plain</type>
            <size>87163</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGYzMTJkMTJiMmYzNWE3MmNjMTJiOTRmZjUzOGJi
NmZkYzk4NmUxMGIuLjQyYzVjNzM4ZTViNjEyMGZkNTYwYThiZjk3ZjBjZjJiMGFjN2VjODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE5LTAyLTIxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
YWtlIGRlYm91bmNlIFByb3h5IGludG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFRoZSBgZGVib3VuY2VgL2B0aHJvdHRsZWAg
ZnVuY3Rpb25zIGxldmVyYWdlZCBhIGBQcm94eWAgdG8gaW50ZXJjZXB0IHRoZSBmdW5jdGlvbiBj
YWxsIGFuZAorICAgICAgICByZXBsYWNlIGl0IHdpdGggYSAiZGVsYXllZCIgdmVyc2lvbi4gVGhl
IGlzc3VlIHdpdGggdGhpcyBpcyB0aGF0IGl0IHNldCB0aGUgaWRlbnRpZmllciBmb3IKKyAgICAg
ICAgdGhlIHRpbWVyIG9uIHRoZSBmdW5jdGlvbiBpdHNlbGYsIHdoaWNoIGlzIHNoYXJlZCBhY3Jv
c3MgYWxsIGluc3RhbmNlcyBvZiBhIGdpdmVuIGNsYXNzLgorICAgICAgICBXaGVuIGRpZmZlcmVu
dCBpbnN0YW5jZXMgY2FsbCB0aGUgc2FtZSBkZWxheWVkIGZ1bmN0aW9uLCB0aGV5J2QgY2xvYmJl
ciBlYWNob3RoZXIncyBhdHRlbXB0cworICAgICAgICB0byBkZWxheSB3b3JrLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9CYXNlL0RlYm91bmNlci5qczogQWRkZWQuCisgICAgICAgIChEZWJv
dW5jZXIpOgorICAgICAgICAoRGVib3VuY2VyLnByb3RvdHlwZS5mb3JjZSk6CisgICAgICAgIChE
ZWJvdW5jZXIucHJvdG90eXBlLmRlbGF5Rm9yVGltZSk6CisgICAgICAgIChEZWJvdW5jZXIucHJv
dG90eXBlLmRlbGF5Rm9yRnJhbWUpOgorICAgICAgICAoRGVib3VuY2VyLnByb3RvdHlwZS5kZWxh
eUZvck1pY3JvdGFzayk6CisgICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLmNhbmNlbCk6Cisg
ICAgICAgIChEZWJvdW5jZXIucHJvdG90eXBlLl9leGVjdXRlKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0Jhc2UvVGhyb3R0bGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFRocm90dGxlcik6Cisg
ICAgICAgIChUaHJvdHRsZXIucHJvdG90eXBlLmZvcmNlKToKKyAgICAgICAgKFRocm90dGxlci5w
cm90b3R5cGUuZmlyZSk6CisgICAgICAgIChUaHJvdHRsZXIucHJvdG90eXBlLmNhbmNlbCk6Cisg
ICAgICAgIChUaHJvdHRsZXIucHJvdG90eXBlLl9leGVjdXRlKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9CZXppZXJFZGl0b3IuanM6CisgICAgICAgIChXSS5CZXppZXJFZGl0b3IpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanM6CisgICAgICAgIChXSS5Db250
ZW50QnJvd3Nlcik6CisgICAgICAgIChXSS5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuX2NvbnRl
bnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSk6CisgICAgICAgIChXSS5Db250
ZW50QnJvd3Nlci5wcm90b3R5cGUuX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRP
YmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5f
Y3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvbnRlbnRCcm93c2Vy
LnByb3RvdHlwZS5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZl
bnQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0
ZXIuanM6CisgICAgICAgIChXSS5ET01UcmVlVXBkYXRlcik6CisgICAgICAgIChXSS5ET01UcmVl
VXBkYXRlci5wcm90b3R5cGUuX25vZGVBdHRyaWJ1dGVNb2RpZmllZCk6CisgICAgICAgIChXSS5E
T01UcmVlVXBkYXRlci5wcm90b3R5cGUuX25vZGVJbnNlcnRlZCk6CisgICAgICAgIChXSS5ET01U
cmVlVXBkYXRlci5wcm90b3R5cGUuX25vZGVSZW1vdmVkKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLmNsb3NlZCk6CisgICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5zaG93RW1wdHlDb250ZW50UGxhY2Vob2xkZXIpOgorICAgICAgICAoV0kuTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5wcm90b3R5cGUuaGlkZUVtcHR5Q29udGVudFBsYWNlaG9sZGVyKToKKyAg
ICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnVwZGF0ZUZpbHRlcik6
CisgICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93bik6Cisg
ICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSk6CisgICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRBZGRlZE9yQ2hhbmdlZCk6CisgICAgICAgIChX
SS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1lbnREaXNjbG9zdXJl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0NvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVjb3JkaW5nQ29udGVudFZpZXcpOgorICAgICAgICAo
V0kuUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlLnVwZGF0ZUFjdGlvbkluZGV4KToKKyAg
ICAgICAgKFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4pOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVmcmVz
aFJlbGF0ZWRSZXNvdXJjZXNTZWN0aW9uKToKKyAgICAgICAgKFdJLlJlc291cmNlRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUuX2FwcGx5UmVzb3VyY2VFdmVudExpc3RlbmVycyk6CisgICAg
ICAgIChXSS5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU2hh
ZGVyUHJvZ3JhbUNvbnRlbnRWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Nw
cmluZ0VkaXRvci5qczoKKyAgICAgICAgKFdJLlNwcmluZ0VkaXRvci5wcm90b3R5cGUuX3Jlc2V0
UHJldmlld0FuaW1hdGlvbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKFdJLlRyZWVFbGVtZW50LnByb3RvdHlwZS5zZXQgaGlkZGVuKToK
KyAgICAgICAgKFdJLlRyZWVFbGVtZW50LnByb3RvdHlwZS5kaWRDaGFuZ2UpOgorICAgICAgICAo
V0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRhY2gpOgorICAgICAgICAoV0kuVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9kZXRhY2gpOgorICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBl
LmNvbGxhcHNlKToKKyAgICAgICAgKFdJLlRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmQpOgor
ICAgICAgICAoV0kuVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVhbCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5l
KToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZWdpc3RlclNjcm9sbFZpcnR1
YWxpemVyKToKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5nZXQgdXBkYXRlVmly
dHVhbGl6ZWRFbGVtZW50c0RlYm91bmNlcik6IEFkZGVkLgorICAgICAgICAoV0kuVHJlZU91dGxp
bmUucHJvdG90eXBlLl91cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKTogQWRkZWQuCisgICAgICAg
IChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUudXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cy53YWxr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS51cGRhdGVWaXJ0
dWFsaXplZEVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYlNvY2tldENvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuV2ViU29ja2V0Q29udGVudFZp
ZXcpOgorICAgICAgICAoV0kuV2ViU29ja2V0Q29udGVudFZpZXcucHJvdG90eXBlLnNob3duKToK
KyAgICAgICAgKFdJLldlYlNvY2tldENvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlRnJhbWVz
U29vbik6CisgICAgICAgIChXSS5XZWJTb2NrZXRDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0
ZUZyYW1lcyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgKiAuZXNsaW50cmM6CisKIDIwMTkt
MDItMjEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IG1hY09TIHVzZXIgYWdlbnQgb3B0aW9uIHNob3VsZCBiZSBhdmFpbGFibGUgaW4g
ZGV2aWNlIHNldHRpbmdzIG1lbnUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8u
ZXNsaW50cmMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjCmluZGV4IGE4YzA0ZGRj
MDYyN2FjMDU4NDJmZDJiMDBkODNmZDU2MzFiZGE0MGEuLmQyMDEwNDM1NmQ4ZDNhMTMxNjE4Nzk0
ZjM0ZTQzNmNjYWMxNjkzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNs
aW50cmMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRyYwpAQCAtNjQsNiArNjQs
NyBAQAogCiAgICAgICAgIC8vIFdlYkluc3BlY3RvcgogICAgICAgICAiQXN5bmNUZXN0U3VpdGUi
OiB0cnVlLAorICAgICAgICAiRGVib3VuY2VyIjogdHJ1ZSwKICAgICAgICAgIkZvcm1hdHRlciI6
IHRydWUsCiAgICAgICAgICJGb3JtYXR0ZXJDb250ZW50QnVpbGRlciI6IHRydWUsCiAgICAgICAg
ICJGcm9udGVuZFRlc3RIYXJuZXNzIjogdHJ1ZSwKQEAgLTgwLDYgKzgxLDcgQEAKICAgICAgICAg
IlN5bmNUZXN0U3VpdGUiOiB0cnVlLAogICAgICAgICAiVGVzdEhhcm5lc3MiOiB0cnVlLAogICAg
ICAgICAiVGVzdFN1aXRlIjogdHJ1ZSwKKyAgICAgICAgIlRocm90dGxlciI6IHRydWUsCiAKICAg
ICAgICAgLy8gRXh0ZXJuYWxzCiAgICAgICAgICJDb2RlTWlycm9yIjogdHJ1ZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRGVib3VuY2VyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9EZWJvdW5jZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmU3N2I1MjY4YTE0OTYwYTIwNGFlOGNmNmQ1NDc4NWYzNTUyMWU5YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
RGVib3VuY2VyLmpzCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRGVib3VuY2Vy
IHdyYXBzIGEgZnVuY3Rpb24gYW5kIGNvbnRpbnVlcyB0byBkZWxheSBpdHMgaW52b2NhdGlvbiBh
cyBsb25nIGFzCisvLyBjbGllbnRzIGNvbnRpbnVlIHRvIGRlbGF5IGl0cyBmaXJpbmcuIFRoZSBt
b3N0IHJlY2VudCBkZWxheSBjYWxsIG92ZXJyaWRlcworLy8gcHJldmlvdXMgY2FsbHMuIERlbGF5
cyBtYXkgYmUgdGltZW91dHMsIGFuaW1hdGlvbiBmcmFtZXMsIG9yIG1pY3JvdGFza3MuCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgICAgbGV0IGRlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKCkg
PT4geyB0aGlzLnJlZnJlc2goKSB9KTsKKy8vICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImtleWRvd24iLCAoZXZlbnQpID0+IHsgZGVib3VuY2VyLmRlbGF5Rm9yVGltZSgxMDApOyB9KTsK
Ky8vCisvLyBXaWxsIGVuc3VyZSBgcmVmcmVzaGAgd2lsbCBub3QgaGFwcGVuIHVudGlsIG5vIGtl
eWV2ZW50IGhhcyBoYXBwZW5lZCBpbiAxMDBtczoKKy8vCisvLyAgICAgICAgICAgICAgIDBtcyAg
ICAgICAgICAxMDBtcyAgICAgICAgIDIwMG1zICAgICAgICAgMzAwbXMgICAgICAgICA0MDBtcwor
Ly8gICAgIHRpbWU6ICAgICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0t
LS0tfC0tLS0tLS0tLS0tLS18CisvLyAgICAgZGVsYXk6ICAgICBeICAgICBeIF4gICAgICAgIF4g
ICAgICBeICAgICAgICBeICAgIF4gICBeCisvLyAgICAgcmVmcmVzaGVzOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKDEpCisvLworLy8g
V2hlbiB0aGUgd3JhcHBlZCBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQsIGl0IHdpbGwgYmUg
Z2l2ZW4gdGhlIG1vc3QgcmVjZW50IHNldCBvZiBhcmd1bWVudHMuCisKK2NsYXNzIERlYm91bmNl
cgoreworICAgIGNvbnN0cnVjdG9yKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKTsKKworICAgICAgICB0aGlzLl9j
YWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gW107CisK
KyAgICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIHRo
aXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5f
cHJvbWlzZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgfQorCisgICAgLy8gUHVibGljCisK
KyAgICBmb3JjZSgpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gYXJndW1l
bnRzOworICAgICAgICB0aGlzLl9leGVjdXRlKCk7CisgICAgfQorCisgICAgZGVsYXlGb3JUaW1l
KHRpbWUsIC4uLmFyZ3MpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lID49IDAp
OworCisgICAgICAgIHRoaXMuY2FuY2VsKCk7CisKKyAgICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50
cyA9IGFyZ3M7CisKKyAgICAgICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICAgICAgfSwgdGltZSk7
CisgICAgfQorCisgICAgZGVsYXlGb3JGcmFtZSgpCisgICAgeworICAgICAgICB0aGlzLmNhbmNl
bCgpOworCisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBhcmd1bWVudHM7CisKKyAgICAg
ICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZGVsYXlGb3JNaWNyb3Rhc2soKQorICAgIHsKKyAgICAgICAgdGhpcy5jYW5jZWwo
KTsKKworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gYXJndW1lbnRzOworCisgICAgICAg
IGxldCBwcm9taXNlSWRlbnRpZmllciA9IFN5bWJvbCgibmV4dC1taWNyb3Rhc2siKTsKKworICAg
ICAgICB0aGlzLl9wcm9taXNlSWRlbnRpZmllciA9IHByb21pc2VJZGVudGlmaWVyOworCisgICAg
ICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wcm9taXNl
SWRlbnRpZmllciA9PT0gcHJvbWlzZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgdGhpcy5f
ZXhlY3V0ZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjYW5jZWwoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fbGFzdEFyZ3VtZW50cyA9IFtdOworCisgICAgICAgIGlmICh0aGlzLl90aW1l
b3V0SWRlbnRpZmllcikgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyID0gdW5kZWZp
bmVkOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRp
ZmllcikgeworICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9u
RnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWRlbnRp
ZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9wcm9taXNl
SWRlbnRpZmllcikKKyAgICAgICAgICAgIHRoaXMuX3Byb21pc2VJZGVudGlmaWVyID0gdW5kZWZp
bmVkOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9leGVjdXRlKCkKKyAgICB7Cisg
ICAgICAgIGxldCBhcmdzID0gdGhpcy5fbGFzdEFyZ3VtZW50czsKKworICAgICAgICB0aGlzLmNh
bmNlbCgpOworCisgICAgICAgIHRoaXMuX2NhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7
CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9UaHJvdHRsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1Rocm90dGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzk5YmYxNDI4ZWJjMWU4OGJiMTU2NDk4
MmExMmNlMjVmM2FkODRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9UaHJvdHRsZXIuanMKQEAgLTAsMCArMSwxMDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBUaHJvdHRsZXIgd3JhcHMgYSBmdW5jdGlvbiBhbmQgZW5zdXJlcyBpdCBkb2Vz
bid0IGdldCBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgZXZlcnkgYGRlbGF5YCBtcy4KKy8vIFRoZSBm
aXJzdCBmaXJlIHdpbGwgYWx3YXlzIHRyaWdnZXIgc3luY2hyb25vdXMsIGFuZCBzdWJzZXF1ZW50
IGNhbGxzIHRoYXQgbmVlZCB0byBiZSB0aHJvdHRsZWQKKy8vIHdpbGwgaGFwcGVuIGxhdGVyIGFz
eW5jaHJvbm91c2x5LgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICAgIGxldCB0aHJvdHRsZXIg
PSBuZXcgVGhyb3R0bGVyKDI1MCwgKCkgPT4geyB0aGlzLnJlZnJlc2goKSB9KTsKKy8vICAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCAoZXZlbnQpID0+IHsgdGhyb3R0bGVy
LmZpcmUoKTsgfSk7CisvLworLy8gV2lsbCBlbnN1cmUgYHJlZnJlc2hgIGhhcHBlbnMgbm8gbW9y
ZSB0aGFuIG9uY2UgZXZlcnkgMjUwbXMgbm8gbWF0dGVyIGhvdyBvZnRlbiBgZmlyZWAgaXMgY2Fs
bGVkOgorLy8KKy8vICAgICAgICAgICAgICAgMG1zICAgICAgICAgICAgICAgICAgICAgICAgMjUw
bXMgICAgICAgICAgICAgICAgICAgICAgIDUwMG1zCisvLyAgICAgdGltZTogICAgICB8LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKy8vICAg
ICBmaXJlOiAgICAgIF4gICAgIF4gXiAgICAgICAgXiAgICAgIF4gICAgICAgIF4gICAgXiAgIF4K
Ky8vICAgICByZWZyZXNoZXM6ICogKDEpICAgICAgICAgICAgICAgICAgICAgICAqICgyKSAgICAg
ICAgICAgICAgICAgICAgICAgKiAoMykKKy8vCisvLyBXaGVuIHRoZSB3cmFwcGVkIGZ1bmN0aW9u
IGlzIGFjdHVhbGx5IGNhbGxlZCwgaXQgd2lsbCBiZSBnaXZlbiB0aGUgbW9zdCByZWNlbnQgc2V0
IG9mIGFyZ3VtZW50cy4KKworY2xhc3MgVGhyb3R0bGVyCit7CisgICAgY29uc3RydWN0b3IoY2Fs
bGJhY2ssIGRlbGF5KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGNhbGxi
YWNrID09PSAiZnVuY3Rpb24iKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsYXkgPj0gMCk7
CisKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5fZGVs
YXkgPSBkZWxheTsKKworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gW107CisKKyAgICAg
ICAgdGhpcy5fdGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMuX2xh
c3RGaXJlVGltZSA9IC10aGlzLl9kZWxheTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAg
IGZvcmNlKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBhcmd1bWVudHM7
CisgICAgICAgIHRoaXMuX2V4ZWN1dGUoKTsKKyAgICB9CisKKyAgICBmaXJlKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2xhc3RBcmd1bWVudHMgPSBhcmd1bWVudHM7CisKKyAgICAgICAgbGV0IHJl
bWFpbmluZyA9IHRoaXMuX2RlbGF5IC0gKERhdGUubm93KCkgLSB0aGlzLl9sYXN0RmlyZVRpbWUp
OworICAgICAgICBpZiAocmVtYWluaW5nIDw9IDApIHsKKyAgICAgICAgICAgIHRoaXMuX2V4ZWN1
dGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlz
Ll90aW1lb3V0SWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll90aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgdGhp
cy5fZXhlY3V0ZSgpOworICAgICAgICB9LCByZW1haW5pbmcpOworICAgIH0KKworICAgIGNhbmNl
bCgpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0QXJndW1lbnRzID0gW107CisKKyAgICAgICAg
aWYgKHRoaXMuX3RpbWVvdXRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQo
dGhpcy5fdGltZW91dElkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fdGltZW91dElkZW50
aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfZXhlY3V0ZSgpCisgICAgeworICAgICAgICB0aGlzLl9sYXN0RmlyZVRpbWUgPSBEYXRl
Lm5vdygpOworCisgICAgICAgIGxldCBhcmdzID0gdGhpcy5fbGFzdEFyZ3VtZW50czsKKworICAg
ICAgICB0aGlzLmNhbmNlbCgpOworCisgICAgICAgIHRoaXMuX2NhbGxiYWNrLmFwcGx5KHVuZGVm
aW5lZCwgYXJncyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwppbmRleCA0ZjI4ZGNjZGIzOGQ0NGU4MDgy
ZWFmMmFlY2U5NzNjNDk0OWYyNTdlLi4wYzk3ZGRkZWYyNTEwYjg2MThlNWI3OWFhZmQxNjgzNTM4
MmI0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtMTUxOSwxNTUgKzE1MTksNiBAQCBPYmplY3QuZGVmaW5l
UHJvcGVydHkoUHJvbWlzZSwgImRlbGF5IiwKICAgICB9CiB9KTsKIAotKGZ1bmN0aW9uKCkgewot
ICAgIC8vIFRoZSBgZGVib3VuY2VgIGZ1bmN0aW9uIGxldHMgeW91IGNhbGwgYW55IGZ1bmN0aW9u
IG9uIGFuIG9iamVjdCB3aXRoIGEgZGVsYXkKLSAgICAvLyBhbmQgaWYgdGhlIGZ1bmN0aW9uIGtl
ZXBzIGdldHRpbmcgY2FsbGVkLCB0aGUgZGVsYXkgZ2V0cyByZXNldC4gU2luY2UgYGRlYm91bmNl
YAotICAgIC8vIHJldHVybnMgYSBQcm94eSwgeW91IGNhbiBjYWNoZSBpdCBhbmQgY2FsbCBtdWx0
aXBsZSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBkZWxheS4KLQotICAgIC8vIFVzZTogb2JqZWN0
LmRlYm91bmNlKDIwMCkuZm9vKCJBcmd1bWVudCAxIiwgIkFyZ3VtZW50IDIiKQotICAgIC8vIE5v
dGU6IFRoZSBsYXN0IGNhbGwncyBhcmd1bWVudHMgZ2V0IHVzZWQgZm9yIHRoZSBkZWxheWVkIGNh
bGwuCi0KLSAgICBjb25zdCBkZWJvdW5jZVRpbWVvdXRTeW1ib2wgPSBTeW1ib2woImRlYm91bmNl
LXRpbWVvdXQiKTsKLSAgICBjb25zdCBkZWJvdW5jZVNvb25Qcm94eVN5bWJvbCA9IFN5bWJvbCgi
ZGVib3VuY2Utc29vbi1wcm94eSIpOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVj
dC5wcm90b3R5cGUsICJzb29uIiwKLSAgICB7Ci0gICAgICAgIGdldCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghdGhpc1tkZWJvdW5jZVNvb25Qcm94eVN5bWJvbF0pCi0gICAgICAgICAg
ICAgICAgdGhpc1tkZWJvdW5jZVNvb25Qcm94eVN5bWJvbF0gPSB0aGlzLmRlYm91bmNlKDApOwot
ICAgICAgICAgICAgcmV0dXJuIHRoaXNbZGVib3VuY2VTb29uUHJveHlTeW1ib2xdOwotICAgICAg
ICB9Ci0gICAgfSk7Ci0KLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlw
ZSwgImRlYm91bmNlIiwKLSAgICB7Ci0gICAgICAgIHZhbHVlKGRlbGF5KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChkZWxheSA+PSAwKTsKLQotICAgICAgICAgICAgcmV0
dXJuIG5ldyBQcm94eSh0aGlzLCB7Ci0gICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcGVy
dHksIHJlY2VpdmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsID0gdGFyZ2V0W3Byb3BlcnR5
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBvcmlnaW5h
bCA9PT0gImZ1bmN0aW9uIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5h
bFtkZWJvdW5jZVRpbWVvdXRTeW1ib2xdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFyVGltZW91dChvcmlnaW5hbFtkZWJvdW5jZVRpbWVvdXRTeW1ib2xdKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgbGV0IHBlcmZvcm1Xb3JrID0gKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9yaWdpbmFsW2RlYm91bmNlVGltZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwuYXBwbHkodGFyZ2V0LCBhcmdz
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdpbmFsW2RlYm91bmNlVGltZW91dFN5bWJvbF0gPSBzZXRUaW1lb3V0KHBlcmZvcm1Xb3Jr
LCBkZWxheSk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICJjYW5jZWxEZWJvdW5jZSIsCi0gICAgewotICAgICAg
ICB2YWx1ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpc1tkZWJvdW5jZVRpbWVv
dXRTeW1ib2xdKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRoaXNbZGVib3VuY2VUaW1lb3V0U3ltYm9sXSk7Ci0gICAgICAgICAgICB0aGlzW2Rl
Ym91bmNlVGltZW91dFN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZVN5bWJvbCA9IFN5bWJvbCgicGVmb3JtLW9u
LWFuaW1hdGlvbi1mcmFtZSIpOwotICAgIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZVByb3h5
U3ltYm9sID0gU3ltYm9sKCJwZXJmb3JtLW9uLWFuaW1hdGlvbi1mcmFtZS1wcm94eSIpOwotCi0g
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJvbk5leHRGcmFtZSIs
Ci0gICAgewotICAgICAgICBnZXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXNb
cmVxdWVzdEFuaW1hdGlvbkZyYW1lUHJveHlTeW1ib2xdKSB7Ci0gICAgICAgICAgICAgICAgdGhp
c1tyZXF1ZXN0QW5pbWF0aW9uRnJhbWVQcm94eVN5bWJvbF0gPSBuZXcgUHJveHkodGhpcywgewot
ICAgICAgICAgICAgICAgICAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4gewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbCA9IHRhcmdldFtwcm9wZXJ0eV07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG9yaWdpbmFsID09PSAi
ZnVuY3Rpb24iKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5hbFty
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVTeW1ib2xdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGVyZm9ybVdv
cmsgPSAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsW3Jl
cXVlc3RBbmltYXRpb25GcmFtZVN5bWJvbF0gPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9yaWdpbmFsLmFwcGx5KHRhcmdldCwgYXJncyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdp
bmFsW3JlcXVlc3RBbmltYXRpb25GcmFtZVN5bWJvbF0gPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
cGVyZm9ybVdvcmspOwotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICByZXR1cm4gdGhpc1tyZXF1ZXN0QW5pbWF0aW9uRnJhbWVQcm94eVN5bWJvbF07Ci0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHRocm90dGxlVGltZW91dFN5bWJvbCA9IFN5bWJvbCgi
dGhyb3R0bGUtdGltZW91dCIpOwotCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5w
cm90b3R5cGUsICJ0aHJvdHRsZSIsCi0gICAgewotICAgICAgICB2YWx1ZShkZWxheSkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsYXkgPj0gMCk7Ci0KLSAgICAgICAg
ICAgIGxldCBsYXN0RmlyZVRpbWUgPSBOYU47Ci0gICAgICAgICAgICBsZXQgbW9zdFJlY2VudEFy
Z3VtZW50cyA9IG51bGw7Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkodGhpcywgewot
ICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcikgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxldCBvcmlnaW5hbCA9IHRhcmdldFtwcm9wZXJ0eV07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygb3JpZ2luYWwgPT09ICJmdW5jdGlvbiIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbW9zdFJlY2VudEFyZ3VtZW50cyA9IGFyZ3M7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHBlcmZvcm1Xb3JrKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxhc3RGaXJlVGltZSA9IERhdGUubm93KCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3JpZ2luYWxbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSA9IHVuZGVmaW5l
ZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbC5hcHBseSh0YXJnZXQsIG1v
c3RSZWNlbnRBcmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNOYU4obGFzdEZpcmVUaW1lKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBlcmZvcm1Xb3JrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsZXQgcmVtYWluaW5nID0gZGVsYXkgLSAoRGF0ZS5ub3coKSAtIGxhc3RGaXJlVGlt
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nIDw9IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbC5jYW5jZWxUaHJvdHRsZSgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1Xb3JrKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsW3Rocm90dGxlVGltZW91dFN5bWJvbF0pCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxbdGhyb3R0bGVUaW1lb3V0U3ltYm9sXSA9
IHNldFRpbWVvdXQocGVyZm9ybVdvcmssIHJlbWFpbmluZyk7Ci0gICAgICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9
KTsKLQotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICJjYW5j
ZWxUaHJvdHRsZSIsCi0gICAgewotICAgICAgICB2YWx1ZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghdGhpc1t0aHJvdHRsZVRpbWVvdXRTeW1ib2xdKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXNbdGhyb3R0bGVUaW1lb3V0U3lt
Ym9sXSk7Ci0gICAgICAgICAgICB0aGlzW3Rocm90dGxlVGltZW91dFN5bWJvbF0gPSB1bmRlZmlu
ZWQ7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0pKCk7Ci0KIGZ1bmN0aW9uIGFwcGVuZFdlYkluc3Bl
Y3RvclNvdXJjZVVSTChzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pbmNsdWRlcygiLy8jIHNv
dXJjZVVSTCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCmluZGV4IGNlYjI0MjY1ZTk4ODZiNjQzYWI2NmMxNDkwZmNkZmJlNzk3OTliOTYuLjM0MDk2
MDQ2ZjA4NzBkZTJmNzU2ZjQ1NjFjNTNhYjI4NTgwZWQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTI3NSwxMCArMjc1LDEyIEBACiAK
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9XZWJJbnNwZWN0b3IuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJCYXNlL1BsYXRmb3JtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
QmFzZS9EZWJvdW5jZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RlYnVn
Z2FibGVUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaW5rZWRMaXN0
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaXN0TXVsdGltYXAuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL09iamVjdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkJhc2UvVGhyb3R0bGVyLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQg
c3JjPSJCYXNlL0RPTVV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJh
c2UvRXZlbnRMaXN0ZW5lci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggM2M0NzRjNTRhZWQwZDE4OGVjZTU2NTRlZDY2
MWY1MWRlYzJiMmUxOC4uMWI0ZDZkZWNlNTUyODIyZDlmZDk3YjMxYWEwMjQwOWVmMWQyZmFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAt
MzcsMTAgKzM3LDEyIEBACiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9XZWJJbnNwZWN0b3IuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1BsYXRmb3JtLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJvdW5jZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJCYXNlL0RlYnVnZ2FibGVUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQmFzZS9MaW5rZWRMaXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9M
aXN0TXVsdGltYXAuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL09iamVjdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvVGhyb3R0bGVyLmpzIj48L3Njcmlw
dD4KIAogICAgIDxzY3JpcHQgc3JjPSJUZXN0L1Rlc3RIYXJuZXNzLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVGVzdC9Gcm9udGVuZFRlc3RIYXJuZXNzLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Jlemll
ckVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Jl
emllckVkaXRvci5qcwppbmRleCAxMzIyODU5YTYwODE2ZmJhZjIwMGIzMTEzYjI3MWM2ZTg0OWQ5
ODI4Li4zOTVhMTViZGNkNTk3ZjQ2NDg2Yjk5MzRmNDhmYWU1MjkxZjBiNWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CZXppZXJFZGl0b3Iu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQmV6aWVy
RWRpdG9yLmpzCkBAIC0xMDEsNyArMTAxLDcgQEAgV0kuQmV6aWVyRWRpdG9yID0gY2xhc3MgQmV6
aWVyRWRpdG9yIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heCkp
CiAgICAgICAgICAgICAgICAgdGhpc1trZXldLm1heCA9IG1heDsKIAotICAgICAgICAgICAgdGhp
c1trZXldLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5kZWJvdW5jZSgyNTApLl9oYW5k
bGVOdW1iZXJJbnB1dElucHV0KTsKKyAgICAgICAgICAgIHRoaXNba2V5XS5hZGRFdmVudExpc3Rl
bmVyKCJpbnB1dCIsIHRoaXMuX2hhbmRsZU51bWJlcklucHV0SW5wdXQuYmluZCh0aGlzKSk7CiAg
ICAgICAgICAgICB0aGlzW2tleV0uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hh
bmRsZU51bWJlcklucHV0S2V5ZG93bi5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJv
d3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRCcm93c2VyLmpzCmluZGV4IDM1ZTdiNTY1MmU2NmEwNWRhNGIyZjdiYzdiMTQ5ODMzMDVjNGUz
YWMuLjdlOWEyZjkxZWZmNDhjYjBmZTRiYjYxZTYwOGE1Njc1YmY1ZjAyNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRCcm93c2VyLmpzCkBAIC05MSw2ICs5MSwxMCBAQCBXSS5Db250ZW50QnJvd3NlciA9IGNsYXNz
IENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9
IGRlbGVnYXRlIHx8IG51bGw7CiAKICAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3TmF2
aWdhdGlvbkl0ZW1zID0gW107CisKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVz
ZW50ZWRPYmplY3RzRGlkQ2hhbmdlRGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoKSA9PiB7Cisg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50QnJvd3Nl
ci5FdmVudC5DdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC00NjksMTMgKzQ3Myw2IEBAIFdJLkNvbnRlbnRC
cm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBfZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
RXZlbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRP
YmplY3RzRGlkQ2hhbmdlRXZlbnQuY2FuY2VsRGVib3VuY2UoKTsKLQotICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50UmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9Ci0KICAgICBfY29udGVudFZpZXdTZWxl
Y3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2
ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJyZW50Q29udGVudFZpZXcpCkBAIC00OTIsNyArNDg5LDcg
QEAgV0kuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdJLlZp
ZXcKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLm5lZWRzTGF5b3V0KCk7CiAKLSAgICAg
ICAgdGhpcy5zb29uLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VF
dmVudCgpOworICAgICAgICB0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2VEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogICAgIH0KIAogICAgIF9jb250ZW50
Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZShldmVudCkKQEAgLTUw
NCw3ICs1MDEsNyBAQCBXSS5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4
dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnBhcmVudENvbnRhaW5lciAh
PT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgdGhpcy5zb29uLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFu
Z2VFdmVudCgpOworICAgICAgICB0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVj
dHNEaWRDaGFuZ2VEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogICAgIH0KIAogICAgIF9jdXJy
ZW50Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQpCkBAIC01MjIsNyArNTE5LDcgQEAgV0kuQ29u
dGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdJLlZpZXcKIAogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50QnJvd3Nlci5FdmVu
dC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogCi0gICAgICAgIHRoaXMuX2Rpc3BhdGNo
Q3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7CisgICAgICAgIHRoaXMu
X2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZURlYm91bmNlci5mb3Jj
ZSgpOwogICAgIH0KIAogICAgIF9jb250ZW50Vmlld05hdmlnYXRpb25JdGVtc0RpZENoYW5nZShl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVVcGRhdGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKaW5kZXggYTU0NjAyNjZlMzVkMjgxZTM2ODE2MWJh
ZWU2MjhlZmYyY2YxOWYxNS4uYzI0NTVhNjYzZDU5NDIwYjU1ZTUzNzRhMmM1ZjEzY2NkMGUyYTZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZVVwZGF0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKQEAgLTQ4LDYgKzQ4LDEwIEBAIFdJLkRPTVRyZWVV
cGRhdGVyID0gZnVuY3Rpb24odHJlZU91dGxpbmUpCiAKICAgICAvLyBEdW1teSAiYXR0cmlidXRl
IiB0aGF0IGlzIHVzZWQgdG8gdHJhY2sgdGV4dENvbnRlbnQgY2hhbmdlcy4KICAgICB0aGlzLl90
ZXh0Q29udGVudEF0dHJpYnV0ZVN5bWJvbCA9IFN5bWJvbCgidGV4dC1jb250ZW50LWF0dHJpYnV0
ZSIpOworCisgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlciA9IG5ldyBEZWJv
dW5jZXIoKCkgPT4geworICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7CisgICAg
fSk7CiB9OwogCiBXSS5ET01UcmVlVXBkYXRlci5wcm90b3R5cGUgPSB7CkBAIC04MSwyMSArODUs
MjEgQEAgV0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWNl
bnRseU1vZGlmaWVkTm9kZXMuYWRkKG5vZGUpOwogCiAgICAgICAgIGlmICh0aGlzLl90cmVlT3V0
bGluZS5fdmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMub25OZXh0RnJhbWUuX3VwZGF0ZU1vZGlm
aWVkTm9kZXMoKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNEZWJvdW5j
ZXIuZGVsYXlGb3JGcmFtZSgpOwogICAgICAgfSwKIAogICAgIF9ub2RlSW5zZXJ0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjZW50bHlJbnNlcnRlZE5vZGVzLnNl
dChldmVudC5kYXRhLm5vZGUsIHtwYXJlbnQ6IGV2ZW50LmRhdGEucGFyZW50fSk7CiAgICAgICAg
IGlmICh0aGlzLl90cmVlT3V0bGluZS5fdmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMub25OZXh0
RnJhbWUuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1v
ZGlmaWVkTm9kZXNEZWJvdW5jZXIuZGVsYXlGb3JGcmFtZSgpOwogICAgIH0sCiAKICAgICBfbm9k
ZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjZW50bHlE
ZWxldGVkTm9kZXMuc2V0KGV2ZW50LmRhdGEubm9kZSwge3BhcmVudDogZXZlbnQuZGF0YS5wYXJl
bnR9KTsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQotICAgICAgICAg
ICAgdGhpcy5vbk5leHRGcmFtZS5fdXBkYXRlTW9kaWZpZWROb2RlcygpOworICAgICAgICAgICAg
dGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAg
fSwKIAogICAgIF9jaGlsZE5vZGVDb3VudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggYzUzZGY0YWUzYTYzN2I0NDVjN2Jh
MWM2MDAzMDk0ZjM3OWYzMjA0Yy4uMTM5ZTdmNjJiOTRiNzI5ZGZmNjA4M2ZkMjUwZjJhYmMyY2Q0
MDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC0zMSw3ICsz
MSwxNCBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogCiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJuYXZpZ2F0aW9uIik7CiAKLSAgICAgICAgdGhpcy5jb250ZW50Vmlldy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuc29vbi5fdXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRP
dmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsK
KyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHko
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93
U2hhZG93VmlzaWJpbGl0eVNvb24gPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZGVsYXlGb3JUaW1l
KDApOworICAgICAgICB9OworCisgICAgICAgIHRoaXMuY29udGVudFZpZXcuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9ib3VuZFVwZGF0ZUNvbnRlbnRPdmVyZmxvd1No
YWRvd1Zpc2liaWxpdHlTb29uKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmVH
cm91cCA9IG5ldyBXSS5UcmVlT3V0bGluZUdyb3VwOwogICAgICAgICB0aGlzLl9jb250ZW50VHJl
ZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSgpOwpAQCAtNDksOCArNTYs
NyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICAgICAgdGhpcy5fdG9wT3ZlcmZs
b3dTaGFkb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5P
dmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZSwgInRvcCIpOwogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5fYm91bmRVcGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5
ID0gdGhpcy5zb29uLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5OwotICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRVcGRhdGVD
b250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eVNvb24pOwogCiAgICAgICAgIHRoaXMuX2ZpbHRlcnNTZXR0aW5nID0gbmV3IFdJ
LlNldHRpbmcoaWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLWZpbHRlcnMiLCB7fSk7
CiAgICAgICAgIHRoaXMuX2ZpbHRlckJhci5maWx0ZXJzID0gdGhpcy5fZmlsdGVyc1NldHRpbmcu
dmFsdWU7CkBAIC03Nyw3ICs4Myw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAKICAgICBj
bG9zZWQoKQogICAgIHsKLSAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6
ZSIsIHRoaXMuX2JvdW5kVXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSk7Cisg
ICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9ib3VuZFVw
ZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlTb29uKTsKICAgICAgICAgV0kuRnJh
bWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICB9CiAKQEAgLTI3
Myw3ICsyNzksNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICBsZXQgZW1wdHlD
b250ZW50UGxhY2Vob2xkZXJQYXJlbnRFbGVtZW50ID0gdHJlZU91dGxpbmUuZWxlbWVudC5wYXJl
bnROb2RlOwogICAgICAgICBlbXB0eUNvbnRlbnRQbGFjZWhvbGRlclBhcmVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50KTsKIAotICAgICAgICB0aGlz
Ll91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7CisgICAgICAgIHRoaXMu
X3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZm9yY2UoKTsK
IAogICAgICAgICByZXR1cm4gZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50OwogICAgIH0K
QEAgLTI4OSw3ICsyOTUsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2
aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICBlbXB0
eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIHRoaXMuX2VtcHR5
Q29udGVudFBsYWNlaG9sZGVyRWxlbWVudHMuZGVsZXRlKHRyZWVPdXRsaW5lKTsKIAotICAgICAg
ICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7CisgICAgICAg
IHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZm9y
Y2UoKTsKICAgICB9CiAKICAgICB1cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcihtZXNzYWdl
LCB0cmVlT3V0bGluZSkKQEAgLTM0NSw3ICszNTEsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5l
bAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY2hlY2tGb3JFbXB0eUZpbHRlclJlc3VsdHMo
KTsKLSAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgp
OworICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5RGVi
b3VuY2VyLmZvcmNlKCk7CiAgICAgfQogCiAgICAgcmVzZXRGaWx0ZXIoKQpAQCAtNDY4LDcgKzQ3
NCw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgewogICAgICAgICBzdXBlci5zaG93
bigpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxp
dHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0
eURlYm91bmNlci5mb3JjZSgpOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZApAQCAtNTAzLDgg
KzUwOSw2IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgIGlmICghdGhpcy52aXNp
YmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRP
dmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkuY2FuY2VsRGVib3VuY2UoKTsKLQogICAgICAgICBsZXQg
c2Nyb2xsSGVpZ2h0ID0gdGhpcy5jb250ZW50Vmlldy5lbGVtZW50LnNjcm9sbEhlaWdodDsKICAg
ICAgICAgbGV0IG9mZnNldEhlaWdodCA9IHRoaXMuY29udGVudFZpZXcuZWxlbWVudC5vZmZzZXRI
ZWlnaHQ7CiAKQEAgLTYwNyw3ICs2MTEsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0g
Y2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAg
ICAgICB0aGlzLl9jaGVja0ZvckVtcHR5RmlsdGVyUmVzdWx0cygpOwogCiAgICAgICAgIGlmICh0
aGlzLnZpc2libGUpCi0gICAgICAgICAgICB0aGlzLnNvb24uX3VwZGF0ZUNvbnRlbnRPdmVyZmxv
d1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVy
Zmxvd1NoYWRvd1Zpc2liaWxpdHlEZWJvdW5jZXIuZGVsYXlGb3JUaW1lKDApOwogCiAgICAgICAg
IGlmICh0aGlzLnNlbGVjdGVkKQogICAgICAgICAgICAgdGhpcy5fY2hlY2tFbGVtZW50c0ZvclBl
bmRpbmdWaWV3U3RhdGVDb29raWUoW3RyZWVFbGVtZW50XSk7CkBAIC02MTUsNyArNjE5LDcgQEAg
V0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXSS5TaWRlYmFyUGFuZWwKIAogICAgIF90cmVlRWxlbWVudERpc2Nsb3N1cmVEaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLnNvb24uX3VwZGF0ZUNvbnRlbnRPdmVy
Zmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJm
bG93U2hhZG93VmlzaWJpbGl0eURlYm91bmNlci5kZWxheUZvclRpbWUoMCk7CiAgICAgfQogCiAg
ICAgX2NoZWNrRm9yU3RhbGVSZXNvdXJjZXNJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZWNvcmRpbmdDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0Nv
bnRlbnRWaWV3LmpzCmluZGV4IGU4ZjdkYjEzOTdlZWE1MzBmZDlkMDM1ODJjYTdiN2U0MTE0ZGFi
MWEuLjEzN2M5NTc4ZjQ1MTI0MDI3NDczMmQxODQ1OGRhNTM2YzZmY2Q4NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0NvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1JlY29yZGluZ0NvbnRlbnRWaWV3LmpzCkBAIC0zNSw3ICszNSwxMiBAQCBXSS5SZWNvcmRpbmdD
b250ZW50VmlldyA9IGNsYXNzIFJlY29yZGluZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZXcKICAgICAgICAgdGhpcy5fYWN0aW9uID0gbnVsbDsKICAgICAgICAgdGhpcy5fc25hcHNo
b3RzID0gW107CiAgICAgICAgIHRoaXMuX2luaXRpYWxDb250ZW50ID0gbnVsbDsKLSAgICAgICAg
dGhpcy5fdGhyb3R0bGVyID0gdGhpcy50aHJvdHRsZSgyMDApOworICAgICAgICB0aGlzLl9nZW5l
cmF0ZUNvbnRlbnRUaHJvdHRsZXIgPSBuZXcgVGhyb3R0bGVyKCgpID0+IHsKKyAgICAgICAgICAg
IGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdJLlJlY29yZGluZy5UeXBlLkNh
bnZhczJEKQorICAgICAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudENhbnZhczJEKHRo
aXMuX2luZGV4KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
dHlwZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzQml0bWFwUmVuZGVyZXIgfHwgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5SZWNvcmRpbmcuVHlwZS5DYW52YXNXZWJHTCkK
KyAgICAgICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZUNvbnRlbnRGcm9tU25hcHNob3QodGhpcy5f
aW5kZXgpOworICAgICAgICB9LCAyMDApOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJyZWNvcmRpbmciLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUpOwogCkBAIC0x
MDMsMTAgKzEwOCw3IEBAIFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgUmVjb3JkaW5n
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHRoaXMuX3VwZGF0
ZVNsaWRlclZhbHVlKCk7CiAKLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlw
ZSA9PT0gV0kuUmVjb3JkaW5nLlR5cGUuQ2FudmFzMkQpCi0gICAgICAgICAgICB0aGlzLl90aHJv
dHRsZXIuX2dlbmVyYXRlQ29udGVudENhbnZhczJEKGluZGV4KTsKLSAgICAgICAgZWxzZSBpZiAo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSBXSS5SZWNvcmRpbmcuVHlwZS5DYW52YXNC
aXRtYXBSZW5kZXJlciB8fCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdJLlJlY29y
ZGluZy5UeXBlLkNhbnZhc1dlYkdMKQotICAgICAgICAgICAgdGhpcy5fdGhyb3R0bGVyLl9nZW5l
cmF0ZUNvbnRlbnRGcm9tU25hcHNob3QoaW5kZXgpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZUNv
bnRlbnRUaHJvdHRsZXIuZmlyZSgpOwogCiAgICAgICAgIHRoaXMuX2FjdGlvbiA9IHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuYWN0aW9uc1t0aGlzLl9pbmRleF07CiAKQEAgLTEzMSw4ICsxMzMsNyBA
QCBXSS5SZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFJlY29yZGluZ0NvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICB7CiAgICAgICAgIHN1cGVyLmhpZGRlbigpOwogCi0g
ICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudENhbnZhczJELmNhbmNlbFRocm90dGxlKCk7Ci0g
ICAgICAgIHRoaXMuX2dlbmVyYXRlQ29udGVudEZyb21TbmFwc2hvdC5jYW5jZWxUaHJvdHRsZSgp
OworICAgICAgICB0aGlzLl9nZW5lcmF0ZUNvbnRlbnRUaHJvdHRsZXIuY2FuY2VsKCk7CiAgICAg
fQogCiAgICAgLy8gUHJvdGVjdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwuanMKaW5kZXggNGNmOWI4YWM1YTk5MTg5YjE1YjllMGZlZGJlZmIzN2UxOWYyNGNk
Yy4uNzU5ZTVkNjU4NzRiOTljYjJlNzk0ODc5OWMyZGIyYjVmYWU5MjlhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxz
U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMjYzLDggKzI2Myw2IEBA
IFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHRlbmRzIFdJLkRlCiAKICAgICBfcmVmcmVzaFJlbGF0ZWRSZXNvdXJjZXNT
ZWN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hSZWxhdGVkUmVzb3VyY2VzU2Vj
dGlvbi5jYW5jZWxUaHJvdHRsZSgpOwotCiAgICAgICAgIC8vIEhpZGUgdGhlIHNlY3Rpb24gaWYg
d2UgZG9uJ3QgaGF2ZSBhbnl0aGluZyB0byBzaG93LgogICAgICAgICBsZXQgZ3JvdXBzID0gdGhp
cy5fbG9jYXRpb25TZWN0aW9uLmdyb3VwczsKICAgICAgICAgbGV0IGlzU2VjdGlvblZpc2libGUg
PSBncm91cHMuaW5jbHVkZXModGhpcy5fcmVsYXRlZFJlc291cmNlc0dyb3VwKTsKQEAgLTYwNyw4
ICs2MDUsMTEgQEAgV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3Vy
Y2VEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGUKIAogICAgIF9hcHBseVJlc291cmNl
RXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90aHJvdHRsZXIpCi0g
ICAgICAgICAgICB0aGlzLl90aHJvdHRsZXIgPSB0aGlzLnRocm90dGxlKDI1MCk7CisgICAgICAg
IGlmICghdGhpcy5fcmVmcmVzaFJlbGF0ZWRSZXNvdXJjZXNTZWN0aW9uVGhyb3R0bGVyKSB7Cisg
ICAgICAgICAgICB0aGlzLl9yZWZyZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb25UaHJvdHRsZXIg
PSBuZXcgVGhyb3R0bGVyKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoUmVs
YXRlZFJlc291cmNlc1NlY3Rpb24oKTsKKyAgICAgICAgICAgIH0sIDI1MCk7CisgICAgICAgIH0K
IAogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2
ZW50LlVSTERpZENoYW5nZSwgdGhpcy5fcmVmcmVzaFVSTCwgdGhpcyk7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuTUlNRVR5cGVEaWRD
aGFuZ2UsIHRoaXMuX3JlZnJlc2hNSU1FVHlwZSwgdGhpcyk7CkBAIC02MjAsNyArNjIxLDkgQEAg
V0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VEZXRhaWxzU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV0kuRGUKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRM
aXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5NZXRyaWNzRGlkQ2hhbmdlLCB0aGlzLl9yZWZyZXNo
UmVxdWVzdEFuZFJlc3BvbnNlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZl
bnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5TaXplRGlkQ2hhbmdlLCB0aGlzLl9yZWZyZXNo
RGVjb2RlZFNpemUsIHRoaXMpOwogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3Rl
bmVyKFdJLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcy5fcmVmcmVz
aFRyYW5zZmVyU2l6ZSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlz
dGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuSW5pdGlhdGVkUmVzb3VyY2VzRGlkQ2hhbmdlLCB0aGlz
Ll90aHJvdHRsZXIuX3JlZnJlc2hSZWxhdGVkUmVzb3VyY2VzU2VjdGlvbiwgdGhpcyk7CisgICAg
ICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuSW5p
dGlhdGVkUmVzb3VyY2VzRGlkQ2hhbmdlLCAoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9yZWZy
ZXNoUmVsYXRlZFJlc291cmNlc1NlY3Rpb25UaHJvdHRsZXIuZmlyZSgpOworICAgICAgICB9LCB0
aGlzKTsKIAogICAgICAgICB0aGlzLl9uZWVkc1RvUmVtb3ZlUmVzb3VyY2VFdmVudExpc3RlbmVy
cyA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3Lmpz
CmluZGV4IDE2Nzk2OTA5NWRlZmI3ZWU1NjkyNDlmN2U3YmE1ZDc0NTBmMmY4M2YuLjI4M2VjNDk5
MDc3MTdjODVkZGFkYmJjMGUyYTVkY2IyOWFhZTA1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQ
cm9ncmFtQ29udGVudFZpZXcuanMKQEAgLTMxLDYgKzMxLDEwIEBAIFdJLlNoYWRlclByb2dyYW1D
b250ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNv
bnRlbnRWCiAKICAgICAgICAgc3VwZXIoc2hhZGVyUHJvZ3JhbSk7CiAKKyAgICAgICAgbGV0IGNv
bnRlbnREaWRDaGFuZ2VEZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChldmVudCkgPT4geworICAg
ICAgICAgICAgdGhpcy5fY29udGVudERpZENoYW5nZShldmVudCk7CisgICAgICAgIH0pOworCiAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZXItcHJvZ3JhbSIpOwogCiAg
ICAgICAgIGxldCBjcmVhdGVFZGl0b3IgPSAoc2hhZGVyVHlwZSkgPT4gewpAQCAtMzgsNyArNDIs
OSBAQCBXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9ncmFtQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICAgICAgdGV4dEVkaXRvci5yZWFk
T25seSA9IGZhbHNlOwogICAgICAgICAgICAgdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdJ
LlRleHRFZGl0b3IuRXZlbnQuRm9jdXNlZCwgdGhpcy5fZWRpdG9yRm9jdXNlZCwgdGhpcyk7CiAg
ICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVu
dC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVz
dWx0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLmRlYm91bmNl
KDI1MCkuX2NvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgdGV4dEVkaXRvci5h
ZGRFdmVudExpc3RlbmVyKFdJLlRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZENoYW5nZSwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgY29udGVudERpZENoYW5nZURlYm91bmNlci5kZWxh
eUZvclRpbWUoMjUwLCBldmVudCk7CisgICAgICAgICAgICB9LCB0aGlzKTsKICAgICAgICAgICAg
IHRleHRFZGl0b3IuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaGFkZXIiKTsKIAogICAgICAgICAg
ICAgbGV0IHNoYWRlclR5cGVDb250YWluZXIgPSB0ZXh0RWRpdG9yLmVsZW1lbnQuaW5zZXJ0QWRq
YWNlbnRFbGVtZW50KCJhZnRlcmJlZ2luIiwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByaW5nRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByaW5nRWRpdG9yLmpzCmluZGV4IDYzZGFmN2E1MmNmZDliNjcyY2I2OTJlMGIxMjU2YjU1
NjAyNDEwNzUuLmQwNjBmZDVlZDQwZjEwMmE2NTJmOTQwZjg4ZjEwYmViM2NhNGU0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmluZ0Vk
aXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
cHJpbmdFZGl0b3IuanMKQEAgLTI5LDE1ICsyOSwxOSBAQCBXSS5TcHJpbmdFZGl0b3IgPSBjbGFz
cyBTcHJpbmdFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVyKCk7
CiAKKyAgICAgICAgbGV0IGJvdW5kUmVzZXRQcmV2aWV3QW5pbWF0aW9uID0gKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICB0aGlzLl9yZXNldFByZXZpZXdBbmltYXRpb24oZXZlbnQpOworICAgICAg
ICB9OworCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzcHJpbmctZWRpdG9y
Iik7CiAKICAgICAgICAgdGhpcy5fcHJldmlld0NvbnRhaW5lciA9IHRoaXMuX2VsZW1lbnQuY3Jl
YXRlQ2hpbGQoImRpdiIsICJzcHJpbmctcHJldmlldyIpOwogICAgICAgICB0aGlzLl9wcmV2aWV3
Q29udGFpbmVyLnRpdGxlID0gV0kuVUlTdHJpbmcoIlJlc3RhcnQgYW5pbWF0aW9uIik7Ci0gICAg
ICAgIHRoaXMuX3ByZXZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwg
dGhpcy5fcmVzZXRQcmV2aWV3QW5pbWF0aW9uLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9w
cmV2aWV3Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGJvdW5kUmVzZXRQ
cmV2aWV3QW5pbWF0aW9uKTsKIAogICAgICAgICB0aGlzLl9wcmV2aWV3RWxlbWVudCA9IHRoaXMu
X3ByZXZpZXdDb250YWluZXIuY3JlYXRlQ2hpbGQoImRpdiIpOwotICAgICAgICB0aGlzLl9wcmV2
aWV3RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcy5kZWJvdW5j
ZSg1MDApLl9yZXNldFByZXZpZXdBbmltYXRpb24pOworICAgICAgICB0aGlzLl9wcmV2aWV3RWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgYm91bmRSZXNldFByZXZpZXdB
bmltYXRpb24pOwogCiAgICAgICAgIHRoaXMuX3RpbWluZ0NvbnRhaW5lciA9IHRoaXMuX2VsZW1l
bnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzcHJpbmctdGltaW5nIik7CiAKQEAgLTIxMyw3ICsyMTcs
NyBAQCBXSS5TcHJpbmdFZGl0b3IgPSBjbGFzcyBTcHJpbmdFZGl0b3IgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgaWYgKCFldmVudCkKICAgICAgICAgICAgIHRoaXMuX3RpbWluZ0NvbnRhaW5l
ci5kYXRhc2V0LmR1cmF0aW9uID0gIjAiOwogCi0gICAgICAgIHRoaXMuZGVib3VuY2UoNTAwKS5f
dXBkYXRlUHJldmlld0FuaW1hdGlvbihldmVudCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVByZXZp
ZXdBbmltYXRpb24oZXZlbnQpOwogICAgIH0KIAogICAgIF91cGRhdGVQcmV2aWV3QW5pbWF0aW9u
KGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlRWxlbWVudC5qcwppbmRleCBkM2I4OTI5NDM1Mjc3NjYxMjliMjQ0YWZmYjlh
OTY5ZTAwMjZhMDJhLi5lZmY5OGU4ZmJlZTdmZmNkNjM4YTViMzFmMmY4OWRjNjFiZjMzYTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
RWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlRWxlbWVudC5qcwpAQCAtMTY1LDEwICsxNjUsMTIgQEAgV0kuVHJlZUVsZW1lbnQgPSBj
bGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZS5oaWRkZW4gPSB0aGlzLl9oaWRkZW47CiAKICAgICAgICAgaWYgKHRoaXMu
dHJlZU91dGxpbmUpIHsKLSAgICAgICAgICAgIGxldCBmb2N1c2VkVHJlZUVsZW1lbnQgPSBudWxs
OwotICAgICAgICAgICAgaWYgKCF0aGlzLl9oaWRkZW4gJiYgdGhpcy5zZWxlY3RlZCkKLSAgICAg
ICAgICAgICAgICBmb2N1c2VkVHJlZUVsZW1lbnQgPSB0aGlzOwotICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVt
ZW50KTsKKyAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnZpcnR1YWxpemVkKSB7Cisg
ICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLl9oaWRkZW4gJiYgdGhpcy5zZWxlY3RlZCkKKyAgICAgICAgICAgICAg
ICAgICAgZm9jdXNlZFRyZWVFbGVtZW50ID0gdGhpczsKKyAgICAgICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZGVsYXlGb3JUaW1l
KDAsIGZvY3VzZWRUcmVlRWxlbWVudCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRyZWVPdXRsaW5lLkV2
ZW50LkVsZW1lbnRWaXNpYmlsaXR5RGlkQ2hhbmdlLCB7ZWxlbWVudDogdGhpc30pOwogICAgICAg
ICB9CkBAIC0yMDMsNyArMjA1LDEzIEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1l
bnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMub25OZXh0RnJhbWUuX2ZpcmVEaWRDaGFu
Z2UoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maXJlRGlkQ2hhbmdlRGVib3VuY2VyKSB7CisgICAg
ICAgICAgICB0aGlzLl9maXJlRGlkQ2hhbmdlRGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoKSA9
PiB7CisgICAgICAgICAgICAgICAgdGhpcy5fZmlyZURpZENoYW5nZSgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9maXJlRGlkQ2hhbmdlRGVib3VuY2VyLmRl
bGF5Rm9yRnJhbWUoKTsKICAgICB9CiAKICAgICBfc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgpCkBA
IC0yNjEsOCArMjY5LDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Ll9jaGlsZHJlbkxpc3RO
b2RlLmluc2VydEJlZm9yZSh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLCB0aGlzLl9saXN0SXRlbU5v
ZGUubmV4dFNpYmxpbmcpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMudHJlZU91dGxp
bmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24udXBkYXRlVmlydHVhbGl6ZWRF
bGVtZW50cygpOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRyZWVPdXRs
aW5lLnZpcnR1YWxpemVkKQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVWaXJ0
dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwKTsKIAogICAgICAgICBpZiAo
dGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CkBAIC0yNzksOCArMjg3
LDggQEAgV0kuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSAmJiB0aGlzLl9jaGlsZHJlbkxp
c3ROb2RlLnBhcmVudE5vZGUpCiAgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSk7CiAKLSAgICAgICAg
aWYgKHRoaXMudHJlZU91dGxpbmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24u
dXBkYXRlVmlydHVhbGl6ZWRFbGVtZW50cygpOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSAmJiB0aGlzLnRyZWVPdXRsaW5lLnZpcnR1YWxpemVkKQorICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgw
KTsKICAgICB9CiAKICAgICBzdGF0aWMgdHJlZUVsZW1lbnRUb2dnbGVkKGV2ZW50KQpAQCAtMzQ2
LDggKzM1NCw4IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKHRoaXMub25jb2xsYXBzZSkKICAgICAgICAgICAgIHRoaXMu
b25jb2xsYXBzZSh0aGlzKTsKIAotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkgewotICAg
ICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zb29uLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMo
dGhpcyk7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUu
dmlydHVhbGl6ZWQpIHsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVmlydHVh
bGl6ZWRFbGVtZW50c0RlYm91bmNlci5kZWxheUZvclRpbWUoMCwgdGhpcyk7CiAKICAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRyZWVPdXRs
aW5lLkV2ZW50LkVsZW1lbnREaXNjbG9zdXJlRGlkQ2hhbmdlZCwge2VsZW1lbnQ6IHRoaXN9KTsK
ICAgICAgICAgfQpAQCAtNDEzLDggKzQyMSw4IEBAIFdJLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKHRoaXMub25leHBhbmQpCiAg
ICAgICAgICAgICB0aGlzLm9uZXhwYW5kKHRoaXMpOwogCi0gICAgICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lKSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNvb24udXBkYXRlVmlydHVh
bGl6ZWRFbGVtZW50cyh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhp
cy50cmVlT3V0bGluZS52aXJ0dWFsaXplZCkgeworICAgICAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS51cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwLCB0aGlz
KTsKIAogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuVHJlZU91dGxpbmUuRXZlbnQuRWxlbWVudERpc2Nsb3N1cmVEaWRDaGFuZ2VkLCB7ZWxl
bWVudDogdGhpc30pOwogICAgICAgICB9CkBAIC00NjYsOCArNDc0LDggQEAgV0kuVHJlZUVsZW1l
bnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIC8vIFRo
aXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIG9ucmV2ZWFsLCBhcyBzb21lIHN1YmNsYXNzZXMgd2ls
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkIGFuZAogICAgICAgICAvLyB3ZSBzaG91bGQgdXBkYXRl
IHRoZSB2aXNpYmxlIGVsZW1lbnRzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHNjcm9sbC4KLSAgICAg
ICAgaWYgKHRoaXMudHJlZU91dGxpbmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVw
ZGF0ZVZpcnR1YWxpemVkRWxlbWVudHModGhpcyk7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRs
aW5lICYmIHRoaXMudHJlZU91dGxpbmUudmlydHVhbGl6ZWQpCisgICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLnVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHNEZWJvdW5jZXIuZm9yY2UodGhpcyk7
CiAKICAgICAgICAgaWYgKHRoaXMub25yZXZlYWwpCiAgICAgICAgICAgICB0aGlzLm9ucmV2ZWFs
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCA5ODE1OWU3OWNjOTc3MmUyMjJiMGY1ZDg4ZTEy
YmZmMTY1ZWJhYzMwLi41MGIxN2ZjZTRlNzYxODI1ZjdmYmFiM2U3OGFkMjUyYmM0OWIxOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
T3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlT3V0bGluZS5qcwpAQCAtMTA5LDYgKzEwOSw3IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xh
c3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcHJvY2Vzc2lu
Z1NlbGVjdGlvbkNoYW5nZSA9IGZhbHNlOwogICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRTZWxl
Y3Rpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwogCisgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVk
RGVib3VuY2VyID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVs
ZW1lbnRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVt
ZW50cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyID0g
bnVsbDsKQEAgLTcyNSw2ICs3MjYsMTEgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0
bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWlz
TmFOKHRyZWVJdGVtSGVpZ2h0KSk7CiAKKyAgICAgICAgbGV0IGJvdW5kVXBkYXRlVmlydHVhbGl6
ZWRFbGVtZW50cyA9IChmb2N1c2VkVHJlZUVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVtZW50KTsKKyAgICAgICAg
fTsKKworICAgICAgICB0aGlzLl92aXJ0dWFsaXplZERlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIo
Ym91bmRVcGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6
ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gbmV3IFNldDsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6
ZWRBdHRhY2hlZFRyZWVFbGVtZW50cyA9IG5ldyBTZXQ7CiAgICAgICAgIHRoaXMuX3ZpcnR1YWxp
emVkU2Nyb2xsQ29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyOwpAQCAtNzMyLDEwNCArNzM4LDE1
IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRUb3BTcGFjZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRCb3R0b21TcGFjZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIAotICAgICAgICBsZXQgdGhyb3R0bGVyID0gdGhp
cy50aHJvdHRsZSgxMDAwIC8gMTYpOworICAgICAgICBsZXQgdGhyb3R0bGVyID0gbmV3IFRocm90
dGxlcihib3VuZFVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMsIDEwMDAgLyAxNik7CiAgICAgICAg
IHRoaXMuX3ZpcnR1YWxpemVkU2Nyb2xsQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9s
bCIsIChldmVudCkgPT4gewotICAgICAgICAgICAgdGhyb3R0bGVyLnVwZGF0ZVZpcnR1YWxpemVk
RWxlbWVudHMoKTsKKyAgICAgICAgICAgIHRocm90dGxlci5maXJlKCk7CiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIHVwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMoZm9jdXNlZFRyZWVFbGVtZW50
KQorICAgIGdldCB1cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzRGVib3VuY2VyKCkKICAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy52aXJ0dWFsaXplZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBmdW5jdGlvbiB3YWxrKHBhcmVudCwgY2FsbGJhY2ssIGNvdW50ID0gMCkgewotICAgICAg
ICAgICAgbGV0IHNob3VsZFJldHVybiA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChsZXQgY2hp
bGQgb2YgcGFyZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5yZXZl
YWxlZChmYWxzZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgc2hvdWxkUmV0dXJuID0gY2FsbGJhY2soY2hpbGQsIGNvdW50KTsKLSAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkUmV0dXJuKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmV4cGFuZGVk
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB3YWxrKGNoaWxkLCBjYWxsYmFj
aywgY291bnQpOwotICAgICAgICAgICAgICAgICAgICBjb3VudCA9IHJlc3VsdC5jb3VudDsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zaG91bGRSZXR1cm4pCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4ge2NvdW50LCBzaG91bGRSZXR1cm59OwotICAgICAgICB9Ci0KLSAgICAg
ICAgbGV0IHtudW1iZXJWaXNpYmxlLCBleHRyYVJvd3MsIGZpcnN0SXRlbSwgbGFzdEl0ZW19ID0g
dGhpcy5fY2FsY3VsYXRlVmlydHVhbGl6ZWRWYWx1ZXMoKTsKLQotICAgICAgICBsZXQgc2hvdWxk
U2Nyb2xsID0gZmFsc2U7Ci0gICAgICAgIGlmIChmb2N1c2VkVHJlZUVsZW1lbnQgJiYgZm9jdXNl
ZFRyZWVFbGVtZW50LnJldmVhbGVkKGZhbHNlKSkgewotICAgICAgICAgICAgbGV0IGluZGV4ID0g
d2Fsayh0aGlzLCAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50ID09PSBmb2N1c2VkVHJlZUVs
ZW1lbnQpLmNvdW50OwotICAgICAgICAgICAgaWYgKGluZGV4IDwgZmlyc3RJdGVtKSB7Ci0gICAg
ICAgICAgICAgICAgZmlyc3RJdGVtID0gaW5kZXggLSBleHRyYVJvd3M7Ci0gICAgICAgICAgICAg
ICAgbGFzdEl0ZW0gPSBpbmRleCArIG51bWJlclZpc2libGUgKyBleHRyYVJvd3M7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGluZGV4ID4gbGFzdEl0ZW0pIHsKLSAgICAgICAgICAgICAgICBmaXJz
dEl0ZW0gPSBpbmRleCAtIG51bWJlclZpc2libGUgLSBleHRyYVJvd3M7Ci0gICAgICAgICAgICAg
ICAgbGFzdEl0ZW0gPSBpbmRleCArIGV4dHJhUm93czsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gT25seSBzY3JvbGwgaWYgdGhlIGBmb2N1c2VkVHJlZUVsZW1lbnRgIGlzIG91dHNp
ZGUgdGhlIHZpc2libGUgaXRlbXMsIG5vdCBpbmNsdWRpbmcKLSAgICAgICAgICAgIC8vIHRoZSBh
ZGRlZCBidWZmZXIgYGV4dHJhUm93c2AuCi0gICAgICAgICAgICBzaG91bGRTY3JvbGwgPSAoaW5k
ZXggPCBmaXJzdEl0ZW0gKyBleHRyYVJvd3MpIHx8IChpbmRleCA+IGxhc3RJdGVtIC0gZXh0cmFS
b3dzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZpcnN0SXRlbSA8IGxh
c3RJdGVtKTsKLQotICAgICAgICBsZXQgdmlzaWJsZVRyZWVFbGVtZW50cyA9IG5ldyBTZXQ7Ci0g
ICAgICAgIGxldCB0cmVlRWxlbWVudHNUb0F0dGFjaCA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCB0
cmVlRWxlbWVudHNUb0RldGFjaCA9IG5ldyBTZXQ7Ci0gICAgICAgIGxldCB0b3RhbEl0ZW1zID0g
d2Fsayh0aGlzLCAodHJlZUVsZW1lbnQsIGNvdW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoY291
bnQgPj0gZmlyc3RJdGVtICYmIGNvdW50IDw9IGxhc3RJdGVtKSB7Ci0gICAgICAgICAgICAgICAg
dHJlZUVsZW1lbnRzVG9BdHRhY2guYWRkKHRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBp
ZiAoY291bnQgPj0gZmlyc3RJdGVtICsgZXh0cmFSb3dzICYmIGNvdW50IDw9IGxhc3RJdGVtIC0g
ZXh0cmFSb3dzKQotICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVHJlZUVsZW1lbnRzLmFkZCh0
cmVlRWxlbWVudCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRyZWVFbGVtZW50LmVsZW1lbnQu
cGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICB0cmVlRWxlbWVudHNUb0RldGFjaC5hZGQodHJl
ZUVsZW1lbnQpOwotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0pLmNvdW50
OwotCi0gICAgICAgIC8vIFJlZHJhdyBpZiB3ZSBhcmUgYWJvdXQgdG8gc2Nyb2xsLgotICAgICAg
ICBpZiAoIXNob3VsZFNjcm9sbCkgewotICAgICAgICAgICAgLy8gUmVkcmF3IGlmIGFsbCBvZiB0
aGUgcHJldmlvdXNseSBjZW50ZXJlZCBgV0kuVHJlZUVsZW1lbnRgIGFyZSBubyBsb25nZXIgY2Vu
dGVyZWQuCi0gICAgICAgICAgICBpZiAodmlzaWJsZVRyZWVFbGVtZW50cy5pbnRlcnNlY3RzKHRo
aXMuX3ZpcnR1YWxpemVkVmlzaWJsZVRyZWVFbGVtZW50cykpIHsKLSAgICAgICAgICAgICAgICAv
LyBSZWRyYXcgaWYgdGhlcmUgaXMgYSBgV0kuVHJlZUVsZW1lbnRgIHRoYXQgc2hvdWxkIGJlIHNo
b3duIHRoYXQgaXNuJ3QgYXR0YWNoZWQuCi0gICAgICAgICAgICAgICAgaWYgKHZpc2libGVUcmVl
RWxlbWVudHMuaXNTdWJzZXRPZih0aGlzLl92aXJ0dWFsaXplZEF0dGFjaGVkVHJlZUVsZW1lbnRz
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzID0gdmlzaWJs
ZVRyZWVFbGVtZW50czsKLSAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRBdHRhY2hlZFRyZWVFbGVt
ZW50cyA9IHRyZWVFbGVtZW50c1RvQXR0YWNoOwotCi0gICAgICAgIGZvciAobGV0IHRyZWVFbGVt
ZW50IG9mIHRyZWVFbGVtZW50c1RvRGV0YWNoKQotICAgICAgICAgICAgdHJlZUVsZW1lbnQuZWxl
bWVudC5yZW1vdmUoKTsKLQotICAgICAgICBmb3IgKGxldCB0cmVlRWxlbWVudCBvZiB0cmVlRWxl
bWVudHNUb0F0dGFjaCkgewotICAgICAgICAgICAgdHJlZUVsZW1lbnQucGFyZW50Ll9jaGlsZHJl
bkxpc3ROb2RlLmFwcGVuZENoaWxkKHRyZWVFbGVtZW50LmVsZW1lbnQpOwotICAgICAgICAgICAg
aWYgKHRyZWVFbGVtZW50Ll9jaGlsZHJlbkxpc3ROb2RlKQotICAgICAgICAgICAgICAgIHRyZWVF
bGVtZW50LnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudC5f
Y2hpbGRyZW5MaXN0Tm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl92aXJ0dWFsaXpl
ZFRvcFNwYWNlci5zdHlsZS5oZWlnaHQgPSAoTWF0aC5tYXgoZmlyc3RJdGVtLCAwKSAqIHRoaXMu
X3ZpcnR1YWxpemVkVHJlZUl0ZW1IZWlnaHQpICsgInB4IjsKLSAgICAgICAgaWYgKHRoaXMuZWxl
bWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICE9PSB0aGlzLl92aXJ0dWFsaXplZFRvcFNwYWNl
cikKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlz
Ll92aXJ0dWFsaXplZFRvcFNwYWNlciwgdGhpcy5lbGVtZW50KTsKLQotICAgICAgICB0aGlzLl92
aXJ0dWFsaXplZEJvdHRvbVNwYWNlci5zdHlsZS5oZWlnaHQgPSAoTWF0aC5tYXgodG90YWxJdGVt
cyAtIGxhc3RJdGVtLCAwKSAqIHRoaXMuX3ZpcnR1YWxpemVkVHJlZUl0ZW1IZWlnaHQpICsgInB4
IjsKLSAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcgIT09IHRoaXMu
X3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyKQotICAgICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyLCB0aGlzLmVs
ZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKTsKLQotICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKQot
ICAgICAgICAgICAgdGhpcy5fdmlydHVhbGl6ZWRTY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wID0g
KGZpcnN0SXRlbSArIGV4dHJhUm93cykgKiB0aGlzLl92aXJ0dWFsaXplZFRyZWVJdGVtSGVpZ2h0
OworICAgICAgICByZXR1cm4gdGhpcy5fdmlydHVhbGl6ZWREZWJvdW5jZXI7CiAgICAgfQogCiAg
ICAgLy8gU2VsZWN0aW9uQ29udHJvbGxlciBkZWxlZ2F0ZQpAQCAtMTA1Niw2ICs5NzMsOTkgQEAg
V0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICB9OwogICAgIH0KIAorICAgIF91cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzKGZvY3VzZWRU
cmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMudmlydHVhbGl6
ZWQpOworCisgICAgICAgIGZ1bmN0aW9uIHdhbGsocGFyZW50LCBjYWxsYmFjaywgY291bnQgPSAw
KSB7CisgICAgICAgICAgICBsZXQgc2hvdWxkUmV0dXJuID0gZmFsc2U7CisgICAgICAgICAgICBm
b3IgKGxldCBjaGlsZCBvZiBwYXJlbnQuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWNoaWxkLnJldmVhbGVkKGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgICAgICBzaG91bGRSZXR1cm4gPSBjYWxsYmFjayhjaGlsZCwgY291bnQpOwor
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoY2hp
bGQuZXhwYW5kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHdhbGsoY2hp
bGQsIGNhbGxiYWNrLCBjb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0
LmNvdW50OworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNob3VsZFJldHVybikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiB7Y291bnQsIHNob3VsZFJldHVybn07CisgICAgICAg
IH0KKworICAgICAgICBsZXQge251bWJlclZpc2libGUsIGV4dHJhUm93cywgZmlyc3RJdGVtLCBs
YXN0SXRlbX0gPSB0aGlzLl9jYWxjdWxhdGVWaXJ0dWFsaXplZFZhbHVlcygpOworCisgICAgICAg
IGxldCBzaG91bGRTY3JvbGwgPSBmYWxzZTsKKyAgICAgICAgaWYgKGZvY3VzZWRUcmVlRWxlbWVu
dCAmJiBmb2N1c2VkVHJlZUVsZW1lbnQucmV2ZWFsZWQoZmFsc2UpKSB7CisgICAgICAgICAgICBs
ZXQgaW5kZXggPSB3YWxrKHRoaXMsICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQgPT09IGZv
Y3VzZWRUcmVlRWxlbWVudCkuY291bnQ7CisgICAgICAgICAgICBpZiAoaW5kZXggPCBmaXJzdEl0
ZW0pIHsKKyAgICAgICAgICAgICAgICBmaXJzdEl0ZW0gPSBpbmRleCAtIGV4dHJhUm93czsKKyAg
ICAgICAgICAgICAgICBsYXN0SXRlbSA9IGluZGV4ICsgbnVtYmVyVmlzaWJsZSArIGV4dHJhUm93
czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPiBsYXN0SXRlbSkgeworICAgICAgICAg
ICAgICAgIGZpcnN0SXRlbSA9IGluZGV4IC0gbnVtYmVyVmlzaWJsZSAtIGV4dHJhUm93czsKKyAg
ICAgICAgICAgICAgICBsYXN0SXRlbSA9IGluZGV4ICsgZXh0cmFSb3dzOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBPbmx5IHNjcm9sbCBpZiB0aGUgYGZvY3VzZWRUcmVlRWxlbWVu
dGAgaXMgb3V0c2lkZSB0aGUgdmlzaWJsZSBpdGVtcywgbm90IGluY2x1ZGluZworICAgICAgICAg
ICAgLy8gdGhlIGFkZGVkIGJ1ZmZlciBgZXh0cmFSb3dzYC4KKyAgICAgICAgICAgIHNob3VsZFNj
cm9sbCA9IChpbmRleCA8IGZpcnN0SXRlbSArIGV4dHJhUm93cykgfHwgKGluZGV4ID4gbGFzdEl0
ZW0gLSBleHRyYVJvd3MpOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZmly
c3RJdGVtIDwgbGFzdEl0ZW0pOworCisgICAgICAgIGxldCB2aXNpYmxlVHJlZUVsZW1lbnRzID0g
bmV3IFNldDsKKyAgICAgICAgbGV0IHRyZWVFbGVtZW50c1RvQXR0YWNoID0gbmV3IFNldDsKKyAg
ICAgICAgbGV0IHRyZWVFbGVtZW50c1RvRGV0YWNoID0gbmV3IFNldDsKKyAgICAgICAgbGV0IHRv
dGFsSXRlbXMgPSB3YWxrKHRoaXMsICh0cmVlRWxlbWVudCwgY291bnQpID0+IHsKKyAgICAgICAg
ICAgIGlmIChjb3VudCA+PSBmaXJzdEl0ZW0gJiYgY291bnQgPD0gbGFzdEl0ZW0pIHsKKyAgICAg
ICAgICAgICAgICB0cmVlRWxlbWVudHNUb0F0dGFjaC5hZGQodHJlZUVsZW1lbnQpOworICAgICAg
ICAgICAgICAgIGlmIChjb3VudCA+PSBmaXJzdEl0ZW0gKyBleHRyYVJvd3MgJiYgY291bnQgPD0g
bGFzdEl0ZW0gLSBleHRyYVJvd3MpCisgICAgICAgICAgICAgICAgICAgIHZpc2libGVUcmVlRWxl
bWVudHMuYWRkKHRyZWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJlZUVsZW1l
bnQuZWxlbWVudC5wYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50c1RvRGV0
YWNoLmFkZCh0cmVlRWxlbWVudCk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfSkuY291bnQ7CisKKyAgICAgICAgLy8gUmVkcmF3IGlmIHdlIGFyZSBhYm91dCB0byBzY3Jv
bGwuCisgICAgICAgIGlmICghc2hvdWxkU2Nyb2xsKSB7CisgICAgICAgICAgICAvLyBSZWRyYXcg
aWYgYWxsIG9mIHRoZSBwcmV2aW91c2x5IGNlbnRlcmVkIGBXSS5UcmVlRWxlbWVudGAgYXJlIG5v
IGxvbmdlciBjZW50ZXJlZC4KKyAgICAgICAgICAgIGlmICh2aXNpYmxlVHJlZUVsZW1lbnRzLmlu
dGVyc2VjdHModGhpcy5fdmlydHVhbGl6ZWRWaXNpYmxlVHJlZUVsZW1lbnRzKSkgeworICAgICAg
ICAgICAgICAgIC8vIFJlZHJhdyBpZiB0aGVyZSBpcyBhIGBXSS5UcmVlRWxlbWVudGAgdGhhdCBz
aG91bGQgYmUgc2hvd24gdGhhdCBpc24ndCBhdHRhY2hlZC4KKyAgICAgICAgICAgICAgICBpZiAo
dmlzaWJsZVRyZWVFbGVtZW50cy5pc1N1YnNldE9mKHRoaXMuX3ZpcnR1YWxpemVkQXR0YWNoZWRU
cmVlRWxlbWVudHMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFZpc2libGVUcmVlRWxlbWVu
dHMgPSB2aXNpYmxlVHJlZUVsZW1lbnRzOworICAgICAgICB0aGlzLl92aXJ0dWFsaXplZEF0dGFj
aGVkVHJlZUVsZW1lbnRzID0gdHJlZUVsZW1lbnRzVG9BdHRhY2g7CisKKyAgICAgICAgZm9yIChs
ZXQgdHJlZUVsZW1lbnQgb2YgdHJlZUVsZW1lbnRzVG9EZXRhY2gpCisgICAgICAgICAgICB0cmVl
RWxlbWVudC5lbGVtZW50LnJlbW92ZSgpOworCisgICAgICAgIGZvciAobGV0IHRyZWVFbGVtZW50
IG9mIHRyZWVFbGVtZW50c1RvQXR0YWNoKSB7CisgICAgICAgICAgICB0cmVlRWxlbWVudC5wYXJl
bnQuX2NoaWxkcmVuTGlzdE5vZGUuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQuZWxlbWVudCk7Cisg
ICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQuX2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAgICAg
ICAgICAgdHJlZUVsZW1lbnQucGFyZW50Ll9jaGlsZHJlbkxpc3ROb2RlLmFwcGVuZENoaWxkKHRy
ZWVFbGVtZW50Ll9jaGlsZHJlbkxpc3ROb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X3ZpcnR1YWxpemVkVG9wU3BhY2VyLnN0eWxlLmhlaWdodCA9IChNYXRoLm1heChmaXJzdEl0ZW0s
IDApICogdGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRlbUhlaWdodCkgKyAicHgiOworICAgICAgICBp
ZiAodGhpcy5lbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgIT09IHRoaXMuX3ZpcnR1YWxp
emVkVG9wU3BhY2VyKQorICAgICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0
QmVmb3JlKHRoaXMuX3ZpcnR1YWxpemVkVG9wU3BhY2VyLCB0aGlzLmVsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX3ZpcnR1YWxpemVkQm90dG9tU3BhY2VyLnN0eWxlLmhlaWdodCA9IChNYXRoLm1h
eCh0b3RhbEl0ZW1zIC0gbGFzdEl0ZW0sIDApICogdGhpcy5fdmlydHVhbGl6ZWRUcmVlSXRlbUhl
aWdodCkgKyAicHgiOworICAgICAgICBpZiAodGhpcy5lbGVtZW50Lm5leHRFbGVtZW50U2libGlu
ZyAhPT0gdGhpcy5fdmlydHVhbGl6ZWRCb3R0b21TcGFjZXIpCisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fdmlydHVhbGl6ZWRCb3R0b21TcGFj
ZXIsIHRoaXMuZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpOworCisgICAgICAgIGlmIChzaG91
bGRTY3JvbGwpCisgICAgICAgICAgICB0aGlzLl92aXJ0dWFsaXplZFNjcm9sbENvbnRhaW5lci5z
Y3JvbGxUb3AgPSAoZmlyc3RJdGVtICsgZXh0cmFSb3dzKSAqIHRoaXMuX3ZpcnR1YWxpemVkVHJl
ZUl0ZW1IZWlnaHQ7CisgICAgfQorCiAgICAgX2hhbmRsZUNvbnRleHRtZW51KGV2ZW50KQogICAg
IHsKICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZyb21FdmVudChl
dmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9XZWJTb2NrZXRDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCmluZGV4IDNiZjBkNjQ2M2M1
YWY3N2M4MzBjNGNhYzkxMDBiMmMxYTVjYWM4YTEuLmU0NzYxMjM5N2ZlZTRlMWNlZTg0ZWI3NjBl
Zjk4ZjMyMTQ1OTAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCkBAIC0z
MSw2ICszMSwxMCBAQCBXSS5XZWJTb2NrZXRDb250ZW50VmlldyA9IGNsYXNzIFdlYlNvY2tldENv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAgICBzdXBlcihyZXNvdXJj
ZSk7CiAKKyAgICAgICAgdGhpcy5fdXBkYXRlRnJhbWVzRGVib3VuY2VyID0gbmV3IERlYm91bmNl
cigoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXMoKTsKKyAgICAgICAgfSk7
CisKICAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICAgICAgdGhpcy5fZnJh
bWVzUmVuZGVyZWQgPSAwOwogICAgICAgICB0aGlzLl9sYXN0UmVuZGVyZWRSZWFkeVN0YXRlID0g
bnVsbDsKQEAgLTgxLDcgKzg1LDcgQEAgV0kuV2ViU29ja2V0Q29udGVudFZpZXcgPSBjbGFzcyBX
ZWJTb2NrZXRDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBzaG93bigp
CiAgICAgewotICAgICAgICB0aGlzLl91cGRhdGVGcmFtZXMoKTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlRnJhbWVzRGVib3VuY2VyLmZvcmNlKCk7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2
ZW50TGlzdGVuZXIoV0kuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQuRnJhbWVBZGRlZCwgdGhpcy5f
dXBkYXRlRnJhbWVzU29vbiwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50
TGlzdGVuZXIoV0kuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQuUmVhZHlTdGF0ZUNoYW5nZWQsIHRo
aXMuX3VwZGF0ZUZyYW1lc1Nvb24sIHRoaXMpOwogICAgIH0KQEAgLTk2LDcgKzEwMCw3IEBAIFdJ
LldlYlNvY2tldENvbnRlbnRWaWV3ID0gY2xhc3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogCiAgICAgX3VwZGF0ZUZyYW1lc1Nvb24oKQogICAgIHsKLSAgICAg
ICAgdGhpcy5vbk5leHRGcmFtZS5fdXBkYXRlRnJhbWVzKCk7CisgICAgICAgIHRoaXMuX3VwZGF0
ZUZyYW1lc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAgfQogCiAgICAgX3VwZGF0ZUZy
YW1lcygpCkBAIC0xMTksOCArMTIzLDE1IEBAIFdJLldlYlNvY2tldENvbnRlbnRWaWV3ID0gY2xh
c3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICAg
ICAgdGhpcy5fbGFzdFJlbmRlcmVkUmVhZHlTdGF0ZSA9IHRoaXMuX3Jlc291cmNlLnJlYWR5U3Rh
dGU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsVG9Cb3R0b20pCi0gICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5vbk5leHRGcmFtZS5zY3JvbGxUb0xhc3RSb3coKTsKKyAg
ICAgICAgaWYgKHNob3VsZFNjcm9sbFRvQm90dG9tKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMu
X3Njcm9sbFRvTGFzdFJvd0RlYm91bmNlcikgeworICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9s
bFRvTGFzdFJvd0RlYm91bmNlciA9IG5ldyBEZWJvdW5jZXIoKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxUb0xhc3RSb3coKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9MYXN0Um93
RGVib3VuY2VyLmRlbGF5Rm9yRnJhbWUoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIF9hZGRG
cmFtZShkYXRhLCBpc091dGdvaW5nLCBvcGNvZGUsIHRpbWUpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjdiMDg5NzlhNjY1
ZWU1NDliMmQ3MDNhYWY2MjlmZTE2YjNkMmIyNS4uYjYxZmQ2OTk4Y2I1ZDBhZTM5NGQzYjkxMzQz
MGU0NjI1MjRjMjg1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAyLTIxICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtl
IGRlYm91bmNlIFByb3h5IGludG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3Vu
Y2VyLmh0bWw6IFJlbmFtZWQgZnJvbSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS5odG1s
Oi4KKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZXItZXhwZWN0ZWQudHh0
OiBSZW5hbWVkIGZyb20gaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2UtZXhwZWN0ZWQudHh0
LgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlci5odG1sOiBSZW5hbWVk
IGZyb20gaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUuaHRtbDouCisgICAgICAgICogaW5z
cGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGVyLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIGlu
c3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9uczoKKwogMjAxOS0wMi0yMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtMRkNdW0Zsb2F0c10gQWRkIHN1cHBvcnQgZm9yIHBsYWNpbmcgZm9ybWF0
dGluZyByb290cyBpbi1iZXR3ZWVuIGZsb2F0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjAwOTgwNTMyMzZiYTdjNDJhMmNkOTk1OTE3MGZiNTNkZDgxZTQ5My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwzMCArMCwwIEBACi1UZXN0aW5nIGRlYm91bmNlIHByb3h5IHN1cHBvcnQuCi0KLQot
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJvdW5jZQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJh
c2ljIERlYm91bmNlCi1QQVNTOiBEZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5LgotUEFTUzogQ2FsbCBk
ZWxheWVkIGF0IGxlYXN0IDEwbXMuCi1QQVNTOiBgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4K
LVBBU1M6IEFyZ3VtZW50cyBsZW5ndGggaXMgMi4KLVBBU1M6IEZpcnN0IGFyZ3VtZW50IGlzIDQu
Ci1QQVNTOiBTZWNvbmQgYXJndW1lbnQgaXMgJ2FiYycuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBNdWx0aXBsZSBEZWJvdW5jZSBEZWxheXMKLVBBU1M6IERlYm91bmNlZCBzdWNjZXNzZnVsbHku
Ci1QQVNTOiBDYWxsIGRlbGF5ZWQgYXQgbGVhc3QgNDBtcy4KLVBBU1M6IGB0aGlzYCBpcyB0aGUg
cmlnaHQgb2JqZWN0LgotUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgotUEFTUzogRmlyc3Qg
YXJndW1lbnQgaXMgNC4KLVBBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KLQotLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IFNvb24gRGVib3VuY2UKLVBBU1M6IERlYm91bmNlZCBzdWNjZXNzZnVs
bHkuCi1QQVNTOiBgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4KLVBBU1M6IEFyZ3VtZW50cyBs
ZW5ndGggaXMgMi4KLVBBU1M6IEZpcnN0IGFyZ3VtZW50IGlzIDQuCi1QQVNTOiBTZWNvbmQgYXJn
dW1lbnQgaXMgJ2FiYycuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW5jZWwgRGVib3VuY2UK
LVBBU1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYW5jZWxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2UuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE0ZjAwNzE4ZWJmNTQ4ZDMwOGI4NzcyMzViNzI3YTIyMDYxZTg3N2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvZGVib3VuY2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCww
IEBACi08IWRvY3R5cGUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRlYm91bmNlIik7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJCYXNpYyBEZWJvdW5jZSIsCi0gICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgY2FsbENvdW50ID0gMDsKLSAgICAgICAg
ICAgIGxldCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKLQotICAgICAgICAgICAgbGV0
IG9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB0ZXN0KGZvbywgYmFyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICgrK2NhbGxDb3VudCA9PT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QucGFzcygiRGVib3VuY2VkIHN1Y2Nlc3NmdWxseS4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5m
YWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIG11bHRpcGxlIHRpbWVzLiIpOwotCi0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJmb3JtYW5jZS5ub3co
KSAtIHN0YXJ0VGltZSA+PSAxMCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCAxMG1zLiIpOwotCi0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0aGlzID09PSBvYmpl
Y3QsICJgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4iKTsKLSAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFyZ3VtZW50cy5sZW5ndGggPT09IDIsICJBcmd1bWVu
dHMgbGVuZ3RoIGlzIDIuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChmb28gPT09IDQsICJGaXJzdCBhcmd1bWVudCBpcyA0LiIpOwotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJjIiwgIlNlY29uZCBh
cmd1bWVudCBpcyAnYWJjJy4iKTsKLQotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgbGV0IGRlYm91
bmNlUHJveHkgPSBvYmplY3QuZGVib3VuY2UoMTApOwotICAgICAgICAgICAgZGVib3VuY2VQcm94
eS50ZXN0KDEsICd4eXonKTsKLSAgICAgICAgICAgIGRlYm91bmNlUHJveHkudGVzdCgyLCAnZmdo
Jyk7Ci0gICAgICAgICAgICBkZWJvdW5jZVByb3h5LnRlc3QoMywgJ2VydCcpOwotICAgICAgICAg
ICAgZGVib3VuY2VQcm94eS50ZXN0KDQsICdhYmMnKTsKLQotICAgICAgICAgICAgaWYgKCFjYWxs
Q291bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmZhaWwoIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgaW1tZWRpYXRlbHkuIik7Ci0gICAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKLSAgICAgICAgbmFtZTogIk11bHRpcGxlIERlYm91bmNlIERlbGF5cyIsCi0gICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgY2FsbENvdW50ID0g
MDsKLSAgICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKLQotICAg
ICAgICAgICAgbGV0IG9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB0ZXN0KGZvbywgYmFyKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICgrK2NhbGxDb3VudCA9PT0gMSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiRGVib3VuY2VkIHN1Y2Nlc3NmdWxseS4i
KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIG11bHRpcGxlIHRpbWVz
LiIpOwotCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwZXJm
b3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+PSA0MCwgIkNhbGwgZGVsYXllZCBhdCBsZWFzdCA0
MG1zLiIpOwotCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0
aGlzID09PSBvYmplY3QsICJgdGhpc2AgaXMgdGhlIHJpZ2h0IG9iamVjdC4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFyZ3VtZW50cy5sZW5ndGggPT09
IDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChmb28gPT09IDQsICJGaXJzdCBhcmd1bWVudCBpcyA0LiIpOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmFyID09PSAiYWJj
IiwgIlNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4iKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgb2JqZWN0LmRlYm91bmNlKDEwKS50ZXN0KDEsICd4eXonKTsKLSAgICAgICAgICAgIG9iamVj
dC5kZWJvdW5jZSgyMCkudGVzdCgyLCAnZmdoJyk7Ci0gICAgICAgICAgICBvYmplY3QuZGVib3Vu
Y2UoMzApLnRlc3QoMywgJ2VydCcpOwotICAgICAgICAgICAgb2JqZWN0LmRlYm91bmNlKDQwKS50
ZXN0KDQsICdhYmMnKTsKLQotICAgICAgICAgICAgaWYgKCFjYWxsQ291bnQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91bmNl
ZCBmdW5jdGlvbiBjYWxsZWQgaW1tZWRpYXRlbHkuIik7Ci0gICAgICAgICAgICByZXNvbHZlKCk7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAg
bmFtZTogIlNvb24gRGVib3VuY2UiLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7Ci0KLSAgICAgICAgICAgIGxldCBvYmplY3Qg
PSB7Ci0gICAgICAgICAgICAgICAgdGVzdChmb28sIGJhcikgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoKytjYWxsQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnBhc3MoIkRlYm91bmNlZCBzdWNjZXNzZnVsbHkuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVi
b3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKLQotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodGhpcyA9PT0gb2JqZWN0LCAiYHRoaXNg
IGlzIHRoZSByaWdodCBvYmplY3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChhcmd1bWVudHMubGVuZ3RoID09PSAyLCAiQXJndW1lbnRzIGxlbmd0aCBp
cyAyLiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZm9v
ID09PSA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGJhciA9PT0gImFiYyIsICJTZWNvbmQgYXJndW1lbnQgaXMg
J2FiYycuIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIG9iamVjdC5zb29uLnRlc3QoMSwg
J3h5eicpOwotICAgICAgICAgICAgb2JqZWN0LnNvb24udGVzdCgyLCAnZmdoJyk7Ci0gICAgICAg
ICAgICBvYmplY3Quc29vbi50ZXN0KDMsICdlcnQnKTsKLSAgICAgICAgICAgIG9iamVjdC5zb29u
LnRlc3QoNCwgJ2FiYycpOwotCi0gICAgICAgICAgICBpZiAoIWNhbGxDb3VudCkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRGVib3Vu
Y2VkIGZ1bmN0aW9uIGNhbGxlZCBpbW1lZGlhdGVseS4iKTsKLSAgICAgICAgICAgIHJlc29sdmUo
KTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAg
ICBuYW1lOiAiQ2FuY2VsIERlYm91bmNlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKLSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdCgpIHsK
LSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rp
b24gY2FsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkLiIpOwotICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAg
ICAgICAgb2JqZWN0LmRlYm91bmNlKDEwKS50ZXN0KCk7Ci0gICAgICAgICAgICBvYmplY3QudGVz
dC5jYW5jZWxEZWJvdW5jZSgpOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgSW5z
cGVjdG9yVGVzdC5wYXNzKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQuIik7IHJlc29sdmUo
KTsgfSwgMjApOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotICAgIDxwPlRlc3RpbmcgZGVib3VuY2UgcHJveHkgc3VwcG9ydC48L3A+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9k
ZWJvdW5jZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMv
ZGVib3VuY2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmIyNTRlZTBmMmNhN2Q5YTNkNDEy
NzZmYTA1MWI3MzcwZGM1MWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvZGVib3VuY2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitU
ZXN0aW5nIERlYm91bmNlciBmdW5jdGlvbmFsaXR5LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogRGVib3VuY2VyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVib3VuY2VyLlRpbWVEZWxheS5T
YW1lCitQQVNTOiBDYWxsIHdhcyBkZWxheWVkLgorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAy
LgorUEFTUzogRmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAn
YWJjJy4KK1BBU1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYm91bmNlci5UaW1lRGVsYXkuRGlmZmVyZW50CitQQVNTOiBDYWxsIHdh
cyBkZWxheWVkLgorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgorUEFTUzogRmlyc3QgYXJn
dW1lbnQgaXMgNC4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KK1BBU1M6IERlYm91
bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYm91
bmNlLlRpbWVEZWxheS5aZXJvCitQQVNTOiBDYWxsIHdhcyBkZWxheWVkLgorUEFTUzogQXJndW1l
bnRzIGxlbmd0aCBpcyAyLgorUEFTUzogRmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNlY29u
ZCBhcmd1bWVudCBpcyAnYWJjJy4KK1BBU1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25j
ZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYm91bmNlLk1pY3JvdGFza0RlbGF5CitQQVNT
OiBDYWxsIHdhcyBkZWxheWVkLgorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgorUEFTUzog
Rmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4KK1BB
U1M6IERlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERlYm91bmNlLkRpZmZlcmVudERlbGF5cworUEFTUzogQ2FsbCB3YXMgZGVsYXllZC4KK1BB
U1M6IEFyZ3VtZW50cyBsZW5ndGggaXMgMi4KK1BBU1M6IEZpcnN0IGFyZ3VtZW50IGlzIDMuCitQ
QVNTOiBTZWNvbmQgYXJndW1lbnQgaXMgJ2VydCcuCitQQVNTOiBEZWJvdW5jZWQgZnVuY3Rpb24g
Y2FsbGVkIG9uY2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJvdW5jZS5Gb3JjZQorUEFT
UzogQ2FsbCB3YXMgbm90IGRlbGF5ZWQuCitQQVNTOiBBcmd1bWVudHMgbGVuZ3RoIGlzIDIuCitQ
QVNTOiBGaXJzdCBhcmd1bWVudCBpcyAyLgorUEFTUzogU2Vjb25kIGFyZ3VtZW50IGlzICdmZ2gn
LgorUEFTUzogRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBpbW1lZGlhdGVseQorUEFTUzogRGVi
b3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBvbmNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVi
b3VuY2UuQ2FuY2VsCitQQVNTOiBEZWJvdW5jZWQgZnVuY3Rpb24gY2FuY2VsZWQuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvZGVib3VuY2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzgzMzY2ZmQ4NjAyNjAxM2JhNWI3ZjkyYzkzNTBhYTdlNDAyMjczMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2RlYm91bmNlci5odG1sCkBA
IC0wLDAgKzEsMjE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3Vp
dGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRlYm91bmNlciIpOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVib3VuY2VyLlRpbWVEZWxheS5T
YW1lIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBj
YWxsQ291bnQgPSAwOworICAgICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5v
dygpOworCisgICAgICAgICAgICBsZXQgZGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoZm9vLCBi
YXIpID0+IHsKKyAgICAgICAgICAgICAgICArK2NhbGxDb3VudDsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0R3JlYXRlclRoYW5PckVxdWFsKHBlcmZvcm1hbmNlLm5vdygp
IC0gc3RhcnRUaW1lLCA5LCAiQ2FsbCB3YXMgZGVsYXllZC4iKTsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwgIkFyZ3VtZW50
cyBsZW5ndGggaXMgMi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGZvbywgNCwgIkZpcnN0IGFyZ3VtZW50IGlzIDQuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChiYXIsICJhYmMiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdh
YmMnLiIpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZv
clRpbWUoMTAsIDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUo
MTAsIDIsICdmZ2gnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDMs
ICdlcnQnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDQsICdhYmMn
KTsKKworICAgICAgICAgICAgaWYgKGNhbGxDb3VudCkKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmZhaWwoIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgaW1tZWRpYXRlbHkuIik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoY2FsbENvdW50LCAxLCAiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxl
ZCBvbmNlLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDIw
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiRGVib3VuY2VyLlRpbWVEZWxheS5EaWZmZXJlbnQiLAorICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAg
ICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CisKKyAgICAgICAgICAgIGxl
dCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAg
ICAgICsrY2FsbENvdW50OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RH
cmVhdGVyVGhhbk9yRXF1YWwocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUsIDM5LCAiQ2Fs
bCB3YXMgZGVsYXllZC4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZvbywgNCwgIkZpcnN0IGFy
Z3VtZW50IGlzIDQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChiYXIsICJhYmMiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMnLiIpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDEsICd4eXonKTsK
KyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMjAsIDIsICdmZ2gnKTsKKyAgICAg
ICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMzAsIDMsICdlcnQnKTsKKyAgICAgICAgICAg
IGRlYm91bmNlci5kZWxheUZvclRpbWUoNDAsIDQsICdhYmMnKTsKKworICAgICAgICAgICAgaWYg
KGNhbGxDb3VudCkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91bmNl
ZCBmdW5jdGlvbiBjYWxsZWQgaW1tZWRpYXRlbHkuIik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2Fs
bENvdW50LCAxLCAiRGVib3VuY2VkIGZ1bmN0aW9uIGNhbGxlZCBvbmNlLiIpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVib3VuY2UuVGlt
ZURlbGF5Llplcm8iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9y
bWFuY2Uubm93KCk7CisKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2Vy
KChmb28sIGJhcikgPT4geworICAgICAgICAgICAgICAgICsrY2FsbENvdW50OworCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RHcmVhdGVyVGhhbk9yRXF1YWwocGVyZm9ybWFu
Y2Uubm93KCkgLSBzdGFydFRpbWUsIDAsICJDYWxsIHdhcyBkZWxheWVkLiIpOworCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChhcmd1bWVudHMubGVuZ3RoLCAyLCAi
QXJndW1lbnRzIGxlbmd0aCBpcyAyLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoZm9vLCA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJhciwgImFiYyIsICJTZWNvbmQgYXJndW1l
bnQgaXMgJ2FiYycuIik7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVib3VuY2Vy
LmRlbGF5Rm9yVGltZSgwLCAxLCAneHl6Jyk7CisgICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlG
b3JUaW1lKDAsIDIsICdmZ2gnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUo
MCwgMywgJ2VydCcpOworICAgICAgICAgICAgZGVib3VuY2VyLmRlbGF5Rm9yVGltZSgwLCA0LCAn
YWJjJyk7CisKKyAgICAgICAgICAgIGlmIChjYWxsQ291bnQpCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5jZWQgZnVuY3Rpb24gY2FsbGVkIGltbWVkaWF0ZWx5LiIp
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNhbGxDb3VudCwgMSwgIkRlYm91bmNlZCBmdW5jdGlvbiBj
YWxsZWQgb25jZS4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
LCAxMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIkRlYm91bmNlLk1pY3JvdGFza0RlbGF5IiwKKyAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBjYWxsQ291bnQgPSAwOworICAgICAgICAg
ICAgbGV0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOworCisgICAgICAgICAgICBsZXQg
ZGVib3VuY2VyID0gbmV3IERlYm91bmNlcigoZm9vLCBiYXIpID0+IHsKKyAgICAgICAgICAgICAg
ICArK2NhbGxDb3VudDsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0R3Jl
YXRlclRoYW5PckVxdWFsKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lLCAwLCAiQ2FsbCB3
YXMgZGVsYXllZC4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZvbywgNCwgIkZpcnN0IGFyZ3Vt
ZW50IGlzIDQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChi
YXIsICJhYmMiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMnLiIpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvck1pY3JvdGFzaygxLCAneHl6Jyk7Cisg
ICAgICAgICAgICBkZWJvdW5jZXIuZGVsYXlGb3JNaWNyb3Rhc2soMiwgJ2ZnaCcpOworICAgICAg
ICAgICAgZGVib3VuY2VyLmRlbGF5Rm9yTWljcm90YXNrKDMsICdlcnQnKTsKKyAgICAgICAgICAg
IGRlYm91bmNlci5kZWxheUZvck1pY3JvdGFzayg0LCAnYWJjJyk7CisKKyAgICAgICAgICAgIGlm
IChjYWxsQ291bnQpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJEZWJvdW5j
ZWQgZnVuY3Rpb24gY2FsbGVkIGltbWVkaWF0ZWx5LiIpOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNh
bGxDb3VudCwgMSwgIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4iKTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYm91bmNlLkRp
ZmZlcmVudERlbGF5cyIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAg
ICAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBwZXJm
b3JtYW5jZS5ub3coKTsKKworICAgICAgICAgICAgbGV0IGRlYm91bmNlciA9IG5ldyBEZWJvdW5j
ZXIoKGZvbywgYmFyKSA9PiB7CisgICAgICAgICAgICAgICAgKytjYWxsQ291bnQ7CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEdyZWF0ZXJUaGFuT3JFcXVhbChwZXJmb3Jt
YW5jZS5ub3coKSAtIHN0YXJ0VGltZSwgMTksICJDYWxsIHdhcyBkZWxheWVkLiIpOworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChhcmd1bWVudHMubGVuZ3RoLCAy
LCAiQXJndW1lbnRzIGxlbmd0aCBpcyAyLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoZm9vLCAzLCAiRmlyc3QgYXJndW1lbnQgaXMgMy4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJhciwgImVydCIsICJTZWNvbmQgYXJn
dW1lbnQgaXMgJ2VydCcuIik7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVib3Vu
Y2VyLmRlbGF5Rm9yTWljcm90YXNrKDEsICd4eXonKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5k
ZWxheUZvckZyYW1lKDIsICdmZ2gnKTsKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRp
bWUoMjAsIDMsICdlcnQnKTsKKworICAgICAgICAgICAgaWYgKGNhbGxDb3VudCkKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgaW1t
ZWRpYXRlbHkuIik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FsbENvdW50LCAxLCAiRGVib3VuY2Vk
IGZ1bmN0aW9uIGNhbGxlZCBvbmNlLiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiRGVib3VuY2UuRm9yY2UiLAorICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAg
ICAgICBsZXQgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CisKKyAgICAgICAgICAgIGxl
dCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKChmb28sIGJhcikgPT4geworICAgICAgICAgICAg
ICAgICsrY2FsbENvdW50OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RM
ZXNzVGhhbk9yRXF1YWwocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUsIDEsICJDYWxsIHdh
cyBub3QgZGVsYXllZC4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgMiwgIkFyZ3VtZW50cyBsZW5ndGggaXMgMi4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZvbywgMiwgIkZpcnN0IGFy
Z3VtZW50IGlzIDIuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChiYXIsICJmZ2giLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdmZ2gnLiIpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTAsIDEsICd4eXonKTsK
KyAgICAgICAgICAgIGRlYm91bmNlci5mb3JjZSgyLCAnZmdoJyk7CisKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2FsbENvdW50LCAxLCAiRGVib3VuY2VkIGZ1bmN0aW9u
IGNhbGxlZCBpbW1lZGlhdGVseSIpOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNhbGxDb3VudCwgMSwg
IkRlYm91bmNlZCBmdW5jdGlvbiBjYWxsZWQgb25jZS4iKTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRlYm91bmNlLkNhbmNlbCIsCisgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFs
c2U7CisKKyAgICAgICAgICAgIGxldCBkZWJvdW5jZXIgPSBuZXcgRGVib3VuY2VyKCgpID0+IHsK
KyAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGRlYm91bmNlci5kZWxheUZvclRpbWUoMTApOworICAgICAgICAgICAgZGVib3VuY2Vy
LmNhbmNlbCgpOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNhbGxlZCwgIkRlYm91bmNlZCBmdW5jdGlv
biBjYW5jZWxlZC4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
LCAyMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
CisgICAgPHA+VGVzdGluZyBEZWJvdW5jZXIgZnVuY3Rpb25hbGl0eS48L3A+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJv
dHRsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJv
dHRsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhODIxYzkz
MTM2NDFmZGNhYmZmMzViZGMwZjVmOTkyMDIwYjRiODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMv
dGhyb3R0bGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGVz
dCB0aHJvdHRsZSBwcm94eSBzdXBwb3J0LgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGhy
b3R0bGUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCYXNpYyB0aHJvdHRsZQotQ2FsbCB0aHJvdHRs
ZWQgZnVuY3Rpb24gZXZlcnkgMSBtcyBmb3IgMTEwIG1zLgotUEFTUzogQWxsIGNhbGxzIGRlbGF5
ZWQgYXQgbGVhc3QgNTAgbXMuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUaHJvdHRsZSBwcm94
eSB1bmlxdWVuZXNzCi1QQVNTOiBFYWNoIGNhbGwgdG8gdGhyb3R0bGUgc2hvdWxkIHJldHVybiBh
IG5ldyBwcm94eS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRocm90dGxlZCBmdW5jdGlvbiBh
cmd1bWVudHMKLVBBU1M6IFRyYWlsaW5nIGNhbGwgaW52b2tlZCB3aXRoIG1vc3QgcmVjZW50IGFy
Z3VtZW50cy4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbmNlbCB0aHJvdHRsZQotQ2FuY2Vs
ZWQgdGhyb3R0bGVkIGZ1bmN0aW9uLgotUEFTUzogVGhyb3R0bGVkIGZ1bmN0aW9uIGNhbmNlbGVk
LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRs
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhkNmQyZDgyYzg1MmQ4YTUzZDg5ZTg3ZDNh
ZWE2ZDRmNzJiNzFlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRsZS5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGhyb3R0bGUi
KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkJhc2ljIHRocm90
dGxlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGNvbnN0
IGRlbGF5ID0gNTA7Ci0gICAgICAgICAgICBjb25zdCBkdXJhdGlvbiA9IDExMDsKLSAgICAgICAg
ICAgIGNvbnN0IG1heGltdW1OdW1iZXJPZkNhbGxzID0gTWF0aC5jZWlsKGR1cmF0aW9uIC8gZGVs
YXkpICsgMTsgLy8gQWRkIG9uZSBmb3IgdGhlIGxlYWRpbmcgZWRnZS4gTWF0aC5jZWlsIGFjY291
bnRzIGZvciB0aGUgdHJhaWxpbmcgZWRnZS4KLQotICAgICAgICAgICAgbGV0IGxhc3RDYWxsVGlt
ZSA9IE5hTjsKLSAgICAgICAgICAgIGxldCBudW1iZXJPZkNhbGxzID0gMDsKLQotICAgICAgICAg
ICAgbGV0IG9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB0ZXN0KGlzVHJhaWxpbmcpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbGV0IG5vdyA9IERhdGUubm93KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCsrbnVtYmVyT2ZDYWxscyA+IG1heGltdW1OdW1iZXJPZkNhbGxzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZWplY3QoIlRocm90dGxlZCBmdW5jdGlvbiBjYWxsZWQgdG9v
IG1hbnkgdGltZXMuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGxhc3RDYWxs
VGltZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxEZWxheSA9IG5vdyAt
IGxhc3RDYWxsVGltZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxEZWxheSA8
IGRlbGF5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWls
KGBEZWxheSBzaG91bGQgYmUgYXQgbGVhc3QgJHtkZWxheX0gbXMuIFdhcyAke2FjdHVhbERlbGF5
fSBtcy5gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBsYXN0Q2FsbFRpbWUg
PSBub3c7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzVHJhaWxpbmcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgQWxsIGNhbGxzIGRlbGF5ZWQgYXQg
bGVhc3QgJHtkZWxheX0gbXMuYCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQ2FsbCB0aHJvdHRsZWQgZnVuY3Rp
b24gZXZlcnkgMSBtcyBmb3IgJHtkdXJhdGlvbn0gbXMuYCk7Ci0KLSAgICAgICAgICAgIGxldCB0
aHJvdHRsZVByb3h5ID0gb2JqZWN0LnRocm90dGxlKGRlbGF5KTsKLSAgICAgICAgICAgIHRocm90
dGxlUHJveHkudGVzdCgpOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBkdXJh
dGlvbjsgaSsrKQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRsZVBy
b3h5LnRlc3QoaSA9PT0gZHVyYXRpb24pOyB9LCBpKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiVGhyb3R0bGUgcHJveHkgdW5p
cXVlbmVzcyIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBs
ZXQgb2JqZWN0ID0ge307Ci0gICAgICAgICAgICBsZXQgZmlyc3RQcm94eSA9IG9iamVjdC50aHJv
dHRsZSgxKTsKLSAgICAgICAgICAgIGxldCBzZWNvbmRQcm94eSA9IG9iamVjdC50aHJvdHRsZSgx
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwoZmlyc3RQcm94eSwg
c2Vjb25kUHJveHksICJFYWNoIGNhbGwgdG8gdGhyb3R0bGUgc2hvdWxkIHJldHVybiBhIG5ldyBw
cm94eS4iKTsKLSAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiVGhyb3R0bGVkIGZ1bmN0aW9u
IGFyZ3VtZW50cyIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICBsZXQgdmFsdWVzID0gWzEsIDIsIDNdOwotICAgICAgICAgICAgbGV0IGlzTGVhZGluZ0NhbGwg
PSB0cnVlOwotCi0gICAgICAgICAgICBsZXQgb2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHRl
c3QodmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGVhZGluZ0NhbGwpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlzTGVhZGluZ0NhbGwgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgIGxldCBleHBlY3RlZCA9IHZhbHVlcy5sYXN0VmFsdWU7Ci0gICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmFsdWUsIGV4cGVjdGVkLCAiVHJhaWxp
bmcgY2FsbCBpbnZva2VkIHdpdGggbW9zdCByZWNlbnQgYXJndW1lbnRzLiIpOwotICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsK
LQotICAgICAgICAgICAgbGV0IGkgPSAwOwotICAgICAgICAgICAgbGV0IHRocm90dGxlUHJveHkg
PSBvYmplY3QudGhyb3R0bGUoNTApOwotICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFs
dWVzKQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRsZVByb3h5LnRl
c3QodmFsdWUpOyB9LCBpKyspOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJDYW5jZWwgdGhyb3R0bGUiLAotICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7Ci0K
LSAgICAgICAgICAgIGxldCBvYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgdGVzdCgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxlZCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJDYWxsZWQg
dGhyb3R0bGVkIGZ1bmN0aW9uIGFmdGVyIGNhbmNlbC4iKTsKLSAgICAgICAgICAgICAgICAgICAg
cmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgbGV0IHRocm90dGxlUHJveHkgPSBvYmplY3QudGhyb3R0bGUoMjApOwotICAgICAgICAgICAg
dGhyb3R0bGVQcm94eS50ZXN0KCk7Ci0gICAgICAgICAgICB0aHJvdHRsZVByb3h5LnRlc3QoKTsK
LQotICAgICAgICAgICAgb2JqZWN0LnRlc3QuY2FuY2VsVGhyb3R0bGUoKTsKLSAgICAgICAgICAg
IGNhbmNlbGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNhbmNl
bGVkIHRocm90dGxlZCBmdW5jdGlvbi4iKTsKLQotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJUaHJvdHRsZWQgZnVuY3Rp
b24gY2FuY2VsZWQuIik7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAg
fSwgNTApOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgotICAgIDxwPlRlc3QgdGhyb3R0bGUgcHJveHkgc3VwcG9ydC48L3A+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90aHJvdHRs
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0
bGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDhlZTc2NjY0YzViNjc0MWJiMDQ4OTQ1OGRl
MmZlNTVhMWVjOTFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvdGhyb3R0bGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitUZXN0IFRo
cm90dGxlciBmdW5jdGlvbmFsaXR5LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGhyb3R0
bGVyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGhyb3R0bGVyLkZpcmUuQmFzaWMKK0NhbGwgdGhy
b3R0bGVkIGZ1bmN0aW9uIGV2ZXJ5IDEgbXMgZm9yIDExMCBtcy4KK1BBU1M6IEFsbCBjYWxscyBk
ZWxheWVkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGhyb3R0bGVyLkZpcmUuTGFzdEFyZ3Vt
ZW50cworUEFTUzogVHJhaWxpbmcgY2FsbCBpbnZva2VkIHdpdGggbW9zdCByZWNlbnQgYXJndW1l
bnRzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGhyb3R0bGVyLkZvcmNlCitQQVNTOiBBcmd1
bWVudHMgbGVuZ3RoIGlzIDIuCitQQVNTOiBGaXJzdCBhcmd1bWVudCBpcyAxLgorUEFTUzogU2Vj
b25kIGFyZ3VtZW50IGlzICd4eXonLgorUEFTUzogQXJndW1lbnRzIGxlbmd0aCBpcyAyLgorUEFT
UzogRmlyc3QgYXJndW1lbnQgaXMgNC4KK1BBU1M6IFNlY29uZCBhcmd1bWVudCBpcyAnYWJjJy4K
K1BBU1M6IFRocm90dGxlZCBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLgorUEFTUzog
VGhyb3R0bGVkIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIGNhbGxp
bmcgZm9yY2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUaHJvdHRsZXIuQ2FuY2VsCitUaHJv
dHRsZWQgZnVuY3Rpb24gY2FsbGVkLgorQ2FuY2VsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uLgorUEFT
UzogVGhyb3R0bGVkIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIGNh
bGxpbmcgY2FuY2VsLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy90aHJvdHRsZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Ro
cm90dGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMGE2YTJjOWI0ZjQzODg0ZDhhMmFiOWVmNGY2Yjg4
NTEwMzIzZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy90aHJvdHRsZXIuaHRtbApAQCAtMCwwICsxLDE0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRl
KCJUaHJvdHRsZXIiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IlRocm90dGxlci5GaXJlLkJhc2ljIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgICAgIGNvbnN0IGRlbGF5ID0gNTA7CisgICAgICAgICAgICBjb25zdCBkdXJhdGlv
biA9IDExMDsKKyAgICAgICAgICAgIGNvbnN0IG1heGltdW1OdW1iZXJPZkNhbGxzID0gTWF0aC5j
ZWlsKGR1cmF0aW9uIC8gZGVsYXkpICsgMTsgLy8gQWRkIG9uZSBmb3IgdGhlIGxlYWRpbmcgZWRn
ZS4gTWF0aC5jZWlsIGFjY291bnRzIGZvciB0aGUgdHJhaWxpbmcgZWRnZS4KKworICAgICAgICAg
ICAgbGV0IGxhc3RDYWxsVGltZSA9IE5hTjsKKyAgICAgICAgICAgIGxldCBudW1iZXJPZkNhbGxz
ID0gMDsKKworICAgICAgICAgICAgbGV0IHRocm90dGxlciA9IG5ldyBUaHJvdHRsZXIoKGlzVHJh
aWxpbmcpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTsKKworICAg
ICAgICAgICAgICAgIGlmICgrK251bWJlck9mQ2FsbHMgPiBtYXhpbXVtTnVtYmVyT2ZDYWxscykg
eworICAgICAgICAgICAgICAgICAgICByZWplY3QoIlRocm90dGxlZCBmdW5jdGlvbiBjYWxsZWQg
dG9vIG1hbnkgdGltZXMuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGxhc3RDYWxsVGltZSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IGFjdHVhbERlbGF5ID0gbm93IC0gbGFzdENhbGxUaW1l
OworICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsRGVsYXkgPCBkZWxheSAtIDEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbChgRGVsYXkgc2hvdWxkIGJl
IGF0IGxlYXN0ICR7ZGVsYXl9IG1zLiBXYXMgJHthY3R1YWxEZWxheX0gbXMuYCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZWplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGxhc3RDYWxsVGltZSA9IG5vdzsKKworICAgICAgICAgICAgICAgIGlmIChpc1RyYWls
aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgQWxsIGNhbGxz
IGRlbGF5ZWQuYCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LCBkZWxheSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGBDYWxsIHRocm90dGxlZCBmdW5jdGlvbiBldmVyeSAxIG1zIGZvciAke2R1cmF0aW9u
fSBtcy5gKTsKKworICAgICAgICAgICAgdGhyb3R0bGVyLmZpcmUoKTsKKworICAgICAgICAgICAg
Zm9yIChsZXQgaSA9IDE7IGkgPD0gZHVyYXRpb247IGkrKykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsgdGhyb3R0bGVyLmZpcmUoaSA9PT0gZHVyYXRpb24pOyB9LCBpKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiVGhyb3R0bGVyLkZpcmUuTGFzdEFyZ3VtZW50cyIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgdmFsdWVzID0gWzEsIDIsIDNdOworICAgICAgICAg
ICAgbGV0IGlzTGVhZGluZ0NhbGwgPSB0cnVlOworCisgICAgICAgICAgICBsZXQgdGhyb3R0bGVy
ID0gbmV3IFRocm90dGxlcigodmFsdWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNMZWFk
aW5nQ2FsbCkgeworICAgICAgICAgICAgICAgICAgICBpc0xlYWRpbmdDYWxsID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZhbHVlLCB2YWx1ZXMubGFzdFZhbHVl
LCAiVHJhaWxpbmcgY2FsbCBpbnZva2VkIHdpdGggbW9zdCByZWNlbnQgYXJndW1lbnRzLiIpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAg
ICAgICAgbGV0IGkgPSAwOworICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdHRsZXIuZmlyZSh2YWx1ZSk7
IH0sIGkrKyk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIlRocm90dGxlci5Gb3JjZSIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgY2FsbENvdW50ID0gMDsKKworICAgICAgICAgICAg
bGV0IHRocm90dGxlciA9IG5ldyBUaHJvdHRsZXIoKGZvbywgYmFyKSA9PiB7CisgICAgICAgICAg
ICAgICAgKytjYWxsQ291bnQ7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKGFyZ3VtZW50cy5sZW5ndGgsIDIsICJBcmd1bWVudHMgbGVuZ3RoIGlzIDIuIik7CisK
KyAgICAgICAgICAgICAgICBpZiAoY2FsbENvdW50ID09PSAxKSB7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZm9vLCAxLCAiRmlyc3QgYXJndW1lbnQgaXMg
MS4iKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChiYXIs
ICJ4eXoiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICd4eXonLiIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZm9v
LCA0LCAiRmlyc3QgYXJndW1lbnQgaXMgNC4iKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChiYXIsICJhYmMiLCAiU2Vjb25kIGFyZ3VtZW50IGlzICdhYmMn
LiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwKTsKKworICAgICAgICAg
ICAgdGhyb3R0bGVyLmZpcmUoMSwgJ3h5eicpOworICAgICAgICAgICAgdGhyb3R0bGVyLmZpcmUo
MiwgJ2ZnaCcpOworICAgICAgICAgICAgdGhyb3R0bGVyLmZpcmUoMywgJ2VydCcpOworCisgICAg
ICAgICAgICB0aHJvdHRsZXIuZm9yY2UoNCwgJ2FiYycpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChjYWxsQ291bnQsIDIsICJUaHJvdHRsZWQgZnVuY3Rpb24gc2hvdWxk
IGJlIGNhbGxlZCB0d2ljZS4iKTsKKworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjYWxsQ291bnQsIDIsICJU
aHJvdHRsZWQgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgYWdhaW4gYWZ0ZXIgY2FsbGlu
ZyBmb3JjZS4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1
MCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIlRocm90dGxlci5DYW5jZWwiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBsZXQgY2Fu
Y2VsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgbGV0IHRocm90dGxlciA9IG5ldyBUaHJvdHRs
ZXIoKCkgPT4geworICAgICAgICAgICAgICAgICsrY2FsbENvdW50OworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlRocm90dGxlZCBmdW5jdGlvbiBjYWxsZWQuIik7CisKKyAg
ICAgICAgICAgICAgICBpZiAoIWNhbmNlbGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkNhbGxlZCB0aHJvdHRsZWQg
ZnVuY3Rpb24gYWZ0ZXIgY2FuY2VsLiIpOworICAgICAgICAgICAgICAgIHJlamVjdCgpOworICAg
ICAgICAgICAgfSwgMjApOworCisgICAgICAgICAgICB0aHJvdHRsZXIuZmlyZSgpOworICAgICAg
ICAgICAgdGhyb3R0bGVyLmZpcmUoKTsKKworICAgICAgICAgICAgdGhyb3R0bGVyLmNhbmNlbCgp
OworICAgICAgICAgICAgY2FuY2VsZWQgPSB0cnVlOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiQ2FuY2VsZWQgdGhyb3R0bGVkIGZ1bmN0aW9uLiIpOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGNhbGxDb3VudCwgMSwgIlRocm90dGxlZCBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGNhbGxl
ZCBhZ2FpbiBhZnRlciBjYWxsaW5nIGNhbmNlbC4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdCBUaHJvdHRsZXIgZnVuY3Rpb25hbGl0eS48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDE5ZjYwZDk2ZjdhZDI4ZWUxYjc5ODMxNmU4N2QwMzYwZWY0MjVjY2YuLjY1
OGIxOTc5YjEwZWNmNzU0ZTJhMWMxOTk2ZTc3NDViMDNmZmM0NjQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTQzLDcgKzE5NDMsNyBAQCB3ZWJraXQu
b3JnL2IvMTgzMTg4IGltcG9ydGVkL2JsaW5rL3N2Zy9hcy1pbWFnZS9pbWFnZS1jaGFuZ2Utd2l0
aC1lcXVhbC1zaXplcy5odAogCiB3ZWJraXQub3JnL2IvMTgzNjA4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5L3Rlc3Rfd3JhcEtl
eV91bndyYXBLZXkuaHR0cHMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8x
ODM2MDkgaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0bGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTgzNjA5IGluc3BlY3Rvci91bml0LXRlc3RzL3Rocm90dGxlci5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4MzIxNCBjb21wb3NpdGluZy92aWRl
by9wb3N0ZXIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKQEAgLTIwMzEsNyArMjAz
MSw3IEBAIHdlYmtpdC5vcmcvYi8xODc1ODcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9jcm9zcy1vcmlnaW4tcmVzb3VyY2UtCiAKIHdlYmtpdC5vcmcvYi8xODc1ODggZmFz
dC9mb3Jtcy9mb3JtLWNvbnRyb2wtZWxlbWVudC1jcmFzaC5odG1sIFsgVGltZW91dCBQYXNzIF0K
IAotd2Via2l0Lm9yZy9iLzE4NzU4OSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZS5odG1s
IFsgVGltZW91dCBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xODc1ODkgaW5zcGVjdG9yL3VuaXQtdGVz
dHMvZGVib3VuY2VyLmh0bWwgWyBUaW1lb3V0IFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTg3NTkw
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1v
ZGVsL3RpbWVsaW5lcy9kb2N1bWVudC10aW1lbGluZXMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzNhOTQ4NGY0
OWYxNjlmNTZlYTgzOTBkZTJmZTMzZTZlZGVhYzdjNi4uZDc0ZWVkNmNkNzI4YTY5NzIyYzc0NDAw
MGRiYTFmNzJhZmVkZTFjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTEwNzcsMTAgKzEwNzcsMTAgQEAgd2Via2l0Lm9yZy9iLzE2ODE0NiBbIERlYnVn
IF0gaW5zcGVjdG9yL3Byb3RvY29sL2luc3BlY3Rvci1iYWNrZW5kLWludm9jYXRpb24tcmUKIHdl
YmtpdC5vcmcvYi8xNDg2MzYgaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3Qtd2Vhay1jb2xs
ZWN0aW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTUzMTA4
IFsgRGVidWcgXSBpbnNwZWN0b3IvbW9kZWwvc2NvcGUtY2hhaW4tbm9kZS5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNjQyNzggaW5zcGVjdG9yL3N0b3JhZ2UvZG9tU3RvcmFn
ZS1ldmVudHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTg0MDU3IGluc3Bl
Y3Rvci91bml0LXRlc3RzL2RlYm91bmNlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzE4NDA1NyBpbnNwZWN0b3IvdW5pdC10ZXN0cy9kZWJvdW5jZXIuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTU1NjA3IGluc3BlY3Rvci91bml0LXRlc3RzL2hlYXAtc25h
cHNob3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTU3OTk5IGluc3BlY3Rv
ci91bml0LXRlc3RzL2hlYXAtc25hcHNob3QtY29sbGVjdGlvbi1ldmVudC5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8xODE4MzIgaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGhyb3R0
bGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTgxODMyIGluc3BlY3Rvci91
bml0LXRlc3RzL3Rocm90dGxlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
NjEzNjEgaW5zcGVjdG9yL3VuaXQtdGVzdHMveWllbGRhYmxlLXRhc2suaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTY5MjI4IGluc3BlY3Rvci93b3JrZXIvY29uc29sZS1iYXNp
Yy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNjQ4NzIgaW5zcGVjdG9yL3dv
cmtlci9kZWJ1Z2dlci1tdWx0aXBsZS10YXJnZXRzLXBhdXNlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
VGltZW91dCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>