<?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>194972</bug_id>
          
          <creation_ts>2019-02-22 17:23:24 -0800</creation_ts>
          <short_desc>Web Inspector: CPU Usage Timeline - Main Thread Indicator</short_desc>
          <delta_ts>2019-02-26 13:58:53 -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>
          
          
          <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>
          
          <blocked>194455</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <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>1509277</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-22 17:23:24 -0800</bug_when>
    <thetext>CPU Usage Timeline - Main Thread Indicator

Add a strip in the CPU Timeline Graph that highlights what the main thread was doing.
Clicking within it selects the relevant timeline events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509280</commentid>
    <comment_count>1</comment_count>
      <attachid>362802</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-22 17:29:33 -0800</bug_when>
    <thetext>Created attachment 362802
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509284</commentid>
    <comment_count>2</comment_count>
      <attachid>362802</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-22 17:42:34 -0800</bug_when>
    <thetext>Comment on attachment 362802
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/ChangeLog:12
&gt; +        The existing enclosingNode doesn&apos;t work for SVG because its names
&gt; +        are lowercase. Add a simplified version for the svg case.

I think we should fix the existing enclosingNodeOrSelf instead of introducing a new method.

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:213
&gt; Object.defineProperty(Node.prototype, &quot;enclosingNodeOrSelfWithNodeName&quot;,
&gt; {
&gt;     value(nodeName)
&gt;     {
&gt;         return this.enclosingNodeOrSelfWithNodeNameInArray([nodeName]);

enclosingNodeOrSelfWithNodeNameInArray is only used here and in one place in TreeOutline:

        var listNode = node.enclosingNodeOrSelfWithNodeNameInArray([&quot;ol&quot;, &quot;li&quot;]);

I think we should get rid of enclosingNodeOrSelfWithNodeNameInArray. It&apos;s a 9-word method that&apos;s really needed only in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509857</commentid>
    <comment_count>3</comment_count>
      <attachid>362802</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-25 17:08:15 -0800</bug_when>
    <thetext>Comment on attachment 362802
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/ChangeLog:45
&gt; +        Place the Main Thread Indicator view beneath the big graph.

NIT: s/Place/Move

&gt; Source/WebInspectorUI/ChangeLog:46
&gt; +        Clicks inside it select records in the Timeline Overview.

NIT: s/Clicks/Clicking and s/select/selects

&gt; Source/WebInspectorUI/UserInterface/Models/Timeline.js:96
&gt; +    recordsOverlappingTimeRange(startTime, endTime)

It sucks that we need a separate call for this.  I&apos;d almost rather have the callers that specifically need the current functionality of `recordsInTimeRange` do their own filtering at the call site :(

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:678
&gt; +        let svgRect = svgElement.getBoundingClientRect();
&gt; +        let position = event.pageX - svgRect.left;

If all you need is the `left`, you could use `totalOffsetLeft` instead.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:681
&gt; +            return svgRect.width - position;

This should be `offsetWidth` (computed size in pixels), not `width` (SVG attribute value).

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:710
&gt; +            if (this._attemptSelectIndicatatorTimelineRecord(clickStartTime, clickStartTime + delta))

This should be `clickEndTime + delta`.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:725
&gt; +            case WI.LayoutTimelineRecord.EventType.RecalculateStyles:
&gt; +            case WI.LayoutTimelineRecord.EventType.ForcedLayout:
&gt; +            case WI.LayoutTimelineRecord.EventType.Layout:
&gt; +            case WI.LayoutTimelineRecord.EventType.Paint:
&gt; +            case WI.LayoutTimelineRecord.EventType.Composite:

A comment explaining that &quot;these types of records are the only ones that do any work&quot; would be nice :)

You could also remove the other `case`s and just `return false;` since we don&apos;t &quot;care&quot; about them anyways (unless you want to make sure new record types get &quot;considered&quot;, in which case there should be an assertion/error).

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:748
&gt; +            case WI.ScriptTimelineRecord.EventType.ScriptEvaluated:
&gt; +            case WI.ScriptTimelineRecord.EventType.APIScriptEvaluated:
&gt; +            case WI.ScriptTimelineRecord.EventType.ObserverCallback:
&gt; +            case WI.ScriptTimelineRecord.EventType.EventDispatched:
&gt; +            case WI.ScriptTimelineRecord.EventType.MicrotaskDispatched:
&gt; +            case WI.ScriptTimelineRecord.EventType.TimerFired:
&gt; +            case WI.ScriptTimelineRecord.EventType.AnimationFrameFired:

Ditto (&gt;721).

&gt; Source/WebInspectorUI/UserInterface/Views/CPUUsageIndicatorView.css:37
&gt; +    --cpu-usage-view-details-border-end: 1px solid var(--border-color);

Style: I add another newline before CSS variables to help distinguish what is an actual property vs what is just a &quot;holder of a value&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUUsageIndicatorView.css:41
&gt; +    border-right: var(--cpu-usage-view-details-border-end);

`-webkit-border-end`?

&gt; Source/WebInspectorUI/UserInterface/Views/CPUUsageIndicatorView.css:55
&gt; +    z-index: calc(var(--timeline-marker-z-index) + 1);

NIT: I normally put `z-index` alongside positional properties (e.g. `top`).

&gt; Source/WebInspectorUI/UserInterface/Views/CPUUsageIndicatorView.js:32
&gt; +        this.element.classList.add(&quot;cpu-usage-indicator-view&quot;);

NIT: it seems like all of the logic in this constructor can be moved to an `initialLayout`.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUUsageIndicatorView.js:72
&gt; +            let type = samples[i];

NIT: it seems odd that we&apos;re getting a `type` from a `sample`, but I can&apos;t think of better names.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUUsageIndicatorView.js:88
&gt; +            // If changed type, close current chunk.

NIT: s/changed type/type changed

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:796
&gt; +    _recordWasSelected(event)

There already is a `_recordSelected` event handler in this class.  I think we should rename that event to `_handleTimelineOverviewRecordSelected` and name this new function `_handleTimelineViewRecordSelected`.

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:802
&gt; +

Style: unnecessary newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509935</commentid>
    <comment_count>4</comment_count>
      <attachid>362960</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-25 21:05:53 -0800</bug_when>
    <thetext>Created attachment 362960
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509936</commentid>
    <comment_count>5</comment_count>
      <attachid>362802</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-25 21:10:38 -0800</bug_when>
    <thetext>Comment on attachment 362802
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:45
&gt;&gt; +        Place the Main Thread Indicator view beneath the big graph.
&gt; 
&gt; NIT: s/Place/Move

It did not exist before, so we are placing it now.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:681
&gt;&gt; +            return svgRect.width - position;
&gt; 
&gt; This should be `offsetWidth` (computed size in pixels), not `width` (SVG attribute value).

This should be the getBoundingClientRect() rect, to it won&apos;t have a offsetWidth property and width should be that.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:725
&gt;&gt; +            case WI.LayoutTimelineRecord.EventType.Composite:
&gt; 
&gt; A comment explaining that &quot;these types of records are the only ones that do any work&quot; would be nice :)
&gt; 
&gt; You could also remove the other `case`s and just `return false;` since we don&apos;t &quot;care&quot; about them anyways (unless you want to make sure new record types get &quot;considered&quot;, in which case there should be an assertion/error).

I want to handle them all to make it clear if we miss a new case in the future. I&apos;ll keep the comments in the previous patch as the reference for this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509945</commentid>
    <comment_count>6</comment_count>
      <attachid>362961</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-25 21:59:39 -0800</bug_when>
    <thetext>Created attachment 362961
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509953</commentid>
    <comment_count>7</comment_count>
      <attachid>362964</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-25 22:38:11 -0800</bug_when>
    <thetext>Created attachment 362964
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509986</commentid>
    <comment_count>8</comment_count>
      <attachid>362964</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-26 00:21:21 -0800</bug_when>
    <thetext>Comment on attachment 362964
[PATCH] Proposed Fix

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

r=me

I think this might need a rebase, as bugzilla wasn&apos;t able to apply it during the review :(

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:221
&gt; +Object.defineProperty(Node.prototype, &quot;enclosingNodeOrSelfWithLocalName&quot;,

I agree with @Nikita.  I think we should fix the existing version, rather than create a new one.

Considering that we `toUpperCase` the `nodeNames`, we should be able to just `toLowerCase` the `node.nodeName` instead.

&gt; Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js:208
&gt; +        this._mainThreadWorkIndicatorView.chart.element.addEventListener(&quot;click&quot;, this._handleIndicatorClick.bind(this));

This could use a more &quot;specific&quot; name, like `_handleMainThreadWorkIndicatorClick`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510178</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-02-26 13:41:12 -0800</bug_when>
    <thetext>https://trac.webkit.org/r242104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510190</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-26 13:58:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/48413488&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362802</attachid>
            <date>2019-02-22 17:29:33 -0800</date>
            <delta_ts>2019-02-25 21:05:53 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>indicator-1.patch</filename>
            <type>text/plain</type>
            <size>31159</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDBlOWFjNjI2NDg0Li44NDNkNjU4Y2JlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTktMDItMjIgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDUFUgVXNhZ2UgVGltZWxpbmUgLSBNYWluIFRocmVhZCBJbmRpY2F0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAg
ICAgKHZhbHVlKToKKyAgICAgICAgVGhlIGV4aXN0aW5nIGVuY2xvc2luZ05vZGUgZG9lc24ndCB3
b3JrIGZvciBTVkcgYmVjYXVzZSBpdHMgbmFtZXMKKyAgICAgICAgYXJlIGxvd2VyY2FzZS4gQWRk
IGEgc2ltcGxpZmllZCB2ZXJzaW9uIGZvciB0aGUgc3ZnIGNhc2UuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanM6IEFkZGVkLgorICAgICAgICAoV0kuUmFuZ2VD
aGFydCk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5nZXQgc2l6ZSk6CisgICAg
ICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5zZXQgc2l6ZSk6CisgICAgICAgIChXSS5SYW5n
ZUNoYXJ0LnByb3RvdHlwZS5hZGRSYW5nZSk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3Rv
dHlwZS5jbGVhcik6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5sYXlvdXQpOgor
ICAgICAgICBBIG5ldyBjaGFydCB0aGF0IGRyYXdzIHJlY3RzIGZvciBnaXZlbiByYW5nZXMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qczoKKyAgICAgICAgKFdJ
LlRpbWVsaW5lLnByb3RvdHlwZS5yZWNvcmRzT3ZlcmxhcHBpbmdUaW1lUmFuZ2UpOgorICAgICAg
ICBIZWxwZXIgdG8gc3BlY2lmaWNhbGx5IGdldCByZWNvcmRzIHRvdWNoaW5nIGEgcmFuZ2UuIFVz
ZWZ1bAorICAgICAgICBmb3Igd2hlbiB3ZSBoYXZlIGEgc2luZ2xlIHBpeGVsIHNwYW5uaW5nIChz
dGFydFRpbWUgLT4gZW5kVGltZSkKKyAgICAgICAgYW5kIHdlIHdhbnQgdG8gZmluZCByZWNvcmRz
IGluIHRoYXQgcGl4ZWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVs
aW5lVmlldy5jc3M6CisgICAgICAgICgudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRp
Y2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCByZWN0KToKKyAgICAgICAgKC50aW1l
bGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdl
LWNoYXJ0IC5zYW1wbGUtdHlwZS1zY3JpcHQpOgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1
IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBs
ZS10eXBlLXN0eWxlKToKKyAgICAgICAgKC50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWlu
ZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IC5zYW1wbGUtdHlwZS1sYXlvdXQp
OgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcg
PiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBsZS10eXBlLXBhaW50KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLkNQVVRp
bWVsaW5lVmlldy5wcm90b3R5cGUuZ2V0IGluZGljYXRvclZpZXdIZWlnaHQpOgorICAgICAgICAo
V0kuQ1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5jbGVhcik6CisgICAgICAgIChXSS5DUFVUaW1l
bGluZVZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgorICAgICAgICAoV0ku
Q1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNQ
VVRpbWVsaW5lVmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5l
Vmlldy5wcm90b3R5cGUuX2dyYXBoUG9zaXRpb25Gb3JNb3VzZUV2ZW50KToKKyAgICAgICAgKFdJ
LkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2hhbmRsZUluZGljYXRvckNsaWNrKToKKyAgICAg
ICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2F0dGVtcHRTZWxlY3RJbmRpY2F0YXRv
clRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUu
X3NlbGVjdFRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgUGxhY2UgdGhlIE1haW4gVGhyZWFkIElu
ZGljYXRvciB2aWV3IGJlbmVhdGggdGhlIGJpZyBncmFwaC4KKyAgICAgICAgQ2xpY2tzIGluc2lk
ZSBpdCBzZWxlY3QgcmVjb3JkcyBpbiB0aGUgVGltZWxpbmUgT3ZlcnZpZXcuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3M6IEFkZGVkLgor
ICAgICAgICAoLmNwdS11c2FnZS1pbmRpY2F0b3Itdmlldyk6CisgICAgICAgICguY3B1LXVzYWdl
LWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9bHRyXSAuY3B1
LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9cnRs
XSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtk
aXI9cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoKToKKyAgICAgICAgKC5j
cHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGgpOgorICAgICAgICAoLmNwdS11c2FnZS1p
bmRpY2F0b3ItdmlldyA+IC5ncmFwaCwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkNQVVVzYWdlSW5k
aWNhdG9yVmlldyk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90eXBl
LmdldCBjaGFydCk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90eXBl
LmNsZWFyKToKKyAgICAgICAgKFdJLkNQVVVzYWdlSW5kaWNhdG9yVmlldy5wcm90b3R5cGUudXBk
YXRlQ2hhcnQpOgorICAgICAgICBDb252ZXJ0cyB0aGUgQ1BVIHNhbXBsZXMgZGF0YSBpbnRvIGEg
UmFuZ2VDaGFydC4gSXQgd29ya3MgdG8gY29hbGVzY2UKKyAgICAgICAgbWFueSBzYW1wbGVzIG9m
IHRoZSBzYW1lIHR5cGUgaW50byBhIHNpbmdsZSByYW5nZSB0byByZWR1Y2UgdG90YWwgcmFuZ2Vz
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk6Cisg
ICAgICAgIChXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVjb3Jk
U2VsZWN0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90
b3R5cGUuX3JlY29yZFdhc1NlbGVjdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lUmVjb3JkaW5n
Q29udGVudFZpZXcucHJvdG90eXBlLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcpOgor
ICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUuX3NlbGVj
dFJlY29yZEluVGltZWxpbmVWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lVmlldy5qczoKKyAgICAgICAgQWRkIGEgcGF0aCBmb3IgYSBUaW1lbGluZVZpZXcgdG8g
ZGlzcGF0Y2ggYSByZWNvcmQgc2VsZWN0ZWQgZXZlbnQgYW5kIGNhdXNlCisgICAgICAgIGhhdmUg
dGhlIFRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgcmVhY3QgdG8gaXQgYnkgdXBkYXRpbmcg
dGhlIHRpbWVsaW5lCisgICAgICAgIG92ZXJ2aWV3IGFuZCByZWxldmVudCB0aW1lbGluZSB2aWV3
LgorCiAyMDE5LTAyLTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIFVzYWdlIFRpbWVsaW5lIC0gVGhyZWFkIEJyZWFr
ZG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcwppbmRleCA0ZjI4ZGNjZGIzOC4uMjg1NTA2NmVmYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpz
CkBAIC0yMTgsNiArMjE4LDE5IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlw
ZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUiLAogICAgIH0KIH0pOwogCitPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxmV2l0
aExvY2FsTmFtZSIsCit7CisgICAgdmFsdWUobG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAgZm9y
IChsZXQgbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGlmIChub2RlLmxvY2FsTmFtZSA9PT0gbG9jYWxOYW1lKQorICAgICAgICAgICAg
ICAgIHJldHVybiBub2RlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZlcnNl
TmV4dE5vZGUiLAogewogICAgIHZhbHVlKHN0YXlXaXRoaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggNWY5NmIwMjI3M2UuLjNmYmNkNmIx
MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CkBAIC00NSw2ICs0NSw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9CdXR0b25Ub29sYmFySXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzIj4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VTdGFja2VkVmll
dy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VW
aWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DYWxsRnJh
bWVJY29ucy5jc3MiPgpAQCAtNTg4LDYgKzU4OSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L0J1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ1BVVGltZWxpbmVWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ1BVVXNhZ2VTdGFja2VkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NQVVVzYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CkBAIC03NDIsNiArNzQ0LDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SYW5nZUNoYXJ0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVjb3JkaW5nQWN0aW9uVHJlZUVsZW1lbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZWNvcmRpbmdDb250ZW50Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlY29yZGluZ1N0YXRlRGV0YWls
c1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKaW5kZXggNzU2Y2U1NzRjNDAu
LjgyOTQ5Y2NmN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCkBAIC05Myw2ICs5MywxNCBAQCBXSS5UaW1lbGlu
ZSA9IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRpbWVsaW5lLkV2ZW50LlJlZnJlc2hlZCk7CiAgICAgfQog
CisgICAgcmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkKKyAg
ICB7CisgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVjb3Jkcy5sb3dlckJvdW5kKHN0
YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5lbmRUaW1lKTsKKyAgICAg
ICAgbGV0IHVwcGVySW5kZXggPSB0aGlzLl9yZWNvcmRzLnVwcGVyQm91bmQoZW5kVGltZSwgKHRp
bWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5zdGFydFRpbWUpOworCisgICAgICAgIHJldHVy
biB0aGlzLl9yZWNvcmRzLnNsaWNlKGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOworICAgIH0KKwog
ICAgIHJlY29yZHNJblRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIGluY2x1ZGVSZWNvcmRC
ZWZvcmVTdGFydCkKICAgICB7CiAgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVjb3Jk
cy5sb3dlckJvdW5kKHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5z
dGFydFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1BVVGltZWxpbmVWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKaW5kZXggMTg5NTJhZGMzMjQuLmMy
MTE2ZTdmMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKQEAgLTIxNSwzICsyMTUsMjcg
QEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtdmlldy5jcHUgOm1hdGNoZXMoLmxpbmUtY2hhcnQs
IC5zdGFja2VkLWxpbmUtY2hhcnQpIC5tYXIKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1z
ZWNvbmRhcnkpOwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3It
Y29udGVudCk7CiB9CisKKy50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRvci12
aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IHJlY3QgeworICAgIHN0cm9rZS1vcGFjaXR5OiAw
LjI1OworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+
IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc2NyaXB0IHsKKyAgICBzdHJva2U6
IHZhcigtLWNwdS1zY3JpcHQtc3Ryb2tlLWNvbG9yKTsKKyAgICBmaWxsOiB2YXIoLS1jcHUtc2Ny
aXB0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRp
Y2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc3R5bGUgewor
ICAgIHN0cm9rZTogdmFyKC0tY3B1LXN0eWxlLXN0cm9rZS1jb2xvcik7CisgICAgZmlsbDogdmFy
KC0tY3B1LXN0eWxlLWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11
c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUt
bGF5b3V0IHsKKyAgICBzdHJva2U6IHZhcigtLWNwdS1sYXlvdXQtc3Ryb2tlLWNvbG9yKTsKKyAg
ICBmaWxsOiB2YXIoLS1jcHUtbGF5b3V0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmll
dy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAu
c2FtcGxlLXR5cGUtcGFpbnQgeworICAgIHN0cm9rZTogdmFyKC0tY3B1LXBhaW50LXN0cm9rZS1j
b2xvcik7CisgICAgZmlsbDogdmFyKC0tY3B1LXBhaW50LWZpbGwtY29sb3IpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGltZWxp
bmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BV
VGltZWxpbmVWaWV3LmpzCmluZGV4IGQzMzNkYzA0MGY2Li5kODUxMjY5ZTJhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGltZWxpbmVW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQ
VVRpbWVsaW5lVmlldy5qcwpAQCAtNTYsNiArNTYsNyBAQCBXSS5DUFVUaW1lbGluZVZpZXcgPSBj
bGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGluZVZpZXcKIAogICAgIHN0YXRp
YyBnZXQgY3B1VXNhZ2VWaWV3SGVpZ2h0KCkgeyByZXR1cm4gMTUwOyB9CiAgICAgc3RhdGljIGdl
dCB0aHJlYWRDUFVVc2FnZVZpZXdIZWlnaHQoKSB7IHJldHVybiA2NTsgfQorICAgIHN0YXRpYyBn
ZXQgaW5kaWNhdG9yVmlld0hlaWdodCgpIHsgcmV0dXJuIDE1OyB9CiAKICAgICAvLyBQdWJsaWMK
IApAQCAtMTAzLDIxICsxMDQsMjQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGlt
ZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgIGNsZWFyVXNhZ2VWaWV3
KHRoaXMuX3Vua25vd25UaHJlYWRVc2FnZVZpZXcpOwogCiAgICAgICAgIHRoaXMuX3JlbW92ZVdv
cmtlclRocmVhZFZpZXdzKCk7Ci0gICAgfQogCi0gICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50cygp
Ci0gICAgewotICAgICAgICByZXR1cm4gW3RoaXMuZWxlbWVudF07CisgICAgICAgIHRoaXMuX21h
aW5UaHJlYWRXb3JrSW5kaWNhdG9yVmlldy5jbGVhcigpOwogICAgIH0KIAogICAgIC8vIFByb3Rl
Y3RlZAogCiAgICAgZ2V0IHNob3dzRmlsdGVyQmFyKCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
IGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLmVs
ZW1lbnRdOworICAgIH0KKwogICAgIGluaXRpYWxMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhp
cy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLWNwdS11c2FnZS1zdGFja2VkLXZpZXctaGVp
Z2h0IiwgQ1BVVGltZWxpbmVWaWV3LmNwdVVzYWdlVmlld0hlaWdodCArICJweCIpOwogICAgICAg
ICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLXZpZXctaGVpZ2h0
IiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdodCArICJweCIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLWluZGljYXRv
ci12aWV3LWhlaWdodCIsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JWaWV3SGVpZ2h0ICsgInB4
Iik7CiAKICAgICAgICAgbGV0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgY29udGVudEVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiY29udGVudCIpOwpAQCAtMTk0LDYgKzE5OCwxMiBAQCBXSS5DUFVU
aW1lbGluZVZpZXcgPSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGluZVZp
ZXcKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NwdVVzYWdlVmlldyk7CiAgICAgICAg
IHRoaXMuX2RldGFpbHNDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NwdVVzYWdl
Vmlldy5lbGVtZW50KTsKIAorICAgICAgICB0aGlzLl9tYWluVGhyZWFkV29ya0luZGljYXRvclZp
ZXcgPSBuZXcgV0kuQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3OworICAgICAgICB0aGlzLmFkZFN1YnZp
ZXcodGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3KTsKKyAgICAgICAgdGhpcy5fZGV0
YWlsc0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFpblRocmVhZFdvcmtJbmRp
Y2F0b3JWaWV3LmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX21haW5UaHJlYWRXb3JrSW5kaWNh
dG9yVmlldy5jaGFydC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFu
ZGxlSW5kaWNhdG9yQ2xpY2suYmluZCh0aGlzKSk7CisKICAgICAgICAgbGV0IHRocmVhZHNTdWJ0
aXRsZUVsZW1lbnQgPSBkZXRhaWxzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIHRocmVhZHNTdWJ0aXRsZUVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgic3VidGl0bGUiLCAidGhyZWFkcyIpOwogICAgICAgICB0aHJlYWRzU3Vi
dGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIlRocmVhZHMiKTsKQEAgLTQ5
NSw2ICs1MDUsMTQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVWaWV3
IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAKICAgICAgICAgICAgIGxheW91dFZpZXcod29ya2Vy
VmlldywgInVzYWdlIiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdodCwg
e2RhdGFQb2ludHM6IHdvcmtlckRhdGEuZGF0YVBvaW50cywgbGF5b3V0TWF4LCBtaW46IHdvcmtl
ckRhdGEubWluLCBtYXg6IHdvcmtlckRhdGEubWF4LCBhdmVyYWdlOiB3b3JrZXJEYXRhLmF2ZXJh
Z2V9KTsKICAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHhTY2FsZUluZGljYXRvclJhbmdl
KHNhbXBsZUluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gKHNhbXBsZUluZGV4IC8gMTAwMCkg
LyBzZWNvbmRzUGVyUGl4ZWw7CisgICAgICAgIH0KKworICAgICAgICBsZXQgZ3JhcGhXaWR0aCA9
IChncmFwaEVuZFRpbWUgLSBncmFwaFN0YXJ0VGltZSkgLyBzZWNvbmRzUGVyUGl4ZWw7CisgICAg
ICAgIGxldCBzaXplID0gbmV3IFdJLlNpemUoZ3JhcGhXaWR0aCwgQ1BVVGltZWxpbmVWaWV3Lmlu
ZGljYXRvclZpZXdIZWlnaHQpOworICAgICAgICB0aGlzLl9tYWluVGhyZWFkV29ya0luZGljYXRv
clZpZXcudXBkYXRlQ2hhcnQoc2FtcGxpbmdEYXRhLnNhbXBsZXMsIHNpemUsIHZpc2libGVFbmRU
aW1lLCB4U2NhbGVJbmRpY2F0b3JSYW5nZSk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAt
NjQ5LDYgKzY2NywxMDkgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVW
aWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgIGlmIChjcHVUaW1lbGluZVJlY29y
ZC5zdGFydFRpbWUgPj0gdGhpcy5zdGFydFRpbWUgJiYgY3B1VGltZWxpbmVSZWNvcmQuZW5kVGlt
ZSA8PSB0aGlzLmVuZFRpbWUpCiAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAg
fQorCisgICAgX2dyYXBoUG9zaXRpb25Gb3JNb3VzZUV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAg
ICAgbGV0IHN2Z0VsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhM
b2NhbE5hbWUoInN2ZyIpOworICAgICAgICBpZiAoIXN2Z0VsZW1lbnQpCisgICAgICAgICAgICBy
ZXR1cm4gTmFOOworCisgICAgICAgIGxldCBzdmdSZWN0ID0gc3ZnRWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKKyAgICAgICAgbGV0IHBvc2l0aW9uID0gZXZlbnQucGFnZVggLSBzdmdS
ZWN0LmxlZnQ7CisKKyAgICAgICAgaWYgKFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09
IFdJLkxheW91dERpcmVjdGlvbi5SVEwpCisgICAgICAgICAgICByZXR1cm4gc3ZnUmVjdC53aWR0
aCAtIHBvc2l0aW9uOworICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgfQorCisgICAgX2hh
bmRsZUluZGljYXRvckNsaWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGNsaWNrUG9zaXRp
b24gPSB0aGlzLl9ncmFwaFBvc2l0aW9uRm9yTW91c2VFdmVudChldmVudCk7CisgICAgICAgIGlm
IChpc05hTihjbGlja1Bvc2l0aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBs
ZXQgc2Vjb25kc1BlclBpeGVsID0gdGhpcy5fdGltZWxpbmVSdWxlci5zZWNvbmRzUGVyUGl4ZWw7
CisgICAgICAgIGxldCBncmFwaENsaWNrVGltZSA9IGNsaWNrUG9zaXRpb24gKiBzZWNvbmRzUGVy
UGl4ZWw7CisgICAgICAgIGxldCBncmFwaFN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1lOworCisg
ICAgICAgIGxldCBjbGlja1N0YXJ0VGltZSA9IGdyYXBoU3RhcnRUaW1lICsgZ3JhcGhDbGlja1Rp
bWU7CisgICAgICAgIGxldCBjbGlja0VuZFRpbWUgPSBjbGlja1N0YXJ0VGltZSArIHNlY29uZHNQ
ZXJQaXhlbDsKKworICAgICAgICAvLyBUcnkgYXQgdGhlIGV4YWN0IGNsaWNrZWQgcGl4ZWwuCisg
ICAgICAgIGlmIChldmVudC50YXJnZXQubG9jYWxOYW1lID09PSAicmVjdCIpIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9hdHRlbXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGluZVJlY29yZChjbGlj
a1N0YXJ0VGltZSwgY2xpY2tFbmRUaW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIklmIHRoZSB1c2VyIGNsaWNrZWQgb24gYSBy
ZWN0IHRoZXJlIHNob3VsZCBoYXZlIGJlZW4gYSByZWNvcmQgaW4gdGhpcyBwaXhlbCByYW5nZSIp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gU3BpcmFsIG91dCA0IHBpeGVscyBlYWNoIHNpZGUg
dG8gdHJ5IGFuZCBzZWxlY3QgYSBuZWFyYnkgcmVjb3JkLgorICAgICAgICBmb3IgKGxldCBpID0g
MSwgZGVsdGEgPSAwOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgZGVsdGEgKz0gc2Vjb25k
c1BlclBpeGVsOworICAgICAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRTZWxlY3RJbmRpY2F0YXRv
clRpbWVsaW5lUmVjb3JkKGNsaWNrU3RhcnRUaW1lIC0gZGVsdGEsIGNsaWNrRW5kVGltZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRTZWxl
Y3RJbmRpY2F0YXRvclRpbWVsaW5lUmVjb3JkKGNsaWNrU3RhcnRUaW1lLCBjbGlja1N0YXJ0VGlt
ZSArIGRlbHRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBfYXR0ZW1wdFNlbGVjdEluZGljYXRhdG9yVGltZWxpbmVSZWNvcmQoc3RhcnRUaW1lLCBl
bmRUaW1lKQorICAgIHsKKyAgICAgICAgbGV0IGxheW91dFRpbWVsaW5lID0gdGhpcy5fcmVjb3Jk
aW5nLnRpbWVsaW5lRm9yUmVjb3JkVHlwZShXSS5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCk7
CisgICAgICAgIGxldCBsYXlvdXRSZWNvcmRzID0gbGF5b3V0VGltZWxpbmUgPyBsYXlvdXRUaW1l
bGluZS5yZWNvcmRzT3ZlcmxhcHBpbmdUaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lKSA6IFtd
OworICAgICAgICBsYXlvdXRSZWNvcmRzID0gbGF5b3V0UmVjb3Jkcy5maWx0ZXIoKHJlY29yZCkg
PT4geworICAgICAgICAgICAgc3dpdGNoIChyZWNvcmQuZXZlbnRUeXBlKSB7CisgICAgICAgICAg
ICBjYXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5SZWNhbGN1bGF0ZVN0eWxl
czoKKyAgICAgICAgICAgIGNhc2UgV0kuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkZv
cmNlZExheW91dDoKKyAgICAgICAgICAgIGNhc2UgV0kuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLkxheW91dDoKKyAgICAgICAgICAgIGNhc2UgV0kuTGF5b3V0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLlBhaW50OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29y
ZC5FdmVudFR5cGUuQ29tcG9zaXRlOgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxpZGF0
ZVN0eWxlczoKKyAgICAgICAgICAgIGNhc2UgV0kuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRU
eXBlLkludmFsaWRhdGVMYXlvdXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlCisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChsYXlvdXRSZWNvcmRzLmxlbmd0
aCkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0VGltZWxpbmVSZWNvcmQobGF5b3V0UmVjb3Jk
c1swXSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBzY3JpcHRUaW1lbGluZSA9IHRoaXMuX3JlY29yZGluZy50aW1lbGluZUZvclJlY29yZFR5cGUo
V0kuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOworICAgICAgICBsZXQgc2NyaXB0UmVjb3Jk
cyA9IHNjcmlwdFRpbWVsaW5lID8gc2NyaXB0VGltZWxpbmUucmVjb3Jkc092ZXJsYXBwaW5nVGlt
ZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkgOiBbXTsKKyAgICAgICAgc2NyaXB0UmVjb3JkcyA9
IHNjcmlwdFJlY29yZHMuZmlsdGVyKChyZWNvcmQpID0+IHsKKyAgICAgICAgICAgIHN3aXRjaCAo
cmVjb3JkLmV2ZW50VHlwZSkgeworICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJl
Y29yZC5FdmVudFR5cGUuU2NyaXB0RXZhbHVhdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3Jp
cHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQVBJU2NyaXB0RXZhbHVhdGVkOgorICAgICAgICAg
ICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuT2JzZXJ2ZXJDYWxsYmFj
azoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkV2
ZW50RGlzcGF0Y2hlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLk1pY3JvdGFza0Rpc3BhdGNoZWQ6CisgICAgICAgICAgICBjYXNlIFdJLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZpcmVkOgorICAgICAgICAgICAgY2FzZSBX
SS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQW5pbWF0aW9uRnJhbWVGaXJlZDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZyYW1lUmVxdWVzdGVkOgorICAgICAgICAg
ICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQW5pbWF0aW9uRnJhbWVD
YW5jZWxlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRU
eXBlLlRpbWVySW5zdGFsbGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJl
Y29yZC5FdmVudFR5cGUuVGltZXJSZW1vdmVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGUuUHJvYmVTYW1wbGVSZWNvcmRlZDoKKyAgICAgICAgICAg
IGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkNvbnNvbGVQcm9maWxlUmVj
b3JkZWQ6CisgICAgICAgICAgICBjYXNlIFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5HYXJiYWdlQ29sbGVjdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHNjcmlwdFJlY29yZHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RUaW1lbGluZVJlY29yZChzY3JpcHRSZWNvcmRz
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIF9zZWxlY3RUaW1lbGluZVJlY29yZChyZWNvcmQpCisg
ICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UaW1lbGluZVZp
ZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHtyZWNvcmR9KTsKKyAgICB9CiB9OwogCiBXSS5D
UFVUaW1lbGluZVZpZXcuU2FtcGxlVHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3MgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRv
clZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNzIzODg1
NDMyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3MKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgeworICAgIGRpc3BsYXk6IGZsZXg7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNwdS11c2FnZS1pbmRp
Y2F0b3Itdmlldy1oZWlnaHQpICsgMXB4KTsgLyogMSBmb3IgYm9yZGVyLWJvdHRvbSAqLworICAg
IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOworfQorCisuY3B1
LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMgeworICAgIGZsZXgtc2hyaW5rOiAwOwor
ICAgIHdpZHRoOiAxNTBweDsKKyAgICAtd2Via2l0LXBhZGRpbmctc3RhcnQ6IDE1cHg7CisgICAg
LS1jcHUtdXNhZ2Utdmlldy1kZXRhaWxzLWJvcmRlci1lbmQ6IDFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpOworfQorCitib2R5W2Rpcj1sdHJdIC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcg
PiAuZGV0YWlscyB7CisgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1jcHUtdXNhZ2Utdmlldy1kZXRh
aWxzLWJvcmRlci1lbmQpOworfQorCitib2R5W2Rpcj1ydGxdIC5jcHUtdXNhZ2UtaW5kaWNhdG9y
LXZpZXcgPiAuZGV0YWlscyB7CisgICAgYm9yZGVyLWxlZnQ6IHZhcigtLWNwdS11c2FnZS12aWV3
LWRldGFpbHMtYm9yZGVyLWVuZCk7Cit9CisKK2JvZHlbZGlyPXJ0bF0gLmNwdS11c2FnZS1pbmRp
Y2F0b3ItdmlldyA+IC5ncmFwaCB7CisgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOworfQorCisu
Y3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoIHsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvci1jb250ZW50
KTsKKyAgICB6LWluZGV4OiBjYWxjKHZhcigtLXRpbWVsaW5lLW1hcmtlci16LWluZGV4KSArIDEp
OworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoLAorLmNwdS11c2FnZS1p
bmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCwKKy5jcHUtdXNhZ2UtaW5kaWNh
dG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgPiBzdmcgeworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmQ5MGYyNzRlZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DUFVVc2FnZUluZGljYXRvclZpZXcuanMKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXSS5DUFVVc2FnZUluZGljYXRvclZpZXcgPSBjbGFzcyBDUFVVc2FnZUluZGljYXRvclZpZXcg
ZXh0ZW5kcyBXSS5WaWV3Cit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjcHUt
dXNhZ2UtaW5kaWNhdG9yLXZpZXciKTsKKworICAgICAgICB0aGlzLl9kZXRhaWxzRWxlbWVudCA9
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7
CisgICAgICAgIHRoaXMuX2RldGFpbHNFbGVtZW50LmNsYXNzTGlzdC5hZGQoImRldGFpbHMiKTsK
KworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgICAgICB0aGlzLl9ncmFwaEVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZ3JhcGgiKTsKKworICAgICAgICB0aGlzLl9jaGFydCA9IG5ldyBX
SS5SYW5nZUNoYXJ0OworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY2hhcnQpOworICAg
ICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2hhcnQuZWxlbWVudCk7
CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgY2hhcnQoKSB7IHJldHVybiB0aGlz
Ll9jaGFydDsgfQorCisgICAgY2xlYXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2hhcnQuY2xl
YXIoKTsKKyAgICAgICAgdGhpcy5fY2hhcnQubmVlZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICB1
cGRhdGVDaGFydChzYW1wbGVzLCBzaXplLCB2aXNpYmxlRW5kVGltZSwgeFNjYWxlKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoc2l6ZSBpbnN0YW5jZW9mIFdJLlNpemUpOworCisgICAg
ICAgIHRoaXMuX2NoYXJ0LmNsZWFyKCk7CisgICAgICAgIHRoaXMuX2NoYXJ0LnNpemUgPSBzaXpl
OworICAgICAgICB0aGlzLl9jaGFydC5uZWVkc0xheW91dCgpOworCisgICAgICAgIGlmICghc2Ft
cGxlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQ29hbGVzY2Ug
cmFuZ2VzIG9mIHNhbXBsZXMuCisgICAgICAgIGxldCByYW5nZXMgPSBbXTsKKyAgICAgICAgbGV0
IGN1cnJlbnRSYW5nZSA9IG51bGw7CisgICAgICAgIGxldCBjdXJyZW50U2FtcGxlVHlwZSA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzYW1wbGVzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICAvLyBCYWNrIHRvIGlkbGUsIGNsb3NlIGFueSBjdXJyZW50IGNodW5r
LgorICAgICAgICAgICAgbGV0IHR5cGUgPSBzYW1wbGVzW2ldOworICAgICAgICAgICAgaWYgKCF0
eXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSYW5nZSkgeworICAgICAgICAgICAg
ICAgICAgICByYW5nZXMucHVzaChjdXJyZW50UmFuZ2UpOworICAgICAgICAgICAgICAgICAgICBj
dXJyZW50UmFuZ2UgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlw
ZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEV4cGFuZCBleGlzdGluZyBjaHVu
ay4KKyAgICAgICAgICAgIGlmICh0eXBlID09PSBjdXJyZW50U2FtcGxlVHlwZSkgeworICAgICAg
ICAgICAgICAgIGN1cnJlbnRSYW5nZS5lbmRJbmRleCA9IGk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGNoYW5nZWQgdHlwZSwg
Y2xvc2UgY3VycmVudCBjaHVuay4KKyAgICAgICAgICAgIGlmIChjdXJyZW50U2FtcGxlVHlwZSkg
eworICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNoKGN1cnJlbnRSYW5nZSk7CisgICAgICAgICAg
ICAgICAgY3VycmVudFJhbmdlID0gbnVsbDsKKyAgICAgICAgICAgICAgICBjdXJyZW50U2FtcGxl
VHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3RhcnQg
YSBuZXcgY2h1bmsuCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghY3VycmVudFJhbmdlKTsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjdXJyZW50U2FtcGxlVHlwZSk7CisgICAgICAg
ICAgICBjdXJyZW50UmFuZ2UgPSB7dHlwZSwgc3RhcnRJbmRleDogaSwgZW5kSW5kZXg6IGl9Owor
ICAgICAgICAgICAgY3VycmVudFNhbXBsZVR5cGUgPSB0eXBlOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChsZXQge3R5cGUsIHN0YXJ0SW5kZXgsIGVuZEluZGV4fSBvZiByYW5nZXMpIHsKKyAg
ICAgICAgICAgIGxldCBzdGFydFggPSB4U2NhbGUoc3RhcnRJbmRleCk7CisgICAgICAgICAgICBs
ZXQgZW5kWCA9IHhTY2FsZShlbmRJbmRleCArIDEpOworICAgICAgICAgICAgbGV0IHdpZHRoID0g
ZW5kWCAtIHN0YXJ0WDsKKyAgICAgICAgICAgIHRoaXMuX2NoYXJ0LmFkZFJhbmdlKHN0YXJ0WCwg
d2lkdGgsIHR5cGUpOworICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SYW5nZUNoYXJ0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYzg3YmQzMjdmZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hh
cnQuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBSYW5nZUNoYXJ0IGNyZWF0
ZXMgYSBjaGFydCBmaWxsZWQgd2l0aCByYW5nZXMgb2YgZXF1YWwgaGVpZ2h0LgorLy8KKy8vICAg
ICBbICAgfC0tLS0tLXwtLS0tLS18ICAgfC0tLS0tLXwgICAgICAgICAgICAgICAgIF0KKy8vCisv
LyBJbml0aWFsaXplIHRoZSBjaGFydCB3aXRoIGEgc2l6ZS4gWW91IGNhbiB0aGVuIGluY2x1ZGUg
YSBuZXcgcmFuZ2UKKy8vIGluIHRoZSBjaGFydCBieSBwcm92aWRpbmcgYW4gKHgsIHcsIGNsYXNz
KSB2aWEgYGFkZFJhbmdlYC4KKy8vCisvLyBTVkc6CisvLworLy8gLSBUaGVyZSBpcyBhIHNpbmds
ZSByZWN0IGZvciBlYWNoIHJhbmdlLgorLy8KKy8vICA8ZGl2IGNsYXNzPSJyYW5nZS1jaGFydCI+
CisvLyAgICAgIDxzdmcgdmlld0JveD0iMCAwIDgwMCA3NSI+CisvLyAgICAgICAgICA8cmVjdCB3
aWR0aD0iPHc+IiBoZWlnaHQ9IjEwMCUiIHRyYW5zZm9ybT0idHJhbnNsYXRlWCg8eD4pIiBjbGFz
cz0iPGNsYXNzPiIgLz4KKy8vICAgICAgICAgIDxyZWN0IHdpZHRoPSI8dz4iIGhlaWdodD0iMTAw
JSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGVYKDx4PikiIGNsYXNzPSI8Y2xhc3M+IiAvPgorLy8gICAg
ICAgICAgLi4uCisvLyAgICAgIDwvc3ZnPgorLy8gIDwvZGl2PgorCitXSS5SYW5nZUNoYXJ0ID0g
Y2xhc3MgUmFuZ2VDaGFydCBleHRlbmRzIFdJLlZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisg
ICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJyYW5nZS1jaGFydCIpOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQgPSB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU1ZHRWxlbWVudCgic3ZnIikpOworICAgICAgICB0aGlz
Ll9zdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsICJub25lIik7
CisKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107CisgICAgICAgIHRoaXMuX3NpemUgPSBudWxs
OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHNpemUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3NpemU7CisgICAgfQorCisgICAgc2V0IHNpemUoc2l6ZSkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9zaXplICYmIHRoaXMuX3NpemUuZXF1YWxzKHNpemUpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NpemUgPSBzaXplOworCisgICAgICAg
IHRoaXMuX3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IiwgYDAgMCAke3NpemUud2lk
dGh9ICR7c2l6ZS5oZWlnaHR9YCk7CisgICAgfQorCisgICAgYWRkUmFuZ2UoeCwgd2lkdGgsIGNs
YXNzTmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jhbmdlcy5wdXNoKHt4LCB3aWR0aCwgY2xh
c3NOYW1lfSk7CisgICAgfQorCisgICAgY2xlYXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmFu
Z2VzID0gW107CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAg
IHsKKyAgICAgICAgc3VwZXIubGF5b3V0KCk7CisKKyAgICAgICAgaWYgKHRoaXMubGF5b3V0UmVh
c29uID09PSBXSS5WaWV3LkxheW91dFJlYXNvbi5SZXNpemUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCF0aGlzLl9zaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3N2Z0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICBsZXQgaCA9
IDA7CisgICAgICAgIGZvciAobGV0IHt4LCB3aWR0aCwgY2xhc3NOYW1lfSBvZiB0aGlzLl9yYW5n
ZXMpIHsKKyAgICAgICAgICAgIGxldCByZWN0ID0gdGhpcy5fc3ZnRWxlbWVudC5hcHBlbmRDaGls
ZChjcmVhdGVTVkdFbGVtZW50KCJyZWN0IikpOworICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1
dGUoIndpZHRoIiwgd2lkdGgpOworICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdo
dCIsIHRoaXMuc2l6ZS5oZWlnaHQpOworICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoInRy
YW5zZm9ybSIsIGB0cmFuc2xhdGUoJHt4fSwgMClgKTsKKyAgICAgICAgICAgIHJlY3QuY2xhc3NM
aXN0LmFkZChjbGFzc05hbWUpOworICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5n
Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCmluZGV4IGE2ZDEwNjZhOTMzLi40NWM0
NGFjMGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
LmpzCkBAIC05MSw2ICs5MSw3IEBAIFdJLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBj
bGFzcyBUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuCiAgICAgICAgIFdJ
LkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxl
bWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBs
ZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0ku
VGltZWxpbmVWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVWaWV3LkV2ZW50LlJlY29y
ZFdhc0ZpbHRlcmVkLCB0aGlzLl9yZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcyk7CisgICAgICAgIFdJ
LlRpbWVsaW5lVmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlRpbWVsaW5lVmlldy5FdmVudC5SZWNv
cmRXYXNTZWxlY3RlZCwgdGhpcy5fcmVjb3JkV2FzU2VsZWN0ZWQsIHRoaXMpOwogCiAgICAgICAg
IFdJLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Ob3RpZmljYXRpb24uVmlzaWJp
bGl0eVN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9pbnNwZWN0b3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
LCB0aGlzKTsKIApAQCAtNjgwLDE1ICs2ODEsNyBAQCBXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRl
bnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRzIFdJLgog
ICAgIHsKICAgICAgICAgbGV0IHtyZWNvcmR9ID0gZXZlbnQuZGF0YTsKIAotICAgICAgICBmb3Ig
KGxldCB0aW1lbGluZVZpZXcgb2YgdGhpcy5fdGltZWxpbmVWaWV3TWFwLnZhbHVlcygpKSB7Ci0g
ICAgICAgICAgICBsZXQgcmVjb3JkTWF0Y2hlc1RpbWVsaW5lID0gcmVjb3JkICYmIHRpbWVsaW5l
Vmlldy5yZXByZXNlbnRlZE9iamVjdC50eXBlID09PSByZWNvcmQudHlwZTsKLQotICAgICAgICAg
ICAgaWYgKHJlY29yZE1hdGNoZXNUaW1lbGluZSAmJiB0aW1lbGluZVZpZXcgIT09IHRoaXMuY3Vy
cmVudFRpbWVsaW5lVmlldykKLSAgICAgICAgICAgICAgICB0aGlzLnNob3dUaW1lbGluZVZpZXdG
b3JUaW1lbGluZSh0aW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgICAgICAg
ICBpZiAoIXJlY29yZCB8fCByZWNvcmRNYXRjaGVzVGltZWxpbmUpCi0gICAgICAgICAgICAgICAg
dGltZWxpbmVWaWV3LnNlbGVjdFJlY29yZChyZWNvcmQpOwotICAgICAgICB9CisgICAgICAgIHRo
aXMuX3NlbGVjdFJlY29yZEluVGltZWxpbmVWaWV3KHJlY29yZCk7CiAgICAgfQogCiAgICAgX3Rp
bWVsaW5lU2VsZWN0ZWQoKQpAQCAtODAwLDYgKzc5MywzOSBAQCBXSS5UaW1lbGluZVJlY29yZGlu
Z0NvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRz
IFdJLgogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnJlY29yZFdhc0ZpbHRlcmVkKHRp
bWVsaW5lLCByZWNvcmQsIGZpbHRlcmVkKTsKICAgICB9CiAKKyAgICBfcmVjb3JkV2FzU2VsZWN0
ZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQge3JlY29yZH0gPSBldmVudC5kYXRhOworCisgICAgICAg
IHRoaXMuX3NlbGVjdFJlY29yZEluVGltZWxpbmVPdmVydmlldyhyZWNvcmQpOworICAgICAgICB0
aGlzLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lVmlldyhyZWNvcmQpOworICAgIH0KKworICAgIF9z
ZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcocmVjb3JkKQorICAgIHsKKyAgICAgICAgbGV0
IHRpbWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lRm9yUmVjb3JkVHlwZShyZWNvcmQu
dHlwZSk7CisgICAgICAgIGlmICghdGltZWxpbmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5zZWxlY3RSZWNvcmQodGltZWxpbmUsIHJlY29y
ZCk7CisgICAgfQorCisgICAgX3NlbGVjdFJlY29yZEluVGltZWxpbmVWaWV3KHJlY29yZCkKKyAg
ICB7CisgICAgICAgIGZvciAobGV0IHRpbWVsaW5lVmlldyBvZiB0aGlzLl90aW1lbGluZVZpZXdN
YXAudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGxldCByZWNvcmRNYXRjaGVzVGltZWxpbmUgPSBy
ZWNvcmQgJiYgdGltZWxpbmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IHJlY29yZC50
eXBlOworCisgICAgICAgICAgICBpZiAocmVjb3JkTWF0Y2hlc1RpbWVsaW5lICYmIHRpbWVsaW5l
VmlldyAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3KQorICAgICAgICAgICAgICAgIHRoaXMu
c2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lKHRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVj
dCk7CisKKyAgICAgICAgICAgIGlmICghcmVjb3JkIHx8IHJlY29yZE1hdGNoZXNUaW1lbGluZSkK
KyAgICAgICAgICAgICAgICB0aW1lbGluZVZpZXcuc2VsZWN0UmVjb3JkKHJlY29yZCk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBfdXBkYXRlUHJvZ3Jlc3NWaWV3KCkKICAgICB7CiAgICAgICAg
IGxldCBpc0NhcHR1cmluZyA9IFdJLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVWaWV3LmpzCmluZGV4IDIzODQyZjJjMDg1Li5kNzlkNWU4Mjk0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
Vmlldy5qcwpAQCAtMzM1LDUgKzMzNSw2IEBAIFdJLlRpbWVsaW5lVmlldyA9IGNsYXNzIFRpbWVs
aW5lVmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiB9OwogCiBXSS5UaW1lbGluZVZpZXcuRXZl
bnQgPSB7Ci0gICAgUmVjb3JkV2FzRmlsdGVyZWQ6ICJyZWNvcmQtd2FzLWZpbHRlcmVkIgorICAg
IFJlY29yZFdhc0ZpbHRlcmVkOiAicmVjb3JkLXdhcy1maWx0ZXJlZCIsCisgICAgUmVjb3JkV2Fz
U2VsZWN0ZWQ6ICJyZWNvcmQtd2FzLXNlbGVjdGVkIiwKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362960</attachid>
            <date>2019-02-25 21:05:53 -0800</date>
            <delta_ts>2019-02-25 21:59:39 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>cpu8.patch</filename>
            <type>text/plain</type>
            <size>31867</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDI0ZjZmMjNmNTMxLi40MjY4YmRlZTkxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTktMDItMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDUFUgVXNhZ2UgVGltZWxpbmUgLSBNYWluIFRocmVhZCBJbmRpY2F0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAg
ICAgKHZhbHVlKToKKyAgICAgICAgVGhlIGV4aXN0aW5nIGVuY2xvc2luZ05vZGUgZG9lc24ndCB3
b3JrIGZvciBTVkcgYmVjYXVzZSBpdHMgbmFtZXMKKyAgICAgICAgYXJlIGxvd2VyY2FzZS4gQWRk
IGEgc2ltcGxpZmllZCB2ZXJzaW9uIGZvciB0aGUgc3ZnIGNhc2UuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanM6IEFkZGVkLgorICAgICAgICAoV0kuUmFuZ2VD
aGFydCk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5nZXQgc2l6ZSk6CisgICAg
ICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5zZXQgc2l6ZSk6CisgICAgICAgIChXSS5SYW5n
ZUNoYXJ0LnByb3RvdHlwZS5hZGRSYW5nZSk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3Rv
dHlwZS5jbGVhcik6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5sYXlvdXQpOgor
ICAgICAgICBBIG5ldyBjaGFydCB0aGF0IGRyYXdzIHJlY3RzIGZvciBnaXZlbiByYW5nZXMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qczoKKyAgICAgICAgKFdJ
LlRpbWVsaW5lLnByb3RvdHlwZS5yZWNvcmRzT3ZlcmxhcHBpbmdUaW1lUmFuZ2UpOgorICAgICAg
ICBIZWxwZXIgdG8gc3BlY2lmaWNhbGx5IGdldCByZWNvcmRzIHRvdWNoaW5nIGEgcmFuZ2UuIFVz
ZWZ1bAorICAgICAgICBmb3Igd2hlbiB3ZSBoYXZlIGEgc2luZ2xlIHBpeGVsIHNwYW5uaW5nIChz
dGFydFRpbWUgLT4gZW5kVGltZSkKKyAgICAgICAgYW5kIHdlIHdhbnQgdG8gZmluZCByZWNvcmRz
IGluIHRoYXQgcGl4ZWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVs
aW5lVmlldy5jc3M6CisgICAgICAgICgudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRp
Y2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCByZWN0KToKKyAgICAgICAgKC50aW1l
bGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdl
LWNoYXJ0IC5zYW1wbGUtdHlwZS1zY3JpcHQpOgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1
IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBs
ZS10eXBlLXN0eWxlKToKKyAgICAgICAgKC50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWlu
ZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IC5zYW1wbGUtdHlwZS1sYXlvdXQp
OgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcg
PiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBsZS10eXBlLXBhaW50KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLkNQVVRp
bWVsaW5lVmlldy5wcm90b3R5cGUuZ2V0IGluZGljYXRvclZpZXdIZWlnaHQpOgorICAgICAgICAo
V0kuQ1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5jbGVhcik6CisgICAgICAgIChXSS5DUFVUaW1l
bGluZVZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgorICAgICAgICAoV0ku
Q1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNQ
VVRpbWVsaW5lVmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5l
Vmlldy5wcm90b3R5cGUuX2dyYXBoUG9zaXRpb25Gb3JNb3VzZUV2ZW50KToKKyAgICAgICAgKFdJ
LkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2hhbmRsZUluZGljYXRvckNsaWNrKToKKyAgICAg
ICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2F0dGVtcHRTZWxlY3RJbmRpY2F0YXRv
clRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUu
X3NlbGVjdFRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgUGxhY2UgdGhlIE1haW4gVGhyZWFkIElu
ZGljYXRvciB2aWV3IGJlbmVhdGggdGhlIGJpZyBncmFwaC4KKyAgICAgICAgQ2xpY2tpbmcgaW5z
aWRlIGl0IHNlbGVjdHMgcmVjb3JkcyBpbiB0aGUgVGltZWxpbmUgT3ZlcnZpZXcuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3M6IEFkZGVk
LgorICAgICAgICAoLmNwdS11c2FnZS1pbmRpY2F0b3Itdmlldyk6CisgICAgICAgICguY3B1LXVz
YWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9bHRyXSAu
Y3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9
cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9k
eVtkaXI9cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoKToKKyAgICAgICAg
KC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGgpOgorICAgICAgICAoLmNwdS11c2Fn
ZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkNQVVVzYWdl
SW5kaWNhdG9yVmlldyk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90
eXBlLmdldCBjaGFydCk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90
eXBlLmNsZWFyKToKKyAgICAgICAgKFdJLkNQVVVzYWdlSW5kaWNhdG9yVmlldy5wcm90b3R5cGUu
dXBkYXRlQ2hhcnQpOgorICAgICAgICBDb252ZXJ0cyB0aGUgQ1BVIHNhbXBsZXMgZGF0YSBpbnRv
IGEgUmFuZ2VDaGFydC4gSXQgd29ya3MgdG8gY29hbGVzY2UKKyAgICAgICAgbWFueSBzYW1wbGVz
IG9mIHRoZSBzYW1lIHR5cGUgaW50byBhIHNpbmdsZSByYW5nZSB0byByZWR1Y2UgdG90YWwgcmFu
Z2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk6
CisgICAgICAgIChXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVj
b3JkU2VsZWN0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5w
cm90b3R5cGUuX3JlY29yZFdhc1NlbGVjdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lUmVjb3Jk
aW5nQ29udGVudFZpZXcucHJvdG90eXBlLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcp
OgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nl
bGVjdFJlY29yZEluVGltZWxpbmVWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgQWRkIGEgcGF0aCBmb3IgYSBUaW1lbGluZVZpZXcg
dG8gZGlzcGF0Y2ggYSByZWNvcmQgc2VsZWN0ZWQgZXZlbnQgYW5kIGNhdXNlCisgICAgICAgIGhh
dmUgdGhlIFRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgcmVhY3QgdG8gaXQgYnkgdXBkYXRp
bmcgdGhlIHRpbWVsaW5lCisgICAgICAgIG92ZXJ2aWV3IGFuZCByZWxldmVudCB0aW1lbGluZSB2
aWV3LgorCiAyMDE5LTAyLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIFVzYWdlIFRpbWVsaW5lIC0gVGhyZWFkIEJy
ZWFrZG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1V0aWxpdGllcy5qcwppbmRleCAwYzk3ZGRkZWYyNS4uMDQyMmM2YzFlMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVz
LmpzCkBAIC0yMTgsNiArMjE4LDE5IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3Rv
dHlwZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUiLAogICAgIH0KIH0pOwogCitP
YmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aExvY2FsTmFtZSIsCit7CisgICAgdmFsdWUobG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAg
Zm9yIChsZXQgbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGlmIChub2RlLmxvY2FsTmFtZSA9PT0gbG9jYWxOYW1lKQorICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZl
cnNlTmV4dE5vZGUiLAogewogICAgIHZhbHVlKHN0YXlXaXRoaW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYTA5YjMwYWU5MGIuLjM2ODMy
YzE2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCkBAIC00NSw2ICs0NSw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VTdGFja2Vk
Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNh
Z2VWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DYWxs
RnJhbWVJY29ucy5jc3MiPgpAQCAtNTkzLDYgKzU5NCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ1BVVGltZWxpbmVWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ1BVVXNhZ2VTdGFja2VkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NQVVVzYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CkBAIC03NDcsNiArNzQ5
LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SYW5nZUNoYXJ0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVjb3JkaW5nQWN0aW9uVHJlZUVsZW1lbnQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZWNvcmRpbmdDb250ZW50Vmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlY29yZGluZ1N0YXRlRGV0
YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKaW5kZXggNzU2Y2U1NzRj
NDAuLjgyOTQ5Y2NmN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCkBAIC05Myw2ICs5MywxNCBAQCBXSS5UaW1l
bGluZSA9IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRpbWVsaW5lLkV2ZW50LlJlZnJlc2hlZCk7CiAgICAg
fQogCisgICAgcmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkK
KyAgICB7CisgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVjb3Jkcy5sb3dlckJvdW5k
KHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5lbmRUaW1lKTsKKyAg
ICAgICAgbGV0IHVwcGVySW5kZXggPSB0aGlzLl9yZWNvcmRzLnVwcGVyQm91bmQoZW5kVGltZSwg
KHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5zdGFydFRpbWUpOworCisgICAgICAgIHJl
dHVybiB0aGlzLl9yZWNvcmRzLnNsaWNlKGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOworICAgIH0K
KwogICAgIHJlY29yZHNJblRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIGluY2x1ZGVSZWNv
cmRCZWZvcmVTdGFydCkKICAgICB7CiAgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVj
b3Jkcy5sb3dlckJvdW5kKHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29y
ZC5zdGFydFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1BVVGltZWxpbmVWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKaW5kZXggYmFiNTFkNzFlYjcu
LmIzMzRiNDFlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKQEAgLTIxNCwzICsyMTQs
MjcgQEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtdmlldy5jcHUgOm1hdGNoZXMoLmxpbmUtY2hh
cnQsIC5zdGFja2VkLWxpbmUtY2hhcnQpIC5tYXIKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xv
ci1zZWNvbmRhcnkpOwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29s
b3ItY29udGVudCk7CiB9CisKKy50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRv
ci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IHJlY3QgeworICAgIHN0cm9rZS1vcGFjaXR5
OiAwLjI1OworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3Itdmll
dyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc2NyaXB0IHsKKyAgICBzdHJv
a2U6IHZhcigtLWNwdS1zY3JpcHQtc3Ryb2tlLWNvbG9yKTsKKyAgICBmaWxsOiB2YXIoLS1jcHUt
c2NyaXB0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1p
bmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc3R5bGUg
eworICAgIHN0cm9rZTogdmFyKC0tY3B1LXN0eWxlLXN0cm9rZS1jb2xvcik7CisgICAgZmlsbDog
dmFyKC0tY3B1LXN0eWxlLWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNw
dS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5
cGUtbGF5b3V0IHsKKyAgICBzdHJva2U6IHZhcigtLWNwdS1sYXlvdXQtc3Ryb2tlLWNvbG9yKTsK
KyAgICBmaWxsOiB2YXIoLS1jcHUtbGF5b3V0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUt
dmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFy
dCAuc2FtcGxlLXR5cGUtcGFpbnQgeworICAgIHN0cm9rZTogdmFyKC0tY3B1LXBhaW50LXN0cm9r
ZS1jb2xvcik7CisgICAgZmlsbDogdmFyKC0tY3B1LXBhaW50LWZpbGwtY29sb3IpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGlt
ZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1BVVGltZWxpbmVWaWV3LmpzCmluZGV4IGQ4NWE2NDg0ZDdlLi4wNjhhOTJkOTQ3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGltZWxp
bmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NQVVRpbWVsaW5lVmlldy5qcwpAQCAtNTcsNiArNTcsNyBAQCBXSS5DUFVUaW1lbGluZVZpZXcg
PSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGluZVZpZXcKIAogICAgIHN0
YXRpYyBnZXQgY3B1VXNhZ2VWaWV3SGVpZ2h0KCkgeyByZXR1cm4gMTUwOyB9CiAgICAgc3RhdGlj
IGdldCB0aHJlYWRDUFVVc2FnZVZpZXdIZWlnaHQoKSB7IHJldHVybiA2NTsgfQorICAgIHN0YXRp
YyBnZXQgaW5kaWNhdG9yVmlld0hlaWdodCgpIHsgcmV0dXJuIDE1OyB9CiAKICAgICAvLyBQdWJs
aWMKIApAQCAtMTA0LDIxICsxMDUsMjQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BV
VGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgIGNsZWFyVXNhZ2VW
aWV3KHRoaXMuX3Vua25vd25UaHJlYWRVc2FnZVZpZXcpOwogCiAgICAgICAgIHRoaXMuX3JlbW92
ZVdvcmtlclRocmVhZFZpZXdzKCk7Ci0gICAgfQogCi0gICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50
cygpCi0gICAgewotICAgICAgICByZXR1cm4gW3RoaXMuZWxlbWVudF07CisgICAgICAgIHRoaXMu
X21haW5UaHJlYWRXb3JrSW5kaWNhdG9yVmlldy5jbGVhcigpOwogICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCiAgICAgZ2V0IHNob3dzRmlsdGVyQmFyKCkgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlz
LmVsZW1lbnRdOworICAgIH0KKwogICAgIGluaXRpYWxMYXlvdXQoKQogICAgIHsKICAgICAgICAg
dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLWNwdS11c2FnZS1zdGFja2VkLXZpZXct
aGVpZ2h0IiwgQ1BVVGltZWxpbmVWaWV3LmNwdVVzYWdlVmlld0hlaWdodCArICJweCIpOwogICAg
ICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLXZpZXctaGVp
Z2h0IiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdodCArICJweCIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLWluZGlj
YXRvci12aWV3LWhlaWdodCIsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JWaWV3SGVpZ2h0ICsg
InB4Iik7CiAKICAgICAgICAgbGV0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgY29udGVudEVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudCIpOwpAQCAtMTk3LDYgKzIwMSwxMiBAQCBXSS5D
UFVUaW1lbGluZVZpZXcgPSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGlu
ZVZpZXcKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NwdVVzYWdlVmlldyk7CiAgICAg
ICAgIHRoaXMuX2RldGFpbHNDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NwdVVz
YWdlVmlldy5lbGVtZW50KTsKIAorICAgICAgICB0aGlzLl9tYWluVGhyZWFkV29ya0luZGljYXRv
clZpZXcgPSBuZXcgV0kuQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3OworICAgICAgICB0aGlzLmFkZFN1
YnZpZXcodGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3KTsKKyAgICAgICAgdGhpcy5f
ZGV0YWlsc0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFpblRocmVhZFdvcmtJ
bmRpY2F0b3JWaWV3LmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX21haW5UaHJlYWRXb3JrSW5k
aWNhdG9yVmlldy5jaGFydC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlSW5kaWNhdG9yQ2xpY2suYmluZCh0aGlzKSk7CisKICAgICAgICAgbGV0IHRocmVhZHNT
dWJ0aXRsZUVsZW1lbnQgPSBkZXRhaWxzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIHRocmVhZHNTdWJ0aXRsZUVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3VidGl0bGUiLCAidGhyZWFkcyIpOwogICAgICAgICB0aHJlYWRz
U3VidGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIlRocmVhZHMiKTsKQEAg
LTUxNSw2ICs1MjUsMTQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVW
aWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAKICAgICAgICAgICAgIGxheW91dFZpZXcod29y
a2VyVmlldywgInVzYWdlIiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdo
dCwge2RhdGFQb2ludHM6IHdvcmtlckRhdGEuZGF0YVBvaW50cywgbWluOiB3b3JrZXJEYXRhLm1p
biwgbWF4OiB3b3JrZXJEYXRhLm1heCwgYXZlcmFnZTogd29ya2VyRGF0YS5hdmVyYWdlfSk7CiAg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB4U2NhbGVJbmRpY2F0b3JSYW5nZShzYW1wbGVJ
bmRleCkgeworICAgICAgICAgICAgcmV0dXJuIChzYW1wbGVJbmRleCAvIDEwMDApIC8gc2Vjb25k
c1BlclBpeGVsOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGdyYXBoV2lkdGggPSAoZ3JhcGhF
bmRUaW1lIC0gZ3JhcGhTdGFydFRpbWUpIC8gc2Vjb25kc1BlclBpeGVsOworICAgICAgICBsZXQg
c2l6ZSA9IG5ldyBXSS5TaXplKGdyYXBoV2lkdGgsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JW
aWV3SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3LnVw
ZGF0ZUNoYXJ0KHNhbXBsaW5nRGF0YS5zYW1wbGVzLCBzaXplLCB2aXNpYmxlRW5kVGltZSwgeFNj
YWxlSW5kaWNhdG9yUmFuZ2UpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTY4Miw2ICs3
MDAsMTE1IEBAIFdJLkNQVVRpbWVsaW5lVmlldyA9IGNsYXNzIENQVVRpbWVsaW5lVmlldyBleHRl
bmRzIFdJLlRpbWVsaW5lVmlldwogICAgICAgICBpZiAoY3B1VGltZWxpbmVSZWNvcmQuc3RhcnRU
aW1lID49IHRoaXMuc3RhcnRUaW1lICYmIGNwdVRpbWVsaW5lUmVjb3JkLmVuZFRpbWUgPD0gdGhp
cy5lbmRUaW1lKQogICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KKworICAg
IF9ncmFwaFBvc2l0aW9uRm9yTW91c2VFdmVudChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBz
dmdFbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTG9jYWxOYW1l
KCJzdmciKTsKKyAgICAgICAgaWYgKCFzdmdFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIE5h
TjsKKworICAgICAgICBsZXQgc3ZnUmVjdCA9IHN2Z0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CisgICAgICAgIGxldCBwb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gc3ZnUmVjdC5sZWZ0
OworCisgICAgICAgIGlmIChXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlv
dXREaXJlY3Rpb24uUlRMKQorICAgICAgICAgICAgcmV0dXJuIHN2Z1JlY3Qud2lkdGggLSBwb3Np
dGlvbjsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgIH0KKworICAgIF9oYW5kbGVJbmRp
Y2F0b3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIGxldCBjbGlja1Bvc2l0aW9uID0gdGhp
cy5fZ3JhcGhQb3NpdGlvbkZvck1vdXNlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoaXNOYU4o
Y2xpY2tQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHNlY29u
ZHNQZXJQaXhlbCA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuc2Vjb25kc1BlclBpeGVsOworICAgICAg
ICBsZXQgZ3JhcGhDbGlja1RpbWUgPSBjbGlja1Bvc2l0aW9uICogc2Vjb25kc1BlclBpeGVsOwor
ICAgICAgICBsZXQgZ3JhcGhTdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKKworICAgICAgICBs
ZXQgY2xpY2tTdGFydFRpbWUgPSBncmFwaFN0YXJ0VGltZSArIGdyYXBoQ2xpY2tUaW1lOworICAg
ICAgICBsZXQgY2xpY2tFbmRUaW1lID0gY2xpY2tTdGFydFRpbWUgKyBzZWNvbmRzUGVyUGl4ZWw7
CisKKyAgICAgICAgLy8gVHJ5IGF0IHRoZSBleGFjdCBjbGlja2VkIHBpeGVsLgorICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0LmxvY2FsTmFtZSA9PT0gInJlY3QiKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fYXR0ZW1wdFNlbGVjdEluZGljYXRhdG9yVGltZWxpbmVSZWNvcmQoY2xpY2tTdGFydFRp
bWUsIGNsaWNrRW5kVGltZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZmFsc2UsICJJZiB0aGUgdXNlciBjbGlja2VkIG9uIGEgcmVjdCB0aGVy
ZSBzaG91bGQgaGF2ZSBiZWVuIGEgcmVjb3JkIGluIHRoaXMgcGl4ZWwgcmFuZ2UiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNwaXJhbCBvdXQgNCBwaXhlbHMgZWFjaCBzaWRlIHRvIHRyeSBh
bmQgc2VsZWN0IGEgbmVhcmJ5IHJlY29yZC4KKyAgICAgICAgZm9yIChsZXQgaSA9IDEsIGRlbHRh
ID0gMDsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgIGRlbHRhICs9IHNlY29uZHNQZXJQaXhl
bDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hdHRlbXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGlu
ZVJlY29yZChjbGlja1N0YXJ0VGltZSAtIGRlbHRhLCBjbGlja1N0YXJ0VGltZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRTZWxlY3RJbmRp
Y2F0YXRvclRpbWVsaW5lUmVjb3JkKGNsaWNrRW5kVGltZSwgY2xpY2tFbmRUaW1lICsgZGVsdGEp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9hdHRl
bXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGluZVJlY29yZChzdGFydFRpbWUsIGVuZFRpbWUpCisg
ICAgeworICAgICAgICBsZXQgbGF5b3V0VGltZWxpbmUgPSB0aGlzLl9yZWNvcmRpbmcudGltZWxp
bmVGb3JSZWNvcmRUeXBlKFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0KTsKKyAgICAgICAg
bGV0IGxheW91dFJlY29yZHMgPSBsYXlvdXRUaW1lbGluZSA/IGxheW91dFRpbWVsaW5lLnJlY29y
ZHNPdmVybGFwcGluZ1RpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUpIDogW107CisgICAgICAg
IGxheW91dFJlY29yZHMgPSBsYXlvdXRSZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PiB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHJlY29yZC5ldmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV0ku
TGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgorICAgICAg
ICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRm9yY2VkTGF5b3V0
OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuTGF5
b3V0OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
UGFpbnQ6CisgICAgICAgICAgICBjYXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5Db21wb3NpdGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBj
YXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5bGVzOgor
ICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxp
ZGF0ZUxheW91dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBMYXlvdXRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGUiLCByZWNvcmQuZXZlbnRUeXBlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAg
IGlmIChsYXlvdXRSZWNvcmRzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0VGlt
ZWxpbmVSZWNvcmQobGF5b3V0UmVjb3Jkc1swXSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGxldCBzY3JpcHRUaW1lbGluZSA9IHRoaXMuX3JlY29yZGlu
Zy50aW1lbGluZUZvclJlY29yZFR5cGUoV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOwor
ICAgICAgICBsZXQgc2NyaXB0UmVjb3JkcyA9IHNjcmlwdFRpbWVsaW5lID8gc2NyaXB0VGltZWxp
bmUucmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkgOiBbXTsK
KyAgICAgICAgc2NyaXB0UmVjb3JkcyA9IHNjcmlwdFJlY29yZHMuZmlsdGVyKChyZWNvcmQpID0+
IHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVjb3JkLmV2ZW50VHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuU2NyaXB0RXZhbHVhdGVkOgor
ICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQVBJU2Ny
aXB0RXZhbHVhdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuT2JzZXJ2ZXJDYWxsYmFjazoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZDoKKyAgICAgICAgICAgIGNhc2Ug
V0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLk1pY3JvdGFza0Rpc3BhdGNoZWQ6Cisg
ICAgICAgICAgICBjYXNlIFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZp
cmVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
QW5pbWF0aW9uRnJhbWVGaXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZy
YW1lUmVxdWVzdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuQW5pbWF0aW9uRnJhbWVDYW5jZWxlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2Ny
aXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbGVkOgorICAgICAgICAgICAg
Y2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJSZW1vdmVkOgorICAg
ICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUHJvYmVTYW1w
bGVSZWNvcmRlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLkNvbnNvbGVQcm9maWxlUmVjb3JkZWQ6CisgICAgICAgICAgICBjYXNlIFdJLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5HYXJiYWdlQ29sbGVjdGVkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSIs
IHJlY29yZC5ldmVudFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHNjcmlwdFJlY29yZHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RUaW1lbGluZVJlY29yZChzY3JpcHRSZWNvcmRz
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIF9zZWxlY3RUaW1lbGluZVJlY29yZChyZWNvcmQpCisg
ICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UaW1lbGluZVZp
ZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHtyZWNvcmR9KTsKKyAgICB9CiB9OwogCiAvLyBO
T1RFOiBVSSBmb2xsb3dzIHRoaXMgb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVXNhZ2VJbmRpY2F0b3JW
aWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTFlNzhmOWY3
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuY3NzCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3IHsKKyAgICBkaXNwbGF5OiBmbGV4Owor
ICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogY2FsYyh2YXIoLS1jcHUtdXNhZ2UtaW5kaWNh
dG9yLXZpZXctaGVpZ2h0KSArIDFweCk7IC8qIDEgZm9yIGJvcmRlci1ib3R0b20gKi8KKyAgICBi
b3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKK30KKworLmNwdS11
c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5kZXRhaWxzIHsKKyAgICBmbGV4LXNocmluazogMDsKKyAg
ICB3aWR0aDogMTUwcHg7CisgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAxNXB4OworICAgIC13
ZWJraXQtYm9yZGVyLWVuZDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Cit9CisKK2Jv
ZHlbZGlyPXJ0bF0gLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCB7CisgICAgdHJh
bnNmb3JtOiBzY2FsZVgoLTEpOworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdy
YXBoIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgei1pbmRleDogY2FsYyh2YXIoLS10
aW1lbGluZS1tYXJrZXItei1pbmRleCkgKyAxKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1iYWNrZ3JvdW5kLWNvbG9yLWNvbnRlbnQpOworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12
aWV3ID4gLmdyYXBoLAorLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5n
ZS1jaGFydCwKKy5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hh
cnQgPiBzdmcgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdl
SW5kaWNhdG9yVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMjcwNWJkNDM5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuanMKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5DUFVVc2FnZUluZGljYXRvclZpZXcgPSBj
bGFzcyBDUFVVc2FnZUluZGljYXRvclZpZXcgZXh0ZW5kcyBXSS5WaWV3Cit7CisgICAgY29uc3Ry
dWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXciKTsKKworICAg
ICAgICB0aGlzLl9kZXRhaWxzRWxlbWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2RldGFpbHNFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImRldGFpbHMiKTsKKworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQg
PSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZ3JhcGgiKTsKKwor
ICAgICAgICB0aGlzLl9jaGFydCA9IG5ldyBXSS5SYW5nZUNoYXJ0OworICAgICAgICB0aGlzLmFk
ZFN1YnZpZXcodGhpcy5fY2hhcnQpOworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY2hhcnQuZWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAg
ICBnZXQgY2hhcnQoKSB7IHJldHVybiB0aGlzLl9jaGFydDsgfQorCisgICAgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fY2hhcnQuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fY2hhcnQubmVl
ZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICB1cGRhdGVDaGFydChzYW1wbGVzLCBzaXplLCB2aXNp
YmxlRW5kVGltZSwgeFNjYWxlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2l6ZSBp
bnN0YW5jZW9mIFdJLlNpemUpOworCisgICAgICAgIHRoaXMuX2NoYXJ0LmNsZWFyKCk7CisgICAg
ICAgIHRoaXMuX2NoYXJ0LnNpemUgPSBzaXplOworICAgICAgICB0aGlzLl9jaGFydC5uZWVkc0xh
eW91dCgpOworCisgICAgICAgIGlmICghc2FtcGxlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gQ29hbGVzY2UgcmFuZ2VzIG9mIHNhbXBsZXMuCisgICAgICAgIGxl
dCByYW5nZXMgPSBbXTsKKyAgICAgICAgbGV0IGN1cnJlbnRSYW5nZSA9IG51bGw7CisgICAgICAg
IGxldCBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzYW1wbGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBCYWNrIHRvIGlk
bGUsIGNsb3NlIGFueSBjdXJyZW50IGNodW5rLgorICAgICAgICAgICAgbGV0IHR5cGUgPSBzYW1w
bGVzW2ldOworICAgICAgICAgICAgaWYgKCF0eXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRSYW5nZSkgeworICAgICAgICAgICAgICAgICAgICByYW5nZXMucHVzaChjdXJyZW50UmFu
Z2UpOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSBudWxsOworICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIEV4cGFuZCBleGlzdGluZyBjaHVuay4KKyAgICAgICAgICAgIGlmICh0eXBlID09PSBj
dXJyZW50U2FtcGxlVHlwZSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRSYW5nZS5lbmRJbmRl
eCA9IGk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIElmIHR5cGUgY2hhbmdlZCwgY2xvc2UgY3VycmVudCBjaHVuay4KKyAgICAgICAg
ICAgIGlmIChjdXJyZW50U2FtcGxlVHlwZSkgeworICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNo
KGN1cnJlbnRSYW5nZSk7CisgICAgICAgICAgICAgICAgY3VycmVudFJhbmdlID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gU3RhcnQgYSBuZXcgY2h1bmsuCisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghY3VycmVudFJhbmdlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFj
dXJyZW50U2FtcGxlVHlwZSk7CisgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSB7dHlwZSwgc3Rh
cnRJbmRleDogaSwgZW5kSW5kZXg6IGl9OworICAgICAgICAgICAgY3VycmVudFNhbXBsZVR5cGUg
PSB0eXBlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQge3R5cGUsIHN0YXJ0SW5kZXgs
IGVuZEluZGV4fSBvZiByYW5nZXMpIHsKKyAgICAgICAgICAgIGxldCBzdGFydFggPSB4U2NhbGUo
c3RhcnRJbmRleCk7CisgICAgICAgICAgICBsZXQgZW5kWCA9IHhTY2FsZShlbmRJbmRleCArIDEp
OworICAgICAgICAgICAgbGV0IHdpZHRoID0gZW5kWCAtIHN0YXJ0WDsKKyAgICAgICAgICAgIHRo
aXMuX2NoYXJ0LmFkZFJhbmdlKHN0YXJ0WCwgd2lkdGgsIHR5cGUpOworICAgICAgICB9CisgICAg
fQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1JhbmdlQ2hhcnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SYW5nZUNoYXJ0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5iYzg3YmQzMjdmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBSYW5nZUNoYXJ0IGNyZWF0ZXMgYSBjaGFydCBmaWxsZWQgd2l0aCByYW5nZXMg
b2YgZXF1YWwgaGVpZ2h0LgorLy8KKy8vICAgICBbICAgfC0tLS0tLXwtLS0tLS18ICAgfC0tLS0t
LXwgICAgICAgICAgICAgICAgIF0KKy8vCisvLyBJbml0aWFsaXplIHRoZSBjaGFydCB3aXRoIGEg
c2l6ZS4gWW91IGNhbiB0aGVuIGluY2x1ZGUgYSBuZXcgcmFuZ2UKKy8vIGluIHRoZSBjaGFydCBi
eSBwcm92aWRpbmcgYW4gKHgsIHcsIGNsYXNzKSB2aWEgYGFkZFJhbmdlYC4KKy8vCisvLyBTVkc6
CisvLworLy8gLSBUaGVyZSBpcyBhIHNpbmdsZSByZWN0IGZvciBlYWNoIHJhbmdlLgorLy8KKy8v
ICA8ZGl2IGNsYXNzPSJyYW5nZS1jaGFydCI+CisvLyAgICAgIDxzdmcgdmlld0JveD0iMCAwIDgw
MCA3NSI+CisvLyAgICAgICAgICA8cmVjdCB3aWR0aD0iPHc+IiBoZWlnaHQ9IjEwMCUiIHRyYW5z
Zm9ybT0idHJhbnNsYXRlWCg8eD4pIiBjbGFzcz0iPGNsYXNzPiIgLz4KKy8vICAgICAgICAgIDxy
ZWN0IHdpZHRoPSI8dz4iIGhlaWdodD0iMTAwJSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGVYKDx4Piki
IGNsYXNzPSI8Y2xhc3M+IiAvPgorLy8gICAgICAgICAgLi4uCisvLyAgICAgIDwvc3ZnPgorLy8g
IDwvZGl2PgorCitXSS5SYW5nZUNoYXJ0ID0gY2xhc3MgUmFuZ2VDaGFydCBleHRlbmRzIFdJLlZp
ZXcKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyYW5nZS1jaGFydCIpOworCisgICAgICAg
IHRoaXMuX3N2Z0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU1ZHRWxl
bWVudCgic3ZnIikpOworICAgICAgICB0aGlzLl9zdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgicHJl
c2VydmVBc3BlY3RSYXRpbyIsICJub25lIik7CisKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107
CisgICAgICAgIHRoaXMuX3NpemUgPSBudWxsOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgZ2V0IHNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7CisgICAgfQor
CisgICAgc2V0IHNpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zaXplICYmIHRo
aXMuX3NpemUuZXF1YWxzKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3NpemUgPSBzaXplOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRl
KCJ2aWV3Qm94IiwgYDAgMCAke3NpemUud2lkdGh9ICR7c2l6ZS5oZWlnaHR9YCk7CisgICAgfQor
CisgICAgYWRkUmFuZ2UoeCwgd2lkdGgsIGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X3Jhbmdlcy5wdXNoKHt4LCB3aWR0aCwgY2xhc3NOYW1lfSk7CisgICAgfQorCisgICAgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIubGF5b3V0KCk7CisK
KyAgICAgICAgaWYgKHRoaXMubGF5b3V0UmVhc29uID09PSBXSS5WaWV3LkxheW91dFJlYXNvbi5S
ZXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLl9zaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKworICAgICAgICBsZXQgaCA9IDA7CisgICAgICAgIGZvciAobGV0IHt4LCB3aWR0
aCwgY2xhc3NOYW1lfSBvZiB0aGlzLl9yYW5nZXMpIHsKKyAgICAgICAgICAgIGxldCByZWN0ID0g
dGhpcy5fc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChjcmVhdGVTVkdFbGVtZW50KCJyZWN0IikpOwor
ICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgd2lkdGgpOworICAgICAgICAg
ICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuc2l6ZS5oZWlnaHQpOworICAgICAg
ICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIGB0cmFuc2xhdGUoJHt4fSwgMClg
KTsKKyAgICAgICAgICAgIHJlY3QuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOworICAgICAgICB9
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
LmpzCmluZGV4IDgwZDk3ZDA4OTI1Li4yODA0YjNjYzMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCkBAIC05Niw3ICs5Niw4IEBAIFdJLlRpbWVs
aW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuCiAgICAgICAgIFdJLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRo
aXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwgdGhpcyk7CiAg
ICAgICAgIFdJLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudFZpZXcuRXZl
bnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50
Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAKLSAg
ICAgICAgV0kuVGltZWxpbmVWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVWaWV3LkV2
ZW50LlJlY29yZFdhc0ZpbHRlcmVkLCB0aGlzLl9yZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLlRpbWVsaW5lVmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlRpbWVsaW5lVmlldy5F
dmVudC5SZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcy5faGFuZGxlVGltZWxpbmVWaWV3UmVjb3JkRmls
dGVyZWQsIHRoaXMpOworICAgICAgICBXSS5UaW1lbGluZVZpZXcuYWRkRXZlbnRMaXN0ZW5lcihX
SS5UaW1lbGluZVZpZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHRoaXMuX2hhbmRsZVRpbWVs
aW5lVmlld1JlY29yZFNlbGVjdGVkLCB0aGlzKTsKIAogICAgICAgICBXSS5ub3RpZmljYXRpb25z
LmFkZEV2ZW50TGlzdGVuZXIoV0kuTm90aWZpY2F0aW9uLlZpc2liaWxpdHlTdGF0ZURpZENoYW5n
ZSwgdGhpcy5faW5zcGVjdG9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTcw
MCwxNSArNzAxLDcgQEAgV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFRp
bWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS4KICAgICB7CiAgICAgICAgIGxl
dCB7cmVjb3JkfSA9IGV2ZW50LmRhdGE7CiAKLSAgICAgICAgZm9yIChsZXQgdGltZWxpbmVWaWV3
IG9mIHRoaXMuX3RpbWVsaW5lVmlld01hcC52YWx1ZXMoKSkgewotICAgICAgICAgICAgbGV0IHJl
Y29yZE1hdGNoZXNUaW1lbGluZSA9IHJlY29yZCAmJiB0aW1lbGluZVZpZXcucmVwcmVzZW50ZWRP
YmplY3QudHlwZSA9PT0gcmVjb3JkLnR5cGU7Ci0KLSAgICAgICAgICAgIGlmIChyZWNvcmRNYXRj
aGVzVGltZWxpbmUgJiYgdGltZWxpbmVWaWV3ICE9PSB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcp
Ci0gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGltZWxp
bmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICAgICAgaWYgKCFyZWNvcmQgfHwg
cmVjb3JkTWF0Y2hlc1RpbWVsaW5lKQotICAgICAgICAgICAgICAgIHRpbWVsaW5lVmlldy5zZWxl
Y3RSZWNvcmQocmVjb3JkKTsKLSAgICAgICAgfQorICAgICAgICB0aGlzLl9zZWxlY3RSZWNvcmRJ
blRpbWVsaW5lVmlldyhyZWNvcmQpOwogICAgIH0KIAogICAgIF90aW1lbGluZVNlbGVjdGVkKCkK
QEAgLTgwNCw3ICs3OTcsNyBAQCBXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xh
c3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICB0aGlz
LmN1cnJlbnRUaW1lbGluZVZpZXcudXBkYXRlRmlsdGVyKHRoaXMuX2ZpbHRlckJhck5hdmlnYXRp
b25JdGVtLmZpbHRlckJhci5maWx0ZXJzKTsKICAgICB9CiAKLSAgICBfcmVjb3JkV2FzRmlsdGVy
ZWQoZXZlbnQpCisgICAgX2hhbmRsZVRpbWVsaW5lVmlld1JlY29yZEZpbHRlcmVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVW
aWV3KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODIwLDYgKzgxMywzOSBAQCBXSS5UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmll
dyBleHRlbmRzIFdJLgogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnJlY29yZFdhc0Zp
bHRlcmVkKHRpbWVsaW5lLCByZWNvcmQsIGZpbHRlcmVkKTsKICAgICB9CiAKKyAgICBfaGFuZGxl
VGltZWxpbmVWaWV3UmVjb3JkU2VsZWN0ZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQge3JlY29yZH0g
PSBldmVudC5kYXRhOworCisgICAgICAgIHRoaXMuX3NlbGVjdFJlY29yZEluVGltZWxpbmVPdmVy
dmlldyhyZWNvcmQpOworICAgICAgICB0aGlzLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lVmlldyhy
ZWNvcmQpOworICAgIH0KKworICAgIF9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcocmVj
b3JkKQorICAgIHsKKyAgICAgICAgbGV0IHRpbWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVs
aW5lRm9yUmVjb3JkVHlwZShyZWNvcmQudHlwZSk7CisgICAgICAgIGlmICghdGltZWxpbmUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5zZWxl
Y3RSZWNvcmQodGltZWxpbmUsIHJlY29yZCk7CisgICAgfQorCisgICAgX3NlbGVjdFJlY29yZElu
VGltZWxpbmVWaWV3KHJlY29yZCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IHRpbWVsaW5lVmll
dyBvZiB0aGlzLl90aW1lbGluZVZpZXdNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGxldCBy
ZWNvcmRNYXRjaGVzVGltZWxpbmUgPSByZWNvcmQgJiYgdGltZWxpbmVWaWV3LnJlcHJlc2VudGVk
T2JqZWN0LnR5cGUgPT09IHJlY29yZC50eXBlOworCisgICAgICAgICAgICBpZiAocmVjb3JkTWF0
Y2hlc1RpbWVsaW5lICYmIHRpbWVsaW5lVmlldyAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3
KQorICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lKHRpbWVs
aW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgICAgIGlmICghcmVjb3JkIHx8
IHJlY29yZE1hdGNoZXNUaW1lbGluZSkKKyAgICAgICAgICAgICAgICB0aW1lbGluZVZpZXcuc2Vs
ZWN0UmVjb3JkKHJlY29yZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfdXBkYXRlUHJvZ3Jl
c3NWaWV3KCkKICAgICB7CiAgICAgICAgIGxldCBpc0NhcHR1cmluZyA9IFdJLnRpbWVsaW5lTWFu
YWdlci5pc0NhcHR1cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCmluZGV4IDIzODQyZjJjMDg1Li5k
NzlkNWU4Mjk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMzM1LDUgKzMzNSw2IEBAIFdJLlRp
bWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiB9
OwogCiBXSS5UaW1lbGluZVZpZXcuRXZlbnQgPSB7Ci0gICAgUmVjb3JkV2FzRmlsdGVyZWQ6ICJy
ZWNvcmQtd2FzLWZpbHRlcmVkIgorICAgIFJlY29yZFdhc0ZpbHRlcmVkOiAicmVjb3JkLXdhcy1m
aWx0ZXJlZCIsCisgICAgUmVjb3JkV2FzU2VsZWN0ZWQ6ICJyZWNvcmQtd2FzLXNlbGVjdGVkIiwK
IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362961</attachid>
            <date>2019-02-25 21:59:39 -0800</date>
            <delta_ts>2019-02-25 22:38:11 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>cpu8.patch</filename>
            <type>text/plain</type>
            <size>31867</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc1ZjliOWY0MDQyLi45Yjc0MTI1YTE3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTktMDItMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDUFUgVXNhZ2UgVGltZWxpbmUgLSBNYWluIFRocmVhZCBJbmRpY2F0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAg
ICAgKHZhbHVlKToKKyAgICAgICAgVGhlIGV4aXN0aW5nIGVuY2xvc2luZ05vZGUgZG9lc24ndCB3
b3JrIGZvciBTVkcgYmVjYXVzZSBpdHMgbmFtZXMKKyAgICAgICAgYXJlIGxvd2VyY2FzZS4gQWRk
IGEgc2ltcGxpZmllZCB2ZXJzaW9uIGZvciB0aGUgc3ZnIGNhc2UuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanM6IEFkZGVkLgorICAgICAgICAoV0kuUmFuZ2VD
aGFydCk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5nZXQgc2l6ZSk6CisgICAg
ICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5zZXQgc2l6ZSk6CisgICAgICAgIChXSS5SYW5n
ZUNoYXJ0LnByb3RvdHlwZS5hZGRSYW5nZSk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3Rv
dHlwZS5jbGVhcik6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5sYXlvdXQpOgor
ICAgICAgICBBIG5ldyBjaGFydCB0aGF0IGRyYXdzIHJlY3RzIGZvciBnaXZlbiByYW5nZXMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qczoKKyAgICAgICAgKFdJ
LlRpbWVsaW5lLnByb3RvdHlwZS5yZWNvcmRzT3ZlcmxhcHBpbmdUaW1lUmFuZ2UpOgorICAgICAg
ICBIZWxwZXIgdG8gc3BlY2lmaWNhbGx5IGdldCByZWNvcmRzIHRvdWNoaW5nIGEgcmFuZ2UuIFVz
ZWZ1bAorICAgICAgICBmb3Igd2hlbiB3ZSBoYXZlIGEgc2luZ2xlIHBpeGVsIHNwYW5uaW5nIChz
dGFydFRpbWUgLT4gZW5kVGltZSkKKyAgICAgICAgYW5kIHdlIHdhbnQgdG8gZmluZCByZWNvcmRz
IGluIHRoYXQgcGl4ZWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVs
aW5lVmlldy5jc3M6CisgICAgICAgICgudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRp
Y2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCByZWN0KToKKyAgICAgICAgKC50aW1l
bGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdl
LWNoYXJ0IC5zYW1wbGUtdHlwZS1zY3JpcHQpOgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1
IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBs
ZS10eXBlLXN0eWxlKToKKyAgICAgICAgKC50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWlu
ZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IC5zYW1wbGUtdHlwZS1sYXlvdXQp
OgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcg
PiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBsZS10eXBlLXBhaW50KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLkNQVVRp
bWVsaW5lVmlldy5wcm90b3R5cGUuZ2V0IGluZGljYXRvclZpZXdIZWlnaHQpOgorICAgICAgICAo
V0kuQ1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5jbGVhcik6CisgICAgICAgIChXSS5DUFVUaW1l
bGluZVZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgorICAgICAgICAoV0ku
Q1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNQ
VVRpbWVsaW5lVmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5l
Vmlldy5wcm90b3R5cGUuX2dyYXBoUG9zaXRpb25Gb3JNb3VzZUV2ZW50KToKKyAgICAgICAgKFdJ
LkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2hhbmRsZUluZGljYXRvckNsaWNrKToKKyAgICAg
ICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2F0dGVtcHRTZWxlY3RJbmRpY2F0YXRv
clRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUu
X3NlbGVjdFRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgUGxhY2UgdGhlIE1haW4gVGhyZWFkIElu
ZGljYXRvciB2aWV3IGJlbmVhdGggdGhlIGJpZyBncmFwaC4KKyAgICAgICAgQ2xpY2tpbmcgaW5z
aWRlIGl0IHNlbGVjdHMgcmVjb3JkcyBpbiB0aGUgVGltZWxpbmUgT3ZlcnZpZXcuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3M6IEFkZGVk
LgorICAgICAgICAoLmNwdS11c2FnZS1pbmRpY2F0b3Itdmlldyk6CisgICAgICAgICguY3B1LXVz
YWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9bHRyXSAu
Y3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9
cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9k
eVtkaXI9cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoKToKKyAgICAgICAg
KC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGgpOgorICAgICAgICAoLmNwdS11c2Fn
ZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkNQVVVzYWdl
SW5kaWNhdG9yVmlldyk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90
eXBlLmdldCBjaGFydCk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90
eXBlLmNsZWFyKToKKyAgICAgICAgKFdJLkNQVVVzYWdlSW5kaWNhdG9yVmlldy5wcm90b3R5cGUu
dXBkYXRlQ2hhcnQpOgorICAgICAgICBDb252ZXJ0cyB0aGUgQ1BVIHNhbXBsZXMgZGF0YSBpbnRv
IGEgUmFuZ2VDaGFydC4gSXQgd29ya3MgdG8gY29hbGVzY2UKKyAgICAgICAgbWFueSBzYW1wbGVz
IG9mIHRoZSBzYW1lIHR5cGUgaW50byBhIHNpbmdsZSByYW5nZSB0byByZWR1Y2UgdG90YWwgcmFu
Z2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk6
CisgICAgICAgIChXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVj
b3JkU2VsZWN0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5w
cm90b3R5cGUuX3JlY29yZFdhc1NlbGVjdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lUmVjb3Jk
aW5nQ29udGVudFZpZXcucHJvdG90eXBlLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcp
OgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nl
bGVjdFJlY29yZEluVGltZWxpbmVWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgQWRkIGEgcGF0aCBmb3IgYSBUaW1lbGluZVZpZXcg
dG8gZGlzcGF0Y2ggYSByZWNvcmQgc2VsZWN0ZWQgZXZlbnQgYW5kIGNhdXNlCisgICAgICAgIGhh
dmUgdGhlIFRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgcmVhY3QgdG8gaXQgYnkgdXBkYXRp
bmcgdGhlIHRpbWVsaW5lCisgICAgICAgIG92ZXJ2aWV3IGFuZCByZWxldmVudCB0aW1lbGluZSB2
aWV3LgorCiAyMDE5LTAyLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIFVzYWdlIFRpbWVsaW5lIC0gVGhyZWFkIEJy
ZWFrZG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1V0aWxpdGllcy5qcwppbmRleCAwYzk3ZGRkZWYyNS4uMDQyMmM2YzFlMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVz
LmpzCkBAIC0yMTgsNiArMjE4LDE5IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3Rv
dHlwZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUiLAogICAgIH0KIH0pOwogCitP
YmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aExvY2FsTmFtZSIsCit7CisgICAgdmFsdWUobG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAg
Zm9yIChsZXQgbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGlmIChub2RlLmxvY2FsTmFtZSA9PT0gbG9jYWxOYW1lKQorICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZl
cnNlTmV4dE5vZGUiLAogewogICAgIHZhbHVlKHN0YXlXaXRoaW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYTA5YjMwYWU5MGIuLjM2ODMy
YzE2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCkBAIC00NSw2ICs0NSw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VTdGFja2Vk
Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNh
Z2VWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DYWxs
RnJhbWVJY29ucy5jc3MiPgpAQCAtNTkzLDYgKzU5NCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ1BVVGltZWxpbmVWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ1BVVXNhZ2VTdGFja2VkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NQVVVzYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CkBAIC03NDcsNiArNzQ5
LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SYW5nZUNoYXJ0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVjb3JkaW5nQWN0aW9uVHJlZUVsZW1lbnQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZWNvcmRpbmdDb250ZW50Vmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlY29yZGluZ1N0YXRlRGV0
YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKaW5kZXggNzU2Y2U1NzRj
NDAuLjgyOTQ5Y2NmN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCkBAIC05Myw2ICs5MywxNCBAQCBXSS5UaW1l
bGluZSA9IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRpbWVsaW5lLkV2ZW50LlJlZnJlc2hlZCk7CiAgICAg
fQogCisgICAgcmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkK
KyAgICB7CisgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVjb3Jkcy5sb3dlckJvdW5k
KHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5lbmRUaW1lKTsKKyAg
ICAgICAgbGV0IHVwcGVySW5kZXggPSB0aGlzLl9yZWNvcmRzLnVwcGVyQm91bmQoZW5kVGltZSwg
KHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5zdGFydFRpbWUpOworCisgICAgICAgIHJl
dHVybiB0aGlzLl9yZWNvcmRzLnNsaWNlKGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOworICAgIH0K
KwogICAgIHJlY29yZHNJblRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIGluY2x1ZGVSZWNv
cmRCZWZvcmVTdGFydCkKICAgICB7CiAgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVj
b3Jkcy5sb3dlckJvdW5kKHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29y
ZC5zdGFydFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1BVVGltZWxpbmVWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKaW5kZXggYmFiNTFkNzFlYjcu
LmIzMzRiNDFlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKQEAgLTIxNCwzICsyMTQs
MjcgQEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtdmlldy5jcHUgOm1hdGNoZXMoLmxpbmUtY2hh
cnQsIC5zdGFja2VkLWxpbmUtY2hhcnQpIC5tYXIKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xv
ci1zZWNvbmRhcnkpOwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29s
b3ItY29udGVudCk7CiB9CisKKy50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRv
ci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IHJlY3QgeworICAgIHN0cm9rZS1vcGFjaXR5
OiAwLjI1OworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3Itdmll
dyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc2NyaXB0IHsKKyAgICBzdHJv
a2U6IHZhcigtLWNwdS1zY3JpcHQtc3Ryb2tlLWNvbG9yKTsKKyAgICBmaWxsOiB2YXIoLS1jcHUt
c2NyaXB0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1p
bmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc3R5bGUg
eworICAgIHN0cm9rZTogdmFyKC0tY3B1LXN0eWxlLXN0cm9rZS1jb2xvcik7CisgICAgZmlsbDog
dmFyKC0tY3B1LXN0eWxlLWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNw
dS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5
cGUtbGF5b3V0IHsKKyAgICBzdHJva2U6IHZhcigtLWNwdS1sYXlvdXQtc3Ryb2tlLWNvbG9yKTsK
KyAgICBmaWxsOiB2YXIoLS1jcHUtbGF5b3V0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUt
dmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFy
dCAuc2FtcGxlLXR5cGUtcGFpbnQgeworICAgIHN0cm9rZTogdmFyKC0tY3B1LXBhaW50LXN0cm9r
ZS1jb2xvcik7CisgICAgZmlsbDogdmFyKC0tY3B1LXBhaW50LWZpbGwtY29sb3IpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGlt
ZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1BVVGltZWxpbmVWaWV3LmpzCmluZGV4IGYxMzY3Njg0OWViLi4zNzc2YmFjY2Q2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGltZWxp
bmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NQVVRpbWVsaW5lVmlldy5qcwpAQCAtNTcsNiArNTcsNyBAQCBXSS5DUFVUaW1lbGluZVZpZXcg
PSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGluZVZpZXcKIAogICAgIHN0
YXRpYyBnZXQgY3B1VXNhZ2VWaWV3SGVpZ2h0KCkgeyByZXR1cm4gMTUwOyB9CiAgICAgc3RhdGlj
IGdldCB0aHJlYWRDUFVVc2FnZVZpZXdIZWlnaHQoKSB7IHJldHVybiA2NTsgfQorICAgIHN0YXRp
YyBnZXQgaW5kaWNhdG9yVmlld0hlaWdodCgpIHsgcmV0dXJuIDE1OyB9CiAKICAgICAvLyBQdWJs
aWMKIApAQCAtMTA0LDIxICsxMDUsMjQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BV
VGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgIGNsZWFyVXNhZ2VW
aWV3KHRoaXMuX3Vua25vd25UaHJlYWRVc2FnZVZpZXcpOwogCiAgICAgICAgIHRoaXMuX3JlbW92
ZVdvcmtlclRocmVhZFZpZXdzKCk7Ci0gICAgfQogCi0gICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50
cygpCi0gICAgewotICAgICAgICByZXR1cm4gW3RoaXMuZWxlbWVudF07CisgICAgICAgIHRoaXMu
X21haW5UaHJlYWRXb3JrSW5kaWNhdG9yVmlldy5jbGVhcigpOwogICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCiAgICAgZ2V0IHNob3dzRmlsdGVyQmFyKCkgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlz
LmVsZW1lbnRdOworICAgIH0KKwogICAgIGluaXRpYWxMYXlvdXQoKQogICAgIHsKICAgICAgICAg
dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLWNwdS11c2FnZS1zdGFja2VkLXZpZXct
aGVpZ2h0IiwgQ1BVVGltZWxpbmVWaWV3LmNwdVVzYWdlVmlld0hlaWdodCArICJweCIpOwogICAg
ICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLXZpZXctaGVp
Z2h0IiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdodCArICJweCIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLWluZGlj
YXRvci12aWV3LWhlaWdodCIsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JWaWV3SGVpZ2h0ICsg
InB4Iik7CiAKICAgICAgICAgbGV0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgY29udGVudEVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudCIpOwpAQCAtMTk3LDYgKzIwMSwxMiBAQCBXSS5D
UFVUaW1lbGluZVZpZXcgPSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGlu
ZVZpZXcKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NwdVVzYWdlVmlldyk7CiAgICAg
ICAgIHRoaXMuX2RldGFpbHNDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NwdVVz
YWdlVmlldy5lbGVtZW50KTsKIAorICAgICAgICB0aGlzLl9tYWluVGhyZWFkV29ya0luZGljYXRv
clZpZXcgPSBuZXcgV0kuQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3OworICAgICAgICB0aGlzLmFkZFN1
YnZpZXcodGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3KTsKKyAgICAgICAgdGhpcy5f
ZGV0YWlsc0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFpblRocmVhZFdvcmtJ
bmRpY2F0b3JWaWV3LmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX21haW5UaHJlYWRXb3JrSW5k
aWNhdG9yVmlldy5jaGFydC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlSW5kaWNhdG9yQ2xpY2suYmluZCh0aGlzKSk7CisKICAgICAgICAgbGV0IHRocmVhZHNT
dWJ0aXRsZUVsZW1lbnQgPSBkZXRhaWxzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIHRocmVhZHNTdWJ0aXRsZUVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3VidGl0bGUiLCAidGhyZWFkcyIpOwogICAgICAgICB0aHJlYWRz
U3VidGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIlRocmVhZHMiKTsKQEAg
LTUxNSw2ICs1MjUsMTQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVW
aWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAKICAgICAgICAgICAgIGxheW91dFZpZXcod29y
a2VyVmlldywgInVzYWdlIiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdo
dCwge2RhdGFQb2ludHM6IHdvcmtlckRhdGEuZGF0YVBvaW50cywgbWluOiB3b3JrZXJEYXRhLm1p
biwgbWF4OiB3b3JrZXJEYXRhLm1heCwgYXZlcmFnZTogd29ya2VyRGF0YS5hdmVyYWdlfSk7CiAg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB4U2NhbGVJbmRpY2F0b3JSYW5nZShzYW1wbGVJ
bmRleCkgeworICAgICAgICAgICAgcmV0dXJuIChzYW1wbGVJbmRleCAvIDEwMDApIC8gc2Vjb25k
c1BlclBpeGVsOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGdyYXBoV2lkdGggPSAoZ3JhcGhF
bmRUaW1lIC0gZ3JhcGhTdGFydFRpbWUpIC8gc2Vjb25kc1BlclBpeGVsOworICAgICAgICBsZXQg
c2l6ZSA9IG5ldyBXSS5TaXplKGdyYXBoV2lkdGgsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JW
aWV3SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3LnVw
ZGF0ZUNoYXJ0KHNhbXBsaW5nRGF0YS5zYW1wbGVzLCBzaXplLCB2aXNpYmxlRW5kVGltZSwgeFNj
YWxlSW5kaWNhdG9yUmFuZ2UpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTY4Miw2ICs3
MDAsMTE1IEBAIFdJLkNQVVRpbWVsaW5lVmlldyA9IGNsYXNzIENQVVRpbWVsaW5lVmlldyBleHRl
bmRzIFdJLlRpbWVsaW5lVmlldwogICAgICAgICBpZiAoY3B1VGltZWxpbmVSZWNvcmQuc3RhcnRU
aW1lID49IHRoaXMuc3RhcnRUaW1lICYmIGNwdVRpbWVsaW5lUmVjb3JkLmVuZFRpbWUgPD0gdGhp
cy5lbmRUaW1lKQogICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KKworICAg
IF9ncmFwaFBvc2l0aW9uRm9yTW91c2VFdmVudChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBz
dmdFbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTG9jYWxOYW1l
KCJzdmciKTsKKyAgICAgICAgaWYgKCFzdmdFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIE5h
TjsKKworICAgICAgICBsZXQgc3ZnUmVjdCA9IHN2Z0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CisgICAgICAgIGxldCBwb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gc3ZnUmVjdC5sZWZ0
OworCisgICAgICAgIGlmIChXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlv
dXREaXJlY3Rpb24uUlRMKQorICAgICAgICAgICAgcmV0dXJuIHN2Z1JlY3Qud2lkdGggLSBwb3Np
dGlvbjsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgIH0KKworICAgIF9oYW5kbGVJbmRp
Y2F0b3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIGxldCBjbGlja1Bvc2l0aW9uID0gdGhp
cy5fZ3JhcGhQb3NpdGlvbkZvck1vdXNlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoaXNOYU4o
Y2xpY2tQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHNlY29u
ZHNQZXJQaXhlbCA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuc2Vjb25kc1BlclBpeGVsOworICAgICAg
ICBsZXQgZ3JhcGhDbGlja1RpbWUgPSBjbGlja1Bvc2l0aW9uICogc2Vjb25kc1BlclBpeGVsOwor
ICAgICAgICBsZXQgZ3JhcGhTdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKKworICAgICAgICBs
ZXQgY2xpY2tTdGFydFRpbWUgPSBncmFwaFN0YXJ0VGltZSArIGdyYXBoQ2xpY2tUaW1lOworICAg
ICAgICBsZXQgY2xpY2tFbmRUaW1lID0gY2xpY2tTdGFydFRpbWUgKyBzZWNvbmRzUGVyUGl4ZWw7
CisKKyAgICAgICAgLy8gVHJ5IGF0IHRoZSBleGFjdCBjbGlja2VkIHBpeGVsLgorICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0LmxvY2FsTmFtZSA9PT0gInJlY3QiKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fYXR0ZW1wdFNlbGVjdEluZGljYXRhdG9yVGltZWxpbmVSZWNvcmQoY2xpY2tTdGFydFRp
bWUsIGNsaWNrRW5kVGltZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZmFsc2UsICJJZiB0aGUgdXNlciBjbGlja2VkIG9uIGEgcmVjdCB0aGVy
ZSBzaG91bGQgaGF2ZSBiZWVuIGEgcmVjb3JkIGluIHRoaXMgcGl4ZWwgcmFuZ2UiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNwaXJhbCBvdXQgNCBwaXhlbHMgZWFjaCBzaWRlIHRvIHRyeSBh
bmQgc2VsZWN0IGEgbmVhcmJ5IHJlY29yZC4KKyAgICAgICAgZm9yIChsZXQgaSA9IDEsIGRlbHRh
ID0gMDsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgIGRlbHRhICs9IHNlY29uZHNQZXJQaXhl
bDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hdHRlbXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGlu
ZVJlY29yZChjbGlja1N0YXJ0VGltZSAtIGRlbHRhLCBjbGlja1N0YXJ0VGltZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRTZWxlY3RJbmRp
Y2F0YXRvclRpbWVsaW5lUmVjb3JkKGNsaWNrRW5kVGltZSwgY2xpY2tFbmRUaW1lICsgZGVsdGEp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9hdHRl
bXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGluZVJlY29yZChzdGFydFRpbWUsIGVuZFRpbWUpCisg
ICAgeworICAgICAgICBsZXQgbGF5b3V0VGltZWxpbmUgPSB0aGlzLl9yZWNvcmRpbmcudGltZWxp
bmVGb3JSZWNvcmRUeXBlKFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0KTsKKyAgICAgICAg
bGV0IGxheW91dFJlY29yZHMgPSBsYXlvdXRUaW1lbGluZSA/IGxheW91dFRpbWVsaW5lLnJlY29y
ZHNPdmVybGFwcGluZ1RpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUpIDogW107CisgICAgICAg
IGxheW91dFJlY29yZHMgPSBsYXlvdXRSZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PiB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHJlY29yZC5ldmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV0ku
TGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgorICAgICAg
ICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRm9yY2VkTGF5b3V0
OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuTGF5
b3V0OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
UGFpbnQ6CisgICAgICAgICAgICBjYXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5Db21wb3NpdGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBj
YXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5bGVzOgor
ICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxp
ZGF0ZUxheW91dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBMYXlvdXRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGUiLCByZWNvcmQuZXZlbnRUeXBlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAg
IGlmIChsYXlvdXRSZWNvcmRzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0VGlt
ZWxpbmVSZWNvcmQobGF5b3V0UmVjb3Jkc1swXSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGxldCBzY3JpcHRUaW1lbGluZSA9IHRoaXMuX3JlY29yZGlu
Zy50aW1lbGluZUZvclJlY29yZFR5cGUoV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOwor
ICAgICAgICBsZXQgc2NyaXB0UmVjb3JkcyA9IHNjcmlwdFRpbWVsaW5lID8gc2NyaXB0VGltZWxp
bmUucmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkgOiBbXTsK
KyAgICAgICAgc2NyaXB0UmVjb3JkcyA9IHNjcmlwdFJlY29yZHMuZmlsdGVyKChyZWNvcmQpID0+
IHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVjb3JkLmV2ZW50VHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuU2NyaXB0RXZhbHVhdGVkOgor
ICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQVBJU2Ny
aXB0RXZhbHVhdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuT2JzZXJ2ZXJDYWxsYmFjazoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZDoKKyAgICAgICAgICAgIGNhc2Ug
V0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLk1pY3JvdGFza0Rpc3BhdGNoZWQ6Cisg
ICAgICAgICAgICBjYXNlIFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZp
cmVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
QW5pbWF0aW9uRnJhbWVGaXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZy
YW1lUmVxdWVzdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuQW5pbWF0aW9uRnJhbWVDYW5jZWxlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2Ny
aXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbGVkOgorICAgICAgICAgICAg
Y2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJSZW1vdmVkOgorICAg
ICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUHJvYmVTYW1w
bGVSZWNvcmRlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLkNvbnNvbGVQcm9maWxlUmVjb3JkZWQ6CisgICAgICAgICAgICBjYXNlIFdJLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5HYXJiYWdlQ29sbGVjdGVkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSIs
IHJlY29yZC5ldmVudFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHNjcmlwdFJlY29yZHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RUaW1lbGluZVJlY29yZChzY3JpcHRSZWNvcmRz
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIF9zZWxlY3RUaW1lbGluZVJlY29yZChyZWNvcmQpCisg
ICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UaW1lbGluZVZp
ZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHtyZWNvcmR9KTsKKyAgICB9CiB9OwogCiAvLyBO
T1RFOiBVSSBmb2xsb3dzIHRoaXMgb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVXNhZ2VJbmRpY2F0b3JW
aWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTFlNzhmOWY3
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuY3NzCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3IHsKKyAgICBkaXNwbGF5OiBmbGV4Owor
ICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogY2FsYyh2YXIoLS1jcHUtdXNhZ2UtaW5kaWNh
dG9yLXZpZXctaGVpZ2h0KSArIDFweCk7IC8qIDEgZm9yIGJvcmRlci1ib3R0b20gKi8KKyAgICBi
b3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKK30KKworLmNwdS11
c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5kZXRhaWxzIHsKKyAgICBmbGV4LXNocmluazogMDsKKyAg
ICB3aWR0aDogMTUwcHg7CisgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAxNXB4OworICAgIC13
ZWJraXQtYm9yZGVyLWVuZDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Cit9CisKK2Jv
ZHlbZGlyPXJ0bF0gLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCB7CisgICAgdHJh
bnNmb3JtOiBzY2FsZVgoLTEpOworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdy
YXBoIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgei1pbmRleDogY2FsYyh2YXIoLS10
aW1lbGluZS1tYXJrZXItei1pbmRleCkgKyAxKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1iYWNrZ3JvdW5kLWNvbG9yLWNvbnRlbnQpOworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12
aWV3ID4gLmdyYXBoLAorLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5n
ZS1jaGFydCwKKy5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hh
cnQgPiBzdmcgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdl
SW5kaWNhdG9yVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMjcwNWJkNDM5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuanMKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5DUFVVc2FnZUluZGljYXRvclZpZXcgPSBj
bGFzcyBDUFVVc2FnZUluZGljYXRvclZpZXcgZXh0ZW5kcyBXSS5WaWV3Cit7CisgICAgY29uc3Ry
dWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXciKTsKKworICAg
ICAgICB0aGlzLl9kZXRhaWxzRWxlbWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2RldGFpbHNFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImRldGFpbHMiKTsKKworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQg
PSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZ3JhcGgiKTsKKwor
ICAgICAgICB0aGlzLl9jaGFydCA9IG5ldyBXSS5SYW5nZUNoYXJ0OworICAgICAgICB0aGlzLmFk
ZFN1YnZpZXcodGhpcy5fY2hhcnQpOworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY2hhcnQuZWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAg
ICBnZXQgY2hhcnQoKSB7IHJldHVybiB0aGlzLl9jaGFydDsgfQorCisgICAgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fY2hhcnQuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fY2hhcnQubmVl
ZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICB1cGRhdGVDaGFydChzYW1wbGVzLCBzaXplLCB2aXNp
YmxlRW5kVGltZSwgeFNjYWxlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2l6ZSBp
bnN0YW5jZW9mIFdJLlNpemUpOworCisgICAgICAgIHRoaXMuX2NoYXJ0LmNsZWFyKCk7CisgICAg
ICAgIHRoaXMuX2NoYXJ0LnNpemUgPSBzaXplOworICAgICAgICB0aGlzLl9jaGFydC5uZWVkc0xh
eW91dCgpOworCisgICAgICAgIGlmICghc2FtcGxlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gQ29hbGVzY2UgcmFuZ2VzIG9mIHNhbXBsZXMuCisgICAgICAgIGxl
dCByYW5nZXMgPSBbXTsKKyAgICAgICAgbGV0IGN1cnJlbnRSYW5nZSA9IG51bGw7CisgICAgICAg
IGxldCBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzYW1wbGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBCYWNrIHRvIGlk
bGUsIGNsb3NlIGFueSBjdXJyZW50IGNodW5rLgorICAgICAgICAgICAgbGV0IHR5cGUgPSBzYW1w
bGVzW2ldOworICAgICAgICAgICAgaWYgKCF0eXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRSYW5nZSkgeworICAgICAgICAgICAgICAgICAgICByYW5nZXMucHVzaChjdXJyZW50UmFu
Z2UpOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSBudWxsOworICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIEV4cGFuZCBleGlzdGluZyBjaHVuay4KKyAgICAgICAgICAgIGlmICh0eXBlID09PSBj
dXJyZW50U2FtcGxlVHlwZSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRSYW5nZS5lbmRJbmRl
eCA9IGk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIElmIHR5cGUgY2hhbmdlZCwgY2xvc2UgY3VycmVudCBjaHVuay4KKyAgICAgICAg
ICAgIGlmIChjdXJyZW50U2FtcGxlVHlwZSkgeworICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNo
KGN1cnJlbnRSYW5nZSk7CisgICAgICAgICAgICAgICAgY3VycmVudFJhbmdlID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gU3RhcnQgYSBuZXcgY2h1bmsuCisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghY3VycmVudFJhbmdlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFj
dXJyZW50U2FtcGxlVHlwZSk7CisgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSB7dHlwZSwgc3Rh
cnRJbmRleDogaSwgZW5kSW5kZXg6IGl9OworICAgICAgICAgICAgY3VycmVudFNhbXBsZVR5cGUg
PSB0eXBlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQge3R5cGUsIHN0YXJ0SW5kZXgs
IGVuZEluZGV4fSBvZiByYW5nZXMpIHsKKyAgICAgICAgICAgIGxldCBzdGFydFggPSB4U2NhbGUo
c3RhcnRJbmRleCk7CisgICAgICAgICAgICBsZXQgZW5kWCA9IHhTY2FsZShlbmRJbmRleCArIDEp
OworICAgICAgICAgICAgbGV0IHdpZHRoID0gZW5kWCAtIHN0YXJ0WDsKKyAgICAgICAgICAgIHRo
aXMuX2NoYXJ0LmFkZFJhbmdlKHN0YXJ0WCwgd2lkdGgsIHR5cGUpOworICAgICAgICB9CisgICAg
fQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1JhbmdlQ2hhcnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SYW5nZUNoYXJ0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5iYzg3YmQzMjdmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBSYW5nZUNoYXJ0IGNyZWF0ZXMgYSBjaGFydCBmaWxsZWQgd2l0aCByYW5nZXMg
b2YgZXF1YWwgaGVpZ2h0LgorLy8KKy8vICAgICBbICAgfC0tLS0tLXwtLS0tLS18ICAgfC0tLS0t
LXwgICAgICAgICAgICAgICAgIF0KKy8vCisvLyBJbml0aWFsaXplIHRoZSBjaGFydCB3aXRoIGEg
c2l6ZS4gWW91IGNhbiB0aGVuIGluY2x1ZGUgYSBuZXcgcmFuZ2UKKy8vIGluIHRoZSBjaGFydCBi
eSBwcm92aWRpbmcgYW4gKHgsIHcsIGNsYXNzKSB2aWEgYGFkZFJhbmdlYC4KKy8vCisvLyBTVkc6
CisvLworLy8gLSBUaGVyZSBpcyBhIHNpbmdsZSByZWN0IGZvciBlYWNoIHJhbmdlLgorLy8KKy8v
ICA8ZGl2IGNsYXNzPSJyYW5nZS1jaGFydCI+CisvLyAgICAgIDxzdmcgdmlld0JveD0iMCAwIDgw
MCA3NSI+CisvLyAgICAgICAgICA8cmVjdCB3aWR0aD0iPHc+IiBoZWlnaHQ9IjEwMCUiIHRyYW5z
Zm9ybT0idHJhbnNsYXRlWCg8eD4pIiBjbGFzcz0iPGNsYXNzPiIgLz4KKy8vICAgICAgICAgIDxy
ZWN0IHdpZHRoPSI8dz4iIGhlaWdodD0iMTAwJSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGVYKDx4Piki
IGNsYXNzPSI8Y2xhc3M+IiAvPgorLy8gICAgICAgICAgLi4uCisvLyAgICAgIDwvc3ZnPgorLy8g
IDwvZGl2PgorCitXSS5SYW5nZUNoYXJ0ID0gY2xhc3MgUmFuZ2VDaGFydCBleHRlbmRzIFdJLlZp
ZXcKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyYW5nZS1jaGFydCIpOworCisgICAgICAg
IHRoaXMuX3N2Z0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU1ZHRWxl
bWVudCgic3ZnIikpOworICAgICAgICB0aGlzLl9zdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgicHJl
c2VydmVBc3BlY3RSYXRpbyIsICJub25lIik7CisKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107
CisgICAgICAgIHRoaXMuX3NpemUgPSBudWxsOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgZ2V0IHNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7CisgICAgfQor
CisgICAgc2V0IHNpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zaXplICYmIHRo
aXMuX3NpemUuZXF1YWxzKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3NpemUgPSBzaXplOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRl
KCJ2aWV3Qm94IiwgYDAgMCAke3NpemUud2lkdGh9ICR7c2l6ZS5oZWlnaHR9YCk7CisgICAgfQor
CisgICAgYWRkUmFuZ2UoeCwgd2lkdGgsIGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X3Jhbmdlcy5wdXNoKHt4LCB3aWR0aCwgY2xhc3NOYW1lfSk7CisgICAgfQorCisgICAgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIubGF5b3V0KCk7CisK
KyAgICAgICAgaWYgKHRoaXMubGF5b3V0UmVhc29uID09PSBXSS5WaWV3LkxheW91dFJlYXNvbi5S
ZXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLl9zaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKworICAgICAgICBsZXQgaCA9IDA7CisgICAgICAgIGZvciAobGV0IHt4LCB3aWR0
aCwgY2xhc3NOYW1lfSBvZiB0aGlzLl9yYW5nZXMpIHsKKyAgICAgICAgICAgIGxldCByZWN0ID0g
dGhpcy5fc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChjcmVhdGVTVkdFbGVtZW50KCJyZWN0IikpOwor
ICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgd2lkdGgpOworICAgICAgICAg
ICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuc2l6ZS5oZWlnaHQpOworICAgICAg
ICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIGB0cmFuc2xhdGUoJHt4fSwgMClg
KTsKKyAgICAgICAgICAgIHJlY3QuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOworICAgICAgICB9
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
LmpzCmluZGV4IDgwZDk3ZDA4OTI1Li4yODA0YjNjYzMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCkBAIC05Niw3ICs5Niw4IEBAIFdJLlRpbWVs
aW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuCiAgICAgICAgIFdJLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRo
aXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwgdGhpcyk7CiAg
ICAgICAgIFdJLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudFZpZXcuRXZl
bnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50
Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAKLSAg
ICAgICAgV0kuVGltZWxpbmVWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVWaWV3LkV2
ZW50LlJlY29yZFdhc0ZpbHRlcmVkLCB0aGlzLl9yZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLlRpbWVsaW5lVmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlRpbWVsaW5lVmlldy5F
dmVudC5SZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcy5faGFuZGxlVGltZWxpbmVWaWV3UmVjb3JkRmls
dGVyZWQsIHRoaXMpOworICAgICAgICBXSS5UaW1lbGluZVZpZXcuYWRkRXZlbnRMaXN0ZW5lcihX
SS5UaW1lbGluZVZpZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHRoaXMuX2hhbmRsZVRpbWVs
aW5lVmlld1JlY29yZFNlbGVjdGVkLCB0aGlzKTsKIAogICAgICAgICBXSS5ub3RpZmljYXRpb25z
LmFkZEV2ZW50TGlzdGVuZXIoV0kuTm90aWZpY2F0aW9uLlZpc2liaWxpdHlTdGF0ZURpZENoYW5n
ZSwgdGhpcy5faW5zcGVjdG9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTcw
MCwxNSArNzAxLDcgQEAgV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFRp
bWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS4KICAgICB7CiAgICAgICAgIGxl
dCB7cmVjb3JkfSA9IGV2ZW50LmRhdGE7CiAKLSAgICAgICAgZm9yIChsZXQgdGltZWxpbmVWaWV3
IG9mIHRoaXMuX3RpbWVsaW5lVmlld01hcC52YWx1ZXMoKSkgewotICAgICAgICAgICAgbGV0IHJl
Y29yZE1hdGNoZXNUaW1lbGluZSA9IHJlY29yZCAmJiB0aW1lbGluZVZpZXcucmVwcmVzZW50ZWRP
YmplY3QudHlwZSA9PT0gcmVjb3JkLnR5cGU7Ci0KLSAgICAgICAgICAgIGlmIChyZWNvcmRNYXRj
aGVzVGltZWxpbmUgJiYgdGltZWxpbmVWaWV3ICE9PSB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcp
Ci0gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGltZWxp
bmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICAgICAgaWYgKCFyZWNvcmQgfHwg
cmVjb3JkTWF0Y2hlc1RpbWVsaW5lKQotICAgICAgICAgICAgICAgIHRpbWVsaW5lVmlldy5zZWxl
Y3RSZWNvcmQocmVjb3JkKTsKLSAgICAgICAgfQorICAgICAgICB0aGlzLl9zZWxlY3RSZWNvcmRJ
blRpbWVsaW5lVmlldyhyZWNvcmQpOwogICAgIH0KIAogICAgIF90aW1lbGluZVNlbGVjdGVkKCkK
QEAgLTgwNCw3ICs3OTcsNyBAQCBXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xh
c3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICB0aGlz
LmN1cnJlbnRUaW1lbGluZVZpZXcudXBkYXRlRmlsdGVyKHRoaXMuX2ZpbHRlckJhck5hdmlnYXRp
b25JdGVtLmZpbHRlckJhci5maWx0ZXJzKTsKICAgICB9CiAKLSAgICBfcmVjb3JkV2FzRmlsdGVy
ZWQoZXZlbnQpCisgICAgX2hhbmRsZVRpbWVsaW5lVmlld1JlY29yZEZpbHRlcmVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVW
aWV3KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODIwLDYgKzgxMywzOSBAQCBXSS5UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmll
dyBleHRlbmRzIFdJLgogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnJlY29yZFdhc0Zp
bHRlcmVkKHRpbWVsaW5lLCByZWNvcmQsIGZpbHRlcmVkKTsKICAgICB9CiAKKyAgICBfaGFuZGxl
VGltZWxpbmVWaWV3UmVjb3JkU2VsZWN0ZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQge3JlY29yZH0g
PSBldmVudC5kYXRhOworCisgICAgICAgIHRoaXMuX3NlbGVjdFJlY29yZEluVGltZWxpbmVPdmVy
dmlldyhyZWNvcmQpOworICAgICAgICB0aGlzLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lVmlldyhy
ZWNvcmQpOworICAgIH0KKworICAgIF9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcocmVj
b3JkKQorICAgIHsKKyAgICAgICAgbGV0IHRpbWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVs
aW5lRm9yUmVjb3JkVHlwZShyZWNvcmQudHlwZSk7CisgICAgICAgIGlmICghdGltZWxpbmUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5zZWxl
Y3RSZWNvcmQodGltZWxpbmUsIHJlY29yZCk7CisgICAgfQorCisgICAgX3NlbGVjdFJlY29yZElu
VGltZWxpbmVWaWV3KHJlY29yZCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IHRpbWVsaW5lVmll
dyBvZiB0aGlzLl90aW1lbGluZVZpZXdNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGxldCBy
ZWNvcmRNYXRjaGVzVGltZWxpbmUgPSByZWNvcmQgJiYgdGltZWxpbmVWaWV3LnJlcHJlc2VudGVk
T2JqZWN0LnR5cGUgPT09IHJlY29yZC50eXBlOworCisgICAgICAgICAgICBpZiAocmVjb3JkTWF0
Y2hlc1RpbWVsaW5lICYmIHRpbWVsaW5lVmlldyAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3
KQorICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lKHRpbWVs
aW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgICAgIGlmICghcmVjb3JkIHx8
IHJlY29yZE1hdGNoZXNUaW1lbGluZSkKKyAgICAgICAgICAgICAgICB0aW1lbGluZVZpZXcuc2Vs
ZWN0UmVjb3JkKHJlY29yZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfdXBkYXRlUHJvZ3Jl
c3NWaWV3KCkKICAgICB7CiAgICAgICAgIGxldCBpc0NhcHR1cmluZyA9IFdJLnRpbWVsaW5lTWFu
YWdlci5pc0NhcHR1cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCmluZGV4IDIzODQyZjJjMDg1Li5k
NzlkNWU4Mjk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMzM1LDUgKzMzNSw2IEBAIFdJLlRp
bWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiB9
OwogCiBXSS5UaW1lbGluZVZpZXcuRXZlbnQgPSB7Ci0gICAgUmVjb3JkV2FzRmlsdGVyZWQ6ICJy
ZWNvcmQtd2FzLWZpbHRlcmVkIgorICAgIFJlY29yZFdhc0ZpbHRlcmVkOiAicmVjb3JkLXdhcy1m
aWx0ZXJlZCIsCisgICAgUmVjb3JkV2FzU2VsZWN0ZWQ6ICJyZWNvcmQtd2FzLXNlbGVjdGVkIiwK
IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362964</attachid>
            <date>2019-02-25 22:38:11 -0800</date>
            <delta_ts>2019-02-26 00:21:21 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>cpu8.patch</filename>
            <type>text/plain</type>
            <size>31867</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc1ZjliOWY0MDQyLi45Yjc0MTI1YTE3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTktMDItMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDUFUgVXNhZ2UgVGltZWxpbmUgLSBNYWluIFRocmVhZCBJbmRpY2F0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDk3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAg
ICAgKHZhbHVlKToKKyAgICAgICAgVGhlIGV4aXN0aW5nIGVuY2xvc2luZ05vZGUgZG9lc24ndCB3
b3JrIGZvciBTVkcgYmVjYXVzZSBpdHMgbmFtZXMKKyAgICAgICAgYXJlIGxvd2VyY2FzZS4gQWRk
IGEgc2ltcGxpZmllZCB2ZXJzaW9uIGZvciB0aGUgc3ZnIGNhc2UuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanM6IEFkZGVkLgorICAgICAgICAoV0kuUmFuZ2VD
aGFydCk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5nZXQgc2l6ZSk6CisgICAg
ICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5zZXQgc2l6ZSk6CisgICAgICAgIChXSS5SYW5n
ZUNoYXJ0LnByb3RvdHlwZS5hZGRSYW5nZSk6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3Rv
dHlwZS5jbGVhcik6CisgICAgICAgIChXSS5SYW5nZUNoYXJ0LnByb3RvdHlwZS5sYXlvdXQpOgor
ICAgICAgICBBIG5ldyBjaGFydCB0aGF0IGRyYXdzIHJlY3RzIGZvciBnaXZlbiByYW5nZXMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qczoKKyAgICAgICAgKFdJ
LlRpbWVsaW5lLnByb3RvdHlwZS5yZWNvcmRzT3ZlcmxhcHBpbmdUaW1lUmFuZ2UpOgorICAgICAg
ICBIZWxwZXIgdG8gc3BlY2lmaWNhbGx5IGdldCByZWNvcmRzIHRvdWNoaW5nIGEgcmFuZ2UuIFVz
ZWZ1bAorICAgICAgICBmb3Igd2hlbiB3ZSBoYXZlIGEgc2luZ2xlIHBpeGVsIHNwYW5uaW5nIChz
dGFydFRpbWUgLT4gZW5kVGltZSkKKyAgICAgICAgYW5kIHdlIHdhbnQgdG8gZmluZCByZWNvcmRz
IGluIHRoYXQgcGl4ZWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVs
aW5lVmlldy5jc3M6CisgICAgICAgICgudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRp
Y2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCByZWN0KToKKyAgICAgICAgKC50aW1l
bGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdl
LWNoYXJ0IC5zYW1wbGUtdHlwZS1zY3JpcHQpOgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1
IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBs
ZS10eXBlLXN0eWxlKToKKyAgICAgICAgKC50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWlu
ZGljYXRvci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IC5zYW1wbGUtdHlwZS1sYXlvdXQp
OgorICAgICAgICAoLnRpbWVsaW5lLXZpZXcuY3B1IC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcg
PiAuZ3JhcGggPiAucmFuZ2UtY2hhcnQgLnNhbXBsZS10eXBlLXBhaW50KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLkNQVVRp
bWVsaW5lVmlldy5wcm90b3R5cGUuZ2V0IGluZGljYXRvclZpZXdIZWlnaHQpOgorICAgICAgICAo
V0kuQ1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5jbGVhcik6CisgICAgICAgIChXSS5DUFVUaW1l
bGluZVZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgorICAgICAgICAoV0ku
Q1BVVGltZWxpbmVWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNQ
VVRpbWVsaW5lVmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5l
Vmlldy5wcm90b3R5cGUuX2dyYXBoUG9zaXRpb25Gb3JNb3VzZUV2ZW50KToKKyAgICAgICAgKFdJ
LkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2hhbmRsZUluZGljYXRvckNsaWNrKToKKyAgICAg
ICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUuX2F0dGVtcHRTZWxlY3RJbmRpY2F0YXRv
clRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgKFdJLkNQVVRpbWVsaW5lVmlldy5wcm90b3R5cGUu
X3NlbGVjdFRpbWVsaW5lUmVjb3JkKToKKyAgICAgICAgUGxhY2UgdGhlIE1haW4gVGhyZWFkIElu
ZGljYXRvciB2aWV3IGJlbmVhdGggdGhlIGJpZyBncmFwaC4KKyAgICAgICAgQ2xpY2tpbmcgaW5z
aWRlIGl0IHNlbGVjdHMgcmVjb3JkcyBpbiB0aGUgVGltZWxpbmUgT3ZlcnZpZXcuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3M6IEFkZGVk
LgorICAgICAgICAoLmNwdS11c2FnZS1pbmRpY2F0b3Itdmlldyk6CisgICAgICAgICguY3B1LXVz
YWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9bHRyXSAu
Y3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9keVtkaXI9
cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmRldGFpbHMpOgorICAgICAgICAoYm9k
eVtkaXI9cnRsXSAuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdyYXBoKToKKyAgICAgICAg
KC5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGgpOgorICAgICAgICAoLmNwdS11c2Fn
ZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkNQVVVzYWdl
SW5kaWNhdG9yVmlldyk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90
eXBlLmdldCBjaGFydCk6CisgICAgICAgIChXSS5DUFVVc2FnZUluZGljYXRvclZpZXcucHJvdG90
eXBlLmNsZWFyKToKKyAgICAgICAgKFdJLkNQVVVzYWdlSW5kaWNhdG9yVmlldy5wcm90b3R5cGUu
dXBkYXRlQ2hhcnQpOgorICAgICAgICBDb252ZXJ0cyB0aGUgQ1BVIHNhbXBsZXMgZGF0YSBpbnRv
IGEgUmFuZ2VDaGFydC4gSXQgd29ya3MgdG8gY29hbGVzY2UKKyAgICAgICAgbWFueSBzYW1wbGVz
IG9mIHRoZSBzYW1lIHR5cGUgaW50byBhIHNpbmdsZSByYW5nZSB0byByZWR1Y2UgdG90YWwgcmFu
Z2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk6
CisgICAgICAgIChXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVj
b3JkU2VsZWN0ZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5w
cm90b3R5cGUuX3JlY29yZFdhc1NlbGVjdGVkKToKKyAgICAgICAgKFdJLlRpbWVsaW5lUmVjb3Jk
aW5nQ29udGVudFZpZXcucHJvdG90eXBlLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcp
OgorICAgICAgICAoV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nl
bGVjdFJlY29yZEluVGltZWxpbmVWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgQWRkIGEgcGF0aCBmb3IgYSBUaW1lbGluZVZpZXcg
dG8gZGlzcGF0Y2ggYSByZWNvcmQgc2VsZWN0ZWQgZXZlbnQgYW5kIGNhdXNlCisgICAgICAgIGhh
dmUgdGhlIFRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgcmVhY3QgdG8gaXQgYnkgdXBkYXRp
bmcgdGhlIHRpbWVsaW5lCisgICAgICAgIG92ZXJ2aWV3IGFuZCByZWxldmVudCB0aW1lbGluZSB2
aWV3LgorCiAyMDE5LTAyLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1BVIFVzYWdlIFRpbWVsaW5lIC0gVGhyZWFkIEJy
ZWFrZG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1V0aWxpdGllcy5qcwppbmRleCAwYzk3ZGRkZWYyNS4uMDQyMmM2YzFlMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVz
LmpzCkBAIC0yMTgsNiArMjE4LDE5IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3Rv
dHlwZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUiLAogICAgIH0KIH0pOwogCitP
YmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aExvY2FsTmFtZSIsCit7CisgICAgdmFsdWUobG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAg
Zm9yIChsZXQgbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGlmIChub2RlLmxvY2FsTmFtZSA9PT0gbG9jYWxOYW1lKQorICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorfSk7CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZl
cnNlTmV4dE5vZGUiLAogewogICAgIHZhbHVlKHN0YXlXaXRoaW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYTA5YjMwYWU5MGIuLjM2ODMy
YzE2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCkBAIC00NSw2ICs0NSw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9CdXR0b25Ub29sYmFySXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNhZ2VTdGFja2Vk
Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ1BVVXNh
Z2VWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DYWxs
RnJhbWVJY29ucy5jc3MiPgpAQCAtNTkzLDYgKzU5NCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ1BVVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ1BVVGltZWxpbmVWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ1BVVXNhZ2VTdGFja2VkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NQVVVzYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CkBAIC03NDcsNiArNzQ5
LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SYW5nZUNoYXJ0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVjb3JkaW5nQWN0aW9uVHJlZUVsZW1lbnQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZWNvcmRpbmdDb250ZW50Vmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlY29yZGluZ1N0YXRlRGV0
YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKaW5kZXggNzU2Y2U1NzRj
NDAuLjgyOTQ5Y2NmN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCkBAIC05Myw2ICs5MywxNCBAQCBXSS5UaW1l
bGluZSA9IGNsYXNzIFRpbWVsaW5lIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRpbWVsaW5lLkV2ZW50LlJlZnJlc2hlZCk7CiAgICAg
fQogCisgICAgcmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkK
KyAgICB7CisgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVjb3Jkcy5sb3dlckJvdW5k
KHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5lbmRUaW1lKTsKKyAg
ICAgICAgbGV0IHVwcGVySW5kZXggPSB0aGlzLl9yZWNvcmRzLnVwcGVyQm91bmQoZW5kVGltZSwg
KHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29yZC5zdGFydFRpbWUpOworCisgICAgICAgIHJl
dHVybiB0aGlzLl9yZWNvcmRzLnNsaWNlKGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOworICAgIH0K
KwogICAgIHJlY29yZHNJblRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIGluY2x1ZGVSZWNv
cmRCZWZvcmVTdGFydCkKICAgICB7CiAgICAgICAgIGxldCBsb3dlckluZGV4ID0gdGhpcy5fcmVj
b3Jkcy5sb3dlckJvdW5kKHN0YXJ0VGltZSwgKHRpbWUsIHJlY29yZCkgPT4gdGltZSAtIHJlY29y
ZC5zdGFydFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1BVVGltZWxpbmVWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKaW5kZXggYmFiNTFkNzFlYjcu
LmIzMzRiNDFlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DUFVUaW1lbGluZVZpZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVRpbWVsaW5lVmlldy5jc3MKQEAgLTIxNCwzICsyMTQs
MjcgQEAgYm9keVtkaXI9cnRsXSAudGltZWxpbmUtdmlldy5jcHUgOm1hdGNoZXMoLmxpbmUtY2hh
cnQsIC5zdGFja2VkLWxpbmUtY2hhcnQpIC5tYXIKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xv
ci1zZWNvbmRhcnkpOwogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29s
b3ItY29udGVudCk7CiB9CisKKy50aW1lbGluZS12aWV3LmNwdSAuY3B1LXVzYWdlLWluZGljYXRv
ci12aWV3ID4gLmdyYXBoID4gLnJhbmdlLWNoYXJ0IHJlY3QgeworICAgIHN0cm9rZS1vcGFjaXR5
OiAwLjI1OworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3Itdmll
dyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc2NyaXB0IHsKKyAgICBzdHJv
a2U6IHZhcigtLWNwdS1zY3JpcHQtc3Ryb2tlLWNvbG9yKTsKKyAgICBmaWxsOiB2YXIoLS1jcHUt
c2NyaXB0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNwdS11c2FnZS1p
bmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5cGUtc3R5bGUg
eworICAgIHN0cm9rZTogdmFyKC0tY3B1LXN0eWxlLXN0cm9rZS1jb2xvcik7CisgICAgZmlsbDog
dmFyKC0tY3B1LXN0eWxlLWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUtdmlldy5jcHUgLmNw
dS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFydCAuc2FtcGxlLXR5
cGUtbGF5b3V0IHsKKyAgICBzdHJva2U6IHZhcigtLWNwdS1sYXlvdXQtc3Ryb2tlLWNvbG9yKTsK
KyAgICBmaWxsOiB2YXIoLS1jcHUtbGF5b3V0LWZpbGwtY29sb3IpOworfQorCisudGltZWxpbmUt
dmlldy5jcHUgLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5nZS1jaGFy
dCAuc2FtcGxlLXR5cGUtcGFpbnQgeworICAgIHN0cm9rZTogdmFyKC0tY3B1LXBhaW50LXN0cm9r
ZS1jb2xvcik7CisgICAgZmlsbDogdmFyKC0tY3B1LXBhaW50LWZpbGwtY29sb3IpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGlt
ZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1BVVGltZWxpbmVWaWV3LmpzCmluZGV4IGYxMzY3Njg0OWViLi4zNzc2YmFjY2Q2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVGltZWxp
bmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NQVVRpbWVsaW5lVmlldy5qcwpAQCAtNTcsNiArNTcsNyBAQCBXSS5DUFVUaW1lbGluZVZpZXcg
PSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGluZVZpZXcKIAogICAgIHN0
YXRpYyBnZXQgY3B1VXNhZ2VWaWV3SGVpZ2h0KCkgeyByZXR1cm4gMTUwOyB9CiAgICAgc3RhdGlj
IGdldCB0aHJlYWRDUFVVc2FnZVZpZXdIZWlnaHQoKSB7IHJldHVybiA2NTsgfQorICAgIHN0YXRp
YyBnZXQgaW5kaWNhdG9yVmlld0hlaWdodCgpIHsgcmV0dXJuIDE1OyB9CiAKICAgICAvLyBQdWJs
aWMKIApAQCAtMTA0LDIxICsxMDUsMjQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BV
VGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgIGNsZWFyVXNhZ2VW
aWV3KHRoaXMuX3Vua25vd25UaHJlYWRVc2FnZVZpZXcpOwogCiAgICAgICAgIHRoaXMuX3JlbW92
ZVdvcmtlclRocmVhZFZpZXdzKCk7Ci0gICAgfQogCi0gICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50
cygpCi0gICAgewotICAgICAgICByZXR1cm4gW3RoaXMuZWxlbWVudF07CisgICAgICAgIHRoaXMu
X21haW5UaHJlYWRXb3JrSW5kaWNhdG9yVmlldy5jbGVhcigpOwogICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCiAgICAgZ2V0IHNob3dzRmlsdGVyQmFyKCkgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlz
LmVsZW1lbnRdOworICAgIH0KKwogICAgIGluaXRpYWxMYXlvdXQoKQogICAgIHsKICAgICAgICAg
dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLWNwdS11c2FnZS1zdGFja2VkLXZpZXct
aGVpZ2h0IiwgQ1BVVGltZWxpbmVWaWV3LmNwdVVzYWdlVmlld0hlaWdodCArICJweCIpOwogICAg
ICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLXZpZXctaGVp
Z2h0IiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdodCArICJweCIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tY3B1LXVzYWdlLWluZGlj
YXRvci12aWV3LWhlaWdodCIsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JWaWV3SGVpZ2h0ICsg
InB4Iik7CiAKICAgICAgICAgbGV0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgY29udGVudEVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudCIpOwpAQCAtMTk3LDYgKzIwMSwxMiBAQCBXSS5D
UFVUaW1lbGluZVZpZXcgPSBjbGFzcyBDUFVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGlu
ZVZpZXcKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NwdVVzYWdlVmlldyk7CiAgICAg
ICAgIHRoaXMuX2RldGFpbHNDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NwdVVz
YWdlVmlldy5lbGVtZW50KTsKIAorICAgICAgICB0aGlzLl9tYWluVGhyZWFkV29ya0luZGljYXRv
clZpZXcgPSBuZXcgV0kuQ1BVVXNhZ2VJbmRpY2F0b3JWaWV3OworICAgICAgICB0aGlzLmFkZFN1
YnZpZXcodGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3KTsKKyAgICAgICAgdGhpcy5f
ZGV0YWlsc0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFpblRocmVhZFdvcmtJ
bmRpY2F0b3JWaWV3LmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX21haW5UaHJlYWRXb3JrSW5k
aWNhdG9yVmlldy5jaGFydC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlSW5kaWNhdG9yQ2xpY2suYmluZCh0aGlzKSk7CisKICAgICAgICAgbGV0IHRocmVhZHNT
dWJ0aXRsZUVsZW1lbnQgPSBkZXRhaWxzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIHRocmVhZHNTdWJ0aXRsZUVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3VidGl0bGUiLCAidGhyZWFkcyIpOwogICAgICAgICB0aHJlYWRz
U3VidGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIlRocmVhZHMiKTsKQEAg
LTUxNSw2ICs1MjUsMTQgQEAgV0kuQ1BVVGltZWxpbmVWaWV3ID0gY2xhc3MgQ1BVVGltZWxpbmVW
aWV3IGV4dGVuZHMgV0kuVGltZWxpbmVWaWV3CiAKICAgICAgICAgICAgIGxheW91dFZpZXcod29y
a2VyVmlldywgInVzYWdlIiwgQ1BVVGltZWxpbmVWaWV3LnRocmVhZENQVVVzYWdlVmlld0hlaWdo
dCwge2RhdGFQb2ludHM6IHdvcmtlckRhdGEuZGF0YVBvaW50cywgbWluOiB3b3JrZXJEYXRhLm1p
biwgbWF4OiB3b3JrZXJEYXRhLm1heCwgYXZlcmFnZTogd29ya2VyRGF0YS5hdmVyYWdlfSk7CiAg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB4U2NhbGVJbmRpY2F0b3JSYW5nZShzYW1wbGVJ
bmRleCkgeworICAgICAgICAgICAgcmV0dXJuIChzYW1wbGVJbmRleCAvIDEwMDApIC8gc2Vjb25k
c1BlclBpeGVsOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGdyYXBoV2lkdGggPSAoZ3JhcGhF
bmRUaW1lIC0gZ3JhcGhTdGFydFRpbWUpIC8gc2Vjb25kc1BlclBpeGVsOworICAgICAgICBsZXQg
c2l6ZSA9IG5ldyBXSS5TaXplKGdyYXBoV2lkdGgsIENQVVRpbWVsaW5lVmlldy5pbmRpY2F0b3JW
aWV3SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fbWFpblRocmVhZFdvcmtJbmRpY2F0b3JWaWV3LnVw
ZGF0ZUNoYXJ0KHNhbXBsaW5nRGF0YS5zYW1wbGVzLCBzaXplLCB2aXNpYmxlRW5kVGltZSwgeFNj
YWxlSW5kaWNhdG9yUmFuZ2UpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTY4Miw2ICs3
MDAsMTE1IEBAIFdJLkNQVVRpbWVsaW5lVmlldyA9IGNsYXNzIENQVVRpbWVsaW5lVmlldyBleHRl
bmRzIFdJLlRpbWVsaW5lVmlldwogICAgICAgICBpZiAoY3B1VGltZWxpbmVSZWNvcmQuc3RhcnRU
aW1lID49IHRoaXMuc3RhcnRUaW1lICYmIGNwdVRpbWVsaW5lUmVjb3JkLmVuZFRpbWUgPD0gdGhp
cy5lbmRUaW1lKQogICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KKworICAg
IF9ncmFwaFBvc2l0aW9uRm9yTW91c2VFdmVudChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBz
dmdFbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTG9jYWxOYW1l
KCJzdmciKTsKKyAgICAgICAgaWYgKCFzdmdFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIE5h
TjsKKworICAgICAgICBsZXQgc3ZnUmVjdCA9IHN2Z0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CisgICAgICAgIGxldCBwb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gc3ZnUmVjdC5sZWZ0
OworCisgICAgICAgIGlmIChXSS5yZXNvbHZlZExheW91dERpcmVjdGlvbigpID09PSBXSS5MYXlv
dXREaXJlY3Rpb24uUlRMKQorICAgICAgICAgICAgcmV0dXJuIHN2Z1JlY3Qud2lkdGggLSBwb3Np
dGlvbjsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgIH0KKworICAgIF9oYW5kbGVJbmRp
Y2F0b3JDbGljayhldmVudCkKKyAgICB7CisgICAgICAgIGxldCBjbGlja1Bvc2l0aW9uID0gdGhp
cy5fZ3JhcGhQb3NpdGlvbkZvck1vdXNlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoaXNOYU4o
Y2xpY2tQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHNlY29u
ZHNQZXJQaXhlbCA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuc2Vjb25kc1BlclBpeGVsOworICAgICAg
ICBsZXQgZ3JhcGhDbGlja1RpbWUgPSBjbGlja1Bvc2l0aW9uICogc2Vjb25kc1BlclBpeGVsOwor
ICAgICAgICBsZXQgZ3JhcGhTdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKKworICAgICAgICBs
ZXQgY2xpY2tTdGFydFRpbWUgPSBncmFwaFN0YXJ0VGltZSArIGdyYXBoQ2xpY2tUaW1lOworICAg
ICAgICBsZXQgY2xpY2tFbmRUaW1lID0gY2xpY2tTdGFydFRpbWUgKyBzZWNvbmRzUGVyUGl4ZWw7
CisKKyAgICAgICAgLy8gVHJ5IGF0IHRoZSBleGFjdCBjbGlja2VkIHBpeGVsLgorICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0LmxvY2FsTmFtZSA9PT0gInJlY3QiKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fYXR0ZW1wdFNlbGVjdEluZGljYXRhdG9yVGltZWxpbmVSZWNvcmQoY2xpY2tTdGFydFRp
bWUsIGNsaWNrRW5kVGltZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZmFsc2UsICJJZiB0aGUgdXNlciBjbGlja2VkIG9uIGEgcmVjdCB0aGVy
ZSBzaG91bGQgaGF2ZSBiZWVuIGEgcmVjb3JkIGluIHRoaXMgcGl4ZWwgcmFuZ2UiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNwaXJhbCBvdXQgNCBwaXhlbHMgZWFjaCBzaWRlIHRvIHRyeSBh
bmQgc2VsZWN0IGEgbmVhcmJ5IHJlY29yZC4KKyAgICAgICAgZm9yIChsZXQgaSA9IDEsIGRlbHRh
ID0gMDsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgIGRlbHRhICs9IHNlY29uZHNQZXJQaXhl
bDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hdHRlbXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGlu
ZVJlY29yZChjbGlja1N0YXJ0VGltZSAtIGRlbHRhLCBjbGlja1N0YXJ0VGltZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRTZWxlY3RJbmRp
Y2F0YXRvclRpbWVsaW5lUmVjb3JkKGNsaWNrRW5kVGltZSwgY2xpY2tFbmRUaW1lICsgZGVsdGEp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9hdHRl
bXB0U2VsZWN0SW5kaWNhdGF0b3JUaW1lbGluZVJlY29yZChzdGFydFRpbWUsIGVuZFRpbWUpCisg
ICAgeworICAgICAgICBsZXQgbGF5b3V0VGltZWxpbmUgPSB0aGlzLl9yZWNvcmRpbmcudGltZWxp
bmVGb3JSZWNvcmRUeXBlKFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0KTsKKyAgICAgICAg
bGV0IGxheW91dFJlY29yZHMgPSBsYXlvdXRUaW1lbGluZSA/IGxheW91dFRpbWVsaW5lLnJlY29y
ZHNPdmVybGFwcGluZ1RpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUpIDogW107CisgICAgICAg
IGxheW91dFJlY29yZHMgPSBsYXlvdXRSZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PiB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHJlY29yZC5ldmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV0ku
TGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgorICAgICAg
ICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRm9yY2VkTGF5b3V0
OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuTGF5
b3V0OgorICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
UGFpbnQ6CisgICAgICAgICAgICBjYXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5Db21wb3NpdGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBj
YXNlIFdJLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5bGVzOgor
ICAgICAgICAgICAgY2FzZSBXSS5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxp
ZGF0ZUxheW91dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBMYXlvdXRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGUiLCByZWNvcmQuZXZlbnRUeXBlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAg
IGlmIChsYXlvdXRSZWNvcmRzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0VGlt
ZWxpbmVSZWNvcmQobGF5b3V0UmVjb3Jkc1swXSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGxldCBzY3JpcHRUaW1lbGluZSA9IHRoaXMuX3JlY29yZGlu
Zy50aW1lbGluZUZvclJlY29yZFR5cGUoV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOwor
ICAgICAgICBsZXQgc2NyaXB0UmVjb3JkcyA9IHNjcmlwdFRpbWVsaW5lID8gc2NyaXB0VGltZWxp
bmUucmVjb3Jkc092ZXJsYXBwaW5nVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSkgOiBbXTsK
KyAgICAgICAgc2NyaXB0UmVjb3JkcyA9IHNjcmlwdFJlY29yZHMuZmlsdGVyKChyZWNvcmQpID0+
IHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVjb3JkLmV2ZW50VHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuU2NyaXB0RXZhbHVhdGVkOgor
ICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQVBJU2Ny
aXB0RXZhbHVhdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuT2JzZXJ2ZXJDYWxsYmFjazoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZDoKKyAgICAgICAgICAgIGNhc2Ug
V0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLk1pY3JvdGFza0Rpc3BhdGNoZWQ6Cisg
ICAgICAgICAgICBjYXNlIFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZp
cmVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
QW5pbWF0aW9uRnJhbWVGaXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZy
YW1lUmVxdWVzdGVkOgorICAgICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuQW5pbWF0aW9uRnJhbWVDYW5jZWxlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2Ny
aXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbGVkOgorICAgICAgICAgICAg
Y2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJSZW1vdmVkOgorICAg
ICAgICAgICAgY2FzZSBXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUHJvYmVTYW1w
bGVSZWNvcmRlZDoKKyAgICAgICAgICAgIGNhc2UgV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLkNvbnNvbGVQcm9maWxlUmVjb3JkZWQ6CisgICAgICAgICAgICBjYXNlIFdJLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5HYXJiYWdlQ29sbGVjdGVkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSIs
IHJlY29yZC5ldmVudFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHNjcmlwdFJlY29yZHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RUaW1lbGluZVJlY29yZChzY3JpcHRSZWNvcmRz
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIF9zZWxlY3RUaW1lbGluZVJlY29yZChyZWNvcmQpCisg
ICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UaW1lbGluZVZp
ZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHtyZWNvcmR9KTsKKyAgICB9CiB9OwogCiAvLyBO
T1RFOiBVSSBmb2xsb3dzIHRoaXMgb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1BVVXNhZ2VJbmRpY2F0b3JW
aWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTFlNzhmOWY3
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuY3NzCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3IHsKKyAgICBkaXNwbGF5OiBmbGV4Owor
ICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogY2FsYyh2YXIoLS1jcHUtdXNhZ2UtaW5kaWNh
dG9yLXZpZXctaGVpZ2h0KSArIDFweCk7IC8qIDEgZm9yIGJvcmRlci1ib3R0b20gKi8KKyAgICBi
b3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKK30KKworLmNwdS11
c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5kZXRhaWxzIHsKKyAgICBmbGV4LXNocmluazogMDsKKyAg
ICB3aWR0aDogMTUwcHg7CisgICAgLXdlYmtpdC1wYWRkaW5nLXN0YXJ0OiAxNXB4OworICAgIC13
ZWJraXQtYm9yZGVyLWVuZDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Cit9CisKK2Jv
ZHlbZGlyPXJ0bF0gLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCB7CisgICAgdHJh
bnNmb3JtOiBzY2FsZVgoLTEpOworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12aWV3ID4gLmdy
YXBoIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgei1pbmRleDogY2FsYyh2YXIoLS10
aW1lbGluZS1tYXJrZXItei1pbmRleCkgKyAxKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIo
LS1iYWNrZ3JvdW5kLWNvbG9yLWNvbnRlbnQpOworfQorCisuY3B1LXVzYWdlLWluZGljYXRvci12
aWV3ID4gLmdyYXBoLAorLmNwdS11c2FnZS1pbmRpY2F0b3ItdmlldyA+IC5ncmFwaCA+IC5yYW5n
ZS1jaGFydCwKKy5jcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXcgPiAuZ3JhcGggPiAucmFuZ2UtY2hh
cnQgPiBzdmcgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NQVVVzYWdl
SW5kaWNhdG9yVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NQVVVzYWdlSW5kaWNhdG9yVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMjcwNWJkNDM5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DUFVVc2FnZUluZGljYXRvclZpZXcuanMKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5DUFVVc2FnZUluZGljYXRvclZpZXcgPSBj
bGFzcyBDUFVVc2FnZUluZGljYXRvclZpZXcgZXh0ZW5kcyBXSS5WaWV3Cit7CisgICAgY29uc3Ry
dWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjcHUtdXNhZ2UtaW5kaWNhdG9yLXZpZXciKTsKKworICAg
ICAgICB0aGlzLl9kZXRhaWxzRWxlbWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2RldGFpbHNFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImRldGFpbHMiKTsKKworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQg
PSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZ3JhcGgiKTsKKwor
ICAgICAgICB0aGlzLl9jaGFydCA9IG5ldyBXSS5SYW5nZUNoYXJ0OworICAgICAgICB0aGlzLmFk
ZFN1YnZpZXcodGhpcy5fY2hhcnQpOworICAgICAgICB0aGlzLl9ncmFwaEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY2hhcnQuZWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAg
ICBnZXQgY2hhcnQoKSB7IHJldHVybiB0aGlzLl9jaGFydDsgfQorCisgICAgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fY2hhcnQuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fY2hhcnQubmVl
ZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICB1cGRhdGVDaGFydChzYW1wbGVzLCBzaXplLCB2aXNp
YmxlRW5kVGltZSwgeFNjYWxlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2l6ZSBp
bnN0YW5jZW9mIFdJLlNpemUpOworCisgICAgICAgIHRoaXMuX2NoYXJ0LmNsZWFyKCk7CisgICAg
ICAgIHRoaXMuX2NoYXJ0LnNpemUgPSBzaXplOworICAgICAgICB0aGlzLl9jaGFydC5uZWVkc0xh
eW91dCgpOworCisgICAgICAgIGlmICghc2FtcGxlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gQ29hbGVzY2UgcmFuZ2VzIG9mIHNhbXBsZXMuCisgICAgICAgIGxl
dCByYW5nZXMgPSBbXTsKKyAgICAgICAgbGV0IGN1cnJlbnRSYW5nZSA9IG51bGw7CisgICAgICAg
IGxldCBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzYW1wbGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBCYWNrIHRvIGlk
bGUsIGNsb3NlIGFueSBjdXJyZW50IGNodW5rLgorICAgICAgICAgICAgbGV0IHR5cGUgPSBzYW1w
bGVzW2ldOworICAgICAgICAgICAgaWYgKCF0eXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRSYW5nZSkgeworICAgICAgICAgICAgICAgICAgICByYW5nZXMucHVzaChjdXJyZW50UmFu
Z2UpOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSBudWxsOworICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIEV4cGFuZCBleGlzdGluZyBjaHVuay4KKyAgICAgICAgICAgIGlmICh0eXBlID09PSBj
dXJyZW50U2FtcGxlVHlwZSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRSYW5nZS5lbmRJbmRl
eCA9IGk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIElmIHR5cGUgY2hhbmdlZCwgY2xvc2UgY3VycmVudCBjaHVuay4KKyAgICAgICAg
ICAgIGlmIChjdXJyZW50U2FtcGxlVHlwZSkgeworICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNo
KGN1cnJlbnRSYW5nZSk7CisgICAgICAgICAgICAgICAgY3VycmVudFJhbmdlID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICBjdXJyZW50U2FtcGxlVHlwZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gU3RhcnQgYSBuZXcgY2h1bmsuCisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghY3VycmVudFJhbmdlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFj
dXJyZW50U2FtcGxlVHlwZSk7CisgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSB7dHlwZSwgc3Rh
cnRJbmRleDogaSwgZW5kSW5kZXg6IGl9OworICAgICAgICAgICAgY3VycmVudFNhbXBsZVR5cGUg
PSB0eXBlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQge3R5cGUsIHN0YXJ0SW5kZXgs
IGVuZEluZGV4fSBvZiByYW5nZXMpIHsKKyAgICAgICAgICAgIGxldCBzdGFydFggPSB4U2NhbGUo
c3RhcnRJbmRleCk7CisgICAgICAgICAgICBsZXQgZW5kWCA9IHhTY2FsZShlbmRJbmRleCArIDEp
OworICAgICAgICAgICAgbGV0IHdpZHRoID0gZW5kWCAtIHN0YXJ0WDsKKyAgICAgICAgICAgIHRo
aXMuX2NoYXJ0LmFkZFJhbmdlKHN0YXJ0WCwgd2lkdGgsIHR5cGUpOworICAgICAgICB9CisgICAg
fQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1JhbmdlQ2hhcnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SYW5nZUNoYXJ0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5iYzg3YmQzMjdmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1JhbmdlQ2hhcnQuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBSYW5nZUNoYXJ0IGNyZWF0ZXMgYSBjaGFydCBmaWxsZWQgd2l0aCByYW5nZXMg
b2YgZXF1YWwgaGVpZ2h0LgorLy8KKy8vICAgICBbICAgfC0tLS0tLXwtLS0tLS18ICAgfC0tLS0t
LXwgICAgICAgICAgICAgICAgIF0KKy8vCisvLyBJbml0aWFsaXplIHRoZSBjaGFydCB3aXRoIGEg
c2l6ZS4gWW91IGNhbiB0aGVuIGluY2x1ZGUgYSBuZXcgcmFuZ2UKKy8vIGluIHRoZSBjaGFydCBi
eSBwcm92aWRpbmcgYW4gKHgsIHcsIGNsYXNzKSB2aWEgYGFkZFJhbmdlYC4KKy8vCisvLyBTVkc6
CisvLworLy8gLSBUaGVyZSBpcyBhIHNpbmdsZSByZWN0IGZvciBlYWNoIHJhbmdlLgorLy8KKy8v
ICA8ZGl2IGNsYXNzPSJyYW5nZS1jaGFydCI+CisvLyAgICAgIDxzdmcgdmlld0JveD0iMCAwIDgw
MCA3NSI+CisvLyAgICAgICAgICA8cmVjdCB3aWR0aD0iPHc+IiBoZWlnaHQ9IjEwMCUiIHRyYW5z
Zm9ybT0idHJhbnNsYXRlWCg8eD4pIiBjbGFzcz0iPGNsYXNzPiIgLz4KKy8vICAgICAgICAgIDxy
ZWN0IHdpZHRoPSI8dz4iIGhlaWdodD0iMTAwJSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGVYKDx4Piki
IGNsYXNzPSI8Y2xhc3M+IiAvPgorLy8gICAgICAgICAgLi4uCisvLyAgICAgIDwvc3ZnPgorLy8g
IDwvZGl2PgorCitXSS5SYW5nZUNoYXJ0ID0gY2xhc3MgUmFuZ2VDaGFydCBleHRlbmRzIFdJLlZp
ZXcKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyYW5nZS1jaGFydCIpOworCisgICAgICAg
IHRoaXMuX3N2Z0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlU1ZHRWxl
bWVudCgic3ZnIikpOworICAgICAgICB0aGlzLl9zdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgicHJl
c2VydmVBc3BlY3RSYXRpbyIsICJub25lIik7CisKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107
CisgICAgICAgIHRoaXMuX3NpemUgPSBudWxsOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgZ2V0IHNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7CisgICAgfQor
CisgICAgc2V0IHNpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zaXplICYmIHRo
aXMuX3NpemUuZXF1YWxzKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3NpemUgPSBzaXplOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQuc2V0QXR0cmlidXRl
KCJ2aWV3Qm94IiwgYDAgMCAke3NpemUud2lkdGh9ICR7c2l6ZS5oZWlnaHR9YCk7CisgICAgfQor
CisgICAgYWRkUmFuZ2UoeCwgd2lkdGgsIGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X3Jhbmdlcy5wdXNoKHt4LCB3aWR0aCwgY2xhc3NOYW1lfSk7CisgICAgfQorCisgICAgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmFuZ2VzID0gW107CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIubGF5b3V0KCk7CisK
KyAgICAgICAgaWYgKHRoaXMubGF5b3V0UmVhc29uID09PSBXSS5WaWV3LkxheW91dFJlYXNvbi5S
ZXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLl9zaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N2Z0VsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKworICAgICAgICBsZXQgaCA9IDA7CisgICAgICAgIGZvciAobGV0IHt4LCB3aWR0
aCwgY2xhc3NOYW1lfSBvZiB0aGlzLl9yYW5nZXMpIHsKKyAgICAgICAgICAgIGxldCByZWN0ID0g
dGhpcy5fc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChjcmVhdGVTVkdFbGVtZW50KCJyZWN0IikpOwor
ICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgd2lkdGgpOworICAgICAgICAg
ICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuc2l6ZS5oZWlnaHQpOworICAgICAg
ICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIGB0cmFuc2xhdGUoJHt4fSwgMClg
KTsKKyAgICAgICAgICAgIHJlY3QuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOworICAgICAgICB9
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
LmpzCmluZGV4IDgwZDk3ZDA4OTI1Li4yODA0YjNjYzMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCkBAIC05Niw3ICs5Niw4IEBAIFdJLlRpbWVs
aW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuCiAgICAgICAgIFdJLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRo
aXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwgdGhpcyk7CiAg
ICAgICAgIFdJLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudFZpZXcuRXZl
bnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50
Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAKLSAg
ICAgICAgV0kuVGltZWxpbmVWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVWaWV3LkV2
ZW50LlJlY29yZFdhc0ZpbHRlcmVkLCB0aGlzLl9yZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLlRpbWVsaW5lVmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlRpbWVsaW5lVmlldy5F
dmVudC5SZWNvcmRXYXNGaWx0ZXJlZCwgdGhpcy5faGFuZGxlVGltZWxpbmVWaWV3UmVjb3JkRmls
dGVyZWQsIHRoaXMpOworICAgICAgICBXSS5UaW1lbGluZVZpZXcuYWRkRXZlbnRMaXN0ZW5lcihX
SS5UaW1lbGluZVZpZXcuRXZlbnQuUmVjb3JkV2FzU2VsZWN0ZWQsIHRoaXMuX2hhbmRsZVRpbWVs
aW5lVmlld1JlY29yZFNlbGVjdGVkLCB0aGlzKTsKIAogICAgICAgICBXSS5ub3RpZmljYXRpb25z
LmFkZEV2ZW50TGlzdGVuZXIoV0kuTm90aWZpY2F0aW9uLlZpc2liaWxpdHlTdGF0ZURpZENoYW5n
ZSwgdGhpcy5faW5zcGVjdG9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTcw
MCwxNSArNzAxLDcgQEAgV0kuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFRp
bWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS4KICAgICB7CiAgICAgICAgIGxl
dCB7cmVjb3JkfSA9IGV2ZW50LmRhdGE7CiAKLSAgICAgICAgZm9yIChsZXQgdGltZWxpbmVWaWV3
IG9mIHRoaXMuX3RpbWVsaW5lVmlld01hcC52YWx1ZXMoKSkgewotICAgICAgICAgICAgbGV0IHJl
Y29yZE1hdGNoZXNUaW1lbGluZSA9IHJlY29yZCAmJiB0aW1lbGluZVZpZXcucmVwcmVzZW50ZWRP
YmplY3QudHlwZSA9PT0gcmVjb3JkLnR5cGU7Ci0KLSAgICAgICAgICAgIGlmIChyZWNvcmRNYXRj
aGVzVGltZWxpbmUgJiYgdGltZWxpbmVWaWV3ICE9PSB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcp
Ci0gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGltZWxp
bmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICAgICAgaWYgKCFyZWNvcmQgfHwg
cmVjb3JkTWF0Y2hlc1RpbWVsaW5lKQotICAgICAgICAgICAgICAgIHRpbWVsaW5lVmlldy5zZWxl
Y3RSZWNvcmQocmVjb3JkKTsKLSAgICAgICAgfQorICAgICAgICB0aGlzLl9zZWxlY3RSZWNvcmRJ
blRpbWVsaW5lVmlldyhyZWNvcmQpOwogICAgIH0KIAogICAgIF90aW1lbGluZVNlbGVjdGVkKCkK
QEAgLTgwNCw3ICs3OTcsNyBAQCBXSS5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xh
c3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRzIFdJLgogICAgICAgICB0aGlz
LmN1cnJlbnRUaW1lbGluZVZpZXcudXBkYXRlRmlsdGVyKHRoaXMuX2ZpbHRlckJhck5hdmlnYXRp
b25JdGVtLmZpbHRlckJhci5maWx0ZXJzKTsKICAgICB9CiAKLSAgICBfcmVjb3JkV2FzRmlsdGVy
ZWQoZXZlbnQpCisgICAgX2hhbmRsZVRpbWVsaW5lVmlld1JlY29yZEZpbHRlcmVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVW
aWV3KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODIwLDYgKzgxMywzOSBAQCBXSS5UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmll
dyBleHRlbmRzIFdJLgogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnJlY29yZFdhc0Zp
bHRlcmVkKHRpbWVsaW5lLCByZWNvcmQsIGZpbHRlcmVkKTsKICAgICB9CiAKKyAgICBfaGFuZGxl
VGltZWxpbmVWaWV3UmVjb3JkU2VsZWN0ZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQge3JlY29yZH0g
PSBldmVudC5kYXRhOworCisgICAgICAgIHRoaXMuX3NlbGVjdFJlY29yZEluVGltZWxpbmVPdmVy
dmlldyhyZWNvcmQpOworICAgICAgICB0aGlzLl9zZWxlY3RSZWNvcmRJblRpbWVsaW5lVmlldyhy
ZWNvcmQpOworICAgIH0KKworICAgIF9zZWxlY3RSZWNvcmRJblRpbWVsaW5lT3ZlcnZpZXcocmVj
b3JkKQorICAgIHsKKyAgICAgICAgbGV0IHRpbWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVs
aW5lRm9yUmVjb3JkVHlwZShyZWNvcmQudHlwZSk7CisgICAgICAgIGlmICghdGltZWxpbmUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5zZWxl
Y3RSZWNvcmQodGltZWxpbmUsIHJlY29yZCk7CisgICAgfQorCisgICAgX3NlbGVjdFJlY29yZElu
VGltZWxpbmVWaWV3KHJlY29yZCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IHRpbWVsaW5lVmll
dyBvZiB0aGlzLl90aW1lbGluZVZpZXdNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGxldCBy
ZWNvcmRNYXRjaGVzVGltZWxpbmUgPSByZWNvcmQgJiYgdGltZWxpbmVWaWV3LnJlcHJlc2VudGVk
T2JqZWN0LnR5cGUgPT09IHJlY29yZC50eXBlOworCisgICAgICAgICAgICBpZiAocmVjb3JkTWF0
Y2hlc1RpbWVsaW5lICYmIHRpbWVsaW5lVmlldyAhPT0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3
KQorICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lKHRpbWVs
aW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgICAgIGlmICghcmVjb3JkIHx8
IHJlY29yZE1hdGNoZXNUaW1lbGluZSkKKyAgICAgICAgICAgICAgICB0aW1lbGluZVZpZXcuc2Vs
ZWN0UmVjb3JkKHJlY29yZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfdXBkYXRlUHJvZ3Jl
c3NWaWV3KCkKICAgICB7CiAgICAgICAgIGxldCBpc0NhcHR1cmluZyA9IFdJLnRpbWVsaW5lTWFu
YWdlci5pc0NhcHR1cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCmluZGV4IDIzODQyZjJjMDg1Li5k
NzlkNWU4Mjk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMzM1LDUgKzMzNSw2IEBAIFdJLlRp
bWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiB9
OwogCiBXSS5UaW1lbGluZVZpZXcuRXZlbnQgPSB7Ci0gICAgUmVjb3JkV2FzRmlsdGVyZWQ6ICJy
ZWNvcmQtd2FzLWZpbHRlcmVkIgorICAgIFJlY29yZFdhc0ZpbHRlcmVkOiAicmVjb3JkLXdhcy1m
aWx0ZXJlZCIsCisgICAgUmVjb3JkV2FzU2VsZWN0ZWQ6ICJyZWNvcmQtd2FzLXNlbGVjdGVkIiwK
IH07Cg==
</data>
<flag name="review"
          id="379571"
          type_id="1"
          status="+"
          setter="hi"
    />
    <flag name="commit-queue"
          id="379572"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>