<?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>149186</bug_id>
          
          <creation_ts>2015-09-15 14:57:38 -0700</creation_ts>
          <short_desc>Web Inspector: Create View base class, refactor some core view classes</short_desc>
          <delta_ts>2015-11-03 13:57:33 -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>84889</blocked>
    
    <blocked>149190</blocked>
    
    <blocked>150741</blocked>
    
    <blocked>150703</blocked>
    
    <blocked>150729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126146</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-09-15 14:57:38 -0700</bug_when>
    <thetext>* SUMMARY
Create View/ScrollableView base classes. View objects in the Inspector frontend use a needsLayout/updateLayout/requestAnimationFrame idiom that is heavily duplicated throughout the codebase. This should be encapsulated into a View base class:

Object &lt;-- View

TimelineOverview includes logic and DOM elements (scrollbar and scroll sizer) needed to create scrolling/zooming behavior. This should be its own base class:

Object &lt;-- View &lt;-- ScrollableView

* NOTES
This issue to only covers the creation of View and ScrollableView, not the refactoring effort needed to convert our existing views.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126147</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-15 14:57:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/22709647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130751</commentid>
    <comment_count>2</comment_count>
      <attachid>262466</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-05 15:03:28 -0700</bug_when>
    <thetext>Created attachment 262466
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134043</commentid>
    <comment_count>3</comment_count>
      <attachid>263328</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-16 14:14:03 -0700</bug_when>
    <thetext>Created attachment 263328
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134072</commentid>
    <comment_count>4</comment_count>
      <attachid>263328</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-16 15:15:05 -0700</bug_when>
    <thetext>Comment on attachment 263328
[Patch] Proposed Fix

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

&gt; Source/WebInspectorUI/ChangeLog:7
&gt; +

Need to explain the change. The bugzilla comments are a good start.

&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:73
&gt; +        return new WebInspector.Point(this.x * anotherPoint.x, this.y * anotherPoint.y);

this should be Point.scale(x, y), right? Points can&apos;t be multiplied.

&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:76
&gt; +    offset(anotherPoint)

These names are not standard. Point.moveTo(Point) or translate are used elsewhere in the codebase.

&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:-98
&gt; -WebInspector.Size.ZERO_SIZE = new WebInspector.Size(0, 0);

best to just make Size.zero() a member function and return new instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134079</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-16 15:29:47 -0700</bug_when>
    <thetext>The scope of this patch has been changed to cover just the addition of View.js. Additionally, a few key view classes will be refactored to inherit from WebInspector.View:

UserInterface/Views/ContentBrowser.js
UserInterface/Views/ContentViewContainer.js
UserInterface/Views/NavigationBar.js
UserInterface/Views/TabBar.js
UserInterface/Views/TabBrowser.js
UserInterface/Views/Toolbar.js

The following global WebInspector methods (in Main.js) will also be updated to make use of the new WebInspector.View method `updateLayoutForResize`:

WebInspector._windowResized
WebInspector._tabBrowserSizeDidChange
WebInspector._quickConsoleDidResize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134254</commentid>
    <comment_count>6</comment_count>
      <attachid>263328</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-10-17 15:03:50 -0700</bug_when>
    <thetext>Comment on attachment 263328
[Patch] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:73
&gt;&gt; +        return new WebInspector.Point(this.x * anotherPoint.x, this.y * anotherPoint.y);
&gt; 
&gt; this should be Point.scale(x, y), right? Points can&apos;t be multiplied.

While I agree that points can&apos;t be multiplied, Point.scale(anotherPoint) is just a shortcut of vector scaling.  By using anotherPoint instead of x, y, and z, this just skips the matrix transformation step when scaling a vector (e.g. https://en.wikipedia.org/wiki/Scaling_(geometry)#Matrix_representation).  The end result is the same, so I think it would actually be prudent to allow for all three options: Point.scale(c), Point.scale(x, y), and Point.scale(anotherPoint)

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:76
&gt;&gt; +    offset(anotherPoint)
&gt; 
&gt; These names are not standard. Point.moveTo(Point) or translate are used elsewhere in the codebase.

I agree.  Translate would to fit here.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:34
&gt; +        this._scrollDirection = scrollDirection;

Should this have a fallback (maybe WebInspector.ScrollableView.ScrollDirection.Vertical)?

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:37
&gt; +        this._contentScaleFactor = new WebInspector.Point(1, 1);

Calling this &quot;_contentScaleFactor&quot; is a bit misleading to me as it implies a scalar quantity (single value c) by which other points are scaled.  I think something like &quot;_contentScaleOrigin&quot; may make more sense.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:38
&gt; +        this._inverseContentScaleFactor = new WebInspector.Point(1, 1);

&quot;inverse&quot; isn&apos;t really the right word to describe this (the inverse of a point (x, y) would be (y, x)).  Technically, this is the reciprocal.  I get why this is necessary, but I think it may be much easier and more readable to just compute the point reciprocal at the moment it is necessary.  See line 323.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:45
&gt; +        this._zoomFactor = 1;

From what I can tell, this only ever applies to horizontal values (x, width, etc).  Is there a reason why, in a view that can scroll both ways it wouldn&apos;t also effect the vertical values (y, height, etc)?

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:165
&gt; +        // clamp the zoom factor and force an update.

NIT: I think constrain is a better word instead of clamp.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:185
&gt; +        // clamp the zoom factor and force an update.

NIT: I think constrain is a better word instead of clamp.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:197
&gt; +        x = Math.max(this._minimumZoomFactor, Math.min(this._maximumZoomFactor, x));

I think Number.constrain(x, this._minimumZoomFactor, this._maximumZoomFactor) would work here.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:207
&gt; +        if (x)

You could use this.element.classList.toggle(&quot;debug&quot;, x).  I would also probably rename &quot;x&quot; to &quot;flag&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:229
&gt; +        const maximumContentOffsetX = Math.max(0, this._contentSize.width - visibleContentSize.width);

I think this line is unnecessary.  You are already constraining the value to &gt;0 on the next line, so you cloud just merge these two lines.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:233
&gt; +        this._contentOffset.y = Math.min(maximumContentOffsetY, this._contentOffset.y);

Use Number.constrain() like you did above.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:245
&gt; +        // Debug information: overlay scroll/zoom properties.

I think this could result in a lot of unnecessary DOM manipulation.  Instead of always having the debug element exist, you could save the debug info as
this._debugInfo = {offset: ..., scale: ..., content: ..., visible: ..., view: ..., zoom: ...}
and have two functions (this.showDebugInfo() and this.hideDebugInfo()) that add/remove the necessary DOM elements.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:323
&gt; +        let mousePositionContentOffset = mousePositionView.piecewiseProduct(this._inverseContentScaleFactor);

If you do transition to Point.scale(x,y), I would remove this._inverseContentScaleFactor and just use mousePoisitionView.scale(1 / this._contentScaleFactor.x, 1 / this._contentScaleFactor.y)

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:328
&gt; +        const delta = event.deltaY * WebInspector.ScrollableView.ScrollDeltaScale * deviceDirection;

Is it necessary to create this variable even though it&apos;s only used once?

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:333
&gt; +            const contentOffsetX = mousePositionContent.x - (mousePositionView.x / this._contentScaleFactor.x) / this._zoomFactor;

See line 328.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:32
&gt; +        this._element = element || document.createElement(&quot;div&quot;);

Am I being too paranoid, or would it be safe to add a check to make sure the typeof element is HTMLElement?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:34
&gt; +        this._element.__view = this;

I&apos;m a bit confused as to why this is necessary.  Purely for convenience?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:62
&gt; +        console.assert(!view.element.parentNode, &quot;Subview element already exists in the DOM.&quot;);

It seems to me like if any of these assertions are triggered that we should have a return.  Is there a reason that we don&apos;t?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:64
&gt; +        view._parentView = this;

Correct me if I&apos;m wrong, but this isn&apos;t a layering violation because we are dealing with two objects (this and view) which are both WebInspector.View objects?  This just looks weird to me...

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:73
&gt; +        console.assert(view.element.parentNode === this.element, &quot;Subview element should be a child of this view&apos;s element.&quot;);

Same as line 62.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:76
&gt; +        view._parentView = null;

Same as line 64.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:111
&gt; +        units = units || &quot;%&quot;;

Couldn&apos;t you use a default parameter?  Also, why is it that you&apos;re defaulting to &quot;%&quot;?  We normally use &quot;px&quot; for our defaults (e.g. the computed panel).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134378</commentid>
    <comment_count>7</comment_count>
      <attachid>263328</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-18 16:09:48 -0700</bug_when>
    <thetext>Comment on attachment 263328
[Patch] Proposed Fix

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

Marking this patch r- to get it out of review queue. I know you are working on a new version, looking forward to seeing it.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:37
&gt;&gt; +        this._contentScaleFactor = new WebInspector.Point(1, 1);
&gt; 
&gt; Calling this &quot;_contentScaleFactor&quot; is a bit misleading to me as it implies a scalar quantity (single value c) by which other points are scaled.  I think something like &quot;_contentScaleOrigin&quot; may make more sense.

I&apos;m not sure what scale factor means here, or why we would need separate x and y scale factors. When I read &apos;scale&apos;, I&apos;m imagining d3&apos;s scales (https://github.com/mbostock/d3/wiki/Scales) which are functions that map input domains to output ranges.

In any case, I wouldn&apos;t use a Point here. If you want to support multiple scales (linear, log, etc) then the change should accompany a consumer of the API.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:38
&gt;&gt; +        this._inverseContentScaleFactor = new WebInspector.Point(1, 1);
&gt; 
&gt; &quot;inverse&quot; isn&apos;t really the right word to describe this (the inverse of a point (x, y) would be (y, x)).  Technically, this is the reciprocal.  I get why this is necessary, but I think it may be much easier and more readable to just compute the point reciprocal at the moment it is necessary.  See line 323.

I would make these getters, if it is really used in more than 1-2 places.

&gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:43
&gt; +        this._zoomDirection = zoomDirection || WebInspector.ScrollableView.ZoomDirection.None;
&gt; +        this._minimumZoomFactor = 0.1;

Not sure what zoomDirection is supposed to do. The only options are None and Horizontal. Maybe it should be a boolean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134666</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-19 12:58:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 263328 [details]
&gt; [Patch] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263328&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:73
&gt; &gt;&gt; +        return new WebInspector.Point(this.x * anotherPoint.x, this.y * anotherPoint.y);
&gt; &gt; 
&gt; &gt; this should be Point.scale(x, y), right? Points can&apos;t be multiplied.
&gt; 
&gt; While I agree that points can&apos;t be multiplied, Point.scale(anotherPoint) is
&gt; just a shortcut of vector scaling.  By using anotherPoint instead of x, y,
&gt; and z, this just skips the matrix transformation step when scaling a vector
&gt; (e.g.
&gt; https://en.wikipedia.org/wiki/Scaling_(geometry)#Matrix_representation). 
&gt; The end result is the same, so I think it would actually be prudent to allow
&gt; for all three options: Point.scale(c), Point.scale(x, y), and
&gt; Point.scale(anotherPoint)

Point.scale is a much better name, and I agree an overload for passing a Point is useful. While it&apos;s true there isn&apos;t geometric interpretation of point multiplication, piecewise multiplication of vectors is a common operation in computer graphics (often using the notation p ⊗ q), especially in lighting and shading equations (see Real Time Rendering, by Adenine-Moller and Haines). That said the class is Point, not Vector, and it only makes sense to scale points on the plane.

&gt; 
&gt; &gt;&gt; Source/WebInspectorUI/UserInterface/Models/Geometry.js:76
&gt; &gt;&gt; +    offset(anotherPoint)
&gt; &gt; 
&gt; &gt; These names are not standard. Point.moveTo(Point) or translate are used elsewhere in the codebase.
&gt; 
&gt; I agree.  Translate would to fit here.

Agreed.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:34
&gt; &gt; +        this._scrollDirection = scrollDirection;
&gt; 
&gt; Should this have a fallback (maybe
&gt; WebInspector.ScrollableView.ScrollDirection.Vertical)?
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:37
&gt; &gt; +        this._contentScaleFactor = new WebInspector.Point(1, 1);
&gt; 
&gt; Calling this &quot;_contentScaleFactor&quot; is a bit misleading to me as it implies a
&gt; scalar quantity (single value c) by which other points are scaled.  I think
&gt; something like &quot;_contentScaleOrigin&quot; may make more sense.

Maybe viewTransform or viewScale would be better. This tuple defines the scale from world (content) space to view space.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:38
&gt; &gt; +        this._inverseContentScaleFactor = new WebInspector.Point(1, 1);
&gt; 
&gt; &quot;inverse&quot; isn&apos;t really the right word to describe this (the inverse of a
&gt; point (x, y) would be (y, x)).  Technically, this is the reciprocal.  I get
&gt; why this is necessary, but I think it may be much easier and more readable
&gt; to just compute the point reciprocal at the moment it is necessary.  See
&gt; line 323.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:45
&gt; &gt; +        this._zoomFactor = 1;
&gt; 
&gt; From what I can tell, this only ever applies to horizontal values (x, width,
&gt; etc).  Is there a reason why, in a view that can scroll both ways it
&gt; wouldn&apos;t also effect the vertical values (y, height, etc)?

It all depends on the application. For flame charts we intend to scroll in both directions, but only scale on the horizontal axis. We currently use zooming (horizontal) in the TimelineOverview, which only scrolls horizontally. There are no use cases yet for zooming on the y-axis.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:165
&gt; &gt; +        // clamp the zoom factor and force an update.
&gt; 
&gt; NIT: I think constrain is a better word instead of clamp.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:185
&gt; &gt; +        // clamp the zoom factor and force an update.
&gt; 
&gt; NIT: I think constrain is a better word instead of clamp.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:197
&gt; &gt; +        x = Math.max(this._minimumZoomFactor, Math.min(this._maximumZoomFactor, x));
&gt; 
&gt; I think Number.constrain(x, this._minimumZoomFactor,
&gt; this._maximumZoomFactor) would work here.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:207
&gt; &gt; +        if (x)
&gt; 
&gt; You could use this.element.classList.toggle(&quot;debug&quot;, x).  I would also
&gt; probably rename &quot;x&quot; to &quot;flag&quot;
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:229
&gt; &gt; +        const maximumContentOffsetX = Math.max(0, this._contentSize.width - visibleContentSize.width);
&gt; 
&gt; I think this line is unnecessary.  You are already constraining the value to
&gt; &gt;0 on the next line, so you cloud just merge these two lines.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:233
&gt; &gt; +        this._contentOffset.y = Math.min(maximumContentOffsetY, this._contentOffset.y);
&gt; 
&gt; Use Number.constrain() like you did above.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:245
&gt; &gt; +        // Debug information: overlay scroll/zoom properties.
&gt; 
&gt; I think this could result in a lot of unnecessary DOM manipulation.  Instead
&gt; of always having the debug element exist, you could save the debug info as
&gt; this._debugInfo = {offset: ..., scale: ..., content: ..., visible: ...,
&gt; view: ..., zoom: ...}
&gt; and have two functions (this.showDebugInfo() and this.hideDebugInfo()) that
&gt; add/remove the necessary DOM elements.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:323
&gt; &gt; +        let mousePositionContentOffset = mousePositionView.piecewiseProduct(this._inverseContentScaleFactor);
&gt; 
&gt; If you do transition to Point.scale(x,y), I would remove
&gt; this._inverseContentScaleFactor and just use mousePoisitionView.scale(1 /
&gt; this._contentScaleFactor.x, 1 / this._contentScaleFactor.y)
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:328
&gt; &gt; +        const delta = event.deltaY * WebInspector.ScrollableView.ScrollDeltaScale * deviceDirection;
&gt; 
&gt; Is it necessary to create this variable even though it&apos;s only used once?
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ScrollableView.js:333
&gt; &gt; +            const contentOffsetX = mousePositionContent.x - (mousePositionView.x / this._contentScaleFactor.x) / this._zoomFactor;
&gt; 
&gt; See line 328.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:32
&gt; &gt; +        this._element = element || document.createElement(&quot;div&quot;);
&gt; 
&gt; Am I being too paranoid, or would it be safe to add a check to make sure the
&gt; typeof element is HTMLElement?

We don&apos;t typically make these types of checks on elements.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:34
&gt; &gt; +        this._element.__view = this;
&gt; 
&gt; I&apos;m a bit confused as to why this is necessary.  Purely for convenience?

This is an addition Joe and I discussed, to aid in inspecting the Inspector. It allows, for example, quick access to the view object associated with a DOM element logged to the console:

$1.__view

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:62
&gt; &gt; +        console.assert(!view.element.parentNode, &quot;Subview element already exists in the DOM.&quot;);
&gt; 
&gt; It seems to me like if any of these assertions are triggered that we should
&gt; have a return.  Is there a reason that we don&apos;t?

Our defensive programming style is a little murky. In some places we return if a sanity check fails, but recently I&apos;ve seen a trend toward omitting the return.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:64
&gt; &gt; +        view._parentView = this;
&gt; 
&gt; Correct me if I&apos;m wrong, but this isn&apos;t a layering violation because we are
&gt; dealing with two objects (this and view) which are both WebInspector.View
&gt; objects?  This just looks weird to me...

I&apos;m not sure what both objects being WebInspector.Views has to do with it. Do you mean that it&apos;s a layering violation because one is accessing (and mutating) private data of the other? Private data is accessible to objects of the same class in languages such as C++, so I figured it was acceptable. Let me know if this violates established JS best practices.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:73
&gt; &gt; +        console.assert(view.element.parentNode === this.element, &quot;Subview element should be a child of this view&apos;s element.&quot;);
&gt; 
&gt; Same as line 62.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:76
&gt; &gt; +        view._parentView = null;
&gt; 
&gt; Same as line 64.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:111
&gt; &gt; +        units = units || &quot;%&quot;;
&gt; 
&gt; Couldn&apos;t you use a default parameter?  Also, why is it that you&apos;re
&gt; defaulting to &quot;%&quot;?  We normally use &quot;px&quot; for our defaults (e.g. the computed
&gt; panel).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134668</commentid>
    <comment_count>9</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-10-19 13:16:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:34
&gt; &gt; &gt; +        this._element.__view = this;
&gt; &gt; 
&gt; &gt; I&apos;m a bit confused as to why this is necessary.  Purely for convenience?
&gt; 
&gt; This is an addition Joe and I discussed, to aid in inspecting the Inspector.
&gt; It allows, for example, quick access to the view object associated with a
&gt; DOM element logged to the console:
&gt; 
&gt; $1.__view

I like this idea.

&gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:64
&gt; &gt; &gt; +        view._parentView = this;
&gt; &gt; 
&gt; &gt; Correct me if I&apos;m wrong, but this isn&apos;t a layering violation because we are
&gt; &gt; dealing with two objects (this and view) which are both WebInspector.View
&gt; &gt; objects?  This just looks weird to me...
&gt; 
&gt; I&apos;m not sure what both objects being WebInspector.Views has to do with it.
&gt; Do you mean that it&apos;s a layering violation because one is accessing (and
&gt; mutating) private data of the other? Private data is accessible to objects
&gt; of the same class in languages such as C++, so I figured it was acceptable.
&gt; Let me know if this violates established JS best practices.

Ah ok yeah if we are following C++ then its fine.  I was just unsure of how we deal with this in JS.  Just a thought, that&apos;s all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134674</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-19 13:31:23 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:34
&gt; &gt; &gt; &gt; +        this._element.__view = this;
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m a bit confused as to why this is necessary.  Purely for convenience?
&gt; &gt; 
&gt; &gt; This is an addition Joe and I discussed, to aid in inspecting the Inspector.
&gt; &gt; It allows, for example, quick access to the view object associated with a
&gt; &gt; DOM element logged to the console:
&gt; &gt; 
&gt; &gt; $1.__view
&gt; 
&gt; I like this idea.
&gt; 
&gt; &gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:64
&gt; &gt; &gt; &gt; +        view._parentView = this;
&gt; &gt; &gt; 
&gt; &gt; &gt; Correct me if I&apos;m wrong, but this isn&apos;t a layering violation because we are
&gt; &gt; &gt; dealing with two objects (this and view) which are both WebInspector.View
&gt; &gt; &gt; objects?  This just looks weird to me...
&gt; &gt; 
&gt; &gt; I&apos;m not sure what both objects being WebInspector.Views has to do with it.
&gt; &gt; Do you mean that it&apos;s a layering violation because one is accessing (and
&gt; &gt; mutating) private data of the other? Private data is accessible to objects
&gt; &gt; of the same class in languages such as C++, so I figured it was acceptable.
&gt; &gt; Let me know if this violates established JS best practices.
&gt; 
&gt; Ah ok yeah if we are following C++ then its fine.  I was just unsure of how
&gt; we deal with this in JS.  Just a thought, that&apos;s all.

We aren&apos;t following C++, I just used the precedent in that venerable language to inform my choice. We access private data in a few places in the Inspector (although it&apos;s relatively uncommon), and even with objects of unrelated types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135096</commentid>
    <comment_count>11</comment_count>
      <attachid>263649</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-20 19:07:45 -0700</bug_when>
    <thetext>Created attachment 263649
[Patch] WIP - has issues

Almost there, a few issues with sidebar panels need to be resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135127</commentid>
    <comment_count>12</comment_count>
      <attachid>263649</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-10-20 22:21:00 -0700</bug_when>
    <thetext>Comment on attachment 263649
[Patch] WIP - has issues

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

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:92
&gt; +        units = units || &quot;%&quot;;

You could make this a default parameter.  Also, why &quot;%&quot; as the fallback instead of &quot;px&quot; (we use &quot;px&quot; for the computed panel)?

Also, in Source/WebInspectorUI/UserInterface/Views/TabBar.js on lines 137, 148, 247, 278, 360, 508, 519, and 628, you could merge the &quot;classList.add&quot; and &quot;classList.remove&quot; calls into one single line (unless there is some reason not to, like a layout).  Lastly, there were a few places of this (pretty much every time you call &quot;classList.contains&quot; in WebInspector.NavigationBar and WebInspector.TabBar), but we are trying to move away from keeping the state of objects in the DOM (according to Brian), so the state could be saved in a variable.  This could be handled in a different patch, but I just wanted to bring it to your attention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135292</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-21 11:19:38 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 263649 [details]
&gt; [Patch] WIP - has issues
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263649&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:92
&gt; &gt; +        units = units || &quot;%&quot;;
&gt; 
&gt; You could make this a default parameter.  Also, why &quot;%&quot; as the fallback
&gt; instead of &quot;px&quot; (we use &quot;px&quot; for the computed panel)?

I&apos;ll probably remove this from the next version of this patch. It&apos;s not uncommon in the UI to specify the size and position of child elements as a percentage of their parent element&apos;s width/height. To reduce duplication of this pattern it would be good to break out these type of utility functions, but it can wait.

&gt; Also, in Source/WebInspectorUI/UserInterface/Views/TabBar.js on lines 137,
&gt; 148, 247, 278, 360, 508, 519, and 628, you could merge the &quot;classList.add&quot;
&gt; and &quot;classList.remove&quot; calls into one single line (unless there is some
&gt; reason not to, like a layout).  Lastly, there were a few places of this
&gt; (pretty much every time you call &quot;classList.contains&quot; in
&gt; WebInspector.NavigationBar and WebInspector.TabBar), but we are trying to
&gt; move away from keeping the state of objects in the DOM (according to Brian),
&gt; so the state could be saved in a variable.  This could be handled in a
&gt; different patch, but I just wanted to bring it to your attention.

While I agree, it isn&apos;t relevant here. The scope of this patch is limited to just the refactoring needed to get these view classes using the new View base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135333</commentid>
    <comment_count>14</comment_count>
      <attachid>263649</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-10-21 12:38:02 -0700</bug_when>
    <thetext>Comment on attachment 263649
[Patch] WIP - has issues

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

This is looking really good.

&gt; Source/WebInspectorUI/UserInterface/Views/ConsolePrompt.js:125
&gt; +        super.updateLayout();

Should super.updateLayout() be called at the end? In general the parent should update before the subviews. In this case (and in most cases) order isn&apos;t critical. But I think we should flip all the super calls to be safe.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:47
&gt; +        return this._subviews.slice();

I don&apos;t think we need to make a copy here. We don&apos;t typically do that and we trust clients to not mutate the arrays from getters.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:78
&gt; +        // Implemented by subclasses.

This comment should be first based on the comment above that subclasses should call super.updateLayout() last.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:90
&gt; +    updateElementPosition(element, value, propertyName, units)

Who uses this — nothing in this patch. Is it really needed? I think view subclasses can do this themselves if needed and it isn&apos;t common enough for the base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135341</commentid>
    <comment_count>15</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-21 12:52:57 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 263649 [details]
&gt; [Patch] WIP - has issues
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263649&amp;action=review
&gt; 
&gt; This is looking really good.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ConsolePrompt.js:125
&gt; &gt; +        super.updateLayout();
&gt; 
&gt; Should super.updateLayout() be called at the end? In general the parent
&gt; should update before the subviews. In this case (and in most cases) order
&gt; isn&apos;t critical. But I think we should flip all the super calls to be safe.

In most cases order doesn&apos;t matter, and I&apos;m not aware of any places where child views *must* be updated before the parent. However, there are places where the parent view needs to set state on its child views before they are updated (see TimelineOverview). So I agree that this should be switched.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:47
&gt; &gt; +        return this._subviews.slice();
&gt; 
&gt; I don&apos;t think we need to make a copy here. We don&apos;t typically do that and we
&gt; trust clients to not mutate the arrays from getters.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:78
&gt; &gt; +        // Implemented by subclasses.
&gt; 
&gt; This comment should be first based on the comment above that subclasses
&gt; should call super.updateLayout() last.

Agreed.
 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:90
&gt; &gt; +    updateElementPosition(element, value, propertyName, units)
&gt; 
&gt; Who uses this — nothing in this patch. Is it really needed? I think view
&gt; subclasses can do this themselves if needed and it isn&apos;t common enough for
&gt; the base class.

I&apos;m going to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135860</commentid>
    <comment_count>16</comment_count>
      <attachid>263869</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-22 14:55:35 -0700</bug_when>
    <thetext>Created attachment 263869
[Patch] WIP - introduces perf issue

Patch creates a *very* noticable performance impact on UI updates during timeline recording. Currently investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137198</commentid>
    <comment_count>17</comment_count>
      <attachid>263869</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-28 11:14:11 -0700</bug_when>
    <thetext>Comment on attachment 263869
[Patch] WIP - introduces perf issue

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

What is the status of the performance regressions? (Not specific to this patch, but it is worrying that we don&apos;t have any concrete data, even at the per-backend-message level.)

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:100
&gt; +        if (this._scheduledLayoutUpdateIdentifier) {

I don&apos;t think this is doing what you want. It will try to cancelAnimationFrame even in cases where the animation frame has called back normally. Perhaps you need to put the synchronous update in a private method? It would be even better to split the self-layout from the recursion, i.e.:

render()
{
    // Implemented by subclasses.
    // Not responsible for recursing to child views.
    // Should not be called directly; use updateLayout() instead.

    // Return value signals whether child views should also re-render.
    return true;
}

_renderSubtree()
{
    let shouldRenderChildren = this.render();
    if (!shouldRenderChildren)
        return;

    this._subviews.forEach((view) =&gt; { view._renderSubtree(); });
}

updateLayout()
{
    if (this._scheduledLayoutUpdateIdentifier) {
        cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);
        this._scheduledLayoutUpdateIdentifier = undefined;
    }

    this._renderSubtree();
}

needsLayout()
{
    if (this._scheduledLayoutUpdateIdentifier)
        return;
    this._scheduledLayoutUpdateIdentifier = requestAnimationFrame(this._renderSubtree.bind(this));
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137214</commentid>
    <comment_count>18</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-28 12:01:57 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 263869 [details]
&gt; [Patch] WIP - introduces perf issue
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263869&amp;action=review
&gt; 
&gt; What is the status of the performance regressions? (Not specific to this
&gt; patch, but it is worrying that we don&apos;t have any concrete data, even at the
&gt; per-backend-message level.)
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:100
&gt; &gt; +        if (this._scheduledLayoutUpdateIdentifier) {
&gt; 
&gt; I don&apos;t think this is doing what you want. It will try to
&gt; cancelAnimationFrame even in cases where the animation frame has called back
&gt; normally. Perhaps you need to put the synchronous update in a private
&gt; method? It would be even better to split the self-layout from the recursion,
&gt; i.e.:

I was just discussing this with Tim the other day. I&apos;d already made the change for the next path. I also like the application of a template method pattern here (https://en.wikipedia.org/wiki/Template_method_pattern). I&apos;ll incorporate your suggestions below, nice!

&gt; render()
&gt; {
&gt;     // Implemented by subclasses.
&gt;     // Not responsible for recursing to child views.
&gt;     // Should not be called directly; use updateLayout() instead.
&gt; 
&gt;     // Return value signals whether child views should also re-render.
&gt;     return true;
&gt; }
&gt; 
&gt; _renderSubtree()
&gt; {
&gt;     let shouldRenderChildren = this.render();
&gt;     if (!shouldRenderChildren)
&gt;         return;
&gt; 
&gt;     this._subviews.forEach((view) =&gt; { view._renderSubtree(); });
&gt; }
&gt; 
&gt; updateLayout()
&gt; {
&gt;     if (this._scheduledLayoutUpdateIdentifier) {
&gt;         cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);
&gt;         this._scheduledLayoutUpdateIdentifier = undefined;
&gt;     }
&gt; 
&gt;     this._renderSubtree();
&gt; }
&gt; 
&gt; needsLayout()
&gt; {
&gt;     if (this._scheduledLayoutUpdateIdentifier)
&gt;         return;
&gt;     this._scheduledLayoutUpdateIdentifier =
&gt; requestAnimationFrame(this._renderSubtree.bind(this));
&gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137314</commentid>
    <comment_count>19</comment_count>
      <attachid>264256</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-28 15:29:00 -0700</bug_when>
    <thetext>Created attachment 264256
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137316</commentid>
    <comment_count>20</comment_count>
      <attachid>264256</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-10-28 15:41:01 -0700</bug_when>
    <thetext>Comment on attachment 264256
[Patch] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:119
&gt; +        this._scheduledLayoutUpdateIdentifier = requestAnimationFrame(this._renderSubtree.bind(this));

When the rAF fires this this should probably clear the _scheduledLayoutUpdateIdentifier. Otherwise, repeated calls to needsLayout would only ever render once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137317</commentid>
    <comment_count>21</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-28 15:45:15 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 264256 [details]
&gt; [Patch] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264256&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:119
&gt; &gt; +        this._scheduledLayoutUpdateIdentifier = requestAnimationFrame(this._renderSubtree.bind(this));
&gt; 
&gt; When the rAF fires this this should probably clear the
&gt; _scheduledLayoutUpdateIdentifier. Otherwise, repeated calls to needsLayout
&gt; would only ever render once?

It should set it back to undefined, but not cancelAnimationFrame() as it was doing in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137322</commentid>
    <comment_count>22</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-28 15:50:40 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Comment on attachment 264256 [details]
&gt; &gt; [Patch] Proposed Fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=264256&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:119
&gt; &gt; &gt; +        this._scheduledLayoutUpdateIdentifier = requestAnimationFrame(this._renderSubtree.bind(this));
&gt; &gt; 
&gt; &gt; When the rAF fires this this should probably clear the
&gt; &gt; _scheduledLayoutUpdateIdentifier. Otherwise, repeated calls to needsLayout
&gt; &gt; would only ever render once?
&gt; 
&gt; It should set it back to undefined, but not cancelAnimationFrame() as it was
&gt; doing in the previous patch.

_renderSubtree could set it to undefined before doing anything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137335</commentid>
    <comment_count>23</comment_count>
      <attachid>264261</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-28 15:58:51 -0700</bug_when>
    <thetext>Created attachment 264261
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137336</commentid>
    <comment_count>24</comment_count>
      <attachid>264262</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-28 15:59:58 -0700</bug_when>
    <thetext>Created attachment 264262
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137545</commentid>
    <comment_count>25</comment_count>
      <attachid>264262</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-29 09:55:19 -0700</bug_when>
    <thetext>Comment on attachment 264262
[Patch] Proposed Fix

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

Nearly there, just a few more questions.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:418
&gt; +        var currentContentView = this.currentContentView;

let

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:420
&gt; +            currentContentView.updateLayout();

This seems to ignore the subview/render traversal pattern. Do we want the current content view to be a subview? I don&apos;t see any code to add/remove subviews here.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:427
&gt;      _addContentViewElement(contentView)

It seems that we should be attaching and detaching subviews here.

&gt; Source/WebInspectorUI/UserInterface/Views/DataGrid.js:556
&gt;          // Do not attempt to use offsetes if we&apos;re not attached to the document tree yet.

drive-by typo: offsets

&gt; Source/WebInspectorUI/UserInterface/Views/DataGrid.js:582
&gt;          this.dispatchEventToListeners(WebInspector.DataGrid.Event.DidLayout);

Where is this event used? If it&apos;s code that shouldn&apos;t run in the render() run loop, maybe we can make it async.

&gt; Source/WebInspectorUI/UserInterface/Views/DataGrid.js:-605
&gt; -        this.updateLayout();

Weird that this used to be synchronous!

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:175
&gt; +            this._navigationItems[i].updateLayout(true);

I would prefer we rename NavigationItem.updateLayout to render(). Then the NavigationBar&apos;s render() method should return false, since it has custom management of its children (even though they themselves are not View instances- should they be?).

&gt; Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js:164
&gt; +        var oldStartTime = this._timelineRuler.startTime;

let

&gt; Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js:179
&gt; +                dataGridNode = dataGridNode.traverseNextNode(true, null, true);

This is a little awkward since we will recurse to DataGrid.render(), but I guess that data grid wouldn&apos;t know on its own whether to call refreshGraph().

&gt; Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js:183
&gt; +        // FIXME: once TimelineRuler inherits from View this can be removed.

File a bug.

&gt; Source/WebInspectorUI/UserInterface/Views/ScriptTimelineView.js:205
&gt; +                    dataGridNode.refreshIfNeeded();

See above.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:397
&gt; +        var firstNormalTabItem = null;

let

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRuler.js:447
&gt; +        var visibleWidth = this.element.clientWidth;

let, let, let

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineView.js:182
&gt; +        if (!this.visible)

I feel like this could be rolled into View.prototype.needsLayout. Would there be any problems?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:54
&gt; +    insertSubviewBefore(view, referenceView)

I never saw this coming, but I miss ObjC method syntax in cases like this. =)

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:124
&gt; +        // Implemented by subclasses.

&apos;Overridden&apos;

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:138
&gt; +        let shouldRenderChildren = this.render();

What are the pros/cons of adding more visibility checks to the base class methods?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137627</commentid>
    <comment_count>26</comment_count>
      <attachid>264262</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-10-29 13:06:48 -0700</bug_when>
    <thetext>Comment on attachment 264262
[Patch] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:175
&gt;&gt; +            this._navigationItems[i].updateLayout(true);
&gt; 
&gt; I would prefer we rename NavigationItem.updateLayout to render(). Then the NavigationBar&apos;s render() method should return false, since it has custom management of its children (even though they themselves are not View instances- should they be?).

layout(), see below.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:122
&gt; +    render()

I&apos;m late on this, but I think &quot;layout&quot; is a better name since it connects it to &quot;updateLayout&quot;, etc. &quot;render&quot; implies something is drawn, which is not the case and it is harder to associate with &quot;updateLayout&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137982</commentid>
    <comment_count>27</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-30 14:51:51 -0700</bug_when>
    <thetext>I don&apos;t think we want views to short-circuit the layout of child views. There isn&apos;t a precedent for this (that I&apos;ve seen), and having to return true from every derived view&apos;s implementation of layout() is pretty tedious. It also requires the implementer to look at View.js if they forget what the bool signifies.

I&apos;m going to drop it for now. Layouts will always cascade to child views (which is currently the case anyway), and in the future we can explore a more sophisticated mechanism for marking views dirty and traversing the view hierarchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137990</commentid>
    <comment_count>28</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-30 15:02:58 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; I don&apos;t think we want views to short-circuit the layout of child views.
&gt; There isn&apos;t a precedent for this (that I&apos;ve seen), and having to return true
&gt; from every derived view&apos;s implementation of layout() is pretty tedious. It
&gt; also requires the implementer to look at View.js if they forget what the
&gt; bool signifies.

This can be fixed with better-named symbols on the constructor.

&gt; 
&gt; I&apos;m going to drop it for now. Layouts will always cascade to child views
&gt; (which is currently the case anyway), and in the future we can explore a
&gt; more sophisticated mechanism for marking views dirty and traversing the view
&gt; hierarchy.

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138001</commentid>
    <comment_count>29</comment_count>
      <attachid>264262</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-30 15:29:41 -0700</bug_when>
    <thetext>Comment on attachment 264262
[Patch] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DataGrid.js:582
&gt;&gt;          this.dispatchEventToListeners(WebInspector.DataGrid.Event.DidLayout);
&gt; 
&gt; Where is this event used? If it&apos;s code that shouldn&apos;t run in the render() run loop, maybe we can make it async.

It isn&apos;t being used; will remove. If there is a future need we can add events at the View level (WillLayout/DidLayout) or protected overridable view methods (willLayout/didLayout). AppKit includes the latter.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/View.js:138
&gt;&gt; +        let shouldRenderChildren = this.render();
&gt; 
&gt; What are the pros/cons of adding more visibility checks to the base class methods?

We should push visibility checks (and the closely related shown() and hidden() methods) into the base class in a follow up patch. I see two approaches here:

1. Make `visible` a read-only property of View, which is set by calling shown()/hidden().
2. Make `visible` writable and shown()/hidden() protected methods which are called in response to the visible state changing.

Since visibility checks are implemented ad-hoc throughout the UI, I&apos;m not sure which approach is more prevalent. At first glance I like the second method, since the first requires that derived classes call super.shown()/super.hidden() in order to update the visible flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138043</commentid>
    <comment_count>30</comment_count>
      <attachid>264262</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-30 16:48:10 -0700</bug_when>
    <thetext>Comment on attachment 264262
[Patch] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TimelineView.js:182
&gt;&gt; +        if (!this.visible)
&gt; 
&gt; I feel like this could be rolled into View.prototype.needsLayout. Would there be any problems?

See https://bugs.webkit.org/show_bug.cgi?id=150741.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138052</commentid>
    <comment_count>31</comment_count>
      <attachid>264262</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-10-30 17:03:17 -0700</bug_when>
    <thetext>Comment on attachment 264262
[Patch] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:174
&gt; +        for (var i = 0; i &lt; this._navigationItems.length; ++i)

You could rewrite this as (also on line 178 and 193):
for (let item of this._navigationItems) {

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:177
&gt; +        var totalItemWidth = 0;

let instead of var

Also, I think that this isn&apos;t your fault at all, but there are many cases of using classList.contains as a check for functionality.  I think we may want to go back and add member vars to keep track of the state of the DOM object instead of using classList sometime in the future (right Brian?).  Makes things much nicer to debug too (no trawling of the DOM) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138055</commentid>
    <comment_count>32</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-30 17:12:40 -0700</bug_when>
    <thetext>&gt; Also, I think that this isn&apos;t your fault at all, but there are many cases of
&gt; using classList.contains as a check for functionality.  I think we may want
&gt; to go back and add member vars to keep track of the state of the DOM object
&gt; instead of using classList sometime in the future (right Brian?).  Makes
&gt; things much nicer to debug too (no trawling of the DOM) :)

Indeed, but this will be in follow-ups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138058</commentid>
    <comment_count>33</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-30 17:17:26 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; Also, I think that this isn&apos;t your fault at all, but there are many cases of
&gt; &gt; using classList.contains as a check for functionality.  I think we may want
&gt; &gt; to go back and add member vars to keep track of the state of the DOM object
&gt; &gt; instead of using classList sometime in the future (right Brian?).  Makes
&gt; &gt; things much nicer to debug too (no trawling of the DOM) :)
&gt; 
&gt; Indeed, but this will be in follow-ups.

Agreed. Initially I was fixing these as I found them, but given the scope of this patch I think t&apos;s best to limit the urge to refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138076</commentid>
    <comment_count>34</comment_count>
      <attachid>264453</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-30 18:05:46 -0700</bug_when>
    <thetext>Created attachment 264453
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138078</commentid>
    <comment_count>35</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-10-30 18:12:17 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Created attachment 264453 [details]
&gt; [Patch] Proposed Fix

I removed the changes to TimelineRuler, since it&apos;s getting updated in a follow up: https://bugs.webkit.org/show_bug.cgi?id=150703.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139004</commentid>
    <comment_count>36</comment_count>
      <attachid>264706</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-03 12:00:14 -0800</bug_when>
    <thetext>Created attachment 264706
[Patch] Proposed Fix

Updated an incorrect FIXME url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139027</commentid>
    <comment_count>37</comment_count>
      <attachid>264706</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-03 12:32:42 -0800</bug_when>
    <thetext>Comment on attachment 264706
[Patch] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:137
&gt; +        this._subviews.forEach((view) =&gt; { view._layoutSubtree(); });

Does this need to be forEach? We prefer for (..of..) now, it avoids the extra work of arrow function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139036</commentid>
    <comment_count>38</comment_count>
      <attachid>264715</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-03 13:07:31 -0800</bug_when>
    <thetext>Created attachment 264715
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139066</commentid>
    <comment_count>39</comment_count>
      <attachid>264715</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 13:57:28 -0800</bug_when>
    <thetext>Comment on attachment 264715
[Patch] Proposed Fix

Clearing flags on attachment: 264715

Committed r191976: &lt;http://trac.webkit.org/changeset/191976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139067</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 13:57:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262466</attachid>
            <date>2015-10-05 15:03:28 -0700</date>
            <delta_ts>2015-10-16 14:14:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-149186-20151005150303.patch</filename>
            <type>text/plain</type>
            <size>29634</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MmFmMzUwNTkwYzQwMDMxZjhkMTM5NjhlNDhiZGY5NDdmMDc2YmE4Li5iZTg0OTJjNmM2Yjg1ZjZj
ZDhiZWEzMzA1Njc3ZmFkNzIzNWFiMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNS0xMC0wNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFZpZXcvU2Nyb2xsYWJsZVZpZXcgYmFz
ZSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgVmlldyBhbmQgU2Nyb2xsYWJsZVZpZXcgYmFzZSBjbGFzc2VzLCBhbmQgY29ycmVzcG9u
ZGluZyBDU1MgZmlsZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Njcm9sbGFibGVWaWV3LmNzczogQWRkZWQuCisg
ICAgICAgICguc2Nyb2xsYWJsZSA+IC5kaWFnbm9zdGljcyk6CisgICAgICAgICguc2Nyb2xsYWJs
ZSA+IC5kaWFnbm9zdGljcyA+IC5yb3cpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuZGlhZ25v
c3RpY3MgPiAucm93ID4gZGl2KToKKyAgICAgICAgKC5zY3JvbGxhYmxlID4gLmRpYWdub3N0aWNz
ID4gLnJvdyA+IC5sYWJlbCk6CisgICAgICAgICguc2Nyb2xsYWJsZSA+IC5kaWFnbm9zdGljcyA+
IC5yb3cgPiAudmFsdWUpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyKToKKyAg
ICAgICAgKC5zY3JvbGxhYmxlID4gLnNjcm9sbGJhci5ob3Jpem9udGFsKToKKyAgICAgICAgKC5z
Y3JvbGxhYmxlLnNjcm9sbC1ib3RoID4gLnNjcm9sbGJhci5ob3Jpem9udGFsKToKKyAgICAgICAg
KC5zY3JvbGxhYmxlID4gLnNjcm9sbGJhci52ZXJ0aWNhbCk6CisgICAgICAgICguc2Nyb2xsYWJs
ZTpob3ZlciA+IC5zY3JvbGxiYXIpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFy
OmhvdmVyKToKKyAgICAgICAgKC5zY3JvbGxhYmxlID4gLnNjcm9sbGJhciA+IC5zY3JvbGwtc2l6
ZXIpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLmhvcml6b250YWwgPiAuc2Ny
b2xsLXNpemVyKToKKyAgICAgICAgKC5zY3JvbGxhYmxlID4gLnNjcm9sbGJhci52ZXJ0aWNhbCA+
IC5zY3JvbGwtc2l6ZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2Nyb2xsYWJs
ZVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5nZXQgc2Nyb2xs
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5
cGUuZ2V0IHpvb21EaXJlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVW
aWV3LnByb3RvdHlwZS5nZXQgY29udGVudFdpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JvbGxhYmxlVmlldy5wcm90b3R5cGUuc2V0IGNvbnRlbnRXaWR0aCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLmdldCBjb250ZW50SGVpZ2h0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuc2V0IGNvbnRlbnRI
ZWlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5n
ZXQgdmlzaWJsZUNvbnRlbnRXaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJs
ZVZpZXcucHJvdG90eXBlLmdldCB2aXNpYmxlQ29udGVudEhlaWdodCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLmdldCBjb250ZW50T2Zmc2V0WCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLnNldCBjb250ZW50
T2Zmc2V0WCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBl
LmdldCBjb250ZW50T2Zmc2V0WSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZp
ZXcucHJvdG90eXBlLnNldCBjb250ZW50T2Zmc2V0WSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLmdldCBjb250ZW50U2NhbGVGYWN0b3JYKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuc2V0IGNvbnRlbnRTY2Fs
ZUZhY3RvclgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlw
ZS5nZXQgY29udGVudFNjYWxlRmFjdG9yWSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xs
YWJsZVZpZXcucHJvdG90eXBlLnNldCBjb250ZW50U2NhbGVGYWN0b3JZKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuZ2V0IG1pbmltdW1ab29tRmFjdG9y
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuc2V0IG1p
bmltdW1ab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5w
cm90b3R5cGUuZ2V0IG1heGltdW1ab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JvbGxhYmxlVmlldy5wcm90b3R5cGUuc2V0IG1heGltdW1ab29tRmFjdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuZ2V0IHpvb21GYWN0b3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5zZXQgem9vbUZh
Y3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLnVw
ZGF0ZUxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90
eXBlLl9oYW5kbGVTY3JvbGxFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJs
ZVZpZXcucHJvdG90eXBlLl9oYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JvbGxhYmxlVmlldy5fY2FuU2Nyb2xsSG9yaXpvbnRhbCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLl9jYW5TY3JvbGxWZXJ0aWNhbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLl9jYW5ab29tKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuX2NsaWVudFRvQ29u
dGVudFgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5f
Y2xpZW50VG9Db250ZW50WSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmNz
czogQWRkZWQuCisgICAgICAgICgudmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgaGFzU2NoZWR1bGVkTGF5b3V0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZ2V0IHdpZHRoKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgaGVpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXRGb3JSZXNpemUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlldy5wcm90b3R5cGUubmVlZHNMYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
ZXcucHJvdG90eXBlLnVwZGF0ZUVsZW1lbnRQb3NpdGlvbik6CisKIDIwMTUtMTAtMDUgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogRXJyb3IgZGlzcGxheWVkIGFzIGFuIG9iamVjdCB3aGVuIHBhc3NlZCBhcyBhIHNlY29uZCBh
cmd1bWVudCB0byBjb25zb2xlLmxvZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCmluZGV4IGIwYjRiNTkyZDA5MjM3YzVjNGM2NjJkYzY1Nzc1YmI4ZDEy
NGQ3OWUuLjdiZjEwNDZjN2RjOGI3MzljODhiYmY3MTZiNTY1M2YxNzA3OGZhNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTEzMyw2ICsx
MzMsNyBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU2NyaXB0Q29u
dGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Nj
cmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9TY3JvbGxhYmxlVmlldy5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU2VhcmNoQmFyLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9TZWFyY2hJY29ucy5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU2VhcmNoU2lkZWJhclBhbmVsLmNzcyI+CkBAIC0x
NjMsNiArMTY0LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5
cGVUb2tlblZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1R5cGVUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvVHlwZVRyZWVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwuY3NzIj4KQEAgLTMzMyw2ICszMzUsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVk
UHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlldy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Njcm9sbGFibGVWaWV3LmpzIj48L3Nj
cmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlQ29tbWFuZFZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlTWVzc2FnZVZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
Y3JvbGxhYmxlVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3JvbGxhYmxlVmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc1MDg4OTUxMTU0Y2M5YTM3Njkx
NGY4NmM3MjBkMzBiMTNiMmRjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njcm9sbGFibGVWaWV3LmNzcwpAQCAtMCwwICsxLDEw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8qIEJFR0lOIERFQlVHIFNUVUZGICovCisuc2Nyb2xsYWJsZSA+
IC5kaWFnbm9zdGljcyB7CisgICAgbWFyZ2luOiA2cHg7CisgICAgZm9udC1zaXplOiAxMHB4Owor
ICAgIGNvbG9yOiBibGFjazsKK30KKworLnNjcm9sbGFibGUgPiAuZGlhZ25vc3RpY3MgPiAucm93
IHsKKyAgICBkaXNwbGF5OiB0YWJsZS1yb3c7Cit9CisKKy5zY3JvbGxhYmxlID4gLmRpYWdub3N0
aWNzID4gLnJvdyA+IGRpdiB7CisgICAgZGlzcGxheTogdGFibGUtY2VsbDsKKyAgICBwYWRkaW5n
OiAycHggMDsKK30KKworLnNjcm9sbGFibGUgPiAuZGlhZ25vc3RpY3MgPiAucm93ID4gLmxhYmVs
IHsKKyAgICBjb2xvcjogIzg4ODsKK30KKworLnNjcm9sbGFibGUgPiAuZGlhZ25vc3RpY3MgPiAu
cm93ID4gLnZhbHVlIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDZweDsKK30KKy8qIEVORCBERUJVRyBT
VFVGRiAqLworCisuc2Nyb2xsYWJsZSA+IC5zY3JvbGxiYXIgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgb3BhY2l0eTogMDsKKwor
IC8qIEFsbG93cyB0aGUgc2Nyb2xsIGJhciB0byBiZSBpbnRlcmFjdGVkIHdpdGguICovCisgICAg
ei1pbmRleDogMTAwMDsKK30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLmhvcml6b250YWwg
eworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgb3ZlcmZsb3cteTogaGlkZGVuOworfQorCisuc2Nyb2xsYWJsZS5zY3JvbGwtYm90aCA+
IC5zY3JvbGxiYXIuaG9yaXpvbnRhbCB7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMTZweDsK
K30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLnZlcnRpY2FsIHsKKyAgICB0b3A6IDA7Cisg
ICAgd2lkdGg6IDE2cHg7CisgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgIG92ZXJmbG93LXk6
IGF1dG87Cit9CisKKy5zY3JvbGxhYmxlOmhvdmVyID4gLnNjcm9sbGJhciB7CisgICAgb3BhY2l0
eTogMC43NTsKK30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyOmhvdmVyIHsKKyAgICBvcGFj
aXR5OiAxOworfQorCisuc2Nyb2xsYWJsZSA+IC5zY3JvbGxiYXIgPiAuc2Nyb2xsLXNpemVyIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAg
dmlzaWJpbGl0eTogaGlkZGVuOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisuc2Ny
b2xsYWJsZSA+IC5zY3JvbGxiYXIuaG9yaXpvbnRhbCA+IC5zY3JvbGwtc2l6ZXIgeworICAgIGhl
aWdodDogMXB4OworfQorCisuc2Nyb2xsYWJsZSA+IC5zY3JvbGxiYXIudmVydGljYWwgPiAuc2Ny
b2xsLXNpemVyIHsKKyAgICB3aWR0aDogMXB4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2Nyb2xsYWJsZVZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JvbGxhYmxlVmlldy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMmQxMzdmYjJjODY0YzVjMmQwZjdkZTFkNDgzMDEzMjA4MWQ5MTIzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2Ny
b2xsYWJsZVZpZXcuanMKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0
b3IuU2Nyb2xsYWJsZVZpZXcgPSBjbGFzcyBTY3JvbGxhYmxlVmlldyBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5WaWV3Cit7CisgICAgY29uc3RydWN0b3Ioc2Nyb2xsRGlyZWN0aW9uLCB6b29tRGlyZWN0
aW9uKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic2Nyb2xsYWJsZSIpOworCisgICAgICAgIHRoaXMuX3Njcm9sbERpcmVjdGlv
biA9IHNjcm9sbERpcmVjdGlvbjsKKyAgICAgICAgdGhpcy5fY29udGVudE9mZnNldFggPSAwOwor
ICAgICAgICB0aGlzLl9jb250ZW50T2Zmc2V0WSA9IDA7CisgICAgICAgIHRoaXMuX2NvbnRlbnRX
aWR0aCA9IDA7CisgICAgICAgIHRoaXMuX2NvbnRlbnRIZWlnaHQgPSAwOworICAgICAgICB0aGlz
Ll9jb250ZW50U2NhbGVGYWN0b3JYID0gMTsKKyAgICAgICAgdGhpcy5fY29udGVudFNjYWxlRmFj
dG9yWSA9IDE7CisgICAgICAgIHRoaXMuX2lnbm9yZU5leHRTY3JvbGxFdmVudCA9IGZhbHNlOwor
CisgICAgICAgIHRoaXMuX21vdXNlV2hlZWxEZWx0YSA9IDA7CisgICAgICAgIHRoaXMuX3pvb21E
aXJlY3Rpb24gPSB6b29tRGlyZWN0aW9uIHx8IFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5a
b29tRGlyZWN0aW9uLk5vbmU7CisgICAgICAgIHRoaXMuX21pbmltdW1ab29tRmFjdG9yID0gMC4x
OworICAgICAgICB0aGlzLl9tYXhpbXVtWm9vbUZhY3RvciA9IDEwOworICAgICAgICB0aGlzLl96
b29tRmFjdG9yID0gMTsKKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVTY3JvbGxiYXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBsZXQgc2Nyb2xsYmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgc2Nyb2xsYmFyRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJzY3JvbGxiYXIiKTsKKyAgICAgICAgICAgIHNjcm9sbGJhckVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5faGFuZGxlU2Nyb2xsRXZlbnQuYmluZCh0aGlzKSk7CisK
KyAgICAgICAgICAgIGxldCBjb250ZW50U2l6ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgICAgICBjb250ZW50U2l6ZXJFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInNjcm9sbC1zaXplciIpOworICAgICAgICAgICAgc2Nyb2xsYmFyRWxlbWVudC5hcHBlbmQo
Y29udGVudFNpemVyRWxlbWVudCk7CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQo
c2Nyb2xsYmFyRWxlbWVudCk7CisKKyAgICAgICAgICAgIHJldHVybiBzY3JvbGxiYXJFbGVtZW50
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbEhvcml6b250YWwoKSkg
eworICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFNjcm9sbGJhckVsZW1lbnQgPSBjcmVhdGVT
Y3JvbGxiYXIuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTY3JvbGxi
YXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoImhvcml6b250YWwiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICh0aGlzLl9jYW5TY3JvbGxWZXJ0aWNhbCgpKSB7CisgICAgICAgICAgICB0aGlzLl92
ZXJ0aWNhbFNjcm9sbGJhckVsZW1lbnQgPSBjcmVhdGVTY3JvbGxiYXIuY2FsbCh0aGlzKTsKKyAg
ICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsU2Nyb2xsYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2
ZXJ0aWNhbCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVE9ETzogb25seSBuZWNlc3Nhcnkg
aWYgc2Nyb2xsYmFyIHN0eWxlcyBkZXBlbmQgb24gdGhlIGV4aXN0ZW5jZSBvZiBhIHNlY29uZCBz
Y3JvbGxiYXIgKGUuZy46IHByZXZlbnRpbmcKKyAgICAgICAgLy8gc2Nyb2xsYmFycyBmcm9tIG92
ZXJsYXBwaW5nIGluIHRoZSBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIHZpZXcpLgorICAgICAg
ICBpZiAodGhpcy5fc2Nyb2xsRGlyZWN0aW9uID09PSBXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZp
ZXcuU2Nyb2xsRGlyZWN0aW9uLkJvdGgpCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgic2Nyb2xsLWJvdGgiKTsKKworICAgICAgICBpZiAodGhpcy5fY2FuWm9vbSgpKQor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwgdGhpcy5f
aGFuZGxlV2hlZWxFdmVudC5iaW5kKHRoaXMpKTsKKworICAgICAgICAvLyBERUJVR0dJTkcgU1RV
RkYKKyAgICAgICAgdGhpcy5fZGlhZ25vc3RpY3NFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2RpYWdub3N0aWNzRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJkaWFnbm9zdGljcyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHRoaXMuX2Rp
YWdub3N0aWNzRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgc2Ny
b2xsRGlyZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxEaXJlY3Rp
b247CisgICAgfQorCisgICAgZ2V0IHpvb21EaXJlY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3pvb21EaXJlY3Rpb247CisgICAgfQorCisgICAgZ2V0IGNvbnRlbnRXaWR0aCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFdpZHRoOworICAgIH0KKworICAg
IHNldCBjb250ZW50V2lkdGgoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jb250ZW50V2lk
dGggPT09IHgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29udGVudFdp
ZHRoID0geDsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworICAgIH0KKworICAgIGdldCBj
b250ZW50SGVpZ2h0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVpZ2h0
OworICAgIH0KKworICAgIHNldCBjb250ZW50SGVpZ2h0KHgpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fY29udGVudEhlaWdodCA9PT0geCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9jb250ZW50SGVpZ2h0ID0geDsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwor
ICAgIH0KKworICAgIGdldCB2aXNpYmxlQ29udGVudFdpZHRoKCkKKyAgICB7CisgICAgICAgIGNv
bnN0IHJlc3VsdCA9IHRoaXMud2lkdGggLyB0aGlzLl9jb250ZW50U2NhbGVGYWN0b3JYOworICAg
ICAgICByZXR1cm4gdGhpcy5fY2FuWm9vbSgpID8gcmVzdWx0IC8gdGhpcy5fem9vbUZhY3RvciA6
IHJlc3VsdDsKKyAgICB9CisKKyAgICBnZXQgdmlzaWJsZUNvbnRlbnRIZWlnaHQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0IC8gdGhpcy5fY29udGVudFNjYWxlRmFjdG9yWTsK
KyAgICB9CisKKyAgICBnZXQgY29udGVudE9mZnNldFgoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbnRlbnRPZmZzZXRYOworICAgIH0KKworICAgIHNldCBjb250ZW50T2Zmc2V0WCh4
KQorICAgIHsKKyAgICAgICAgaWYgKHggPCAwIHx8IHRoaXMuX2NvbnRlbnRPZmZzZXRYID09PSB4
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NvbnRlbnRPZmZzZXRYID0g
eDsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworICAgIH0KKworICAgIGdldCBjb250ZW50
T2Zmc2V0WSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudE9mZnNldFk7Cisg
ICAgfQorCisgICAgc2V0IGNvbnRlbnRPZmZzZXRZKHgpCisgICAgeworICAgICAgICBpZiAoeCA8
IDAgfHwgdGhpcy5fY29udGVudE9mZnNldFkgPT09IHgpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5fY29udGVudE9mZnNldFkgPSB4OworICAgICAgICB0aGlzLm5lZWRzTGF5
b3V0KCk7CisgICAgfQorCisgICAgZ2V0IGNvbnRlbnRTY2FsZUZhY3RvclgoKQorICAgIHsKKyAg
ICAgICAgLy8gVE9ETzogc2hvdWxkIHdlIHNldCB0aGUgY29udGVudCBzY2FsZSBmYWN0b3IgYXMg
YSB0d28tdHVwbGUsIHBvc3NpYmx5IHJlbmFtZSBwcm9wZXJ0eSB0byBgdmlld1RyYW5zZm9ybWA/
CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50U2NhbGVGYWN0b3JYOworICAgIH0KKworICAg
IHNldCBjb250ZW50U2NhbGVGYWN0b3JYKHgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh4LCAiQ29udGVudCBzY2FsZSBmYWN0b3IgbXVzdCBiZSBhIG5vbi16ZXJvIG51bWJlci4iKTsK
KyAgICAgICAgaWYgKCF4IHx8IHRoaXMuX2NvbnRlbnRTY2FsZUZhY3RvclggPT09IHgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29udGVudFNjYWxlRmFjdG9yWCA9IHg7
CisgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICBnZXQgY29udGVudFNj
YWxlRmFjdG9yWSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFNjYWxlRmFj
dG9yWTsKKyAgICB9CisKKyAgICBzZXQgY29udGVudFNjYWxlRmFjdG9yWSh4KQorICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoeCwgIkNvbnRlbnQgc2NhbGUgZmFjdG9yIG11c3QgYmUgYSBu
b24temVybyBudW1iZXIuIik7CisgICAgICAgIGlmICgheCB8fCB0aGlzLl9jb250ZW50U2NhbGVG
YWN0b3JZID09PSB4KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NvbnRl
bnRTY2FsZUZhY3RvclkgPSB4OworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisgICAgfQor
CisgICAgZ2V0IG1pbmltdW1ab29tRmFjdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9taW5pbXVtWm9vbUZhY3RvcjsKKyAgICB9CisKKyAgICAKKyAgICBzZXQgbWluaW11bVpvb21G
YWN0b3IoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9taW5pbXVtWm9vbUZhY3RvciA9PT0g
eCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9taW5pbXVtWm9vbUZhY3Rv
ciA9IHg7CisgICAgICAgIGlmICh0aGlzLl96b29tRmFjdG9yID49IHRoaXMuX21pbmltdW1ab29t
RmFjdG9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8qCisgICAgICAgICAgICAg
ICAgICAgICAgICAgbWluICAgICAgIFogICAgICAgICAgICAgICAgICAgICAgICAgbWF4CisgICAg
ICAgIHpvb20gb3V0IDwtLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0t
LXwtLS0tLS0tLT4gem9vbSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjUgICAgIDAu
NSAgICAgICAxICAgICAgICAyICAgICAgICA0CisKKyAgICAgICAgWiA9IGN1cnJlbnQgem9vbSBm
YWN0b3IKKyAgICAgICAgKi8KKworICAgICAgICAvLyBJZiB0aGUgY3VycmVudCB6b29tIGZhY3Rv
ciBpcyBsZXNzIHRoYW4gdGhlIG5ldyBtaW5pbXVtIHpvb20gZmFjdG9yLAorICAgICAgICAvLyBj
bGFtcCB0aGUgem9vbSBmYWN0b3IgYW5kIGZvcmNlIGFuIHVwZGF0ZS4KKyAgICAgICAgdGhpcy5f
em9vbUZhY3RvciA9IHRoaXMuX21pbmltdW1ab29tRmFjdG9yOworICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7CisgICAgfQorCisgICAgZ2V0IG1heGltdW1ab29tRmFjdG9yKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9tYXhpbXVtWm9vbUZhY3RvcjsKKyAgICB9CisKKyAgICBzZXQg
bWF4aW11bVpvb21GYWN0b3IoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tYXhpbXVtWm9v
bUZhY3RvciA9PT0geCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9tYXhp
bXVtWm9vbUZhY3RvciA9IHg7CisgICAgICAgIGlmICh0aGlzLl96b29tRmFjdG9yIDw9IHRoaXMu
X21heGltdW1ab29tRmFjdG9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIElm
IHRoZSBjdXJyZW50IHpvb20gZmFjdG9yIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbmV3IG1heGltdW0g
em9vbSBmYWN0b3IsCisgICAgICAgIC8vIGNsYW1wIHRoZSB6b29tIGZhY3RvciBhbmQgZm9yY2Ug
YW4gdXBkYXRlLgorICAgICAgICB0aGlzLl96b29tRmFjdG9yID0gdGhpcy5fbWF4aW11bVpvb21G
YWN0b3I7CisgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKKyAgICB9IAorCisgICAgZ2V0IHpv
b21GYWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3pvb21GYWN0b3I7CisgICAg
fQorCisgICAgc2V0IHpvb21GYWN0b3IoeCkKKyAgICB7CisgICAgICAgIHggPSBNYXRoLm1heCh0
aGlzLl9taW5pbXVtWm9vbUZhY3RvciwgTWF0aC5taW4odGhpcy5fbWF4aW11bVpvb21GYWN0b3Is
IHgpKTsKKyAgICAgICAgaWYgKHRoaXMuX3pvb21GYWN0b3IgPT09IHgpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fem9vbUZhY3RvciA9IHg7CisgICAgICAgIHRoaXMubmVl
ZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICB1cGRhdGVMYXlvdXQoKQorICAgIHsKKyAgICAgICAg
c3VwZXIudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbEhvcml6
b250YWwoKSkgeworICAgICAgICAgICAgbGV0IGNvbnRlbnRTaXplckVsZW1lbnQgPSB0aGlzLl9o
b3Jpem9udGFsU2Nyb2xsYmFyRWxlbWVudC5maXJzdENoaWxkOworICAgICAgICAgICAgdGhpcy51
cGRhdGVFbGVtZW50UG9zaXRpb24oY29udGVudFNpemVyRWxlbWVudCwgdGhpcy5fY29udGVudFdp
ZHRoICogdGhpcy5fY29udGVudFNjYWxlRmFjdG9yWCAqIHRoaXMuX3pvb21GYWN0b3IsICJ3aWR0
aCIsICJweCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbFZlcnRp
Y2FsKCkpIHsKKyAgICAgICAgICAgIGxldCBjb250ZW50U2l6ZXJFbGVtZW50ID0gdGhpcy5fdmVy
dGljYWxTY3JvbGxiYXJFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICAvLyBGSVhNRTog
c3VwcG9ydCB6b29taW5nIHRoZSB5LWF4aXMKKyAgICAgICAgICAgIHRoaXMudXBkYXRlRWxlbWVu
dFBvc2l0aW9uKGNvbnRlbnRTaXplckVsZW1lbnQsIHRoaXMuX2NvbnRlbnRIZWlnaHQgKiB0aGlz
Ll9jb250ZW50U2NhbGVGYWN0b3JZLCAiaGVpZ2h0IiwgInB4Iik7CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBtYXhpbXVtQ29udGVudE9mZnNldFggPSBNYXRoLm1heCgwLCB0aGlzLl9jb250
ZW50V2lkdGggLSB0aGlzLnZpc2libGVDb250ZW50V2lkdGgpOworICAgICAgICB0aGlzLl9jb250
ZW50T2Zmc2V0WCA9IE1hdGgubWluKG1heGltdW1Db250ZW50T2Zmc2V0WCwgdGhpcy5fY29udGVu
dE9mZnNldFgpOworCisgICAgICAgIGNvbnN0IG1heGltdW1Db250ZW50T2Zmc2V0WSA9IE1hdGgu
bWF4KDAsIHRoaXMuX2NvbnRlbnRIZWlnaHQgLSB0aGlzLnZpc2libGVDb250ZW50SGVpZ2h0KTsK
KyAgICAgICAgdGhpcy5fY29udGVudE9mZnNldFkgPSBNYXRoLm1pbihtYXhpbXVtQ29udGVudE9m
ZnNldFksIHRoaXMuX2NvbnRlbnRPZmZzZXRZKTsKKworICAgICAgICBpZiAoIXRoaXMuX2RvbnRV
cGRhdGVTY3JvbGxWYWx1ZSkgeworICAgICAgICAgICAgdGhpcy5faWdub3JlTmV4dFNjcm9sbEV2
ZW50ID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbEhvcml6b250YWwo
KSkKKyAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsU2Nyb2xsYmFyRWxlbWVudC5zY3Jv
bGxMZWZ0ID0gTWF0aC5jZWlsKHRoaXMuX2NvbnRlbnRPZmZzZXRYIC8gdGhpcy5fY29udGVudFNj
YWxlRmFjdG9yWCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9jYW5TY3JvbGxWZXJ0aWNhbCgp
KQorICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsU2Nyb2xsYmFyRWxlbWVudC5zY3JvbGxU
b3AgPSBNYXRoLmNlaWwodGhpcy5fY29udGVudE9mZnNldFkgLyB0aGlzLl9jb250ZW50U2NhbGVG
YWN0b3JZKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERFQlVHR0lORyBTVFVGRjogc2hvdyBz
Y3JvbGxpbmcvem9tbWluZyBwcm9wZXJ0aWVzLgorICAgICAgICBsZXQgYXR0cnMgPSBbXTsKKyAg
ICAgICAgYXR0cnMucHVzaChbIkNvbnRlbnQgb2Zmc2V0IiwgdGhpcy5jb250ZW50T2Zmc2V0WC50
b0ZpeGVkKDQpICsgIiwgIiArIHRoaXMuY29udGVudE9mZnNldFkudG9GaXhlZCg0KV0pOworICAg
ICAgICBhdHRycy5wdXNoKFsiQ29udGVudCBzY2FsZSIsIHRoaXMuY29udGVudFNjYWxlRmFjdG9y
WCArICIsICIgKyB0aGlzLmNvbnRlbnRTY2FsZUZhY3RvclldKTsKKyAgICAgICAgYXR0cnMucHVz
aChbIkNvbnRlbnQgc2l6ZSIsIHRoaXMuY29udGVudFdpZHRoLnRvRml4ZWQoNCkgKyAiLCAiICsg
dGhpcy5jb250ZW50SGVpZ2h0LnRvRml4ZWQoNCldKTsKKyAgICAgICAgYXR0cnMucHVzaChbIlZp
c2libGUgc2l6ZSIsIHRoaXMudmlzaWJsZUNvbnRlbnRXaWR0aC50b0ZpeGVkKDQpICsgIiwgIiAr
IHRoaXMudmlzaWJsZUNvbnRlbnRIZWlnaHQudG9GaXhlZCg0KV0pOworICAgICAgICBhdHRycy5w
dXNoKFsiVmlldyBzaXplIiwgdGhpcy53aWR0aCArICIg4qiJICIgKyB0aGlzLmhlaWdodCArICIg
cHgiXSk7CisgICAgICAgIGF0dHJzLnB1c2goWyJab29tIiwgdGhpcy5fem9vbUZhY3Rvci50b0Zp
eGVkKDMpICsgIuKoiSJdKTsKKworICAgICAgICB0aGlzLl9kaWFnbm9zdGljc0VsZW1lbnQucmVt
b3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cnMpIHsKKyAg
ICAgICAgICAgIGxldCBsYWJlbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgICAgIGxhYmVsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJrZXkiKTsKKyAgICAg
ICAgICAgIGxhYmVsRWxlbWVudC50ZXh0Q29udGVudCA9IGF0dHJbMF07CisgICAgICAgICAgICBs
ZXQgdmFsdWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
ICAgICB2YWx1ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIHZh
bHVlRWxlbWVudC50ZXh0Q29udGVudCA9IGF0dHJbMV07CisKKyAgICAgICAgICAgIGxldCByb3dF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICByb3dF
bGVtZW50LmNsYXNzTGlzdC5hZGQoInJvdyIpOworICAgICAgICAgICAgcm93RWxlbWVudC5hcHBl
bmQobGFiZWxFbGVtZW50LCB2YWx1ZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fZGlhZ25v
c3RpY3NFbGVtZW50LmFwcGVuZChyb3dFbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVTY3JvbGxFdmVudChldmVudCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQpIHsKKyAgICAgICAgICAgIHRoaXMu
X2lnbm9yZU5leHRTY3JvbGxFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5fZG9udFVwZGF0ZVNjcm9sbFZhbHVlID0gdHJ1ZTsKKwor
ICAgICAgICBpZiAodGhpcy5fY2FuU2Nyb2xsSG9yaXpvbnRhbCgpKQorICAgICAgICAgICAgdGhp
cy5fY29udGVudE9mZnNldFggPSAodGhpcy5faG9yaXpvbnRhbFNjcm9sbGJhckVsZW1lbnQuc2Ny
b2xsTGVmdCAvIHRoaXMuX2NvbnRlbnRTY2FsZUZhY3RvclgpIC8gdGhpcy5fem9vbUZhY3RvcjsK
KworICAgICAgICAvLyBGSVhNRTogZXZlbnR1YWxseSBzdXBwb3J0IHpvb21pbmcgdGhlIHktYXhp
cworICAgICAgICBpZiAodGhpcy5fY2FuU2Nyb2xsVmVydGljYWwoKSkKKyAgICAgICAgICAgIHRo
aXMuX2NvbnRlbnRPZmZzZXRZID0gdGhpcy5fdmVydGljYWxTY3JvbGxiYXJFbGVtZW50LnNjcm9s
bFRvcCAvIHRoaXMuX2NvbnRlbnRTY2FsZUZhY3Rvclk7CisKKyAgICAgICAgLy8gRm9yY2UgbGF5
b3V0IHNvIHdlIGNhbiB1cGRhdGUgd2l0aCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHN5bmNocm9ub3Vz
bHkuCisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgdGhpcy5fZG9udFVw
ZGF0ZVNjcm9sbFZhbHVlID0gZmFsc2U7CisgICAgfQorCisgICAgX2hhbmRsZVdoZWVsRXZlbnQo
ZXZlbnQpCisgICAgeworICAgICAgICAvLyBJZ25vcmUgY2xvbmVkIGV2ZW50cyB0aGF0IGNvbWUg
b3VyIHdheSwgd2UgYWxyZWFkeSBoYW5kbGVkIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgaWYgKGV2
ZW50Ll9fY2xvbmVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEZJWE1FOiBX
aGVlbCBldmVudCBoYW5kbGluZyB3aWxsIHZhcnkgYmFzZWQgb24gZW5hYmxlZCBzY3JvbGwgZGly
ZWN0aW9ucyAoSG9yaXpvbnRhbCwgVmVydGljYWwsIG9yIEJvdGgpLgorCisgICAgICAgIC8vIFJl
cXVpcmUgdHdpY2UgdGhlIChvcHBvc2l0ZSBvZiBvcmllbnRhdGlvbikgZGVsdGEgdG8gb3ZlcmNv
bWUgKG9yaWVudGF0aW9uKSBzY3JvbGxpbmcuIFRoaXMgcHJldmVudHMgbW9zdAorICAgICAgICAv
LyBjYXNlcyBvZiBpbmFkdmVydGVudCB6b29taW5nIGZvciBzbGlnaHRseSBkaWFnb25hbCBzY3Jv
bGxzLgorICAgICAgICBjb25zdCBbZGVsdGFQcm9wZXJ0eU5hbWUsIG90aGVyRGVsdGFQcm9wZXJ0
eU5hbWVdID0gdGhpcy5fY2FuU2Nyb2xsSG9yaXpvbnRhbCgpID8gWyJkZWx0YVgiLCAiZGVsdGFZ
Il0gOiBbImRlbHRhWSIsICJkZWx0YVgiXTsKKworICAgICAgICAKKyAgICAgICAgaWYgKE1hdGgu
YWJzKGV2ZW50W2RlbHRhUHJvcGVydHlOYW1lXSkgPj0gTWF0aC5hYnMoZXZlbnRbb3RoZXJEZWx0
YVByb3BlcnR5TmFtZV0pICogMC41KSB7CisgICAgICAgICAgICAvLyBDbG9uZSB0aGUgZXZlbnQg
dG8gZGlzcGF0Y2ggaXQgb24gdGhlIHNjcm9sbCBjb250YWluZXIuIE1hcmsgaXQgYXMgY2xvbmVk
IHNvIHdlIGRvbid0IGdldCBpbnRvIGEgbG9vcC4KKyAgICAgICAgICAgIGxldCBuZXdXaGVlbEV2
ZW50ID0gbmV3IGV2ZW50LmNvbnN0cnVjdG9yKGV2ZW50LnR5cGUsIGV2ZW50KTsKKyAgICAgICAg
ICAgIG5ld1doZWVsRXZlbnQuX19jbG9uZWQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAodGhp
cy5fY2FuU2Nyb2xsSG9yaXpvbnRhbCgpKQorICAgICAgICAgICAgICAgIHRoaXMuX2hvcml6b250
YWxTY3JvbGxiYXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3V2hlZWxFdmVudCk7CisgICAgICAg
ICAgICBlbHNlIGlmICh0aGlzLl9jYW5TY3JvbGxWZXJ0aWNhbCgpKQorICAgICAgICAgICAgICAg
IHRoaXMuX3ZlcnRpY2FsU2Nyb2xsYmFyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ld1doZWVsRXZl
bnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtZW1i
ZXIgdGhlIG1vdXNlIHBvc2l0aW9uIGluIHRpbWUuCisgICAgICAgIGNvbnN0IHBhZ2VQcm9wZXJ0
eU5hbWUgPSB0aGlzLl9jYW5TY3JvbGxIb3Jpem9udGFsKCkgPyAicGFnZVgiIDogInBhZ2VZIjsK
KyAgICAgICAgY29uc3QgdG90YWxPZmZzZXRQcm9wZXJ0eU5hbWUgPSB0aGlzLl9jYW5TY3JvbGxI
b3Jpem9udGFsKCkgPyAidG90YWxPZmZzZXRMZWZ0IiA6ICJ0b3RhbE9mZnNldFRvcCI7CisgICAg
ICAgIGNvbnN0IG1vdXNlT2Zmc2V0ID0gZXZlbnRbcGFnZVByb3BlcnR5TmFtZV0gLSB0aGlzLmVs
ZW1lbnRbdG90YWxPZmZzZXRQcm9wZXJ0eU5hbWVdOyAgICAgICAgCisgICAgICAgIGNvbnN0IGRl
dmljZURpcmVjdGlvbiA9IGV2ZW50LndlYmtpdERpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA/
IDEgOiAtMTsKKyAgICAgICAgY29uc3QgZGVsdGEgPSBldmVudC5kZWx0YVkgKiAodGhpcy5fY29u
dGVudFNjYWxlRmFjdG9yWCAvIFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5TY3JvbGxEZWx0
YURlbm9taW5hdG9yKSAqIGRldmljZURpcmVjdGlvbjsKKworICAgICAgICB0aGlzLnpvb21GYWN0
b3IgKz0gZGVsdGE7CisKKyAgICAgICAgLy8gVE9ETzogQ2VudGVyIHRoZSB6b29tIGFyb3VuZCB0
aGUgbW91c2UgYmFzZWQgb24gdGhlIHJlbWVtYmVyZWQgbW91c2UgcG9zaXRpb24gdGltZS4KKyAg
ICAgICAgLy8gaWYgKHRoaXMuX2NhblNjcm9sbEhvcml6b250YWwoKSkgeworICAgICAgICAvLyAg
ICAgY29uc3QgbW91c2VQb3NpdGlvbkNvbnRlbnQgPSB0aGlzLl9jbGllbnRUb0NvbnRlbnRYKG1v
dXNlT2Zmc2V0KTsKKyAgICAgICAgLy8gICAgIHRoaXMuY29udGVudE9mZnNldFggPSBNYXRoLm1h
eCgwLCBtb3VzZVBvc2l0aW9uQ29udGVudCAtIChtb3VzZU9mZnNldCAqIHRoaXMuX2NvbnRlbnRT
Y2FsZUZhY3RvclgpKTsKKyAgICAgICAgLy8gfQorCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KKworICAgIF9j
YW5TY3JvbGxIb3Jpem9udGFsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxE
aXJlY3Rpb24gIT09IFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5TY3JvbGxEaXJlY3Rpb24u
VmVydGljYWw7CisgICAgfQorCisgICAgX2NhblNjcm9sbFZlcnRpY2FsKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zY3JvbGxEaXJlY3Rpb24gIT09IFdlYkluc3BlY3Rvci5TY3JvbGxh
YmxlVmlldy5TY3JvbGxEaXJlY3Rpb24uSG9yaXpvbnRhbDsKKyAgICB9CisKKyAgICBfY2FuWm9v
bSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fem9vbURpcmVjdGlvbiAhPT0gV2ViSW5z
cGVjdG9yLlNjcm9sbGFibGVWaWV3Llpvb21EaXJlY3Rpb24uTm9uZTsKKyAgICB9CisKKyAgICBf
Y2xpZW50VG9Db250ZW50WChwb3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9j
b250ZW50T2Zmc2V0WCArICgocG9zaXRpb24gLyB0aGlzLl9jb250ZW50U2NhbGVGYWN0b3JYKSAv
IHRoaXMuX3pvb21GYWN0b3IpOworICAgIH0KKworICAgIF9jbGllbnRUb0NvbnRlbnRZKHBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRPZmZzZXRZICsgKHBvc2l0
aW9uIC8gdGhpcy5fY29udGVudFNjYWxlRmFjdG9yWSk7CisgICAgfQorfTsKKworV2ViSW5zcGVj
dG9yLlNjcm9sbGFibGVWaWV3LlNjcm9sbERlbHRhRGVub21pbmF0b3IgPSAxMDAwMDAwOworCitX
ZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcuU2Nyb2xsRGlyZWN0aW9uID0geworICAgIEhvcml6
b250YWw6IFN5bWJvbCgic2Nyb2xsLWRpcmVjdGlvbi1ob3Jpem9udGFsIiksCisgICAgVmVydGlj
YWw6IFN5bWJvbCgic2Nyb2xsLWRpcmVjdGlvbi12ZXJ0aWNhbCIpLAorICAgIEJvdGg6IFN5bWJv
bCgic2Nyb2xsLWRpcmVjdGlvbi1ib3RoIikKK307CisKK1dlYkluc3BlY3Rvci5TY3JvbGxhYmxl
Vmlldy5ab29tRGlyZWN0aW9uID0geworICAgIE5vbmU6IFN5bWJvbCgiem9vbS1kaXJlY3Rpb24t
bm9uZSIpLAorICAgIEhvcml6b250YWw6IFN5bWJvbCgiem9vbS1kaXJlY3Rpb24taG9yaXpvbnRh
bCIpCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGQ2OTczZjRmZDRiODdkMzE3Yzk0NGY5NDhhNmQ4NjYw
MTA3YTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlldy5jc3MKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aWV3
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGJvdHRvbTogMDsK
KyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgzYjM4Nzc0OGFk
NGJkNjQ0NzNjZjllMGE4ZmI2NzMzNzMzNTQ4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKQEAgLTAsMCArMSwxMDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlldyIpOwor
CisgICAgICAgIHRoaXMuX2NhY2hlZE9mZnNldFdpZHRoID0gTmFOOworICAgICAgICB0aGlzLl9j
YWNoZWRPZmZzZXRIZWlnaHQgPSBOYU47CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBn
ZXQgaGFzU2NoZWR1bGVkTGF5b3V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX3Nj
aGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXI7CisgICAgfQorCisgICAgZ2V0IGVsZW1lbnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAgZ2V0
IHdpZHRoKCkKKyAgICB7CisgICAgICAgIGlmIChpc05hTih0aGlzLl9jYWNoZWRPZmZzZXRXaWR0
aCkpCisgICAgICAgICAgICB0aGlzLl9jYWNoZWRPZmZzZXRXaWR0aCA9IHRoaXMuZWxlbWVudC5v
ZmZzZXRXaWR0aDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZE9mZnNldFdpZHRoOworICAg
IH0KKworICAgIGdldCBoZWlnaHQoKQorICAgIHsKKyAgICAgICAgaWYgKGlzTmFOKHRoaXMuX2Nh
Y2hlZE9mZnNldEhlaWdodCkpCisgICAgICAgICAgICB0aGlzLl9jYWNoZWRPZmZzZXRIZWlnaHQg
PSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVk
T2Zmc2V0SGVpZ2h0OworICAgIH0KKworICAgIHVwZGF0ZUxheW91dEZvclJlc2l6ZSgpCisgICAg
eworICAgICAgICB0aGlzLl9jYWNoZWRPZmZzZXRXaWR0aCA9IE5hTjsKKyAgICAgICAgdGhpcy5f
Y2FjaGVkT2Zmc2V0SGVpZ2h0ID0gTmFOOworCisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7
CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9z
Y2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYW5jZWxBbmlt
YXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7
CisgICAgICAgIH0KKworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAg
IH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgbmVlZHNMYXlvdXQoKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIg
PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Cisg
ICAgfQorCisgICAgdXBkYXRlRWxlbWVudFBvc2l0aW9uKGVsZW1lbnQsIHZhbHVlLCBwcm9wZXJ0
eU5hbWUsIHVuaXRzKQorICAgIHsKKyAgICAgICAgdW5pdHMgPSB1bml0cyB8fCAiJSI7CisgICAg
ICAgIGlmICh1bml0cyA9PT0gIiUiKSB7CisgICAgICAgICAgICB2YWx1ZSAqPSAxMDA7CisgICAg
ICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIH0KKworICAgICAgICBj
b25zdCBjdXJyZW50VmFsdWUgPSBwYXJzZUludChlbGVtZW50LnN0eWxlW3Byb3BlcnR5TmFtZV0p
OworICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSB2YWx1ZSkKKyAgICAgICAgICAgIGVsZW1l
bnQuc3R5bGVbcHJvcGVydHlOYW1lXSA9IHZhbHVlICsgdW5pdHM7CisgICAgfQorfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263328</attachid>
            <date>2015-10-16 14:14:03 -0700</date>
            <delta_ts>2015-10-20 19:07:41 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151016141324.patch</filename>
            <type>text/plain</type>
            <size>30902</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
NmUzNzkzMjdiMTZkZDIwYWRjOTI5YTg2MmQyNzgxZTBjNTg5MDJiLi40YjAzMTQ3MGUwMDc2NTc3
NTgzYTUwZTMyODUzYTA3NmI5OWU3ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxNS0xMC0xNiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFZpZXcvU2Nyb2xsYWJsZVZpZXcgYmFz
ZSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDkxODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICBOZXcgdmlldyBmaWxlcy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0dlb21ldHJ5LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlBvaW50LnByb3RvdHlwZS5waWVjZXdpc2VQcm9kdWN0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Qb2ludC5wcm90b3R5cGUub2Zmc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qb2ludCk6CisgICAgICAgIEFkZGVkIG5ldyBwb2ludCBvcGVyYXRpb25zLgorICAgICAgICBS
ZW1vdmVkIFdlYkluc3BlY3Rvci5TaXplLlpFUk9fU0laRS4gUmlzayBvZiBtaXN1c2UgKGFzc2ln
bmluZyBpbnN0ZWFkIG9mIGNvcHlpbmcpCisgICAgICAgIG91dHdlaWdocyB0aGUgbWlub3IgY29u
dmVuaWVuY2UgYWZmb3JkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Njcm9s
bGFibGVWaWV3LmNzczogQWRkZWQuCisgICAgICAgICguc2Nyb2xsYWJsZSA+IC5zY3JvbGxiYXIp
OgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLmhvcml6b250YWwpOgorICAgICAg
ICAoLnNjcm9sbGFibGUuc2Nyb2xsLWJvdGggPiAuc2Nyb2xsYmFyLmhvcml6b250YWwpOgorICAg
ICAgICAoLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLnZlcnRpY2FsKToKKyAgICAgICAgKC5zY3Jv
bGxhYmxlLnNjcm9sbC1ib3RoID4gLnNjcm9sbGJhci52ZXJ0aWNhbCk6CisgICAgICAgICguc2Ny
b2xsYWJsZTpob3ZlciA+IC5zY3JvbGxiYXIpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuc2Ny
b2xsYmFyOmhvdmVyKToKKyAgICAgICAgKC5zY3JvbGxhYmxlID4gLnNjcm9sbGJhciA+IC5zY3Jv
bGwtc2l6ZXIpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLmhvcml6b250YWwg
PiAuc2Nyb2xsLXNpemVyKToKKyAgICAgICAgKC5zY3JvbGxhYmxlID4gLnNjcm9sbGJhci52ZXJ0
aWNhbCA+IC5zY3JvbGwtc2l6ZXIpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuZGlhZ25vc3Rp
Y3MpOgorICAgICAgICAoLnNjcm9sbGFibGUgPiAuZGlhZ25vc3RpY3MgPiAucm93KToKKyAgICAg
ICAgKC5zY3JvbGxhYmxlID4gLmRpYWdub3N0aWNzID4gLnJvdyA+IGRpdik6CisgICAgICAgICgu
c2Nyb2xsYWJsZSA+IC5kaWFnbm9zdGljcyA+IC5yb3cgPiAubGFiZWwpOgorICAgICAgICAoLnNj
cm9sbGFibGUgPiAuZGlhZ25vc3RpY3MgPiAucm93ID4gLnZhbHVlKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvU2Nyb2xsYWJsZVZpZXcuanM6IEFkZGVkLgorICAgICAgICBWaWV3
IHN1YmNsYXNzIHdoaWNoIGFkZHMgc3VwcG9ydCBmb3IgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwg
c2Nyb2xsYmFycywgYW5kCisgICAgICAgIGhvcml6b250YWwgem9vbS4gQXMgdmVydGljYWwgc2Ny
b2xsaW5nIGFuZCBob3Jpem9udGFsIHpvb20gYm90aCB1c2UgdGhlIHdoZWVsCisgICAgICAgIGV2
ZW50LCB0aGUgdHdvIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFRoaXMgd2lsbCBiZSByZXNvbHZl
ZCBpbiBhIGZvbGxvdy11cAorICAgICAgICBwYXRjaCB3aGljaCBhZGRzIHN1cHBvcnQgZm9yIGNs
aWNrLWFuZC1kcmFnIHNjcm9sbGluZyBhbmQgZ2VzdHVyZXMuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2Nyb2xsYWJsZVZpZXcuY3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JvbGxhYmxlVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcu
cHJvdG90eXBlLmdldCBzY3JvbGxEaXJlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cm9sbGFibGVWaWV3LnByb3RvdHlwZS5nZXQgem9vbURpcmVjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLmdldCBjb250ZW50U2l6ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLnNldCBjb250ZW50U2l6
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLmdldCB2
aXNpYmxlQ29udGVudFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3
LnByb3RvdHlwZS5nZXQgY29udGVudE9mZnNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
b2xsYWJsZVZpZXcucHJvdG90eXBlLnNldCBjb250ZW50T2Zmc2V0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuZ2V0IGNvbnRlbnRTY2FsZUZhY3Rvcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLnNldCBjb250
ZW50U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnBy
b3RvdHlwZS5nZXQgbWluaW11bVpvb21GYWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cm9sbGFibGVWaWV3LnByb3RvdHlwZS5zZXQgbWluaW11bVpvb21GYWN0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5nZXQgbWF4aW11bVpvb21GYWN0
b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5zZXQg
bWF4aW11bVpvb21GYWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3
LnByb3RvdHlwZS5nZXQgem9vbUZhY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xs
YWJsZVZpZXcucHJvdG90eXBlLnNldCB6b29tRmFjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuX2hhbmRsZVNjcm9sbEV2ZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5wcm90b3R5cGUuX2hhbmRsZVdoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LnByb3RvdHlwZS5f
Y2FuU2Nyb2xsSG9yaXpvbnRhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZp
ZXcucHJvdG90eXBlLl9jYW5TY3JvbGxWZXJ0aWNhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2Nyb2xsYWJsZVZpZXcucHJvdG90eXBlLl9jYW5ab29tKToKKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvVmlldy5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpZXcpOgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgVmlldyBiYXNl
IGNsYXNzIGVuY2Fwc3VsYXRpbmcgRE9NIGVsZW1lbnQgY3JlYXRpb24sIHN1YnZpZXcKKyAgICAg
ICAgbWFuYWdlbWVudCwgYW5kIGxheW91dCBzY2hlZHVsaW5nLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmdldCBlbGVt
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgcGFyZW50Vmll
dyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZ2V0IHNpemUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmFkZFN1YlZpZXcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbW92ZVN1YlZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dEZvclJlc2l6ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5uZWVkc0xheW91dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlRWxlbWVudFBvc2l0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fZ2V0Qm91bmRpbmdDbGllbnRSZWN0KToKKwogMjAx
NS0xMC0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEFkZCAidW5zZXQiIHRvIENTUyB2YWx1ZSBhdXRvY29tcGxldGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDVi
NDg3NDE4MGI1Y2MzZTVkYjk3OGI2ZjVmOTJjNmUzM2QyYTNiZDUuLjE2MGI4ZGRkN2Q4YzMzMDNl
YjI2MDcwM2ZlZTk5Zjk5YjdiZThkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTEzMyw2ICsxMzMsNyBAQAogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU2NyaXB0Q29udGVudFZpZXcuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1NjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU2NyaXB0VGlt
ZWxpbmVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9T
Y3JvbGxhYmxlVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvU2VhcmNoQmFyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9TZWFyY2hJY29ucy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvU2VhcmNoU2lkZWJhclBhbmVsLmNzcyI+CkBAIC0xNjMsNiArMTY0LDcgQEAKICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUb2tlblZpZXcuY3NzIj4KICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVWaWV3LmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaWV3LmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2Vy
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzIj4KQEAgLTMzNSw2
ICszMzcsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAK
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Njcm9sbGFibGVWaWV3LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db25zb2xlQ29tbWFuZFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db25zb2xlTWVzc2FnZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR2VvbWV0cnkuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR2VvbWV0cnkuanMKaW5kZXggNTkxMGM2
NmQzMmNiOTlhNDQ2NWY2OWZlZjM5NWQ0YzU1YmIzNjNkMC4uMmYxNDhlMGM5NDhhM2VlN2YxMGE2
ZDdkYjVjYWZjZmVhOWJiZjNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0dlb21ldHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9HZW9tZXRyeS5qcwpAQCAtNjcsNiArNjcsMTYgQEAgV2Vi
SW5zcGVjdG9yLlBvaW50ID0gY2xhc3MgUG9pbnQKICAgICAgICAgdmFyIGR5ID0gYW5vdGhlclBv
aW50LnkgLSB0aGlzLnk7CiAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCwgZHkgKiBk
eSk7CiAgICAgfQorCisgICAgcGllY2V3aXNlUHJvZHVjdChhbm90aGVyUG9pbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh0aGlzLnggKiBhbm90aGVyUG9p
bnQueCwgdGhpcy55ICogYW5vdGhlclBvaW50LnkpOworICAgIH0KKworICAgIG9mZnNldChhbm90
aGVyUG9pbnQpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh0
aGlzLnggKyBhbm90aGVyUG9pbnQueCwgdGhpcy55ICsgYW5vdGhlclBvaW50LnkpOworICAgIH0K
IH07CiAKIFdlYkluc3BlY3Rvci5TaXplID0gY2xhc3MgU2l6ZQpAQCAtOTUsOSArMTA1LDYgQEAg
V2ViSW5zcGVjdG9yLlNpemUgPSBjbGFzcyBTaXplCiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LlNpemUuWkVST19TSVpFID0gbmV3IFdlYkluc3BlY3Rvci5TaXplKDAsIDApOwotCi0KIFdlYklu
c3BlY3Rvci5SZWN0ID0gY2xhc3MgUmVjdAogewogICAgIGNvbnN0cnVjdG9yKHgsIHksIHdpZHRo
LCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TY3JvbGxhYmxlVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JvbGxhYmxlVmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MzMjRlMDgzMmE0
NGM4YThiMjczYzgyM2ZhMTZiYjViZjU2MWNjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njcm9sbGFibGVWaWV3LmNzcwpAQCAt
MCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zY3JvbGxhYmxlID4gLnNjcm9sbGJhciB7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAg
ICBvcGFjaXR5OiAwOworCisgLyogQWxsb3dzIHRoZSBzY3JvbGwgYmFyIHRvIGJlIGludGVyYWN0
ZWQgd2l0aC4gKi8KKyAgICB6LWluZGV4OiAxMDAwOworfQorCisuc2Nyb2xsYWJsZSA+IC5zY3Jv
bGxiYXIuaG9yaXpvbnRhbCB7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICBvdmVyZmxvdy15OiBoaWRkZW47Cit9CisKKy5zY3JvbGxh
YmxlLnNjcm9sbC1ib3RoID4gLnNjcm9sbGJhci5ob3Jpem9udGFsIHsKKyAgICByaWdodDogMTZw
eDsKK30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLnZlcnRpY2FsIHsKKyAgICB0b3A6IDA7
CisgICAgd2lkdGg6IDE2cHg7CisgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgIG92ZXJmbG93
LXk6IGF1dG87Cit9CisKKy5zY3JvbGxhYmxlLnNjcm9sbC1ib3RoID4gLnNjcm9sbGJhci52ZXJ0
aWNhbCB7CisgICAgYm90dG9tOiAxNnB4OworfQorCisuc2Nyb2xsYWJsZTpob3ZlciA+IC5zY3Jv
bGxiYXIgeworICAgIG9wYWNpdHk6IDAuNzU7Cit9CisKKy5zY3JvbGxhYmxlID4gLnNjcm9sbGJh
cjpob3ZlciB7CisgICAgb3BhY2l0eTogMTsKK30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFy
ID4gLnNjcm9sbC1zaXplciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsK
KyAgICBsZWZ0OiAwOworICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICBwb2ludGVyLWV2ZW50
czogbm9uZTsKK30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xsYmFyLmhvcml6b250YWwgPiAuc2Ny
b2xsLXNpemVyIHsKKyAgICBoZWlnaHQ6IDFweDsKK30KKworLnNjcm9sbGFibGUgPiAuc2Nyb2xs
YmFyLnZlcnRpY2FsID4gLnNjcm9sbC1zaXplciB7CisgICAgd2lkdGg6IDFweDsKK30KKworLyog
RGVidWcgc3R5bGVzICovCisuc2Nyb2xsYWJsZSA+IC5kaWFnbm9zdGljcyB7CisgICAgZGlzcGxh
eTogbm9uZTsKKyAgICBtYXJnaW46IDZweDsKKyAgICBmb250LXNpemU6IDEwcHg7CisgICAgY29s
b3I6IGJsYWNrOworfQorCisuc2Nyb2xsYWJsZS5kZWJ1ZyA+IC5kaWFnbm9zdGljcyB7CisgICAg
ZGlzcGxheTogYmxvY2s7Cit9CisKKy5zY3JvbGxhYmxlID4gLmRpYWdub3N0aWNzID4gLnJvdyB7
CisgICAgZGlzcGxheTogdGFibGUtcm93OworfQorCisuc2Nyb2xsYWJsZSA+IC5kaWFnbm9zdGlj
cyA+IC5yb3cgPiBkaXYgeworICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CisgICAgcGFkZGluZzog
MnB4IDA7Cit9CisKKy5zY3JvbGxhYmxlID4gLmRpYWdub3N0aWNzID4gLnJvdyA+IC5sYWJlbCB7
CisgICAgY29sb3I6ICM4ODg7Cit9CisKKy5zY3JvbGxhYmxlID4gLmRpYWdub3N0aWNzID4gLnJv
dyA+IC52YWx1ZSB7CisgICAgcGFkZGluZy1sZWZ0OiA2cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JvbGxhYmxlVmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njcm9sbGFibGVWaWV3
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE2NDQ5NWE2NmVjNzlmOGFkYWJmZDQxYjNlNzBmMDhkY2YxZDNmYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3JvbGxhYmxlVmlldy5qcwpAQCAtMCwwICsxLDM3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dl
Ykluc3BlY3Rvci5TY3JvbGxhYmxlVmlldyA9IGNsYXNzIFNjcm9sbGFibGVWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihzY3JvbGxEaXJlY3Rpb24sIHpv
b21EaXJlY3Rpb24pCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJzY3JvbGxhYmxlIik7CisKKyAgICAgICAgdGhpcy5fc2Nyb2xs
RGlyZWN0aW9uID0gc2Nyb2xsRGlyZWN0aW9uOworICAgICAgICB0aGlzLl9jb250ZW50T2Zmc2V0
ID0gbmV3IFdlYkluc3BlY3Rvci5Qb2ludCgwLCAwKTsKKyAgICAgICAgdGhpcy5fY29udGVudFNp
emUgPSBuZXcgV2ViSW5zcGVjdG9yLlNpemUoMCwgMCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRT
Y2FsZUZhY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQoMSwgMSk7CisgICAgICAgIHRoaXMu
X2ludmVyc2VDb250ZW50U2NhbGVGYWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlBvaW50KDEsIDEp
OworICAgICAgICB0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQgPSBmYWxzZTsKKworICAgICAg
ICB0aGlzLl9tb3VzZVdoZWVsRGVsdGEgPSAwOworICAgICAgICB0aGlzLl96b29tRGlyZWN0aW9u
ID0gem9vbURpcmVjdGlvbiB8fCBXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcuWm9vbURpcmVj
dGlvbi5Ob25lOworICAgICAgICB0aGlzLl9taW5pbXVtWm9vbUZhY3RvciA9IDAuMTsKKyAgICAg
ICAgdGhpcy5fbWF4aW11bVpvb21GYWN0b3IgPSAxMDsKKyAgICAgICAgdGhpcy5fem9vbUZhY3Rv
ciA9IDE7CisKKyAgICAgICAgZnVuY3Rpb24gY3JlYXRlU2Nyb2xsYmFyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbGV0IHNjcm9sbGJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgICAgIHNjcm9sbGJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2Ny
b2xsYmFyIik7CisgICAgICAgICAgICBzY3JvbGxiYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
InNjcm9sbCIsIHRoaXMuX2hhbmRsZVNjcm9sbEV2ZW50LmJpbmQodGhpcykpOworCisgICAgICAg
ICAgICBsZXQgY29udGVudFNpemVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICAgICAgY29udGVudFNpemVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzY3Jv
bGwtc2l6ZXIiKTsKKyAgICAgICAgICAgIHNjcm9sbGJhckVsZW1lbnQuYXBwZW5kKGNvbnRlbnRT
aXplckVsZW1lbnQpOworCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHNjcm9sbGJh
ckVsZW1lbnQpOworCisgICAgICAgICAgICByZXR1cm4gc2Nyb2xsYmFyRWxlbWVudDsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh0aGlzLl9jYW5TY3JvbGxIb3Jpem9udGFsKCkpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2hvcml6b250YWxTY3JvbGxiYXJFbGVtZW50ID0gY3JlYXRlU2Nyb2xsYmFy
LmNhbGwodGhpcyk7CisgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsU2Nyb2xsYmFyRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJob3Jpem9udGFsIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGhpcy5fY2FuU2Nyb2xsVmVydGljYWwoKSkgeworICAgICAgICAgICAgdGhpcy5fdmVydGljYWxT
Y3JvbGxiYXJFbGVtZW50ID0gY3JlYXRlU2Nyb2xsYmFyLmNhbGwodGhpcyk7CisgICAgICAgICAg
ICB0aGlzLl92ZXJ0aWNhbFNjcm9sbGJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmVydGljYWwi
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9zY3JvbGxEaXJlY3Rpb24gPT09IFdl
Ykluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5TY3JvbGxEaXJlY3Rpb24uQm90aCkKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzY3JvbGwtYm90aCIpOworCisgICAgICAg
IGlmICh0aGlzLl9jYW5ab29tKCkgfHwgdGhpcy5fY2FuU2Nyb2xsVmVydGljYWwoKSkKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsIHRoaXMuX2hhbmRs
ZVdoZWVsRXZlbnQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgLy8gRGVidWcgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhpcy5fZGlhZ25vc3RpY3NFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2RpYWdub3N0aWNzRWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJkaWFnbm9zdGljcyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHRoaXMuX2RpYWdu
b3N0aWNzRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgc2Nyb2xs
RGlyZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxEaXJlY3Rpb247
CisgICAgfQorCisgICAgZ2V0IHpvb21EaXJlY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3pvb21EaXJlY3Rpb247CisgICAgfQorCisgICAgZ2V0IGNvbnRlbnRTaXplKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50U2l6ZS5jb3B5KCk7CisgICAgfQorCisg
ICAgc2V0IGNvbnRlbnRTaXplKHNpemUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY29udGVu
dFNpemUuZXF1YWxzKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X2NvbnRlbnRTaXplID0gc2l6ZTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworICAgIH0K
KworICAgIGdldCB2aXNpYmxlQ29udGVudFNpemUoKQorICAgIHsKKyAgICAgICAgbGV0IHNpemUg
PSB0aGlzLnNpemU7CisgICAgICAgIHNpemUud2lkdGggLz0gdGhpcy5fY29udGVudFNjYWxlRmFj
dG9yLng7CisgICAgICAgIHNpemUuaGVpZ2h0IC89IHRoaXMuX2NvbnRlbnRTY2FsZUZhY3Rvci55
OworICAgICAgICBpZiAodGhpcy5fY2FuWm9vbSgpKQorICAgICAgICAgICAgc2l6ZS53aWR0aCAv
PSB0aGlzLl96b29tRmFjdG9yOworCisgICAgICAgIHJldHVybiBzaXplOworICAgIH0KKworICAg
IGdldCBjb250ZW50T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
T2Zmc2V0LmNvcHkoKTsKKyAgICB9CisKKyAgICBzZXQgY29udGVudE9mZnNldChwb2ludCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9jb250ZW50T2Zmc2V0LmVxdWFscyhwb2ludCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29udGVudE9mZnNldCA9IHBvaW50Owor
ICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisgICAgfQorCisgICAgZ2V0IGNvbnRlbnRTY2Fs
ZUZhY3RvcigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFNjYWxlRmFjdG9y
LmNvcHkoKTsKKyAgICB9CisKKyAgICBzZXQgY29udGVudFNjYWxlRmFjdG9yKHBvaW50KQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRTY2FsZUZhY3Rvci5lcXVhbHMocG9pbnQpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NvbnRlbnRTY2FsZUZhY3RvciA9
IHBvaW50OworICAgICAgICB0aGlzLl9pbnZlcnNlQ29udGVudFNjYWxlRmFjdG9yID0gbmV3IFdl
Ykluc3BlY3Rvci5Qb2ludCgxIC8gcG9pbnQueCwgMSAvIHBvaW50LnkpOworICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CisgICAgfQorCisgICAgZ2V0IG1pbmltdW1ab29tRmFjdG9yKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9taW5pbXVtWm9vbUZhY3RvcjsKKyAgICB9CisKKyAg
ICBzZXQgbWluaW11bVpvb21GYWN0b3IoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9taW5p
bXVtWm9vbUZhY3RvciA9PT0geCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9taW5pbXVtWm9vbUZhY3RvciA9IHg7CisgICAgICAgIGlmICh0aGlzLl96b29tRmFjdG9yID49
IHRoaXMuX21pbmltdW1ab29tRmFjdG9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIElmIHRoZSBjdXJyZW50IHpvb20gZmFjdG9yIGlzIGxlc3MgdGhhbiB0aGUgbmV3IG1pbmlt
dW0gem9vbSBmYWN0b3IsCisgICAgICAgIC8vIGNsYW1wIHRoZSB6b29tIGZhY3RvciBhbmQgZm9y
Y2UgYW4gdXBkYXRlLgorICAgICAgICB0aGlzLl96b29tRmFjdG9yID0gdGhpcy5fbWluaW11bVpv
b21GYWN0b3I7CisgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKKyAgICB9CisKKyAgICBnZXQg
bWF4aW11bVpvb21GYWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21heGltdW1a
b29tRmFjdG9yOworICAgIH0KKworICAgIHNldCBtYXhpbXVtWm9vbUZhY3Rvcih4KQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX21heGltdW1ab29tRmFjdG9yID09PSB4KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX21heGltdW1ab29tRmFjdG9yID0geDsKKyAgICAgICAg
aWYgKHRoaXMuX3pvb21GYWN0b3IgPD0gdGhpcy5fbWF4aW11bVpvb21GYWN0b3IpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgem9vbSBmYWN0b3IgaXMg
Z3JlYXRlciB0aGFuIHRoZSBuZXcgbWF4aW11bSB6b29tIGZhY3RvciwKKyAgICAgICAgLy8gY2xh
bXAgdGhlIHpvb20gZmFjdG9yIGFuZCBmb3JjZSBhbiB1cGRhdGUuCisgICAgICAgIHRoaXMuX3pv
b21GYWN0b3IgPSB0aGlzLl9tYXhpbXVtWm9vbUZhY3RvcjsKKyAgICAgICAgdGhpcy5uZWVkc0xh
eW91dCgpOworICAgIH0KKworICAgIGdldCB6b29tRmFjdG9yKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl96b29tRmFjdG9yOworICAgIH0KKworICAgIHNldCB6b29tRmFjdG9yKHgpCisg
ICAgeworICAgICAgICB4ID0gTWF0aC5tYXgodGhpcy5fbWluaW11bVpvb21GYWN0b3IsIE1hdGgu
bWluKHRoaXMuX21heGltdW1ab29tRmFjdG9yLCB4KSk7CisgICAgICAgIGlmICh0aGlzLl96b29t
RmFjdG9yID09PSB4KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3pvb21G
YWN0b3IgPSB4OworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CisgICAgfQorCisgICAgc2V0
IHNob3dEaWFnbm9zdGljcyh4KQorICAgIHsKKyAgICAgICAgaWYgKHgpCisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZGVidWciKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRlYnVnIik7CisgICAgfQorCisg
ICAgdXBkYXRlTGF5b3V0KCkKKyAgICB7CisgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwor
CisgICAgICAgIGlmICh0aGlzLl9jYW5TY3JvbGxIb3Jpem9udGFsKCkpIHsKKyAgICAgICAgICAg
IGxldCBjb250ZW50U2l6ZXJFbGVtZW50ID0gdGhpcy5faG9yaXpvbnRhbFNjcm9sbGJhckVsZW1l
bnQuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlRWxlbWVudFBvc2l0aW9uKGNv
bnRlbnRTaXplckVsZW1lbnQsIHRoaXMuX2NvbnRlbnRTaXplLndpZHRoICogdGhpcy5fY29udGVu
dFNjYWxlRmFjdG9yLnggKiB0aGlzLl96b29tRmFjdG9yLCAid2lkdGgiLCAicHgiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh0aGlzLl9jYW5TY3JvbGxWZXJ0aWNhbCgpKSB7CisgICAgICAg
ICAgICBsZXQgY29udGVudFNpemVyRWxlbWVudCA9IHRoaXMuX3ZlcnRpY2FsU2Nyb2xsYmFyRWxl
bWVudC5maXJzdENoaWxkOworICAgICAgICAgICAgdGhpcy51cGRhdGVFbGVtZW50UG9zaXRpb24o
Y29udGVudFNpemVyRWxlbWVudCwgdGhpcy5fY29udGVudFNpemUuaGVpZ2h0ICogdGhpcy5fY29u
dGVudFNjYWxlRmFjdG9yLnksICJoZWlnaHQiLCAicHgiKTsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbnN0IHZpc2libGVDb250ZW50U2l6ZSA9IHRoaXMudmlzaWJsZUNvbnRlbnRTaXplOworCisg
ICAgICAgIGNvbnN0IG1heGltdW1Db250ZW50T2Zmc2V0WCA9IE1hdGgubWF4KDAsIHRoaXMuX2Nv
bnRlbnRTaXplLndpZHRoIC0gdmlzaWJsZUNvbnRlbnRTaXplLndpZHRoKTsKKyAgICAgICAgdGhp
cy5fY29udGVudE9mZnNldC54ID0gTnVtYmVyLmNvbnN0cmFpbih0aGlzLl9jb250ZW50T2Zmc2V0
LngsIDAsIG1heGltdW1Db250ZW50T2Zmc2V0WCk7CisKKyAgICAgICAgY29uc3QgbWF4aW11bUNv
bnRlbnRPZmZzZXRZID0gTWF0aC5tYXgoMCwgdGhpcy5fY29udGVudFNpemUuaGVpZ2h0IC0gdGhp
cy52aXNpYmxlQ29udGVudFNpemUuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fY29udGVudE9mZnNl
dC55ID0gTWF0aC5taW4obWF4aW11bUNvbnRlbnRPZmZzZXRZLCB0aGlzLl9jb250ZW50T2Zmc2V0
LnkpOworCisgICAgICAgIGlmICghdGhpcy5fZG9udFVwZGF0ZVNjcm9sbFZhbHVlKSB7CisgICAg
ICAgICAgICB0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQgPSB0cnVlOworCisgICAgICAgICAg
ICBpZiAodGhpcy5fY2FuU2Nyb2xsSG9yaXpvbnRhbCgpKQorICAgICAgICAgICAgICAgIHRoaXMu
X2hvcml6b250YWxTY3JvbGxiYXJFbGVtZW50LnNjcm9sbExlZnQgPSBNYXRoLmNlaWwodGhpcy5f
Y29udGVudE9mZnNldC54ICogdGhpcy5fY29udGVudFNjYWxlRmFjdG9yLnggKiB0aGlzLl96b29t
RmFjdG9yKTsKKworICAgICAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbFZlcnRpY2FsKCkpCisg
ICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWxTY3JvbGxiYXJFbGVtZW50LnNjcm9sbFRvcCA9
IE1hdGguY2VpbCh0aGlzLl9jb250ZW50T2Zmc2V0LnkgKiB0aGlzLl9jb250ZW50U2NhbGVGYWN0
b3IueSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEZWJ1ZyBpbmZvcm1hdGlvbjogb3Zlcmxh
eSBzY3JvbGwvem9vbSBwcm9wZXJ0aWVzLgorICAgICAgICBsZXQgYXR0cnMgPSBbXTsKKyAgICAg
ICAgYXR0cnMucHVzaChbIkNvbnRlbnQgb2Zmc2V0IiwgdGhpcy5jb250ZW50T2Zmc2V0LngudG9G
aXhlZCg0KSArICIsICIgKyB0aGlzLmNvbnRlbnRPZmZzZXQueS50b0ZpeGVkKDQpXSk7CisgICAg
ICAgIGF0dHJzLnB1c2goWyJDb250ZW50IHNjYWxlIiwgdGhpcy5jb250ZW50U2NhbGVGYWN0b3Iu
eCArICIsICIgKyB0aGlzLmNvbnRlbnRTY2FsZUZhY3Rvci55XSk7CisgICAgICAgIGF0dHJzLnB1
c2goWyJDb250ZW50IHNpemUiLCB0aGlzLmNvbnRlbnRTaXplLndpZHRoLnRvRml4ZWQoNCkgKyAi
LCAiICsgdGhpcy5jb250ZW50U2l6ZS5oZWlnaHQudG9GaXhlZCg0KV0pOworICAgICAgICBhdHRy
cy5wdXNoKFsiVmlzaWJsZSBzaXplIiwgdmlzaWJsZUNvbnRlbnRTaXplLndpZHRoLnRvRml4ZWQo
NCkgKyAiLCAiICsgdmlzaWJsZUNvbnRlbnRTaXplLmhlaWdodC50b0ZpeGVkKDQpXSk7CisgICAg
ICAgIGF0dHJzLnB1c2goWyJWaWV3IHNpemUiLCB0aGlzLnNpemUud2lkdGggKyAiIOKoiSAiICsg
dGhpcy5zaXplLmhlaWdodCArICIgcHgiXSk7CisgICAgICAgIGF0dHJzLnB1c2goWyJab29tIiwg
dGhpcy56b29tRmFjdG9yLnRvRml4ZWQoMykgKyAi4qiJIl0pOworCisgICAgICAgIHRoaXMuX2Rp
YWdub3N0aWNzRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIGZvciAoY29uc3Qg
YXR0ciBvZiBhdHRycykgeworICAgICAgICAgICAgbGV0IGxhYmVsRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNzTGlz
dC5hZGQoImtleSIpOworICAgICAgICAgICAgbGFiZWxFbGVtZW50LnRleHRDb250ZW50ID0gYXR0
clswXTsKKyAgICAgICAgICAgIGxldCB2YWx1ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHZhbHVlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2YWx1
ZSIpOworICAgICAgICAgICAgdmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gYXR0clsxXTsKKwor
ICAgICAgICAgICAgbGV0IHJvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgICAgIHJvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicm93Iik7CisgICAgICAg
ICAgICByb3dFbGVtZW50LmFwcGVuZChsYWJlbEVsZW1lbnQsIHZhbHVlRWxlbWVudCk7CisgICAg
ICAgICAgICB0aGlzLl9kaWFnbm9zdGljc0VsZW1lbnQuYXBwZW5kKHJvd0VsZW1lbnQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2hhbmRsZVNjcm9sbEV2ZW50
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lnbm9yZU5leHRTY3JvbGxFdmVudCkg
eworICAgICAgICAgICAgdGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50ID0gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9kb250VXBkYXRlU2Ny
b2xsVmFsdWUgPSB0cnVlOworCisgICAgICAgIGlmICh0aGlzLl9jYW5TY3JvbGxIb3Jpem9udGFs
KCkpCisgICAgICAgICAgICB0aGlzLl9jb250ZW50T2Zmc2V0LnggPSAodGhpcy5faG9yaXpvbnRh
bFNjcm9sbGJhckVsZW1lbnQuc2Nyb2xsTGVmdCAvIHRoaXMuX2NvbnRlbnRTY2FsZUZhY3Rvci54
KSAvIHRoaXMuX3pvb21GYWN0b3I7CisKKyAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbFZlcnRp
Y2FsKCkpCisgICAgICAgICAgICB0aGlzLl9jb250ZW50T2Zmc2V0LnkgPSB0aGlzLl92ZXJ0aWNh
bFNjcm9sbGJhckVsZW1lbnQuc2Nyb2xsVG9wIC8gdGhpcy5fY29udGVudFNjYWxlRmFjdG9yLnk7
CisKKyAgICAgICAgLy8gRm9yY2UgbGF5b3V0IHNvIHdlIGNhbiB1cGRhdGUgd2l0aCB0aGUgc2Ny
b2xsIHBvc2l0aW9uIHN5bmNocm9ub3VzbHkuCisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7
CisKKyAgICAgICAgdGhpcy5fZG9udFVwZGF0ZVNjcm9sbFZhbHVlID0gZmFsc2U7CisgICAgfQor
CisgICAgX2hhbmRsZVdoZWVsRXZlbnQoZXZlbnQpCisgICAgeworICAgICAgICAvLyBJZ25vcmUg
Y2xvbmVkIGV2ZW50cyB0aGF0IGNvbWUgb3VyIHdheSwgd2UgYWxyZWFkeSBoYW5kbGVkIHRoZSBv
cmlnaW5hbC4KKyAgICAgICAgaWYgKGV2ZW50W1dlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5D
bG9uZWRFdmVudFN5bWJvbF0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gUmVx
dWlyZSB0d2ljZSB0aGUgdmVydGljYWwgZGVsdGEgdG8gb3ZlcmNvbWUgaG9yaXpvbnRhbCBzY3Jv
bGxpbmcuIFRoaXMgcHJldmVudHMgbW9zdAorICAgICAgICAvLyBjYXNlcyBvZiBpbmFkdmVydGVu
dCB6b29taW5nIGZvciBzbGlnaHRseSBkaWFnb25hbCBzY3JvbGxzLgorICAgICAgICBpZiAodGhp
cy5fY2FuU2Nyb2xsSG9yaXpvbnRhbCgpICYmIE1hdGguYWJzKGV2ZW50LmRlbHRhWCkgPj0gTWF0
aC5hYnMoZXZlbnQuZGVsdGFZKSAqIDAuNSkgeworICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIGV2
ZW50IHRvIGRpc3BhdGNoIGl0IG9uIHRoZSBzY3JvbGwgY29udGFpbmVyLiBNYXJrIGl0IGFzIGNs
b25lZCBzbyB3ZSBkb24ndCBnZXQgaW50byBhIGxvb3AuCisgICAgICAgICAgICBsZXQgbmV3V2hl
ZWxFdmVudCA9IG5ldyBldmVudC5jb25zdHJ1Y3RvcihldmVudC50eXBlLCBldmVudCk7CisgICAg
ICAgICAgICBuZXdXaGVlbEV2ZW50W1dlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5DbG9uZWRF
dmVudFN5bWJvbF0gPSB0cnVlOworCisgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsU2Nyb2xs
YmFyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ld1doZWVsRXZlbnQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVxdWlyZSB0d2ljZSB0aGUgaG9yaXpvbnRh
bCBkZWx0YSB0byBvdmVyY29tZSB2ZXJ0aWNhbCBzY3JvbGxpbmcuCisgICAgICAgIGlmICh0aGlz
Ll9jYW5TY3JvbGxWZXJ0aWNhbCgpICYmIE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgPj0gTWF0aC5h
YnMoZXZlbnQuZGVsdGFYKSAqIDAuNSkgeworICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIGV2ZW50
IHRvIGRpc3BhdGNoIGl0IG9uIHRoZSBzY3JvbGwgY29udGFpbmVyLiBNYXJrIGl0IGFzIGNsb25l
ZCBzbyB3ZSBkb24ndCBnZXQgaW50byBhIGxvb3AuCisgICAgICAgICAgICBsZXQgbmV3V2hlZWxF
dmVudCA9IG5ldyBldmVudC5jb25zdHJ1Y3RvcihldmVudC50eXBlLCBldmVudCk7CisgICAgICAg
ICAgICBuZXdXaGVlbEV2ZW50W1dlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5DbG9uZWRFdmVu
dFN5bWJvbF0gPSB0cnVlOworCisgICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbFNjcm9sbGJhckVs
ZW1lbnQuZGlzcGF0Y2hFdmVudChuZXdXaGVlbEV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBtb3VzZSBwb3NpdGlvbiBpbiB3
b3JsZCBzcGFjZS4KKyAgICAgICAgY29uc3QgbW91c2VQb3NpdGlvblZpZXcgPSBXZWJJbnNwZWN0
b3IuUG9pbnQuZnJvbUV2ZW50SW5FbGVtZW50KGV2ZW50LCB0aGlzLmVsZW1lbnQpOworICAgICAg
ICBsZXQgbW91c2VQb3NpdGlvbkNvbnRlbnRPZmZzZXQgPSBtb3VzZVBvc2l0aW9uVmlldy5waWVj
ZXdpc2VQcm9kdWN0KHRoaXMuX2ludmVyc2VDb250ZW50U2NhbGVGYWN0b3IpOworICAgICAgICBt
b3VzZVBvc2l0aW9uQ29udGVudE9mZnNldC54IC89IHRoaXMuX3pvb21GYWN0b3I7CisKKyAgICAg
ICAgY29uc3QgbW91c2VQb3NpdGlvbkNvbnRlbnQgPSB0aGlzLl9jb250ZW50T2Zmc2V0Lm9mZnNl
dChtb3VzZVBvc2l0aW9uQ29udGVudE9mZnNldCk7CisgICAgICAgIGNvbnN0IGRldmljZURpcmVj
dGlvbiA9IGV2ZW50LndlYmtpdERpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA/IDEgOiAtMTsK
KyAgICAgICAgY29uc3QgZGVsdGEgPSBldmVudC5kZWx0YVkgKiBXZWJJbnNwZWN0b3IuU2Nyb2xs
YWJsZVZpZXcuU2Nyb2xsRGVsdGFTY2FsZSAqIGRldmljZURpcmVjdGlvbjsKKworICAgICAgICB0
aGlzLnpvb21GYWN0b3IgKz0gZGVsdGE7CisKKyAgICAgICAgaWYgKHRoaXMuX2NhblNjcm9sbEhv
cml6b250YWwoKSkgeworICAgICAgICAgICAgY29uc3QgY29udGVudE9mZnNldFggPSBtb3VzZVBv
c2l0aW9uQ29udGVudC54IC0gKG1vdXNlUG9zaXRpb25WaWV3LnggLyB0aGlzLl9jb250ZW50U2Nh
bGVGYWN0b3IueCkgLyB0aGlzLl96b29tRmFjdG9yOworICAgICAgICAgICAgdGhpcy5fY29udGVu
dE9mZnNldC54ID0gY29udGVudE9mZnNldFg7CisgICAgICAgIH0KKworICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9
CisKKyAgICBfY2FuU2Nyb2xsSG9yaXpvbnRhbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fc2Nyb2xsRGlyZWN0aW9uICE9PSBXZWJJbnNwZWN0b3IuU2Nyb2xsYWJsZVZpZXcuU2Nyb2xs
RGlyZWN0aW9uLlZlcnRpY2FsOworICAgIH0KKworICAgIF9jYW5TY3JvbGxWZXJ0aWNhbCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRGlyZWN0aW9uICE9PSBXZWJJbnNwZWN0
b3IuU2Nyb2xsYWJsZVZpZXcuU2Nyb2xsRGlyZWN0aW9uLkhvcml6b250YWw7CisgICAgfQorCisg
ICAgX2Nhblpvb20oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3pvb21EaXJlY3Rpb24g
IT09IFdlYkluc3BlY3Rvci5TY3JvbGxhYmxlVmlldy5ab29tRGlyZWN0aW9uLk5vbmU7CisgICAg
fQorfTsKKworV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3LkNsb25lZEV2ZW50U3ltYm9sID0g
U3ltYm9sKCJzY3JvbGxhYmxlLXZpZXctY2xvbmVkLWV2ZW50Iik7CisKK1dlYkluc3BlY3Rvci5T
Y3JvbGxhYmxlVmlldy5TY3JvbGxEZWx0YVNjYWxlID0gMC4wMDE7CisKK1dlYkluc3BlY3Rvci5T
Y3JvbGxhYmxlVmlldy5TY3JvbGxEaXJlY3Rpb24gPSB7CisgICAgSG9yaXpvbnRhbDogU3ltYm9s
KCJzY3JvbGwtZGlyZWN0aW9uLWhvcml6b250YWwiKSwKKyAgICBWZXJ0aWNhbDogU3ltYm9sKCJz
Y3JvbGwtZGlyZWN0aW9uLXZlcnRpY2FsIiksCisgICAgQm90aDogU3ltYm9sKCJzY3JvbGwtZGly
ZWN0aW9uLWJvdGgiKQorfTsKKworV2ViSW5zcGVjdG9yLlNjcm9sbGFibGVWaWV3Llpvb21EaXJl
Y3Rpb24gPSB7CisgICAgTm9uZTogU3ltYm9sKCJ6b29tLWRpcmVjdGlvbi1ub25lIiksCisgICAg
SG9yaXpvbnRhbDogU3ltYm9sKCJ6b29tLWRpcmVjdGlvbi1ob3Jpem9udGFsIikKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmNz
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuY3NzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZkZDY5NzNmNGZkNGI4N2QzMTdjOTQ0Zjk0OGE2ZDg2NjAxMDdhMDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aWV3LmNzcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpZXcgeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7
CisgICAgcmlnaHQ6IDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDk3ZjgzYTZkZGU2NmI0MTQyNTU5MmNh
NzM0MGY3YmNiZjMyNDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1dlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIo
KTsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aWV3
Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuX192aWV3ID0gdGhpczsKKyAgICAgICAgdGhpcy5f
c3ViVmlld3MgPSBbXTsKKyAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IG51bGw7CisgICAgICAg
IHRoaXMuX2NhY2hlZEJvdW5kaW5nQ2xpZW50UmVjdCA9IG51bGw7CisgICAgfQorCisgICAgLy8g
UHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKKyAgICB9CisKKyAgICBnZXQgcGFyZW50VmlldygpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcGFyZW50VmlldzsKKyAgICB9CisKKyAgICBnZXQgc2l6ZSgpCisgICAgewor
ICAgICAgICBjb25zdCBjbGllbnRSZWN0ID0gdGhpcy5fZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CisgICAgICAgIHJldHVybiBjbGllbnRSZWN0ID8gbmV3IFdlYkluc3BlY3Rvci5TaXplKGNsaWVu
dFJlY3Qud2lkdGgsIGNsaWVudFJlY3QuaGVpZ2h0KSA6IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSgw
LCAwKTsKKyAgICB9CisKKyAgICBhZGRTdWJWaWV3KHZpZXcpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydCh2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworICAgICAgICBj
b25zb2xlLmFzc2VydCghdmlldy5wYXJlbnRWaWV3LCAiU3VidmlldyBhbHJlYWR5IGhhcyBhIHBh
cmVudCB2aWV3LiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdmlldy5lbGVtZW50LnBhcmVu
dE5vZGUsICJTdWJ2aWV3IGVsZW1lbnQgYWxyZWFkeSBleGlzdHMgaW4gdGhlIERPTS4iKTsKKwor
ICAgICAgICB2aWV3Ll9wYXJlbnRWaWV3ID0gdGhpczsKKyAgICAgICAgdGhpcy5fc3ViVmlld3Mu
cHVzaCh2aWV3KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmQodmlldy5lbGVtZW50KTsK
KyAgICB9CisKKyAgICByZW1vdmVTdWJWaWV3KHZpZXcpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydCh2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworICAgICAgICBjb25z
b2xlLmFzc2VydCh2aWV3LnBhcmVudFZpZXcgPT09IHRoaXMsICJTdWJ2aWV3IGJlbG9uZ3MgdG8g
YSBkaWZmZXJlbnQgcGFyZW50IHZpZXcuIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcu
ZWxlbWVudC5wYXJlbnROb2RlID09PSB0aGlzLmVsZW1lbnQsICJTdWJ2aWV3IGVsZW1lbnQgc2hv
dWxkIGJlIGEgY2hpbGQgb2YgdGhpcyB2aWV3J3MgZWxlbWVudC4iKTsKKworICAgICAgICB0aGlz
Ll9zdWJWaWV3cy5yZW1vdmUodmlldywgdHJ1ZSk7CisgICAgICAgIHZpZXcuX3BhcmVudFZpZXcg
PSBudWxsOworICAgICAgICB2aWV3LnJlbW92ZSgpOworICAgIH0KKworICAgIHVwZGF0ZUxheW91
dEZvclJlc2l6ZSgpCisgICAgeworICAgICAgICB0aGlzLl9jYWNoZWRCb3VuZGluZ0NsaWVudFJl
Y3QgPSBudWxsOworICAgICAgICB0aGlzLl9zdWJWaWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7IHZp
ZXcudXBkYXRlTGF5b3V0Rm9yUmVzaXplKCk7IH0pOworCisgICAgICAgIHRoaXMudXBkYXRlTGF5
b3V0KCk7CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0KCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYW5j
ZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsK
KyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRl
ZmluZWQ7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zdWJWaWV3cy5mb3JFYWNoKCh2aWV3
KSA9PiB7IHZpZXcudXBkYXRlTGF5b3V0KCk7IH0pOworCisgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBuZWVkc0xh
eW91dCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxh
eW91dC5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICB1cGRhdGVFbGVtZW50UG9zaXRpb24oZWxl
bWVudCwgdmFsdWUsIHByb3BlcnR5TmFtZSwgdW5pdHMpCisgICAgeworICAgICAgICB1bml0cyA9
IHVuaXRzIHx8ICIlIjsKKyAgICAgICAgaWYgKHVuaXRzID09PSAiJSIpIHsKKyAgICAgICAgICAg
IHZhbHVlICo9IDEwMDsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9GaXhlZCgyKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHBhcnNlSW50KGVsZW1lbnQu
c3R5bGVbcHJvcGVydHlOYW1lXSk7CisgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHZhbHVl
KQorICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eU5hbWVdID0gdmFsdWUgKyB1bml0
czsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fY2FjaGVkQm91bmRpbmdDbGllbnRSZWN0ICYm
IGRvY3VtZW50LmNvbnRhaW5zKHRoaXMuZWxlbWVudCkpCisgICAgICAgICAgICB0aGlzLl9jYWNo
ZWRCb3VuZGluZ0NsaWVudFJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZEJvdW5kaW5nQ2xpZW50UmVjdDsKKyAg
ICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263649</attachid>
            <date>2015-10-20 19:07:45 -0700</date>
            <delta_ts>2015-10-22 14:55:19 -0700</delta_ts>
            <desc>[Patch] WIP - has issues</desc>
            <filename>bug-149186-20151020190703.patch</filename>
            <type>text/plain</type>
            <size>59224</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
OTRkYThlMTRiYWQzM2YzYTA3ZDlhMmQ2MjBlNGRjZjcyN2FkMzg3Li5mNDZmZjM0MDE1YmRiZWVh
MDU3ODUzODg1MjI4ZTM5ODA2M2IyZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMTUtMTAtMjAgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIHNvIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IG1heSBiZSBhc3NvY2lhdGVkIHdpdGggdGhl
IFZpZXcgb2JqZWN0LAorICAgICAgICByYXRoZXIgdGhhbiBkeW5hbWljYWxseSBjcmVhdGluZyBh
IG5ldyBlbGVtZW50LiBWaWV3IGFsc28gYWRkcyB0aGUgYF9fdmlld2AgcHJvcGVydHkgdG8KKyAg
ICAgICAgaXRzIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcg
b2YgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIGhhbmRmdWwgb2YgdmlldyBj
bGFzc2VzIHRoYXQgaGF2ZSBiZWVuIHJlZmFjdG9yZWQgaW4gdGhpcyBwYXRjaCwgdGhlIGNoYW5n
ZXMgYXJlCisgICAgICAgIGxhcmdlbHkgbWVjaGFuaWNhbC4gRHluYW1pY2FsbHkgY3JlYXRlZCBE
T00gZWxlbWVudHMgYW5kIHJlZHVuZGFudCBlbGVtZW50IGdldHRlcnMgaGF2ZSBiZWVuCisgICAg
ICAgIHJlbW92ZWQsIHVwZGF0ZUxheW91dElmTmVlZGVkIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IG5l
ZWRzTGF5b3V0LCBhbmQgaW4gYSBmZXcgY2FzZXMgdGhlIGNvbmNyZXRlCisgICAgICAgIHZpZXcn
cyB1cGRhdGVMYXlvdXQgaW1wbGVtZW50YXRpb24gaGFzIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFz
IHRoZSB3b3JrIG5lZWRlZCB0byBsYXlvdXQgY2hpbGQKKyAgICAgICAgdmlld3MgaGFzIGJlZW4g
c3Vic3VtZWQgdW5kZXIgdGhlIGJhc2UgY2xhc3MgVmlldy4KKworICAgICAgICBNb3JlIHZpZXcg
Y2xhc3NlcyB3aWxsIGJlIHJlZmFjdG9yZWQgaW4gc3Vic2VxdWVudCBwYXRjaGVzLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnNvbGVQcm9tcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVBy
b21wdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUudXBk
YXRlTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlw
ZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuX2NvbnRl
bnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0
KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFp
bmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUudXBkYXRl
TGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQgY29tcG9u
ZW50cyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnJlbW92ZU5hdmlnYXRp
b25JdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS51
cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90
eXBlLmdldCBtaW5pbXVtV2lkdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIucHJvdG90eXBlLl9tb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIucHJvdG90eXBlLl9tb3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyLnByb3RvdHlwZS5fbW91c2VVcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5wcm90b3R5cGUuX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbi51cGRh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90
eXBlLnVwZGF0ZUxheW91dFNvb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLnNldCBoaWRkZW4pOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJv
dG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xl
LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuaW5zZXJ0VGFiQmFySXRlbS5hbmlt
YXRlVGFicyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRU
YWJCYXJJdGVtLnJlbW92ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnBy
b3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIu
cHJvdG90eXBlLnJlbW92ZVRhYkJhckl0ZW0uYW5pbWF0ZVRhYnMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5yZW1vdmVTdHlsZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX3JlY29yZFRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlw
ZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UuKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlVXApOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU5ld1RhYk1vdXNl
RW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5
b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5w
cm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGFiQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQnJvd3Nlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUu
Z2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIu
cHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuc2V0IGRpc3BsYXlNb2RlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5zZXQgc2l6ZU1vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLmN1c3RvbVVwZGF0ZUxheW91
dCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6IEFkZGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlLmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5nZXQgc3Vidmlld3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmFk
ZFN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbW92ZVN1
YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUubmVlZHNMYXlvdXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUVsZW1lbnRQb3NpdGlv
bik6CisKIDIwMTUtMTAtMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBKYXZhU2NyaXB0Q29yZSBzaG91bGQgcGFyc2Ugc291
cmNlVVJMIGFuZCBzb3VyY2VNYXBwaW5nVVJMIGRpcmVjdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1YjQ4NzQxODBiNWNjM2U1ZGI5
NzhiNmY1ZjkyYzZlMzNkMmEzYmQ1Li5lOWI5YjUxN2Q1MTUwNGMzMjY4M2I0MzlmMWRkNzNiYWIz
NTdlMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCkBAIC0zMzUsNiArMzM1LDggQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1R5cGVTZXQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvV3JhcHBlZFByb21pc2UuanMi
Pjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1ZpZXcuanMiPjwvc2NyaXB0Pgor
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVDb21tYW5kVmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVNZXNzYWdlVmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQ
cm9tcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25z
b2xlUHJvbXB0LmpzCmluZGV4IDgwZjQ5NGJiZjAxNGU1YTJhMzliZmZiY2E4NjQwMjNhMjE4ZDUz
MjEuLjAyZGY2NzliYmNlNTc3NGRjNjc2ZGMxODMyMTIyZDhkNzZkNWE4MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29s
ZVByb21wdC5qcwpAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBjbGFzcyBDb25z
b2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNvbnNv
bGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcK
IHsKICAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSwgbWltZVR5cGUsIGVsZW1lbnQpCiAgICAgewot
ICAgICAgICBzdXBlcigpOworICAgICAgICBzdXBlcihlbGVtZW50KTsKIAogICAgICAgICBtaW1l
VHlwZSA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUpLnR5cGU7CiAKLSAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS1wcm9tcHQiLCBXZWJJbnNwZWN0
b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLXByb21wdCIsIFdlYkluc3BlY3Rvci5TeW50YXhIaWdo
bGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVn
YXRlIHx8IG51bGw7CiAKQEAgLTY2LDExICs2NSw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJv
bXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAog
ICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGRlbGVnYXRlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsKQEAgLTEyOCw2ICsxMjIsOCBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAKICAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKKyAgICAgICAgc3VwZXIudXBk
YXRlTGF5b3V0KCk7CisKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50QnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCmluZGV4IDQxOWM2NTEzYzViMWJiY2ZhYjkzNzg1YzVk
NWUyMTUyODZmNmUxNGYuLjQzNmRmZjdjMzViYjhmOGUwYzFmMWI2YmQwMmFmY2IxYmZiYTVlNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCkBAIC0yMywyOSArMjMsMjggQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBkZWxlZ2F0ZSwg
ZGlzYWJsZUJhY2tGb3J3YXJkKQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3Vw
ZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiY29udGVudC1icm93c2VyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjb250ZW50LWJyb3dzZXIiKTsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0g
bmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRk
U3Vidmlldyh0aGlzLl9uYXZpZ2F0aW9uQmFyKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50Vmll
d0NvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXI7CiAgICAg
ICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyKTsK
IAogICAgICAgICB0aGlzLl9maW5kQmFubmVyID0gbmV3IFdlYkluc3BlY3Rvci5GaW5kQmFubmVy
KHRoaXMpOwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQuRGlkU2hvdywgdGhpcy5fZmluZEJhbm5lckRpZFNob3cs
IHRoaXMpOwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQuRGlkSGlkZSwgdGhpcy5fZmluZEJhbm5lckRpZEhpZGUs
IHRoaXMpOwogCiAgICAgICAgIGlmICghZGlzYWJsZUJhY2tGb3J3YXJkKSB7Ci0gICAgICAgICAg
ICB0aGlzLl9iYWNrS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JD
b250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkxlZnQsIHRoaXMuX2JhY2tCdXR0b25D
bGlja2VkLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZm9y
d2FyZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5SaWdodCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNr
ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9iYWNrS2V5
Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sIHwgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5LkxlZnQsIHRoaXMuX2JhY2tCdXR0b25DbGlja2VkLmJpbmQodGhp
cyksIHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9mb3J3YXJkS2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sIHwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5LlJpZ2h0LCB0aGlzLl9mb3J3YXJkQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCB0
aGlzLmVsZW1lbnQpOwogCiAgICAgICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJiYWNrIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJCYWNrICglcykiKS5mb3JtYXQodGhpcy5fYmFja0tleWJvYXJkU2hv
cnRjdXQuZGlzcGxheU5hbWUpLCAiSW1hZ2VzL0JhY2tBcnJvdy5zdmciLCA4LCAxMyk7CiAgICAg
ICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fYmFj
a0J1dHRvbkNsaWNrZWQsIHRoaXMpOwpAQCAtODEsMTEgKzgwLDYgQEAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBuYXZpZ2F0aW9uQmFy
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQmFyOwpAQCAtMTMzLDEy
ICsxMjcsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJv
d3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHJlcHJlc2Vu
dGVkT2JqZWN0czsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAg
dGhpcy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgdGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgc2hvd0NvbnRlbnRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSwgZXh0cmFB
cmd1bWVudHMpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlLCBleHRyYUFy
Z3VtZW50cyk7CkBAIC00NDcsNyArNDM1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
ID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAg
ICAgICAgdGhpcy5fdXBkYXRlQ29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXMoKTsKIAotICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3Vy
cmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50U29vbigpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dFZpZXcuanMKaW5kZXggYTdjYjhkM2ZhZDgxMzU3OGJkMzE4NTdlYTM2MTM5NDQ4MjEyZTJjNy4u
MTgwMjJkMzdlM2Q5ODVkY2U2MzQ0MmY0NWFiYmY3OTJkNWQ2MGY1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcu
anMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNz
IENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rv
cihyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpCiAgICAgewpAQCAtMzQsOCArMzQs
NyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9
IHJlcHJlc2VudGVkT2JqZWN0OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJjb250ZW50LXZpZXciKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNv
bnRlbnQtdmlldyIpOwogCiAgICAgICAgIHRoaXMuX3BhcmVudENvbnRhaW5lciA9IG51bGw7CiAg
ICAgfQpAQCAtMTk1LDExICsxOTQsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFz
cyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJu
IFtdOwogICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBwYXJlbnRDb250YWluZXIoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudENvbnRhaW5lcjsKQEAgLTI0NSwxMSArMjM5LDYg
QEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHVw
ZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2Vz
LgotICAgIH0KLQogICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IDM2ODU4
OGQxMDJhMTU2YWE4ZjBjNTIxMjgxMjZmOWU1NjdmOWRhMzAuLjA0Y2NiMjIwNTVhODY5ZjU4OTQz
M2QxY2QzNDFhOGZjZTM3OWY3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpz
CkBAIC0yMywxNCArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBDb250ZW50
Vmlld0NvbnRhaW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlZpZXcKIHsKLSAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIGNvbnN0
cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12aWV3LWNvbnRhaW5lciIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12aWV3LWNvbnRhaW5lciIp
OwogCiAgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9IFtdOwogICAgICAgICB0aGlzLl9j
dXJyZW50SW5kZXggPSAtMTsKQEAgLTM4LDExICszNyw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5z
cGVjCiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBjdXJyZW50SW5kZXgoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRJbmRleDsKQEAgLTY5LDYgKzYzLDgg
QEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdD
b250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewor
ICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKKwogICAgICAgICB2YXIgY3VycmVudENvbnRl
bnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29u
dGVudFZpZXcpCiAgICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9I
aWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKaW5k
ZXggMmRiYTIwYmFkZTRlYzVmYWUzOWE0MDI4YzJmNzdjYWY1ZWEwMTE4OC4uOGFiMjFlNDdkZGI3
YmMyMzA0YTBiZjc5NzZjMWZmMDhmYWYyOTc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJh
cmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcwpAQCAtNjEsNyArNjEsNyBAQCBXZWJJbnNwZWN0
b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtID0gY2xhc3MgSGllcmFyY2hpY2FsUGF0
aE5hdmlnYXRpb25JdAogCiAgICAgICAgIC8vIFVwZGF0ZSBsYXlvdXQgZm9yIHRoZSBzbyBvdGhl
ciBpdGVtcyBjYW4gYWRqdXN0IHRvIHRoZSBleHRyYSBzcGFjZSAob3IgbGFjayB0aGVyZW9mKSB0
b28uCiAgICAgICAgIGlmICh0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIpCi0gICAgICAgICAgICB0
aGlzLnBhcmVudE5hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICAgICAg
dGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgZ2V0
IGxhc3RDb21wb25lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKaW5kZXggNmJhNmQwMWVjYzc3MjU3
N2RlNzgxY2FhYjJjN2ExZDE1N2I4Y2VjMy4uZWQ1YWM4YzAwYjQyMTE1YTBmNGZlNzVlOTAyODVk
Y2JkMTkxYTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCkBAIC0yMywzMCArMjMsMzAgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmln
YXRpb25JdGVtcywgcm9sZSwgbGFiZWwpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAg
ICBzdXBlcihlbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKHRoaXMuY29uc3RydWN0b3IuU3R5bGVDbGFzc05hbWUgfHwgIm5hdmlnYXRpb24t
YmFyIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQudGFiSW5kZXggPSAwOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1lIHx8
ICJuYXZpZ2F0aW9uLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQudGFiSW5kZXggPSAwOwog
CiAgICAgICAgIGlmIChyb2xlKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInJvbGUiLCByb2xlKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InJvbGUiLCByb2xlKTsKICAgICAgICAgaWYgKGxhYmVsKQotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCi0gICAgICAgIHRo
aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5iaW5kKHRo
aXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1
ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZh
bHNlKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9tb3VzZURvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5f
Ymx1ci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3Vz
ZURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCB0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAg
ICAgICAgdGhpcy5fc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUi
KTsKIAorICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGggPSBOYU47CiAgICAgICAgIHRoaXMuX25h
dmlnYXRpb25JdGVtcyA9IFtdOwogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKQEAg
LTgxLDcgKzgxLDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0
aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXMuc3BsaWNlKGluZGV4LCAwLCBuYXZpZ2F0aW9uSXRlbSk7CiAKICAgICAgICAgaWYg
KCFwYXJlbnRFbGVtZW50KQotICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuX2VsZW1l
bnQ7CisgICAgICAgICAgICBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50OwogCiAgICAgICAg
IHZhciBuZXh0U2libGluZyA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpbmRleCArIDFdOwogICAg
ICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5l
bGVtZW50IDogbnVsbDsKQEAgLTkwLDEwICs5MCwxMCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAK
ICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUobmF2aWdhdGlvbkl0ZW0uZWxlbWVu
dCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGhOZWVk
c1JlY2FsY3VsYXRpb24gPSB0cnVlOworICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGggPSBOYU47
CiAgICAgICAgIHRoaXMuX25lZWRzU3R5bGVVcGRhdGVkID0gdHJ1ZTsKIAotICAgICAgICB0aGlz
LnVwZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogCiAgICAg
ICAgIHJldHVybiBuYXZpZ2F0aW9uSXRlbTsKICAgICB9CkBAIC0xMTIsNTEgKzExMiwyOCBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcy5yZW1vdmUo
bmF2aWdhdGlvbkl0ZW0pOwogICAgICAgICBuYXZpZ2F0aW9uSXRlbS5lbGVtZW50LnJlbW92ZSgp
OwogCi0gICAgICAgIHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbiA9IHRydWU7
CisgICAgICAgIHRoaXMuX21pbmltdW1XaWR0aCA9IE5hTjsKICAgICAgICAgdGhpcy5fbmVlZHNT
dHlsZVVwZGF0ZWQgPSB0cnVlOwogCi0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOwor
ICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25J
dGVtOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dFNvb24oKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIg
PSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9uZWVkc0xheW91dCB8fCB0aGlz
Ll9uZWVkc1N0eWxlVXBkYXRlZCkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHJl
cXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfQotCiAgICAgdXBk
YXRlTGF5b3V0KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlm
aWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVMYXlv
dXRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIg
PSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KKyAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7CiAK
ICAgICAgICAgaWYgKHRoaXMuX25lZWRzU3R5bGVVcGRhdGVkKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlU3R5bGUoKTsKIAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IGZhbHNlOwotCiAg
ICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21VcGRhdGVMYXlvdXQgPT09ICJmdW5jdGlvbiIp
IHsKICAgICAgICAgICAgIHRoaXMuY3VzdG9tVXBkYXRlTGF5b3V0KCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHls
ZSBjbGFzcyB0byB0ZXN0IGlmIHRoZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCi0gICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xh
c3NOYW1lKTsKIAogICAgICAgICAvLyBUZWxsIGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRvIHVwZGF0
ZSB0byBmdWxsIHdpZHRoIGlmIG5lZWRlZC4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCkBAIC0xNzEsMTEgKzE0OCwxMSBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCArPSB0aGlzLl9u
YXZpZ2F0aW9uSXRlbXNbaV0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CiAgICAgICAgIH0KIAot
ICAgICAgICB2YXIgYmFyV2lkdGggPSB0aGlzLl9lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAg
ICAgICAgY29uc3QgYmFyV2lkdGggPSB0aGlzLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoOwogCiAg
ICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIGNsYXNzIGJhY2sgaWYgdGhlIGl0ZW1zIGFyZSB3
aWRlciB0aGFuIHRoZSBiYXIuCiAgICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRo
KQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNl
ZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICAvLyBHaXZlIGVhY2ggbmF2aWdhdGlvbiBpdGVt
IHRoZSBvcHBvcnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVyLgogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkKQEAgLTIxNywxOCAr
MTk0LDEwIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJh
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmln
YXRpb25JdGVtczsKICAgICB9CiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgbWluaW11bVdpZHRoKCkKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9taW5pbXVtV2lkdGggPT09IHVuZGVmaW5lZCB8fCB0aGlz
Ll9taW5pbXVtV2lkdGhOZWVkc1JlY2FsY3VsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzTmFOKHRo
aXMuX21pbmltdW1XaWR0aCkpCiAgICAgICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGggPSB0aGlz
Ll9jYWxjdWxhdGVNaW5pbXVtV2lkdGgoKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9taW5p
bXVtV2lkdGhOZWVkc1JlY2FsY3VsYXRpb247Ci0gICAgICAgIH0KLQogICAgICAgICByZXR1cm4g
dGhpcy5fbWluaW11bVdpZHRoOwogICAgIH0KIApAQCAtMjcwLDcgKzIzOSw3IEBAIFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0YWJJbmRleCBzbyBjbGlja2luZyB0
aGUgbmF2aWdhdGlvbiBiYXIgZG9lcyBub3QgZ2l2ZSBpdCBmb2N1cy4KICAgICAgICAgLy8gT25s
eSBrZWVwIHRoZSB0YWJJbmRleCBpZiBhbHJlYWR5IGZvY3VzZWQgZnJvbSBrZXlib2FyZCBuYXZp
Z2F0aW9uLiBUaGlzIG1hdGNoZXMgWGNvZGUuCiAgICAgICAgIGlmICghdGhpcy5fZm9jdXNlZCkK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTsKIAog
ICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNs
YXNzTmFtZSk7CiAgICAgICAgIGlmICghaXRlbUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmln
YXRpb25JdGVtKQpAQCAtMzA4LDE1ICsyNzcsMTUgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAogICAgICAgICB2YXIgaXRlbUVsZW1lbnQg
PSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgIGlmICgh
aXRlbUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtIHx8ICF0aGlzLl9lbGVt
ZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkgeworICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8
ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5lbGVtZW50LmNvbnRhaW5zKGl0
ZW1FbGVtZW50KSkgewogICAgICAgICAgICAgLy8gRmluZCB0aGUgZWxlbWVudCB0aGF0IGlzIGF0
IHRoZSBYIHBvc2l0aW9uIG9mIHRoZSBtb3VzZSwgZXZlbiB3aGVuIHRoZSBtb3VzZSBpcyBubyBs
b25nZXIKICAgICAgICAgICAgIC8vIHZlcnRpY2FsbHkgaW4gdGhlIG5hdmlnYXRpb24gYmFyLgot
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50
LnBhZ2VYLCB0aGlzLl9lbGVtZW50LnRvdGFsT2Zmc2V0VG9wICsgKHRoaXMuX2VsZW1lbnQub2Zm
c2V0SGVpZ2h0IC8gMikpOworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5lbGVt
ZW50RnJvbVBvaW50KGV2ZW50LnBhZ2VYLCB0aGlzLmVsZW1lbnQudG90YWxPZmZzZXRUb3AgKyAo
dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGl0ZW1FbGVtZW50ID0g
ZWxlbWVudC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5SYWRpb0J1
dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIGlmICghaXRl
bUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtIHx8ICF0aGlzLl9lbGVtZW50
LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkKKyAgICAgICAgICAgIGlmICghaXRlbUVsZW1lbnQgfHwg
IWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtIHx8ICF0aGlzLmVsZW1lbnQuY29udGFpbnMoaXRl
bUVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zNDcs
NyArMzE2LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9u
QmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBkZWxldGUgdGhpcy5fbW91
c2VVcEV2ZW50TGlzdGVuZXI7CiAKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgdGFiSW5kZXggc28g
dGhlIG5hdmlnYXRpb24gYmFyIGNhbiBiZSBpbiB0aGUga2V5Ym9hcmQgdGFiIGxvb3AuCi0gICAg
ICAgIHRoaXMuX2VsZW1lbnQudGFiSW5kZXggPSAwOworICAgICAgICB0aGlzLmVsZW1lbnQudGFi
SW5kZXggPSAwOwogCiAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBzZWxlY3RlZCBldmVudCBoZXJl
IHNpbmNlIHRoZSBzZWxlY3RlZE5hdmlnYXRpb25JdGVtIHNldHRlciBzdXJwcmVzc2VzIGl0CiAg
ICAgICAgIC8vIHdoaWxlIHRoZSBtb3VzZSBpcyBkb3duIHRvIHByZXZlbnQgc2VuZGluZyBpdCB3
aGlsZSBzY3J1YmJpbmcgdGhlIGJhci4KQEAgLTQyMiwxMSArMzkxLDExIEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIAogICAgIF9jYWxjdWxhdGVNaW5pbXVtV2lkdGgoKQogICAgIHsKLSAgICAgICAg
dmFyIHdhc0NvbGxhcHNlZCA9IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
Y29uc3Qgd2FzQ29sbGFwc2VkID0gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAg
ICAgLy8gQWRkIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gY2FsY3VsYXRlIHRoZSB3aWR0
aCBvZiB0aGUgaXRlbXMgd2hlbiB0aGV5IGFyZSBjb2xsYXBzZWQuCiAgICAgICAgIGlmICghd2Fz
Q29sbGFwc2VkKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
LkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB2YXIgdG90YWxJdGVtV2lkdGgg
PSAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5s
ZW5ndGg7ICsraSkgewpAQCAtNDM4LDcgKzQwNyw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAog
ICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyBpZiB3ZSB3ZXJlIG5v
dCBjb2xsYXBzZWQgYmVmb3JlLgogICAgICAgICBpZiAoIXdhc0NvbGxhcHNlZCkKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CiAKICAgICAgICAgcmV0dXJuIHRvdGFsSXRlbVdpZHRoOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggY2I3NTU0M2MxZmE1N2QwM2IwMjA1MTI1MjgwMjAyZTVi
M2JkYzU4OC4uMWQ3NjExNTRlM2I3MGQ1OGIyMjlhNjMxZmNjOGI4M2JkMDNiMDAwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlv
bkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmF2aWdhdGlvbkl0ZW0uanMKQEAgLTgwLDcgKzgwLDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25JdGVtID0gY2xhc3MgTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgZmxhZyk7
CiAKICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXIpCi0gICAgICAgICAgICB0
aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAg
IHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXIubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICAv
LyBQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9RdWlja0NvbnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKaW5kZXggYzRhZDUyMDI3ODdmMTNjYjI0NTEwOGM4
ZTZiNTFjMWUzODQ2ZmNjMy4uNTg2MDExNDI5YTlhZmYyMWFjNTAzZDE4YmZmMTJlMWZjNDY5Yjli
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9
IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3Bl
Y3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCiAgICAgewotICAgICAgICBzdXBl
cigpOworICAgICAgICBzdXBlcihlbGVtZW50KTsKIAogICAgICAgICB0aGlzLl90b2dnbGVPckZv
Y3VzS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChu
dWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dn
bGVPckZvY3VzLmJpbmQodGhpcykpOwogCkBAIC0zOCwxMiArMzgsMTEgQEAgV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMg
PSBbXTsKICAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9FeGVjdXRpb25Db250ZXh0UGF0
aENvbXBvbmVudE1hcCA9IHt9OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInF1aWNrLWNvbnNvbGUiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInF1aWNrLWNvbnNvbGUiKTsKIAogICAgICAgICB0aGlzLnByb21wdCA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdChudWxsLCAidGV4dC9qYXZhc2NyaXB0Iik7CiAgICAg
ICAgIHRoaXMucHJvbXB0LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGV4dC1wcm9tcHQiKTsKLSAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnByb21wdC5lbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMucHJvbXB0KTsKIAogICAgICAgICAvLyBGSVhNRTog
Q29kZU1pcnJvciA0IGhhcyBhIGRlZmF1bHQgIkVzYyIga2V5IGhhbmRsZXIgdGhhdCBhbHdheXMg
cHJldmVudHMgZGVmYXVsdC4KICAgICAgICAgLy8gT3VyIGtleWJvYXJkIHNob3J0Y3V0IGFib3Zl
IHdpbGwgcmVzcGVjdCB0aGUgZGVmYXVsdCBwcmV2ZW50ZWQgYW5kIGlnbm9yZSB0aGUgZXZlbnQK
QEAgLTU1LDcgKzU0LDcgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNr
Q29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5wcm9tcHQu
c2hvd24oKTsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rv
ci5RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vi
dmlldyh0aGlzLl9uYXZpZ2F0aW9uQmFyKTsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250
ZXh0U2VsZWN0b3JJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdh
dGlvbkl0ZW07CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3Rvckl0ZW0uc2hv
d1NlbGVjdG9yQXJyb3dzID0gdHJ1ZTsKQEAgLTc0LDExICs3Myw2IEBAIFdlYkluc3BlY3Rvci5R
dWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBuYXZpZ2F0aW9uQmFyKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQmFyOwpAQCAtOTEsNiArODUs
OCBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CisgICAg
ICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOworCiAgICAgICAgIC8vIEEgaGFyZCBtYXhpbXVtIHNp
emUgb2YgMzMlIG9mIHRoZSB3aW5kb3cuCiAgICAgICAgIHZhciBtYXhpbXVtQWxsb3dlZEhlaWdo
dCA9IE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0ICogMC4zMyk7CiAgICAgICAgIHRoaXMu
cHJvbXB0LmVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbWF4aW11bUFsbG93ZWRIZWlnaHQgKyAi
cHgiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQmFyLmpzCmluZGV4IDZkN2Y0MzNjZjQ4MmVmZjRhOTMxNTY1OGMxMTllMmYwYjkyNDAyMzUu
LjMyYzAxNjgzNGRiMzE3MTQ2MTA5NTc2N2QzZDcxNzExNTQ2ZWRmZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTIz
LDIzICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CitXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJCYXJJdGVtcykKICAg
ICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKIAogICAgICAgICB2YXIgdG9w
Qm9yZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0
b3BCb3JkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInRvcC1ib3JkZXIiKTsKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0b3BCb3JkZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRvcEJvcmRlckVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3du
LmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2
ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5f
dGFiQmFySXRlbXMgPSBbXTsKIApAQCAtMTExLDcgKzExMCw3IEBAIFdlYkluc3BlY3Rvci5UYWJC
YXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHZh
ciBsYXN0SW5kZXggPSB0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3Ro
IC0gMSA6IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aDsKICAgICAgICAgaW5kZXggPSBNYXRoLm1h
eCgwLCBNYXRoLm1pbihpbmRleCwgbGFzdEluZGV4KSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICBpZiAodGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAgICAgICAgICAg
IHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAg
ICAgICBkb05vdEFuaW1hdGUgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMjUsMzQgKzEyNCwzNCBA
QCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRl
eCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBu
ZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVt
LmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0
YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQp
OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIs
ICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3Jt
YWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxs
OwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOwogCiAgICAg
ICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAgdGhpcy5f
YXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9u
cyk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0
VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5
bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVz
KCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAg
ICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVu
ZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVu
ZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFkb05vdEFuaW1hdGUpIHsKQEAgLTE2OCw3
ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJlZm9y
ZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9
KTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5
b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxh
eW91dCIpOwogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJl
aW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKQEAgLTE3Nyw3ICsxNzYs
NyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRh
YnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy51cGRhdGVM
YXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5U
YWJCYXJJdGVtQWRkZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCBXZWJJ
bnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSBuZXh0VGFiQmFySXRlbTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29u
dGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
cmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAgICAgICAgZG9Ob3RBbmltYXRlID0gdHJ1
ZTsKICAgICAgICAgfQpAQCAtMjE5LDcgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBj
bGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRhYkJhckl0
ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAgICB2YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxU
YWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpOwotICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxU
YWIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIs
ICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CiAKICAgICAgICAgY29uc3Qgc2hvdWxkT3BlbkRl
ZmF1bHRUYWIgPSAhdGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgIXRoaXMuaGFzTm9ybWFsVGFi
KCk7CiAgICAgICAgIGlmIChzaG91bGRPcGVuRGVmYXVsdFRhYikKQEAgLTIzMCw3ICsyMjksNyBA
QCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3Vz
ZUVudGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJz
QWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQs
IHt0YWJCYXJJdGVtfSk7CiAKQEAgLTI0NCw4ICsyNDMsOCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1
bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOwogCiAgICAgICAgICAgICB2YXIgbGVmdCA9IDA7CiAg
ICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50VGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVt
cykgewpAQCAtMjY2LDcgKzI2NSw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJC
YXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAobGFzdE5vcm1h
bFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKICAgICAgICAgICAgICAg
ICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQo
bGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgKyAxKSArICJweCI7CiAK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNp
dGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlz
dGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKQEAg
LTI3NSwxNiArMjc0LDE2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRU
YWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAhPT0gbGFzdE5vcm1hbFRhYkJh
ckl0ZW0pCiAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQu
c3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVu
dC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10YWIiKTsKIAogICAgICAgICAgICAgdGhpcy51
cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRp
b25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IWRvTm90QW5pbWF0ZSkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic3RhdGljLWxheW91dCIpOwogCiAgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3Nl
ZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAKQEAgLTI5NCw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAg
ICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7Cisg
ICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3Zl
ZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMzUwLDM4ICszNDksMTUgQEAgV2ViSW5zcGVjdG9yLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
dGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleF07CiAg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0U29vbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5f
dXBkYXRlTGF5b3V0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVm
aW5lZDsKLQotICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRzTGF5b3V0KQotICAgICAgICAgICAg
ICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRh
dGVMYXlvdXRJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZS5iaW5kKHRo
aXMpKTsKLSAgICB9Ci0KICAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlv
bkZyYW1lKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpOwotICAgICAgICAgICAgdGhpcy5f
dXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQorICAgICAgICBz
dXBlci51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IGZhbHNlOwotCi0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZS10aXRsZXMiKTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImhpZGUtdGl0bGVzIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKTsKIAogICAgICAgICB2YXIgZmlyc3ROb3JtYWxU
YWJJdGVtID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIgdGFiSXRlbSBvZiB0aGlzLl90YWJCYXJJ
dGVtcykgewpAQCAtMzk3LDEyICszNzMsMTIgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKGZpcnN0Tm9y
bWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDEyMCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNlZCIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CiAKICAgICAg
ICAgaWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDYwKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
aGlkZS10aXRsZXMiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGUt
dGl0bGVzIik7CiAgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkVGFiQmFySXRlbSgpCkBAIC00MzUs
MTEgKzQxMSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtczsKICAg
ICB9CiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxl
bWVudDsKLSAgICB9Ci0KICAgICBoYXNOb3JtYWxUYWIoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3RhYkJhckl0ZW1zLnNvbWUoKHRhYikgPT4gIXRhYi5waW5uZWQpOwpAQCAtNDgzLDcg
KzQ1NCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICB2YXIgdGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zID0gbmV3IE1hcDsKIAotICAgICAgICB2YXIgYmFyUmVjdCA9IHRoaXMuX2VsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHZhciBiYXJSZWN0ID0gdGhpcy5lbGVt
ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgICAgIGZvciAodmFyIHRhYkJhckl0
ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3Qg
PSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CkBAIC01MjIsNyAr
NDkzLDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmICghYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlv
bnMpCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9y
ZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwogICAgICAgICAg
ICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAg
ICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoKTsKQEAgLTUzMiwyNiArNTAzLDI2IEBAIFdlYkluc3BlY3Rvci5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAg
ICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAg
ICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMi
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxh
eW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmlt
YXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhw
YW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwogCi0gICAgICAgICAg
ICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5k
IiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVu
ZXIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMo
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOworICAgICAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAg
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFi
cyIpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3Np
dGlvbnMoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKLSAgICAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5z
aXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgdGhpcy5l
bGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVT
dHlsZXNMaXN0ZW5lcik7CiAKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAg
ICB9CkBAIC02MzAsNyArNjAxLDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJh
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdmFyIGNsb3NlQnV0dG9uRWxl
bWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3Bl
Y3Rvci5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBpZiAo
Y2xvc2VCdXR0b25FbGVtZW50IHx8IGNsaWNrZWRNaWRkbGVCdXR0b24pIHsKICAgICAgICAgICAg
IC8vIERpc2FsbG93IGNsb3NpbmcgdGhlIGRlZmF1bHQgdGFiIGlmIGl0IGlzIHRoZSBvbmx5IHRh
Yi4KLSAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAmJiB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQorICAgICAgICAgICAgaWYgKHRh
YkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo
InNpbmdsZS10YWIiKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHRo
aXMucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBmYWxzZSwgdHJ1ZSk7CkBAIC02NTEsMTAg
KzYyMiwxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKKyAgICAgICAgaWYgKCF0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKICAgICAgICAg
ICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKHRoaXMuX3JlY29yZFRh
YkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVuZGVmaW5lZCkKQEAgLTY5NSw3ICs2NjYsNyBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRl
eCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBu
ZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVt
LmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0
aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0u
ZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKIAogICAgICAgICAvLyBGSVhNRTogQW5pbWF0
ZSB0aGUgdGFicyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZvciB0aGUgc2VsZWN0ZWQgdGFiLiBU
aGlzIHdhcyBjYXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRyaWVkLgogCkBAIC03MTQsMTAgKzY4
NSwxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHJh
Z2dpbmctdGFiIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFn
Z2luZy10YWIiKTsKIAogICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VN
b3VzZUVudGVyKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
InN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJzdGF0aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIGxl
ZnQgPSAwOwpAQCAtNzQ1LDEzICs3MTYsMTMgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9oYW5kbGVNb3VzZUxl
YXZlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0aGlz
Ll90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgIGlmICh0aGlzLl9tb3VzZUlzRG93biB8
fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdoZW4gdGhlIG1vdXNlIGlzIGluc2lk
ZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVkLCByZW1vdmVkIG9yIGdlbmVyYWxs
eSBjaGFuZ2UgaW5zaWRlLgogICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgcmVhbGx5IGRp
ZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUgYm91bmRzLgogICAgICAgICAvLyBG
SVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVjdCBiZWhhdmlvcj8KLSAgICAgICAg
dmFyIGJhclJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAg
ICAgICB2YXIgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
ICAgICAgICAgdmFyIG5ld1RhYkl0ZW1SZWN0ID0gdGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25l
d1RhYkl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IG51bGw7CiAgICAgICAg
IGlmIChldmVudC5wYWdlWSA+IGJhclJlY3QudG9wICYmIGV2ZW50LnBhZ2VZIDwgYmFyUmVjdC5i
b3R0b20gJiYgZXZlbnQucGFnZVggPiBiYXJSZWN0LmxlZnQgJiYgZXZlbnQucGFnZVggPCAobmV3
VGFiSXRlbVJlY3QgPyBuZXdUYWJJdGVtUmVjdC5yaWdodCA6IGJhclJlY3QucmlnaHQpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNzY4LDcgKzczOSw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIg
PSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfaGFuZGxl
TmV3VGFiTW91c2VFbnRlcihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdGFiQW5p
bWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoImFuaW1hdGluZyIpKQorICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2lu
Y2VNb3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMt
bGF5b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5kaW5nVGFi
c0FmdGVyQ2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCmluZGV4IDI4YmE5Mzk1NWEzOTgxMjMxZTY2NzZk
NmEzODA2OGUyMWNmMmJkZGUuLmZkMDEzM2NiYmU4YjMxMWFlMjY4OTMyYWMzZGVjZGIzNTYwZGQz
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RhYkJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQnJvd3Nlci5qcwpAQCAtMjMsMTggKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIgPSBjbGFz
cyBUYWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLlRh
YkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsK
ICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJCYXIsIG5hdmlnYXRpb25TaWRlYmFyLCBkZXRh
aWxzU2lkZWJhcikKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1l
bnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRh
Yi1icm93c2VyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYnJv
d3NlciIpOwogCiAgICAgICAgIHRoaXMuX3RhYkJhciA9IHRhYkJhciB8fCBuZXcgV2ViSW5zcGVj
dG9yLlRhYkJhcjsKLSAgICAgICAgaWYgKCF0YWJCYXIpCi0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3RhYkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRT
dWJ2aWV3KHRoaXMuX3RhYkJhcik7CiAKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXIg
PSBuYXZpZ2F0aW9uU2lkZWJhciB8fCBudWxsOwogICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJh
ciA9IGRldGFpbHNTaWRlYmFyIHx8IG51bGw7CkBAIC00OCw3ICs0Niw3IEBAIFdlYkluc3BlY3Rv
ci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyID0gbmV3
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyKTsKIAogICAgICAg
ICB2YXIgc2hvd05leHRUYWIgPSB0aGlzLl9zaG93TmV4dFRhYi5iaW5kKHRoaXMpOwogICAgICAg
ICB2YXIgc2hvd1ByZXZpb3VzVGFiID0gdGhpcy5fc2hvd1ByZXZpb3VzVGFiLmJpbmQodGhpcyk7
CkBAIC03MywxMSArNzEsNiBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJy
b3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAg
IGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAg
IH0KLQogICAgIGdldCB0YWJCYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJh
cjsKQEAgLTk4LDEyICs5MSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFi
QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFiQmFyLnVwZGF0ZUxheW91dCgp
OwotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQoKTsKLSAg
ICB9Ci0KICAgICBiZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhjb25zdHJ1Y3RvcikKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgfHwg
dGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmll
d3NbMF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVG9vbGJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Rvb2xiYXIuanMKaW5kZXggMjEzZTMyMDE3MTI4ZjlhZjI0MjY0ZWE5MGMzZjZlZmFjZjBl
ZmY1Mi4uMjQxYzBiN2RmMzE4NTAwZDljYjQ4ZjUxOTIwYjM0YjcxZTI5MmI2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpz
CkBAIC0zNCwzMCArMzQsMzAgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKIAogICAgICAgICB0aGlzLl9jb250
cm9sU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAg
ICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5U
b29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCk7CiAKICAg
ICAgICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICAgICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5z
cGVjdG9yLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CiAK
ICAgICAgICAgdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1l
ICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyTGVmdEl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVy
TGVmdFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY2VudGVyU2Vj
dGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhp
cy5fY2VudGVyU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIu
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNl
bnRlckl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRo
aXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsg
V2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1l
OwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclJpZ2h0U2Vj
dGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2Vu
dGVyUmlnaHRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9yaWdo
dFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0
aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5SaWdodEl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICBpZiAoIWRvbnRBbGxv
d01vZGVDaGFuZ2VzKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwg
ZmFsc2UpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRl
eHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7
CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC03MywxNSArNzMsMTUgQEAgV2ViSW5zcGVjdG9y
LlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1vZGUp
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZGlzcGxh
eU1vZGUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5f
ZGlzcGxheU1vZGUpOwogCiAgICAgICAgIC8vIFJldmVydCB0aGUgZm9yY2VkIGljb24tb25seSBt
b2RlIGlmIGl0IHdhcyBhcHBsaWVkLgogICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1vZGUgPT09
IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwp
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9y
LlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9u
bHkpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BsYXlNb2RlID0gbW9kZTsKIAotICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKG1vZGUpOwogCiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKQEAgLTk5
LDExICs5OSwxMSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGlmICh0aGlzLl9zaXplTW9kZSkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSh0aGlzLl9zaXplTW9kZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSh0aGlzLl9zaXplTW9kZSk7CiAKICAgICAgICAgdGhpcy5fc2l6ZU1vZGUg
PSBtb2RlOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChtb2RlKTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CiAKICAgICAgICAgdGhpcy51
cGRhdGVMYXlvdXQoKTsKIApAQCAtMTE4LDE3ICsxMTgsMTcgQEAgV2ViSW5zcGVjdG9yLlRvb2xi
YXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKIAog
ICAgICAgICAvLyBGb3JjZSBjb2xsYXBzZWQgc3R5bGUgZm9yIEphdmFTY3JpcHQgZGVidWdnYWJs
ZXMuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnYWJsZVR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5
bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBz
ZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBpZiB0aGUgaXRlbXMgY2FuIGZpdCBhdCBmdWxsIHdpZHRo
LgotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRT
dHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBmb3JjZWQgaWNvbi1vbmx5
IG1vZGUgaWYgaXQgd2FzIGFwcGxpZWQuCiAgICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSA9
PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRh
bCkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29u
QW5kTGFiZWxIb3Jpem9udGFsKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRp
c3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOwogICAgICAgICB9CiAKICAgICAgICAg
ZnVuY3Rpb24gaXNPdmVyZmxvd2luZ1Rvb2xiYXIoKQpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIKICAgICAgICAgLy8gT25seSB0aGUgaG9yaXpvbnRhbCBkaXNwbGF5IG1vZGUg
c3VwcG9ydHMgY29sbGFwc2luZyBsYWJlbHMuCiAgICAgICAgIC8vIElmIGFueSBzZWN0aW9ucyBh
cmUgb3ZlcmZsb3dpbmcgdGhlIHRvb2xiYXIgdGhlbiBmb3JjZSB0aGUgZGlzcGxheSBtb2RlIHRv
IGJlIGljb24gb25seS4KICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlID09PSBXZWJJbnNw
ZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsICYmIGlzT3Zl
cmZsb3dpbmdUb29sYmFyLmNhbGwodGhpcykpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5k
TGFiZWxIb3Jpem9udGFsKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNPdmVyZmxvd2luZ1Rvb2xiYXIuY2FsbCh0
aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgfQogCiAgICAgYWRkVG9v
bGJhckl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRj
ZGY2YWVhMTUzNmRmMzgzNjU2ZThhNDk3NTI1ZTNmMjA1MjI3NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKQEAgLTAs
MCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1l
bnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuX192aWV3ID0gdGhpczsKKyAgICAgICAgdGhpcy5fc3Vidmlld3MgPSBbXTsKKyAgICAgICAg
dGhpcy5fcGFyZW50VmlldyA9IG51bGw7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBn
ZXQgZWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9
CisKKyAgICBnZXQgc3Vidmlld3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnZp
ZXdzLnNsaWNlKCk7CisgICAgfQorCisgICAgYWRkU3Vidmlldyh2aWV3KQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5WaWV3KTsKKwor
ICAgICAgICB0aGlzLl9zdWJ2aWV3cy5wdXNoKHZpZXcpOworICAgICAgICBpZiAodmlldy5lbGVt
ZW50LnBhcmVudE5vZGUgIT09IHRoaXMuX2VsZW1lbnQpCisgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZCh2aWV3LmVsZW1lbnQpOworICAgIH0KKworICAgIHJlbW92ZVN1YnZpZXcodmll
dykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcuZWxlbWVudC5wYXJlbnRO
b2RlID09PSB0aGlzLl9lbGVtZW50LCAiU3VidmlldyBlbGVtZW50IGlzIG5vdCBhIGNoaWxkIG9m
IHRoZSBwYXJlbnQgdmlldyBlbGVtZW50LiIsIHZpZXcpOworCisgICAgICAgIHRoaXMuX3N1YnZp
ZXdzLnJlbW92ZSh2aWV3LCB0cnVlKTsKKyAgICAgICAgaWYgKHZpZXcuZWxlbWVudC5wYXJlbnRO
b2RlID09PSB0aGlzLl9lbGVtZW50KQorICAgICAgICAgICAgdmlldy5yZW1vdmUoKTsKKyAgICB9
CisKKyAgICB1cGRhdGVMYXlvdXQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxl
ZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZy
YW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAg
dGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX3N1YnZpZXdzLmZvckVhY2goKHZpZXcpID0+IHsgdmlldy51
cGRhdGVMYXlvdXQoKTsgfSk7CisKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KKyAgICB9CisKKyAgICBuZWVkc0xheW91dCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
c2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmlt
YXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAv
LyBQcm90ZWN0ZWQKKworICAgIHVwZGF0ZUVsZW1lbnRQb3NpdGlvbihlbGVtZW50LCB2YWx1ZSwg
cHJvcGVydHlOYW1lLCB1bml0cykKKyAgICB7CisgICAgICAgIHVuaXRzID0gdW5pdHMgfHwgIiUi
OworICAgICAgICBpZiAodW5pdHMgPT09ICIlIikgeworICAgICAgICAgICAgdmFsdWUgKj0gMTAw
OworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0ZpeGVkKDIpOworICAgICAgICB9CisKKyAg
ICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gcGFyc2VJbnQoZWxlbWVudC5zdHlsZVtwcm9wZXJ0
eU5hbWVdKTsKKyAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpCisgICAgICAgICAg
ICBlbGVtZW50LnN0eWxlW3Byb3BlcnR5TmFtZV0gPSB2YWx1ZSArIHVuaXRzOworICAgIH0KK307
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263869</attachid>
            <date>2015-10-22 14:55:35 -0700</date>
            <delta_ts>2015-10-28 15:28:56 -0700</delta_ts>
            <desc>[Patch] WIP - introduces perf issue</desc>
            <filename>bug-149186-20151022145448.patch</filename>
            <type>text/plain</type>
            <size>65507</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
Yzc1NWEzZTljZGY1OGRlYTc5YzEyZDI5ZmI1NDNhOTcxYTM4Nzc5Li4wZWVjMWZlNDA4MDc5NmM2
NDdiNGU5YjY2MDNlNWUzMjBlNGM0YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTUtMTAtMjIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIHNvIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IG1heSBiZSBhc3NvY2lhdGVkIHdpdGggdGhl
IFZpZXcgb2JqZWN0LAorICAgICAgICByYXRoZXIgdGhhbiBkeW5hbWljYWxseSBjcmVhdGluZyBh
IG5ldyBlbGVtZW50LiBWaWV3IGFsc28gYWRkcyB0aGUgYF9fdmlld2AgcHJvcGVydHkgdG8KKyAg
ICAgICAgaXRzIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcg
b2YgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIGhhbmRmdWwgb2YgdmlldyBj
bGFzc2VzIHRoYXQgaGF2ZSBiZWVuIHJlZmFjdG9yZWQgaW4gdGhpcyBwYXRjaCwgdGhlIGNoYW5n
ZXMgYXJlCisgICAgICAgIGxhcmdlbHkgbWVjaGFuaWNhbC4gRHluYW1pY2FsbHkgY3JlYXRlZCBE
T00gZWxlbWVudHMgYW5kIHJlZHVuZGFudCBlbGVtZW50IGdldHRlcnMgaGF2ZSBiZWVuCisgICAg
ICAgIHJlbW92ZWQsIHVwZGF0ZUxheW91dElmTmVlZGVkIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IG5l
ZWRzTGF5b3V0LCBhbmQgaW4gYSBmZXcgY2FzZXMgdGhlIGNvbmNyZXRlCisgICAgICAgIHZpZXcn
cyB1cGRhdGVMYXlvdXQgaW1wbGVtZW50YXRpb24gaGFzIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFz
IHRoZSB3b3JrIG5lZWRlZCB0byBsYXlvdXQgY2hpbGQKKyAgICAgICAgdmlld3MgaGFzIGJlZW4g
c3Vic3VtZWQgdW5kZXIgdGhlIGJhc2UgY2xhc3MgVmlldy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICBNb3ZlZCBUYWJCYXIgbGF5b3V0IHVwZGF0ZXMg
b3V0IG9mIFRhYkJyb3dzZXIgYW5kIGludG8gTWFpbi5qcy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVBy
b21wdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlLmdldCBlbGVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0
aENvbXBvbmVudERpZENoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5w
cm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXV0b1NpemVDb2x1bW5zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXBwbHlDb2x1bW5XaWR0aHNN
YXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0ucHJv
dG90eXBlLnNldCBjb21wb25lbnRzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25CYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuaW5zZXJ0TmF2aWdh
dGlvbkl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBl
LnJlbW92ZU5hdmlnYXRpb25JdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyLnByb3RvdHlwZS5uZWVkc0xheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5nZXQgbWluaW11bVdpZHRoKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fbW91c2VEb3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fbW91c2VNb3ZlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21vdXNlVXApOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9jYWxjdWxhdGVNaW5pbXVt
V2lkdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnVw
ZGF0ZUxheW91dFNvb24udXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRTb29uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuc2V0IGhpZGRl
bik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5R
dWlja0NvbnNvbGUucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRh
YkJhckl0ZW0uYW5pbWF0ZVRhYnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90
b3R5cGUuaW5zZXJ0VGFiQmFySXRlbS5yZW1vdmVTdHlsZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhci5wcm90b3R5cGUuaW5zZXJ0VGFiQmFySXRlbSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVUYWJCYXJJdGVtLmFuaW1hdGVUYWJzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLnJlbW92ZVRhYkJhckl0ZW0ucmVt
b3ZlU3R5bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLnJlbW92
ZVRhYkJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBk
YXRlTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhci5wcm90b3R5cGUuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlLik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVy
Q2xvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZUNs
aWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3Vz
ZU1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVN
b3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVN
b3VzZUxlYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5k
bGVOZXdUYWJNb3VzZUVudGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90
eXBlLnVwZGF0ZUxheW91dFNvb24udXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXIucHJvdG90eXBlLnVwZGF0ZUxheW91dFNvb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UYWJCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2Vy
LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZpZXcucHJvdG90eXBlLmZpbHRlclVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUubmVlZHNMYXlvdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91
dElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcp
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29s
YmFyLnByb3RvdHlwZS5zZXQgZGlzcGxheU1vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRv
b2xiYXIucHJvdG90eXBlLnNldCBzaXplTW9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9v
bGJhci5wcm90b3R5cGUuY3VzdG9tVXBkYXRlTGF5b3V0KToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1ZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmdldCBlbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgc3Vidmlld3MpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmFkZFN1YnZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpZXcucHJvdG90eXBlLmluc2VydFN1YnZpZXdCZWZvcmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbW92ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpZXcucHJvdG90eXBlLnJlcGxhY2VTdWJ2aWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5uZWVkc0xheW91dCk6CisKIDIwMTUtMTAtMjIgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
ZXN0b3JlIDpub3QoOnBsYWNlaG9sZGVyLXNob3duKSBiZWhhdmlvciBvbiBzZWFyY2ggYmFycyB3
aXRoIGNvbW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKaW5kZXggZWU0OTI4MTM1MTljN2Q0NjA1ODM0NTkzZjhkZGQ1MWRlMWY2MjA3
Yy4uMTE5Y2QxMDZkMDBiNGJmNjZlNmU1YmQwMDAzMWQyMzNiODE1NTE0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTI4Miw2
ICsxMjgyLDcgQEAgV2ViSW5zcGVjdG9yLl93aW5kb3dCbHVycmVkID0gZnVuY3Rpb24oZXZlbnQp
CiBXZWJJbnNwZWN0b3IuX3dpbmRvd1Jlc2l6ZWQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICB0
aGlzLnRvb2xiYXIudXBkYXRlTGF5b3V0KCk7CisgICAgdGhpcy50YWJCYXIudXBkYXRlTGF5b3V0
KCk7CiAgICAgdGhpcy5fdGFiQnJvd3NlclNpemVEaWRDaGFuZ2UoKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBhY2UzNzViNmQ4
NmVmMzM5MDBmYjQwYTk2MjAzNGQ2M2QxN2ViNGQ3Li4xMmY1NTk5N2Y5NzYyMmNiMTlmYjk4MzE0
ZDg5YTUzOGIzMjhiMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCkBAIC0zMzYsNiArMzM2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L1R5cGVTZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvV3JhcHBlZFBy
b21pc2UuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1ZpZXcuanMiPjwv
c2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVDb21tYW5kVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVNZXNzYWdlVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnRlbnRWaWV3LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnNvbGVQcm9tcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db25zb2xlUHJvbXB0LmpzCmluZGV4IDgwZjQ5NGJiZjAxNGU1YTJhMzliZmZiY2E4NjQw
MjNhMjE4ZDUzMjEuLjc3MGY2MWE2ZmRiMzQ4MDk4YjY2Mjg3MTk4ZmE5YzExNDU3NTY0MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVQcm9tcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29uc29sZVByb21wdC5qcwpAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBj
bGFzcyBDb25zb2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVj
dG9yLkNvbnNvbGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSwgbWltZVR5cGUsIGVsZW1lbnQp
CiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBzdXBlcihlbGVtZW50KTsKIAogICAg
ICAgICBtaW1lVHlwZSA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUpLnR5cGU7CiAKLSAgICAgICAg
dGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS1wcm9tcHQiLCBX
ZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLXByb21wdCIsIFdlYkluc3BlY3Rvci5T
eW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9kZWxlZ2F0
ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAKQEAgLTY2LDExICs2NSw2IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGRlbGVnYXRlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsKQEAgLTEyOSw2ICsxMjMsOCBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOworCisgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgp
OwogICAgIH0KIAogICAgIHVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1
ZmZpeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKaW5kZXggNDE5YzY1MTNjNWIxYmJjZmFiOTM3ODVj
NWQ1ZTIxNTI4NmY2ZTE0Zi4uNDM2ZGZmN2MzNWJiOGY4ZTBjMWYxYjZiZDAyYWZjYjFiZmJhNWU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKQEAgLTIzLDI5ICsyMywyOCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAor
V2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGRlbGVnYXRl
LCBkaXNhYmxlQmFja0ZvcndhcmQpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBz
dXBlcihlbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJjb250ZW50LWJyb3dzZXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImNvbnRlbnQtYnJvd3NlciIpOwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIg
PSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5h
ZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKICAg
ICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hh
bmdlLCB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1l
bnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVudFZpZXdDb250YWluZXIp
OwogCiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbmRCYW5u
ZXIodGhpcyk7CiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRTaG93LCB0aGlzLl9maW5kQmFubmVyRGlkU2hv
dywgdGhpcyk7CiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRIaWRlLCB0aGlzLl9maW5kQmFubmVyRGlkSGlk
ZSwgdGhpcyk7CiAKICAgICAgICAgaWYgKCFkaXNhYmxlQmFja0ZvcndhcmQpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2JhY2tLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRP
ckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9s
LCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdCwgdGhpcy5fYmFja0J1dHRv
bkNsaWNrZWQuYmluZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLl9m
b3J3YXJkS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9s
IHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlJpZ2h0LCB0aGlzLl9mb3J3YXJkQnV0dG9uQ2xp
Y2tlZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2JhY2tL
ZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdCwgdGhpcy5fYmFja0J1dHRvbkNsaWNrZWQuYmluZCh0
aGlzKSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2ZvcndhcmRLZXlib2FyZFNo
b3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2VkLmJpbmQodGhpcyks
IHRoaXMuZWxlbWVudCk7CiAKICAgICAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9u
SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImJhY2siLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJhY2sgKCVzKSIpLmZvcm1hdCh0aGlzLl9iYWNrS2V5Ym9hcmRT
aG9ydGN1dC5kaXNwbGF5TmFtZSksICJJbWFnZXMvQmFja0Fycm93LnN2ZyIsIDgsIDEzKTsKICAg
ICAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9i
YWNrQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CkBAIC04MSwxMSArODAsNiBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IG5hdmlnYXRpb25C
YXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXI7CkBAIC0xMzMs
MTIgKzEyNyw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRC
cm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gcmVwcmVz
ZW50ZWRPYmplY3RzOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB0aGlzLl9jb250
ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBzaG93Q29udGVu
dFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgY29va2llLCBleHRy
YUFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50VmlldyA9IHRoaXMuY29udGVu
dFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgZmFsc2UsIGV4dHJh
QXJndW1lbnRzKTsKQEAgLTQ0Nyw3ICs0MzUsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAog
ICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcygpOwogCi0gICAg
ICAgIHRoaXMuX25hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICB0aGlz
Ll9uYXZpZ2F0aW9uQmFyLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hD
dXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnRTb29uKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlldy5qcwppbmRleCBhN2NiOGQzZmFkODEzNTc4YmQzMTg1N2VhMzYxMzk0NDgyMTJlMmM3
Li4xODAyMmQzN2UzZDk4NWRjZTYzNDQyZjQ1YWJiZjc5MmQ1ZDYwZjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmll
dy5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xh
c3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVj
dG9yKHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKICAgICB7CkBAIC0zNCw4ICsz
NCw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0
ID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImNvbnRlbnQtdmlldyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
Y29udGVudC12aWV3Iik7CiAKICAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsK
ICAgICB9CkBAIC0xOTUsMTEgKzE5NCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNs
YXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1
cm4gW107CiAgICAgfQogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IHBhcmVudENvbnRhaW5lcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udGFpbmVyOwpAQCAtMjQ1LDExICsyMzks
NiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
dXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgfQotCiAgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXggMzY4
NTg4ZDEwMmExNTZhYThmMGM1MjEyODEyNmY5ZTU2N2Y5ZGEzMC4uNmFlNjU4YmNlNjI0ZmNkY2Mw
ZWQ4ZDc1OGQ5MjY3MWU5OGZhYjVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIu
anMKQEAgLTIzLDE0ICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRl
bnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogewotICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgY29u
c3RydWN0b3IoKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVy
Iik7CiAKICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0gW107CiAgICAgICAgIHRoaXMu
X2N1cnJlbnRJbmRleCA9IC0xOwpAQCAtMzgsMTEgKzM3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJ
bnNwZWMKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGN1cnJlbnRJbmRleCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4OwpAQCAtNzIsNiArNjYs
OCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBDb250ZW50Vmll
d0NvbnRhaW5lciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRW
aWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGVu
dFZpZXcpCiAgICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7CisK
KyAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7CiAgICAgfQogCiAgICAgY29udGVudFZpZXdG
b3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nLCBleHRy
YUFyZ3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RhdGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGF0YUdyaWQuanMKaW5kZXggM2NiZjgxNjU2NGNlNjBmZjEzNzI5YzZjNzAwODkx
YmY0OTNlMjJiNy4uMzc0ZmQ4M2MzNDEwY2FjMzU0NDkzNzgyNzljNTI5MWZkYzA4Zjc1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdy
aWQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0
YUdyaWQuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CitXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYklu
c3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoY29sdW1uc0RhdGEsIGVkaXRDYWxsYmFj
aywgZGVsZXRlQ2FsbGJhY2ssIHByZWZlcnJlZENvbHVtbk9yZGVyKQogICAgIHsKQEAgLTQ4LDcg
KzQ4LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMucmVzaXplcnMgPSBbXTsKICAgICAgICAg
dGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAotICAgICAgICB0aGlzLmVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTmFtZSA9ICJkYXRhLWdyaWQiOwogICAgICAgICB0aGlzLmVsZW1lbnQudGFiSW5k
ZXggPSAwOwogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMuX2tleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwpAQCAtNDAyLDcgKzQwMSw3IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICBmb3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1uXSBvZiB0aGlzLmNv
bHVtbnMpCiAgICAgICAgICAgICBjb2x1bW5bImVsZW1lbnQiXS5zdHlsZS53aWR0aCA9IHdpZHRo
c1tpZGVudGlmaWVyXSArICIlIjsKICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5u
ZWVkc0xheW91dCgpOwogICAgIH0KIAogICAgIGluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVy
LCBjb2x1bW5EYXRhLCBpbnNlcnRpb25JbmRleCkKQEAgLTU4Myw2ICs1ODIsOCBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIAogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQu
RGlkTGF5b3V0KTsKKworICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKICAgICB9CiAKICAg
ICBjb2x1bW5XaWR0aHNNYXAoKQpAQCAtNjA0LDcgKzYwNSw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICAgICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW29yZGluYWxd
LnN0eWxlLndpZHRoID0gd2lkdGg7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLnVwZGF0ZUxh
eW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgX2lzQ29s
dW1uVmlzaWJsZShjb2x1bW5JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hp
Y2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzCmluZGV4IDJkYmEyMGJhZGU0ZWM1ZmFlMzlhNDAyOGMy
Zjc3Y2FmNWVhMDExODguLjhhYjIxZTQ3ZGRiN2JjMjMwNGEwYmY3OTc2YzFmZjA4ZmFmMjk3NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hp
ZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMK
QEAgLTYxLDcgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9u
SXRlbSA9IGNsYXNzIEhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXQKIAogICAgICAgICAvLyBV
cGRhdGUgbGF5b3V0IGZvciB0aGUgc28gb3RoZXIgaXRlbXMgY2FuIGFkanVzdCB0byB0aGUgZXh0
cmEgc3BhY2UgKG9yIGxhY2sgdGhlcmVvZikgdG9vLgogICAgICAgICBpZiAodGhpcy5wYXJlbnRO
YXZpZ2F0aW9uQmFyKQotICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0
ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5uZWVk
c0xheW91dCgpOwogICAgIH0KIAogICAgIGdldCBsYXN0Q29tcG9uZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9u
QmFyLmpzCmluZGV4IDZiYTZkMDFlY2M3NzI1NzdkZTc4MWNhYWIyYzdhMWQxNTdiOGNlYzMuLjli
NWEzOTc0YjQ4MzcwOTQ3OGQwYzI2NjY1N2JhMTI0ODQwNzAxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJh
ci5qcwpAQCAtMjMsMzAgKzIzLDMwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9u
QmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAg
ICBjb25zdHJ1Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsIHJvbGUsIGxhYmVsKQogICAg
IHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAg
dGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0
eWxlQ2xhc3NOYW1lIHx8ICJuYXZpZ2F0aW9uLWJhciIpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LnRhYkluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5j
b25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCAibmF2aWdhdGlvbi1iYXIiKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICBpZiAocm9sZSkKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CiAgICAgICAgIGlmIChs
YWJlbCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVs
IiwgbGFiZWwpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1s
YWJlbCIsIGxhYmVsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImZvY3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZh
bHNlKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwg
dGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURv
d24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKIAog
ICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGhpcy51cGRhdGVMYXlv
dXQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAKKyAgICAgICAgdGhpcy5fbWluaW11bVdp
ZHRoID0gTmFOOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMgPSBbXTsKIAogICAgICAg
ICBpZiAobmF2aWdhdGlvbkl0ZW1zKSB7CkBAIC04MSw3ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnNwbGljZShpbmRleCwgMCwgbmF2
aWdhdGlvbkl0ZW0pOwogCiAgICAgICAgIGlmICghcGFyZW50RWxlbWVudCkKLSAgICAgICAgICAg
IHBhcmVudEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50OworICAgICAgICAgICAgcGFyZW50RWxlbWVu
dCA9IHRoaXMuZWxlbWVudDsKIAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbaW5kZXggKyAxXTsKICAgICAgICAgdmFyIG5leHRTaWJsaW5nRWxlbWVudCA9
IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IG51bGw7CkBAIC05MCwxMCArOTAs
MTAgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0
QmVmb3JlKG5hdmlnYXRpb25JdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAKLSAg
ICAgICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogICAgICAgICB0aGlzLl9uZWVkc1N0eWxlVXBk
YXRlZCA9IHRydWU7CiAKLSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAg
IHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0ZW07CiAg
ICAgfQpAQCAtMTEyLDUxICsxMTIsMzEgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBj
bGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXMucmVtb3ZlKG5hdmlnYXRpb25JdGVtKTsKICAgICAgICAgbmF2
aWdhdGlvbkl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAotICAgICAgICB0aGlzLl9taW5pbXVtV2lk
dGhOZWVkc1JlY2FsY3VsYXRpb24gPSB0cnVlOworICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGgg
PSBOYU47CiAgICAgICAgIHRoaXMuX25lZWRzU3R5bGVVcGRhdGVkID0gdHJ1ZTsKIAotICAgICAg
ICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwog
CiAgICAgICAgIHJldHVybiBuYXZpZ2F0aW9uSXRlbTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlv
dXRTb29uKCkKKyAgICBuZWVkc0xheW91dCgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fdXBk
YXRlTGF5b3V0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll9uZWVkc0xheW91dCA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVmaW5l
ZDsKLQotICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRzTGF5b3V0IHx8IHRoaXMuX25lZWRzU3R5
bGVVcGRhdGVkKQotICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAg
IH0KLQotICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHVwZGF0ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQo
KTsKICAgICB9CiAKICAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X3VwZGF0ZUxheW91dElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZy
YW1lKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpOwotICAgICAgICAgICAgdGhpcy5fdXBk
YXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
ICh0aGlzLl9uZWVkc1N0eWxlVXBkYXRlZCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0eWxl
KCk7CiAKLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSBmYWxzZTsKLQogICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuY3VzdG9tVXBkYXRlTGF5b3V0ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAg
ICAgICB0aGlzLmN1c3RvbVVwZGF0ZUxheW91dCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8g
dGVzdCBpZiB0aGUgaXRlbXMgY2FuIGZpdCBhdCBmdWxsIHdpZHRoLgotICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFw
c2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAK
ICAgICAgICAgLy8gVGVsbCBlYWNoIG5hdmlnYXRpb24gaXRlbSB0byB1cGRhdGUgdG8gZnVsbCB3
aWR0aCBpZiBuZWVkZWQuCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdh
dGlvbkl0ZW1zLmxlbmd0aDsgKytpKQpAQCAtMTcxLDE1ICsxNTEsMTcgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggKz0gdGhpcy5fbmF2aWdhdGlvbkl0
ZW1zW2ldLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoOwogICAgICAgICB9CiAKLSAgICAgICAgdmFy
IGJhcldpZHRoID0gdGhpcy5fZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgIGNvbnN0
IGJhcldpZHRoID0gdGhpcy5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKIAogICAgICAgICAvLyBB
ZGQgdGhlIGNvbGxhcHNlZCBjbGFzcyBiYWNrIGlmIHRoZSBpdGVtcyBhcmUgd2lkZXIgdGhhbiB0
aGUgYmFyLgogICAgICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
ci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNz
TmFtZSk7CiAKICAgICAgICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRpb24gaXRlbSB0aGUgb3Bwb3J0
dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgc3VwZXIudXBkYXRlTGF5
b3V0KCk7CiAgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0oKQpAQCAtMjE3
LDE4ICsxOTksMTAgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0
aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5f
bmF2aWdhdGlvbkl0ZW1zOwogICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBtaW5pbXVtV2lkdGgo
KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21pbmltdW1XaWR0aCA9PT0gdW5kZWZpbmVkIHx8
IHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbikgeworICAgICAgICBpZiAoaXNO
YU4odGhpcy5fbWluaW11bVdpZHRoKSkKICAgICAgICAgICAgIHRoaXMuX21pbmltdW1XaWR0aCA9
IHRoaXMuX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbjsKLSAgICAgICAgfQotCiAgICAgICAgIHJl
dHVybiB0aGlzLl9taW5pbXVtV2lkdGg7CiAgICAgfQogCkBAIC0yNzAsNyArMjQ0LDcgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICAvLyBSZW1vdmUgdGhlIHRhYkluZGV4IHNvIGNsaWNr
aW5nIHRoZSBuYXZpZ2F0aW9uIGJhciBkb2VzIG5vdCBnaXZlIGl0IGZvY3VzLgogICAgICAgICAv
LyBPbmx5IGtlZXAgdGhlIHRhYkluZGV4IGlmIGFscmVhZHkgZm9jdXNlZCBmcm9tIGtleWJvYXJk
IG5hdmlnYXRpb24uIFRoaXMgbWF0Y2hlcyBYY29kZS4KICAgICAgICAgaWYgKCF0aGlzLl9mb2N1
c2VkKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIp
OwogCiAgICAgICAgIHZhciBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2Rl
T3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlN0
eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQu
bmF2aWdhdGlvbkl0ZW0pCkBAIC0zMDgsMTUgKzI4MiwxNSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCiAgICAgICAgIHZhciBpdGVtRWxl
bWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3Bl
Y3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAg
aWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMu
X2VsZW1lbnQuY29udGFpbnMoaXRlbUVsZW1lbnQpKSB7CisgICAgICAgIGlmICghaXRlbUVsZW1l
bnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtIHx8ICF0aGlzLmVsZW1lbnQuY29udGFp
bnMoaXRlbUVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbGVtZW50IHRoYXQg
aXMgYXQgdGhlIFggcG9zaXRpb24gb2YgdGhlIG1vdXNlLCBldmVuIHdoZW4gdGhlIG1vdXNlIGlz
IG5vIGxvbmdlcgogICAgICAgICAgICAgLy8gdmVydGljYWxseSBpbiB0aGUgbmF2aWdhdGlvbiBi
YXIuCi0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQo
ZXZlbnQucGFnZVgsIHRoaXMuX2VsZW1lbnQudG90YWxPZmZzZXRUb3AgKyAodGhpcy5fZWxlbWVu
dC5vZmZzZXRIZWlnaHQgLyAyKSk7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQucGFnZVgsIHRoaXMuZWxlbWVudC50b3RhbE9mZnNldFRv
cCArICh0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMikpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaXRlbUVsZW1l
bnQgPSBlbGVtZW50LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgaWYg
KCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMuX2Vs
ZW1lbnQuY29udGFpbnMoaXRlbUVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKCFpdGVtRWxlbWVu
dCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMuZWxlbWVudC5jb250YWlu
cyhpdGVtRWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTM0Nyw3ICszMjEsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmln
YXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9tb3VzZVVwRXZlbnRMaXN0ZW5lcjsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSB0YWJJbmRl
eCBzbyB0aGUgbmF2aWdhdGlvbiBiYXIgY2FuIGJlIGluIHRoZSBrZXlib2FyZCB0YWIgbG9vcC4K
LSAgICAgICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRoaXMuZWxlbWVu
dC50YWJJbmRleCA9IDA7CiAKICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIHNlbGVjdGVkIGV2ZW50
IGhlcmUgc2luY2UgdGhlIHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gc2V0dGVyIHN1cnByZXNzZXMg
aXQKICAgICAgICAgLy8gd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24gdG8gcHJldmVudCBzZW5kaW5n
IGl0IHdoaWxlIHNjcnViYmluZyB0aGUgYmFyLgpAQCAtNDIyLDExICszOTYsMTEgQEAgV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpCiAgICAgewotICAg
ICAgICB2YXIgd2FzQ29sbGFwc2VkID0gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAg
ICAgICBjb25zdCB3YXNDb2xsYXBzZWQgPSB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5z
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAog
ICAgICAgICAvLyBBZGQgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byBjYWxjdWxhdGUgdGhl
IHdpZHRoIG9mIHRoZSBpdGVtcyB3aGVuIHRoZXkgYXJlIGNvbGxhcHNlZC4KICAgICAgICAgaWYg
KCF3YXNDb2xsYXBzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHZhciB0b3RhbEl0ZW1X
aWR0aCA9IDA7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdhdGlvbkl0
ZW1zLmxlbmd0aDsgKytpKSB7CkBAIC00MzgsNyArNDEyLDcgQEAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIGlmIHdlIHdl
cmUgbm90IGNvbGxhcHNlZCBiZWZvcmUuCiAgICAgICAgIGlmICghd2FzQ29sbGFwc2VkKQotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNl
ZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICByZXR1cm4gdG90YWxJdGVtV2lkdGg7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCBjYjc1NTQzYzFmYTU3ZDAzYjAyMDUxMjUyODAy
MDJlNWIzYmRjNTg4Li4xZDc2MTE1NGUzYjcwZDU4YjIyOWE2MzFmY2M4YjgzYmQwM2IwMDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZp
Z2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtODAsNyArODAsNyBAQCBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkl0ZW0gPSBjbGFzcyBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4iLCBm
bGFnKTsKIAogICAgICAgICBpZiAodGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhcikKLSAgICAgICAg
ICAgIHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0U29vbigpOworICAgICAg
ICAgICAgdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgpOwogICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCBjNGFkNTIwMjc4N2YxM2NiMjQ1
MTA4YzhlNmI1MWMxZTM4NDZmY2MzLi4zYWQ1NTU3MTBmMDFmODQ1MjBjNzYxNGEyNWQxNjc1OWFh
ZTVhMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25z
b2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYklu
c3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCkKICAgICB7Ci0gICAgICAg
IHN1cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3RvZ2ds
ZU9yRm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUsIHRoaXMu
X3RvZ2dsZU9yRm9jdXMuYmluZCh0aGlzKSk7CiAKQEAgLTM4LDEyICszOCwxMSBAQCBXZWJJbnNw
ZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogICAgICAgICB0aGlzLl9vdGhlckV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9u
ZW50cyA9IFtdOwogICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJUb0V4ZWN1dGlvbkNvbnRl
eHRQYXRoQ29tcG9uZW50TWFwID0ge307CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1l
bnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOwogCiAgICAgICAgIHRoaXMucHJvbXB0ID0g
bmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KG51bGwsICJ0ZXh0L2phdmFzY3JpcHQiKTsK
ICAgICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0ZXh0LXByb21wdCIp
OwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQp
OworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5wcm9tcHQpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBDb2RlTWlycm9yIDQgaGFzIGEgZGVmYXVsdCAiRXNjIiBrZXkgaGFuZGxlciB0aGF0IGFs
d2F5cyBwcmV2ZW50cyBkZWZhdWx0LgogICAgICAgICAvLyBPdXIga2V5Ym9hcmQgc2hvcnRjdXQg
YWJvdmUgd2lsbCByZXNwZWN0IHRoZSBkZWZhdWx0IHByZXZlbnRlZCBhbmQgaWdub3JlIHRoZSBl
dmVudApAQCAtNTUsNyArNTQsNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3Mg
UXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnBy
b21wdC5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5h
ZGRTdWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogCiAgICAgICAgIHRoaXMuX2V4ZWN1dGlv
bkNvbnRleHRTZWxlY3Rvckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbTsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9ySXRl
bS5zaG93U2VsZWN0b3JBcnJvd3MgPSB0cnVlOwpAQCAtNzQsMTEgKzczLDYgQEAgV2ViSW5zcGVj
dG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IG5hdmlnYXRpb25C
YXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXI7CkBAIC05NCw2
ICs4OCw4IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIC8vIEEgaGFyZCBtYXhpbXVtIHNp
emUgb2YgMzMlIG9mIHRoZSB3aW5kb3cuCiAgICAgICAgIHZhciBtYXhpbXVtQWxsb3dlZEhlaWdo
dCA9IE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0ICogMC4zMyk7CiAgICAgICAgIHRoaXMu
cHJvbXB0LmVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbWF4aW11bUFsbG93ZWRIZWlnaHQgKyAi
cHgiOworCisgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwogICAgIH0KIAogICAgIGNvbnNv
bGVMb2dWaXNpYmlsaXR5Q2hhbmdlZCh2aXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDZkN2Y0MzNjZjQ4MmVm
ZjRhOTMxNTY1OGMxMTllMmYwYjkyNDAyMzUuLjA0ZjQxYWRjNDM0OGUyYjU0YTIwOGM5N2VlYWFi
Zjc5ZWI5OGM0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTIzLDIzICsyMywyMiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50LCB0YWJCYXJJdGVtcykKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAg
IHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInRhYi1iYXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
dGFiLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRh
Ymxpc3QiKTsKIAogICAgICAgICB2YXIgdG9wQm9yZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0b3BCb3JkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRvcC1ib3JkZXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0b3BCb3Jk
ZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRvcEJvcmRlckVs
ZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0
aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2
ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24u
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKIApAQCAtMTExLDcg
KzExMCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLl9uZXdUYWJJdGVt
ID8gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSA6IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0
aDsKICAgICAgICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgbGFzdEluZGV4
KSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmlt
YXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygi
YW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVT
dHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBkb05vdEFuaW1hdGUgPSB0cnVlOwogICAg
ICAgICB9CkBAIC0xMjUsMzQgKzEyNCwzNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxp
bmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxp
bmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25l
d1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0
aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5n
RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5l
bGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRh
YigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIi
LCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQu
c3R5bGUud2lkdGggPSBudWxsOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRp
bmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5n
LXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGlu
ZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10
YWIiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xp
c3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIi
KTsKIAogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImJl
aW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0
aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFkb05vdEFuaW1hdGUpIHsKQEAgLTE2OCw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJC
YXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9KTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAg
IHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5k
UG9zaXRpb25zKTsKQEAgLTE3Nyw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRkZWQsIHt0YWJCYXJJdGVtfSk7
CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRh
YkJhckl0ZW0gPSBuZXh0VGFiQmFySXRlbTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYg
KHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAg
ICAgICAgICAgZG9Ob3RBbmltYXRlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjE5LDcgKzIxOCw3
IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAg
ICB2YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1h
bFRhYigpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10
YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CiAK
ICAgICAgICAgY29uc3Qgc2hvdWxkT3BlbkRlZmF1bHRUYWIgPSAhdGFiQmFySXRlbS5pc0RlZmF1
bHRUYWIgJiYgIXRoaXMuaGFzTm9ybWFsVGFiKCk7CiAgICAgICAgIGlmIChzaG91bGRPcGVuRGVm
YXVsdFRhYikKQEAgLTIzMCw3ICsyMjksNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMu
X3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBv
c2l0aW9ucyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0
ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJC
YXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTI0NCw4ICsy
NDMsOCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOwogCiAg
ICAgICAgICAgICB2YXIgbGVmdCA9IDA7CiAgICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50VGFi
QmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewpAQCAtMjY2LDcgKzI2NSw3IEBAIFdlYklu
c3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVk
VGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50
LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5z
dHlsZS53aWR0aCkgKyAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVy
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFu
c2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
ZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKQEAgLTI3NSwxNiArMjc0LDE2IEBAIFdlYkluc3BlY3Rv
ci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbSAhPT0gbGFzdE5vcm1hbFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CiAK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFi
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5n
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10
YWIiKTsKIAogICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRvTm90QW5pbWF0ZSkgewotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogCiAgICAgICAg
ICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAKQEAg
LTI5NCw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7
CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRh
YkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMzUwLDM4
ICszNDksMTMgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0aGlz
Ll90YWJCYXJJdGVtc1tuZXdJbmRleF07CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0U29vbigp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IHRydWU7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gdXBkYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fdXBk
YXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAgaWYgKHRoaXMu
X25lZWRzTGF5b3V0KQotICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKHVwZGF0ZS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KICAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpIHsK
LSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3VwZGF0ZUxheW91dElkZW50
aWZpZXIpOwotICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVm
aW5lZDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygic3RhdGljLWxheW91dCIpKQorICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRlLXRpdGxlcyIpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgiaGlkZS10aXRsZXMiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOwogCiAgICAgICAgIHZhciBmaXJzdE5vcm1hbFRhYkl0
ZW0gPSBudWxsOwogICAgICAgICBmb3IgKHZhciB0YWJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1z
KSB7CkBAIC0zOTcsMTIgKzM3MSwxNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoZmlyc3ROb3JtYWxU
YWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lkdGggPj0gMTIwKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKIAogICAgICAgICBp
ZiAoZmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjApCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRl
LXRpdGxlcyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGlkZS10aXRs
ZXMiKTsKKworICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKICAgICB9CiAKICAgICBnZXQg
c2VsZWN0ZWRUYWJCYXJJdGVtKCkKQEAgLTQzNSwxMSArNDExLDYgQEAgV2ViSW5zcGVjdG9yLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
cmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zOwogICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGhhc05vcm1h
bFRhYigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuc29tZSgodGFi
KSA9PiAhdGFiLnBpbm5lZCk7CkBAIC00ODMsNyArNDU0LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJh
ciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAg
ICAgIHZhciB0YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMgPSBuZXcgTWFwOwogCi0gICAgICAg
IHZhciBiYXJSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAg
ICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKIAogICAgICAgICBmb3IgKHZhciB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7
CiAgICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gdGFiQmFySXRlbS5lbGVtZW50LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOwpAQCAtNTIyLDcgKzQ5Myw3IEBAIFdlYkluc3BlY3Rvci5UYWJC
YXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAg
ICBpZiAoIWJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKQogICAgICAgICAgICAgICAgIGJlZm9y
ZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
c3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoInN0YXRpYy1sYXlvdXQiKTsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKCk7CiAKICAgICAgICAgICAgIHZhciBhZnRlclRhYlNpemVzQW5kUG9z
aXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CkBAIC01
MzIsMjYgKzUwMywyNiBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFi
cygpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImV4cGFuZGluZy10YWJzIik7CisgICAgICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImV4cGFuZGluZy10YWJzIik7CiAKICAgICAgICAg
ICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRlclRhYlNp
emVzQW5kUG9zaXRpb25zKTsKIAotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsK
LSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGlu
ZyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhw
YW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRo
aXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKICAgICAgICAgICAgICAg
ICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5y
ZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlz
dGVuZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogCiAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfQpAQCAtNjMwLDcgKzYwMSw3IEBAIFdl
Ykluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIHZhciBjbG9zZUJ1dHRvbkVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9z
aW5nTm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuVGFiQmFySXRlbS5DbG9zZUJ1dHRv
blN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgaWYgKGNsb3NlQnV0dG9uRWxlbWVudCB8fCBjbGlj
a2VkTWlkZGxlQnV0dG9uKSB7CiAgICAgICAgICAgICAvLyBEaXNhbGxvdyBjbG9zaW5nIHRoZSBk
ZWZhdWx0IHRhYiBpZiBpdCBpcyB0aGUgb25seSB0YWIuCi0gICAgICAgICAgICBpZiAodGFiQmFy
SXRlbS5pc0RlZmF1bHRUYWIgJiYgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNp
bmdsZS10YWIiKSkKKyAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAmJiB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaW5nbGUtdGFiIikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0odGFiQmFy
SXRlbSwgZmFsc2UsIHRydWUpOwpAQCAtNjUxLDEwICs2MjIsMTAgQEAgV2ViSW5zcGVjdG9yLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CiAKLSAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGlj
LWxheW91dCIpKSB7CisgICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cygic3RhdGljLWxheW91dCIpKSB7CiAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucyh0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMo
KSk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlv
dXQiKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmct
dGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxh
eW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRyYWdnaW5n
LXRhYiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMuX21vdXNlT2Zmc2V0ID09PSB1
bmRlZmluZWQpCkBAIC02OTUsNyArNjY2LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdmFyIG5leHRTaWJs
aW5nID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXggKyAxXTsKICAgICAgICAgdmFyIG5leHRT
aWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6ICh0aGlz
Ll9uZXdUYWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50IDogbnVsbCk7CiAKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVs
ZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRC
ZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVu
dCk7CiAKICAgICAgICAgLy8gRklYTUU6IEFuaW1hdGUgdGhlIHRhYnMgdGhhdCBtb3ZlIHRvIG1h
a2Ugcm9vbSBmb3IgdGhlIHNlbGVjdGVkIHRhYi4gVGhpcyB3YXMgY2F1c2luZyBtZSB0cm91Ymxl
IHdoZW4gSSB0cmllZC4KIApAQCAtNzE0LDEwICs2ODUsMTAgQEAgV2ViSW5zcGVjdG9yLlRhYkJh
ciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYg
KCF0aGlzLl9tb3VzZUlzRG93bikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nLXRhYiIpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmctdGFiIik7CiAKICAgICAgICAgaWYg
KCF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlcikgewotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwogICAg
ICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHZhciBsZWZ0ID0gMDsKQEAgLTc0NSwxNCArNzE2LDE0
IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAKICAgICBfaGFuZGxlTW91c2VMZWF2ZShldmVudCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1v
dXNlRW50ZXIgfHwgIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5
b3V0IikgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQor
ICAgICAgICBpZiAodGhpcy5fbW91c2VJc0Rvd24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2Vk
U2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0
aWMtbGF5b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5n
IikpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gVGhpcyBldmVudCBjYW4gc3Rp
bGwgZmlyZSB3aGVuIHRoZSBtb3VzZSBpcyBpbnNpZGUgdGhlIGVsZW1lbnQgaWYgRE9NIG5vZGVz
IGFyZSBhZGRlZCwgcmVtb3ZlZCBvciBnZW5lcmFsbHkgY2hhbmdlIGluc2lkZS4KICAgICAgICAg
Ly8gQ2hlY2sgaWYgdGhlIG1vdXNlIHJlYWxseSBkaWQgbGVhdmUgdGhlIGVsZW1lbnQgYnkgY2hl
Y2tpbmcgdGhlIGJvdW5kcy4KICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgYSBXZWJLaXQgYnVn
IG9yIGNvcnJlY3QgYmVoYXZpb3I/Ci0gICAgICAgIHZhciBiYXJSZWN0ID0gdGhpcy5fZWxlbWVu
dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgdmFyIG5ld1RhYkl0ZW1SZWN0ID0g
dGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25ld1RhYkl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKSA6IG51bGw7CisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0aGlzLmVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IG5ld1RhYkl0ZW1SZWN0ID0g
dGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25ld1RhYkl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKSA6IG51bGw7CiAgICAgICAgIGlmIChldmVudC5wYWdlWSA+IGJhclJlY3QudG9w
ICYmIGV2ZW50LnBhZ2VZIDwgYmFyUmVjdC5ib3R0b20gJiYgZXZlbnQucGFnZVggPiBiYXJSZWN0
LmxlZnQgJiYgZXZlbnQucGFnZVggPCAobmV3VGFiSXRlbVJlY3QgPyBuZXdUYWJJdGVtUmVjdC5y
aWdodCA6IGJhclJlY3QucmlnaHQpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03NjgsNyAr
NzM5LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKIAogICAgIF9oYW5kbGVOZXdUYWJNb3VzZUVudGVyKGV2ZW50KQogICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8
fCAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgIGlm
ICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMK
aW5kZXggMjhiYTkzOTU1YTM5ODEyMzFlNjY3NmQ2YTM4MDY4ZTIxY2YyYmRkZS4uNmUwNjAyYjg4
ZTM0YTMyM2QwMjY5MTgyZTE3NTVjYTRmNmJjOGUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCkBAIC0yMywx
OSArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHRh
YkJhciwgbmF2aWdhdGlvblNpZGViYXIsIGRldGFpbHNTaWRlYmFyKQogICAgIHsKLSAgICAgICAg
c3VwZXIoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQmFyLCAiTXVzdCBwcm92aWRlIGEg
VGFiQmFyLiIpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInRhYi1icm93c2VyIik7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRo
aXMuX3RhYkJhciA9IHRhYkJhciB8fCBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhcjsKLSAgICAgICAg
aWYgKCF0YWJCYXIpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X3RhYkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRh
Yi1icm93c2VyIik7CiAKKyAgICAgICAgdGhpcy5fdGFiQmFyID0gdGFiQmFyOwogICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uU2lkZWJhciA9IG5hdmlnYXRpb25TaWRlYmFyIHx8IG51bGw7CiAgICAg
ICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyID0gZGV0YWlsc1NpZGViYXIgfHwgbnVsbDsKIApAQCAt
NDgsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWlu
ZXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lcik7CiAKICAgICAgICAgdmFyIHNob3dOZXh0VGFiID0gdGhpcy5fc2hvd05l
eHRUYWIuYmluZCh0aGlzKTsKICAgICAgICAgdmFyIHNob3dQcmV2aW91c1RhYiA9IHRoaXMuX3No
b3dQcmV2aW91c1RhYi5iaW5kKHRoaXMpOwpAQCAtNzMsMTEgKzcxLDYgQEAgV2ViSW5zcGVjdG9y
LlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgdGFiQmFyKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl90YWJCYXI7CkBAIC05OCwxMiArOTEsNiBAQCBXZWJJbnNwZWN0
b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29u
dGVudFZpZXc7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3RhYkJhci51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250
YWluZXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgYmVzdFRhYkNvbnRlbnRWaWV3Rm9y
Q2xhc3MoY29uc3RydWN0b3IpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5z
ZWxlY3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0g
dGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwppbmRleCA3
YTAwZGNhY2JhOTFjMzEzNmE0YmE4MWJiZTAxMTQxOTdiYjM1NTYzLi4yOTQyODE4NDA2MmY3Yjdk
YjQzNDJlOTRlMjQ1NjcwMjRiZTFlNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCkBAIC0xNzIsMjYg
KzE3MiwxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3ID0gY2xhc3MgVGltZWxpbmVWaWV3
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCisgICAgZmlsdGVyVXBkYXRlZCgpCiAgICAgewot
ICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewotICAg
ICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW1wbGVtZW50ZWQg
Ynkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBv
bmVudHNEaWRDaGFuZ2UpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkKCkKKyAg
ICBuZWVkc0xheW91dCgpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3NjaGVkdWxlZExheW91
dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0KIAotICAgIGZp
bHRlclVwZGF0ZWQoKQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRz
RGlkQ2hhbmdlKTsKKyAgICAgICAgc3VwZXIubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICAv
LyBQcm90ZWN0ZWQKQEAgLTI0NywxNSArMjM4LDQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmll
dyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldwog
CiAgICAgICAgIHRoaXMuc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQp
OwogICAgIH0KLQotICAgIG5lZWRzTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy52
aXNpYmxlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCmlu
ZGV4IDIxM2UzMjAxNzEyOGY5YWYyNDI2NGVhOTBjM2Y2ZWZhY2YwZWZmNTIuLjI0MWMwYjdkZjMx
ODUwMGQ5Y2I0OGY1MTkyMGIzNGI3MWUyOTJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpAQCAtMzQsMzAgKzM0LDMw
IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyCiAKICAgICAgICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xT
ZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5Db250cm9sU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2xlZnRT
ZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0
aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIu
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkxl
ZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2Nl
bnRlckxlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkNlbnRlckxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVu
dCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJMZWZ0U2Vj
dGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rpb25F
bGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVD
bGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJJdGVtU2VjdGlvblN0
eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nl
bnRlclNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NlbnRlclNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jZW50ZXJSaWdodFNl
Y3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRo
aXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRv
b2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29s
YmFyLkNlbnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVs
ZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1l
ICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NO
YW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VjdGlv
bkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRT
ZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgaWYgKCFkb250QWxsb3dNb2RlQ2hhbmdlcykKLSAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hh
bmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIH0KIAogICAgIC8v
IFB1YmxpYwpAQCAtNzMsMTUgKzczLDE1IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3Mg
VG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlKQotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2Rpc3BsYXlNb2RlKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2Rpc3BsYXlNb2RlKTsKIAog
ICAgICAgICAvLyBSZXZlcnQgdGhlIGZvcmNlZCBpY29uLW9ubHkgbW9kZSBpZiBpdCB3YXMgYXBw
bGllZC4KICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlID09PSBXZWJJbnNwZWN0b3IuVG9v
bGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKQotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlN
b2RlLkljb25Pbmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKIAogICAgICAgICB0
aGlzLl9kaXNwbGF5TW9kZSA9IG1vZGU7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKG1vZGUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChtb2RlKTsK
IAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCkBAIC05OSwxMSArOTksMTEgQEAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2l6
ZU1vZGUpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5f
c2l6ZU1vZGUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhp
cy5fc2l6ZU1vZGUpOwogCiAgICAgICAgIHRoaXMuX3NpemVNb2RlID0gbW9kZTsKIAotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKG1vZGUpOwogCiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAK
QEAgLTExOCwxNyArMTE4LDE3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJh
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAKICAgICAgICAgLy8gRm9yY2Ug
Y29sbGFwc2VkIHN0eWxlIGZvciBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzLgogICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLmRlYnVnZ2FibGVUeXBlID09PSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5
cGUuSmF2YVNjcmlwdCkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIHRv
IHRlc3QgaWYgdGhlIGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3aWR0aC4KLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxh
cHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwog
CiAgICAgICAgIC8vIFJldmVydCB0aGUgZm9yY2VkIGljb24tb25seSBtb2RlIGlmIGl0IHdhcyBh
cHBsaWVkLgogICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1vZGUgPT09IFdlYkluc3BlY3Rvci5U
b29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpIHsKLSAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uT25seSk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRh
bCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5k
TGFiZWxIb3Jpem9udGFsKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGlzT3ZlcmZs
b3dpbmdUb29sYmFyKCkKQEAgLTE0NywxNCArMTQ3LDE0IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFy
ID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAgICAg
ICAgIC8vIE9ubHkgdGhlIGhvcml6b250YWwgZGlzcGxheSBtb2RlIHN1cHBvcnRzIGNvbGxhcHNp
bmcgbGFiZWxzLgogICAgICAgICAvLyBJZiBhbnkgc2VjdGlvbnMgYXJlIG92ZXJmbG93aW5nIHRo
ZSB0b29sYmFyIHRoZW4gZm9yY2UgdGhlIGRpc3BsYXkgbW9kZSB0byBiZSBpY29uIG9ubHkuCiAg
ICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlz
cGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCAmJiBpc092ZXJmbG93aW5nVG9vbGJhci5j
YWxsKHRoaXMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
V2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCk7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRv
b2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExh
YmVsSG9yaXpvbnRhbCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIWlzT3ZlcmZsb3dpbmdUb29sYmFyLmNhbGwodGhpcykpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFw
c2VkU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIAogICAgIGFkZFRvb2xiYXJJdGVtKHRvb2xiYXJJ
dGVtLCBzZWN0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MTE1YTg2Y2Y3YmQyNWQ2ODU0
MzJkMmNhOGU4Y2NkYzhmODdiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgeworICAgICAgICBz
dXBlcigpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50Ll9fdmlldyA9IHRoaXM7
CisgICAgICAgIHRoaXMuX3N1YnZpZXdzID0gW107CisgICAgfQorCisgICAgLy8gUHVibGljCisK
KyAgICBnZXQgZWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
KyAgICB9CisKKyAgICBnZXQgc3Vidmlld3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3N1YnZpZXdzOworICAgIH0KKworICAgIGFkZFN1YnZpZXcodmlldykKKyAgICB7CisgICAgICAg
IHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZSh2aWV3LCBudWxsKTsKKyAgICB9CisKKyAgICBpbnNl
cnRTdWJ2aWV3QmVmb3JlKHZpZXcsIHJlZmVyZW5jZVZpZXcpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydCh2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworICAgICAgICBj
b25zb2xlLmFzc2VydCghcmVmZXJlbmNlVmlldyB8fCByZWZlcmVuY2VWaWV3IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlZpZXcpOworCisgICAgICAgIGlmICh0aGlzLl9zdWJ2aWV3cy5pbmNsdWRl
cyh2aWV3KSkgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDYW5ub3QgYWRk
IHZpZXcgdGhhdCBpcyBhbHJlYWR5IGEgc3Vidmlldy4iLCB2aWV3KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGJlZm9yZUluZGV4ID0gcmVmZXJlbmNl
VmlldyA/IHRoaXMuX3N1YnZpZXdzLmluZGV4T2YocmVmZXJlbmNlVmlldykgOiB0aGlzLl9zdWJ2
aWV3cy5sZW5ndGg7CisgICAgICAgIGlmIChiZWZvcmVJbmRleCA9PT0gLTEpIHsKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiQ2Fubm90IGluc2VydCB2aWV3LiBJbnZhbGlkIHJl
ZmVyZW5jZSB2aWV3LiIsIHJlZmVyZW5jZVZpZXcpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5fc3Vidmlld3MuaW5zZXJ0QXRJbmRleCh2aWV3LCBiZWZv
cmVJbmRleCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuaW5zZXJ0QmVmb3JlKHZpZXcuZWxlbWVu
dCwgcmVmZXJlbmNlVmlldyA/IHJlZmVyZW5jZVZpZXcuZWxlbWVudCA6IG51bGwpOworICAgIH0K
KworICAgIHJlbW92ZVN1YnZpZXcodmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHZpZXcuZWxlbWVudC5wYXJlbnROb2RlID09PSB0aGlzLl9lbGVtZW50LCAiU3VidmlldyBE
T00gZWxlbWVudCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBhcmVudCB2aWV3IGVsZW1lbnQuIik7
CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdWJ2aWV3cy5pbmNsdWRlcyh2aWV3KSkgeworICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDYW5ub3QgcmVtb3ZlIHZpZXcgd2hpY2ggaXNu
J3QgYSBzdWJ2aWV3LiIsIHZpZXcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fc3Vidmlld3MucmVtb3ZlKHZpZXcsIHRydWUpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LnJlbW92ZUNoaWxkKHZpZXcpOworICAgIH0KKworICAgIHJlcGxhY2VTdWJ2aWV3
KG9sZFZpZXcsIG5ld1ZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChvbGRWaWV3
ICE9PSBuZXdWaWV3LCAiQ2Fubm90IHJlcGxhY2Ugc3VidmlldyB3aXRoIGl0c2VsZi4iKTsKKwor
ICAgICAgICB0aGlzLmluc2VydFN1YnZpZXdCZWZvcmUobmV3Vmlldywgb2xkVmlldyk7CisgICAg
ICAgIHRoaXMucmVtb3ZlU3VidmlldyhvbGRWaWV3KTsKKyAgICB9CisKKyAgICB1cGRhdGVMYXlv
dXQoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKworICAg
ICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgeworICAgICAg
ICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRl
bnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlm
aWVyID0gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc3Vidmlld3MuZm9y
RWFjaCgodmlldykgPT4geyB2aWV3LnVwZGF0ZUxheW91dCgpOyB9KTsKKyAgICB9CisKKyAgICB1
cGRhdGVMYXlvdXRJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NjaGVkdWxl
ZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICB9CisKKyAgICBuZWVkc0xheW91dCgpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMp
KTsKKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264256</attachid>
            <date>2015-10-28 15:29:00 -0700</date>
            <delta_ts>2015-10-28 15:58:49 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151028152811.patch</filename>
            <type>text/plain</type>
            <size>94819</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
ZWJkODk3Y2VkYTFjMzY3NzJjMTg0ZmY5NmYxZmQ4ODg5YThkOWM5Li41ZDU4ZjU2MzA3NjM0Y2Vl
ZWE2YTI0ZGZlOTQ5ZThiN2NmYjJiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNzEgQEAKIDIwMTUtMTAtMjggIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIHNvIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IG1heSBiZSBhc3NvY2lhdGVkIHdpdGggdGhl
IFZpZXcgb2JqZWN0LAorICAgICAgICByYXRoZXIgdGhhbiBkeW5hbWljYWxseSBjcmVhdGluZyBh
IG5ldyBlbGVtZW50LiBWaWV3IGFsc28gYWRkcyB0aGUgYF9fdmlld2AgcHJvcGVydHkgdG8KKyAg
ICAgICAgaXRzIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcg
b2YgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIHZpZXcgY2xhc3NlcyB0aGF0
IGhhdmUgYmVlbiByZWZhY3RvcmVkIGluIHRoaXMgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBsYXJn
ZWx5IG1lY2hhbmljYWwuCisgICAgICAgIER5bmFtaWNhbGx5IGNyZWF0ZWQgRE9NIGVsZW1lbnRz
IGFuZCByZWR1bmRhbnQgZWxlbWVudCBnZXR0ZXJzIHdlcmUgcmVtb3ZlZCwgdXBkYXRlTGF5b3V0
SWZOZWVkZWQKKyAgICAgICAgaGFzIGJlZW4gcmVwbGFjZWQgYnkgbmVlZHNMYXlvdXQgaW4gc29t
ZSBjYXNlcywgYW5kIGZvciB2aWV3cyB3aGljaCBkaWQgbm8gbGF5b3V0IG9mIHRoZWlyIG93biBi
dXQKKyAgICAgICAgb25seSB1cGRhdGVkIHN1YnZpZXdzLCB1cGRhdGVMYXlvdXQgaGFzIGJlZW4g
ZWxpbWluYXRlZCBlbnRpcmVseS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzOgorICAgICAgICBNb3ZlZCBUYWJCYXIgbGF5b3V0IHVwZGF0ZXMgb3V0IG9mIFRhYkJyb3dz
ZXIgYW5kIGludG8gTWFpbi5qcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVQcm9tcHQucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUucmVuZGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ2V0IGVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLmF1dG9TaXplQ29sdW1ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLmFwcGx5Q29sdW1uV2lkdGhzTWFwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQgY29tcG9uZW50cyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5pbnNlcnROYXZpZ2F0aW9uSXRlbSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUucmVtb3ZlTmF2aWdhdGlvbkl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLmdldCBtaW5pbXVtV2lk
dGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnJlbmRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21vdXNl
RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21v
dXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBl
Ll9tb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlw
ZS5fY2FsY3VsYXRlTWluaW11bVdpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRTb29uLnVwZGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29v
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5
cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuc2V0IGhpZGRlbik6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtUaW1lbGluZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1l
bGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5R
dWlja0NvbnNvbGUucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90
eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJC
YXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90
eXBlLmluc2VydFRhYkJhckl0ZW0ucmVtb3ZlU3R5bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5hbmltYXRlVGFicyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVUYWJCYXJJdGVtLnJlbW92
ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVU
YWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmhhc05v
cm1hbFRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW5kZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX3JlY29yZFRhYkJhckl0
ZW1TaXplc0FuZFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3Rv
dHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlVXApOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU5ld1RhYk1v
dXNlRW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRl
TGF5b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJh
ci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2VyLnBy
b3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFi
QnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUuc2V0IGFsbG93c1RpbWVSYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc01hcmtlckxheW91
dC51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBl
Ll9uZWVkc01hcmtlckxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0LnVwZGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fcmVjYWxjdWxh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl91cGRh
dGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLl9oYW5kbGVNb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VE
b3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUuZmlsdGVyVXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5uZWVkc0xh
eW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRh
dGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5w
cm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnNldCBkaXNwbGF5TW9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuc2V0IHNpemVNb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5jdXN0b21VcGRhdGVMYXlvdXQpOgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZ2V0
IHN1YnZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5hZGRTdWJ2
aWV3KToKKyAgICAgICAgQXBwZW5kcyBhIHZpZXcgYXQgdGhlIGVuZCBvZiB0aGUgc3VidmlldyBs
aXN0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmluc2VydFN1YnZpZXdC
ZWZvcmUpOgorICAgICAgICBJbnNlcnQgYSB2aWV3IGludG8gc3VidmlldyBsaXN0IGJlZm9yZSBh
bm90aGVyIHN1YnZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVt
b3ZlU3Vidmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVwbGFj
ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxh
eW91dCk6CisgICAgICAgIE5vIGxvbmdlciBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgor
ICAgICAgICBGb3JjZXMgYSBsYXlvdXQgaWYgb25lIGhhcyBiZWVuIHNjaGVkdWxlZCwgb3RoZXJ3
aXNlIGRvZXMgbm90aGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5u
ZWVkc0xheW91dCk6CisgICAgICAgIFNjaGVkdWxlcyB0aGUgdmlldyBmb3IgcmVuZGVyaW5nLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIE92
ZXJyaWRkZW4gYnkgdmlld3MgdGhhdCBwZXJmb3JtIGxheW91dC4gUmV0dXJuIHZhbHVlIGNvbnRy
b2xzIHdoZXRoZXIKKyAgICAgICAgY2hpbGQgdmlld3MgYXJlIHJlbmRlcmVkLiBEZWZhdWx0IGJl
aGF2aW9yIGZvciB2aWV3cyB0aGF0IGRvbid0IGRlZmluZQorICAgICAgICBhIHJlbmRlciBtZXRo
b2QgaXMgdG8gcmVuZGVyIHN1YnZpZXdzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlLl9yZW5kZXJTdWJ0cmVlKToKKyAgICAgICAgQW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNr
IHRvIHJlbmRlciB0aGUgdmlldyBhbmQgKG9wdGlvbmFsbHkpIGl0cyBjaGlsZCB2aWV3cy4KKwor
MjAxNS0xMC0yOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUmVuZGVyaW5nIEZyYW1lcyBwaWUgY2hhcnQgZG9lcyBub3QgdXBkYXRl
IGR1cmluZyBpbml0aWFsIHNlbGVjdGlvbiBvZiBhIHRpbWVsaW5lIHJhbmdlCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MzAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDFjNWIx
NWUzMTVmZmQ4Y2QzYzFlMGRkOTNiOWY3ZTQyNmU1YjE4ODcuLmZkZTI5MTZjMzUzOTQxNzljMDE2
NWUxMTY2NzQwNmRkODI2ODAyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTEyODIsNiArMTI4Miw3IEBAIFdlYkluc3BlY3Rv
ci5fd2luZG93Qmx1cnJlZCA9IGZ1bmN0aW9uKGV2ZW50KQogV2ViSW5zcGVjdG9yLl93aW5kb3dS
ZXNpemVkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdGhpcy50b29sYmFyLnVwZGF0ZUxheW91
dCgpOworICAgIHRoaXMudGFiQmFyLnVwZGF0ZUxheW91dCgpOwogICAgIHRoaXMuX3RhYkJyb3dz
ZXJTaXplRGlkQ2hhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYWNlMzc1YjZkODZlZjMzOTAwZmI0MGE5NjIwMzRkNjNk
MTdlYjRkNy4uMTJmNTU5OTdmOTc2MjJjYjE5ZmI5ODMxNGQ4OWE1MzhiMzI4YjFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzM2LDYg
KzMzNiw4IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBlU2V0LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dyYXBwZWRQcm9taXNlLmpzIj48L3NjcmlwdD4KIAor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaWV3LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db25zb2xlQ29tbWFuZFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db25zb2xlTWVzc2FnZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcwpp
bmRleCA4MGY0OTRiYmYwMTRlNWEyYTM5YmZmYmNhODY0MDIzYTIxOGQ1MzIxLi42ZWRlNTUzZDYy
ZDM1YzYzODQyMjRmZDM2ZTc2MGVmMzgzNzdmOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAg
LTIzLDE2ICsyMywxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xh
c3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3Ry
dWN0b3IoZGVsZWdhdGUsIG1pbWVUeXBlLCBlbGVtZW50KQogICAgIHsKLSAgICAgICAgc3VwZXIo
KTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKICAgICAgICAgbWltZVR5cGUgPSBwYXJzZU1J
TUVUeXBlKG1pbWVUeXBlKS50eXBlOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50
IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtcHJvbXB0IiwgV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hs
aWdodGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiY29uc29sZS1wcm9tcHQiLCBXZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNs
YXNzTmFtZSk7CiAKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwog
CkBAIC02NiwxMSArNjUsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENv
bnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OwotICAgIH0KLQogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZGVsZWdhdGU7CkBAIC0xMjYsMTEgKzEyMCw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJv
bXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwotICAgIH0K
LQogICAgIHVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZUNvbXBsZXRpb25z
KGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCk7CkBAIC0xNTgsNiArMTQ3LDEyIEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuICEhdGhpcy50ZXh0OwogICAgIH0KIAorICAg
IHJlbmRlcigpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlZnJlc2goKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2hhbmRs
ZVRhYktleShjb2RlTWlycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwppbmRleCBiZTdiZTAyNmY4
MWZmYThhYzg4YWUxOTljNTVlMzA0YTQxODkwNmMyLi43MTEzNGFiNmU4NGE2NjZjYzJiZDM5NGE2
Mzk5ZjAzZmY0MDk2ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwpAQCAtMjMsMjkgKzIzLDI4
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50
QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxl
bWVudCwgZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKICAgICB7Ci0gICAgICAgIHN1cGVy
KCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBl
bGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtYnJvd3NlciIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1icm93c2VyIik7CiAKICAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29u
dGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhp
cyk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lcik7CiAKICAgICAgICAgdGhpcy5fZmluZEJhbm5lciA9IG5ldyBXZWJJbnNw
ZWN0b3IuRmluZEJhbm5lcih0aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZFNob3csIHRoaXMuX2Zp
bmRCYW5uZXJEaWRTaG93LCB0aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZEhpZGUsIHRoaXMuX2Zp
bmRCYW5uZXJEaWRIaWRlLCB0aGlzKTsKIAogICAgICAgICBpZiAoIWRpc2FibGVCYWNrRm9yd2Fy
ZCkgewotICAgICAgICAgICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0
aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICAg
ICAgICAgIHRoaXMuX2ZvcndhcmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNv
bW1hbmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5D
b250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2Zv
cndhcmRCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOworICAgICAgICAg
ICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9y
Q29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2ws
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9u
Q2xpY2tlZC5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fZm9y
d2FyZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5SaWdodCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNr
ZWQuYmluZCh0aGlzKSwgdGhpcy5lbGVtZW50KTsKIAogICAgICAgICAgICAgdGhpcy5fYmFja0J1
dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgiYmFjayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmFjayAoJXMpIikuZm9ybWF0KHRoaXMu
X2JhY2tLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9CYWNrRm9yd2FyZEFy
cm93cy5zdmcjYmFjay1hcnJvdy1tYXNrIiwgOCwgMTMpOwogICAgICAgICAgICAgdGhpcy5fYmFj
a0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2JhY2tCdXR0b25DbGlja2VkLCB0
aGlzKTsKQEAgLTgxLDExICs4MCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGNs
YXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8g
UHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKQEAgLTEzMywxMiArMTI3LDYgQEAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdHM7CiAgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnVw
ZGF0ZUxheW91dCgpOwotICAgIH0KLQogICAgIHNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUsIGV4dHJhQXJndW1lbnRzKQogICAgIHsK
ICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhpcy5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSwgZXh0cmFBcmd1bWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
Vmlldy5qcwppbmRleCBhN2NiOGQzZmFkODEzNTc4YmQzMTg1N2VhMzYxMzk0NDgyMTJlMmM3Li4x
ODAyMmQzN2UzZDk4NWRjZTYzNDQyZjQ1YWJiZjc5MmQ1ZDYwZjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5q
cwpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKICAgICB7CkBAIC0zNCw4ICszNCw3
IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImNvbnRlbnQtdmlldyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29u
dGVudC12aWV3Iik7CiAKICAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKICAg
ICB9CkBAIC0xOTUsMTEgKzE5NCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNz
IENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4g
W107CiAgICAgfQogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IHBhcmVudENvbnRhaW5lcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udGFpbmVyOwpAQCAtMjQ1LDExICsyMzksNiBA
QCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdXBk
YXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMu
Ci0gICAgfQotCiAgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkg
c3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXggMzY4NTg4
ZDEwMmExNTZhYThmMGM1MjEyODEyNmY5ZTU2N2Y5ZGEzMC4uMzlhMjBhMjJhZTJkMTBkY2Q4YzUw
ZjgwYzIzMzRhNzJkNGIwMzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMK
QEAgLTIzLDE0ICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRW
aWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVmlldwogewotICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgY29uc3Ry
dWN0b3IoKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50
ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7
CiAKICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0gW107CiAgICAgICAgIHRoaXMuX2N1
cnJlbnRJbmRleCA9IC0xOwpAQCAtMzgsMTEgKzM3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNw
ZWMKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGN1cnJlbnRJbmRleCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4OwpAQCAtNjcsMTMgKzYxLDYg
QEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdD
b250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2tGb3J3
YXJkTGlzdFt0aGlzLl9jdXJyZW50SW5kZXhdOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgp
Ci0gICAgewotICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29u
dGVudFZpZXc7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcpCi0gICAgICAgICAgICBj
dXJyZW50Q29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgY29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nLCBl
eHRyYUFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVk
T2JqZWN0KTsKQEAgLTQyNiw2ICs0MTMsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAg
ICAgICAgdGhpcy5faGlkZUVudHJ5KGN1cnJlbnRFbnRyeSk7CiAgICAgfQogCisgICAgcmVuZGVy
KCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRD
b250ZW50VmlldzsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykKKyAgICAgICAgICAg
IGN1cnJlbnRDb250ZW50Vmlldy51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50
KGNvbnRlbnRWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwppbmRleCAxOWZjNDVmYjJhZDE5YWMyNDM0ZGU2YjQxYjEz
MWI1ZDM0ZGE3YWExLi4wNDYyNTFjMTJmNDRiNzk4ZTMzMWY5OGRlODdmNDc1YjQwMTMwNWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRh
R3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhR3JpZC5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK1dlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rvcihjb2x1bW5zRGF0YSwgZWRpdENhbGxi
YWNrLCBkZWxldGVDYWxsYmFjaywgcHJlZmVycmVkQ29sdW1uT3JkZXIpCiAgICAgewpAQCAtNDgs
NyArNDgsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5yZXNpemVycyA9IFtdOwogICAgICAg
ICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMu
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NOYW1lID0gImRhdGEtZ3JpZCI7CiAgICAgICAgIHRoaXMuZWxlbWVudC50YWJJ
bmRleCA9IDA7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3du
IiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC00MDAsNyArMzk5LDcgQEAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMu
Y29sdW1ucykKICAgICAgICAgICAgIGNvbHVtblsiZWxlbWVudCJdLnN0eWxlLndpZHRoID0gd2lk
dGhzW2lkZW50aWZpZXJdICsgIiUiOwogICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFs
aXplZCA9IGZhbHNlOwotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZp
ZXIsIGNvbHVtbkRhdGEsIGluc2VydGlvbkluZGV4KQpAQCAtNTUyLDcgKzU1MSw3IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGFmdGVy
IHRoZSBEYXRhR3JpZCBpcyBhdHRhY2hlZCB0byBpdHMKICAgICAvLyBwYXJlbnQgZWxlbWVudCwg
dGhlbiB0aGUgRGF0YUdyaWQncyBjb2x1bW5zIHdpbGwgbm90IGJlIHJlc2l6YWJsZS4KLSAgICB1
cGRhdGVMYXlvdXQoKQorICAgIHJlbmRlcigpCiAgICAgewogICAgICAgICAvLyBEbyBub3QgYXR0
ZW1wdCB0byB1c2Ugb2Zmc2V0ZXMgaWYgd2UncmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVu
dCB0cmVlIHlldC4KICAgICAgICAgaWYgKCF0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCAm
JiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKQEAgLTU4MSw2ICs1ODAsOCBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIAogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQu
RGlkTGF5b3V0KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjb2x1bW5X
aWR0aHNNYXAoKQpAQCAtNjAyLDcgKzYwMyw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNs
YXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhp
cy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW29yZGluYWxdLnN0eWxlLndp
ZHRoID0gd2lkdGg7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwor
ICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgX2lzQ29sdW1uVmlzaWJs
ZShjb2x1bW5JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5h
dmlnYXRpb25JdGVtLmpzCmluZGV4IDJkYmEyMGJhZGU0ZWM1ZmFlMzlhNDAyOGMyZjc3Y2FmNWVh
MDExODguLjhhYjIxZTQ3ZGRiN2JjMjMwNGEwYmY3OTc2YzFmZjA4ZmFmMjk3NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNh
bFBhdGhOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTYxLDcg
KzYxLDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSA9IGNs
YXNzIEhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXQKIAogICAgICAgICAvLyBVcGRhdGUgbGF5
b3V0IGZvciB0aGUgc28gb3RoZXIgaXRlbXMgY2FuIGFkanVzdCB0byB0aGUgZXh0cmEgc3BhY2Ug
KG9yIGxhY2sgdGhlcmVvZikgdG9vLgogICAgICAgICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0aW9u
QmFyKQotICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dFNv
b24oKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgp
OwogICAgIH0KIAogICAgIGdldCBsYXN0Q29tcG9uZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5l
Vmlldy5qcwppbmRleCBkNDZmMTNkMDYwODY4ZWY3M2Q5NzI0OGEyMWJjYzg4Mjc4ODU4NTI0Li5j
MzE1Njc0ZmM5Y2QzMTAwOTg5YjZmZjBkOTVkMTY4MjZkODEyYmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0
VGltZWxpbmVWaWV3LmpzCkBAIC04Niw3ICs4Niw3IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3VzZUxlYXZlVHJlZU91dGxpbmUuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIp
OwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVu
dCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAgICAg
dGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVj
b3JkQWRkZWQsIHRoaXMuX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCkBAIC0x
MzMsMTUgKzEzMyw2IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBjbGFzcyBM
YXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAg
ICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRh
dGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAg
ICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1l
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRj
aGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKQEAgLTE4NSw2ICsxNzYsMTIgQEAg
V2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldyA9IGNsYXNzIExheW91dFRpbWVsaW5lVmll
dyBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7
CiAgICAgfQogCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5k
aW5nUmVjb3JkcygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2
YXRlCiAKICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCmlu
ZGV4IGRlODU2OTVlNjFjZGNkNzQ3ODg3Y2I3OTk1ODVmOGFlMDhhY2E0ZjUuLjUwZDNhZTZhZjRk
OTA2MzBiNGQ1YjdkNWI5YTA2OTY5YmM1Y2M4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpAQCAt
MjMsMjYgKzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFz
cyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1
Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsIHJvbGUsIGxhYmVsKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NO
YW1lIHx8ICJuYXZpZ2F0aW9uLWJhciIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4
ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rv
ci5TdHlsZUNsYXNzTmFtZSB8fCAibmF2aWdhdGlvbi1iYXIiKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICBpZiAocm9sZSkKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CiAgICAgICAgIGlmIChsYWJlbCkKLSAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwp
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxh
YmVsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwg
dGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKLSAg
ICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5
RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9j
dXMuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKIAorICAgICAgICB0
aGlzLl9taW5pbXVtV2lkdGggPSBOYU47CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcyA9
IFtdOwogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKQEAgLTc1LDcgKzc1LDcgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMuc3BsaWNl
KGluZGV4LCAwLCBuYXZpZ2F0aW9uSXRlbSk7CiAKICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50
KQotICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7CisgICAgICAgICAg
ICBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50OwogCiAgICAgICAgIHZhciBuZXh0U2libGlu
ZyA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNp
YmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogbnVsbDsK
QEAgLTg0LDkgKzg0LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZp
Z2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHBhcmVudEVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKG5hdmlnYXRpb25JdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxl
bWVudCk7CiAKLSAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogCi0gICAgICAgIHRoaXMu
dXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtOwogICAgIH0KQEAgLTEwNSw3MiArMTA1LDEzIEBAIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnJlbW92ZShu
YXZpZ2F0aW9uSXRlbSk7CiAgICAgICAgIG5hdmlnYXRpb25JdGVtLmVsZW1lbnQucmVtb3ZlKCk7
CiAKLSAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogCi0gICAgICAgIHRoaXMudXBkYXRl
TGF5b3V0U29vbigpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRpb25JdGVtOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dFNvb24oKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSB0cnVlOwotCi0gICAgICAg
IGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxh
eW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9uZWVk
c0xheW91dCkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRp
b25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgdXBkYXRlTGF5b3V0KCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKSB7Ci0gICAg
ICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IGZhbHNlOwotCi0gICAg
ICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21VcGRhdGVMYXlvdXQgPT09ICJmdW5jdGlvbiIpIHsK
LSAgICAgICAgICAgIHRoaXMuY3VzdG9tVXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBj
bGFzcyB0byB0ZXN0IGlmIHRoZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
ci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgLy8gVGVsbCBlYWNoIG5hdmln
YXRpb24gaXRlbSB0byB1cGRhdGUgdG8gZnVsbCB3aWR0aCBpZiBuZWVkZWQuCi0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zW2ldLnVwZGF0ZUxheW91dCh0cnVlKTsKLQot
ICAgICAgICB2YXIgdG90YWxJdGVtV2lkdGggPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgLy8g
U2tpcCBmbGV4aWJsZSBzcGFjZSBpdGVtcyBzaW5jZSB0aGV5IGNhbiB0YWtlIHVwIG5vIHNwYWNl
IGF0IHRoZSBtaW5pbXVtIHdpZHRoLgotICAgICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25J
dGVtc1tpXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0
ZW0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHRvdGFsSXRlbVdp
ZHRoICs9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciBiYXJXaWR0aCA9IHRoaXMuX2VsZW1lbnQucmVhbE9m
ZnNldFdpZHRoOwotCi0gICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIGNsYXNzIGJhY2sgaWYg
dGhlIGl0ZW1zIGFyZSB3aWRlciB0aGFuIHRoZSBiYXIuCi0gICAgICAgIGlmICh0b3RhbEl0ZW1X
aWR0aCA+IGJhcldpZHRoKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgICAgICAvLyBHaXZlIGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBvcnR1bml0eSB0byBj
b2xsYXBzZSBmdXJ0aGVyLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVt
c1tpXS51cGRhdGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBnZXQgc2VsZWN0ZWROYXZpZ2F0aW9u
SXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bSB8fCBudWxsOwpAQCAtMjA2LDE4ICsxNDcsMTAgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zOwogICAgIH0KIAotICAgIGdldCBlbGVt
ZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAg
IGdldCBtaW5pbXVtV2lkdGgoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21pbmltdW1XaWR0
aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbikg
eworICAgICAgICBpZiAoaXNOYU4odGhpcy5fbWluaW11bVdpZHRoKSkKICAgICAgICAgICAgIHRo
aXMuX21pbmltdW1XaWR0aCA9IHRoaXMuX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpOwotICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbjsKLSAgICAg
ICAgfQotCiAgICAgICAgIHJldHVybiB0aGlzLl9taW5pbXVtV2lkdGg7CiAgICAgfQogCkBAIC0y
MjcsNiArMTYwLDQyIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdh
dGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAorICAgIHJlbmRlcigpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHRoaXMu
Y3VzdG9tVXBkYXRlTGF5b3V0ID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICB0aGlzLmN1
c3RvbVVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBp
ZiB0aGUgaXRlbXMgY2FuIGZpdCBhdCBmdWxsIHdpZHRoLgorICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CisKKyAgICAgICAgLy8gVGVsbCBlYWNoIG5hdmlnYXRpb24gaXRlbSB0byB1
cGRhdGUgdG8gZnVsbCB3aWR0aCBpZiBuZWVkZWQuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkl0ZW1zW2ldLnVwZGF0ZUxheW91dCh0cnVlKTsKKworICAgICAgICB2YXIgdG90
YWxJdGVtV2lkdGggPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgLy8gU2tpcCBmbGV4aWJsZSBz
cGFjZSBpdGVtcyBzaW5jZSB0aGV5IGNhbiB0YWtlIHVwIG5vIHNwYWNlIGF0IHRoZSBtaW5pbXVt
IHdpZHRoLgorICAgICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0pCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoICs9IHRoaXMuX25h
dmlnYXRpb25JdGVtc1tpXS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IGJhcldpZHRoID0gdGhpcy5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKwor
ICAgICAgICAvLyBBZGQgdGhlIGNvbGxhcHNlZCBjbGFzcyBiYWNrIGlmIHRoZSBpdGVtcyBhcmUg
d2lkZXIgdGhhbiB0aGUgYmFyLgorICAgICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0
aCkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKworICAgICAgICAvLyBHaXZl
IGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBvcnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVy
LgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS51cGRhdGVMYXlv
dXQoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfZmluZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRl
eCkKQEAgLTI1OSw3ICsyMjgsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNz
IE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIC8vIFJl
bW92ZSB0aGUgdGFiSW5kZXggc28gY2xpY2tpbmcgdGhlIG5hdmlnYXRpb24gYmFyIGRvZXMgbm90
IGdpdmUgaXQgZm9jdXMuCiAgICAgICAgIC8vIE9ubHkga2VlcCB0aGUgdGFiSW5kZXggaWYgYWxy
ZWFkeSBmb2N1c2VkIGZyb20ga2V5Ym9hcmQgbmF2aWdhdGlvbi4gVGhpcyBtYXRjaGVzIFhjb2Rl
LgogICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50
LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iik7CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0g
ZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBpZiAoIWl0
ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSkKQEAgLTI5NywxNSArMjY2
LDE1IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3R5bGVDbGFzc05hbWUpOwotICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVu
dC5uYXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkp
IHsKKyAgICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0
ZW0gfHwgIXRoaXMuZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpIHsKICAgICAgICAgICAg
IC8vIEZpbmQgdGhlIGVsZW1lbnQgdGhhdCBpcyBhdCB0aGUgWCBwb3NpdGlvbiBvZiB0aGUgbW91
c2UsIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAvLyB2ZXJ0
aWNhbGx5IGluIHRoZSBuYXZpZ2F0aW9uIGJhci4KLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgdGhpcy5fZWxlbWVudC50b3Rh
bE9mZnNldFRvcCArICh0aGlzLl9lbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpKTsKKyAgICAgICAg
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwg
dGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0VG9wICsgKHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQg
LyAyKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBpdGVtRWxlbWVudCA9IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNs
YXNzTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5u
YXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpCisg
ICAgICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRl
bSB8fCAhdGhpcy5lbGVtZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzM2LDcgKzMwNSw3IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyOwogCiAgICAg
ICAgIC8vIFJlc3RvcmUgdGhlIHRhYkluZGV4IHNvIHRoZSBuYXZpZ2F0aW9uIGJhciBjYW4gYmUg
aW4gdGhlIGtleWJvYXJkIHRhYiBsb29wLgotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4
ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICAvLyBE
aXNwYXRjaCB0aGUgc2VsZWN0ZWQgZXZlbnQgaGVyZSBzaW5jZSB0aGUgc2VsZWN0ZWROYXZpZ2F0
aW9uSXRlbSBzZXR0ZXIgc3VycHJlc3NlcyBpdAogICAgICAgICAvLyB3aGlsZSB0aGUgbW91c2Ug
aXMgZG93biB0byBwcmV2ZW50IHNlbmRpbmcgaXQgd2hpbGUgc2NydWJiaW5nIHRoZSBiYXIuCkBA
IC0zOTMsMTEgKzM2MiwxMSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5h
dmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfY2FsY3VsYXRl
TWluaW11bVdpZHRoKCkKICAgICB7Ci0gICAgICAgIHZhciB3YXNDb2xsYXBzZWQgPSB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGNvbnN0IHdhc0NvbGxhcHNlZCA9IHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29s
bGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIHN0
eWxlIGNsYXNzIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgdGhlIGl0ZW1zIHdoZW4gdGhleSBh
cmUgY29sbGFwc2VkLgogICAgICAgICBpZiAoIXdhc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7
CiAKICAgICAgICAgdmFyIHRvdGFsSXRlbVdpZHRoID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpIHsKQEAgLTQwOSw3ICsz
NzgsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xs
YXBzZWQgc3R5bGUgY2xhc3MgaWYgd2Ugd2VyZSBub3QgY29sbGFwc2VkIGJlZm9yZS4KICAgICAg
ICAgaWYgKCF3YXNDb2xsYXBzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHJl
dHVybiB0b3RhbEl0ZW1XaWR0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCmluZGV4IGNi
NzU1NDNjMWZhNTdkMDNiMDIwNTEyNTI4MDIwMmU1YjNiZGM1ODguLjFkNzYxMTU0ZTNiNzBkNThi
MjI5YTYzMWZjYzhiODNiZDAzYjAwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCkBAIC04MCw3
ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIE5hdmlnYXRpb25J
dGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoImhpZGRlbiIsIGZsYWcpOwogCiAgICAgICAgIGlmICh0aGlzLl9wYXJl
bnROYXZpZ2F0aW9uQmFyKQotICAgICAgICAgICAgdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhci51
cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFy
Lm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtU
aW1lbGluZVZpZXcuanMKaW5kZXggMmJiNDAzNmJkMjFlYWQ1ZTM5ZjBjYjMxMTJmOGY2NTc4NWNl
YjM5Yi4uYjExYTJhMzk5ZjI3NGUzYjNlZGE3YWMwZjljN2ExMWJkNTI1NjNiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVs
aW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC05Myw3ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdl
Ykluc3BlY3RvCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJuZXR3b3JrIik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMu
X2RhdGFHcmlkKTsKIAogICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVj
b3JkQWRkZWQsIHRoaXMpOwogCkBAIC0xMjksMTUgKzEyOSw2IEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYklu
c3BlY3RvCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmNsb3NlZCgpOwogICAgIH0KIAotICAgIHVw
ZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAg
ICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9j
ZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAgICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5z
dEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50
KTsKQEAgLTE4Nyw2ICsxNzgsMTIgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcg
PSBjbGFzcyBOZXR3b3JrVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAg
c3VwZXIudHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOwog
ICAgIH0KIAorICAgIHJlbmRlcigpCisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGlu
Z1JlY29yZHMoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0
ZQogCiAgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxp
bmVWaWV3LmpzCmluZGV4IDJmYmQ1MTkwOGI1NTY0MzgxYjY1ZjJjMjUxNTkzOGI5NGM4YzMxOWUu
LjJkYjNmZDgyY2Y2NDY3ZjIzNmM5MzVhNWFiZWNkMDMzZWVmNDk3NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092
ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCkBAIC00MSwxMyArNDEsMTQgQEAgV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1lbGluZVZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWMKIAogICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyOwogICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFsbG93c0NsaXBw
ZWRMYWJlbHMgPSB0cnVlOworICAgICAgICAvLyBGSVhNRTogb25jZSBUaW1lbGluZVJ1bGVyIGlu
aGVyaXRzIGZyb20gVmlldyB0aGlzIGNhbiBiZSBjaGFuZ2VkIHRvOiBgdGhpcy5hZGRTdWJ2aWV3
KHRoaXMuX3RpbWVsaW5lUnVsZXIpYC4KICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY3VycmVudFRp
bWVNYXJrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1hcmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKICAgICAgICAgdGhpcy5fdGltZWxp
bmVSdWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwogCiAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvdmVydmlldyIpOwotICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRk
U3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAgICAgdGhpcy5fbmV0d29ya1RpbWVsaW5l
ID0gcmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTmV0d29yayk7CiAgICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29y
a1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAtODcsMzUgKzg4LDYgQEAgV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1lbGluZVZpZXcgZXh0
ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7
Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHZhciBvbGRaZXJvVGlt
ZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWU7Ci0gICAgICAgIHZhciBvbGRTdGFydFRp
bWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGltZTsKLSAgICAgICAgdmFyIG9sZEVuZFRp
bWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWU7Ci0gICAgICAgIHZhciBvbGRDdXJyZW50
VGltZSA9IHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWU7Ci0KLSAgICAgICAgdGhpcy5fdGlt
ZWxpbmVSdWxlci56ZXJvVGltZSA9IHRoaXMuemVyb1RpbWU7Ci0gICAgICAgIHRoaXMuX3RpbWVs
aW5lUnVsZXIuc3RhcnRUaW1lID0gdGhpcy5zdGFydFRpbWU7Ci0gICAgICAgIHRoaXMuX3RpbWVs
aW5lUnVsZXIuZW5kVGltZSA9IHRoaXMuZW5kVGltZTsKLSAgICAgICAgdGhpcy5fY3VycmVudFRp
bWVNYXJrZXIudGltZSA9IHRoaXMuY3VycmVudFRpbWU7Ci0KLSAgICAgICAgLy8gVGhlIFRpbWVs
aW5lRGF0YUdyaWROb2RlIGdyYXBocyBhcmUgcG9zaXRpb25lZCB3aXRoIHBlcmNlbnRhZ2VzLCBz
byB0aGV5IGF1dG8gcmVzaXplIHdpdGggdGhlIHZpZXcuCi0gICAgICAgIC8vIFdlIG9ubHkgbmVl
ZCB0byByZWZyZXNoIHRoZSBncmFwaHMgd2hlbiB0aGUgYW55IG9mIHRoZSB0aW1lcyBjaGFuZ2Uu
Ci0gICAgICAgIGlmICh0aGlzLnplcm9UaW1lICE9PSBvbGRaZXJvVGltZSB8fCB0aGlzLnN0YXJ0
VGltZSAhPT0gb2xkU3RhcnRUaW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gb2xkRW5kVGltZSB8fCB0
aGlzLmN1cnJlbnRUaW1lICE9PSBvbGRDdXJyZW50VGltZSkgewotICAgICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAgd2hp
bGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5yZWZyZXNo
R3JhcGgoKTsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGUudHJh
dmVyc2VOZXh0Tm9kZSh0cnVlLCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAg
ICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMoKTsKLSAgICB9Ci0KICAg
ICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFH
cmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKQEAgLTE4Niw2ICsxNTgsMzYg
QEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1l
bGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dPcmln
aW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKHRyZWVFbGVtZW50LnNvdXJjZUNvZGVU
aW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgIH0KIAorICAgIHJlbmRlcigpCisgICAg
eworICAgICAgICB2YXIgb2xkWmVyb1RpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnplcm9UaW1l
OworICAgICAgICB2YXIgb2xkU3RhcnRUaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci5zdGFydFRp
bWU7CisgICAgICAgIHZhciBvbGRFbmRUaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci5lbmRUaW1l
OworICAgICAgICB2YXIgb2xkQ3VycmVudFRpbWUgPSB0aGlzLl9jdXJyZW50VGltZU1hcmtlci50
aW1lOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWUgPSB0aGlzLnplcm9U
aW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGltZSA9IHRoaXMuc3RhcnRU
aW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWUgPSB0aGlzLmVuZFRpbWU7
CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWUgPSB0aGlzLmN1cnJlbnRUaW1l
OworCisgICAgICAgIC8vIFRoZSBUaW1lbGluZURhdGFHcmlkTm9kZSBncmFwaHMgYXJlIHBvc2l0
aW9uZWQgd2l0aCBwZXJjZW50YWdlcywgc28gdGhleSBhdXRvIHJlc2l6ZSB3aXRoIHRoZSB2aWV3
LgorICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gcmVmcmVzaCB0aGUgZ3JhcGhzIHdoZW4gdGhl
IGFueSBvZiB0aGUgdGltZXMgY2hhbmdlLgorICAgICAgICBpZiAodGhpcy56ZXJvVGltZSAhPT0g
b2xkWmVyb1RpbWUgfHwgdGhpcy5zdGFydFRpbWUgIT09IG9sZFN0YXJ0VGltZSB8fCB0aGlzLmVu
ZFRpbWUgIT09IG9sZEVuZFRpbWUgfHwgdGhpcy5jdXJyZW50VGltZSAhPT0gb2xkQ3VycmVudFRp
bWUpIHsKKyAgICAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5jaGls
ZHJlblswXTsKKyAgICAgICAgICAgIHdoaWxlIChkYXRhR3JpZE5vZGUpIHsKKyAgICAgICAgICAg
ICAgICBkYXRhR3JpZE5vZGUucmVmcmVzaEdyYXBoKCk7CisgICAgICAgICAgICAgICAgZGF0YUdy
aWROb2RlID0gZGF0YUdyaWROb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgbnVsbCwgdHJ1ZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogb25jZSBUaW1l
bGluZVJ1bGVyIGluaGVyaXRzIGZyb20gVmlldyB0aGlzIGNhbiBiZSByZW1vdmVkLgorICAgICAg
ICB0aGlzLl90aW1lbGluZVJ1bGVyLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgIHRoaXMuX3By
b2Nlc3NQZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeURl
dGFpbHMoYSwgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCBjNGFkNTIwMjc4N2YxM2NiMjQ1MTA4
YzhlNmI1MWMxZTM4NDZmY2MzLi5jMjUzODkyY2VkYTJhZTgxNjkxZDQ1MGIwNGRhNWMzYjlhYzcz
ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xl
ID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHN1
cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3RvZ2dsZU9y
Rm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUsIHRoaXMuX3Rv
Z2dsZU9yRm9jdXMuYmluZCh0aGlzKSk7CiAKQEAgLTM4LDEyICszOCwxMSBAQCBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICB0aGlzLl9vdGhlckV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
cyA9IFtdOwogICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJUb0V4ZWN1dGlvbkNvbnRleHRQ
YXRoQ29tcG9uZW50TWFwID0ge307CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQg
fHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOwogCiAgICAgICAgIHRoaXMucHJvbXB0ID0gbmV3
IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KG51bGwsICJ0ZXh0L2phdmFzY3JpcHQiKTsKICAg
ICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0ZXh0LXByb21wdCIpOwot
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5wcm9tcHQpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBDb2RlTWlycm9yIDQgaGFzIGEgZGVmYXVsdCAiRXNjIiBrZXkgaGFuZGxlciB0aGF0IGFsd2F5
cyBwcmV2ZW50cyBkZWZhdWx0LgogICAgICAgICAvLyBPdXIga2V5Ym9hcmQgc2hvcnRjdXQgYWJv
dmUgd2lsbCByZXNwZWN0IHRoZSBkZWZhdWx0IHByZXZlbnRlZCBhbmQgaWdub3JlIHRoZSBldmVu
dApAQCAtNTUsNyArNTQsNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVp
Y2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnByb21w
dC5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRT
dWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogCiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNv
bnRleHRTZWxlY3Rvckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZp
Z2F0aW9uSXRlbTsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9ySXRlbS5z
aG93U2VsZWN0b3JBcnJvd3MgPSB0cnVlOwpAQCAtNzQsMTEgKzczLDYgQEAgV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IG5hdmlnYXRpb25CYXIo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXI7CkBAIC04OSwxMyAr
ODMsNiBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRF
eGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudC5fZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7
CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIC8vIEEgaGFyZCBt
YXhpbXVtIHNpemUgb2YgMzMlIG9mIHRoZSB3aW5kb3cuCi0gICAgICAgIHZhciBtYXhpbXVtQWxs
b3dlZEhlaWdodCA9IE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0ICogMC4zMyk7Ci0gICAg
ICAgIHRoaXMucHJvbXB0LmVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbWF4aW11bUFsbG93ZWRI
ZWlnaHQgKyAicHgiOwotICAgIH0KLQogICAgIGNvbnNvbGVMb2dWaXNpYmlsaXR5Q2hhbmdlZCh2
aXNpYmxlKQogICAgIHsKICAgICAgICAgaWYgKHZpc2libGUgPT09IHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TaG93aW5nTG9nQ2xhc3NO
YW1lKSkKQEAgLTEwNiw2ICs5MywxNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xh
c3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50
LkRpZFJlc2l6ZSk7CiAgICAgfQogCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICByZW5kZXIoKQor
ICAgIHsKKyAgICAgICAgLy8gQSBoYXJkIG1heGltdW0gc2l6ZSBvZiAzMyUgb2YgdGhlIHdpbmRv
dy4KKyAgICAgICAgbGV0IG1heGltdW1BbGxvd2VkSGVpZ2h0ID0gTWF0aC5yb3VuZCh3aW5kb3cu
aW5uZXJIZWlnaHQgKiAwLjMzKTsKKyAgICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5zdHlsZS5t
YXhIZWlnaHQgPSBtYXhpbXVtQWxsb3dlZEhlaWdodCArICJweCI7CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2V4ZWN1dGlvbkNvbnRleHRQ
YXRoQ29tcG9uZW50c1RvRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGlt
ZWxpbmVWaWV3LmpzCmluZGV4IGM5Zjk3ZWIwYmI3NmZjMWFhNDk0NjMzYTZlNTM4NmQ3NmQ5N2Fj
N2UuLmMxMGE5MDdiNzYzZmYzYzRjNTE4ZDFmNjkzYmY4OWE3YzkxZDI2NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1l
VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LmpzCkBAIC03OSw3ICs3OSw3IEBAIFdl
Ykluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyA9IGNsYXNzIFJlbmRlcmluZ0Zy
YW1lVGltZWxpbmVWaWV3IGV4dGVuCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyZW5kZXJpbmctZnJhbWUiKTsKLSAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICB0
aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAgICAgICAgIHRpbWVsaW5lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlz
Ll9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCkBAIC0xMzEsMTUg
KzEzMSw2IEBAIFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyA9IGNsYXNz
IFJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3IGV4dGVuCiAgICAgICAgIHRoaXMuX2RhdGFHcmlk
LmNsb3NlZCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBz
dXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlv
dXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAgICB9Ci0K
ICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKQEAgLTI0NSw2ICsyMzYs
MTIgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3ID0gY2xhc3MgUmVu
ZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0ZW4KICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg
fQogCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVj
b3JkcygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5q
cwppbmRleCA0OGU1MDUyNjdhYjE0MDgwMGRhM2FjYzllMzlmMjQwNmRmM2ZhZGNiLi4xYTFmMDgz
NDYzZWMwNzA5NmM0OWQ1NWMxMDg3NzBkOTcxOWI2YWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxp
bmVWaWV3LmpzCkBAIC02OCw3ICs2OCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZp
ZXcgPSBjbGFzcyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0
T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
Y3JpcHQiKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAg
ICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsK
IApAQCAtMTA0LDI4ICsxMDQsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0g
Y2xhc3MgU2NyaXB0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAg
IHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lICE9PSB0aGlz
Ll9vbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSB0aGlzLl9vbGRFbmRUaW1lKSB7Ci0g
ICAgICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5bMF07
Ci0gICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7Ci0gICAgICAgICAgICAgICAgZGF0
YUdyaWROb2RlLnVwZGF0ZVJhbmdlVGltZXModGhpcy5zdGFydFRpbWUsIHRoaXMuZW5kVGltZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5yZXZlYWxlZCkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUdyaWROb2RlLnJlZnJlc2hJZk5lZWRlZCgpOwotICAgICAgICAgICAgICAg
IGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxs
LCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fb2xkU3RhcnRUaW1l
ID0gdGhpcy5zdGFydFRpbWU7Ci0gICAgICAgICAgICB0aGlzLl9vbGRFbmRUaW1lID0gdGhpcy5l
bmRUaW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CiAg
ICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CkBA
IC0yMTcsNiArMTk1LDI1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcgPSBjbGFz
cyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICByZW5kZXIoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lICE9
PSB0aGlzLl9vbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSB0aGlzLl9vbGRFbmRUaW1l
KSB7CisgICAgICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRy
ZW5bMF07CisgICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7CisgICAgICAgICAgICAg
ICAgZGF0YUdyaWROb2RlLnVwZGF0ZVJhbmdlVGltZXModGhpcy5zdGFydFRpbWUsIHRoaXMuZW5k
VGltZSk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5yZXZlYWxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUdyaWROb2RlLnJlZnJlc2hJZk5lZWRlZCgpOworICAgICAgICAg
ICAgICAgIGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKGZhbHNl
LCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fb2xkU3Rh
cnRUaW1lID0gdGhpcy5zdGFydFRpbWU7CisgICAgICAgICAgICB0aGlzLl9vbGRFbmRUaW1lID0g
dGhpcy5lbmRUaW1lOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdS
ZWNvcmRzKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIFByaXZhdGUK
IAogICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDZkN2Y0MzNjZjQ4MmVm
ZjRhOTMxNTY1OGMxMTllMmYwYjkyNDAyMzUuLmI0NzFkZmRkZTAxY2U1MTlkZTg2YjNkYWQ3OWM1
NmY1MTg0NTFkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTIzLDIzICsyMywyMiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50LCB0YWJCYXJJdGVtcykKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAg
IHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInRhYi1iYXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
dGFiLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRh
Ymxpc3QiKTsKIAogICAgICAgICB2YXIgdG9wQm9yZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0b3BCb3JkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRvcC1ib3JkZXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0b3BCb3Jk
ZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRvcEJvcmRlckVs
ZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0
aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2
ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24u
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKIApAQCAtMTExLDcg
KzExMCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLl9uZXdUYWJJdGVt
ID8gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSA6IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0
aDsKICAgICAgICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgbGFzdEluZGV4
KSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmlt
YXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygi
YW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVT
dHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBkb05vdEFuaW1hdGUgPSB0cnVlOwogICAg
ICAgICB9CkBAIC0xMjUsMzQgKzEyNCwzNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxp
bmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxp
bmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25l
d1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0
aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5n
RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5l
bGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRh
YigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIi
LCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQu
c3R5bGUud2lkdGggPSBudWxsOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRp
bmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5n
LXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGlu
ZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10
YWIiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xp
c3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIi
KTsKIAogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImJl
aW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0
aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFkb05vdEFuaW1hdGUpIHsKQEAgLTE2OCw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJC
YXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9KTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAg
IHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5k
UG9zaXRpb25zKTsKQEAgLTE3Nyw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRkZWQsIHt0YWJCYXJJdGVtfSk7
CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRh
YkJhckl0ZW0gPSBuZXh0VGFiQmFySXRlbTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYg
KHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAg
ICAgICAgICAgZG9Ob3RBbmltYXRlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjE5LDcgKzIxOCw3
IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAg
ICB2YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1h
bFRhYigpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10
YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CiAK
ICAgICAgICAgY29uc3Qgc2hvdWxkT3BlbkRlZmF1bHRUYWIgPSAhdGFiQmFySXRlbS5pc0RlZmF1
bHRUYWIgJiYgIXRoaXMuaGFzTm9ybWFsVGFiKCk7CiAgICAgICAgIGlmIChzaG91bGRPcGVuRGVm
YXVsdFRhYikKQEAgLTIzMCw3ICsyMjksNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMu
X3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBv
c2l0aW9ucyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0
ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJC
YXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTI0NCw4ICsy
NDMsOCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOwogCiAg
ICAgICAgICAgICB2YXIgbGVmdCA9IDA7CiAgICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50VGFi
QmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewpAQCAtMjY2LDcgKzI2NSw3IEBAIFdlYklu
c3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVk
VGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50
LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5z
dHlsZS53aWR0aCkgKyAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVy
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFu
c2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
ZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKQEAgLTI3NSwxNiArMjc0LDE2IEBAIFdlYkluc3BlY3Rv
ci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbSAhPT0gbGFzdE5vcm1hbFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CiAK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFi
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5n
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10
YWIiKTsKIAogICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRvTm90QW5pbWF0ZSkgewotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogCiAgICAgICAg
ICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAKQEAg
LTI5NCw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7
CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRh
YkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMzUwLDYx
ICszNDksNiBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQmFySXRlbSA9IHRoaXMu
X3RhYkJhckl0ZW1zW25ld0luZGV4XTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29uKCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gdHJ1ZTsKLQotICAg
ICAgICBmdW5jdGlvbiB1cGRhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91cGRh
dGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBpZiAodGhpcy5f
bmVlZHNMYXlvdXQpCi0gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUodXBkYXRlLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIHVwZGF0ZUxheW91
dCgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikgewot
ICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZp
bmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dGhpcy5fbmVlZHNMYXlvdXQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImhpZGUtdGl0bGVzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiY29sbGFwc2VkIik7Ci0KLSAgICAgICAgdmFyIGZpcnN0Tm9ybWFsVGFiSXRl
bSA9IG51bGw7Ci0gICAgICAgIGZvciAodmFyIHRhYkl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMp
IHsKLSAgICAgICAgICAgIGlmICh0YWJJdGVtLnBpbm5lZCkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGZpcnN0Tm9ybWFsVGFiSXRlbSA9IHRhYkl0ZW07Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZmlyc3ROb3JtYWxUYWJJdGVt
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChmaXJzdE5vcm1hbFRhYkl0ZW0u
ZWxlbWVudC5vZmZzZXRXaWR0aCA+PSAxMjApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKLQotICAgICAgICBp
ZiAoZmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjApCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRl
LXRpdGxlcyIpOwotICAgIH0KLQogICAgIGdldCBzZWxlY3RlZFRhYkJhckl0ZW0oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbTsKQEAgLTQzNSwxNCArMzc5
LDQzIEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtczsKICAgICB9CiAK
LSAgICBnZXQgZWxlbWVudCgpCisgICAgaGFzTm9ybWFsVGFiKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuc29t
ZSgodGFiKSA9PiAhdGFiLnBpbm5lZCk7CiAgICAgfQogCi0gICAgaGFzTm9ybWFsVGFiKCkKKyAg
ICAvLyBQcm90ZWN0ZWQKKworICAgIHJlbmRlcigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fdGFiQmFySXRlbXMuc29tZSgodGFiKSA9PiAhdGFiLnBpbm5lZCk7CisgICAgICAgIGlmICh0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImhpZGUtdGl0bGVzIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJjb2xsYXBzZWQiKTsKKworICAgICAgICB2YXIgZmlyc3ROb3JtYWxUYWJJdGVtID0gbnVsbDsK
KyAgICAgICAgZm9yICh2YXIgdGFiSXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAg
ICAgICAgaWYgKHRhYkl0ZW0ucGlubmVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgZmlyc3ROb3JtYWxUYWJJdGVtID0gdGFiSXRlbTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaXJzdE5vcm1hbFRhYkl0ZW0pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVt
ZW50Lm9mZnNldFdpZHRoID49IDEyMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CisKKyAgICAgICAg
aWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDYwKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJoaWRlLXRpdGxlcyIpOworCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IFByaXZhdGUKQEAgLTQ4Myw3ICs0NTYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgdmFyIHRh
YkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CiAKLSAgICAgICAgdmFyIGJhclJl
Y3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBjb25z
dCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAg
ICAgIGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKICAgICAgICAg
ICAgIHZhciBib3VuZGluZ1JlY3QgPSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CkBAIC01MjIsNyArNDk1LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmICghYmVm
b3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNB
bmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsK
IAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5
b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGlj
LWxheW91dCIpOwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3Np
dGlvbnMoKTsKIAogICAgICAgICAgICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0
aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKQEAgLTUzMiwyNiArNTA1
LDI2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0
YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRo
aXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3Np
dGlvbnMpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5k
IiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBm
dW5jdGlvbiByZW1vdmVTdHlsZXMoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFi
cyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0
aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJU
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlTGF5b3V0KCk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRy
YW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9CkBAIC02MzAsNyArNjAzLDcgQEAgV2ViSW5zcGVjdG9y
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JT
ZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFz
c05hbWUpOwogICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50IHx8IGNsaWNrZWRNaWRkbGVC
dXR0b24pIHsKICAgICAgICAgICAgIC8vIERpc2FsbG93IGNsb3NpbmcgdGhlIGRlZmF1bHQgdGFi
IGlmIGl0IGlzIHRoZSBvbmx5IHRhYi4KLSAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtLmlzRGVm
YXVsdFRhYiAmJiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIp
KQorICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBmYWxz
ZSwgdHJ1ZSk7CkBAIC02NTEsMTAgKzYyNCwxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAg
ICBpZiAoIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0Iikp
IHsKKyAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMt
bGF5b3V0IikpIHsKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpKTsKLSAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVuZGVmaW5lZCkK
QEAgLTY5NSw3ICs2NjgsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlz
Ll90YWJCYXJJdGVtc1tuZXdJbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVt
ZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0
ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0aGlzLl9l
bGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4
dFNpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKIAogICAg
ICAgICAvLyBGSVhNRTogQW5pbWF0ZSB0aGUgdGFicyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZv
ciB0aGUgc2VsZWN0ZWQgdGFiLiBUaGlzIHdhcyBjYXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRy
aWVkLgogCkBAIC03MTQsMTAgKzY4NywxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX21v
dXNlSXNEb3duKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmctdGFiIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZy10YWIiKTsKIAogICAgICAgICBpZiAoIXRoaXMuX3Rh
YkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0
aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgdmFyIGxlZnQgPSAwOwpAQCAtNzQ1LDE0ICs3MTgsMTQgQEAgV2ViSW5z
cGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IAogICAgIF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X21vdXNlSXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8
fCAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgIGlm
ICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNl
RW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQi
KSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdo
ZW4gdGhlIG1vdXNlIGlzIGluc2lkZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVk
LCByZW1vdmVkIG9yIGdlbmVyYWxseSBjaGFuZ2UgaW5zaWRlLgogICAgICAgICAvLyBDaGVjayBp
ZiB0aGUgbW91c2UgcmVhbGx5IGRpZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUg
Ym91bmRzLgogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVj
dCBiZWhhdmlvcj8KLSAgICAgICAgdmFyIGJhclJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOwotICAgICAgICB2YXIgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdU
YWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
IDogbnVsbDsKKyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKKyAgICAgICAgY29uc3QgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdU
YWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
IDogbnVsbDsKICAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQu
cGFnZVkgPCBiYXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBl
dmVudC5wYWdlWCA8IChuZXdUYWJJdGVtUmVjdCA/IG5ld1RhYkl0ZW1SZWN0LnJpZ2h0IDogYmFy
UmVjdC5yaWdodCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTc2OCw3ICs3NDEsNyBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogCiAgICAgX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIoZXZlbnQpCiAgICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgaWYgKCF0aGlzLl90
YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29u
dGFpbnMoImFuaW1hdGluZyIpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwppbmRleCAyOGJh
OTM5NTVhMzk4MTIzMWU2Njc2ZDZhMzgwNjhlMjFjZjJiZGRlLi42ZTA2MDJiODhlMzRhMzIzZDAy
NjkxODJlMTc1NWNhNGY2YmM4ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKQEAgLTIzLDE5ICsyMywxNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKK1dlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFyLCBuYXZp
Z2F0aW9uU2lkZWJhciwgZGV0YWlsc1NpZGViYXIpCiAgICAgewotICAgICAgICBzdXBlcigpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXIsICJNdXN0IHByb3ZpZGUgYSBUYWJCYXIuIik7
CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJy
b3dzZXIiKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fdGFiQmFy
ID0gdGFiQmFyIHx8IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFyOwotICAgICAgICBpZiAoIXRhYkJh
cikKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGFiQmFyLmVs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJyb3dzZXIi
KTsKIAorICAgICAgICB0aGlzLl90YWJCYXIgPSB0YWJCYXI7CiAgICAgICAgIHRoaXMuX25hdmln
YXRpb25TaWRlYmFyID0gbmF2aWdhdGlvblNpZGViYXIgfHwgbnVsbDsKICAgICAgICAgdGhpcy5f
ZGV0YWlsc1NpZGViYXIgPSBkZXRhaWxzU2lkZWJhciB8fCBudWxsOwogCkBAIC00OCw3ICs0Niw3
IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5l
bGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyKTsKIAogICAgICAgICB2YXIgc2hvd05leHRUYWIgPSB0aGlzLl9zaG93TmV4dFRhYi5iaW5k
KHRoaXMpOwogICAgICAgICB2YXIgc2hvd1ByZXZpb3VzVGFiID0gdGhpcy5fc2hvd1ByZXZpb3Vz
VGFiLmJpbmQodGhpcyk7CkBAIC03MywxMSArNzEsNiBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3Nl
ciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAv
LyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCB0YWJCYXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYkJhcjsKQEAgLTk4LDEyICs5MSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93
c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsK
ICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFiQmFy
LnVwZGF0ZUxheW91dCgpOwotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci51cGRh
dGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBiZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhjb25z
dHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFi
Q29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNl
bnRUYWJDb250ZW50Vmlld3NbMF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKaW5kZXggNTA1ZTAxOTcz
NjE4MTM4OWEzODczMzEyYjlhNmE3M2E1NDk2YjU1Ny4uMDFmZWMyNTU3Y2FhZmQwZDlmMTk0Nzc3
MTAyNjllZWNkMGVmYzdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCkBAIC0yMywyMiArMjMsMjEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVs
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7
CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRpbWVsaW5lLXJ1bGVyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0
aW1lbGluZS1ydWxlciIpOwogCiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJoZWFkZXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9oZWFkZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2hlYWRlckVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50
LmNsYXNzTGlzdC5hZGQoIm1hcmtlcnMiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9tYXJrZXJzRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9tYXJrZXJzRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5femVyb1RpbWUgPSAw
OwogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSAwOwpAQCAtNTksMTEgKzU4LDYgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgYWxsb3dz
Q2xpcHBlZExhYmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dzQ2xpcHBl
ZExhYmVsczsKQEAgLTEwNSw3ICs5OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0g
Y2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAg
ICBpZiAoeCkgewogICAgICAgICAgICAgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lciA9IHRo
aXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3Rl
bmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3RlbmVyKTsKIAogICAgICAgICAgICAgdGhpcy5f
bGVmdFNoYWRlZEFyZWFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgICAgICAgICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2hh
ZGVkLWFyZWEiKTsKQEAgLTEzMCw3ICsxMjQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAg
ICAgICAgICAgIHRoaXMuX25lZWRzU2VsZWN0aW9uTGF5b3V0KCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkV2ZW50
TGlzdGVuZXIpOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVu
ZXI7CiAKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxlbWVudC5yZW1vdmUoKTsK
QEAgLTQ1MCw3ICs0NDQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRp
bWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVu
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5j
bGllbnRXaWR0aDsKICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC00OTQsNyArNDg4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRl
SWRlbnRpZmllcjsKIAotICAgICAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1l
bnQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5lbGVt
ZW50LmNsaWVudFdpZHRoOwogICAgICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTIwLDcgKzUxNCw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxlZFNlbGVj
dGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXI7CiAKLSAgICAgICAgICAgIHZhciB2aXNpYmxlV2lk
dGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHZpc2libGVX
aWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAgICAgICAgIGlmICh2aXNpYmxl
V2lkdGggPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTUzMiw3ICs1MjYsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfcmVjYWxjdWxhdGUoKQogICAgIHsKLSAgICAg
ICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAg
IHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgIGlm
ICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC01ODUsNyAr
NTc5LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Nj
aGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXI7CiAgICAgICAgIH0KIAotICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIuQWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUsIHRoaXMuX2FsbG93
c1RpbWVSYW5nZVNlbGVjdGlvbik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5nZVNlbGVjdGlvblN0
eWxlQ2xhc3NOYW1lLCB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24pOwogCiAgICAgICAg
IGlmICghdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjE3LDExICs2MTEsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFz
cyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
Ll9yaWdodFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQudGl0bGUgPSBmb3JtYXR0ZWRFbmRUaW1lVGV4
dDsKIAogICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50LnBhcmVudE5vZGUp
IHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0aW9u
RHJhZ0VsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2hhZGVkQXJlYUVsZW1lbnQpOwot
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlbGVjdGlv
bkhhbmRsZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWxlY3Rpb25IYW5kbGVFbGVtZW50KTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNoYWRlZEFyZWFF
bGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdo
dFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGlz
cGF0Y2hUaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKTsKQEAgLTY2NSw3ICs2NTksNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhp
cy5fc2VsZWN0aW9uSXNNb3ZlID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9zZWxlY3Rpb25EcmFn
RWxlbWVudDsKLSAgICAgICAgdGhpcy5fcnVsZXJCb3VuZGluZ0NsaWVudFJlY3QgPSB0aGlzLl9l
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICB0aGlzLl9ydWxlckJvdW5k
aW5nQ2xpZW50UmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIAog
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uSXNNb3ZlKSB7CiAgICAgICAgICAgICB0aGlzLl9s
YXN0TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYOwpAQCAtNzIwLDEwICs3MTQsMTAgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0gTWF0
aC5taW4odGhpcy5zdGFydFRpbWUgKyAoTWF0aC5tYXgoY3VycmVudE1vdXNlUG9zaXRpb24sIHRo
aXMuX21vdXNlRG93blBvc2l0aW9uKSAqIHRoaXMuc2Vjb25kc1BlclBpeGVsKSwgdGhpcy5lbmRU
aW1lKTsKIAogICAgICAgICAgICAgLy8gVHVybiBvbiBjb2wtcmVzaXplIGN1cnNvciBzdHlsZSBv
bmNlIGRyYWdnaW5nIGJlZ2lucywgcmF0aGVyIHRoYW4gb24gdGhlIGluaXRpYWwgbW91c2UgZG93
bi4KLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
LlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9CiAKLSAgICAgICAg
dGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZHVy
YXRpb24pOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5lbGVtZW50LmNsaWVu
dFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAgLTczNCw3ICs3MjgsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9
PT0gMCk7CiAKICAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3Rpb25Jc01vdmUpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6
aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5zZWxl
Y3Rpb25FbmRUaW1lIC0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPCB0aGlzLm1pbmltdW1TZWxl
Y3Rpb25EdXJhdGlvbikgewogICAgICAgICAgICAgICAgIC8vIFRoZSBzZWN0aW9uIGlzIHNtYWxs
ZXIgdGhhbiBhbGxvd2VkLCBncm93IGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGRyYWcgdG8gbWVl
dCB0aGUgbWludW11bS4KQEAgLTc3NCw3ICs3NjgsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZHJhZ0hhbmRsZUlzU3RhcnRUaW1l
ID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudDsKLSAg
ICAgICAgdGhpcy5fbW91c2VEb3duUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuX2VsZW1l
bnQudG90YWxPZmZzZXRMZWZ0OworICAgICAgICB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbiA9IGV2
ZW50LnBhZ2VYIC0gdGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKIAogICAgICAgICB0aGlz
Ll9zZWxlY3Rpb25IYW5kbGVNb3VzZU1vdmVFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlU2Vs
ZWN0aW9uSGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMuX3NlbGVjdGlv
bkhhbmRsZU1vdXNlVXBFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlU2VsZWN0aW9uSGFuZGxl
TW91c2VVcC5iaW5kKHRoaXMpOwpAQCAtNzgzLDcgKzc3Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5f
c2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVw
RXZlbnRMaXN0ZW5lcik7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAg
LTc5Myw3ICs3ODcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVs
aW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCi0gICAgICAgIHZhciBjdXJyZW50TW91
c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fZWxlbWVudC50b3RhbE9mZnNldExlZnQ7
CisgICAgICAgIHZhciBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5l
bGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKICAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gdGhpcy5z
dGFydFRpbWUgKyAoY3VycmVudE1vdXNlUG9zaXRpb24gKiB0aGlzLnNlY29uZHNQZXJQaXhlbCk7
CiAgICAgICAgIGlmICh0aGlzLnNuYXBJbnRlcnZhbCkKICAgICAgICAgICAgIGN1cnJlbnRUaW1l
ID0gdGhpcy5fc25hcFZhbHVlKGN1cnJlbnRUaW1lKTsKQEAgLTgxNyw3ICs4MTEsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0g
TWF0aC5taW4oTWF0aC5tYXgodGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyB0aGlzLm1pbmltdW1T
ZWxlY3Rpb25EdXJhdGlvbiwgY3VycmVudFRpbWUpLCB0aGlzLmVuZFRpbWUpOwogICAgICAgICB9
CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuX2VsZW1lbnQuY2xpZW50V2lk
dGgsIHRoaXMuZHVyYXRpb24pOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5l
bGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKIAogICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAgLTgyNyw3
ICs4MjEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVs
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChldmVudC5idXR0b24gPT09IDApOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7
CiAKICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhp
cy5fc2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIGRvY3Vt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVN
b3VzZVVwRXZlbnRMaXN0ZW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKaW5kZXggN2EwMGRjYWNiYTkx
YzMxMzZhNGJhODFiYmUwMTE0MTk3YmIzNTU2My4uMjk0MjgxODQwNjJmN2I3ZGI0MzQyZTk0ZTI0
NTY3MDI0YmUxZTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMTcyLDI2ICsxNzIsMTcgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXQoKQorICAgIGZpbHRlclVwZGF0ZWQoKQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNh
bmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIp
OwotICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVu
ZGVmaW5lZDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFz
c2VzIGlmIG5lZWRlZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCisgICAgbmVlZHNMYXlv
dXQoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9CiAKLSAgICBmaWx0ZXJVcGRhdGVk
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7
CisgICAgICAgIHN1cGVyLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVk
CkBAIC0yNDcsMTUgKzIzOCw0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcgPSBjbGFzcyBU
aW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIAogICAgICAgICB0
aGlzLnNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKICAgICB9Ci0K
LSAgICBuZWVkc0xheW91dCgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBk
YXRlSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zY2hl
ZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMu
dXBkYXRlTGF5b3V0LmJpbmQodGhpcykpOwotICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwppbmRleCAyMTNlMzIw
MTcxMjhmOWFmMjQyNjRlYTkwYzNmNmVmYWNmMGVmZjUyLi4yNDFjMGI3ZGYzMTg1MDBkOWNiNDhm
NTE5MjBiMzRiNzFlMjkyYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKQEAgLTM0LDMwICszNCwzMCBAQCBXZWJJbnNw
ZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhcgogCiAgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNs
YXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250cm9s
U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udHJvbFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fbGVmdFNl
Y3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9u
U3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5MZWZ0SXRlbVNlY3Rp
b25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9sZWZ0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2Vj
dGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhp
cy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29s
YmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5DZW50ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50
KTsKIAogICAgICAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsg
IiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFt
ZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJTZWN0aW9u
RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJT
ZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jZW50ZXJS
aWdodFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJS
aWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50KTsKIAog
ICAgICAgICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdl
Ykluc3BlY3Rvci5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1l
bnQpOwogCiAgICAgICAgIGlmICghZG9udEFsbG93TW9kZUNoYW5nZXMpCi0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxl
Q29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0
TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAg
LTczLDE1ICs3MywxNSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9kaXNwbGF5TW9kZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9kaXNwbGF5TW9kZSk7CiAKICAgICAgICAgLy8g
UmV2ZXJ0IHRoZSBmb3JjZWQgaWNvbi1vbmx5IG1vZGUgaWYgaXQgd2FzIGFwcGxpZWQuCiAgICAg
ICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxh
eU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25s
eSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7CiAKICAgICAgICAgdGhpcy5fZGlzcGxh
eU1vZGUgPSBtb2RlOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChtb2Rl
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CiAKICAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXQoKTsKIApAQCAtOTksMTEgKzk5LDExIEBAIFdlYkluc3BlY3Rvci5U
b29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuX3NpemVNb2RlKQotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3NpemVNb2RlKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3NpemVNb2Rl
KTsKIAogICAgICAgICB0aGlzLl9zaXplTW9kZSA9IG1vZGU7CiAKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKG1vZGUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChtb2RlKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCkBAIC0xMTgsMTcg
KzExOCwxNyBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogCiAgICAgICAgIC8vIEZvcmNlIGNvbGxhcHNlZCBz
dHlsZSBmb3IgSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlcy4KICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5kZWJ1Z2dhYmxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2FibGVUeXBlLkphdmFTY3Jp
cHQpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byB0ZXN0IGlmIHRo
ZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNs
YXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICAv
LyBSZXZlcnQgdGhlIGZvcmNlZCBpY29uLW9ubHkgbW9kZSBpZiBpdCB3YXMgYXBwbGllZC4KICAg
ICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlID09PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNv
bk9ubHkpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIu
RGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpv
bnRhbCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBpc092ZXJmbG93aW5nVG9vbGJh
cigpCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRv
b2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAvLyBPbmx5
IHRoZSBob3Jpem9udGFsIGRpc3BsYXkgbW9kZSBzdXBwb3J0cyBjb2xsYXBzaW5nIGxhYmVscy4K
ICAgICAgICAgLy8gSWYgYW55IHNlY3Rpb25zIGFyZSBvdmVyZmxvd2luZyB0aGUgdG9vbGJhciB0
aGVuIGZvcmNlIHRoZSBkaXNwbGF5IG1vZGUgdG8gYmUgaWNvbiBvbmx5LgogICAgICAgICBpZiAo
dGhpcy5fZGlzcGxheU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLklj
b25BbmRMYWJlbEhvcml6b250YWwgJiYgaXNPdmVyZmxvd2luZ1Rvb2xiYXIuY2FsbCh0aGlzKSkg
ewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rv
ci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOwotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3Bs
YXlNb2RlLkljb25Pbmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250
YWwpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFpc092ZXJmbG93aW5nVG9vbGJhci5jYWxsKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xh
c3NOYW1lKTsKICAgICB9CiAKICAgICBhZGRUb29sYmFySXRlbSh0b29sYmFySXRlbSwgc2VjdGlv
bklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTlhMGZlOGUyZWZkYjJlYjlkMWRkNTAzNTFhNjkz
OTY2ZDlkMzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dl
Ykluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
K3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwor
ICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5fX3ZpZXcgPSB0aGlzOworICAgICAgICB0
aGlzLl9zdWJ2aWV3cyA9IFtdOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVs
ZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisg
ICAgZ2V0IHN1YnZpZXdzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdWJ2aWV3czsK
KyAgICB9CisKKyAgICBhZGRTdWJ2aWV3KHZpZXcpCisgICAgeworICAgICAgICB0aGlzLmluc2Vy
dFN1YnZpZXdCZWZvcmUodmlldywgbnVsbCk7CisgICAgfQorCisgICAgaW5zZXJ0U3Vidmlld0Jl
Zm9yZSh2aWV3LCByZWZlcmVuY2VWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5WaWV3KTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXJlZmVyZW5jZVZpZXcgfHwgcmVmZXJlbmNlVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5WaWV3KTsKKworICAgICAgICBpZiAodGhpcy5fc3Vidmlld3MuaW5jbHVkZXModmlldykpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiQ2Fubm90IGFkZCB2aWV3IHRoYXQg
aXMgYWxyZWFkeSBhIHN1YnZpZXcuIiwgdmlldyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBiZWZvcmVJbmRleCA9IHJlZmVyZW5jZVZpZXcgPyB0aGlz
Ll9zdWJ2aWV3cy5pbmRleE9mKHJlZmVyZW5jZVZpZXcpIDogdGhpcy5fc3Vidmlld3MubGVuZ3Ro
OworICAgICAgICBpZiAoYmVmb3JlSW5kZXggPT09IC0xKSB7CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChmYWxzZSwgIkNhbm5vdCBpbnNlcnQgdmlldy4gSW52YWxpZCByZWZlcmVuY2Ugdmll
dy4iLCByZWZlcmVuY2VWaWV3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuX3N1YnZpZXdzLmluc2VydEF0SW5kZXgodmlldywgYmVmb3JlSW5kZXgpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh2aWV3LmVsZW1lbnQsIHJlZmVyZW5j
ZVZpZXcgPyByZWZlcmVuY2VWaWV3LmVsZW1lbnQgOiBudWxsKTsKKyAgICB9CisKKyAgICByZW1v
dmVTdWJ2aWV3KHZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh2aWV3IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2VydCh2aWV3LmVs
ZW1lbnQucGFyZW50Tm9kZSA9PT0gdGhpcy5fZWxlbWVudCwgIlN1YnZpZXcgRE9NIGVsZW1lbnQg
bXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBwYXJlbnQgdmlldyBlbGVtZW50LiIpOworCisgICAgICAg
IGlmICghdGhpcy5fc3Vidmlld3MuaW5jbHVkZXModmlldykpIHsKKyAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGZhbHNlLCAiQ2Fubm90IHJlbW92ZSB2aWV3IHdoaWNoIGlzbid0IGEgc3Vidmll
dy4iLCB2aWV3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX3N1YnZpZXdzLnJlbW92ZSh2aWV3LCB0cnVlKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5y
ZW1vdmVDaGlsZCh2aWV3KTsKKyAgICB9CisKKyAgICByZXBsYWNlU3VidmlldyhvbGRWaWV3LCBu
ZXdWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2xkVmlldyAhPT0gbmV3Vmll
dywgIkNhbm5vdCByZXBsYWNlIHN1YnZpZXcgd2l0aCBpdHNlbGYuIik7CisKKyAgICAgICAgdGhp
cy5pbnNlcnRTdWJ2aWV3QmVmb3JlKG5ld1ZpZXcsIG9sZFZpZXcpOworICAgICAgICB0aGlzLnJl
bW92ZVN1YnZpZXcob2xkVmlldyk7CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0KCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7Cisg
ICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRh
dGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlk
ZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9yZW5kZXJT
dWJ0cmVlKCk7CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisgICAgfQorCisg
ICAgbmVlZHNMYXlvdXQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91
dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
c2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0
aGlzLl9yZW5kZXJTdWJ0cmVlLmJpbmQodGhpcykpOworICAgIH0KKworICAgIC8vIFByb3RlY3Rl
ZAorCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNs
YXNzZXMuCisgICAgICAgIC8vIE5vdCByZXNwb25zaWJsZSBmb3IgcmVjdXJzaW5nIHRvIGNoaWxk
IHZpZXdzLgorICAgICAgICAvLyBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseTsgdXNlIHVw
ZGF0ZUxheW91dCgpIGluc3RlYWQuCisKKyAgICAgICAgLy8gUmV0dXJuIHZhbHVlIHNpZ25hbHMg
d2hldGhlciBjaGlsZCB2aWV3cyBzaG91bGQgYWxzbyByZS1yZW5kZXIuCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9yZW5kZXJTdWJ0cmVlKCkK
KyAgICB7CisgICAgICAgIGxldCBzaG91bGRSZW5kZXJDaGlsZHJlbiA9IHRoaXMucmVuZGVyKCk7
CisgICAgICAgIGlmICghc2hvdWxkUmVuZGVyQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5fc3Vidmlld3MuZm9yRWFjaCgodmlldykgPT4geyB2aWV3Ll9yZW5k
ZXJTdWJ0cmVlKCk7IH0pOworICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264261</attachid>
            <date>2015-10-28 15:58:51 -0700</date>
            <delta_ts>2015-10-28 15:59:55 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151028155802.patch</filename>
            <type>text/plain</type>
            <size>94804</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
ZWJkODk3Y2VkYTFjMzY3NzJjMTg0ZmY5NmYxZmQ4ODg5YThkOWM5Li41ZDU4ZjU2MzA3NjM0Y2Vl
ZWE2YTI0ZGZlOTQ5ZThiN2NmYjJiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNzEgQEAKIDIwMTUtMTAtMjggIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIHNvIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IG1heSBiZSBhc3NvY2lhdGVkIHdpdGggdGhl
IFZpZXcgb2JqZWN0LAorICAgICAgICByYXRoZXIgdGhhbiBkeW5hbWljYWxseSBjcmVhdGluZyBh
IG5ldyBlbGVtZW50LiBWaWV3IGFsc28gYWRkcyB0aGUgYF9fdmlld2AgcHJvcGVydHkgdG8KKyAg
ICAgICAgaXRzIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcg
b2YgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIHZpZXcgY2xhc3NlcyB0aGF0
IGhhdmUgYmVlbiByZWZhY3RvcmVkIGluIHRoaXMgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBsYXJn
ZWx5IG1lY2hhbmljYWwuCisgICAgICAgIER5bmFtaWNhbGx5IGNyZWF0ZWQgRE9NIGVsZW1lbnRz
IGFuZCByZWR1bmRhbnQgZWxlbWVudCBnZXR0ZXJzIHdlcmUgcmVtb3ZlZCwgdXBkYXRlTGF5b3V0
SWZOZWVkZWQKKyAgICAgICAgaGFzIGJlZW4gcmVwbGFjZWQgYnkgbmVlZHNMYXlvdXQgaW4gc29t
ZSBjYXNlcywgYW5kIGZvciB2aWV3cyB3aGljaCBkaWQgbm8gbGF5b3V0IG9mIHRoZWlyIG93biBi
dXQKKyAgICAgICAgb25seSB1cGRhdGVkIHN1YnZpZXdzLCB1cGRhdGVMYXlvdXQgaGFzIGJlZW4g
ZWxpbWluYXRlZCBlbnRpcmVseS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzOgorICAgICAgICBNb3ZlZCBUYWJCYXIgbGF5b3V0IHVwZGF0ZXMgb3V0IG9mIFRhYkJyb3dz
ZXIgYW5kIGludG8gTWFpbi5qcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVQcm9tcHQucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUucmVuZGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ2V0IGVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLmF1dG9TaXplQ29sdW1ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLmFwcGx5Q29sdW1uV2lkdGhzTWFwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQgY29tcG9uZW50cyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5pbnNlcnROYXZpZ2F0aW9uSXRlbSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUucmVtb3ZlTmF2aWdhdGlvbkl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLmdldCBtaW5pbXVtV2lk
dGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnJlbmRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21vdXNl
RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21v
dXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBl
Ll9tb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlw
ZS5fY2FsY3VsYXRlTWluaW11bVdpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRTb29uLnVwZGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29v
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5
cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuc2V0IGhpZGRlbik6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtUaW1lbGluZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1l
bGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5R
dWlja0NvbnNvbGUucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90
eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJC
YXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90
eXBlLmluc2VydFRhYkJhckl0ZW0ucmVtb3ZlU3R5bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5hbmltYXRlVGFicyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVUYWJCYXJJdGVtLnJlbW92
ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVU
YWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmhhc05v
cm1hbFRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW5kZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX3JlY29yZFRhYkJhckl0
ZW1TaXplc0FuZFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3Rv
dHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlVXApOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU5ld1RhYk1v
dXNlRW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRl
TGF5b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJh
ci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2VyLnBy
b3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFi
QnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUuc2V0IGFsbG93c1RpbWVSYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc01hcmtlckxheW91
dC51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBl
Ll9uZWVkc01hcmtlckxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0LnVwZGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fcmVjYWxjdWxh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl91cGRh
dGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLl9oYW5kbGVNb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VE
b3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUuZmlsdGVyVXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5uZWVkc0xh
eW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRh
dGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5w
cm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnNldCBkaXNwbGF5TW9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuc2V0IHNpemVNb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5jdXN0b21VcGRhdGVMYXlvdXQpOgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZ2V0
IHN1YnZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5hZGRTdWJ2
aWV3KToKKyAgICAgICAgQXBwZW5kcyBhIHZpZXcgYXQgdGhlIGVuZCBvZiB0aGUgc3VidmlldyBs
aXN0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmluc2VydFN1YnZpZXdC
ZWZvcmUpOgorICAgICAgICBJbnNlcnQgYSB2aWV3IGludG8gc3VidmlldyBsaXN0IGJlZm9yZSBh
bm90aGVyIHN1YnZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVt
b3ZlU3Vidmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVwbGFj
ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxh
eW91dCk6CisgICAgICAgIE5vIGxvbmdlciBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgor
ICAgICAgICBGb3JjZXMgYSBsYXlvdXQgaWYgb25lIGhhcyBiZWVuIHNjaGVkdWxlZCwgb3RoZXJ3
aXNlIGRvZXMgbm90aGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5u
ZWVkc0xheW91dCk6CisgICAgICAgIFNjaGVkdWxlcyB0aGUgdmlldyBmb3IgcmVuZGVyaW5nLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIE92
ZXJyaWRkZW4gYnkgdmlld3MgdGhhdCBwZXJmb3JtIGxheW91dC4gUmV0dXJuIHZhbHVlIGNvbnRy
b2xzIHdoZXRoZXIKKyAgICAgICAgY2hpbGQgdmlld3MgYXJlIHJlbmRlcmVkLiBEZWZhdWx0IGJl
aGF2aW9yIGZvciB2aWV3cyB0aGF0IGRvbid0IGRlZmluZQorICAgICAgICBhIHJlbmRlciBtZXRo
b2QgaXMgdG8gcmVuZGVyIHN1YnZpZXdzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlLl9yZW5kZXJTdWJ0cmVlKToKKyAgICAgICAgQW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNr
IHRvIHJlbmRlciB0aGUgdmlldyBhbmQgKG9wdGlvbmFsbHkpIGl0cyBjaGlsZCB2aWV3cy4KKwor
MjAxNS0xMC0yOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUmVuZGVyaW5nIEZyYW1lcyBwaWUgY2hhcnQgZG9lcyBub3QgdXBkYXRl
IGR1cmluZyBpbml0aWFsIHNlbGVjdGlvbiBvZiBhIHRpbWVsaW5lIHJhbmdlCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2MzAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDFjNWIx
NWUzMTVmZmQ4Y2QzYzFlMGRkOTNiOWY3ZTQyNmU1YjE4ODcuLmZkZTI5MTZjMzUzOTQxNzljMDE2
NWUxMTY2NzQwNmRkODI2ODAyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTEyODIsNiArMTI4Miw3IEBAIFdlYkluc3BlY3Rv
ci5fd2luZG93Qmx1cnJlZCA9IGZ1bmN0aW9uKGV2ZW50KQogV2ViSW5zcGVjdG9yLl93aW5kb3dS
ZXNpemVkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdGhpcy50b29sYmFyLnVwZGF0ZUxheW91
dCgpOworICAgIHRoaXMudGFiQmFyLnVwZGF0ZUxheW91dCgpOwogICAgIHRoaXMuX3RhYkJyb3dz
ZXJTaXplRGlkQ2hhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYWNlMzc1YjZkODZlZjMzOTAwZmI0MGE5NjIwMzRkNjNk
MTdlYjRkNy4uMTJmNTU5OTdmOTc2MjJjYjE5ZmI5ODMxNGQ4OWE1MzhiMzI4YjFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzM2LDYg
KzMzNiw4IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBlU2V0LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dyYXBwZWRQcm9taXNlLmpzIj48L3NjcmlwdD4KIAor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaWV3LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db25zb2xlQ29tbWFuZFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db25zb2xlTWVzc2FnZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcwpp
bmRleCA4MGY0OTRiYmYwMTRlNWEyYTM5YmZmYmNhODY0MDIzYTIxOGQ1MzIxLi42ZWRlNTUzZDYy
ZDM1YzYzODQyMjRmZDM2ZTc2MGVmMzgzNzdmOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAg
LTIzLDE2ICsyMywxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xh
c3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3Ry
dWN0b3IoZGVsZWdhdGUsIG1pbWVUeXBlLCBlbGVtZW50KQogICAgIHsKLSAgICAgICAgc3VwZXIo
KTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKICAgICAgICAgbWltZVR5cGUgPSBwYXJzZU1J
TUVUeXBlKG1pbWVUeXBlKS50eXBlOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50
IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtcHJvbXB0IiwgV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hs
aWdodGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiY29uc29sZS1wcm9tcHQiLCBXZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNs
YXNzTmFtZSk7CiAKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwog
CkBAIC02NiwxMSArNjUsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENv
bnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OwotICAgIH0KLQogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZGVsZWdhdGU7CkBAIC0xMjYsMTEgKzEyMCw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJv
bXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwotICAgIH0K
LQogICAgIHVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZUNvbXBsZXRpb25z
KGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCk7CkBAIC0xNTgsNiArMTQ3LDEyIEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuICEhdGhpcy50ZXh0OwogICAgIH0KIAorICAg
IHJlbmRlcigpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlZnJlc2goKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2hhbmRs
ZVRhYktleShjb2RlTWlycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwppbmRleCBiZTdiZTAyNmY4
MWZmYThhYzg4YWUxOTljNTVlMzA0YTQxODkwNmMyLi43MTEzNGFiNmU4NGE2NjZjYzJiZDM5NGE2
Mzk5ZjAzZmY0MDk2ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwpAQCAtMjMsMjkgKzIzLDI4
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50
QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxl
bWVudCwgZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKICAgICB7Ci0gICAgICAgIHN1cGVy
KCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBl
bGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtYnJvd3NlciIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1icm93c2VyIik7CiAKICAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29u
dGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhp
cyk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lcik7CiAKICAgICAgICAgdGhpcy5fZmluZEJhbm5lciA9IG5ldyBXZWJJbnNw
ZWN0b3IuRmluZEJhbm5lcih0aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZFNob3csIHRoaXMuX2Zp
bmRCYW5uZXJEaWRTaG93LCB0aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZEhpZGUsIHRoaXMuX2Zp
bmRCYW5uZXJEaWRIaWRlLCB0aGlzKTsKIAogICAgICAgICBpZiAoIWRpc2FibGVCYWNrRm9yd2Fy
ZCkgewotICAgICAgICAgICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0
aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICAg
ICAgICAgIHRoaXMuX2ZvcndhcmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNv
bW1hbmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5D
b250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2Zv
cndhcmRCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOworICAgICAgICAg
ICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9y
Q29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2ws
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9u
Q2xpY2tlZC5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fZm9y
d2FyZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5SaWdodCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNr
ZWQuYmluZCh0aGlzKSwgdGhpcy5lbGVtZW50KTsKIAogICAgICAgICAgICAgdGhpcy5fYmFja0J1
dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgiYmFjayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmFjayAoJXMpIikuZm9ybWF0KHRoaXMu
X2JhY2tLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9CYWNrRm9yd2FyZEFy
cm93cy5zdmcjYmFjay1hcnJvdy1tYXNrIiwgOCwgMTMpOwogICAgICAgICAgICAgdGhpcy5fYmFj
a0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2JhY2tCdXR0b25DbGlja2VkLCB0
aGlzKTsKQEAgLTgxLDExICs4MCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGNs
YXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8g
UHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKQEAgLTEzMywxMiArMTI3LDYgQEAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdHM7CiAgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnVw
ZGF0ZUxheW91dCgpOwotICAgIH0KLQogICAgIHNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUsIGV4dHJhQXJndW1lbnRzKQogICAgIHsK
ICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhpcy5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSwgZXh0cmFBcmd1bWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
Vmlldy5qcwppbmRleCBhN2NiOGQzZmFkODEzNTc4YmQzMTg1N2VhMzYxMzk0NDgyMTJlMmM3Li4x
ODAyMmQzN2UzZDk4NWRjZTYzNDQyZjQ1YWJiZjc5MmQ1ZDYwZjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5q
cwpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKICAgICB7CkBAIC0zNCw4ICszNCw3
IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImNvbnRlbnQtdmlldyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29u
dGVudC12aWV3Iik7CiAKICAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKICAg
ICB9CkBAIC0xOTUsMTEgKzE5NCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNz
IENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4g
W107CiAgICAgfQogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IHBhcmVudENvbnRhaW5lcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udGFpbmVyOwpAQCAtMjQ1LDExICsyMzksNiBA
QCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdXBk
YXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMu
Ci0gICAgfQotCiAgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkg
c3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXggMzY4NTg4
ZDEwMmExNTZhYThmMGM1MjEyODEyNmY5ZTU2N2Y5ZGEzMC4uMzlhMjBhMjJhZTJkMTBkY2Q4YzUw
ZjgwYzIzMzRhNzJkNGIwMzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMK
QEAgLTIzLDE0ICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRW
aWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVmlldwogewotICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgY29uc3Ry
dWN0b3IoKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50
ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7
CiAKICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0gW107CiAgICAgICAgIHRoaXMuX2N1
cnJlbnRJbmRleCA9IC0xOwpAQCAtMzgsMTEgKzM3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNw
ZWMKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGN1cnJlbnRJbmRleCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4OwpAQCAtNjcsMTMgKzYxLDYg
QEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdD
b250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2tGb3J3
YXJkTGlzdFt0aGlzLl9jdXJyZW50SW5kZXhdOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgp
Ci0gICAgewotICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29u
dGVudFZpZXc7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcpCi0gICAgICAgICAgICBj
dXJyZW50Q29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgY29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nLCBl
eHRyYUFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVk
T2JqZWN0KTsKQEAgLTQyNiw2ICs0MTMsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAg
ICAgICAgdGhpcy5faGlkZUVudHJ5KGN1cnJlbnRFbnRyeSk7CiAgICAgfQogCisgICAgcmVuZGVy
KCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRD
b250ZW50VmlldzsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykKKyAgICAgICAgICAg
IGN1cnJlbnRDb250ZW50Vmlldy51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50
KGNvbnRlbnRWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwppbmRleCAxOWZjNDVmYjJhZDE5YWMyNDM0ZGU2YjQxYjEz
MWI1ZDM0ZGE3YWExLi4wNDYyNTFjMTJmNDRiNzk4ZTMzMWY5OGRlODdmNDc1YjQwMTMwNWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRh
R3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhR3JpZC5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK1dlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rvcihjb2x1bW5zRGF0YSwgZWRpdENhbGxi
YWNrLCBkZWxldGVDYWxsYmFjaywgcHJlZmVycmVkQ29sdW1uT3JkZXIpCiAgICAgewpAQCAtNDgs
NyArNDgsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5yZXNpemVycyA9IFtdOwogICAgICAg
ICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMu
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NOYW1lID0gImRhdGEtZ3JpZCI7CiAgICAgICAgIHRoaXMuZWxlbWVudC50YWJJ
bmRleCA9IDA7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3du
IiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC00MDAsNyArMzk5LDcgQEAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMu
Y29sdW1ucykKICAgICAgICAgICAgIGNvbHVtblsiZWxlbWVudCJdLnN0eWxlLndpZHRoID0gd2lk
dGhzW2lkZW50aWZpZXJdICsgIiUiOwogICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFs
aXplZCA9IGZhbHNlOwotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZp
ZXIsIGNvbHVtbkRhdGEsIGluc2VydGlvbkluZGV4KQpAQCAtNTUyLDcgKzU1MSw3IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGFmdGVy
IHRoZSBEYXRhR3JpZCBpcyBhdHRhY2hlZCB0byBpdHMKICAgICAvLyBwYXJlbnQgZWxlbWVudCwg
dGhlbiB0aGUgRGF0YUdyaWQncyBjb2x1bW5zIHdpbGwgbm90IGJlIHJlc2l6YWJsZS4KLSAgICB1
cGRhdGVMYXlvdXQoKQorICAgIHJlbmRlcigpCiAgICAgewogICAgICAgICAvLyBEbyBub3QgYXR0
ZW1wdCB0byB1c2Ugb2Zmc2V0ZXMgaWYgd2UncmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVu
dCB0cmVlIHlldC4KICAgICAgICAgaWYgKCF0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCAm
JiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKQEAgLTU4MSw2ICs1ODAsOCBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIAogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQu
RGlkTGF5b3V0KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjb2x1bW5X
aWR0aHNNYXAoKQpAQCAtNjAyLDcgKzYwMyw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNs
YXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhp
cy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW29yZGluYWxdLnN0eWxlLndp
ZHRoID0gd2lkdGg7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwor
ICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgX2lzQ29sdW1uVmlzaWJs
ZShjb2x1bW5JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5h
dmlnYXRpb25JdGVtLmpzCmluZGV4IDJkYmEyMGJhZGU0ZWM1ZmFlMzlhNDAyOGMyZjc3Y2FmNWVh
MDExODguLjhhYjIxZTQ3ZGRiN2JjMjMwNGEwYmY3OTc2YzFmZjA4ZmFmMjk3NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNh
bFBhdGhOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTYxLDcg
KzYxLDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSA9IGNs
YXNzIEhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXQKIAogICAgICAgICAvLyBVcGRhdGUgbGF5
b3V0IGZvciB0aGUgc28gb3RoZXIgaXRlbXMgY2FuIGFkanVzdCB0byB0aGUgZXh0cmEgc3BhY2Ug
KG9yIGxhY2sgdGhlcmVvZikgdG9vLgogICAgICAgICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0aW9u
QmFyKQotICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dFNv
b24oKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgp
OwogICAgIH0KIAogICAgIGdldCBsYXN0Q29tcG9uZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5l
Vmlldy5qcwppbmRleCBkNDZmMTNkMDYwODY4ZWY3M2Q5NzI0OGEyMWJjYzg4Mjc4ODU4NTI0Li5j
MzE1Njc0ZmM5Y2QzMTAwOTg5YjZmZjBkOTVkMTY4MjZkODEyYmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0
VGltZWxpbmVWaWV3LmpzCkBAIC04Niw3ICs4Niw3IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3VzZUxlYXZlVHJlZU91dGxpbmUuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIp
OwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVu
dCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAgICAg
dGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVj
b3JkQWRkZWQsIHRoaXMuX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCkBAIC0x
MzMsMTUgKzEzMyw2IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBjbGFzcyBM
YXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAg
ICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRh
dGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAg
ICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1l
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRj
aGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKQEAgLTE4NSw2ICsxNzYsMTIgQEAg
V2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldyA9IGNsYXNzIExheW91dFRpbWVsaW5lVmll
dyBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7
CiAgICAgfQogCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5k
aW5nUmVjb3JkcygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2
YXRlCiAKICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCmlu
ZGV4IGRlODU2OTVlNjFjZGNkNzQ3ODg3Y2I3OTk1ODVmOGFlMDhhY2E0ZjUuLjUwZDNhZTZhZjRk
OTA2MzBiNGQ1YjdkNWI5YTA2OTY5YmM1Y2M4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpAQCAt
MjMsMjYgKzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFz
cyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1
Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsIHJvbGUsIGxhYmVsKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NO
YW1lIHx8ICJuYXZpZ2F0aW9uLWJhciIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4
ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rv
ci5TdHlsZUNsYXNzTmFtZSB8fCAibmF2aWdhdGlvbi1iYXIiKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICBpZiAocm9sZSkKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CiAgICAgICAgIGlmIChsYWJlbCkKLSAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwp
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxh
YmVsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwg
dGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKLSAg
ICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5
RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9j
dXMuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKIAorICAgICAgICB0
aGlzLl9taW5pbXVtV2lkdGggPSBOYU47CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcyA9
IFtdOwogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKQEAgLTc1LDcgKzc1LDcgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMuc3BsaWNl
KGluZGV4LCAwLCBuYXZpZ2F0aW9uSXRlbSk7CiAKICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50
KQotICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7CisgICAgICAgICAg
ICBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50OwogCiAgICAgICAgIHZhciBuZXh0U2libGlu
ZyA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNp
YmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogbnVsbDsK
QEAgLTg0LDkgKzg0LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZp
Z2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHBhcmVudEVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKG5hdmlnYXRpb25JdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxl
bWVudCk7CiAKLSAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogCi0gICAgICAgIHRoaXMu
dXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtOwogICAgIH0KQEAgLTEwNSw3MiArMTA1LDEzIEBAIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnJlbW92ZShu
YXZpZ2F0aW9uSXRlbSk7CiAgICAgICAgIG5hdmlnYXRpb25JdGVtLmVsZW1lbnQucmVtb3ZlKCk7
CiAKLSAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogCi0gICAgICAgIHRoaXMudXBkYXRl
TGF5b3V0U29vbigpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRpb25JdGVtOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dFNvb24oKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSB0cnVlOwotCi0gICAgICAg
IGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxh
eW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9uZWVk
c0xheW91dCkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRp
b25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgdXBkYXRlTGF5b3V0KCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKSB7Ci0gICAg
ICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IGZhbHNlOwotCi0gICAg
ICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21VcGRhdGVMYXlvdXQgPT09ICJmdW5jdGlvbiIpIHsK
LSAgICAgICAgICAgIHRoaXMuY3VzdG9tVXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBj
bGFzcyB0byB0ZXN0IGlmIHRoZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
ci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgLy8gVGVsbCBlYWNoIG5hdmln
YXRpb24gaXRlbSB0byB1cGRhdGUgdG8gZnVsbCB3aWR0aCBpZiBuZWVkZWQuCi0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zW2ldLnVwZGF0ZUxheW91dCh0cnVlKTsKLQot
ICAgICAgICB2YXIgdG90YWxJdGVtV2lkdGggPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgLy8g
U2tpcCBmbGV4aWJsZSBzcGFjZSBpdGVtcyBzaW5jZSB0aGV5IGNhbiB0YWtlIHVwIG5vIHNwYWNl
IGF0IHRoZSBtaW5pbXVtIHdpZHRoLgotICAgICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25J
dGVtc1tpXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0
ZW0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHRvdGFsSXRlbVdp
ZHRoICs9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciBiYXJXaWR0aCA9IHRoaXMuX2VsZW1lbnQucmVhbE9m
ZnNldFdpZHRoOwotCi0gICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIGNsYXNzIGJhY2sgaWYg
dGhlIGl0ZW1zIGFyZSB3aWRlciB0aGFuIHRoZSBiYXIuCi0gICAgICAgIGlmICh0b3RhbEl0ZW1X
aWR0aCA+IGJhcldpZHRoKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgICAgICAvLyBHaXZlIGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBvcnR1bml0eSB0byBj
b2xsYXBzZSBmdXJ0aGVyLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVt
c1tpXS51cGRhdGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBnZXQgc2VsZWN0ZWROYXZpZ2F0aW9u
SXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bSB8fCBudWxsOwpAQCAtMjA2LDE4ICsxNDcsMTAgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zOwogICAgIH0KIAotICAgIGdldCBlbGVt
ZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAg
IGdldCBtaW5pbXVtV2lkdGgoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21pbmltdW1XaWR0
aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbikg
eworICAgICAgICBpZiAoaXNOYU4odGhpcy5fbWluaW11bVdpZHRoKSkKICAgICAgICAgICAgIHRo
aXMuX21pbmltdW1XaWR0aCA9IHRoaXMuX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpOwotICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbjsKLSAgICAg
ICAgfQotCiAgICAgICAgIHJldHVybiB0aGlzLl9taW5pbXVtV2lkdGg7CiAgICAgfQogCkBAIC0y
MjcsNiArMTYwLDQyIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdh
dGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAorICAgIHJlbmRlcigpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHRoaXMu
Y3VzdG9tVXBkYXRlTGF5b3V0ID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICB0aGlzLmN1
c3RvbVVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBp
ZiB0aGUgaXRlbXMgY2FuIGZpdCBhdCBmdWxsIHdpZHRoLgorICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CisKKyAgICAgICAgLy8gVGVsbCBlYWNoIG5hdmlnYXRpb24gaXRlbSB0byB1
cGRhdGUgdG8gZnVsbCB3aWR0aCBpZiBuZWVkZWQuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkl0ZW1zW2ldLnVwZGF0ZUxheW91dCh0cnVlKTsKKworICAgICAgICB2YXIgdG90
YWxJdGVtV2lkdGggPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgLy8gU2tpcCBmbGV4aWJsZSBz
cGFjZSBpdGVtcyBzaW5jZSB0aGV5IGNhbiB0YWtlIHVwIG5vIHNwYWNlIGF0IHRoZSBtaW5pbXVt
IHdpZHRoLgorICAgICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0pCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoICs9IHRoaXMuX25h
dmlnYXRpb25JdGVtc1tpXS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IGJhcldpZHRoID0gdGhpcy5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKwor
ICAgICAgICAvLyBBZGQgdGhlIGNvbGxhcHNlZCBjbGFzcyBiYWNrIGlmIHRoZSBpdGVtcyBhcmUg
d2lkZXIgdGhhbiB0aGUgYmFyLgorICAgICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0
aCkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKworICAgICAgICAvLyBHaXZl
IGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBvcnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVy
LgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS51cGRhdGVMYXlv
dXQoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfZmluZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRl
eCkKQEAgLTI1OSw3ICsyMjgsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNz
IE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIC8vIFJl
bW92ZSB0aGUgdGFiSW5kZXggc28gY2xpY2tpbmcgdGhlIG5hdmlnYXRpb24gYmFyIGRvZXMgbm90
IGdpdmUgaXQgZm9jdXMuCiAgICAgICAgIC8vIE9ubHkga2VlcCB0aGUgdGFiSW5kZXggaWYgYWxy
ZWFkeSBmb2N1c2VkIGZyb20ga2V5Ym9hcmQgbmF2aWdhdGlvbi4gVGhpcyBtYXRjaGVzIFhjb2Rl
LgogICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50
LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iik7CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0g
ZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBpZiAoIWl0
ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSkKQEAgLTI5NywxNSArMjY2
LDE1IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3R5bGVDbGFzc05hbWUpOwotICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVu
dC5uYXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkp
IHsKKyAgICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0
ZW0gfHwgIXRoaXMuZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpIHsKICAgICAgICAgICAg
IC8vIEZpbmQgdGhlIGVsZW1lbnQgdGhhdCBpcyBhdCB0aGUgWCBwb3NpdGlvbiBvZiB0aGUgbW91
c2UsIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAvLyB2ZXJ0
aWNhbGx5IGluIHRoZSBuYXZpZ2F0aW9uIGJhci4KLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgdGhpcy5fZWxlbWVudC50b3Rh
bE9mZnNldFRvcCArICh0aGlzLl9lbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpKTsKKyAgICAgICAg
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwg
dGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0VG9wICsgKHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQg
LyAyKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBpdGVtRWxlbWVudCA9IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNs
YXNzTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5u
YXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpCisg
ICAgICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRl
bSB8fCAhdGhpcy5lbGVtZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzM2LDcgKzMwNSw3IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyOwogCiAgICAg
ICAgIC8vIFJlc3RvcmUgdGhlIHRhYkluZGV4IHNvIHRoZSBuYXZpZ2F0aW9uIGJhciBjYW4gYmUg
aW4gdGhlIGtleWJvYXJkIHRhYiBsb29wLgotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4
ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICAvLyBE
aXNwYXRjaCB0aGUgc2VsZWN0ZWQgZXZlbnQgaGVyZSBzaW5jZSB0aGUgc2VsZWN0ZWROYXZpZ2F0
aW9uSXRlbSBzZXR0ZXIgc3VycHJlc3NlcyBpdAogICAgICAgICAvLyB3aGlsZSB0aGUgbW91c2Ug
aXMgZG93biB0byBwcmV2ZW50IHNlbmRpbmcgaXQgd2hpbGUgc2NydWJiaW5nIHRoZSBiYXIuCkBA
IC0zOTMsMTEgKzM2MiwxMSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5h
dmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfY2FsY3VsYXRl
TWluaW11bVdpZHRoKCkKICAgICB7Ci0gICAgICAgIHZhciB3YXNDb2xsYXBzZWQgPSB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGNvbnN0IHdhc0NvbGxhcHNlZCA9IHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29s
bGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIHN0
eWxlIGNsYXNzIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgdGhlIGl0ZW1zIHdoZW4gdGhleSBh
cmUgY29sbGFwc2VkLgogICAgICAgICBpZiAoIXdhc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7
CiAKICAgICAgICAgdmFyIHRvdGFsSXRlbVdpZHRoID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpIHsKQEAgLTQwOSw3ICsz
NzgsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xs
YXBzZWQgc3R5bGUgY2xhc3MgaWYgd2Ugd2VyZSBub3QgY29sbGFwc2VkIGJlZm9yZS4KICAgICAg
ICAgaWYgKCF3YXNDb2xsYXBzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHJl
dHVybiB0b3RhbEl0ZW1XaWR0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCmluZGV4IGNi
NzU1NDNjMWZhNTdkMDNiMDIwNTEyNTI4MDIwMmU1YjNiZGM1ODguLjFkNzYxMTU0ZTNiNzBkNThi
MjI5YTYzMWZjYzhiODNiZDAzYjAwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCkBAIC04MCw3
ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIE5hdmlnYXRpb25J
dGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoImhpZGRlbiIsIGZsYWcpOwogCiAgICAgICAgIGlmICh0aGlzLl9wYXJl
bnROYXZpZ2F0aW9uQmFyKQotICAgICAgICAgICAgdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhci51
cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFy
Lm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtU
aW1lbGluZVZpZXcuanMKaW5kZXggMmJiNDAzNmJkMjFlYWQ1ZTM5ZjBjYjMxMTJmOGY2NTc4NWNl
YjM5Yi4uYjExYTJhMzk5ZjI3NGUzYjNlZGE3YWMwZjljN2ExMWJkNTI1NjNiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVs
aW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC05Myw3ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdl
Ykluc3BlY3RvCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJuZXR3b3JrIik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMu
X2RhdGFHcmlkKTsKIAogICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVj
b3JkQWRkZWQsIHRoaXMpOwogCkBAIC0xMjksMTUgKzEyOSw2IEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYklu
c3BlY3RvCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmNsb3NlZCgpOwogICAgIH0KIAotICAgIHVw
ZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAg
ICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9j
ZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAgICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5z
dEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50
KTsKQEAgLTE4Nyw2ICsxNzgsMTIgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcg
PSBjbGFzcyBOZXR3b3JrVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAg
c3VwZXIudHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOwog
ICAgIH0KIAorICAgIHJlbmRlcigpCisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGlu
Z1JlY29yZHMoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0
ZQogCiAgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxp
bmVWaWV3LmpzCmluZGV4IDJmYmQ1MTkwOGI1NTY0MzgxYjY1ZjJjMjUxNTkzOGI5NGM4YzMxOWUu
LjJkYjNmZDgyY2Y2NDY3ZjIzNmM5MzVhNWFiZWNkMDMzZWVmNDk3NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092
ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCkBAIC00MSwxMyArNDEsMTQgQEAgV2ViSW5zcGVjdG9yLk92
ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1lbGluZVZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWMKIAogICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyOwogICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFsbG93c0NsaXBw
ZWRMYWJlbHMgPSB0cnVlOworICAgICAgICAvLyBGSVhNRTogb25jZSBUaW1lbGluZVJ1bGVyIGlu
aGVyaXRzIGZyb20gVmlldyB0aGlzIGNhbiBiZSBjaGFuZ2VkIHRvOiBgdGhpcy5hZGRTdWJ2aWV3
KHRoaXMuX3RpbWVsaW5lUnVsZXIpYC4KICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY3VycmVudFRp
bWVNYXJrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1hcmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKICAgICAgICAgdGhpcy5fdGltZWxp
bmVSdWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwogCiAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvdmVydmlldyIpOwotICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRk
U3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAgICAgdGhpcy5fbmV0d29ya1RpbWVsaW5l
ID0gcmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTmV0d29yayk7CiAgICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29y
a1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAtODcsMzUgKzg4LDYgQEAgV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1lbGluZVZpZXcgZXh0
ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7
Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHZhciBvbGRaZXJvVGlt
ZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWU7Ci0gICAgICAgIHZhciBvbGRTdGFydFRp
bWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGltZTsKLSAgICAgICAgdmFyIG9sZEVuZFRp
bWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWU7Ci0gICAgICAgIHZhciBvbGRDdXJyZW50
VGltZSA9IHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWU7Ci0KLSAgICAgICAgdGhpcy5fdGlt
ZWxpbmVSdWxlci56ZXJvVGltZSA9IHRoaXMuemVyb1RpbWU7Ci0gICAgICAgIHRoaXMuX3RpbWVs
aW5lUnVsZXIuc3RhcnRUaW1lID0gdGhpcy5zdGFydFRpbWU7Ci0gICAgICAgIHRoaXMuX3RpbWVs
aW5lUnVsZXIuZW5kVGltZSA9IHRoaXMuZW5kVGltZTsKLSAgICAgICAgdGhpcy5fY3VycmVudFRp
bWVNYXJrZXIudGltZSA9IHRoaXMuY3VycmVudFRpbWU7Ci0KLSAgICAgICAgLy8gVGhlIFRpbWVs
aW5lRGF0YUdyaWROb2RlIGdyYXBocyBhcmUgcG9zaXRpb25lZCB3aXRoIHBlcmNlbnRhZ2VzLCBz
byB0aGV5IGF1dG8gcmVzaXplIHdpdGggdGhlIHZpZXcuCi0gICAgICAgIC8vIFdlIG9ubHkgbmVl
ZCB0byByZWZyZXNoIHRoZSBncmFwaHMgd2hlbiB0aGUgYW55IG9mIHRoZSB0aW1lcyBjaGFuZ2Uu
Ci0gICAgICAgIGlmICh0aGlzLnplcm9UaW1lICE9PSBvbGRaZXJvVGltZSB8fCB0aGlzLnN0YXJ0
VGltZSAhPT0gb2xkU3RhcnRUaW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gb2xkRW5kVGltZSB8fCB0
aGlzLmN1cnJlbnRUaW1lICE9PSBvbGRDdXJyZW50VGltZSkgewotICAgICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAgd2hp
bGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5yZWZyZXNo
R3JhcGgoKTsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGUudHJh
dmVyc2VOZXh0Tm9kZSh0cnVlLCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAg
ICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMoKTsKLSAgICB9Ci0KICAg
ICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFH
cmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKQEAgLTE4Niw2ICsxNTgsMzYg
QEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1l
bGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dPcmln
aW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKHRyZWVFbGVtZW50LnNvdXJjZUNvZGVU
aW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgIH0KIAorICAgIHJlbmRlcigpCisgICAg
eworICAgICAgICB2YXIgb2xkWmVyb1RpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnplcm9UaW1l
OworICAgICAgICB2YXIgb2xkU3RhcnRUaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci5zdGFydFRp
bWU7CisgICAgICAgIHZhciBvbGRFbmRUaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci5lbmRUaW1l
OworICAgICAgICB2YXIgb2xkQ3VycmVudFRpbWUgPSB0aGlzLl9jdXJyZW50VGltZU1hcmtlci50
aW1lOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWUgPSB0aGlzLnplcm9U
aW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGltZSA9IHRoaXMuc3RhcnRU
aW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWUgPSB0aGlzLmVuZFRpbWU7
CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWUgPSB0aGlzLmN1cnJlbnRUaW1l
OworCisgICAgICAgIC8vIFRoZSBUaW1lbGluZURhdGFHcmlkTm9kZSBncmFwaHMgYXJlIHBvc2l0
aW9uZWQgd2l0aCBwZXJjZW50YWdlcywgc28gdGhleSBhdXRvIHJlc2l6ZSB3aXRoIHRoZSB2aWV3
LgorICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gcmVmcmVzaCB0aGUgZ3JhcGhzIHdoZW4gdGhl
IGFueSBvZiB0aGUgdGltZXMgY2hhbmdlLgorICAgICAgICBpZiAodGhpcy56ZXJvVGltZSAhPT0g
b2xkWmVyb1RpbWUgfHwgdGhpcy5zdGFydFRpbWUgIT09IG9sZFN0YXJ0VGltZSB8fCB0aGlzLmVu
ZFRpbWUgIT09IG9sZEVuZFRpbWUgfHwgdGhpcy5jdXJyZW50VGltZSAhPT0gb2xkQ3VycmVudFRp
bWUpIHsKKyAgICAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5jaGls
ZHJlblswXTsKKyAgICAgICAgICAgIHdoaWxlIChkYXRhR3JpZE5vZGUpIHsKKyAgICAgICAgICAg
ICAgICBkYXRhR3JpZE5vZGUucmVmcmVzaEdyYXBoKCk7CisgICAgICAgICAgICAgICAgZGF0YUdy
aWROb2RlID0gZGF0YUdyaWROb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgbnVsbCwgdHJ1ZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogb25jZSBUaW1l
bGluZVJ1bGVyIGluaGVyaXRzIGZyb20gVmlldyB0aGlzIGNhbiBiZSByZW1vdmVkLgorICAgICAg
ICB0aGlzLl90aW1lbGluZVJ1bGVyLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgIHRoaXMuX3By
b2Nlc3NQZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeURl
dGFpbHMoYSwgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCBjNGFkNTIwMjc4N2YxM2NiMjQ1MTA4
YzhlNmI1MWMxZTM4NDZmY2MzLi5jMjUzODkyY2VkYTJhZTgxNjkxZDQ1MGIwNGRhNWMzYjlhYzcz
ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xl
ID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHN1
cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3RvZ2dsZU9y
Rm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUsIHRoaXMuX3Rv
Z2dsZU9yRm9jdXMuYmluZCh0aGlzKSk7CiAKQEAgLTM4LDEyICszOCwxMSBAQCBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICB0aGlzLl9vdGhlckV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
cyA9IFtdOwogICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJUb0V4ZWN1dGlvbkNvbnRleHRQ
YXRoQ29tcG9uZW50TWFwID0ge307CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQg
fHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgicXVpY2stY29uc29sZSIpOwogCiAgICAgICAgIHRoaXMucHJvbXB0ID0gbmV3
IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KG51bGwsICJ0ZXh0L2phdmFzY3JpcHQiKTsKICAg
ICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0ZXh0LXByb21wdCIpOwot
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5wcm9tcHQpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBDb2RlTWlycm9yIDQgaGFzIGEgZGVmYXVsdCAiRXNjIiBrZXkgaGFuZGxlciB0aGF0IGFsd2F5
cyBwcmV2ZW50cyBkZWZhdWx0LgogICAgICAgICAvLyBPdXIga2V5Ym9hcmQgc2hvcnRjdXQgYWJv
dmUgd2lsbCByZXNwZWN0IHRoZSBkZWZhdWx0IHByZXZlbnRlZCBhbmQgaWdub3JlIHRoZSBldmVu
dApAQCAtNTUsNyArNTQsNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVp
Y2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnByb21w
dC5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRT
dWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogCiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNv
bnRleHRTZWxlY3Rvckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZp
Z2F0aW9uSXRlbTsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9ySXRlbS5z
aG93U2VsZWN0b3JBcnJvd3MgPSB0cnVlOwpAQCAtNzQsMTEgKzczLDYgQEAgV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IG5hdmlnYXRpb25CYXIo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXI7CkBAIC04OSwxMyAr
ODMsNiBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRF
eGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudC5fZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7
CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIC8vIEEgaGFyZCBt
YXhpbXVtIHNpemUgb2YgMzMlIG9mIHRoZSB3aW5kb3cuCi0gICAgICAgIHZhciBtYXhpbXVtQWxs
b3dlZEhlaWdodCA9IE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0ICogMC4zMyk7Ci0gICAg
ICAgIHRoaXMucHJvbXB0LmVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbWF4aW11bUFsbG93ZWRI
ZWlnaHQgKyAicHgiOwotICAgIH0KLQogICAgIGNvbnNvbGVMb2dWaXNpYmlsaXR5Q2hhbmdlZCh2
aXNpYmxlKQogICAgIHsKICAgICAgICAgaWYgKHZpc2libGUgPT09IHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TaG93aW5nTG9nQ2xhc3NO
YW1lKSkKQEAgLTEwNiw2ICs5MywxNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xh
c3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50
LkRpZFJlc2l6ZSk7CiAgICAgfQogCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICByZW5kZXIoKQor
ICAgIHsKKyAgICAgICAgLy8gQSBoYXJkIG1heGltdW0gc2l6ZSBvZiAzMyUgb2YgdGhlIHdpbmRv
dy4KKyAgICAgICAgbGV0IG1heGltdW1BbGxvd2VkSGVpZ2h0ID0gTWF0aC5yb3VuZCh3aW5kb3cu
aW5uZXJIZWlnaHQgKiAwLjMzKTsKKyAgICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5zdHlsZS5t
YXhIZWlnaHQgPSBtYXhpbXVtQWxsb3dlZEhlaWdodCArICJweCI7CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2V4ZWN1dGlvbkNvbnRleHRQ
YXRoQ29tcG9uZW50c1RvRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGlt
ZWxpbmVWaWV3LmpzCmluZGV4IGM5Zjk3ZWIwYmI3NmZjMWFhNDk0NjMzYTZlNTM4NmQ3NmQ5N2Fj
N2UuLmMxMGE5MDdiNzYzZmYzYzRjNTE4ZDFmNjkzYmY4OWE3YzkxZDI2NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1l
VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LmpzCkBAIC03OSw3ICs3OSw3IEBAIFdl
Ykluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyA9IGNsYXNzIFJlbmRlcmluZ0Zy
YW1lVGltZWxpbmVWaWV3IGV4dGVuCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyZW5kZXJpbmctZnJhbWUiKTsKLSAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICB0
aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAgICAgICAgIHRpbWVsaW5lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlz
Ll9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCkBAIC0xMzEsMTUg
KzEzMSw2IEBAIFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyA9IGNsYXNz
IFJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3IGV4dGVuCiAgICAgICAgIHRoaXMuX2RhdGFHcmlk
LmNsb3NlZCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBz
dXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlv
dXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAgICB9Ci0K
ICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKQEAgLTI0NSw2ICsyMzYs
MTIgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3ID0gY2xhc3MgUmVu
ZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0ZW4KICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg
fQogCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVj
b3JkcygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5q
cwppbmRleCA0OGU1MDUyNjdhYjE0MDgwMGRhM2FjYzllMzlmMjQwNmRmM2ZhZGNiLi4xYTFmMDgz
NDYzZWMwNzA5NmM0OWQ1NWMxMDg3NzBkOTcxOWI2YWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxp
bmVWaWV3LmpzCkBAIC02OCw3ICs2OCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZp
ZXcgPSBjbGFzcyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0
T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
Y3JpcHQiKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAg
ICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsK
IApAQCAtMTA0LDI4ICsxMDQsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0g
Y2xhc3MgU2NyaXB0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAg
IHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lICE9PSB0aGlz
Ll9vbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSB0aGlzLl9vbGRFbmRUaW1lKSB7Ci0g
ICAgICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5bMF07
Ci0gICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7Ci0gICAgICAgICAgICAgICAgZGF0
YUdyaWROb2RlLnVwZGF0ZVJhbmdlVGltZXModGhpcy5zdGFydFRpbWUsIHRoaXMuZW5kVGltZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5yZXZlYWxlZCkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUdyaWROb2RlLnJlZnJlc2hJZk5lZWRlZCgpOwotICAgICAgICAgICAgICAg
IGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxs
LCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fb2xkU3RhcnRUaW1l
ID0gdGhpcy5zdGFydFRpbWU7Ci0gICAgICAgICAgICB0aGlzLl9vbGRFbmRUaW1lID0gdGhpcy5l
bmRUaW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CiAg
ICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CkBA
IC0yMTcsNiArMTk1LDI1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcgPSBjbGFz
cyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICByZW5kZXIoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lICE9
PSB0aGlzLl9vbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSB0aGlzLl9vbGRFbmRUaW1l
KSB7CisgICAgICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRy
ZW5bMF07CisgICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7CisgICAgICAgICAgICAg
ICAgZGF0YUdyaWROb2RlLnVwZGF0ZVJhbmdlVGltZXModGhpcy5zdGFydFRpbWUsIHRoaXMuZW5k
VGltZSk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5yZXZlYWxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUdyaWROb2RlLnJlZnJlc2hJZk5lZWRlZCgpOworICAgICAgICAg
ICAgICAgIGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKGZhbHNl
LCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fb2xkU3Rh
cnRUaW1lID0gdGhpcy5zdGFydFRpbWU7CisgICAgICAgICAgICB0aGlzLl9vbGRFbmRUaW1lID0g
dGhpcy5lbmRUaW1lOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdS
ZWNvcmRzKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIFByaXZhdGUK
IAogICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDZkN2Y0MzNjZjQ4MmVm
ZjRhOTMxNTY1OGMxMTllMmYwYjkyNDAyMzUuLmI0NzFkZmRkZTAxY2U1MTlkZTg2YjNkYWQ3OWM1
NmY1MTg0NTFkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTIzLDIzICsyMywyMiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50LCB0YWJCYXJJdGVtcykKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAg
IHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInRhYi1iYXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
dGFiLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRh
Ymxpc3QiKTsKIAogICAgICAgICB2YXIgdG9wQm9yZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0b3BCb3JkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRvcC1ib3JkZXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0b3BCb3Jk
ZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRvcEJvcmRlckVs
ZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0
aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2
ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24u
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKIApAQCAtMTExLDcg
KzExMCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLl9uZXdUYWJJdGVt
ID8gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSA6IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0
aDsKICAgICAgICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgbGFzdEluZGV4
KSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmlt
YXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygi
YW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVT
dHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBkb05vdEFuaW1hdGUgPSB0cnVlOwogICAg
ICAgICB9CkBAIC0xMjUsMzQgKzEyNCwzNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxp
bmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxp
bmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25l
d1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0
aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5n
RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5l
bGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRh
YigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIi
LCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQu
c3R5bGUud2lkdGggPSBudWxsOwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRp
bmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5n
LXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGlu
ZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10
YWIiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xp
c3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIi
KTsKIAogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImJl
aW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0
aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFkb05vdEFuaW1hdGUpIHsKQEAgLTE2OCw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJC
YXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9KTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGFiQmFySXRl
bS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAg
IHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5k
UG9zaXRpb25zKTsKQEAgLTE3Nyw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRkZWQsIHt0YWJCYXJJdGVtfSk7
CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRh
YkJhckl0ZW0gPSBuZXh0VGFiQmFySXRlbTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYg
KHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAg
ICAgICAgICAgZG9Ob3RBbmltYXRlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjE5LDcgKzIxOCw3
IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAg
ICB2YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1h
bFRhYigpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10
YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CiAK
ICAgICAgICAgY29uc3Qgc2hvdWxkT3BlbkRlZmF1bHRUYWIgPSAhdGFiQmFySXRlbS5pc0RlZmF1
bHRUYWIgJiYgIXRoaXMuaGFzTm9ybWFsVGFiKCk7CiAgICAgICAgIGlmIChzaG91bGRPcGVuRGVm
YXVsdFRhYikKQEAgLTIzMCw3ICsyMjksNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMu
X3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBv
c2l0aW9ucyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0
ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJC
YXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTI0NCw4ICsy
NDMsOCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOwogCiAg
ICAgICAgICAgICB2YXIgbGVmdCA9IDA7CiAgICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50VGFi
QmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewpAQCAtMjY2LDcgKzI2NSw3IEBAIFdlYklu
c3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVk
VGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50
LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5z
dHlsZS53aWR0aCkgKyAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVy
KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFu
c2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
ZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKQEAgLTI3NSwxNiArMjc0LDE2IEBAIFdlYkluc3BlY3Rv
ci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbSAhPT0gbGFzdE5vcm1hbFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CiAK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFi
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5n
Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10
YWIiKTsKIAogICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRvTm90QW5pbWF0ZSkgewotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogCiAgICAgICAg
ICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAKQEAg
LTI5NCw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7
CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRh
YkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMzUwLDYx
ICszNDksNiBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQmFySXRlbSA9IHRoaXMu
X3RhYkJhckl0ZW1zW25ld0luZGV4XTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29uKCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gdHJ1ZTsKLQotICAg
ICAgICBmdW5jdGlvbiB1cGRhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91cGRh
dGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBpZiAodGhpcy5f
bmVlZHNMYXlvdXQpCi0gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUodXBkYXRlLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIHVwZGF0ZUxheW91
dCgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikgewot
ICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZp
bmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dGhpcy5fbmVlZHNMYXlvdXQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImhpZGUtdGl0bGVzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiY29sbGFwc2VkIik7Ci0KLSAgICAgICAgdmFyIGZpcnN0Tm9ybWFsVGFiSXRl
bSA9IG51bGw7Ci0gICAgICAgIGZvciAodmFyIHRhYkl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMp
IHsKLSAgICAgICAgICAgIGlmICh0YWJJdGVtLnBpbm5lZCkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGZpcnN0Tm9ybWFsVGFiSXRlbSA9IHRhYkl0ZW07Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZmlyc3ROb3JtYWxUYWJJdGVt
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChmaXJzdE5vcm1hbFRhYkl0ZW0u
ZWxlbWVudC5vZmZzZXRXaWR0aCA+PSAxMjApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKLQotICAgICAgICBp
ZiAoZmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjApCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRl
LXRpdGxlcyIpOwotICAgIH0KLQogICAgIGdldCBzZWxlY3RlZFRhYkJhckl0ZW0oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbTsKQEAgLTQzNSwxNCArMzc5
LDQzIEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtczsKICAgICB9CiAK
LSAgICBnZXQgZWxlbWVudCgpCisgICAgaGFzTm9ybWFsVGFiKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuc29t
ZSgodGFiKSA9PiAhdGFiLnBpbm5lZCk7CiAgICAgfQogCi0gICAgaGFzTm9ybWFsVGFiKCkKKyAg
ICAvLyBQcm90ZWN0ZWQKKworICAgIHJlbmRlcigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fdGFiQmFySXRlbXMuc29tZSgodGFiKSA9PiAhdGFiLnBpbm5lZCk7CisgICAgICAgIGlmICh0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImhpZGUtdGl0bGVzIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJjb2xsYXBzZWQiKTsKKworICAgICAgICB2YXIgZmlyc3ROb3JtYWxUYWJJdGVtID0gbnVsbDsK
KyAgICAgICAgZm9yICh2YXIgdGFiSXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAg
ICAgICAgaWYgKHRhYkl0ZW0ucGlubmVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgZmlyc3ROb3JtYWxUYWJJdGVtID0gdGFiSXRlbTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaXJzdE5vcm1hbFRhYkl0ZW0pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVt
ZW50Lm9mZnNldFdpZHRoID49IDEyMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CisKKyAgICAgICAg
aWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDYwKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJoaWRlLXRpdGxlcyIpOworCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IFByaXZhdGUKQEAgLTQ4Myw3ICs0NTYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgdmFyIHRh
YkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CiAKLSAgICAgICAgdmFyIGJhclJl
Y3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBjb25z
dCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAg
ICAgIGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKICAgICAgICAg
ICAgIHZhciBib3VuZGluZ1JlY3QgPSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CkBAIC01MjIsNyArNDk1LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmICghYmVm
b3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNB
bmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsK
IAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5
b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGlj
LWxheW91dCIpOwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3Np
dGlvbnMoKTsKIAogICAgICAgICAgICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0
aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKQEAgLTUzMiwyNiArNTA1
LDI2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0
YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRo
aXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3Np
dGlvbnMpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5k
IiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBm
dW5jdGlvbiByZW1vdmVTdHlsZXMoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFi
cyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0
aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJU
YWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlTGF5b3V0KCk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRy
YW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9CkBAIC02MzAsNyArNjAzLDcgQEAgV2ViSW5zcGVjdG9y
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JT
ZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFz
c05hbWUpOwogICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50IHx8IGNsaWNrZWRNaWRkbGVC
dXR0b24pIHsKICAgICAgICAgICAgIC8vIERpc2FsbG93IGNsb3NpbmcgdGhlIGRlZmF1bHQgdGFi
IGlmIGl0IGlzIHRoZSBvbmx5IHRhYi4KLSAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtLmlzRGVm
YXVsdFRhYiAmJiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIp
KQorICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBmYWxz
ZSwgdHJ1ZSk7CkBAIC02NTEsMTAgKzYyNCwxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAg
ICBpZiAoIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0Iikp
IHsKKyAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMt
bGF5b3V0IikpIHsKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpKTsKLSAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVuZGVmaW5lZCkK
QEAgLTY5NSw3ICs2NjgsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlz
Ll90YWJCYXJJdGVtc1tuZXdJbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVt
ZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0
ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0aGlzLl9l
bGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4
dFNpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlz
Ll9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKIAogICAg
ICAgICAvLyBGSVhNRTogQW5pbWF0ZSB0aGUgdGFicyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZv
ciB0aGUgc2VsZWN0ZWQgdGFiLiBUaGlzIHdhcyBjYXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRy
aWVkLgogCkBAIC03MTQsMTAgKzY4NywxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX21v
dXNlSXNEb3duKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmctdGFiIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZy10YWIiKTsKIAogICAgICAgICBpZiAoIXRoaXMuX3Rh
YkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0
aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgdmFyIGxlZnQgPSAwOwpAQCAtNzQ1LDE0ICs3MTgsMTQgQEAgV2ViSW5z
cGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IAogICAgIF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X21vdXNlSXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8
fCAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgIGlm
ICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNl
RW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQi
KSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdo
ZW4gdGhlIG1vdXNlIGlzIGluc2lkZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVk
LCByZW1vdmVkIG9yIGdlbmVyYWxseSBjaGFuZ2UgaW5zaWRlLgogICAgICAgICAvLyBDaGVjayBp
ZiB0aGUgbW91c2UgcmVhbGx5IGRpZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUg
Ym91bmRzLgogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVj
dCBiZWhhdmlvcj8KLSAgICAgICAgdmFyIGJhclJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOwotICAgICAgICB2YXIgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdU
YWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
IDogbnVsbDsKKyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKKyAgICAgICAgY29uc3QgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdU
YWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
IDogbnVsbDsKICAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQu
cGFnZVkgPCBiYXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBl
dmVudC5wYWdlWCA8IChuZXdUYWJJdGVtUmVjdCA/IG5ld1RhYkl0ZW1SZWN0LnJpZ2h0IDogYmFy
UmVjdC5yaWdodCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTc2OCw3ICs3NDEsNyBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogCiAgICAgX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIoZXZlbnQpCiAgICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgaWYgKCF0aGlzLl90
YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29u
dGFpbnMoImFuaW1hdGluZyIpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwppbmRleCAyOGJh
OTM5NTVhMzk4MTIzMWU2Njc2ZDZhMzgwNjhlMjFjZjJiZGRlLi42ZTA2MDJiODhlMzRhMzIzZDAy
NjkxODJlMTc1NWNhNGY2YmM4ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKQEAgLTIzLDE5ICsyMywxNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKK1dlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFyLCBuYXZp
Z2F0aW9uU2lkZWJhciwgZGV0YWlsc1NpZGViYXIpCiAgICAgewotICAgICAgICBzdXBlcigpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXIsICJNdXN0IHByb3ZpZGUgYSBUYWJCYXIuIik7
CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJy
b3dzZXIiKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fdGFiQmFy
ID0gdGFiQmFyIHx8IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFyOwotICAgICAgICBpZiAoIXRhYkJh
cikKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGFiQmFyLmVs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJyb3dzZXIi
KTsKIAorICAgICAgICB0aGlzLl90YWJCYXIgPSB0YWJCYXI7CiAgICAgICAgIHRoaXMuX25hdmln
YXRpb25TaWRlYmFyID0gbmF2aWdhdGlvblNpZGViYXIgfHwgbnVsbDsKICAgICAgICAgdGhpcy5f
ZGV0YWlsc1NpZGViYXIgPSBkZXRhaWxzU2lkZWJhciB8fCBudWxsOwogCkBAIC00OCw3ICs0Niw3
IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5l
bGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyKTsKIAogICAgICAgICB2YXIgc2hvd05leHRUYWIgPSB0aGlzLl9zaG93TmV4dFRhYi5iaW5k
KHRoaXMpOwogICAgICAgICB2YXIgc2hvd1ByZXZpb3VzVGFiID0gdGhpcy5fc2hvd1ByZXZpb3Vz
VGFiLmJpbmQodGhpcyk7CkBAIC03MywxMSArNzEsNiBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3Nl
ciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAv
LyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCB0YWJCYXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYkJhcjsKQEAgLTk4LDEyICs5MSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93
c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsK
ICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFiQmFy
LnVwZGF0ZUxheW91dCgpOwotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci51cGRh
dGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBiZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhjb25z
dHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFi
Q29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNl
bnRUYWJDb250ZW50Vmlld3NbMF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKaW5kZXggNTA1ZTAxOTcz
NjE4MTM4OWEzODczMzEyYjlhNmE3M2E1NDk2YjU1Ny4uMDFmZWMyNTU3Y2FhZmQwZDlmMTk0Nzc3
MTAyNjllZWNkMGVmYzdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCkBAIC0yMywyMiArMjMsMjEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVs
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7
CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRpbWVsaW5lLXJ1bGVyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0
aW1lbGluZS1ydWxlciIpOwogCiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJoZWFkZXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9oZWFkZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2hlYWRlckVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50
LmNsYXNzTGlzdC5hZGQoIm1hcmtlcnMiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9tYXJrZXJzRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9tYXJrZXJzRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5femVyb1RpbWUgPSAw
OwogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSAwOwpAQCAtNTksMTEgKzU4LDYgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgYWxsb3dz
Q2xpcHBlZExhYmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dzQ2xpcHBl
ZExhYmVsczsKQEAgLTEwNSw3ICs5OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0g
Y2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAg
ICBpZiAoeCkgewogICAgICAgICAgICAgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lciA9IHRo
aXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3Rl
bmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3RlbmVyKTsKIAogICAgICAgICAgICAgdGhpcy5f
bGVmdFNoYWRlZEFyZWFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgICAgICAgICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2hh
ZGVkLWFyZWEiKTsKQEAgLTEzMCw3ICsxMjQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAg
ICAgICAgICAgIHRoaXMuX25lZWRzU2VsZWN0aW9uTGF5b3V0KCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkV2ZW50
TGlzdGVuZXIpOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVu
ZXI7CiAKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxlbWVudC5yZW1vdmUoKTsK
QEAgLTQ1MCw3ICs0NDQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRp
bWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVu
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5j
bGllbnRXaWR0aDsKICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC00OTQsNyArNDg4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRl
SWRlbnRpZmllcjsKIAotICAgICAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1l
bnQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5lbGVt
ZW50LmNsaWVudFdpZHRoOwogICAgICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTIwLDcgKzUxNCw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NjaGVkdWxlZFNlbGVj
dGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXI7CiAKLSAgICAgICAgICAgIHZhciB2aXNpYmxlV2lk
dGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHZpc2libGVX
aWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAgICAgICAgIGlmICh2aXNpYmxl
V2lkdGggPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTUzMiw3ICs1MjYsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfcmVjYWxjdWxhdGUoKQogICAgIHsKLSAgICAg
ICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGg7CisgICAgICAg
IHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgIGlm
ICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC01ODUsNyAr
NTc5LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Nj
aGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXI7CiAgICAgICAgIH0KIAotICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIuQWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUsIHRoaXMuX2FsbG93
c1RpbWVSYW5nZVNlbGVjdGlvbik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5nZVNlbGVjdGlvblN0
eWxlQ2xhc3NOYW1lLCB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24pOwogCiAgICAgICAg
IGlmICghdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjE3LDExICs2MTEsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFz
cyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
Ll9yaWdodFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQudGl0bGUgPSBmb3JtYXR0ZWRFbmRUaW1lVGV4
dDsKIAogICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50LnBhcmVudE5vZGUp
IHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0aW9u
RHJhZ0VsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2hhZGVkQXJlYUVsZW1lbnQpOwot
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlbGVjdGlv
bkhhbmRsZUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWxlY3Rpb25IYW5kbGVFbGVtZW50KTsKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNoYWRlZEFyZWFF
bGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdo
dFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGlz
cGF0Y2hUaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKTsKQEAgLTY2NSw3ICs2NTksNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhp
cy5fc2VsZWN0aW9uSXNNb3ZlID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9zZWxlY3Rpb25EcmFn
RWxlbWVudDsKLSAgICAgICAgdGhpcy5fcnVsZXJCb3VuZGluZ0NsaWVudFJlY3QgPSB0aGlzLl9l
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICB0aGlzLl9ydWxlckJvdW5k
aW5nQ2xpZW50UmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIAog
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uSXNNb3ZlKSB7CiAgICAgICAgICAgICB0aGlzLl9s
YXN0TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYOwpAQCAtNzIwLDEwICs3MTQsMTAgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0gTWF0
aC5taW4odGhpcy5zdGFydFRpbWUgKyAoTWF0aC5tYXgoY3VycmVudE1vdXNlUG9zaXRpb24sIHRo
aXMuX21vdXNlRG93blBvc2l0aW9uKSAqIHRoaXMuc2Vjb25kc1BlclBpeGVsKSwgdGhpcy5lbmRU
aW1lKTsKIAogICAgICAgICAgICAgLy8gVHVybiBvbiBjb2wtcmVzaXplIGN1cnNvciBzdHlsZSBv
bmNlIGRyYWdnaW5nIGJlZ2lucywgcmF0aGVyIHRoYW4gb24gdGhlIGluaXRpYWwgbW91c2UgZG93
bi4KLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
LlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9CiAKLSAgICAgICAg
dGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZHVy
YXRpb24pOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5lbGVtZW50LmNsaWVu
dFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAgLTczNCw3ICs3MjgsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9
PT0gMCk7CiAKICAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3Rpb25Jc01vdmUpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6
aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5zZWxl
Y3Rpb25FbmRUaW1lIC0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPCB0aGlzLm1pbmltdW1TZWxl
Y3Rpb25EdXJhdGlvbikgewogICAgICAgICAgICAgICAgIC8vIFRoZSBzZWN0aW9uIGlzIHNtYWxs
ZXIgdGhhbiBhbGxvd2VkLCBncm93IGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGRyYWcgdG8gbWVl
dCB0aGUgbWludW11bS4KQEAgLTc3NCw3ICs3NjgsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZHJhZ0hhbmRsZUlzU3RhcnRUaW1l
ID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudDsKLSAg
ICAgICAgdGhpcy5fbW91c2VEb3duUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuX2VsZW1l
bnQudG90YWxPZmZzZXRMZWZ0OworICAgICAgICB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbiA9IGV2
ZW50LnBhZ2VYIC0gdGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKIAogICAgICAgICB0aGlz
Ll9zZWxlY3Rpb25IYW5kbGVNb3VzZU1vdmVFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlU2Vs
ZWN0aW9uSGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMuX3NlbGVjdGlv
bkhhbmRsZU1vdXNlVXBFdmVudExpc3RlbmVyID0gdGhpcy5faGFuZGxlU2VsZWN0aW9uSGFuZGxl
TW91c2VVcC5iaW5kKHRoaXMpOwpAQCAtNzgzLDcgKzc3Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5f
c2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVw
RXZlbnRMaXN0ZW5lcik7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAg
LTc5Myw3ICs3ODcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVs
aW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCi0gICAgICAgIHZhciBjdXJyZW50TW91
c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5fZWxlbWVudC50b3RhbE9mZnNldExlZnQ7
CisgICAgICAgIHZhciBjdXJyZW50TW91c2VQb3NpdGlvbiA9IGV2ZW50LnBhZ2VYIC0gdGhpcy5l
bGVtZW50LnRvdGFsT2Zmc2V0TGVmdDsKICAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gdGhpcy5z
dGFydFRpbWUgKyAoY3VycmVudE1vdXNlUG9zaXRpb24gKiB0aGlzLnNlY29uZHNQZXJQaXhlbCk7
CiAgICAgICAgIGlmICh0aGlzLnNuYXBJbnRlcnZhbCkKICAgICAgICAgICAgIGN1cnJlbnRUaW1l
ID0gdGhpcy5fc25hcFZhbHVlKGN1cnJlbnRUaW1lKTsKQEAgLTgxNyw3ICs4MTEsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmRUaW1lID0g
TWF0aC5taW4oTWF0aC5tYXgodGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgKyB0aGlzLm1pbmltdW1T
ZWxlY3Rpb25EdXJhdGlvbiwgY3VycmVudFRpbWUpLCB0aGlzLmVuZFRpbWUpOwogICAgICAgICB9
CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuX2VsZW1lbnQuY2xpZW50V2lk
dGgsIHRoaXMuZHVyYXRpb24pOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odGhpcy5l
bGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKIAogICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKQEAgLTgyNyw3
ICs4MjEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVs
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChldmVudC5idXR0b24gPT09IDApOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7
CiAKICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhp
cy5fc2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIGRvY3Vt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9zZWxlY3Rpb25IYW5kbGVN
b3VzZVVwRXZlbnRMaXN0ZW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKaW5kZXggN2EwMGRjYWNiYTkx
YzMxMzZhNGJhODFiYmUwMTE0MTk3YmIzNTU2My4uMjk0MjgxODQwNjJmN2I3ZGI0MzQyZTk0ZTI0
NTY3MDI0YmUxZTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMTcyLDI2ICsxNzIsMTcgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXQoKQorICAgIGZpbHRlclVwZGF0ZWQoKQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNh
bmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIp
OwotICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVu
ZGVmaW5lZDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFz
c2VzIGlmIG5lZWRlZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCisgICAgbmVlZHNMYXlv
dXQoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyKQorICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9CiAKLSAgICBmaWx0ZXJVcGRhdGVk
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7
CisgICAgICAgIHN1cGVyLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVk
CkBAIC0yNDcsMTUgKzIzOCw0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcgPSBjbGFzcyBU
aW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIAogICAgICAgICB0
aGlzLnNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKICAgICB9Ci0K
LSAgICBuZWVkc0xheW91dCgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBk
YXRlSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zY2hl
ZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMu
dXBkYXRlTGF5b3V0LmJpbmQodGhpcykpOwotICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwppbmRleCAyMTNlMzIw
MTcxMjhmOWFmMjQyNjRlYTkwYzNmNmVmYWNmMGVmZjUyLi4yNDFjMGI3ZGYzMTg1MDBkOWNiNDhm
NTE5MjBiMzRiNzFlMjkyYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKQEAgLTM0LDMwICszNCwzMCBAQCBXZWJJbnNw
ZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhcgogCiAgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNs
YXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250cm9s
U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udHJvbFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fbGVmdFNl
Y3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9u
U3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5MZWZ0SXRlbVNlY3Rp
b25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9sZWZ0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2Vj
dGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhp
cy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29s
YmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5DZW50ZXJMZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50
KTsKIAogICAgICAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsg
IiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFt
ZTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJTZWN0aW9u
RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJT
ZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jZW50ZXJS
aWdodFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJS
aWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50KTsKIAog
ICAgICAgICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdl
Ykluc3BlY3Rvci5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1l
bnQpOwogCiAgICAgICAgIGlmICghZG9udEFsbG93TW9kZUNoYW5nZXMpCi0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxl
Q29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0
TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAg
LTczLDE1ICs3MywxNSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9kaXNwbGF5TW9kZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9kaXNwbGF5TW9kZSk7CiAKICAgICAgICAgLy8g
UmV2ZXJ0IHRoZSBmb3JjZWQgaWNvbi1vbmx5IG1vZGUgaWYgaXQgd2FzIGFwcGxpZWQuCiAgICAg
ICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxh
eU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25s
eSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7CiAKICAgICAgICAgdGhpcy5fZGlzcGxh
eU1vZGUgPSBtb2RlOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChtb2Rl
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CiAKICAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXQoKTsKIApAQCAtOTksMTEgKzk5LDExIEBAIFdlYkluc3BlY3Rvci5U
b29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuX3NpemVNb2RlKQotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3NpemVNb2RlKTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3NpemVNb2Rl
KTsKIAogICAgICAgICB0aGlzLl9zaXplTW9kZSA9IG1vZGU7CiAKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKG1vZGUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChtb2RlKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCkBAIC0xMTgsMTcg
KzExOCwxNyBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogCiAgICAgICAgIC8vIEZvcmNlIGNvbGxhcHNlZCBz
dHlsZSBmb3IgSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlcy4KICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5kZWJ1Z2dhYmxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2FibGVUeXBlLkphdmFTY3Jp
cHQpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byB0ZXN0IGlmIHRo
ZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNs
YXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICAv
LyBSZXZlcnQgdGhlIGZvcmNlZCBpY29uLW9ubHkgbW9kZSBpZiBpdCB3YXMgYXBwbGllZC4KICAg
ICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlID09PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNv
bk9ubHkpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIu
RGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpv
bnRhbCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBpc092ZXJmbG93aW5nVG9vbGJh
cigpCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRv
b2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAvLyBPbmx5
IHRoZSBob3Jpem9udGFsIGRpc3BsYXkgbW9kZSBzdXBwb3J0cyBjb2xsYXBzaW5nIGxhYmVscy4K
ICAgICAgICAgLy8gSWYgYW55IHNlY3Rpb25zIGFyZSBvdmVyZmxvd2luZyB0aGUgdG9vbGJhciB0
aGVuIGZvcmNlIHRoZSBkaXNwbGF5IG1vZGUgdG8gYmUgaWNvbiBvbmx5LgogICAgICAgICBpZiAo
dGhpcy5fZGlzcGxheU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLklj
b25BbmRMYWJlbEhvcml6b250YWwgJiYgaXNPdmVyZmxvd2luZ1Rvb2xiYXIuY2FsbCh0aGlzKSkg
ewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rv
ci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOwotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3Bs
YXlNb2RlLkljb25Pbmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250
YWwpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFpc092ZXJmbG93aW5nVG9vbGJhci5jYWxsKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xh
c3NOYW1lKTsKICAgICB9CiAKICAgICBhZGRUb29sYmFySXRlbSh0b29sYmFySXRlbSwgc2VjdGlv
bklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmU3ZDIwMjgzZjZkNDhhY2UzNDE5ZWE1NTE2MzAx
YjUxNzNkNjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dl
Ykluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
K3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwor
ICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5fX3ZpZXcgPSB0aGlzOworICAgICAgICB0
aGlzLl9zdWJ2aWV3cyA9IFtdOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVs
ZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisg
ICAgZ2V0IHN1YnZpZXdzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdWJ2aWV3czsK
KyAgICB9CisKKyAgICBhZGRTdWJ2aWV3KHZpZXcpCisgICAgeworICAgICAgICB0aGlzLmluc2Vy
dFN1YnZpZXdCZWZvcmUodmlldywgbnVsbCk7CisgICAgfQorCisgICAgaW5zZXJ0U3Vidmlld0Jl
Zm9yZSh2aWV3LCByZWZlcmVuY2VWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5WaWV3KTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXJlZmVyZW5jZVZpZXcgfHwgcmVmZXJlbmNlVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5WaWV3KTsKKworICAgICAgICBpZiAodGhpcy5fc3Vidmlld3MuaW5jbHVkZXModmlldykpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiQ2Fubm90IGFkZCB2aWV3IHRoYXQg
aXMgYWxyZWFkeSBhIHN1YnZpZXcuIiwgdmlldyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBiZWZvcmVJbmRleCA9IHJlZmVyZW5jZVZpZXcgPyB0aGlz
Ll9zdWJ2aWV3cy5pbmRleE9mKHJlZmVyZW5jZVZpZXcpIDogdGhpcy5fc3Vidmlld3MubGVuZ3Ro
OworICAgICAgICBpZiAoYmVmb3JlSW5kZXggPT09IC0xKSB7CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChmYWxzZSwgIkNhbm5vdCBpbnNlcnQgdmlldy4gSW52YWxpZCByZWZlcmVuY2Ugdmll
dy4iLCByZWZlcmVuY2VWaWV3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuX3N1YnZpZXdzLmluc2VydEF0SW5kZXgodmlldywgYmVmb3JlSW5kZXgpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh2aWV3LmVsZW1lbnQsIHJlZmVyZW5j
ZVZpZXcgPyByZWZlcmVuY2VWaWV3LmVsZW1lbnQgOiBudWxsKTsKKyAgICB9CisKKyAgICByZW1v
dmVTdWJ2aWV3KHZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh2aWV3IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2VydCh2aWV3LmVs
ZW1lbnQucGFyZW50Tm9kZSA9PT0gdGhpcy5fZWxlbWVudCwgIlN1YnZpZXcgRE9NIGVsZW1lbnQg
bXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBwYXJlbnQgdmlldyBlbGVtZW50LiIpOworCisgICAgICAg
IGlmICghdGhpcy5fc3Vidmlld3MuaW5jbHVkZXModmlldykpIHsKKyAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGZhbHNlLCAiQ2Fubm90IHJlbW92ZSB2aWV3IHdoaWNoIGlzbid0IGEgc3Vidmll
dy4iLCB2aWV3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX3N1YnZpZXdzLnJlbW92ZSh2aWV3LCB0cnVlKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5y
ZW1vdmVDaGlsZCh2aWV3KTsKKyAgICB9CisKKyAgICByZXBsYWNlU3VidmlldyhvbGRWaWV3LCBu
ZXdWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2xkVmlldyAhPT0gbmV3Vmll
dywgIkNhbm5vdCByZXBsYWNlIHN1YnZpZXcgd2l0aCBpdHNlbGYuIik7CisKKyAgICAgICAgdGhp
cy5pbnNlcnRTdWJ2aWV3QmVmb3JlKG5ld1ZpZXcsIG9sZFZpZXcpOworICAgICAgICB0aGlzLnJl
bW92ZVN1YnZpZXcob2xkVmlldyk7CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0KCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAg
ICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRl
SWRlbnRpZmllcik7CisKKyAgICAgICAgdGhpcy5fcmVuZGVyU3VidHJlZSgpOworICAgIH0KKwor
ICAgIHVwZGF0ZUxheW91dElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2No
ZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworICAgIH0KKworICAgIG5lZWRzTGF5b3V0KCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fcmVuZGVyU3VidHJlZS5i
aW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHJlbmRlcigpCisg
ICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgICAgICAvLyBO
b3QgcmVzcG9uc2libGUgZm9yIHJlY3Vyc2luZyB0byBjaGlsZCB2aWV3cy4KKyAgICAgICAgLy8g
U2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHk7IHVzZSB1cGRhdGVMYXlvdXQoKSBpbnN0ZWFk
LgorCisgICAgICAgIC8vIFJldHVybiB2YWx1ZSBzaWduYWxzIHdoZXRoZXIgY2hpbGQgdmlld3Mg
c2hvdWxkIGFsc28gcmUtcmVuZGVyLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBQcml2YXRlCisKKyAgICBfcmVuZGVyU3VidHJlZSgpCisgICAgeworICAgICAgICB0aGlz
Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOworCisgICAgICAg
IGxldCBzaG91bGRSZW5kZXJDaGlsZHJlbiA9IHRoaXMucmVuZGVyKCk7CisgICAgICAgIGlmICgh
c2hvdWxkUmVuZGVyQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5fc3Vidmlld3MuZm9yRWFjaCgodmlldykgPT4geyB2aWV3Ll9yZW5kZXJTdWJ0cmVlKCk7IH0p
OworICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264262</attachid>
            <date>2015-10-28 15:59:58 -0700</date>
            <delta_ts>2015-10-30 18:05:42 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151028155909.patch</filename>
            <type>text/plain</type>
            <size>94901</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
ZWJkODk3Y2VkYTFjMzY3NzJjMTg0ZmY5NmYxZmQ4ODg5YThkOWM5Li5mNTliNGI4YzQ2N2ExNjA0
MTVlYjRkYjAzYTdlZWQ5Y2M3ZTU0MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNzIgQEAKIDIwMTUtMTAtMjggIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIHNvIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IG1heSBiZSBhc3NvY2lhdGVkIHdpdGggdGhl
IFZpZXcgb2JqZWN0LAorICAgICAgICByYXRoZXIgdGhhbiBkeW5hbWljYWxseSBjcmVhdGluZyBh
IG5ldyBlbGVtZW50LiBWaWV3IGFsc28gYWRkcyB0aGUgYF9fdmlld2AgcHJvcGVydHkgdG8KKyAg
ICAgICAgaXRzIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcg
b2YgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIHZpZXcgY2xhc3NlcyB0aGF0
IGhhdmUgYmVlbiByZWZhY3RvcmVkIGluIHRoaXMgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBsYXJn
ZWx5IG1lY2hhbmljYWwuCisgICAgICAgIER5bmFtaWNhbGx5IGNyZWF0ZWQgRE9NIGVsZW1lbnRz
IGFuZCByZWR1bmRhbnQgZWxlbWVudCBnZXR0ZXJzIHdlcmUgcmVtb3ZlZCwgdXBkYXRlTGF5b3V0
SWZOZWVkZWQKKyAgICAgICAgaGFzIGJlZW4gcmVwbGFjZWQgYnkgbmVlZHNMYXlvdXQgaW4gc29t
ZSBjYXNlcywgYW5kIGZvciB2aWV3cyB3aGljaCBkaWQgbm8gbGF5b3V0IG9mIHRoZWlyIG93biBi
dXQKKyAgICAgICAgb25seSB1cGRhdGVkIHN1YnZpZXdzLCB1cGRhdGVMYXlvdXQgaGFzIGJlZW4g
ZWxpbWluYXRlZCBlbnRpcmVseS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzOgorICAgICAgICBNb3ZlZCBUYWJCYXIgbGF5b3V0IHVwZGF0ZXMgb3V0IG9mIFRhYkJyb3dz
ZXIgYW5kIGludG8gTWFpbi5qcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVQcm9tcHQucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUucmVuZGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ2V0IGVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLmF1dG9TaXplQ29sdW1ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLmFwcGx5Q29sdW1uV2lkdGhzTWFwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQgY29tcG9uZW50cyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5pbnNlcnROYXZpZ2F0aW9uSXRlbSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUucmVtb3ZlTmF2aWdhdGlvbkl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLmdldCBtaW5pbXVtV2lk
dGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnJlbmRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21vdXNl
RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX21v
dXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBl
Ll9tb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlw
ZS5fY2FsY3VsYXRlTWluaW11bVdpZHRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRTb29uLnVwZGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29v
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5
cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuc2V0IGhpZGRlbik6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtUaW1lbGluZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1l
bGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5R
dWlja0NvbnNvbGUucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90
eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZVZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJC
YXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90
eXBlLmluc2VydFRhYkJhckl0ZW0ucmVtb3ZlU3R5bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5hbmltYXRlVGFicyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVUYWJCYXJJdGVtLnJlbW92
ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW1vdmVU
YWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmhhc05v
cm1hbFRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5yZW5kZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX3JlY29yZFRhYkJhckl0
ZW1TaXplc0FuZFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3Rv
dHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQ2xpY2spOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlVXApOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU5ld1RhYk1v
dXNlRW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRl
TGF5b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJh
ci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2VyLnBy
b3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFi
QnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUuc2V0IGFsbG93c1RpbWVSYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVkc01hcmtlckxheW91
dC51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBl
Ll9uZWVkc01hcmtlckxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0LnVwZGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5fcmVjYWxjdWxh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl91cGRh
dGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90
eXBlLl9oYW5kbGVNb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZU1vdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VE
b3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUuZmlsdGVyVXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5uZWVkc0xh
eW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRh
dGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5w
cm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnNldCBkaXNwbGF5TW9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuc2V0IHNpemVNb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5jdXN0b21VcGRhdGVMYXlvdXQpOgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZ2V0
IHN1YnZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5hZGRTdWJ2
aWV3KToKKyAgICAgICAgQXBwZW5kcyBhIHZpZXcgYXQgdGhlIGVuZCBvZiB0aGUgc3VidmlldyBs
aXN0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmluc2VydFN1YnZpZXdC
ZWZvcmUpOgorICAgICAgICBJbnNlcnQgYSB2aWV3IGludG8gc3VidmlldyBsaXN0IGJlZm9yZSBh
bm90aGVyIHN1YnZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVt
b3ZlU3Vidmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVwbGFj
ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxh
eW91dCk6CisgICAgICAgIE5vIGxvbmdlciBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgor
ICAgICAgICBGb3JjZXMgYSBsYXlvdXQgaWYgb25lIGhhcyBiZWVuIHNjaGVkdWxlZCwgb3RoZXJ3
aXNlIGRvZXMgbm90aGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5u
ZWVkc0xheW91dCk6CisgICAgICAgIFNjaGVkdWxlcyB0aGUgdmlldyBmb3IgcmVuZGVyaW5nLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIE92
ZXJyaWRkZW4gYnkgdmlld3MgdGhhdCBwZXJmb3JtIGxheW91dC4gUmV0dXJuIHZhbHVlIGNvbnRy
b2xzIHdoZXRoZXIKKyAgICAgICAgY2hpbGQgdmlld3MgYXJlIHJlbmRlcmVkLiBEZWZhdWx0IGJl
aGF2aW9yIGZvciB2aWV3cyB0aGF0IGRvbid0IGRlZmluZQorICAgICAgICBhIHJlbmRlciBtZXRo
b2QgaXMgdG8gcmVuZGVyIHN1YnZpZXdzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlLl9yZW5kZXJTdWJ0cmVlKToKKyAgICAgICAgTWFpbiBsYXlvdXQgZW50cnkgcG9pbnQu
IENhbGxlZCBieSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGJ5IHVwZGF0ZUxheW91dCB3aGVuIGZv
cmNpbmcKKyAgICAgICAgYSBzeW5jaHJvbm91cyBsYXlvdXQsIGFuZCBpdCBnZXRzIGNhbGxlZCBy
ZWN1cnNpdmVseSBkdXJpbmcgc3VidmlldyB0cmF2ZXJzYWwuCisKKzIwMTUtMTAtMjggIE1hdHQg
QmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJl
bmRlcmluZyBGcmFtZXMgcGllIGNoYXJ0IGRvZXMgbm90IHVwZGF0ZSBkdXJpbmcgaW5pdGlhbCBz
ZWxlY3Rpb24gb2YgYSB0aW1lbGluZSByYW5nZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjMwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCAxYzViMTVlMzE1ZmZkOGNkM2MxZTBk
ZDkzYjlmN2U0MjZlNWIxODg3Li5mZGUyOTE2YzM1Mzk0MTc5YzAxNjVlMTE2Njc0MDZkZDgyNjgw
MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzCkBAIC0xMjgyLDYgKzEyODIsNyBAQCBXZWJJbnNwZWN0b3IuX3dpbmRvd0JsdXJyZWQg
PSBmdW5jdGlvbihldmVudCkKIFdlYkluc3BlY3Rvci5fd2luZG93UmVzaXplZCA9IGZ1bmN0aW9u
KGV2ZW50KQogewogICAgIHRoaXMudG9vbGJhci51cGRhdGVMYXlvdXQoKTsKKyAgICB0aGlzLnRh
YkJhci51cGRhdGVMYXlvdXQoKTsKICAgICB0aGlzLl90YWJCcm93c2VyU2l6ZURpZENoYW5nZSgp
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CmluZGV4IGFjZTM3NWI2ZDg2ZWYzMzkwMGZiNDBhOTYyMDM0ZDYzZDE3ZWI0ZDcuLjEyZjU1OTk3
Zjk3NjIyY2IxOWZiOTgzMTRkODlhNTM4YjMyOGIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTMzNiw2ICszMzYsOCBAQAogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvVmlldy5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29uc29s
ZUNvbW1hbmRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29uc29s
ZU1lc3NhZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVu
dFZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKaW5kZXggODBmNDk0YmJmMDE0
ZTVhMmEzOWJmZmJjYTg2NDAyM2EyMThkNTMyMS4uNmVkZTU1M2Q2MmQzNWM2Mzg0MjI0ZmQzNmU3
NjBlZjM4Mzc3Zjk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCkBAIC0yMywxNiArMjMsMTUgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CitXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBt
aW1lVHlwZSwgZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVy
KGVsZW1lbnQpOwogCiAgICAgICAgIG1pbWVUeXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSku
dHlwZTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJj
b25zb2xlLXByb21wdCIsIFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NO
YW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtcHJvbXB0
IiwgV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwogCiAgICAg
ICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIApAQCAtNjYsMTEgKzY1LDYg
QEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJvbXB0IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVu
dCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBn
ZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwpAQCAt
MTI2LDExICsxMjAsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNv
bGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3IucmVmcmVzaCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLnJlZnJlc2goKTsKLSAgICB9Ci0KICAgICB1cGRhdGVDb21w
bGV0aW9ucyhjb21wbGV0aW9ucywgaW1wbGljaXRTdWZmaXgpCiAgICAgewogICAgICAgICB0aGlz
Ll9jb21wbGV0aW9uQ29udHJvbGxlci51cGRhdGVDb21wbGV0aW9ucyhjb21wbGV0aW9ucywgaW1w
bGljaXRTdWZmaXgpOwpAQCAtMTU4LDYgKzE0NywxMiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVBy
b21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIHJldHVybiAhIXRoaXMudGV4dDsKICAgICB9CiAKKyAgICByZW5kZXIoKQorICAgIHsK
KyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9oYW5kbGVUYWJLZXkoY29kZU1pcnJv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEJyb3dzZXIuanMKaW5kZXggYmU3YmUwMjZmODFmZmE4YWM4OGFlMTk5YzU1
ZTMwNGE0MTg5MDZjMi4uNzExMzRhYjZlODRhNjY2Y2MyYmQzOTRhNjM5OWYwM2ZmNDA5NjgyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEJyb3dzZXIuanMKQEAgLTIzLDI5ICsyMywyOCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nl
ciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGRlbGVnYXRlLCBk
aXNhYmxlQmFja0ZvcndhcmQpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBzdXBl
cihlbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjb250ZW50LWJyb3dzZXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImNvbnRlbnQtYnJvd3NlciIpOwogCiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRT
dWJ2aWV3KHRoaXMuX25hdmlnYXRpb25CYXIpOwogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKICAgICAg
ICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdl
LCB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQp
OworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVudFZpZXdDb250YWluZXIpOwog
CiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIo
dGhpcyk7CiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRTaG93LCB0aGlzLl9maW5kQmFubmVyRGlkU2hvdywg
dGhpcyk7CiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRIaWRlLCB0aGlzLl9maW5kQmFubmVyRGlkSGlkZSwg
dGhpcyk7CiAKICAgICAgICAgaWYgKCFkaXNhYmxlQmFja0ZvcndhcmQpIHsKLSAgICAgICAgICAg
IHRoaXMuX2JhY2tLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNv
bnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdCwgdGhpcy5fYmFja0J1dHRvbkNs
aWNrZWQuYmluZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLl9mb3J3
YXJkS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sIHwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlJpZ2h0LCB0aGlzLl9mb3J3YXJkQnV0dG9uQ2xpY2tl
ZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2JhY2tLZXli
b2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdCwgdGhpcy5fYmFja0J1dHRvbkNsaWNrZWQuYmluZCh0aGlz
KSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2ZvcndhcmRLZXlib2FyZFNob3J0
Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5LZXkuUmlnaHQsIHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIHRo
aXMuZWxlbWVudCk7CiAKICAgICAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImJhY2siLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkJhY2sgKCVzKSIpLmZvcm1hdCh0aGlzLl9iYWNrS2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSksICJJbWFnZXMvQmFja0ZvcndhcmRBcnJvd3Muc3ZnI2JhY2stYXJy
b3ctbWFzayIsIDgsIDEzKTsKICAgICAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9u
SXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5F
dmVudC5DbGlja2VkLCB0aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CkBAIC04MSwxMSAr
ODAsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3Nl
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0
IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQot
CiAgICAgZ2V0IG5hdmlnYXRpb25CYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25h
dmlnYXRpb25CYXI7CkBAIC0xMzMsMTIgKzEyNyw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3RzOwogICAgIH0KIAotICAgIHVwZGF0ZUxh
eW91dCgpCi0gICAgewotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgp
OwotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQoKTsKLSAg
ICB9Ci0KICAgICBzaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCwgY29va2llLCBleHRyYUFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIHZhciBjb250
ZW50VmlldyA9IHRoaXMuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCwgZmFsc2UsIGV4dHJhQXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggYTdj
YjhkM2ZhZDgxMzU3OGJkMzE4NTdlYTM2MTM5NDQ4MjEyZTJjNy4uMTgwMjJkMzdlM2Q5ODVkY2U2
MzQ0MmY0NWFiYmY3OTJkNWQ2MGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTIzLDcgKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVj
dCwgZXh0cmFBcmd1bWVudHMpCiAgICAgewpAQCAtMzQsOCArMzQsNyBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKIAogICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0
OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXciKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtdmlldyIpOwogCiAg
ICAgICAgIHRoaXMuX3BhcmVudENvbnRhaW5lciA9IG51bGw7CiAgICAgfQpAQCAtMTk1LDExICsx
OTQsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIFtdOwogICAgIH0KIAotICAg
IGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAg
IH0KLQogICAgIGdldCBwYXJlbnRDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3BhcmVudENvbnRhaW5lcjsKQEAgLTI0NSwxMSArMjM5LDYgQEAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAg
ewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0KLQogICAgIHNo
b3duKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IDM2ODU4OGQxMDJhMTU2YWE4ZjBjNTIx
MjgxMjZmOWU1NjdmOWRhMzAuLjM5YTIwYTIyYWUyZDEwZGNkOGM1MGY4MGMyMzM0YTcyZDRiMDM3
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC0yMywxNCArMjMsMTMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0NvbnRhaW5lciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcK
IHsKLSAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAg
ICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiY29udGVudC12aWV3LWNvbnRhaW5lciIpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgiY29udGVudC12aWV3LWNvbnRhaW5lciIpOwogCiAgICAgICAgIHRoaXMu
X2JhY2tGb3J3YXJkTGlzdCA9IFtdOwogICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSAtMTsK
QEAgLTM4LDExICszNyw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNs
YXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAvLyBQdWJs
aWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVt
ZW50OwotICAgIH0KLQogICAgIGdldCBjdXJyZW50SW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2N1cnJlbnRJbmRleDsKQEAgLTY3LDEzICs2MSw2IEBAIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMg
V2ViSW5zcGVjCiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhpcy5fY3Vy
cmVudEluZGV4XTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAg
dmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwotICAgICAg
ICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQotICAgICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3
LnVwZGF0ZUxheW91dCgpOwotICAgIH0KLQogICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZywgZXh0cmFBcmd1bWVudHMpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CkBAIC00MjYs
NiArNDEzLDE1IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENv
bnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHRoaXMuX2hpZGVF
bnRyeShjdXJyZW50RW50cnkpOwogICAgIH0KIAorICAgIHJlbmRlcigpCisgICAgeworICAgICAg
ICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CisgICAg
ICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcpCisgICAgICAgICAgICBjdXJyZW50Q29udGVudFZp
ZXcudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAg
Ly8gUHJpdmF0ZQogCiAgICAgX2FkZENvbnRlbnRWaWV3RWxlbWVudChjb250ZW50VmlldykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFH
cmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdy
aWQuanMKaW5kZXggMTlmYzQ1ZmIyYWQxOWFjMjQzNGRlNmI0MWIxMzFiNWQzNGRhN2FhMS4uMDQ2
MjUxYzEyZjQ0Yjc5OGUzMzFmOThkZTg3ZjQ3NWI0MDEzMDVlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlk
ID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0
b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7
CiAgICAgY29uc3RydWN0b3IoY29sdW1uc0RhdGEsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJh
Y2ssIHByZWZlcnJlZENvbHVtbk9yZGVyKQogICAgIHsKQEAgLTQ4LDcgKzQ4LDYgQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIHRoaXMucmVzaXplcnMgPSBbXTsKICAgICAgICAgdGhpcy5fY29sdW1uV2lk
dGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAotICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9
ICJkYXRhLWdyaWQiOwogICAgICAgICB0aGlzLmVsZW1lbnQudGFiSW5kZXggPSAwOwogICAgICAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24u
YmluZCh0aGlzKSwgZmFsc2UpOwpAQCAtNDAwLDcgKzM5OSw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICBmb3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1uXSBvZiB0aGlzLmNvbHVtbnMpCiAgICAgICAg
ICAgICBjb2x1bW5bImVsZW1lbnQiXS5zdHlsZS53aWR0aCA9IHdpZHRoc1tpZGVudGlmaWVyXSAr
ICIlIjsKICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwog
ICAgIH0KIAogICAgIGluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5EYXRhLCBp
bnNlcnRpb25JbmRleCkKQEAgLTU1Miw3ICs1NTEsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQg
PSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAvLwogICAg
IC8vIElmIHRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBhZnRlciB0aGUgRGF0YUdyaWQgaXMg
YXR0YWNoZWQgdG8gaXRzCiAgICAgLy8gcGFyZW50IGVsZW1lbnQsIHRoZW4gdGhlIERhdGFHcmlk
J3MgY29sdW1ucyB3aWxsIG5vdCBiZSByZXNpemFibGUuCi0gICAgdXBkYXRlTGF5b3V0KCkKKyAg
ICByZW5kZXIoKQogICAgIHsKICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNl
dGVzIGlmIHdlJ3JlIG5vdCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQgdHJlZSB5ZXQuCiAgICAg
ICAgIGlmICghdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgJiYgdGhpcy5lbGVtZW50Lm9m
ZnNldFdpZHRoKSB7CkBAIC01ODEsNiArNTgwLDggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0g
Y2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgdGhp
cy5fcG9zaXRpb25SZXNpemVyRWxlbWVudHMoKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LkRpZExheW91dCk7CisKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgY29sdW1uV2lkdGhzTWFwKCkKQEAgLTYw
Miw3ICs2MDMsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVt
bkdyb3VwRWxlbWVudC5jaGlsZHJlbltvcmRpbmFsXS5zdHlsZS53aWR0aCA9IHdpZHRoOwogICAg
ICAgICB9CiAKLSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgdGhpcy5uZWVk
c0xheW91dCgpOwogICAgIH0KIAogICAgIF9pc0NvbHVtblZpc2libGUoY29sdW1uSWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcwpp
bmRleCAyZGJhMjBiYWRlNGVjNWZhZTM5YTQwMjhjMmY3N2NhZjVlYTAxMTg4Li44YWIyMWU0N2Rk
YjdiYzIzMDRhMGJmNzk3NmMxZmYwOGZhZjI5NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0
ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGll
cmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzCkBAIC02MSw3ICs2MSw3IEBAIFdlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBIaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0CiAKICAgICAgICAgLy8gVXBkYXRlIGxheW91dCBmb3IgdGhlIHNvIG90
aGVyIGl0ZW1zIGNhbiBhZGp1c3QgdG8gdGhlIGV4dHJhIHNwYWNlIChvciBsYWNrIHRoZXJlb2Yp
IHRvby4KICAgICAgICAgaWYgKHRoaXMucGFyZW50TmF2aWdhdGlvbkJhcikKLSAgICAgICAgICAg
IHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAg
ICB0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICBn
ZXQgbGFzdENvbXBvbmVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMKaW5kZXggZDQ2
ZjEzZDA2MDg2OGVmNzNkOTcyNDhhMjFiY2M4ODI3ODg1ODUyNC4uYzMxNTY3NGZjOWNkMzEwMDk4
OWI2ZmYwZDk1ZDE2ODI2ZDgxMmJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcwpA
QCAtODYsNyArODYsNyBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gY2xhc3Mg
TGF5b3V0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0aGlzLm5h
dmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWxlYXZlIiwgdGhpcy5fbW91c2VMZWF2ZVRyZWVPdXRsaW5lLmJpbmQodGhpcykpOwogCiAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYXlvdXQiKTsKLSAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICB0aGlz
LmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9s
YXlvdXRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIApAQCAtMTMzLDE1ICsxMzMsNiBAQCBX
ZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gY2xhc3MgTGF5b3V0VGltZWxpbmVWaWV3
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGlnaHQoKTsK
ICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgc3VwZXIudXBkYXRl
TGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAg
ICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfQotCiAgICAgbWF0Y2hU
cmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkLnRyZWVFbGVtZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmls
dGVycyh0cmVlRWxlbWVudCk7CkBAIC0xODUsNiArMTc2LDEyIEBAIFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuCiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0KIAorICAgIHJl
bmRlcigpCisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3Byb2Nl
c3NQZW5kaW5nUmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwppbmRleCBkZTg1Njk1ZTYxY2Rj
ZDc0Nzg4N2NiNzk5NTg1ZjhhZTA4YWNhNGY1Li41MGQzYWU2YWY0ZDkwNjMwYjRkNWI3ZDViOWEw
Njk2OWJjNWNjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKQEAgLTIzLDI2ICsyMywyNiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCwgbmF2
aWdhdGlvbkl0ZW1zLCByb2xlLCBsYWJlbCkKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAg
ICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCAibmF2aWdhdGlv
bi1iYXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY29uc3RydWN0b3IuU3R5bGVDbGFzc05hbWUg
fHwgIm5hdmlnYXRpb24tYmFyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC50YWJJbmRleCA9IDA7
CiAKICAgICAgICAgaWYgKHJvbGUpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJp
YnV0ZSgicm9sZSIsIHJvbGUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0
ZSgicm9sZSIsIHJvbGUpOwogICAgICAgICBpZiAobGFiZWwpCi0gICAgICAgICAgICB0aGlzLl9l
bGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CiAKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQo
dGhpcyksIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJi
bHVyIiwgdGhpcy5fYmx1ci5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0aGlzKSwg
ZmFsc2UpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX21vdXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlz
Ll9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21v
dXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKKyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRo
ID0gTmFOOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMgPSBbXTsKIAogICAgICAgICBp
ZiAobmF2aWdhdGlvbkl0ZW1zKSB7CkBAIC03NSw3ICs3NSw3IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnNwbGljZShpbmRleCwgMCwgbmF2aWdh
dGlvbkl0ZW0pOwogCiAgICAgICAgIGlmICghcGFyZW50RWxlbWVudCkKLSAgICAgICAgICAgIHBh
cmVudEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50OworICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9
IHRoaXMuZWxlbWVudDsKIAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXNbaW5kZXggKyAxXTsKICAgICAgICAgdmFyIG5leHRTaWJsaW5nRWxlbWVudCA9IG5l
eHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IG51bGw7CkBAIC04NCw5ICs4NCw5IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICBwYXJlbnRFbGVtZW50Lmluc2VydEJlZm9y
ZShuYXZpZ2F0aW9uSXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCi0gICAgICAg
IHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbiA9IHRydWU7CisgICAgICAgIHRo
aXMuX21pbmltdW1XaWR0aCA9IE5hTjsKIAotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24o
KTsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0
aW9uSXRlbTsKICAgICB9CkBAIC0xMDUsNzIgKzEwNSwxMyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcy5yZW1vdmUobmF2aWdhdGlvbkl0ZW0pOwog
ICAgICAgICBuYXZpZ2F0aW9uSXRlbS5lbGVtZW50LnJlbW92ZSgpOwogCi0gICAgICAgIHRoaXMu
X21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbiA9IHRydWU7CisgICAgICAgIHRoaXMuX21p
bmltdW1XaWR0aCA9IE5hTjsKIAotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKKyAg
ICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0aW9uSXRl
bTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gdHJ1ZTsKLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGUo
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0g
dW5kZWZpbmVkOwotCi0gICAgICAgICAgICBpZiAodGhpcy5fbmVlZHNMYXlvdXQpCi0gICAgICAg
ICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMu
X3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlLmJp
bmQodGhpcykpOwotICAgIH0KLQotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikgewotICAgICAgICAgICAgY2FuY2VsQW5p
bWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0
aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSBmYWxzZTsKLQotICAgICAgICBpZiAodHlwZW9mIHRo
aXMuY3VzdG9tVXBkYXRlTGF5b3V0ID09PSAiZnVuY3Rpb24iKSB7Ci0gICAgICAgICAgICB0aGlz
LmN1c3RvbVVwZGF0ZUxheW91dCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBpZiB0
aGUgaXRlbXMgY2FuIGZpdCBhdCBmdWxsIHdpZHRoLgotICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVD
bGFzc05hbWUpOwotCi0gICAgICAgIC8vIFRlbGwgZWFjaCBuYXZpZ2F0aW9uIGl0ZW0gdG8gdXBk
YXRlIHRvIGZ1bGwgd2lkdGggaWYgbmVlZGVkLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX25h
dmlnYXRpb25JdGVtc1tpXS51cGRhdGVMYXlvdXQodHJ1ZSk7Ci0KLSAgICAgICAgdmFyIHRvdGFs
SXRlbVdpZHRoID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIC8vIFNraXAgZmxleGlibGUgc3Bh
Y2UgaXRlbXMgc2luY2UgdGhleSBjYW4gdGFrZSB1cCBubyBzcGFjZSBhdCB0aGUgbWluaW11bSB3
aWR0aC4KLSAgICAgICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbaV0gaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCArPSB0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbaV0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgYmFyV2lkdGggPSB0aGlzLl9lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKLQotICAg
ICAgICAvLyBBZGQgdGhlIGNvbGxhcHNlZCBjbGFzcyBiYWNrIGlmIHRoZSBpdGVtcyBhcmUgd2lk
ZXIgdGhhbiB0aGUgYmFyLgotICAgICAgICBpZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgLy8gR2l2ZSBl
YWNoIG5hdmlnYXRpb24gaXRlbSB0aGUgb3Bwb3J0dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4K
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0
KCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gfHwgbnVsbDsKQEAgLTIw
NiwxOCArMTQ3LDEwIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdh
dGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMu
X25hdmlnYXRpb25JdGVtczsKICAgICB9CiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgbWluaW11bVdpZHRo
KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9taW5pbXVtV2lkdGggPT09IHVuZGVmaW5lZCB8
fCB0aGlzLl9taW5pbXVtV2lkdGhOZWVkc1JlY2FsY3VsYXRpb24pIHsKKyAgICAgICAgaWYgKGlz
TmFOKHRoaXMuX21pbmltdW1XaWR0aCkpCiAgICAgICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGgg
PSB0aGlzLl9jYWxjdWxhdGVNaW5pbXVtV2lkdGgoKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9taW5pbXVtV2lkdGhOZWVkc1JlY2FsY3VsYXRpb247Ci0gICAgICAgIH0KLQogICAgICAgICBy
ZXR1cm4gdGhpcy5fbWluaW11bVdpZHRoOwogICAgIH0KIApAQCAtMjI3LDYgKzE2MCw0MiBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBy
ZW5kZXIoKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbVVwZGF0ZUxheW91
dCA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgdGhpcy5jdXN0b21VcGRhdGVMYXlvdXQo
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJl
bW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIHRvIHRlc3QgaWYgdGhlIGl0ZW1zIGNhbiBm
aXQgYXQgZnVsbCB3aWR0aC4KKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworCisg
ICAgICAgIC8vIFRlbGwgZWFjaCBuYXZpZ2F0aW9uIGl0ZW0gdG8gdXBkYXRlIHRvIGZ1bGwgd2lk
dGggaWYgbmVlZGVkLgorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRp
b25JdGVtcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtc1tp
XS51cGRhdGVMYXlvdXQodHJ1ZSk7CisKKyAgICAgICAgdmFyIHRvdGFsSXRlbVdpZHRoID0gMDsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIC8vIFNraXAgZmxleGlibGUgc3BhY2UgaXRlbXMgc2luY2Ug
dGhleSBjYW4gdGFrZSB1cCBubyBzcGFjZSBhdCB0aGUgbWluaW11bSB3aWR0aC4KKyAgICAgICAg
ICAgIGlmICh0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbaV0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
RmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCArPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbaV0u
ZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBiYXJX
aWR0aCA9IHRoaXMuZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisKKyAgICAgICAgLy8gQWRkIHRo
ZSBjb2xsYXBzZWQgY2xhc3MgYmFjayBpZiB0aGUgaXRlbXMgYXJlIHdpZGVyIHRoYW4gdGhlIGJh
ci4KKyAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpCisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRpb24g
aXRlbSB0aGUgb3Bwb3J0dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2ZpbmROYXZpZ2F0
aW9uSXRlbShuYXZpZ2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCkBAIC0yNTksNyArMjI4
LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAvLyBSZW1vdmUgdGhlIHRhYkluZGV4
IHNvIGNsaWNraW5nIHRoZSBuYXZpZ2F0aW9uIGJhciBkb2VzIG5vdCBnaXZlIGl0IGZvY3VzLgog
ICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIHRhYkluZGV4IGlmIGFscmVhZHkgZm9jdXNlZCBmcm9t
IGtleWJvYXJkIG5hdmlnYXRpb24uIFRoaXMgbWF0Y2hlcyBYY29kZS4KICAgICAgICAgaWYgKCF0
aGlzLl9mb2N1c2VkKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUo
InRhYmluZGV4Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJ0
YWJpbmRleCIpOwogCiAgICAgICAgIHZhciBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRp
b25JdGVtLlN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRl
bUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0pCkBAIC0yOTcsMTUgKzI2NiwxNSBAQCBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCiAgICAgICAgIHZh
ciBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNz
KFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lKTsK
LSAgICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0g
fHwgIXRoaXMuX2VsZW1lbnQuY29udGFpbnMoaXRlbUVsZW1lbnQpKSB7CisgICAgICAgIGlmICgh
aXRlbUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtIHx8ICF0aGlzLmVsZW1l
bnQuY29udGFpbnMoaXRlbUVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbGVt
ZW50IHRoYXQgaXMgYXQgdGhlIFggcG9zaXRpb24gb2YgdGhlIG1vdXNlLCBldmVuIHdoZW4gdGhl
IG1vdXNlIGlzIG5vIGxvbmdlcgogICAgICAgICAgICAgLy8gdmVydGljYWxseSBpbiB0aGUgbmF2
aWdhdGlvbiBiYXIuCi0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRG
cm9tUG9pbnQoZXZlbnQucGFnZVgsIHRoaXMuX2VsZW1lbnQudG90YWxPZmZzZXRUb3AgKyAodGhp
cy5fZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKSk7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQucGFnZVgsIHRoaXMuZWxlbWVudC50b3Rh
bE9mZnNldFRvcCArICh0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMikpOwogICAgICAgICAg
ICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
aXRlbUVsZW1lbnQgPSBlbGVtZW50LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5z
cGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUpOwotICAgICAg
ICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0gfHwg
IXRoaXMuX2VsZW1lbnQuY29udGFpbnMoaXRlbUVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKCFp
dGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMuZWxlbWVu
dC5jb250YWlucyhpdGVtRWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTMzNiw3ICszMDUsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNs
YXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lcjsKIAogICAgICAgICAvLyBSZXN0b3JlIHRo
ZSB0YWJJbmRleCBzbyB0aGUgbmF2aWdhdGlvbiBiYXIgY2FuIGJlIGluIHRoZSBrZXlib2FyZCB0
YWIgbG9vcC4KLSAgICAgICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRo
aXMuZWxlbWVudC50YWJJbmRleCA9IDA7CiAKICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIHNlbGVj
dGVkIGV2ZW50IGhlcmUgc2luY2UgdGhlIHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gc2V0dGVyIHN1
cnByZXNzZXMgaXQKICAgICAgICAgLy8gd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24gdG8gcHJldmVu
dCBzZW5kaW5nIGl0IHdoaWxlIHNjcnViYmluZyB0aGUgYmFyLgpAQCAtMzkzLDExICszNjIsMTEg
QEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpCiAg
ICAgewotICAgICAgICB2YXIgd2FzQ29sbGFwc2VkID0gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOworICAgICAgICBjb25zdCB3YXNDb2xsYXBzZWQgPSB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NO
YW1lKTsKIAogICAgICAgICAvLyBBZGQgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byBjYWxj
dWxhdGUgdGhlIHdpZHRoIG9mIHRoZSBpdGVtcyB3aGVuIHRoZXkgYXJlIGNvbGxhcHNlZC4KICAg
ICAgICAgaWYgKCF3YXNDb2xsYXBzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHZhciB0
b3RhbEl0ZW1XaWR0aCA9IDA7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2
aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKSB7CkBAIC00MDksNyArMzc4LDcgQEAgV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNz
IGlmIHdlIHdlcmUgbm90IGNvbGxhcHNlZCBiZWZvcmUuCiAgICAgICAgIGlmICghd2FzQ29sbGFw
c2VkKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
LkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICByZXR1cm4gdG90YWxJdGVtV2lk
dGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCBjYjc1NTQzYzFmYTU3ZDAzYjAy
MDUxMjUyODAyMDJlNWIzYmRjNTg4Li4xZDc2MTE1NGUzYjcwZDU4YjIyOWE2MzFmY2M4YjgzYmQw
M2IwMDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtODAsNyArODAsNyBAQCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJo
aWRkZW4iLCBmbGFnKTsKIAogICAgICAgICBpZiAodGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhcikK
LSAgICAgICAgICAgIHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0U29vbigp
OworICAgICAgICAgICAgdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91dCgpOwog
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCmlu
ZGV4IDJiYjQwMzZiZDIxZWFkNWUzOWYwY2IzMTEyZjhmNjU3ODVjZWIzOWIuLmIxMWEyYTM5OWYy
NzRlM2IzZWRhN2FjMGY5YzdhMTFiZDUyNTYzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5l
Vmlldy5qcwpAQCAtOTMsNyArOTMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmll
dyA9IGNsYXNzIE5ldHdvcmtUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9y
ZGVyLkFzY2VuZGluZzsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0
d29yayIpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQu
ZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAg
ICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZl
bnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsK
IApAQCAtMTI5LDE1ICsxMjksNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldyA9
IGNsYXNzIE5ldHdvcmtUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAg
IHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCk7Ci0gICAgfQotCiAgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRy
ZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkLnRyZWVFbGVt
ZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVycyh0cmVlRWxlbWVudCk7CkBAIC0xODcsNiArMTc4
LDEyIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1Rp
bWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3RvCiAgICAgICAgIHN1cGVyLnRyZWVFbGVtZW50
U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKTsKICAgICB9CiAKKyAgICByZW5k
ZXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9wcm9jZXNz
UGVuZGluZ1JlY29yZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcwppbmRleCAy
ZmJkNTE5MDhiNTU2NDM4MWI2NWYyYzI1MTU5MzhiOTRjOGMzMTllLi4yZGIzZmQ4MmNmNjQ2N2Yy
MzZjOTM1YTVhYmVjZDAzM2VlZjQ5NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmll
dy5qcwpAQCAtNDEsMTMgKzQxLDE0IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmll
dyA9IGNsYXNzIE92ZXJ2aWV3VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAg
ICAgdGhpcy5fdGltZWxpbmVSdWxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcjsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5hbGxvd3NDbGlwcGVkTGFiZWxzID0gdHJ1ZTsK
KyAgICAgICAgLy8gRklYTUU6IG9uY2UgVGltZWxpbmVSdWxlciBpbmhlcml0cyBmcm9tIFZpZXcg
dGhpcyBjYW4gYmUgY2hhbmdlZCB0bzogYHRoaXMuYWRkU3Vidmlldyh0aGlzLl90aW1lbGluZVJ1
bGVyKWAuCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZVJ1
bGVyLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyID0gbmV3IFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hcmtlcigwLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIu
VHlwZS5DdXJyZW50VGltZSk7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWRkTWFya2Vy
KHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyKTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgib3ZlcnZpZXciKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0
YUdyaWQpOwogCiAgICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZSA9IHJlY29yZGluZy50aW1l
bGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwogICAg
ICAgICB0aGlzLl9uZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFk
ZGVkLCB0aGlzKTsKQEAgLTg3LDM1ICs4OCw2IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVs
aW5lVmlldyA9IGNsYXNzIE92ZXJ2aWV3VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjCiAg
ICAgICAgIHRoaXMuX3JlY29yZGluZy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBzdXBlci51
cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB2YXIgb2xkWmVyb1RpbWUgPSB0aGlzLl90aW1lbGlu
ZVJ1bGVyLnplcm9UaW1lOwotICAgICAgICB2YXIgb2xkU3RhcnRUaW1lID0gdGhpcy5fdGltZWxp
bmVSdWxlci5zdGFydFRpbWU7Ci0gICAgICAgIHZhciBvbGRFbmRUaW1lID0gdGhpcy5fdGltZWxp
bmVSdWxlci5lbmRUaW1lOwotICAgICAgICB2YXIgb2xkQ3VycmVudFRpbWUgPSB0aGlzLl9jdXJy
ZW50VGltZU1hcmtlci50aW1lOwotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1Rp
bWUgPSB0aGlzLnplcm9UaW1lOwotICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGlt
ZSA9IHRoaXMuc3RhcnRUaW1lOwotICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWUg
PSB0aGlzLmVuZFRpbWU7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWUgPSB0
aGlzLmN1cnJlbnRUaW1lOwotCi0gICAgICAgIC8vIFRoZSBUaW1lbGluZURhdGFHcmlkTm9kZSBn
cmFwaHMgYXJlIHBvc2l0aW9uZWQgd2l0aCBwZXJjZW50YWdlcywgc28gdGhleSBhdXRvIHJlc2l6
ZSB3aXRoIHRoZSB2aWV3LgotICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gcmVmcmVzaCB0aGUg
Z3JhcGhzIHdoZW4gdGhlIGFueSBvZiB0aGUgdGltZXMgY2hhbmdlLgotICAgICAgICBpZiAodGhp
cy56ZXJvVGltZSAhPT0gb2xkWmVyb1RpbWUgfHwgdGhpcy5zdGFydFRpbWUgIT09IG9sZFN0YXJ0
VGltZSB8fCB0aGlzLmVuZFRpbWUgIT09IG9sZEVuZFRpbWUgfHwgdGhpcy5jdXJyZW50VGltZSAh
PT0gb2xkQ3VycmVudFRpbWUpIHsKLSAgICAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlz
Ll9kYXRhR3JpZC5jaGlsZHJlblswXTsKLSAgICAgICAgICAgIHdoaWxlIChkYXRhR3JpZE5vZGUp
IHsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUucmVmcmVzaEdyYXBoKCk7Ci0gICAgICAg
ICAgICAgICAgZGF0YUdyaWROb2RlID0gZGF0YUdyaWROb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1
ZSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlz
Ll90aW1lbGluZVJ1bGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQ
ZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzKCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGlvblBh
dGhDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9k
YXRhR3JpZC5zZWxlY3RlZE5vZGU7CkBAIC0xODYsNiArMTU4LDM2IEBAIFdlYkluc3BlY3Rvci5P
dmVydmlld1RpbWVsaW5lVmlldyA9IGNsYXNzIE92ZXJ2aWV3VGltZWxpbmVWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNv
dXJjZUNvZGVMb2NhdGlvbih0cmVlRWxlbWVudC5zb3VyY2VDb2RlVGltZWxpbmUuc291cmNlQ29k
ZUxvY2F0aW9uKTsKICAgICB9CiAKKyAgICByZW5kZXIoKQorICAgIHsKKyAgICAgICAgdmFyIG9s
ZFplcm9UaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci56ZXJvVGltZTsKKyAgICAgICAgdmFyIG9s
ZFN0YXJ0VGltZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuc3RhcnRUaW1lOworICAgICAgICB2YXIg
b2xkRW5kVGltZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuZW5kVGltZTsKKyAgICAgICAgdmFyIG9s
ZEN1cnJlbnRUaW1lID0gdGhpcy5fY3VycmVudFRpbWVNYXJrZXIudGltZTsKKworICAgICAgICB0
aGlzLl90aW1lbGluZVJ1bGVyLnplcm9UaW1lID0gdGhpcy56ZXJvVGltZTsKKyAgICAgICAgdGhp
cy5fdGltZWxpbmVSdWxlci5zdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKKyAgICAgICAgdGhp
cy5fdGltZWxpbmVSdWxlci5lbmRUaW1lID0gdGhpcy5lbmRUaW1lOworICAgICAgICB0aGlzLl9j
dXJyZW50VGltZU1hcmtlci50aW1lID0gdGhpcy5jdXJyZW50VGltZTsKKworICAgICAgICAvLyBU
aGUgVGltZWxpbmVEYXRhR3JpZE5vZGUgZ3JhcGhzIGFyZSBwb3NpdGlvbmVkIHdpdGggcGVyY2Vu
dGFnZXMsIHNvIHRoZXkgYXV0byByZXNpemUgd2l0aCB0aGUgdmlldy4KKyAgICAgICAgLy8gV2Ug
b25seSBuZWVkIHRvIHJlZnJlc2ggdGhlIGdyYXBocyB3aGVuIHRoZSBhbnkgb2YgdGhlIHRpbWVz
IGNoYW5nZS4KKyAgICAgICAgaWYgKHRoaXMuemVyb1RpbWUgIT09IG9sZFplcm9UaW1lIHx8IHRo
aXMuc3RhcnRUaW1lICE9PSBvbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSBvbGRFbmRU
aW1lIHx8IHRoaXMuY3VycmVudFRpbWUgIT09IG9sZEN1cnJlbnRUaW1lKSB7CisgICAgICAgICAg
ICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5bMF07CisgICAgICAg
ICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7CisgICAgICAgICAgICAgICAgZGF0YUdyaWROb2Rl
LnJlZnJlc2hHcmFwaCgpOworICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlk
Tm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIG51bGwsIHRydWUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IG9uY2UgVGltZWxpbmVSdWxlciBpbmhlcml0
cyBmcm9tIFZpZXcgdGhpcyBjYW4gYmUgcmVtb3ZlZC4KKyAgICAgICAgdGhpcy5fdGltZWxpbmVS
dWxlci51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlcHJl
c2VudGVkT2JqZWN0cygpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8v
IFByaXZhdGUKIAogICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlEZXRhaWxzKGEsIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0Nv
bnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlj
a0NvbnNvbGUuanMKaW5kZXggYzRhZDUyMDI3ODdmMTNjYjI0NTEwOGM4ZTZiNTFjMWUzODQ2ZmNj
My4uYzI1Mzg5MmNlZGEyYWU4MTY5MWQ0NTBiMDRkYTVjM2I5YWM3M2YxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29u
c29sZS5qcwpAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29u
c29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNv
bGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAg
IGNvbnN0cnVjdG9yKGVsZW1lbnQpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBz
dXBlcihlbGVtZW50KTsKIAogICAgICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZvY3VzLmJpbmQo
dGhpcykpOwogCkBAIC0zOCwxMiArMzgsMTEgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9
IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
dGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsKICAgICAgICAg
dGhpcy5fZnJhbWVJZGVudGlmaWVyVG9FeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudE1hcCA9
IHt9OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1
aWNrLWNvbnNvbGUiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1aWNr
LWNvbnNvbGUiKTsKIAogICAgICAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
c29sZVByb21wdChudWxsLCAidGV4dC9qYXZhc2NyaXB0Iik7CiAgICAgICAgIHRoaXMucHJvbXB0
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGV4dC1wcm9tcHQiKTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLnByb21wdC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRT
dWJ2aWV3KHRoaXMucHJvbXB0KTsKIAogICAgICAgICAvLyBGSVhNRTogQ29kZU1pcnJvciA0IGhh
cyBhIGRlZmF1bHQgIkVzYyIga2V5IGhhbmRsZXIgdGhhdCBhbHdheXMgcHJldmVudHMgZGVmYXVs
dC4KICAgICAgICAgLy8gT3VyIGtleWJvYXJkIHNob3J0Y3V0IGFib3ZlIHdpbGwgcmVzcGVjdCB0
aGUgZGVmYXVsdCBwcmV2ZW50ZWQgYW5kIGlnbm9yZSB0aGUgZXZlbnQKQEAgLTU1LDcgKzU0LDcg
QEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5wcm9tcHQuc2hvd24oKTsKIAogICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVO
YXZpZ2F0aW9uQmFyOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25h
dmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9uYXZp
Z2F0aW9uQmFyKTsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW07CiAgICAg
ICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3Rvckl0ZW0uc2hvd1NlbGVjdG9yQXJyb3dz
ID0gdHJ1ZTsKQEAgLTc0LDExICs3Myw2IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBj
bGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0KLQogICAgIGdldCBuYXZpZ2F0aW9uQmFyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQmFyOwpAQCAtODksMTMgKzgzLDYgQEAgV2ViSW5zcGVj
dG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBh
dGhDb21wb25lbnQuX2V4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOwogICAgIH0KIAotICAgIHVw
ZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICAvLyBBIGhhcmQgbWF4aW11bSBzaXplIG9mIDMz
JSBvZiB0aGUgd2luZG93LgotICAgICAgICB2YXIgbWF4aW11bUFsbG93ZWRIZWlnaHQgPSBNYXRo
LnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOwotICAgICAgICB0aGlzLnByb21wdC5l
bGVtZW50LnN0eWxlLm1heEhlaWdodCA9IG1heGltdW1BbGxvd2VkSGVpZ2h0ICsgInB4IjsKLSAg
ICB9Ci0KICAgICBjb25zb2xlTG9nVmlzaWJpbGl0eUNoYW5nZWQodmlzaWJsZSkKICAgICB7CiAg
ICAgICAgIGlmICh2aXNpYmxlID09PSB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFtZSkpCkBAIC0xMDYsNiAr
OTMsMTcgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5FdmVudC5EaWRSZXNpemUpOwogICAg
IH0KIAorICAgIC8vIFByb3RlY3RlZAorCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIC8v
IEEgaGFyZCBtYXhpbXVtIHNpemUgb2YgMzMlIG9mIHRoZSB3aW5kb3cuCisgICAgICAgIGxldCBt
YXhpbXVtQWxsb3dlZEhlaWdodCA9IE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0ICogMC4z
Myk7CisgICAgICAgIHRoaXMucHJvbXB0LmVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gbWF4aW11
bUFsbG93ZWRIZWlnaHQgKyAicHgiOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIC8vIFByaXZhdGUKIAogICAgIF9leGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHNUb0Rp
c3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcwppbmRl
eCBjOWY5N2ViMGJiNzZmYzFhYTQ5NDYzM2E2ZTUzODZkNzZkOTdhYzdlLi5jMTBhOTA3Yjc2M2Zm
M2M0YzUxOGQxZjY5M2JmODlhN2M5MWQyNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdG
cmFtZVRpbWVsaW5lVmlldy5qcwpAQCAtNzksNyArNzksNyBAQCBXZWJJbnNwZWN0b3IuUmVuZGVy
aW5nRnJhbWVUaW1lbGluZVZpZXcgPSBjbGFzcyBSZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyBl
eHRlbgogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgicmVuZGVyaW5nLWZyYW1lIik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRo
aXMuX2RhdGFHcmlkKTsKIAogICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fcmVuZGVyaW5nRnJhbWVU
aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIApAQCAtMTMxLDE1ICsxMzEsNiBAQCBXZWJJbnNw
ZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgPSBjbGFzcyBSZW5kZXJpbmdGcmFtZVRp
bWVsaW5lVmlldyBleHRlbgogICAgICAgICB0aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0
KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAg
dGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGlv
blBhdGhDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlz
Ll9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CkBAIC0yNDUsNiArMjM2LDEyIEBAIFdlYkluc3BlY3Rv
ci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyA9IGNsYXNzIFJlbmRlcmluZ0ZyYW1lVGltZWxp
bmVWaWV3IGV4dGVuCiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAorICAgIHJlbmRlcigp
CisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3Byb2Nlc3NQZW5k
aW5nUmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKaW5kZXggNDhlNTA1MjY3
YWIxNDA4MDBkYTNhY2M5ZTM5ZjI0MDZkZjNmYWRjYi4uMWExZjA4MzQ2M2VjMDcwOTZjNDlkNTVj
MTA4NzcwZDk3MTliNmFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcwpAQCAtNjgs
NyArNjgsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gY2xhc3MgU2NyaXB0
VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsK
IAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0Iik7Ci0gICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKIAogICAgICAgICB0aW1lbGluZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwg
dGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKQEAgLTEwNCwyOCArMTA0
LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldyA9IGNsYXNzIFNjcmlwdFRpbWVs
aW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY2xv
c2VkKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHN1cGVy
LnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgp
OwotCi0gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZSAhPT0gdGhpcy5fb2xkU3RhcnRUaW1lIHx8
IHRoaXMuZW5kVGltZSAhPT0gdGhpcy5fb2xkRW5kVGltZSkgewotICAgICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAgd2hp
bGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS51cGRhdGVS
YW5nZVRpbWVzKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpOwotICAgICAgICAgICAgICAg
IGlmIChkYXRhR3JpZE5vZGUucmV2ZWFsZWQpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFHcmlk
Tm9kZS5yZWZyZXNoSWZOZWVkZWQoKTsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBk
YXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX29sZFN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1l
OwotICAgICAgICAgICAgdGhpcy5fb2xkRW5kVGltZSA9IHRoaXMuZW5kVGltZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpOwotICAgIH0KLQogICAg
IGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdy
aWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwpAQCAtMjE3LDYgKzE5NSwyNSBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gY2xhc3MgU2NyaXB0VGltZWxpbmVW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB9CiAgICAgfQogCisgICAgcmVuZGVy
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZSAhPT0gdGhpcy5fb2xkU3RhcnRU
aW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gdGhpcy5fb2xkRW5kVGltZSkgeworICAgICAgICAgICAg
dmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOworICAgICAgICAg
ICAgd2hpbGUgKGRhdGFHcmlkTm9kZSkgeworICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS51
cGRhdGVSYW5nZVRpbWVzKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpOworICAgICAgICAg
ICAgICAgIGlmIChkYXRhR3JpZE5vZGUucmV2ZWFsZWQpCisgICAgICAgICAgICAgICAgICAgIGRh
dGFHcmlkTm9kZS5yZWZyZXNoSWZOZWVkZWQoKTsKKyAgICAgICAgICAgICAgICBkYXRhR3JpZE5v
ZGUgPSBkYXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuX29sZFN0YXJ0VGltZSA9IHRoaXMuc3Rh
cnRUaW1lOworICAgICAgICAgICAgdGhpcy5fb2xkRW5kVGltZSA9IHRoaXMuZW5kVGltZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfcHJvY2Vzc1Bl
bmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qcwppbmRleCA2ZDdmNDMzY2Y0ODJlZmY0YTkzMTU2NThjMTE5ZTJm
MGI5MjQwMjM1Li5iNDcxZGZkZGUwMWNlNTE5ZGU4NmIzZGFkNzljNTZmNTE4NDUxZDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFy
LmpzCkBAIC0yMywyMyArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRl
bmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFy
SXRlbXMpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBzdXBlcihlbGVtZW50KTsK
IAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYmFy
Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3Qi
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7CiAKICAgICAg
ICAgdmFyIHRvcEJvcmRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdG9wQm9yZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0b3AtYm9yZGVyIik7Ci0g
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodG9wQm9yZGVyRWxlbWVudCk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0b3BCb3JkZXJFbGVtZW50KTsKIAotICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRs
ZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOwotICAgICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9oYW5kbGVN
b3VzZUxlYXZlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVD
bGljay5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlbGVhdmUiLCB0aGlzLl9oYW5kbGVNb3VzZUxlYXZlLmJpbmQodGhpcykpOwogCiAgICAg
ICAgIHRoaXMuX3RhYkJhckl0ZW1zID0gW107CiAKQEAgLTExMSw3ICsxMTAsNyBAQCBXZWJJbnNw
ZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICB2YXIgbGFzdEluZGV4ID0gdGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX3RhYkJhckl0
ZW1zLmxlbmd0aCAtIDEgOiB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGg7CiAgICAgICAgIGluZGV4
ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGxhc3RJbmRleCkpOwogCi0gICAgICAgIGlm
ICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAg
ICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAg
ICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykp
OwogICAgICAgICAgICAgZG9Ob3RBbmltYXRlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTI1LDM0
ICsxMjQsMzQgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gdGhpcy5fdGFiQmFy
SXRlbXNbaW5kZXggKyAxXTsKICAgICAgICAgdmFyIG5leHRTaWJsaW5nRWxlbWVudCA9IG5leHRT
aWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6ICh0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5f
bmV3VGFiSXRlbS5lbGVtZW50IDogbnVsbCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNl
cnRCZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxp
bmdFbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNp
bmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIXRoaXMuX2hhc01vcmVU
aGFuT25lTm9ybWFsVGFiKCkpOwogCiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5s
ZWZ0ID0gbnVsbDsKICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gbnVs
bDsKIAogICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10YWIiKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbnNlcnRpbmctdGFiIik7CiAKICAgICAgICAg
ICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNB
bmRQb3NpdGlvbnMpOwogCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIs
IHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHJl
bW92ZVN0eWxlcygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiaW5zZXJ0aW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CiAKICAgICAgICAgICAg
IHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJiZWluZy1pbnNlcnRlZCIpOwog
CiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwog
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRy
YW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0
eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZG9Ob3RBbmltYXRlKSB7
CkBAIC0xNjgsNyArMTY3LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6IDAs
IHdpZHRoOiAwfSk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
c3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InN0YXRpYy1sYXlvdXQiKTsKICAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJiZWluZy1pbnNlcnRlZCIpOwogCiAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CkBAIC0x
NzcsNyArMTc2LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KGFuaW1hdGVUYWJzLmJpbmQodGhpcykpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRo
aXMudXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJC
YXIuRXZlbnQuVGFiQmFySXRlbUFkZGVkLCB7dGFiQmFySXRlbX0pOwogCkBAIC0yMDQsNyArMjAz
LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gbmV4dFRh
YkJhckl0ZW07CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgewogICAgICAgICAgICAgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgIGRvTm90QW5p
bWF0ZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTIxOSw3ICsyMTgsNyBAQCBXZWJJbnNwZWN0b3Iu
VGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICB0YWJCYXJJdGVtLmVsZW1lbnQucmVtb3ZlKCk7CiAKICAgICAgICAgdmFyIGhhc01vcmVUaGFu
T25lTm9ybWFsVGFiID0gdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKTsKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIWhhc01vcmVUaGFu
T25lTm9ybWFsVGFiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNp
bmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOwogCiAgICAgICAgIGNvbnN0IHNo
b3VsZE9wZW5EZWZhdWx0VGFiID0gIXRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmICF0aGlzLmhh
c05vcm1hbFRhYigpOwogICAgICAgICBpZiAoc2hvdWxkT3BlbkRlZmF1bHRUYWIpCkBAIC0yMzAs
NyArMjI5LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3Nl
ZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAgICAgICAgICAgICAgICAgdGhpcy5fZmluaXNoRXhw
YW5kaW5nVGFic0FmdGVyQ2xvc2UoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwogICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogCiAgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGFiQmFyLkV2ZW50LlRhYkJhckl0
ZW1SZW1vdmVkLCB7dGFiQmFySXRlbX0pOwogCkBAIC0yNDQsOCArMjQzLDggQEAgV2ViSW5zcGVj
dG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAog
ICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNsb3NpbmctdGFiIik7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsKIAogICAgICAgICAgICAgdmFyIGxl
ZnQgPSAwOwogICAgICAgICAgICAgZm9yICh2YXIgY3VycmVudFRhYkJhckl0ZW0gb2YgdGhpcy5f
dGFiQmFySXRlbXMpIHsKQEAgLTI2Niw3ICsyNjUsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgaWYg
KGxhc3ROb3JtYWxUYWJCYXJJdGVtICE9PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCiAgICAg
ICAgICAgICAgICAgbGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IChw
YXJzZUZsb2F0KGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpICsgMSkg
KyAicHgiOwogCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndl
YmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92
ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0
eWxlcygpCkBAIC0yNzUsMTYgKzI3NCwxNiBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkVGFiQmFySXRlbSAmJiB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gIT09IGxhc3RO
b3JtYWxUYWJCYXJJdGVtKQogICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRl
bS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQodGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtLmVsZW1lbnQuc3R5bGUud2lkdGgpIC0gMSkgKyAicHgiOwogCi0gICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7CiAKICAgICAgICAg
ICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3Rl
bmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFkb05vdEFuaW1hdGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKIAogICAgICAgICAgICAgdGhpcy5fdGFiQW5p
bWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSB0cnVlOwogCkBAIC0yOTQsNyArMjkzLDcgQEAg
V2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJzLmJp
bmQodGhpcykpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0
U29vbigpOworICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogCiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJCYXIuRXZlbnQuVGFiQmFy
SXRlbVJlbW92ZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTM1MCw2MSArMzQ5LDYgQEAgV2ViSW5z
cGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJ
bmRleF07CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0U29vbigpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBk
YXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmll
ciA9IHVuZGVmaW5lZDsKLQotICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRzTGF5b3V0KQotICAg
ICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0
ZS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNl
bEFuaW1hdGlvbkZyYW1lKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpOwotICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxh
eW91dCIpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX25lZWRzTGF5b3V0
ID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRl
LXRpdGxlcyIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxh
cHNlZCIpOwotCi0gICAgICAgIHZhciBmaXJzdE5vcm1hbFRhYkl0ZW0gPSBudWxsOwotICAgICAg
ICBmb3IgKHZhciB0YWJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7Ci0gICAgICAgICAgICBp
ZiAodGFiSXRlbS5waW5uZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBmaXJzdE5vcm1hbFRhYkl0ZW0gPSB0YWJJdGVtOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIWZpcnN0Tm9ybWFsVGFiSXRlbSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoZmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lk
dGggPj0gMTIwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7Ci0KLSAgICAgICAgaWYgKGZpcnN0Tm9ybWFsVGFi
SXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDYwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGlkZS10aXRsZXMiKTsKLSAgICB9
Ci0KICAgICBnZXQgc2VsZWN0ZWRUYWJCYXJJdGVtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW07CkBAIC00MzUsMTQgKzM3OSw0MyBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXM7CiAgICAgfQogCi0gICAgZ2V0IGVsZW1lbnQo
KQorICAgIGhhc05vcm1hbFRhYigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLnNvbWUoKHRhYikgPT4gIXRhYi5w
aW5uZWQpOwogICAgIH0KIAotICAgIGhhc05vcm1hbFRhYigpCisgICAgLy8gUHJvdGVjdGVkCisK
KyAgICByZW5kZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zLnNv
bWUoKHRhYikgPT4gIXRhYi5waW5uZWQpOworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRlLXRpdGxlcyIp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFwc2VkIik7CisK
KyAgICAgICAgdmFyIGZpcnN0Tm9ybWFsVGFiSXRlbSA9IG51bGw7CisgICAgICAgIGZvciAodmFy
IHRhYkl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGlmICh0YWJJdGVt
LnBpbm5lZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZpcnN0Tm9y
bWFsVGFiSXRlbSA9IHRhYkl0ZW07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghZmlyc3ROb3JtYWxUYWJJdGVtKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmIChmaXJzdE5vcm1hbFRhYkl0ZW0uZWxlbWVudC5vZmZzZXRXaWR0aCA+
PSAxMjApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNlZCIpOworCisgICAgICAgIGlmIChmaXJzdE5vcm1hbFRh
Ykl0ZW0uZWxlbWVudC5vZmZzZXRXaWR0aCA+PSA2MCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGlkZS10aXRsZXMiKTsK
KworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCkBAIC00ODMs
NyArNDU2LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIHZhciB0YWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnMgPSBuZXcgTWFwOwogCi0gICAgICAgIHZhciBiYXJSZWN0ID0gdGhpcy5fZWxlbWVu
dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMu
ZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIAogICAgICAgICBmb3IgKHZhciB0YWJC
YXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CiAgICAgICAgICAgICB2YXIgYm91bmRpbmdS
ZWN0ID0gdGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpAQCAtNTIy
LDcgKzQ5NSw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAoIWJlZm9yZVRhYlNpemVzQW5kUG9z
aXRpb25zKQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhp
cy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKICAgICAg
ICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKICAgICAg
ICAgICAgIHZhciBhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFy
SXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CkBAIC01MzIsMjYgKzUwNSwyNiBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAg
ICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlVGFicygpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsK
LSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImV4cGFuZGluZy10
YWJzIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRp
Yy1sYXlvdXQiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
YW5pbWF0aW5nIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImV4cGFuZGluZy10YWJzIik7CiAKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0
ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zKTsKIAotICAgICAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlv
bkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xp
c3RlbmVyKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5
bGVzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAg
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kaW5n
LXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5k
UG9zaXRpb25zKCk7CiAKICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCi0g
ICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRU
cmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVt
b3ZlU3R5bGVzTGlzdGVuZXIpOwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAg
ICAgICAgfQpAQCAtNjMwLDcgKzYwMyw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBjbG9zZUJ1dHRv
bkVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJ
bnNwZWN0b3IuVGFiQmFySXRlbS5DbG9zZUJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAg
aWYgKGNsb3NlQnV0dG9uRWxlbWVudCB8fCBjbGlja2VkTWlkZGxlQnV0dG9uKSB7CiAgICAgICAg
ICAgICAvLyBEaXNhbGxvdyBjbG9zaW5nIHRoZSBkZWZhdWx0IHRhYiBpZiBpdCBpcyB0aGUgb25s
eSB0YWIuCi0gICAgICAgICAgICBpZiAodGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKKyAgICAgICAgICAgIGlm
ICh0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAmJiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRh
aW5zKCJzaW5nbGUtdGFiIikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0odGFiQmFySXRlbSwgZmFsc2UsIHRydWUpOwpAQCAtNjUx
LDEwICs2MjQsMTAgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKSB7CisgICAgICAgIGlmICgh
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKSB7CiAgICAg
ICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0aGlzLl9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKSk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nLXRhYiIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHRoaXMuX21vdXNlT2Zmc2V0ID09PSB1bmRlZmluZWQpCkBAIC02OTUsNyArNjY4LDcg
QEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKICAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3
SW5kZXggKyAxXTsKICAgICAgICAgdmFyIG5leHRTaWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5n
ID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6ICh0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fbmV3VGFi
SXRlbS5lbGVtZW50IDogbnVsbCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZv
cmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJ
dGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAKICAgICAgICAgLy8gRklYTUU6IEFu
aW1hdGUgdGhlIHRhYnMgdGhhdCBtb3ZlIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHNlbGVjdGVkIHRh
Yi4gVGhpcyB3YXMgY2F1c2luZyBtZSB0cm91YmxlIHdoZW4gSSB0cmllZC4KIApAQCAtNzE0LDEw
ICs2ODcsMTAgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
ImRyYWdnaW5nLXRhYiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
ZHJhZ2dpbmctdGFiIik7CiAKICAgICAgICAgaWYgKCF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNp
bmNlTW91c2VFbnRlcikgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJ
dGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHZh
ciBsZWZ0ID0gMDsKQEAgLTc0NSwxNCArNzE4LDE0IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBj
bGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfaGFuZGxlTW91
c2VMZWF2ZShldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tb3VzZUlzRG93biB8fCAh
dGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQorICAgICAgICBpZiAodGhpcy5fbW91c2VJc0Rv
d24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgLy8gVGhpcyBldmVudCBjYW4gc3RpbGwgZmlyZSB3aGVuIHRoZSBtb3VzZSBpcyBp
bnNpZGUgdGhlIGVsZW1lbnQgaWYgRE9NIG5vZGVzIGFyZSBhZGRlZCwgcmVtb3ZlZCBvciBnZW5l
cmFsbHkgY2hhbmdlIGluc2lkZS4KICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1vdXNlIHJlYWxs
eSBkaWQgbGVhdmUgdGhlIGVsZW1lbnQgYnkgY2hlY2tpbmcgdGhlIGJvdW5kcy4KICAgICAgICAg
Ly8gRklYTUU6IElzIHRoaXMgYSBXZWJLaXQgYnVnIG9yIGNvcnJlY3QgYmVoYXZpb3I/Ci0gICAg
ICAgIHZhciBiYXJSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
LSAgICAgICAgdmFyIG5ld1RhYkl0ZW1SZWN0ID0gdGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25l
d1RhYkl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IG51bGw7CisgICAgICAg
IGNvbnN0IGJhclJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgICAgIGNvbnN0IG5ld1RhYkl0ZW1SZWN0ID0gdGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25l
d1RhYkl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IG51bGw7CiAgICAgICAg
IGlmIChldmVudC5wYWdlWSA+IGJhclJlY3QudG9wICYmIGV2ZW50LnBhZ2VZIDwgYmFyUmVjdC5i
b3R0b20gJiYgZXZlbnQucGFnZVggPiBiYXJSZWN0LmxlZnQgJiYgZXZlbnQucGFnZVggPCAobmV3
VGFiSXRlbVJlY3QgPyBuZXdUYWJJdGVtUmVjdC5yaWdodCA6IGJhclJlY3QucmlnaHQpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC03NjgsNyArNzQxLDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJh
ciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9oYW5k
bGVOZXdUYWJNb3VzZUVudGVyKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90YWJB
bmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250
YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRT
aW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRp
Yy1sYXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmci
KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdU
YWJzQWZ0ZXJDbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKaW5kZXggMjhiYTkzOTU1YTM5ODEyMzFlNjY3
NmQ2YTM4MDY4ZTIxY2YyYmRkZS4uNmUwNjAyYjg4ZTM0YTMyM2QwMjY5MTgyZTE3NTVjYTRmNmJj
OGUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGFiQnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCcm93c2VyLmpzCkBAIC0yMywxOSArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNs
YXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3Iu
VGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwog
ewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHRhYkJhciwgbmF2aWdhdGlvblNpZGViYXIsIGRl
dGFpbHNTaWRlYmFyKQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGFiQmFyLCAiTXVzdCBwcm92aWRlIGEgVGFiQmFyLiIpOwogCi0gICAgICAgIHRoaXMu
X2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1icm93c2VyIik7CisgICAgICAg
IHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX3RhYkJhciA9IHRhYkJhciB8fCBuZXcg
V2ViSW5zcGVjdG9yLlRhYkJhcjsKLSAgICAgICAgaWYgKCF0YWJCYXIpCi0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RhYkJhci5lbGVtZW50KTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1icm93c2VyIik7CiAKKyAgICAgICAgdGhp
cy5fdGFiQmFyID0gdGFiQmFyOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhciA9IG5h
dmlnYXRpb25TaWRlYmFyIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyID0g
ZGV0YWlsc1NpZGViYXIgfHwgbnVsbDsKIApAQCAtNDgsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3Iu
VGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lciA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZWxlbWVudCk7CisgICAgICAg
IHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lcik7CiAKICAgICAgICAg
dmFyIHNob3dOZXh0VGFiID0gdGhpcy5fc2hvd05leHRUYWIuYmluZCh0aGlzKTsKICAgICAgICAg
dmFyIHNob3dQcmV2aW91c1RhYiA9IHRoaXMuX3Nob3dQcmV2aW91c1RhYi5iaW5kKHRoaXMpOwpA
QCAtNzMsMTEgKzcxLDYgQEAgV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93
c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBn
ZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9
Ci0KICAgICBnZXQgdGFiQmFyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXI7
CkBAIC05OCwxMiArOTEsNiBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJy
b3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgfQogCi0gICAgdXBk
YXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RhYkJhci51cGRhdGVMYXlvdXQoKTsK
LSAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIudXBkYXRlTGF5b3V0KCk7Ci0gICAg
fQotCiAgICAgYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoY29uc3RydWN0b3IpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRo
aXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdz
WzBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lUnVsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCmluZGV4IDUwNWUwMTk3MzYxODEzODlhMzg3MzMxMmI5
YTZhNzNhNTQ5NmI1NTcuLjAxZmVjMjU1N2NhYWZkMGQ5ZjE5NDc3NzEwMjY5ZWVjZDBlZmM3ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lUnVsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVSdWxlci5qcwpAQCAtMjMsMjIgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIg
PSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcigp
OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1ydWxlciIp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcnVsZXIiKTsK
IAogICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaGVhZGVy
Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVu
dCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50
KTsKIAogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwogICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJt
YXJrZXJzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vy
c0VsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vy
c0VsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKICAgICAgICAgdGhpcy5f
c3RhcnRUaW1lID0gMDsKQEAgLTU5LDExICs1OCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAog
ICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IGFsbG93c0NsaXBwZWRMYWJlbHMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHM7CkBAIC0xMDUs
NyArOTksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVs
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgaWYgKHgpIHsKICAgICAg
ICAgICAgIHRoaXMuX21vdXNlRG93bkV2ZW50TGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVNb3VzZURv
d24uYmluZCh0aGlzKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duRXZlbnRMaXN0ZW5lcik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VE
b3duRXZlbnRMaXN0ZW5lcik7CiAKICAgICAgICAgICAgIHRoaXMuX2xlZnRTaGFkZWRBcmVhRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgdGhpcy5f
bGVmdFNoYWRlZEFyZWFFbGVtZW50LmNsYXNzTGlzdC5hZGQoInNoYWRlZC1hcmVhIik7CkBAIC0x
MzAsNyArMTI0LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGlu
ZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICB0aGlzLl9u
ZWVkc1NlbGVjdGlvbkxheW91dCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURv
d25FdmVudExpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25FdmVudExpc3RlbmVyKTsKICAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9tb3VzZURvd25FdmVudExpc3RlbmVyOwogCiAgICAgICAgICAg
ICB0aGlzLl9sZWZ0U2hhZGVkQXJlYUVsZW1lbnQucmVtb3ZlKCk7CkBAIC00NTAsNyArNDQ0LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGg7Cisg
ICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAg
ICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDk0
LDcgKzQ4OCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVS
dWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgewogICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXI7CiAKLSAg
ICAgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDsK
ICAgICAgICAgICAgIGlmICh2aXNpYmxlV2lkdGggPD0gMCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTUyMCw3ICs1MTQsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNs
YXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyOwogCi0gICAgICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVu
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLmVsZW1l
bnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9IDApCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01MzIsNyArNTI2LDcgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogCiAgICAgX3JlY2FsY3VsYXRlKCkKICAgICB7Ci0gICAgICAgIHZhciB2aXNpYmxlV2lk
dGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOworICAgICAgICB2YXIgdmlzaWJsZVdpZHRo
ID0gdGhpcy5lbGVtZW50LmNsaWVudFdpZHRoOwogICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9
IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtNTg1LDcgKzU3OSw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25M
YXlvdXRVcGRhdGVJZGVudGlmaWVyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVS
YW5nZVNlbGVjdGlvblN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rp
b24pOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSwgdGhp
cy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKTsKIAogICAgICAgICBpZiAoIXRoaXMuX2FsbG93
c1RpbWVSYW5nZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYxNywxMSArNjEx
LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fcmlnaHRTZWxlY3Rpb25I
YW5kbGVFbGVtZW50LnRpdGxlID0gZm9ybWF0dGVkRW5kVGltZVRleHQ7CiAKICAgICAgICAgaWYg
KCF0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVudC5wYXJlbnROb2RlKSB7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50KTsKLSAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNoYWRlZEFyZWFF
bGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVm
dFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9yaWdodFNoYWRlZEFyZWFFbGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWxlY3Rpb25IYW5kbGVFbGVtZW50KTsK
KyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3Rpb25EcmFn
RWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVm
dFNoYWRlZEFyZWFFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9sZWZ0U2VsZWN0aW9uSGFuZGxlRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTaGFkZWRBcmVhRWxlbWVudCk7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWxlY3Rpb25IYW5kbGVF
bGVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoVGltZVJhbmdlU2Vs
ZWN0aW9uQ2hhbmdlZEV2ZW50KCk7CkBAIC02NjUsNyArNjU5LDcgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NlbGVjdGlvbklzTW92
ZSA9IGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fc2VsZWN0aW9uRHJhZ0VsZW1lbnQ7Ci0gICAgICAg
IHRoaXMuX3J1bGVyQm91bmRpbmdDbGllbnRSZWN0ID0gdGhpcy5fZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKKyAgICAgICAgdGhpcy5fcnVsZXJCb3VuZGluZ0NsaWVudFJlY3QgPSB0
aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAKICAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGlvbklzTW92ZSkgewogICAgICAgICAgICAgdGhpcy5fbGFzdE1vdXNlUG9zaXRpb24g
PSBldmVudC5wYWdlWDsKQEAgLTcyMCwxMCArNzE0LDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKHRoaXMuc3RhcnRU
aW1lICsgKE1hdGgubWF4KGN1cnJlbnRNb3VzZVBvc2l0aW9uLCB0aGlzLl9tb3VzZURvd25Qb3Np
dGlvbikgKiB0aGlzLnNlY29uZHNQZXJQaXhlbCksIHRoaXMuZW5kVGltZSk7CiAKICAgICAgICAg
ICAgIC8vIFR1cm4gb24gY29sLXJlc2l6ZSBjdXJzb3Igc3R5bGUgb25jZSBkcmFnZ2luZyBiZWdp
bnMsIHJhdGhlciB0aGFuIG9uIHRoZSBpbml0aWFsIG1vdXNlIGRvd24uCi0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVz
aXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlv
blN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVj
dGlvbih0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKKyAgICAgICAg
dGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kdXJh
dGlvbik7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7CkBAIC03MzQsNyArNzI4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCiAgICAgICAg
IGlmICghdGhpcy5fc2VsZWN0aW9uSXNNb3ZlKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxl
Y3Rpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxl
Q2xhc3NOYW1lKTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uRW5kVGltZSAtIHRo
aXMuc2VsZWN0aW9uU3RhcnRUaW1lIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24pIHsK
ICAgICAgICAgICAgICAgICAvLyBUaGUgc2VjdGlvbiBpcyBzbWFsbGVyIHRoYW4gYWxsb3dlZCwg
Z3JvdyBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBkcmFnIHRvIG1lZXQgdGhlIG1pbnVtdW0uCkBA
IC03NzQsNyArNzY4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1l
bGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX2RyYWdIYW5kbGVJc1N0YXJ0VGltZSA9IGV2ZW50LnRhcmdldCA9
PT0gdGhpcy5fbGVmdFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQ7Ci0gICAgICAgIHRoaXMuX21vdXNl
RG93blBvc2l0aW9uID0gZXZlbnQucGFnZVggLSB0aGlzLl9lbGVtZW50LnRvdGFsT2Zmc2V0TGVm
dDsKKyAgICAgICAgdGhpcy5fbW91c2VEb3duUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMu
ZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CiAKICAgICAgICAgdGhpcy5fc2VsZWN0aW9uSGFuZGxl
TW91c2VNb3ZlRXZlbnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNl
TW92ZS5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLl9zZWxlY3Rpb25IYW5kbGVNb3VzZVVwRXZl
bnRMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlVXAuYmluZCh0aGlz
KTsKQEAgLTc4Myw3ICs3NzcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNz
IFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX3NlbGVjdGlvbkhhbmRsZU1v
dXNlTW92ZUV2ZW50TGlzdGVuZXIpOwogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZXVwIiwgdGhpcy5fc2VsZWN0aW9uSGFuZGxlTW91c2VVcEV2ZW50TGlzdGVuZXIpOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdT
ZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CkBAIC03OTMsNyArNzg3LDcgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQu
YnV0dG9uID09PSAwKTsKIAotICAgICAgICB2YXIgY3VycmVudE1vdXNlUG9zaXRpb24gPSBldmVu
dC5wYWdlWCAtIHRoaXMuX2VsZW1lbnQudG90YWxPZmZzZXRMZWZ0OworICAgICAgICB2YXIgY3Vy
cmVudE1vdXNlUG9zaXRpb24gPSBldmVudC5wYWdlWCAtIHRoaXMuZWxlbWVudC50b3RhbE9mZnNl
dExlZnQ7CiAgICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRoaXMuc3RhcnRUaW1lICsgKGN1cnJl
bnRNb3VzZVBvc2l0aW9uICogdGhpcy5zZWNvbmRzUGVyUGl4ZWwpOwogICAgICAgICBpZiAodGhp
cy5zbmFwSW50ZXJ2YWwpCiAgICAgICAgICAgICBjdXJyZW50VGltZSA9IHRoaXMuX3NuYXBWYWx1
ZShjdXJyZW50VGltZSk7CkBAIC04MTcsNyArODExLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRW5kVGltZSA9IE1hdGgubWluKE1hdGgubWF4
KHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lICsgdGhpcy5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24s
IGN1cnJlbnRUaW1lKSwgdGhpcy5lbmRUaW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMu
X3VwZGF0ZVNlbGVjdGlvbih0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmR1cmF0aW9u
KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHRoaXMuZWxlbWVudC5jbGllbnRXaWR0
aCwgdGhpcy5kdXJhdGlvbik7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CkBAIC04MjcsNyArODIxLDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9u
ID09PSAwKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIuUmVzaXppbmdTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyLlJlc2l6aW5nU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIGRvY3Vt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX3NlbGVjdGlvbkhhbmRs
ZU1vdXNlTW92ZUV2ZW50TGlzdGVuZXIpOwogICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5fc2VsZWN0aW9uSGFuZGxlTW91c2VVcEV2ZW50TGlzdGVu
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVWaWV3LmpzCmluZGV4IDdhMDBkY2FjYmE5MWMzMTM2YTRiYTgxYmJlMDEx
NDE5N2JiMzU1NjMuLjI5NDI4MTg0MDYyZjdiN2RiNDM0MmU5NGUyNDU2NzAyNGJlMWU1MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVZpZXcuanMKQEAgLTE3MiwyNiArMTcyLDE3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVZpZXcgPSBjbGFzcyBUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkK
KyAgICBmaWx0ZXJVcGRhdGVkKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFt
ZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRo
aXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCisg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7CiAgICAgfQogCi0g
ICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQorICAgIG5lZWRzTGF5b3V0KCkKICAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAg
aWYgKCF0aGlzLnZpc2libGUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMudXBk
YXRlTGF5b3V0KCk7Ci0gICAgfQogCi0gICAgZmlsdGVyVXBkYXRlZCgpCi0gICAgewotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
RXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOworICAgICAgICBzdXBlci5u
ZWVkc0xheW91dCgpOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZApAQCAtMjQ3LDE1ICsyMzgs
NCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3ID0gY2xhc3MgVGltZWxpbmVWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiAKICAgICAgICAgdGhpcy5zaG93Q29udGVudFZp
ZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7CiAgICAgfQotCi0gICAgbmVlZHNMYXlvdXQo
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRl
SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxheW91dC5iaW5k
KHRoaXMpKTsKLSAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKaW5kZXggMjEzZTMyMDE3MTI4ZjlhZjI0MjY0ZWE5
MGMzZjZlZmFjZjBlZmY1Mi4uMjQxYzBiN2RmMzE4NTAwZDljYjQ4ZjUxOTIwYjM0YjcxZTI5MmI2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VG9vbGJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Ub29sYmFyLmpzCkBAIC0zNCwzMCArMzQsMzAgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBj
bGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKIAogICAgICAg
ICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICAgICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50KTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxl
bWVudCk7CiAKICAgICAgICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsg
IiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNlY3Rpb25FbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9u
RWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NlbnRlckxlZnRTZWN0
aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0
eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyTGVmdEl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhp
cy5fY2VudGVyU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rv
ci5Ub29sYmFyLkNlbnRlckl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOwog
CiAgICAgICAgIHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NO
YW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyUmlnaHRJdGVtU2VjdGlvblN0
eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nl
bnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fcmln
aHRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAg
ICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29s
YmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICBp
ZiAoIWRvbnRBbGxvd01vZGVDaGFuZ2VzKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQu
YmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC03MywxNSArNzMsMTUgQEAg
V2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5f
ZGlzcGxheU1vZGUpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
dGhpcy5fZGlzcGxheU1vZGUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUodGhpcy5fZGlzcGxheU1vZGUpOwogCiAgICAgICAgIC8vIFJldmVydCB0aGUgZm9yY2Vk
IGljb24tb25seSBtb2RlIGlmIGl0IHdhcyBhcHBsaWVkLgogICAgICAgICBpZiAodGhpcy5fZGlz
cGxheU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJl
bEhvcml6b250YWwpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
V2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxh
eU1vZGUuSWNvbk9ubHkpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BsYXlNb2RlID0gbW9kZTsKIAot
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKG1vZGUpOwogCiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0
KCk7CiAKQEAgLTk5LDExICs5OSwxMSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRv
b2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9zaXplTW9kZSkKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9zaXplTW9kZSk7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9zaXplTW9kZSk7CiAKICAgICAgICAgdGhp
cy5fc2l6ZU1vZGUgPSBtb2RlOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChtb2RlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CiAKICAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIApAQCAtMTE4LDE3ICsxMTgsMTcgQEAgV2ViSW5z
cGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIKIAogICAgICAgICAvLyBGb3JjZSBjb2xsYXBzZWQgc3R5bGUgZm9yIEphdmFTY3Jp
cHQgZGVidWdnYWJsZXMuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnYWJsZVR5cGUg
PT09IFdlYkluc3BlY3Rvci5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7Ci0gICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIu
Q29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05h
bWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gUmVtb3Zl
IHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBpZiB0aGUgaXRlbXMgY2FuIGZpdCBh
dCBmdWxsIHdpZHRoLgotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
ci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBmb3Jj
ZWQgaWNvbi1vbmx5IG1vZGUgaWYgaXQgd2FzIGFwcGxpZWQuCiAgICAgICAgIGlmICh0aGlzLl9k
aXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExh
YmVsSG9yaXpvbnRhbCkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25P
bmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOwogICAgICAgICB9
CiAKICAgICAgICAgZnVuY3Rpb24gaXNPdmVyZmxvd2luZ1Rvb2xiYXIoKQpAQCAtMTQ3LDE0ICsx
NDcsMTQgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKICAgICAgICAgLy8gT25seSB0aGUgaG9yaXpvbnRhbCBk
aXNwbGF5IG1vZGUgc3VwcG9ydHMgY29sbGFwc2luZyBsYWJlbHMuCiAgICAgICAgIC8vIElmIGFu
eSBzZWN0aW9ucyBhcmUgb3ZlcmZsb3dpbmcgdGhlIHRvb2xiYXIgdGhlbiBmb3JjZSB0aGUgZGlz
cGxheSBtb2RlIHRvIGJlIGljb24gb25seS4KICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2Rl
ID09PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9u
dGFsICYmIGlzT3ZlcmZsb3dpbmdUb29sYmFyLmNhbGwodGhpcykpIHsKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5
TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3Iu
VG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlN
b2RlLkljb25Pbmx5KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNPdmVyZmxvd2luZ1Rv
b2xiYXIuY2FsbCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2Vk
U3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgfQog
CiAgICAgYWRkVG9vbGJhckl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmZlN2QyMDI4M2Y2ZDQ4YWNlMzQxOWVhNTUxNjMwMWI1MTczZDYzYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
ZXcuanMKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlldyA9
IGNsYXNzIFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0
b3IoZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuX192aWV3ID0gdGhpczsKKyAgICAgICAgdGhpcy5fc3Vidmlld3MgPSBb
XTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBlbGVtZW50KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAgIH0KKworICAgIGdldCBzdWJ2aWV3cygp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3Vidmlld3M7CisgICAgfQorCisgICAgYWRk
U3Vidmlldyh2aWV3KQorICAgIHsKKyAgICAgICAgdGhpcy5pbnNlcnRTdWJ2aWV3QmVmb3JlKHZp
ZXcsIG51bGwpOworICAgIH0KKworICAgIGluc2VydFN1YnZpZXdCZWZvcmUodmlldywgcmVmZXJl
bmNlVmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFyZWZlcmVuY2VWaWV3
IHx8IHJlZmVyZW5jZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmlldyk7CisKKyAgICAg
ICAgaWYgKHRoaXMuX3N1YnZpZXdzLmluY2x1ZGVzKHZpZXcpKSB7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChmYWxzZSwgIkNhbm5vdCBhZGQgdmlldyB0aGF0IGlzIGFscmVhZHkgYSBzdWJ2
aWV3LiIsIHZpZXcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29uc3QgYmVmb3JlSW5kZXggPSByZWZlcmVuY2VWaWV3ID8gdGhpcy5fc3Vidmlld3MuaW5kZXhP
ZihyZWZlcmVuY2VWaWV3KSA6IHRoaXMuX3N1YnZpZXdzLmxlbmd0aDsKKyAgICAgICAgaWYgKGJl
Zm9yZUluZGV4ID09PSAtMSkgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJD
YW5ub3QgaW5zZXJ0IHZpZXcuIEludmFsaWQgcmVmZXJlbmNlIHZpZXcuIiwgcmVmZXJlbmNlVmll
dyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zdWJ2
aWV3cy5pbnNlcnRBdEluZGV4KHZpZXcsIGJlZm9yZUluZGV4KTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5pbnNlcnRCZWZvcmUodmlldy5lbGVtZW50LCByZWZlcmVuY2VWaWV3ID8gcmVmZXJlbmNl
Vmlldy5lbGVtZW50IDogbnVsbCk7CisgICAgfQorCisgICAgcmVtb3ZlU3Vidmlldyh2aWV3KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5WaWV3KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmlldy5lbGVtZW50LnBhcmVudE5vZGUg
PT09IHRoaXMuX2VsZW1lbnQsICJTdWJ2aWV3IERPTSBlbGVtZW50IG11c3QgYmUgYSBjaGlsZCBv
ZiB0aGUgcGFyZW50IHZpZXcgZWxlbWVudC4iKTsKKworICAgICAgICBpZiAoIXRoaXMuX3N1YnZp
ZXdzLmluY2x1ZGVzKHZpZXcpKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwg
IkNhbm5vdCByZW1vdmUgdmlldyB3aGljaCBpc24ndCBhIHN1YnZpZXcuIiwgdmlldyk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zdWJ2aWV3cy5yZW1v
dmUodmlldywgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQ2hpbGQodmlldyk7
CisgICAgfQorCisgICAgcmVwbGFjZVN1YnZpZXcob2xkVmlldywgbmV3VmlldykKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9sZFZpZXcgIT09IG5ld1ZpZXcsICJDYW5ub3QgcmVwbGFj
ZSBzdWJ2aWV3IHdpdGggaXRzZWxmLiIpOworCisgICAgICAgIHRoaXMuaW5zZXJ0U3Vidmlld0Jl
Zm9yZShuZXdWaWV3LCBvbGRWaWV3KTsKKyAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KG9sZFZp
ZXcpOworICAgIH0KKworICAgIHVwZGF0ZUxheW91dCgpCisgICAgeworICAgICAgICBpZiAodGhp
cy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIGNhbmNlbEFu
aW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOworCisg
ICAgICAgIHRoaXMuX3JlbmRlclN1YnRyZWUoKTsKKyAgICB9CisKKyAgICB1cGRhdGVMYXlvdXRJ
Zk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVM
YXlvdXQoKTsKKyAgICB9CisKKyAgICBuZWVkc0xheW91dCgpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlbmRlclN1YnRyZWUuYmluZCh0aGlzKSk7CisgICAg
fQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICByZW5kZXIoKQorICAgIHsKKyAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgLy8gTm90IHJlc3BvbnNpYmxlIGZv
ciByZWN1cnNpbmcgdG8gY2hpbGQgdmlld3MuCisgICAgICAgIC8vIFNob3VsZCBub3QgYmUgY2Fs
bGVkIGRpcmVjdGx5OyB1c2UgdXBkYXRlTGF5b3V0KCkgaW5zdGVhZC4KKworICAgICAgICAvLyBS
ZXR1cm4gdmFsdWUgc2lnbmFscyB3aGV0aGVyIGNoaWxkIHZpZXdzIHNob3VsZCBhbHNvIHJlLXJl
bmRlci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgX3JlbmRlclN1YnRyZWUoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0
VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKworICAgICAgICBsZXQgc2hvdWxkUmVuZGVy
Q2hpbGRyZW4gPSB0aGlzLnJlbmRlcigpOworICAgICAgICBpZiAoIXNob3VsZFJlbmRlckNoaWxk
cmVuKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N1YnZpZXdzLmZvckVh
Y2goKHZpZXcpID0+IHsgdmlldy5fcmVuZGVyU3VidHJlZSgpOyB9KTsKKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264453</attachid>
            <date>2015-10-30 18:05:46 -0700</date>
            <delta_ts>2015-11-03 12:00:09 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151030180454.patch</filename>
            <type>text/plain</type>
            <size>90518</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
YzUzYWU1NDIwOGY1M2JhNGE1YTUxOWZiOTgwNzc5ZGNmZDMyZjNmLi5mNjBmYTY3YTMzYjI5NDUw
ODBhYjM2NzlmZTFkNWRmYTk1MmY4MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjkgQEAKKzIwMTUtMTAtMzAgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIGFsbG93aW5nIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IHRvIGJlIGFzc29jaWF0ZWQgd2l0
aCB0aGUgVmlldyBvYmplY3QsCisgICAgICAgIHJhdGhlciB0aGFuIGR5bmFtaWNhbGx5IGNyZWF0
aW5nIGEgbmV3IGVsZW1lbnQuIFZpZXcgYWxzbyBhZGRzIGEgYF9fdmlld2AgcHJvcGVydHkgdG8g
aXRzCisgICAgICAgIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dp
bmcgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIHZpZXcgY2xhc3NlcyByZWZh
Y3RvcmVkIGluIHRoaXMgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBsYXJnZWx5IG1lY2hhbmljYWwu
IER5bmFtaWNhbGx5CisgICAgICAgIGNyZWF0ZWQgRE9NIGVsZW1lbnRzIGFuZCByZWR1bmRhbnQg
ZWxlbWVudCBnZXR0ZXJzIGhhdmUgYmVlbiByZW1vdmVkLiBuZWVkc0xheW91dCBoYXMgcmVwbGFj
ZWQKKyAgICAgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQgd2hlcmUgYXBwcm9wcmlhdGUuIHVwZGF0
ZUxheW91dCBoYXMgYmVlbiByZW1vdmVkIGVudGlyZWx5IGZvciB2aWV3cyB0aGF0CisgICAgICAg
IHBlcmZvcm1lZCBubyBsYXlvdXQgb3RoZXIgdGhhbiB0byBjYXNjYWRlIGxheW91dHMgdG8gdGhl
aXIgY2hpbGRyZW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAg
ICAgICAgTW92ZWQgVGFiQmFyIGxheW91dCB1cGRhdGVzIG91dCBvZiBUYWJCcm93c2VyIGFuZCBp
bnRvIE1haW4uanMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVByb21wdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVBy
b21wdC5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJv
bXB0LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50
QnJvd3Nlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgZWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBl
LnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlld0NvbnRhaW5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIu
cHJvdG90eXBlLl9zaG93RW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyLnByb3RvdHlwZS5faGlkZUVudHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS51cGRhdGVM
YXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZS5fYWRkQ29udGVudFZpZXdFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX3JlbW92ZUNvbnRl
bnRWaWV3RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXV0
b1NpemVDb2x1bW5zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
bGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXBwbHlD
b2x1bW5XaWR0aHNNYXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUudXBkYXRlTGF5b3V0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVz
aXplckRyYWdnaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUucmVzaXplckRyYWdFbmRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQg
Y29tcG9uZW50cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGlu
ZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRh
dGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvbkJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5pbnNlcnROYXZpZ2F0aW9u
SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUucmVt
b3ZlTmF2aWdhdGlvbkl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIu
cHJvdG90eXBlLmdldCBtaW5pbXVtV2lkdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5wcm90b3R5cGUuX21vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5wcm90b3R5cGUuX21vdXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9tb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fY2FsY3VsYXRlTWluaW11bVdpZHRoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRTb29u
LnVwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5w
cm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuc2V0IGhpZGRl
bik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5
b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGlt
ZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUu
bGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90
b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUubGF5b3V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlLmdldCBlbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBl
LnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9S
ZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW5k
ZXJpbmdGcmFtZVRpbWVsaW5lVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5n
RnJhbWVUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlv
dXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFi
QmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0ucmVtb3ZlU3R5bGVz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0
ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFy
SXRlbS5hbmltYXRlVGFicyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlw
ZS5yZW1vdmVUYWJCYXJJdGVtLnJlbW92ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQmFyLnByb3RvdHlwZS5yZW1vdmVUYWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLmhhc05vcm1hbFRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQmFyLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5w
cm90b3R5cGUuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xv
c2UuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBh
bmRpbmdUYWJzQWZ0ZXJDbG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3Rv
dHlwZS5faGFuZGxlQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5
cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90
b3R5cGUuX2hhbmRsZU1vdXNlVXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90
b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5w
cm90b3R5cGUuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlv
dXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0
IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJv
d3Nlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2VyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UYWJCcm93c2VyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLmZpbHRlclVwZGF0
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUubmVlZHNM
YXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUudXBk
YXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcu
cHJvdG90eXBlLnVwZGF0ZUxheW91dElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcpOiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnNldCBkaXNwbGF5TW9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuc2V0IHNpemVNb2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5hZGRUb29sYmFySXRlbSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5jdXN0b21VcGRhdGVMYXlvdXQpOiBEZWxl
dGVkLgorICAgICAgICBSZW5hbWVkIHRvIGxheW91dC4gVGhpcyBlbGltaW5hdGVkIGEgbGF5ZXJp
bmcgdmlvbGF0aW9uIGluIE5hdmlnYXRpb25CYXIsCisgICAgICAgIHdoZXJlIHRoZSBmdW5jdGlv
biBwcmV2aW91c2x5IGtub3duIGFzIHVwZGF0ZUxheW91dCBjaGVja2VkIGZvciBhCisgICAgICAg
IGEgYGN1c3RvbVVwZGF0ZUxheW91dGAgZnVuY3Rpb24gcHJvcGVydHksIGFuZCB3b3VsZCBjYWxs
IGl0IGluc3RlYWQgb2YgaXRzCisgICAgICAgIG93biBsYXlvdXQgbG9naWMgaWYgZm91bmQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6IEFkZGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
LmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQg
c3Vidmlld3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmFkZFN1YnZp
ZXcpOgorICAgICAgICBBcHBlbmRzIGEgdmlldyB0byB0aGUgZW5kIG9mIHRoZSBzdWJ2aWV3IGxp
c3QuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuaW5zZXJ0U3Vidmlld0Jl
Zm9yZSk6CisgICAgICAgIEluc2VydHMgYSB2aWV3IGludG8gc3VidmlldyBsaXN0IGJlZm9yZSBh
bm90aGVyIHN1YnZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVt
b3ZlU3Vidmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVwbGFj
ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxh
eW91dCk6CisgICAgICAgIE5vIGxvbmdlciBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgor
ICAgICAgICBGb3JjZXMgYSBsYXlvdXQgaWYgb25lIGhhcyBiZWVuIHNjaGVkdWxlZCwgb3RoZXJ3
aXNlIGRvZXMgbm90aGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5u
ZWVkc0xheW91dCk6CisgICAgICAgIFNjaGVkdWxlcyBhIGxheW91dCBmb3IgdGhlIHZpZXcuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgT3Zl
cnJpZGRlbiBieSB2aWV3cyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBsYXlvdXQgbG9naWMuIExheW91
dHMKKyAgICAgICAgY2FzY2FkZSB0byBjaGlsZCB2aWV3cyBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLl9sYXlvdXRTdWJ0cmVlKToKKyAgICAgICAg
TWFpbiBsYXlvdXQgZW50cnkgcG9pbnQuIENhbGxlZCBieSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
dmlhIG5lZWRzTGF5dXQsIGJ5CisgICAgICAgIHVwZGF0ZUxheW91dCB3aGVuIGZvcmNpbmcgYSBz
eW5jaHJvbm91cyBsYXlvdXQsIGFuZCBjYWxsZWQgcmVjdXJzaXZlbHkgZHVyaW5nCisgICAgICAg
IHN1YnZpZXcgdHJhdmVyc2FsLgorCiAyMDE1LTEwLTMwICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1v
dGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBVbmV4cGVjdGVkIGJhY2tn
cm91bmQgY29sb3IgYmVoaW5kIHRoZSBDb250aW51ZSBidXR0b24gaW4gdGhlIERlYnVnZ2VyRGFz
aGJvYXJkVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzCmluZGV4IDI5OTdkMGJlNGVjZmQ3OGFhMmJkNmE3ZDdhYzNhMWU0Yjc4NDkzYjYu
LjdmYzZlOGMwZDUyZDg2OGY4NTZmMzY0ZTZjMTk3NmZhN2ZjZDY2N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTEyODIsNiAr
MTI4Miw3IEBAIFdlYkluc3BlY3Rvci5fd2luZG93Qmx1cnJlZCA9IGZ1bmN0aW9uKGV2ZW50KQog
V2ViSW5zcGVjdG9yLl93aW5kb3dSZXNpemVkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdGhp
cy50b29sYmFyLnVwZGF0ZUxheW91dCgpOworICAgIHRoaXMudGFiQmFyLnVwZGF0ZUxheW91dCgp
OwogICAgIHRoaXMuX3RhYkJyb3dzZXJTaXplRGlkQ2hhbmdlKCk7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYWNlMzc1YjZkODZl
ZjMzOTAwZmI0MGE5NjIwMzRkNjNkMTdlYjRkNy4uMTJmNTU5OTdmOTc2MjJjYjE5ZmI5ODMxNGQ4
OWE1MzhiMzI4YjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbApAQCAtMzM2LDYgKzMzNiw4IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9U
eXBlU2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dyYXBwZWRQcm9t
aXNlLmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaWV3LmpzIj48L3Nj
cmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlQ29tbWFuZFZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlTWVzc2FnZVZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlUHJvbXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29uc29sZVByb21wdC5qcwppbmRleCA4MGY0OTRiYmYwMTRlNWEyYTM5YmZmYmNhODY0MDIz
YTIxOGQ1MzIxLi5kNjU3MjM2YjdlZGM3N2JjMGNiNDgwOGYwZWUzM2VkZTRiOGQ0YzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xl
UHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnNvbGVQcm9tcHQuanMKQEAgLTIzLDE2ICsyMywxNSBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xh
c3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rv
ci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZGVsZWdhdGUsIG1pbWVUeXBlLCBlbGVtZW50KQog
ICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKICAgICAg
ICAgbWltZVR5cGUgPSBwYXJzZU1JTUVUeXBlKG1pbWVUeXBlKS50eXBlOwogCi0gICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtcHJvbXB0IiwgV2Vi
SW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS1wcm9tcHQiLCBXZWJJbnNwZWN0b3IuU3lu
dGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgdGhpcy5fZGVsZWdhdGUg
PSBkZWxlZ2F0ZSB8fCBudWxsOwogCkBAIC02NiwxMSArNjUsNiBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7CkBAIC0xMjYsMTEgKzEyMCw2IEBAIFdl
Ykluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29sZVByb21wdCBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CiAg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NvZGVNaXJy
b3IucmVmcmVzaCgpOwotICAgIH0KLQogICAgIHVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25z
LCBpbXBsaWNpdFN1ZmZpeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9s
bGVyLnVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCk7CkBAIC0x
NTgsNiArMTQ3LDExIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3MgQ29uc29s
ZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuICEhdGhp
cy50ZXh0OwogICAgIH0KIAorICAgIGxheW91dCgpCisgICAgeworICAgICAgICB0aGlzLl9jb2Rl
TWlycm9yLnJlZnJlc2goKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaGFuZGxl
VGFiS2V5KGNvZGVNaXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCmluZGV4IGJlN2JlMDI2Zjgx
ZmZhOGFjODhhZTE5OWM1NWUzMDRhNDE4OTA2YzIuLjcxMTM0YWI2ZTg0YTY2NmNjMmJkMzk0YTYz
OTlmMDNmZjQwOTY4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCkBAIC0yMywyOSArMjMsMjgg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRC
cm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVt
ZW50LCBkZWxlZ2F0ZSwgZGlzYWJsZUJhY2tGb3J3YXJkKQogICAgIHsKLSAgICAgICAgc3VwZXIo
KTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVs
ZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1icm93c2VyIik7CisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LWJyb3dzZXIiKTsKIAogICAgICAgICB0aGlzLl9u
YXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwotICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9uYXZpZ2F0aW9uQmFyKTsKIAogICAgICAgICB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXI7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250
ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0Nv
bnRhaW5lci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyKTsKIAogICAgICAgICB0aGlzLl9maW5kQmFubmVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyKHRoaXMpOwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQuRGlkU2hvdywgdGhpcy5fZmlu
ZEJhbm5lckRpZFNob3csIHRoaXMpOwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQuRGlkSGlkZSwgdGhpcy5fZmlu
ZEJhbm5lckRpZEhpZGUsIHRoaXMpOwogCiAgICAgICAgIGlmICghZGlzYWJsZUJhY2tGb3J3YXJk
KSB7Ci0gICAgICAgICAgICB0aGlzLl9iYWNrS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
Zmllci5Db21tYW5kT3JDb250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuQ29udHJvbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkxlZnQsIHRo
aXMuX2JhY2tCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOwotICAgICAg
ICAgICAgdGhpcy5fZm9yd2FyZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29t
bWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNv
bnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5SaWdodCwgdGhpcy5fZm9y
d2FyZEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgdGhpcy5fZWxlbWVudCk7CisgICAgICAgICAg
ICB0aGlzLl9iYWNrS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JD
b250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkxlZnQsIHRoaXMuX2JhY2tCdXR0b25D
bGlja2VkLmJpbmQodGhpcyksIHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9mb3J3
YXJkS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sIHwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlJpZ2h0LCB0aGlzLl9mb3J3YXJkQnV0dG9uQ2xpY2tl
ZC5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOwogCiAgICAgICAgICAgICB0aGlzLl9iYWNrQnV0
dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVt
KCJiYWNrIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCYWNrICglcykiKS5mb3JtYXQodGhpcy5f
YmFja0tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpLCAiSW1hZ2VzL0JhY2tGb3J3YXJkQXJy
b3dzLnN2ZyNiYWNrLWFycm93LW1hc2siLCA4LCAxMyk7CiAgICAgICAgICAgICB0aGlzLl9iYWNr
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fYmFja0J1dHRvbkNsaWNrZWQsIHRo
aXMpOwpAQCAtODEsMTEgKzgwLDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xh
c3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0KLQogICAgIGdldCBuYXZpZ2F0aW9uQmFyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQmFyOwpAQCAtMTMzLDEyICsxMjcsNiBAQCBXZWJJbnNw
ZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0czsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ci51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIudXBk
YXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSwgZXh0cmFBcmd1bWVudHMpCiAgICAgewog
ICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlLCBleHRyYUFyZ3VtZW50cyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJv
d3NlclRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcwppbmRleCA0ZWUyYWQzMzc0
NjllN2FhMDU1MzAwZDI0MjA4MTE4YjhmNjdjODUxLi41OTk3Y2IwN2VkZWZhOTk1ZmVjNzZmY2M3
YTgzZmI2ZGViNjI5MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29u
dGVudFZpZXcuanMKQEAgLTQyLDcgKzQyLDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3IGUKIAog
ICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1sYXN0LXNlbGVjdGVkLWRldGFp
bHMtc2lkZWJhci1wYW5lbCIsIG51bGwpOwogCi0gICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2Vy
ID0gdGhpcy5fY29udGVudEJyb3dzZXI7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRS
ZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuc2hvd0RldGFpbHNTaWRlYmFyUGFuZWxz
LCB0aGlzKTsKICAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hh
bmdlLCB0aGlzLl9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhp
cyk7CiAKQEAgLTgyLDcgKzgxLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29u
dGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3IGUKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TaWRlYmFyLkV2ZW50LlNpZGViYXJQYW5lbFNlbGVjdGVkLCB0aGlzLl9kZXRhaWxzU2lk
ZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRCcm93c2VyLmVsZW1lbnQpOworICAgICAgICB0
aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVudEJyb3dzZXIpOwogICAgIH0KIAogICAgIC8vIFB1
YmxpYwpAQCAtMTIyLDEzICsxMjEsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJD
b250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgZQogICAgICAg
ICB0aGlzLl9jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRl
bnRWaWV3cygpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBz
dXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci51cGRh
dGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBnZXQgbWFuYWdlc0RldGFpbHNTaWRlYmFyUGFuZWxz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwppbmRleCBhN2Ni
OGQzZmFkODEzNTc4YmQzMTg1N2VhMzYxMzk0NDgyMTJlMmM3Li4xODAyMmQzN2UzZDk4NWRjZTYz
NDQyZjQ1YWJiZjc5MmQ1ZDYwZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAorV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0
LCBleHRyYUFyZ3VtZW50cykKICAgICB7CkBAIC0zNCw4ICszNCw3IEBAIFdlYkluc3BlY3Rvci5D
b250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogCiAgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7
CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtdmlldyIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12aWV3Iik7CiAKICAg
ICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKICAgICB9CkBAIC0xOTUsMTEgKzE5
NCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gW107CiAgICAgfQogCi0gICAg
Z2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAg
fQotCiAgICAgZ2V0IHBhcmVudENvbnRhaW5lcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcGFyZW50Q29udGFpbmVyOwpAQCAtMjQ1LDExICsyMzksNiBAQCBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7
Ci0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfQotCiAgICAgc2hv
d24oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRW
aWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXggMzY4NTg4ZDEwMmExNTZhYThmMGM1MjEy
ODEyNmY5ZTU2N2Y5ZGEzMC4uYTZkYTFkYTQyMjBkNWVjNTYzN2I0ZjFhZjVhNzQwMDY4OTRmM2Fk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMKQEAgLTIzLDE0ICsyMywxMyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
ID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwog
ewotICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgY29uc3RydWN0b3IoKQogICAgIHsKICAg
ICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXctY29udGFpbmVyIik7CiAKICAgICAgICAgdGhpcy5f
YmFja0ZvcndhcmRMaXN0ID0gW107CiAgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IC0xOwpA
QCAtMzgsMTEgKzM3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xh
c3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIC8vIFB1Ymxp
YwogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnQ7Ci0gICAgfQotCiAgICAgZ2V0IGN1cnJlbnRJbmRleCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fY3VycmVudEluZGV4OwpAQCAtNjcsMTMgKzYxLDYgQEAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBX
ZWJJbnNwZWMKICAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2tGb3J3YXJkTGlzdFt0aGlzLl9jdXJy
ZW50SW5kZXhdOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICB2
YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7Ci0gICAgICAg
IGlmIChjdXJyZW50Q29udGVudFZpZXcpCi0gICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcu
dXBkYXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9i
amVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nLCBleHRyYUFyZ3VtZW50cykKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKQEAgLTQyOCwx
OCArNDE1LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29u
dGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9hZGRDb250ZW50Vmlld0VsZW1lbnQoY29udGVudFZpZXcpCi0gICAgewotICAgICAgICBp
ZiAoY29udGVudFZpZXcuZWxlbWVudC5wYXJlbnROb2RlICE9PSB0aGlzLl9lbGVtZW50KQotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50Vmlldy5lbGVtZW50KTsK
LSAgICB9Ci0KLSAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRWaWV3KQotICAg
IHsKLSAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSkKLSAgICAgICAg
ICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250ZW50Vmll
dy5lbGVtZW50KTsKLSAgICB9Ci0KICAgICBfZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KGNv
bnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRWaWV3LnZp
c2libGUpOwpAQCAtNDYwLDcgKzQzNSw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChlbnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5C
YWNrRm9yd2FyZEVudHJ5KTsKIAotICAgICAgICB0aGlzLl9hZGRDb250ZW50Vmlld0VsZW1lbnQo
ZW50cnkuY29udGVudFZpZXcpOworICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3MuaW5jbHVkZXMo
ZW50cnkuY29udGVudFZpZXcpKQorICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KGVudHJ5LmNv
bnRlbnRWaWV3KQorCiAgICAgICAgIGVudHJ5LnByZXBhcmVUb1Nob3coc2hvdWxkQ2FsbFNob3du
KTsKICAgICB9CiAKQEAgLTQ2OSw3ICs0NDYsOCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0NvbnRhaW5lciBleHRlbmRzIFdlYkluc3BlYwog
ICAgICAgICBjb25zb2xlLmFzc2VydChlbnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNr
Rm9yd2FyZEVudHJ5KTsKIAogICAgICAgICBlbnRyeS5wcmVwYXJlVG9IaWRlKCk7Ci0gICAgICAg
IHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3RWxlbWVudChlbnRyeS5jb250ZW50Vmlldyk7CisgICAg
ICAgIGlmICh0aGlzLnN1YnZpZXdzLmluY2x1ZGVzKGVudHJ5LmNvbnRlbnRWaWV3KSkKKyAgICAg
ICAgICAgIHRoaXMucmVtb3ZlU3VidmlldyhlbnRyeS5jb250ZW50VmlldykKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rh
dGFHcmlkLmpzCmluZGV4IDE5ZmM0NWZiMmFkMTlhYzI0MzRkZTZiNDFiMTMxYjVkMzRkYTdhYTEu
LmI3OGEwYjY1NzVjNjkwZTRkZGFlMjE3MmFiMGY0NmNiNDZiNWE2NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRh
R3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5z
cGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmll
dwogewogICAgIGNvbnN0cnVjdG9yKGNvbHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNh
bGxiYWNrLCBwcmVmZXJyZWRDb2x1bW5PcmRlcikKICAgICB7CkBAIC00OCw3ICs0OCw2IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICB0aGlzLnJlc2l6ZXJzID0gW107CiAgICAgICAgIHRoaXMuX2NvbHVt
bldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc05h
bWUgPSAiZGF0YS1ncmlkIjsKICAgICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlE
b3duLmJpbmQodGhpcyksIGZhbHNlKTsKQEAgLTQwMCw3ICszOTksNyBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKQogICAg
ICAgICAgICAgY29sdW1uWyJlbGVtZW50Il0uc3R5bGUud2lkdGggPSB3aWR0aHNbaWRlbnRpZmll
cl0gKyAiJSI7CiAgICAgICAgIHRoaXMuX2NvbHVtbldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7
Ci0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisgICAgICAgIHRoaXMubmVlZHNMYXlvdXQo
KTsKICAgICB9CiAKICAgICBpbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0
YSwgaW5zZXJ0aW9uSW5kZXgpCkBAIC01NTIsOSArNTUxLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgLy8K
ICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQgYWZ0ZXIgdGhlIERhdGFHcmlk
IGlzIGF0dGFjaGVkIHRvIGl0cwogICAgIC8vIHBhcmVudCBlbGVtZW50LCB0aGVuIHRoZSBEYXRh
R3JpZCdzIGNvbHVtbnMgd2lsbCBub3QgYmUgcmVzaXphYmxlLgotICAgIHVwZGF0ZUxheW91dCgp
CisgICAgbGF5b3V0KCkKICAgICB7Ci0gICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHVzZSBv
ZmZzZXRlcyBpZiB3ZSdyZSBub3QgYXR0YWNoZWQgdG8gdGhlIGRvY3VtZW50IHRyZWUgeWV0Lgor
ICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byB1c2Ugb2Zmc2V0cyBpZiB3ZSdyZSBub3QgYXR0
YWNoZWQgdG8gdGhlIGRvY3VtZW50IHRyZWUgeWV0LgogICAgICAgICBpZiAoIXRoaXMuX2NvbHVt
bldpZHRoc0luaXRpYWxpemVkICYmIHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCkgewogICAgICAg
ICAgICAgLy8gR2l2ZSBhbGwgdGhlIGNvbHVtbnMgaW5pdGlhbCB3aWR0aHMgbm93IHNvIHRoYXQg
ZHVyaW5nIGEgcmVzaXplLAogICAgICAgICAgICAgLy8gd2hlbiB0aGUgdHdvIGNvbHVtbnMgdGhh
dCBnZXQgcmVzaXplZCBnZXQgYSBwZXJjZW50IHZhbHVlIGZvcgpAQCAtNTgwLDcgKzU3OSw2IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcG9zaXRpb25SZXNpemVyRWxl
bWVudHMoKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLkV2ZW50LkRpZExheW91dCk7CiAgICAgfQogCiAgICAgY29sdW1uV2lkdGhz
TWFwKCkKQEAgLTYwMiw3ICs2MDAsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBE
YXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX2Rh
dGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltvcmRpbmFsXS5zdHlsZS53aWR0aCA9
IHdpZHRoOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICAg
ICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgIH0KIAogICAgIF9pc0NvbHVtblZpc2libGUoY29s
dW1uSWRlbnRpZmllcikKQEAgLTEyNjAsNyArMTI1OCw2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAg
IHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7CiAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwogICAgIH0KIAogICAgIHJlc2l6ZXJEcmFn
RW5kZWQocmVzaXplcikKQEAgLTEyNzAsMTIgKzEyNjcsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fY3VycmVudFJlc2l6ZXIgPSBudWxsOwotICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
RXZlbnQuRGlkTGF5b3V0KTsKICAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQgPSB7Ci0gICAgRGlkTGF5b3V0OiAiZGF0YWdyaWQtZGlkLWxheW91dCIsCiAgICAgU29ydENo
YW5nZWQ6ICJkYXRhZ3JpZC1zb3J0LWNoYW5nZWQiLAogICAgIFNlbGVjdGVkTm9kZUNoYW5nZWQ6
ICJkYXRhZ3JpZC1zZWxlY3RlZC1ub2RlLWNoYW5nZWQiLAogICAgIEV4cGFuZGVkTm9kZTogImRh
dGFncmlkLWV4cGFuZGVkLW5vZGUiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0
aE5hdmlnYXRpb25JdGVtLmpzCmluZGV4IDJkYmEyMGJhZGU0ZWM1ZmFlMzlhNDAyOGMyZjc3Y2Fm
NWVhMDExODguLjhhYjIxZTQ3ZGRiN2JjMjMwNGEwYmY3OTc2YzFmZjA4ZmFmMjk3NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNo
aWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTYx
LDcgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSA9
IGNsYXNzIEhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXQKIAogICAgICAgICAvLyBVcGRhdGUg
bGF5b3V0IGZvciB0aGUgc28gb3RoZXIgaXRlbXMgY2FuIGFkanVzdCB0byB0aGUgZXh0cmEgc3Bh
Y2UgKG9yIGxhY2sgdGhlcmVvZikgdG9vLgogICAgICAgICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0
aW9uQmFyKQotICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91
dFNvb24oKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci5uZWVkc0xheW91
dCgpOwogICAgIH0KIAogICAgIGdldCBsYXN0Q29tcG9uZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVs
aW5lVmlldy5qcwppbmRleCBkNDZmMTNkMDYwODY4ZWY3M2Q5NzI0OGEyMWJjYzg4Mjc4ODU4NTI0
Li5jYTQ1YWQ5MDEwYWE3NTEzZjFhZDA3YzMzMTZiOWFjZTUzZTRmZDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5
b3V0VGltZWxpbmVWaWV3LmpzCkBAIC04Niw3ICs4Niw3IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuCiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3VzZUxlYXZlVHJlZU91dGxpbmUu
YmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91
dCIpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxl
bWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAg
ICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQu
UmVjb3JkQWRkZWQsIHRoaXMuX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCkBA
IC0xMzMsMTUgKzEzMyw2IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBjbGFz
cyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIHRoaXMu
X3VwZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewot
ICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51
cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsK
LSAgICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVs
ZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRN
YXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKQEAgLTE4NSw2ICsxNzYsMTEg
QEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldyA9IGNsYXNzIExheW91dFRpbWVsaW5l
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0
KCk7CiAgICAgfQogCisgICAgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NQ
ZW5kaW5nUmVjb3JkcygpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9wcm9jZXNz
UGVuZGluZ1JlY29yZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKaW5kZXggZGU4NTY5NWU2MWNkY2Q3
NDc4ODdjYjc5OTU4NWY4YWUwOGFjYTRmNS4uOGZhY2YzYmEyZTllNGJkZWUyMDgyMWQwNjgzODk5
Mjk4ZDI3ZWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCkBAIC0yMywyNiArMjMsMjYgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmln
YXRpb25JdGVtcywgcm9sZSwgbGFiZWwpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAg
ICBzdXBlcihlbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKHRoaXMuY29uc3RydWN0b3IuU3R5bGVDbGFzc05hbWUgfHwgIm5hdmlnYXRpb24t
YmFyIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQudGFiSW5kZXggPSAwOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1lIHx8
ICJuYXZpZ2F0aW9uLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQudGFiSW5kZXggPSAwOwog
CiAgICAgICAgIGlmIChyb2xlKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInJvbGUiLCByb2xlKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InJvbGUiLCByb2xlKTsKICAgICAgICAgaWYgKGxhYmVsKQotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCi0gICAgICAgIHRo
aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5iaW5kKHRo
aXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1
ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZh
bHNlKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9tb3VzZURvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5f
Ymx1ci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3Vz
ZURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwogCisgICAgICAgIHRoaXMuX21pbmltdW1XaWR0aCA9
IE5hTjsKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zID0gW107CiAKICAgICAgICAgaWYg
KG5hdmlnYXRpb25JdGVtcykgewpAQCAtNzUsNyArNzUsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcy5zcGxpY2UoaW5kZXgsIDAsIG5hdmlnYXRp
b25JdGVtKTsKIAogICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQpCi0gICAgICAgICAgICBwYXJl
bnRFbGVtZW50ID0gdGhpcy5fZWxlbWVudDsKKyAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSB0
aGlzLmVsZW1lbnQ7CiAKICAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gdGhpcy5fbmF2aWdhdGlv
bkl0ZW1zW2luZGV4ICsgMV07CiAgICAgICAgIHZhciBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0
U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiBudWxsOwpAQCAtODQsOSArODQsOSBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUo
bmF2aWdhdGlvbkl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKIAotICAgICAgICB0
aGlzLl9taW5pbXVtV2lkdGhOZWVkc1JlY2FsY3VsYXRpb24gPSB0cnVlOworICAgICAgICB0aGlz
Ll9taW5pbXVtV2lkdGggPSBOYU47CiAKLSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7
CisgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlv
bkl0ZW07CiAgICAgfQpAQCAtMTA1LDcyICsxMDUsMTMgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMucmVtb3ZlKG5hdmlnYXRpb25JdGVtKTsKICAg
ICAgICAgbmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAotICAgICAgICB0aGlzLl9t
aW5pbXVtV2lkdGhOZWVkc1JlY2FsY3VsYXRpb24gPSB0cnVlOworICAgICAgICB0aGlzLl9taW5p
bXVtV2lkdGggPSBOYU47CiAKLSAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAg
ICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0ZW07
CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0U29vbigpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB0aGlzLl9uZWVkc0xheW91dCA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkK
LSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVu
ZGVmaW5lZDsKLQotICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRzTGF5b3V0KQotICAgICAgICAg
ICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91
cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZS5iaW5k
KHRoaXMpKTsKLSAgICB9Ci0KLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1h
dGlvbkZyYW1lKHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpOwotICAgICAgICAgICAgdGhp
cy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiB0aGlz
LmN1c3RvbVVwZGF0ZUxheW91dCA9PT0gImZ1bmN0aW9uIikgewotICAgICAgICAgICAgdGhpcy5j
dXN0b21VcGRhdGVMYXlvdXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIHRvIHRlc3QgaWYgdGhl
IGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3aWR0aC4KLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xh
c3NOYW1lKTsKLQotICAgICAgICAvLyBUZWxsIGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRvIHVwZGF0
ZSB0byBmdWxsIHdpZHRoIGlmIG5lZWRlZC4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0KHRydWUpOwotCi0gICAgICAgIHZhciB0b3RhbEl0
ZW1XaWR0aCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdhdGlv
bkl0ZW1zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAvLyBTa2lwIGZsZXhpYmxlIHNwYWNl
IGl0ZW1zIHNpbmNlIHRoZXkgY2FuIHRha2UgdXAgbm8gc3BhY2UgYXQgdGhlIG1pbmltdW0gd2lk
dGguCi0gICAgICAgICAgICBpZiAodGhpcy5fbmF2aWdhdGlvbkl0ZW1zW2ldIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggKz0gdGhpcy5fbmF2aWdh
dGlvbkl0ZW1zW2ldLmVsZW1lbnQucmVhbE9mZnNldFdpZHRoOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIGJhcldpZHRoID0gdGhpcy5fZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7Ci0KLSAgICAg
ICAgLy8gQWRkIHRoZSBjb2xsYXBzZWQgY2xhc3MgYmFjayBpZiB0aGUgaXRlbXMgYXJlIHdpZGVy
IHRoYW4gdGhlIGJhci4KLSAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpCi0g
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwotCi0gICAgICAgIC8vIEdpdmUgZWFj
aCBuYXZpZ2F0aW9uIGl0ZW0gdGhlIG9wcG9ydHVuaXR5IHRvIGNvbGxhcHNlIGZ1cnRoZXIuCi0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zW2ldLnVwZGF0ZUxheW91dCgp
OwotICAgIH0KLQogICAgIGdldCBzZWxlY3RlZE5hdmlnYXRpb25JdGVtKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE5hdmlnYXRpb25JdGVtIHx8IG51bGw7CkBAIC0yMDYs
MTggKzE0NywxMCBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRp
b25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9u
YXZpZ2F0aW9uSXRlbXM7CiAgICAgfQogCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfQotCiAgICAgZ2V0IG1pbmltdW1XaWR0aCgp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5fbWluaW11bVdpZHRoID09PSB1bmRlZmluZWQgfHwg
dGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uKSB7CisgICAgICAgIGlmIChpc05h
Tih0aGlzLl9taW5pbXVtV2lkdGgpKQogICAgICAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0g
dGhpcy5fY2FsY3VsYXRlTWluaW11bVdpZHRoKCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5f
bWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uOwotICAgICAgICB9Ci0KICAgICAgICAgcmV0
dXJuIHRoaXMuX21pbmltdW1XaWR0aDsKICAgICB9CiAKQEAgLTIyNyw2ICsxNjAsMzUgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgbGF5
b3V0KCkKKyAgICB7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNz
IHRvIHRlc3QgaWYgdGhlIGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3aWR0aC4KKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29s
bGFwc2VkU3R5bGVDbGFzc05hbWUpOworCisgICAgICAgIC8vIFRlbGwgZWFjaCBuYXZpZ2F0aW9u
IGl0ZW0gdG8gdXBkYXRlIHRvIGZ1bGwgd2lkdGggaWYgbmVlZGVkLgorICAgICAgICBmb3IgKGxl
dCBuYXZpZ2F0aW9uSXRlbSBvZiB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMpCisgICAgICAgICAgICBu
YXZpZ2F0aW9uSXRlbS51cGRhdGVMYXlvdXQodHJ1ZSk7CisKKyAgICAgICAgbGV0IHRvdGFsSXRl
bVdpZHRoID0gMDsKKyAgICAgICAgZm9yIChsZXQgbmF2aWdhdGlvbkl0ZW0gb2YgdGhpcy5fbmF2
aWdhdGlvbkl0ZW1zKSB7CisgICAgICAgICAgICAvLyBTa2lwIGZsZXhpYmxlIHNwYWNlIGl0ZW1z
IHNpbmNlIHRoZXkgY2FuIHRha2UgdXAgbm8gc3BhY2UgYXQgdGhlIG1pbmltdW0gd2lkdGguCisg
ICAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRmxl
eGlibGVTcGFjZU5hdmlnYXRpb25JdGVtKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICB0b3RhbEl0ZW1XaWR0aCArPSBuYXZpZ2F0aW9uSXRlbS5lbGVtZW50LnJlYWxP
ZmZzZXRXaWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGJhcldpZHRoID0gdGhpcy5l
bGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKKworICAgICAgICAvLyBBZGQgdGhlIGNvbGxhcHNlZCBj
bGFzcyBiYWNrIGlmIHRoZSBpdGVtcyBhcmUgd2lkZXIgdGhhbiB0aGUgYmFyLgorICAgICAgICBp
ZiAodG90YWxJdGVtV2lkdGggPiBiYXJXaWR0aCkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xh
c3NOYW1lKTsKKworICAgICAgICAvLyBHaXZlIGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBv
cnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVyLgorICAgICAgICBmb3IgKGxldCBuYXZpZ2F0aW9u
SXRlbSBvZiB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMpCisgICAgICAgICAgICBuYXZpZ2F0aW9uSXRl
bS51cGRhdGVMYXlvdXQoZmFsc2UpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9m
aW5kTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1PcklkZW50aWZpZXJPckluZGV4KQpAQCAt
MjU5LDcgKzIyMSw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdh
dGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSB0YWJJbmRleCBzbyBjbGlja2luZyB0aGUgbmF2aWdhdGlvbiBiYXIgZG9lcyBub3QgZ2l2ZSBp
dCBmb2N1cy4KICAgICAgICAgLy8gT25seSBrZWVwIHRoZSB0YWJJbmRleCBpZiBhbHJlYWR5IGZv
Y3VzZWQgZnJvbSBrZXlib2FyZCBuYXZpZ2F0aW9uLiBUaGlzIG1hdGNoZXMgWGNvZGUuCiAgICAg
ICAgIGlmICghdGhpcy5fZm9jdXNlZCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
QXR0cmlidXRlKCJ0YWJpbmRleCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUF0
dHJpYnV0ZSgidGFiaW5kZXgiKTsKIAogICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBldmVudC50
YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuUmFkaW9CdXR0
b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGlmICghaXRlbUVsZW1l
bnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtKQpAQCAtMjk3LDE1ICsyNTksMTUgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAog
ICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNs
YXNzTmFtZSk7Ci0gICAgICAgIGlmICghaXRlbUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmln
YXRpb25JdGVtIHx8ICF0aGlzLl9lbGVtZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkgeworICAg
ICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSB8fCAh
dGhpcy5lbGVtZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkgewogICAgICAgICAgICAgLy8gRmlu
ZCB0aGUgZWxlbWVudCB0aGF0IGlzIGF0IHRoZSBYIHBvc2l0aW9uIG9mIHRoZSBtb3VzZSwgZXZl
biB3aGVuIHRoZSBtb3VzZSBpcyBubyBsb25nZXIKICAgICAgICAgICAgIC8vIHZlcnRpY2FsbHkg
aW4gdGhlIG5hdmlnYXRpb24gYmFyLgotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LnBhZ2VYLCB0aGlzLl9lbGVtZW50LnRvdGFsT2Zmc2V0
VG9wICsgKHRoaXMuX2VsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMikpOworICAgICAgICAgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LnBhZ2VYLCB0aGlzLmVs
ZW1lbnQudG90YWxPZmZzZXRUb3AgKyAodGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpKTsK
ICAgICAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIGl0ZW1FbGVtZW50ID0gZWxlbWVudC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENs
YXNzKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1l
KTsKLSAgICAgICAgICAgIGlmICghaXRlbUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRp
b25JdGVtIHx8ICF0aGlzLl9lbGVtZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkKKyAgICAgICAg
ICAgIGlmICghaXRlbUVsZW1lbnQgfHwgIWl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtIHx8ICF0
aGlzLmVsZW1lbnQuY29udGFpbnMoaXRlbUVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0zMzYsNyArMjk4LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICBkZWxldGUgdGhpcy5fbW91c2VVcEV2ZW50TGlzdGVuZXI7CiAKICAgICAgICAgLy8g
UmVzdG9yZSB0aGUgdGFiSW5kZXggc28gdGhlIG5hdmlnYXRpb24gYmFyIGNhbiBiZSBpbiB0aGUg
a2V5Ym9hcmQgdGFiIGxvb3AuCi0gICAgICAgIHRoaXMuX2VsZW1lbnQudGFiSW5kZXggPSAwOwor
ICAgICAgICB0aGlzLmVsZW1lbnQudGFiSW5kZXggPSAwOwogCiAgICAgICAgIC8vIERpc3BhdGNo
IHRoZSBzZWxlY3RlZCBldmVudCBoZXJlIHNpbmNlIHRoZSBzZWxlY3RlZE5hdmlnYXRpb25JdGVt
IHNldHRlciBzdXJwcmVzc2VzIGl0CiAgICAgICAgIC8vIHdoaWxlIHRoZSBtb3VzZSBpcyBkb3du
IHRvIHByZXZlbnQgc2VuZGluZyBpdCB3aGlsZSBzY3J1YmJpbmcgdGhlIGJhci4KQEAgLTM5Mywx
MSArMzU1LDExIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlv
bkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9jYWxjdWxhdGVNaW5pbXVt
V2lkdGgoKQogICAgIHsKLSAgICAgICAgdmFyIHdhc0NvbGxhcHNlZCA9IHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgY29uc3Qgd2FzQ29sbGFwc2VkID0gdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRT
dHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xh
c3MgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiB0aGUgaXRlbXMgd2hlbiB0aGV5IGFyZSBjb2xs
YXBzZWQuCiAgICAgICAgIGlmICghd2FzQ29sbGFwc2VkKQotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAg
ICAgICB2YXIgdG90YWxJdGVtV2lkdGggPSAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkgewpAQCAtNDA5LDcgKzM3MSw3IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBz
dHlsZSBjbGFzcyBpZiB3ZSB3ZXJlIG5vdCBjb2xsYXBzZWQgYmVmb3JlLgogICAgICAgICBpZiAo
IXdhc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgcmV0dXJuIHRv
dGFsSXRlbVdpZHRoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggY2I3NTU0M2Mx
ZmE1N2QwM2IwMjA1MTI1MjgwMjAyZTViM2JkYzU4OC4uMWQ3NjExNTRlM2I3MGQ1OGIyMjlhNjMx
ZmNjOGI4M2JkMDNiMDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTgwLDcgKzgwLDcg
QEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtID0gY2xhc3MgTmF2aWdhdGlvbkl0ZW0gZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgiaGlkZGVuIiwgZmxhZyk7CiAKICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE5hdmln
YXRpb25CYXIpCi0gICAgICAgICAgICB0aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0ZUxh
eW91dFNvb24oKTsKKyAgICAgICAgICAgIHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXIubmVlZHNM
YXlvdXQoKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5l
Vmlldy5qcwppbmRleCAyYmI0MDM2YmQyMWVhZDVlMzlmMGNiMzExMmY4ZjY1Nzg1Y2ViMzliLi5h
MDE4N2VhNTdlMGZmNzk2M2MyODZiMmVlMjg3YmI5NzJmYzI5YmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdv
cmtUaW1lbGluZVZpZXcuanMKQEAgLTkzLDcgKzkzLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtU
aW1lbGluZVZpZXcgPSBjbGFzcyBOZXR3b3JrVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG8KICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoIm5ldHdvcmsiKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdy
aWQpOwogCiAgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRl
ZCwgdGhpcyk7CiAKQEAgLTEyOSwxNSArMTI5LDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1l
bGluZVZpZXcgPSBjbGFzcyBOZXR3b3JrVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8K
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY2xvc2VkKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0KCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRo
aXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5k
aW5nUmVjb3JkcygpOwotICAgIH0KLQogICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9t
RmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3Jp
ZC50cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVTY29wZUZpbHRlcnModHJlZUVsZW1lbnQpOwpAQCAt
MTg3LDYgKzE3OCwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldyA9IGNsYXNz
IE5ldHdvcmtUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAgICBzdXBlci50
cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7CiAgICAgfQog
CisgICAgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3Jk
cygpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9wcm9jZXNzUGVuZGluZ1JlY29y
ZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcwppbmRleCBlYmUxYWQ1NmFjZjVh
ODBmMjMxMmJmZWY0YjNlZTliNjJmYzY1NzYxLi44YzhhM2Q1YjRjY2Y0ZTNmMmMzMWQwY2M1YTQy
NGEzZTFmYWZmZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcwpAQCAtNDEs
MTMgKzQxLDE0IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldyA9IGNsYXNzIE92
ZXJ2aWV3VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAgICAgdGhpcy5fdGlt
ZWxpbmVSdWxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcjsKICAgICAgICAgdGhp
cy5fdGltZWxpbmVSdWxlci5hbGxvd3NDbGlwcGVkTGFiZWxzID0gdHJ1ZTsKKyAgICAgICAgLy8g
RklYTUU6IGNoYW5nZSB0byBgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX3RpbWVsaW5lUnVsZXIpYCBv
bmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTA3MDM+IGlzIGZpeGVkLgogICAgICAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVSdWxlci5lbGVtZW50KTsKIAogICAg
ICAgICB0aGlzLl9jdXJyZW50VGltZU1hcmtlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YXJrZXIoMCwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLlR5cGUuQ3VycmVudFRpbWUpOwog
ICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFkZE1hcmtlcih0aGlzLl9jdXJyZW50VGltZU1h
cmtlcik7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm92ZXJ2aWV3Iik7
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKIAogICAgICAgICB0
aGlzLl9uZXR3b3JrVGltZWxpbmUgPSByZWNvcmRpbmcudGltZWxpbmVzLmdldChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKICAgICAgICAgdGhpcy5fbmV0d29ya1Rp
bWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29y
ZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CkBAIC04OCwz
NSArODksNiBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBjbGFzcyBPdmVy
dmlld1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl9yZWNvcmRp
bmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAg
ICAgICAgdmFyIG9sZFplcm9UaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci56ZXJvVGltZTsKLSAg
ICAgICAgdmFyIG9sZFN0YXJ0VGltZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuc3RhcnRUaW1lOwot
ICAgICAgICB2YXIgb2xkRW5kVGltZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuZW5kVGltZTsKLSAg
ICAgICAgdmFyIG9sZEN1cnJlbnRUaW1lID0gdGhpcy5fY3VycmVudFRpbWVNYXJrZXIudGltZTsK
LQotICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLnplcm9UaW1lID0gdGhpcy56ZXJvVGltZTsK
LSAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsK
LSAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5lbmRUaW1lID0gdGhpcy5lbmRUaW1lOwotICAg
ICAgICB0aGlzLl9jdXJyZW50VGltZU1hcmtlci50aW1lID0gdGhpcy5jdXJyZW50VGltZTsKLQot
ICAgICAgICAvLyBUaGUgVGltZWxpbmVEYXRhR3JpZE5vZGUgZ3JhcGhzIGFyZSBwb3NpdGlvbmVk
IHdpdGggcGVyY2VudGFnZXMsIHNvIHRoZXkgYXV0byByZXNpemUgd2l0aCB0aGUgdmlldy4KLSAg
ICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIHJlZnJlc2ggdGhlIGdyYXBocyB3aGVuIHRoZSBhbnkg
b2YgdGhlIHRpbWVzIGNoYW5nZS4KLSAgICAgICAgaWYgKHRoaXMuemVyb1RpbWUgIT09IG9sZFpl
cm9UaW1lIHx8IHRoaXMuc3RhcnRUaW1lICE9PSBvbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1l
ICE9PSBvbGRFbmRUaW1lIHx8IHRoaXMuY3VycmVudFRpbWUgIT09IG9sZEN1cnJlbnRUaW1lKSB7
Ci0gICAgICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5b
MF07Ci0gICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7Ci0gICAgICAgICAgICAgICAg
ZGF0YUdyaWROb2RlLnJlZnJlc2hHcmFwaCgpOwotICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9k
ZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIG51bGwsIHRydWUpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci51cGRh
dGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlcHJlc2VudGVkT2Jq
ZWN0cygpOwotICAgIH0KLQogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAg
ewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2Rl
OwpAQCAtMTg3LDYgKzE1OSwzNCBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcg
PSBjbGFzcyBPdmVydmlld1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24odHJl
ZUVsZW1lbnQuc291cmNlQ29kZVRpbWVsaW5lLnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgfQog
CisgICAgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIGxldCBvbGRaZXJvVGltZSA9IHRoaXMuX3Rp
bWVsaW5lUnVsZXIuemVyb1RpbWU7CisgICAgICAgIGxldCBvbGRTdGFydFRpbWUgPSB0aGlzLl90
aW1lbGluZVJ1bGVyLnN0YXJ0VGltZTsKKyAgICAgICAgbGV0IG9sZEVuZFRpbWUgPSB0aGlzLl90
aW1lbGluZVJ1bGVyLmVuZFRpbWU7CisgICAgICAgIGxldCBvbGRDdXJyZW50VGltZSA9IHRoaXMu
X2N1cnJlbnRUaW1lTWFya2VyLnRpbWU7CisKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci56
ZXJvVGltZSA9IHRoaXMuemVyb1RpbWU7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuc3Rh
cnRUaW1lID0gdGhpcy5zdGFydFRpbWU7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuZW5k
VGltZSA9IHRoaXMuZW5kVGltZTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIudGlt
ZSA9IHRoaXMuY3VycmVudFRpbWU7CisKKyAgICAgICAgLy8gVGhlIFRpbWVsaW5lRGF0YUdyaWRO
b2RlIGdyYXBocyBhcmUgcG9zaXRpb25lZCB3aXRoIHBlcmNlbnRhZ2VzLCBzbyB0aGV5IGF1dG8g
cmVzaXplIHdpdGggdGhlIHZpZXcuCisgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byByZWZyZXNo
IHRoZSBncmFwaHMgd2hlbiB0aGUgYW55IG9mIHRoZSB0aW1lcyBjaGFuZ2UuCisgICAgICAgIGlm
ICh0aGlzLnplcm9UaW1lICE9PSBvbGRaZXJvVGltZSB8fCB0aGlzLnN0YXJ0VGltZSAhPT0gb2xk
U3RhcnRUaW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gb2xkRW5kVGltZSB8fCB0aGlzLmN1cnJlbnRU
aW1lICE9PSBvbGRDdXJyZW50VGltZSkgeworICAgICAgICAgICAgbGV0IGRhdGFHcmlkTm9kZSA9
IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOworICAgICAgICAgICAgd2hpbGUgKGRhdGFHcmlk
Tm9kZSkgeworICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5yZWZyZXNoR3JhcGgoKTsKKyAg
ICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9k
ZSh0cnVlLCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgb25jZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUwNzAzPiBpcyBm
aXhlZC4KKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci51cGRhdGVMYXlvdXQoKTsKKworICAg
ICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cygpOworICAgIH0KKwog
ICAgIC8vIFByaXZhdGUKIAogICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlEZXRhaWxzKGEsIGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9R
dWlja0NvbnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9RdWlja0NvbnNvbGUuanMKaW5kZXggYzRhZDUyMDI3ODdmMTNjYjI0NTEwOGM4ZTZiNTFjMWUz
ODQ2ZmNjMy4uODU2ZGQ5ZTM2ZDMyNDAwYmUzMWQzZDg5NDliNGQ3ZWMzNzYzMTVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25z
b2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1
aWNrQ29uc29sZS5qcwpAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1
aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5RdWlj
a0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwog
ewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAg
ICAgICBzdXBlcihlbGVtZW50KTsKIAogICAgICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5Ym9h
cmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZvY3Vz
LmJpbmQodGhpcykpOwogCkBAIC0zOCwxMiArMzgsMTEgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29u
c29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICAgICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsKICAg
ICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9FeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVu
dE1hcCA9IHt9OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInF1aWNrLWNvbnNvbGUiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InF1aWNrLWNvbnNvbGUiKTsKIAogICAgICAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdChudWxsLCAidGV4dC9qYXZhc2NyaXB0Iik7CiAgICAgICAgIHRoaXMu
cHJvbXB0LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGV4dC1wcm9tcHQiKTsKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnByb21wdC5lbGVtZW50KTsKKyAgICAgICAgdGhp
cy5hZGRTdWJ2aWV3KHRoaXMucHJvbXB0KTsKIAogICAgICAgICAvLyBGSVhNRTogQ29kZU1pcnJv
ciA0IGhhcyBhIGRlZmF1bHQgIkVzYyIga2V5IGhhbmRsZXIgdGhhdCBhbHdheXMgcHJldmVudHMg
ZGVmYXVsdC4KICAgICAgICAgLy8gT3VyIGtleWJvYXJkIHNob3J0Y3V0IGFib3ZlIHdpbGwgcmVz
cGVjdCB0aGUgZGVmYXVsdCBwcmV2ZW50ZWQgYW5kIGlnbm9yZSB0aGUgZXZlbnQKQEAgLTU1LDcg
KzU0LDcgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5wcm9tcHQuc2hvd24oKTsK
IAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5RdWlja0Nv
bnNvbGVOYXZpZ2F0aW9uQmFyOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlz
Ll9uYXZpZ2F0aW9uQmFyKTsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0
b3JJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW07
CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3Rvckl0ZW0uc2hvd1NlbGVjdG9y
QXJyb3dzID0gdHJ1ZTsKQEAgLTc0LDExICs3Myw2IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNv
bGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBuYXZpZ2F0aW9uQmFyKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQmFyOwpAQCAtODksMTMgKzgzLDYgQEAgV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnQuX2V4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOwogICAgIH0KIAot
ICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICAvLyBBIGhhcmQgbWF4aW11bSBzaXpl
IG9mIDMzJSBvZiB0aGUgd2luZG93LgotICAgICAgICB2YXIgbWF4aW11bUFsbG93ZWRIZWlnaHQg
PSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOwotICAgICAgICB0aGlzLnBy
b21wdC5lbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IG1heGltdW1BbGxvd2VkSGVpZ2h0ICsgInB4
IjsKLSAgICB9Ci0KICAgICBjb25zb2xlTG9nVmlzaWJpbGl0eUNoYW5nZWQodmlzaWJsZSkKICAg
ICB7CiAgICAgICAgIGlmICh2aXNpYmxlID09PSB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRh
aW5zKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFtZSkpCkBAIC0x
MDYsNiArOTMsMTUgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29u
c29sZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5FdmVudC5EaWRSZXNpemUp
OwogICAgIH0KIAorICAgIC8vIFByb3RlY3RlZAorCisgICAgbGF5b3V0KCkKKyAgICB7CisgICAg
ICAgIC8vIEEgaGFyZCBtYXhpbXVtIHNpemUgb2YgMzMlIG9mIHRoZSB3aW5kb3cuCisgICAgICAg
IGxldCBtYXhpbXVtQWxsb3dlZEhlaWdodCA9IE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0
ICogMC4zMyk7CisgICAgICAgIHRoaXMucHJvbXB0LmVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0g
bWF4aW11bUFsbG93ZWRIZWlnaHQgKyAicHgiOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAog
ICAgIF9leGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHNUb0Rpc3BsYXkoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJh
bWVUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcwppbmRleCBjOWY5N2ViMGJiNzZmYzFh
YTQ5NDYzM2E2ZTUzODZkNzZkOTdhYzdlLi42MTdjNTlkNDY2MTU5ZmI1NGJhNGUzZjQxZjZiMThi
MWUxMTRjOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5q
cwpAQCAtNzksNyArNzksNyBAQCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZp
ZXcgPSBjbGFzcyBSZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyBleHRlbgogICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFz
Y2VuZGluZzsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmVuZGVyaW5n
LWZyYW1lIik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3Jp
ZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKIAog
ICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5F
dmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZEFkZGVk
LCB0aGlzKTsKIApAQCAtMTMxLDE1ICsxMzEsNiBAQCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJh
bWVUaW1lbGluZVZpZXcgPSBjbGFzcyBSZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyBleHRlbgog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlv
dXQoKQotICAgIHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhp
cy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRp
bmdSZWNvcmRzKCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkK
ICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3Rl
ZE5vZGU7CkBAIC0yNDUsNiArMjM2LDExIEBAIFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRp
bWVsaW5lVmlldyA9IGNsYXNzIFJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3IGV4dGVuCiAgICAg
ICAgIHJldHVybiBudWxsOwogICAgIH0KIAorICAgIGxheW91dCgpCisgICAgeworICAgICAgICB0
aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5q
cwppbmRleCA0OGU1MDUyNjdhYjE0MDgwMGRhM2FjYzllMzlmMjQwNmRmM2ZhZGNiLi4xMjZhNDlk
ZTI4ZmM3MGM2YmUwNTAyYWRjMTAwMjFiYzhkZGY5YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxp
bmVWaWV3LmpzCkBAIC02OCw3ICs2OCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZp
ZXcgPSBjbGFzcyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0
T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
Y3JpcHQiKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAg
ICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsK
IApAQCAtMTA0LDI4ICsxMDQsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0g
Y2xhc3MgU2NyaXB0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAg
IHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lICE9PSB0aGlz
Ll9vbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSB0aGlzLl9vbGRFbmRUaW1lKSB7Ci0g
ICAgICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5bMF07
Ci0gICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7Ci0gICAgICAgICAgICAgICAgZGF0
YUdyaWROb2RlLnVwZGF0ZVJhbmdlVGltZXModGhpcy5zdGFydFRpbWUsIHRoaXMuZW5kVGltZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5yZXZlYWxlZCkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUdyaWROb2RlLnJlZnJlc2hJZk5lZWRlZCgpOwotICAgICAgICAgICAgICAg
IGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxs
LCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fb2xkU3RhcnRUaW1l
ID0gdGhpcy5zdGFydFRpbWU7Ci0gICAgICAgICAgICB0aGlzLl9vbGRFbmRUaW1lID0gdGhpcy5l
bmRUaW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCk7Ci0gICAgfQotCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CiAg
ICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CkBA
IC0yMTcsNiArMTk1LDI0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcgPSBjbGFz
cyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lICE9
PSB0aGlzLl9vbGRTdGFydFRpbWUgfHwgdGhpcy5lbmRUaW1lICE9PSB0aGlzLl9vbGRFbmRUaW1l
KSB7CisgICAgICAgICAgICBsZXQgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRy
ZW5bMF07CisgICAgICAgICAgICB3aGlsZSAoZGF0YUdyaWROb2RlKSB7CisgICAgICAgICAgICAg
ICAgZGF0YUdyaWROb2RlLnVwZGF0ZVJhbmdlVGltZXModGhpcy5zdGFydFRpbWUsIHRoaXMuZW5k
VGltZSk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5yZXZlYWxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUdyaWROb2RlLnJlZnJlc2hJZk5lZWRlZCgpOworICAgICAgICAg
ICAgICAgIGRhdGFHcmlkTm9kZSA9IGRhdGFHcmlkTm9kZS50cmF2ZXJzZU5leHROb2RlKGZhbHNl
LCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fb2xkU3Rh
cnRUaW1lID0gdGhpcy5zdGFydFRpbWU7CisgICAgICAgICAgICB0aGlzLl9vbGRFbmRUaW1lID0g
dGhpcy5lbmRUaW1lOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdS
ZWNvcmRzKCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3Byb2Nlc3NQZW5kaW5n
UmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UYWJCYXIuanMKaW5kZXggNmQ3ZjQzM2NmNDgyZWZmNGE5MzE1NjU4YzExOWUyZjBiOTI0
MDIzNS4uZGM1ZDkyMzZmYTBlOTlhMWM4YzdhODEwOGFlMjU2ZDg5NWM5NGRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwpA
QCAtMjMsMjMgKzIzLDIyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHRhYkJhckl0ZW1z
KQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOwot
ICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYmFyIik7CisgICAgICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOwogCiAgICAgICAgIHZh
ciB0b3BCb3JkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgIHRvcEJvcmRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidG9wLWJvcmRlciIpOwotICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRvcEJvcmRlckVsZW1lbnQpOworICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodG9wQm9yZGVyRWxlbWVudCk7CiAKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3Vz
ZURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5faGFuZGxlTW91c2VM
ZWF2ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2su
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWxlYXZlIiwgdGhpcy5faGFuZGxlTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0
aGlzLl90YWJCYXJJdGVtcyA9IFtdOwogCkBAIC0xMTEsNyArMTEwLDcgQEAgV2ViSW5zcGVjdG9y
LlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdmFyIGxhc3RJbmRleCA9IHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl90YWJCYXJJdGVtcy5s
ZW5ndGggLSAxIDogdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoOwogICAgICAgICBpbmRleCA9IE1h
dGgubWF4KDAsIE1hdGgubWluKGluZGV4LCBsYXN0SW5kZXgpKTsKIAotICAgICAgICBpZiAodGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CisgICAgICAgIGlm
ICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgewogICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKICAg
ICAgICAgICAgIGRvTm90QW5pbWF0ZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTEyNSwzNCArMTI0
LDM0IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1z
W2luZGV4ICsgMV07CiAgICAgICAgIHZhciBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2libGlu
ZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiAodGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25ld1Rh
Ykl0ZW0uZWxlbWVudCA6IG51bGwpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuaW5zZXJ0QmVm
b3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgdGhp
cy5lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxl
bWVudCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUt
dGFiIiwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9u
ZU5vcm1hbFRhYigpKTsKIAogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9
IG51bGw7CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IG51bGw7CiAK
ICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbnNlcnRpbmctdGFiIik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOwogCiAgICAgICAgICAgICB0
aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRlclRhYlNpemVzQW5kUG9z
aXRpb25zKTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1v
dmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiByZW1vdmVT
dHlsZXMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImluc2VydGluZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiaW5zZXJ0aW5nLXRhYiIpOwogCiAgICAgICAgICAgICB0YWJC
YXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYmVpbmctaW5zZXJ0ZWQiKTsKIAogICAg
ICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0
aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNM
aXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRvTm90QW5pbWF0ZSkgewpAQCAt
MTY4LDcgKzE2Nyw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
YmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRhYkJhckl0ZW0sIHtsZWZ0OiAwLCB3aWR0
aDogMH0pOwogCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRp
Yy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0
aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiYmVpbmctaW5zZXJ0ZWQiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwpAQCAtMTc3LDcg
KzE3Niw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmlt
YXRlVGFicy5iaW5kKHRoaXMpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLnVw
ZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGFiQmFyLkV2
ZW50LlRhYkJhckl0ZW1BZGRlZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMjA0LDcgKzIwMyw3IEBA
IFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQmFySXRlbSA9IG5leHRUYWJCYXJJ
dGVtOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBkb05vdEFuaW1hdGUg
PSB0cnVlOwogICAgICAgICB9CkBAIC0yMTksNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJh
ciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGFi
QmFySXRlbS5lbGVtZW50LnJlbW92ZSgpOwogCiAgICAgICAgIHZhciBoYXNNb3JlVGhhbk9uZU5v
cm1hbFRhYiA9IHRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCk7Ci0gICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5v
cm1hbFRhYik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUt
dGFiIiwgIWhhc01vcmVUaGFuT25lTm9ybWFsVGFiKTsKIAogICAgICAgICBjb25zdCBzaG91bGRP
cGVuRGVmYXVsdFRhYiA9ICF0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAmJiAhdGhpcy5oYXNOb3Jt
YWxUYWIoKTsKICAgICAgICAgaWYgKHNob3VsZE9wZW5EZWZhdWx0VGFiKQpAQCAtMjMwLDcgKzIy
OSw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5j
ZU1vdXNlRW50ZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGlu
Z1RhYnNBZnRlckNsb3NlKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOworICAgICAg
ICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtUmVt
b3ZlZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMjQ0LDggKzI0Myw4IEBAIFdlYkluc3BlY3Rvci5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAg
ICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImNsb3NpbmctdGFiIik7CiAKICAgICAgICAgICAgIHZhciBsZWZ0ID0g
MDsKICAgICAgICAgICAgIGZvciAodmFyIGN1cnJlbnRUYWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJh
ckl0ZW1zKSB7CkBAIC0yNjYsNyArMjY1LDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNz
IFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmIChsYXN0
Tm9ybWFsVGFiQmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQogICAgICAgICAg
ICAgICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VG
bG9hdChsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSArIDEpICsgInB4
IjsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRU
cmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHls
ZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMo
KQpAQCAtMjc1LDE2ICsyNzQsMTYgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJh
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0gJiYgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICE9PSBsYXN0Tm9ybWFs
VGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxl
bWVudC5zdHlsZS53aWR0aCA9IChwYXJzZUZsb2F0KHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5l
bGVtZW50LnN0eWxlLndpZHRoKSAtIDEpICsgInB4IjsKIAotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIpOwogCiAgICAgICAgICAgICB0
aGlzLnVwZGF0ZUxheW91dCgpOwogCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghZG9Ob3RBbmltYXRlKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CiAKICAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVk
Q2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKIApAQCAtMjk0LDcgKzI5Myw3IEBAIFdlYklu
c3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlVGFicy5iaW5kKHRo
aXMpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24o
KTsKKyAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1S
ZW1vdmVkLCB7dGFiQmFySXRlbX0pOwogCkBAIC0zNTAsNjEgKzM0OSw2IEBAIFdlYkluc3BlY3Rv
ci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3SW5kZXhd
OwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dFNvb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fbmVlZHNMYXlvdXQgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSB1
bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9uZWVkc0xheW91dCkKLSAgICAgICAg
ICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5f
dXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUuYmlu
ZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmlt
YXRpb25GcmFtZSh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAodGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQi
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IGZh
bHNlOwotCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZS10aXRs
ZXMiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQi
KTsKLQotICAgICAgICB2YXIgZmlyc3ROb3JtYWxUYWJJdGVtID0gbnVsbDsKLSAgICAgICAgZm9y
ICh2YXIgdGFiSXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewotICAgICAgICAgICAgaWYgKHRh
Ykl0ZW0ucGlubmVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZmly
c3ROb3JtYWxUYWJJdGVtID0gdGFiSXRlbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCFmaXJzdE5vcm1hbFRhYkl0ZW0pCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49
IDEyMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoImNvbGxhcHNlZCIpOwotCi0gICAgICAgIGlmIChmaXJzdE5vcm1hbFRhYkl0ZW0u
ZWxlbWVudC5vZmZzZXRXaWR0aCA+PSA2MCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGUtdGl0bGVzIik7Ci0gICAgfQotCiAg
ICAgZ2V0IHNlbGVjdGVkVGFiQmFySXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtOwpAQCAtNDM1LDE0ICszNzksNDEgQEAgV2ViSW5zcGVjdG9yLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
cmV0dXJuIHRoaXMuX3RhYkJhckl0ZW1zOwogICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKKyAg
ICBoYXNOb3JtYWxUYWIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Cisg
ICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5zb21lKCh0YWIpID0+ICF0YWIucGlubmVk
KTsKICAgICB9CiAKLSAgICBoYXNOb3JtYWxUYWIoKQorICAgIC8vIFByb3RlY3RlZAorCisgICAg
bGF5b3V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtcy5zb21lKCh0
YWIpID0+ICF0YWIucGlubmVkKTsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZS10aXRsZXMiKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOworCisgICAgICAgIGxl
dCBmaXJzdE5vcm1hbFRhYkl0ZW0gPSBudWxsOworICAgICAgICBmb3IgKGxldCB0YWJJdGVtIG9m
IHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAodGFiSXRlbS5waW5uZWQpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmaXJzdE5vcm1hbFRhYkl0ZW0g
PSB0YWJJdGVtOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IWZpcnN0Tm9ybWFsVGFiSXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
Zmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lkdGggPj0gMTIwKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBz
ZWQiKTsKKworICAgICAgICBpZiAoZmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lk
dGggPj0gNjApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoImhpZGUtdGl0bGVzIik7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAt
NDgzLDcgKzQ1NCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgewogICAgICAgICB2YXIgdGFiQmFySXRlbVNpemVz
QW5kUG9zaXRpb25zID0gbmV3IE1hcDsKIAotICAgICAgICB2YXIgYmFyUmVjdCA9IHRoaXMuX2Vs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IGJhclJlY3QgPSB0
aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAKICAgICAgICAgZm9yICh2YXIg
dGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewogICAgICAgICAgICAgdmFyIGJvdW5k
aW5nUmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKQEAg
LTUyMiw3ICs0OTMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgaWYgKCFiZWZvcmVUYWJTaXplc0Fu
ZFBvc2l0aW9ucykKICAgICAgICAgICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyA9
IHRoaXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogCi0gICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CiAg
ICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogCiAg
ICAgICAgICAgICB2YXIgYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRh
YkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwpAQCAtNTMyLDI2ICs1MDMsMjYgQEAgV2ViSW5z
cGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IAogICAgICAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIp
OwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5n
Iik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJleHBhbmRp
bmctdGFicyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
dGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJleHBhbmRpbmctdGFicyIpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJC
YXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAg
ICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5z
aXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHls
ZXNMaXN0ZW5lcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJlbW92
ZVN0eWxlcygpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGluZy10YWJzIik7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5n
Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFu
ZGluZy10YWJzIik7CiAKICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXpl
c0FuZFBvc2l0aW9ucygpOwogCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsK
IAotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Vi
a2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIs
IHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAg
ICAgICAgICAgIH0KQEAgLTYzMCw3ICs2MDEsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xh
c3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgY2xvc2VC
dXR0b25FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3Mo
V2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0uQ2xvc2VCdXR0b25TdHlsZUNsYXNzTmFtZSk7CiAgICAg
ICAgIGlmIChjbG9zZUJ1dHRvbkVsZW1lbnQgfHwgY2xpY2tlZE1pZGRsZUJ1dHRvbikgewogICAg
ICAgICAgICAgLy8gRGlzYWxsb3cgY2xvc2luZyB0aGUgZGVmYXVsdCB0YWIgaWYgaXQgaXMgdGhl
IG9ubHkgdGFiLgotICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaW5nbGUtdGFiIikpCisgICAgICAgICAg
ICBpZiAodGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygic2luZ2xlLXRhYiIpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgdGhpcy5yZW1vdmVUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIGZhbHNlLCB0cnVlKTsKQEAg
LTY1MSwxMCArNjIyLDEwIEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCi0gICAgICAgIGlmICghdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkgeworICAgICAgICBp
ZiAoIXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSkgewog
ICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnModGhpcy5f
cmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCkpOwotICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nLXRhYiIpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh0aGlzLl9tb3VzZU9mZnNldCA9PT0gdW5kZWZpbmVkKQpAQCAtNjk1LDcgKzY2
Niw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMuX3RhYkJhckl0ZW1z
W25ld0luZGV4ICsgMV07CiAgICAgICAgIHZhciBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0U2li
bGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiAodGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMuX25l
d1RhYkl0ZW0uZWxlbWVudCA6IG51bGwpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuaW5zZXJ0
QmVmb3JlKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1l
bnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX3NlbGVjdGVkVGFi
QmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBBbmltYXRlIHRoZSB0YWJzIHRoYXQgbW92ZSB0byBtYWtlIHJvb20gZm9yIHRoZSBzZWxlY3Rl
ZCB0YWIuIFRoaXMgd2FzIGNhdXNpbmcgbWUgdHJvdWJsZSB3aGVuIEkgdHJpZWQuCiAKQEAgLTcx
NCwxMCArNjg1LDEwIEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fbW91c2VJc0Rvd24pCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJkcmFnZ2luZy10YWIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImRyYWdnaW5nLXRhYiIpOwogCiAgICAgICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9z
ZWRTaW5jZU1vdXNlRW50ZXIpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFi
QmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICB2YXIgbGVmdCA9IDA7CkBAIC03NDUsMTQgKzcxNiwxNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgX2hhbmRs
ZU1vdXNlTGVhdmUoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fbW91c2VJc0Rvd24g
fHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgaWYgKHRoaXMuX21vdXNl
SXNEb3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIC8vIFRoaXMgZXZlbnQgY2FuIHN0aWxsIGZpcmUgd2hlbiB0aGUgbW91c2Ug
aXMgaW5zaWRlIHRoZSBlbGVtZW50IGlmIERPTSBub2RlcyBhcmUgYWRkZWQsIHJlbW92ZWQgb3Ig
Z2VuZXJhbGx5IGNoYW5nZSBpbnNpZGUuCiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtb3VzZSBy
ZWFsbHkgZGlkIGxlYXZlIHRoZSBlbGVtZW50IGJ5IGNoZWNraW5nIHRoZSBib3VuZHMuCiAgICAg
ICAgIC8vIEZJWE1FOiBJcyB0aGlzIGEgV2ViS2l0IGJ1ZyBvciBjb3JyZWN0IGJlaGF2aW9yPwot
ICAgICAgICB2YXIgYmFyUmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7Ci0gICAgICAgIHZhciBuZXdUYWJJdGVtUmVjdCA9IHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlz
Ll9uZXdUYWJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiBudWxsOworICAg
ICAgICBjb25zdCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICBjb25zdCBuZXdUYWJJdGVtUmVjdCA9IHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlz
Ll9uZXdUYWJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiBudWxsOwogICAg
ICAgICBpZiAoZXZlbnQucGFnZVkgPiBiYXJSZWN0LnRvcCAmJiBldmVudC5wYWdlWSA8IGJhclJl
Y3QuYm90dG9tICYmIGV2ZW50LnBhZ2VYID4gYmFyUmVjdC5sZWZ0ICYmIGV2ZW50LnBhZ2VYIDwg
KG5ld1RhYkl0ZW1SZWN0ID8gbmV3VGFiSXRlbVJlY3QucmlnaHQgOiBiYXJSZWN0LnJpZ2h0KSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzY4LDcgKzczOSw3IEBAIFdlYkluc3BlY3Rvci5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBf
aGFuZGxlTmV3VGFiTW91c2VFbnRlcihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5f
dGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoImFuaW1hdGluZyIpKQorICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xv
c2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJz
dGF0aWMtbGF5b3V0IikgfHwgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0
aW5nIikpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZmluaXNoRXhwYW5k
aW5nVGFic0FmdGVyQ2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCmluZGV4IDI4YmE5Mzk1NWEzOTgxMjMx
ZTY2NzZkNmEzODA2OGUyMWNmMmJkZGUuLjZlMDYwMmI4OGUzNGEzMjNkMDI2OTE4MmUxNzU1Y2E0
ZjZiYzhlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RhYkJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwpAQCAtMjMsMTkgKzIzLDE3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIg
PSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVj
dG9yLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZp
ZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJCYXIsIG5hdmlnYXRpb25TaWRlYmFy
LCBkZXRhaWxzU2lkZWJhcikKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRhYkJhciwgIk11c3QgcHJvdmlkZSBhIFRhYkJhci4iKTsKIAotICAgICAgICB0
aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYnJvd3NlciIpOworICAg
ICAgICBzdXBlcihlbGVtZW50KTsKIAotICAgICAgICB0aGlzLl90YWJCYXIgPSB0YWJCYXIgfHwg
bmV3IFdlYkluc3BlY3Rvci5UYWJCYXI7Ci0gICAgICAgIGlmICghdGFiQmFyKQotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90YWJCYXIuZWxlbWVudCk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItYnJvd3NlciIpOwogCisgICAgICAg
IHRoaXMuX3RhYkJhciA9IHRhYkJhcjsKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXIg
PSBuYXZpZ2F0aW9uU2lkZWJhciB8fCBudWxsOwogICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJh
ciA9IGRldGFpbHNTaWRlYmFyIHx8IG51bGw7CiAKQEAgLTQ4LDcgKzQ2LDcgQEAgV2ViSW5zcGVj
dG9yLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyOwotICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQpOworICAg
ICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVudFZpZXdDb250YWluZXIpOwogCiAgICAg
ICAgIHZhciBzaG93TmV4dFRhYiA9IHRoaXMuX3Nob3dOZXh0VGFiLmJpbmQodGhpcyk7CiAgICAg
ICAgIHZhciBzaG93UHJldmlvdXNUYWIgPSB0aGlzLl9zaG93UHJldmlvdXNUYWIuYmluZCh0aGlz
KTsKQEAgLTczLDExICs3MSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFi
QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0g
ICAgZ2V0IGVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0g
ICAgfQotCiAgICAgZ2V0IHRhYkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGFi
QmFyOwpAQCAtOTgsMTIgKzkxLDYgQEAgV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIgPSBjbGFzcyBU
YWJCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhp
cy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgIH0KIAotICAg
IHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICB0aGlzLl90YWJCYXIudXBkYXRlTGF5b3V0
KCk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnVwZGF0ZUxheW91dCgpOwot
ICAgIH0KLQogICAgIGJlc3RUYWJDb250ZW50Vmlld0ZvckNsYXNzKGNvbnN0cnVjdG9yKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyB8
fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRW
aWV3c1swXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKaW5kZXggN2EwMGRjYWNiYTkxYzMxMzZhNGJhODFi
YmUwMTE0MTk3YmIzNTU2My4uMDA0ZGFlOTY1ZmYzODMyNzY0NjA1MjQzNTVjMGRkNzQ4Y2Q4NTk2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMTcyLDI2ICsxNzIsMTggQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5D
b250ZW50VmlldwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlv
dXQoKQorICAgIGZpbHRlclVwZGF0ZWQoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NjaGVk
dWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlv
bkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAgICAgICAg
ICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRl
ZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCisgICAgbmVlZHNMYXlvdXQoKQogICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAg
ICAgICAvLyBGSVhNRTogbmVlZHNMYXlvdXQgY2FuIGJlIHJlbW92ZWQgb25jZSA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTUwNzAzPiBpcyBmaXhlZC4KKyAgICAgICAgaWYgKCF0aGlzLnZpc2libGUp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAg
fQogCi0gICAgZmlsdGVyVXBkYXRlZCgpCi0gICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0
aENvbXBvbmVudHNEaWRDaGFuZ2UpOworICAgICAgICBzdXBlci5uZWVkc0xheW91dCgpOwogICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZApAQCAtMjQ3LDE1ICsyMzksNCBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3ID0gY2xhc3MgVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3CiAKICAgICAgICAgdGhpcy5zaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCk7CiAgICAgfQotCi0gICAgbmVlZHNMYXlvdXQoKQotICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLnZpc2libGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRo
aXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVl
c3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMpKTsKLSAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VG9vbGJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rv
b2xiYXIuanMKaW5kZXggMjEzZTMyMDE3MTI4ZjlhZjI0MjY0ZWE5MGMzZjZlZmFjZjBlZmY1Mi4u
NGE1Zjc2ZjE0MzhjMzdjZWU1ZTUzMDc0ZDFlMTU2NDliNWY1NWU4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCkBAIC0z
NCwzMCArMzQsMzAgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKIAogICAgICAgICB0aGlzLl9jb250cm9sU2Vj
dGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhp
cy5fY29udHJvbFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFy
LkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAg
dGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9y
LlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAg
ICAgdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAi
ICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVyTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05h
bWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyTGVmdFNl
Y3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nl
bnRlckxlZnRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY2VudGVyU2VjdGlvbkVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fY2Vu
dGVyU2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNl
Y3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNlbnRlckl0
ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2Nl
bnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5z
cGVjdG9yLlRvb2xiYXIuQ2VudGVyUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyUmln
aHRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9yaWdodFNlY3Rp
b25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5
bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5SaWdodEl0ZW1TZWN0aW9u
U3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
cmlnaHRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICBpZiAoIWRvbnRBbGxvd01vZGVD
aGFuZ2VzKQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250
ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2Up
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51
IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgLy8gUHVibGljCkBAIC03MywxNSArNzMsMTUgQEAgV2ViSW5zcGVjdG9yLlRvb2xi
YXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1vZGUpCi0gICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZGlzcGxheU1vZGUp
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZGlzcGxh
eU1vZGUpOwogCiAgICAgICAgIC8vIFJldmVydCB0aGUgZm9yY2VkIGljb24tb25seSBtb2RlIGlm
IGl0IHdhcyBhcHBsaWVkLgogICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1vZGUgPT09IFdlYklu
c3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpCi0gICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xi
YXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOwog
CiAgICAgICAgIHRoaXMuX2Rpc3BsYXlNb2RlID0gbW9kZTsKIAotICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKG1vZGUpOwogCiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKQEAgLTk5LDE4ICs5
OSw1NiBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhcgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
ICh0aGlzLl9zaXplTW9kZSkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSh0aGlzLl9zaXplTW9kZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSh0aGlzLl9zaXplTW9kZSk7CiAKICAgICAgICAgdGhpcy5fc2l6ZU1vZGUgPSBtb2Rl
OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChtb2RlKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CiAKICAgICAgICAgdGhpcy51cGRhdGVM
YXlvdXQoKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuVG9vbGJhci5FdmVudC5TaXplTW9kZURpZENoYW5nZSk7CiAgICAgfQogCi0gICAgY3Vz
dG9tVXBkYXRlTGF5b3V0KCkKKyAgICBhZGRUb29sYmFySXRlbSh0b29sYmFySXRlbSwgc2VjdGlv
bklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2YXIgc2VjdGlvbkVsZW1lbnQ7CisKKyAgICAg
ICAgc3dpdGNoIChzZWN0aW9uSWRlbnRpZmllcikgeworICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0g
dGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uLkxlZnQ6CisgICAgICAgICAgICBz
ZWN0aW9uRWxlbWVudCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJM
ZWZ0OgorICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlv
bkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyOgorICAgICAgICAgICAg
c2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5DZW50
ZXJSaWdodDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyUmlnaHRT
ZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5SaWdodDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50
ID0gdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2VjdGlvbkVsZW1lbnQpOworCisgICAgICAg
IHRoaXMuYWRkTmF2aWdhdGlvbkl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25FbGVtZW50KTsKKyAg
ICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCiAgICAgewogICAgICAgICAv
LyBCYWlsIGVhcmx5IGlmIG91ciBzZWN0aW9ucyBhcmUgbm90IGNyZWF0ZWQgeWV0LiBUaGlzIG1l
YW5zIHdlIGFyZSBiZWluZyBjYWxsZWQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KICAgICAgICAgaWYg
KCF0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQgfHwgIXRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50
IHx8ICF0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KQpAQCAtMTE4LDE3ICsxNTYsMTcgQEAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIKIAogICAgICAgICAvLyBGb3JjZSBjb2xsYXBzZWQgc3R5bGUgZm9yIEphdmFT
Y3JpcHQgZGVidWdnYWJsZXMuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnYWJsZVR5
cGUgPT09IFdlYkluc3BlY3Rvci5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7Ci0gICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFz
c05hbWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gUmVt
b3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgdG8gdGVzdCBpZiB0aGUgaXRlbXMgY2FuIGZp
dCBhdCBmdWxsIHdpZHRoLgotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBm
b3JjZWQgaWNvbi1vbmx5IG1vZGUgaWYgaXQgd2FzIGFwcGxpZWQuCiAgICAgICAgIGlmICh0aGlz
Ll9kaXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFu
ZExhYmVsSG9yaXpvbnRhbCkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKLSAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5E
aXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLklj
b25Pbmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwpOwogICAgICAg
ICB9CiAKICAgICAgICAgZnVuY3Rpb24gaXNPdmVyZmxvd2luZ1Rvb2xiYXIoKQpAQCAtMTQ3LDUw
ICsxODUsMTQgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKICAgICAgICAgLy8gT25seSB0aGUgaG9yaXpvbnRh
bCBkaXNwbGF5IG1vZGUgc3VwcG9ydHMgY29sbGFwc2luZyBsYWJlbHMuCiAgICAgICAgIC8vIElm
IGFueSBzZWN0aW9ucyBhcmUgb3ZlcmZsb3dpbmcgdGhlIHRvb2xiYXIgdGhlbiBmb3JjZSB0aGUg
ZGlzcGxheSBtb2RlIHRvIGJlIGljb24gb25seS4KICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlN
b2RlID09PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jp
em9udGFsICYmIGlzT3ZlcmZsb3dpbmdUb29sYmFyLmNhbGwodGhpcykpIHsKLSAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25s
eSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3Bs
YXlNb2RlLkljb25Pbmx5KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNPdmVyZmxvd2lu
Z1Rvb2xiYXIuY2FsbCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFw
c2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0KLQotICAgIGFkZFRvb2xiYXJJdGVtKHRvb2xiYXJJ
dGVtLCBzZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHZhciBzZWN0aW9uRWxlbWVu
dDsKLQotICAgICAgICBzd2l0Y2ggKHNlY3Rpb25JZGVudGlmaWVyKSB7Ci0gICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5Db250cm9sOgotICAgICAgICAgICAgc2VjdGlv
bkVsZW1lbnQgPSB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQ7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uTGVmdDoKLSAg
ICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50OwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0
aW9uLkNlbnRlckxlZnQ6Ci0gICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NlbnRl
ckxlZnRTZWN0aW9uRWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXI6Ci0g
ICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50Owot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5T
ZWN0aW9uLkNlbnRlclJpZ2h0OgotICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9j
ZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uLlJpZ2h0OgotICAgICAgICAgICAgc2Vj
dGlvbkVsZW1lbnQgPSB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50OwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChzZWN0aW9uRWxlbWVudCk7
Ci0KLSAgICAgICAgdGhpcy5hZGROYXZpZ2F0aW9uSXRlbSh0b29sYmFySXRlbSwgc2VjdGlvbkVs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1ZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIyYzVkNWI0NDA3ZmZkM2Y1YTkzYzEzMzlmOTU4Yjk4ZGFj
NWVhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1ZpZXcuanMKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7Cisg
ICAgY29uc3RydWN0b3IoZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAg
ICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuX192aWV3ID0gdGhpczsKKyAgICAgICAgdGhpcy5f
c3Vidmlld3MgPSBbXTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBlbGVtZW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAgIH0KKworICAgIGdl
dCBzdWJ2aWV3cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3Vidmlld3M7CisgICAg
fQorCisgICAgYWRkU3Vidmlldyh2aWV3KQorICAgIHsKKyAgICAgICAgdGhpcy5pbnNlcnRTdWJ2
aWV3QmVmb3JlKHZpZXcsIG51bGwpOworICAgIH0KKworICAgIGluc2VydFN1YnZpZXdCZWZvcmUo
dmlldywgcmVmZXJlbmNlVmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFy
ZWZlcmVuY2VWaWV3IHx8IHJlZmVyZW5jZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmll
dyk7CisKKyAgICAgICAgaWYgKHRoaXMuX3N1YnZpZXdzLmluY2x1ZGVzKHZpZXcpKSB7CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIkNhbm5vdCBhZGQgdmlldyB0aGF0IGlzIGFs
cmVhZHkgYSBzdWJ2aWV3LiIsIHZpZXcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgYmVmb3JlSW5kZXggPSByZWZlcmVuY2VWaWV3ID8gdGhpcy5fc3Vi
dmlld3MuaW5kZXhPZihyZWZlcmVuY2VWaWV3KSA6IHRoaXMuX3N1YnZpZXdzLmxlbmd0aDsKKyAg
ICAgICAgaWYgKGJlZm9yZUluZGV4ID09PSAtMSkgeworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZmFsc2UsICJDYW5ub3QgaW5zZXJ0IHZpZXcuIEludmFsaWQgcmVmZXJlbmNlIHZpZXcuIiwg
cmVmZXJlbmNlVmlldyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl9zdWJ2aWV3cy5pbnNlcnRBdEluZGV4KHZpZXcsIGJlZm9yZUluZGV4KTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodmlldy5lbGVtZW50LCByZWZlcmVuY2VWaWV3
ID8gcmVmZXJlbmNlVmlldy5lbGVtZW50IDogbnVsbCk7CisgICAgfQorCisgICAgcmVtb3ZlU3Vi
dmlldyh2aWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmlldyBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5WaWV3KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmlldy5lbGVtZW50
LnBhcmVudE5vZGUgPT09IHRoaXMuX2VsZW1lbnQsICJTdWJ2aWV3IERPTSBlbGVtZW50IG11c3Qg
YmUgYSBjaGlsZCBvZiB0aGUgcGFyZW50IHZpZXcgZWxlbWVudC4iKTsKKworICAgICAgICBpZiAo
IXRoaXMuX3N1YnZpZXdzLmluY2x1ZGVzKHZpZXcpKSB7CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChmYWxzZSwgIkNhbm5vdCByZW1vdmUgdmlldyB3aGljaCBpc24ndCBhIHN1YnZpZXcuIiwg
dmlldyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9z
dWJ2aWV3cy5yZW1vdmUodmlldywgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
Q2hpbGQodmlldy5lbGVtZW50KTsKKyAgICB9CisKKyAgICByZXBsYWNlU3VidmlldyhvbGRWaWV3
LCBuZXdWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2xkVmlldyAhPT0gbmV3
VmlldywgIkNhbm5vdCByZXBsYWNlIHN1YnZpZXcgd2l0aCBpdHNlbGYuIik7CisKKyAgICAgICAg
dGhpcy5pbnNlcnRTdWJ2aWV3QmVmb3JlKG5ld1ZpZXcsIG9sZFZpZXcpOworICAgICAgICB0aGlz
LnJlbW92ZVN1YnZpZXcob2xkVmlldyk7CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0KCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBk
YXRlSWRlbnRpZmllcik7CisKKyAgICAgICAgdGhpcy5fbGF5b3V0U3VidHJlZSgpOworICAgIH0K
KworICAgIHVwZGF0ZUxheW91dElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
c2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworICAgIH0KKworICAgIG5lZWRzTGF5b3V0KCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVw
ZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fbGF5b3V0U3VidHJl
ZS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgp
CisgICAgeworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgIC8v
IE5vdCByZXNwb25zaWJsZSBmb3IgcmVjdXJzaW5nIHRvIGNoaWxkIHZpZXdzLgorICAgICAgICAv
LyBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseTsgdXNlIHVwZGF0ZUxheW91dCgpIGluc3Rl
YWQuCisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2xheW91dFN1YnRyZWUoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVm
aW5lZDsKKworICAgICAgICB0aGlzLmxheW91dCgpOworCisgICAgICAgIHRoaXMuX3N1YnZpZXdz
LmZvckVhY2goKHZpZXcpID0+IHsgdmlldy5fbGF5b3V0U3VidHJlZSgpOyB9KTsKKyAgICB9Cit9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264706</attachid>
            <date>2015-11-03 12:00:14 -0800</date>
            <delta_ts>2015-11-03 13:07:26 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151103115927.patch</filename>
            <type>text/plain</type>
            <size>90465</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZTEwMTU3ZDNlZjBmZmVhODg0ZGE0ZmFkYWVhYmI2ZWRiYzZmZTRhLi5mNDQ5ZjJkY2FhNjkyNzYw
MzMzMzE5NDRjNTUxZGUwZGQwYzY2OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjkgQEAKKzIwMTUtMTEtMDIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBWaWV3IGJhc2Ug
Y2xhc3MsIHdoaWNoIGVuY2Fwc3VsYXRlcyBET00gZWxlbWVudCBjcmVhdGlvbiwKKyAgICAgICAg
bGF5b3V0IHNjaGVkdWxpbmcsIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuIFRoZSBWaWV3IGNsYXNz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYW4gb3B0aW9uYWwKKyAgICAgICAgZWxlbWVudCBwYXJhbWV0
ZXIsIGFsbG93aW5nIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IHRvIGJlIGFzc29jaWF0ZWQgd2l0
aCB0aGUgVmlldyBvYmplY3QsCisgICAgICAgIHJhdGhlciB0aGFuIGR5bmFtaWNhbGx5IGNyZWF0
aW5nIGEgbmV3IGVsZW1lbnQuIFZpZXcgYWxzbyBhZGRzIGEgYF9fdmlld2AgcHJvcGVydHkgdG8g
aXRzCisgICAgICAgIGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dp
bmcgdGhlIEluc3BlY3RvciBVSS4KKworICAgICAgICBGb3IgdGhlIHZpZXcgY2xhc3NlcyByZWZh
Y3RvcmVkIGluIHRoaXMgcGF0Y2gsIHRoZSBjaGFuZ2VzIGFyZSBsYXJnZWx5IG1lY2hhbmljYWwu
IER5bmFtaWNhbGx5CisgICAgICAgIGNyZWF0ZWQgRE9NIGVsZW1lbnRzIGFuZCByZWR1bmRhbnQg
ZWxlbWVudCBnZXR0ZXJzIGhhdmUgYmVlbiByZW1vdmVkLiBuZWVkc0xheW91dCBoYXMgcmVwbGFj
ZWQKKyAgICAgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQgd2hlcmUgYXBwcm9wcmlhdGUuIHVwZGF0
ZUxheW91dCBoYXMgYmVlbiByZW1vdmVkIGVudGlyZWx5IGZvciB2aWV3cyB0aGF0CisgICAgICAg
IHBlcmZvcm1lZCBubyBsYXlvdXQgb3RoZXIgdGhhbiB0byBjYXNjYWRlIGxheW91dHMgdG8gdGhl
aXIgY2hpbGRyZW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAg
ICAgICAgTW92ZWQgVGFiQmFyIGxheW91dCB1cGRhdGVzIG91dCBvZiBUYWJCcm93c2VyIGFuZCBp
bnRvIE1haW4uanMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVByb21wdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVBy
b21wdC5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlUHJv
bXB0LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50
QnJvd3Nlci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgZWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBl
LnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlld0NvbnRhaW5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIu
cHJvdG90eXBlLl9zaG93RW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyLnByb3RvdHlwZS5faGlkZUVudHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS51cGRhdGVM
YXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZS5fYWRkQ29udGVudFZpZXdFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX3JlbW92ZUNvbnRl
bnRWaWV3RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXV0
b1NpemVDb2x1bW5zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
bGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXBwbHlD
b2x1bW5XaWR0aHNNYXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUudXBkYXRlTGF5b3V0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVz
aXplckRyYWdnaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUucmVzaXplckRyYWdFbmRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5zZXQg
Y29tcG9uZW50cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGlu
ZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRh
dGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvbkJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5pbnNlcnROYXZpZ2F0aW9u
SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUucmVt
b3ZlTmF2aWdhdGlvbkl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIu
cHJvdG90eXBlLmdldCBtaW5pbXVtV2lkdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5wcm90b3R5cGUuX21vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5wcm90b3R5cGUuX21vdXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9tb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fY2FsY3VsYXRlTWluaW11bVdpZHRoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRTb29u
LnVwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5w
cm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuc2V0IGhpZGRl
bik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5
b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGlt
ZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUu
bGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90
b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUubGF5b3V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlLmdldCBlbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBl
LnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9S
ZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW5k
ZXJpbmdGcmFtZVRpbWVsaW5lVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVuZGVyaW5n
RnJhbWVUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlv
dXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFi
QmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0ucmVtb3ZlU3R5bGVz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0
ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFy
SXRlbS5hbmltYXRlVGFicyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlw
ZS5yZW1vdmVUYWJCYXJJdGVtLnJlbW92ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQmFyLnByb3RvdHlwZS5yZW1vdmVUYWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLmhhc05vcm1hbFRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQmFyLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5w
cm90b3R5cGUuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xv
c2UuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBh
bmRpbmdUYWJzQWZ0ZXJDbG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3Rv
dHlwZS5faGFuZGxlQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5
cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90
b3R5cGUuX2hhbmRsZU1vdXNlVXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90
b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5w
cm90b3R5cGUuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlv
dXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0
IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJv
d3Nlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2VyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UYWJCcm93c2VyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLmZpbHRlclVwZGF0
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUubmVlZHNM
YXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUudXBk
YXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcu
cHJvdG90eXBlLnVwZGF0ZUxheW91dElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcpOiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Ub29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnNldCBkaXNwbGF5TW9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuc2V0IHNpemVNb2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5hZGRUb29sYmFySXRlbSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5jdXN0b21VcGRhdGVMYXlvdXQpOiBEZWxl
dGVkLgorICAgICAgICBSZW5hbWVkIHRvIGxheW91dC4gVGhpcyBlbGltaW5hdGVkIGEgbGF5ZXJp
bmcgdmlvbGF0aW9uIGluIE5hdmlnYXRpb25CYXIsCisgICAgICAgIHdoZXJlIHRoZSBmdW5jdGlv
biBwcmV2aW91c2x5IGtub3duIGFzIHVwZGF0ZUxheW91dCBjaGVja2VkIGZvciBhCisgICAgICAg
IGEgYGN1c3RvbVVwZGF0ZUxheW91dGAgZnVuY3Rpb24gcHJvcGVydHksIGFuZCB3b3VsZCBjYWxs
IGl0IGluc3RlYWQgb2YgaXRzCisgICAgICAgIG93biBsYXlvdXQgbG9naWMgaWYgZm91bmQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6IEFkZGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
LmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQg
c3Vidmlld3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmFkZFN1YnZp
ZXcpOgorICAgICAgICBBcHBlbmRzIGEgdmlldyB0byB0aGUgZW5kIG9mIHRoZSBzdWJ2aWV3IGxp
c3QuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuaW5zZXJ0U3Vidmlld0Jl
Zm9yZSk6CisgICAgICAgIEluc2VydHMgYSB2aWV3IGludG8gc3VidmlldyBsaXN0IGJlZm9yZSBh
bm90aGVyIHN1YnZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVt
b3ZlU3Vidmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVwbGFj
ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxh
eW91dCk6CisgICAgICAgIE5vIGxvbmdlciBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgor
ICAgICAgICBGb3JjZXMgYSBsYXlvdXQgaWYgb25lIGhhcyBiZWVuIHNjaGVkdWxlZCwgb3RoZXJ3
aXNlIGRvZXMgbm90aGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5u
ZWVkc0xheW91dCk6CisgICAgICAgIFNjaGVkdWxlcyBhIGxheW91dCBmb3IgdGhlIHZpZXcuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgT3Zl
cnJpZGRlbiBieSB2aWV3cyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBsYXlvdXQgbG9naWMuIExheW91
dHMKKyAgICAgICAgY2FzY2FkZSB0byBjaGlsZCB2aWV3cyBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLl9sYXlvdXRTdWJ0cmVlKToKKyAgICAgICAg
TWFpbiBsYXlvdXQgZW50cnkgcG9pbnQuIENhbGxlZCBieSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
dmlhIG5lZWRzTGF5dXQsIGJ5CisgICAgICAgIHVwZGF0ZUxheW91dCB3aGVuIGZvcmNpbmcgYSBz
eW5jaHJvbm91cyBsYXlvdXQsIGFuZCBjYWxsZWQgcmVjdXJzaXZlbHkgZHVyaW5nCisgICAgICAg
IHN1YnZpZXcgdHJhdmVyc2FsLgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCB0dk9TIGFuZCB3YXRjaE9TIHRvIFNVUFBP
UlRFRF9QTEFURk9STVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcwppbmRleCAyOTk3ZDBiZTRlY2ZkNzhhYTJiZDZhN2Q3YWMzYTFlNGI3ODQ5
M2I2Li43ZmM2ZThjMGQ1MmQ4NjhmODU2ZjM2NGU2YzE5NzZmYTdmY2Q2NjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xMjgy
LDYgKzEyODIsNyBAQCBXZWJJbnNwZWN0b3IuX3dpbmRvd0JsdXJyZWQgPSBmdW5jdGlvbihldmVu
dCkKIFdlYkluc3BlY3Rvci5fd2luZG93UmVzaXplZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAg
IHRoaXMudG9vbGJhci51cGRhdGVMYXlvdXQoKTsKKyAgICB0aGlzLnRhYkJhci51cGRhdGVMYXlv
dXQoKTsKICAgICB0aGlzLl90YWJCcm93c2VyU2l6ZURpZENoYW5nZSgpOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGFjZTM3NWI2
ZDg2ZWYzMzkwMGZiNDBhOTYyMDM0ZDYzZDE3ZWI0ZDcuLjEyZjU1OTk3Zjk3NjIyY2IxOWZiOTgz
MTRkODlhNTM4YjMyOGIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTMzNiw2ICszMzYsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVk
UHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlldy5qcyI+
PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29uc29sZUNvbW1hbmRWaWV3Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudFZpZXcuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29uc29sZVByb21wdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKaW5kZXggODBmNDk0YmJmMDE0ZTVhMmEzOWJmZmJjYTg2
NDAyM2EyMThkNTMyMS4uZDY1NzIzNmI3ZWRjNzdiYzBjYjQ4MDhmMGVlMzNlZGU0YjhkNGM0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
c29sZVByb21wdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db25zb2xlUHJvbXB0LmpzCkBAIC0yMywxNiArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9
IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNw
ZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuVmlldwogewogICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBtaW1lVHlwZSwgZWxlbWVu
dCkKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCiAg
ICAgICAgIG1pbWVUeXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSkudHlwZTsKIAotICAgICAg
ICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLXByb21wdCIs
IFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtcHJvbXB0IiwgV2ViSW5zcGVjdG9y
LlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHRoaXMuX2RlbGVn
YXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIApAQCAtNjYsMTEgKzY1LDYgQEAgV2ViSW5zcGVjdG9y
LkNvbnNvbGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgZGVsZWdhdGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwpAQCAtMTI2LDExICsxMjAsNiBA
QCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgp
OwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICB0aGlzLl9jb2Rl
TWlycm9yLnJlZnJlc2goKTsKLSAgICB9Ci0KICAgICB1cGRhdGVDb21wbGV0aW9ucyhjb21wbGV0
aW9ucywgaW1wbGljaXRTdWZmaXgpCiAgICAgewogICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29u
dHJvbGxlci51cGRhdGVDb21wbGV0aW9ucyhjb21wbGV0aW9ucywgaW1wbGljaXRTdWZmaXgpOwpA
QCAtMTU4LDYgKzE0NywxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENv
bnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiAh
IXRoaXMudGV4dDsKICAgICB9CiAKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5f
Y29kZU1pcnJvci5yZWZyZXNoKCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2hh
bmRsZVRhYktleShjb2RlTWlycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwppbmRleCBiZTdiZTAy
NmY4MWZmYThhYzg4YWUxOTljNTVlMzA0YTQxODkwNmMyLi43MTEzNGFiNmU4NGE2NjZjYzJiZDM5
NGE2Mzk5ZjAzZmY0MDk2ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwpAQCAtMjMsMjkgKzIz
LDI4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250
ZW50QnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3Io
ZWxlbWVudCwgZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKICAgICB7Ci0gICAgICAgIHN1
cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQg
PSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtYnJvd3NlciIpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1icm93c2VyIik7CiAKICAgICAgICAgdGhp
cy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQp
OworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAg
ICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwg
dGhpcyk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZp
ZXdDb250YWluZXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250
ZW50Vmlld0NvbnRhaW5lcik7CiAKICAgICAgICAgdGhpcy5fZmluZEJhbm5lciA9IG5ldyBXZWJJ
bnNwZWN0b3IuRmluZEJhbm5lcih0aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZFNob3csIHRoaXMu
X2ZpbmRCYW5uZXJEaWRTaG93LCB0aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZEhpZGUsIHRoaXMu
X2ZpbmRCYW5uZXJEaWRIaWRlLCB0aGlzKTsKIAogICAgICAgICBpZiAoIWRpc2FibGVCYWNrRm9y
d2FyZCkgewotICAgICAgICAgICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
TW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0
LCB0aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAg
ICAgICAgICAgIHRoaXMuX2ZvcndhcmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVy
LkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMu
X2ZvcndhcmRCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOworICAgICAg
ICAgICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFu
ZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRy
b2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0
dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5f
Zm9yd2FyZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJv
bCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5SaWdodCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNs
aWNrZWQuYmluZCh0aGlzKSwgdGhpcy5lbGVtZW50KTsKIAogICAgICAgICAgICAgdGhpcy5fYmFj
a0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbSgiYmFjayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmFjayAoJXMpIikuZm9ybWF0KHRo
aXMuX2JhY2tLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9CYWNrRm9yd2Fy
ZEFycm93cy5zdmcjYmFjay1hcnJvdy1tYXNrIiwgOCwgMTMpOwogICAgICAgICAgICAgdGhpcy5f
YmFja0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2JhY2tCdXR0b25DbGlja2Vk
LCB0aGlzKTsKQEAgLTgxLDExICs4MCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9
IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAg
Ly8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKQEAgLTEzMywxMiArMTI3LDYgQEAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdHM7CiAg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRp
b25CYXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
LnVwZGF0ZUxheW91dCgpOwotICAgIH0KLQogICAgIHNob3dDb250ZW50Vmlld0ZvclJlcHJlc2Vu
dGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUsIGV4dHJhQXJndW1lbnRzKQogICAg
IHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhpcy5jb250ZW50Vmlld0ZvclJlcHJlc2Vu
dGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSwgZXh0cmFBcmd1bWVudHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuanMKaW5kZXggNGVlMmFk
MzM3NDY5ZTdhYTA1NTMwMGQyNDIwODExOGI4ZjY3Yzg1MS4uNTk5N2NiMDdlZGVmYTk5NWZlYzc2
ZmNjN2E4M2ZiNmRlYjYyOTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRh
YkNvbnRlbnRWaWV3LmpzCkBAIC00Miw3ICs0Miw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBl
CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkRGV0YWlsc1NpZGViYXJQYW5lbFNldHRpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItbGFzdC1zZWxlY3RlZC1k
ZXRhaWxzLXNpZGViYXItcGFuZWwiLCBudWxsKTsKIAotICAgICAgICB0aGlzLl9jb250ZW50QnJv
d3NlciA9IHRoaXMuX2NvbnRlbnRCcm93c2VyOwogICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJy
ZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLnNob3dEZXRhaWxzU2lkZWJhclBh
bmVscywgdGhpcyk7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0Rp
ZENoYW5nZSwgdGhpcy5fY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2Us
IHRoaXMpOwogCkBAIC04Miw3ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBlCiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZGV0YWlsc1NpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuU2lkZWJhci5FdmVudC5TaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcy5fZGV0YWls
c1NpZGViYXJQYW5lbFNlbGVjdGVkLCB0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50QnJvd3Nlci5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRCcm93c2VyKTsKICAgICB9CiAKICAgICAv
LyBQdWJsaWMKQEAgLTEyMiwxMyArMTIxLDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3IGUKICAg
ICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxD
b250ZW50Vmlld3MoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAg
ICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIu
dXBkYXRlTGF5b3V0KCk7Ci0gICAgfQotCiAgICAgZ2V0IG1hbmFnZXNEZXRhaWxzU2lkZWJhclBh
bmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXgg
YTdjYjhkM2ZhZDgxMzU3OGJkMzE4NTdlYTM2MTM5NDQ4MjEyZTJjNy4uMTgwMjJkMzdlM2Q5ODVk
Y2U2MzQ0MmY0NWFiYmY3OTJkNWQ2MGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTIzLDcgKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9i
amVjdCwgZXh0cmFBcmd1bWVudHMpCiAgICAgewpAQCAtMzQsOCArMzQsNyBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKIAogICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2Jq
ZWN0OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXci
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtdmlldyIpOwog
CiAgICAgICAgIHRoaXMuX3BhcmVudENvbnRhaW5lciA9IG51bGw7CiAgICAgfQpAQCAtMTk1LDEx
ICsxOTQsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIFtdOwogICAgIH0KIAot
ICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Owot
ICAgIH0KLQogICAgIGdldCBwYXJlbnRDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3BhcmVudENvbnRhaW5lcjsKQEAgLTI0NSwxMSArMjM5LDYgQEAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0g
ICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0KLQogICAg
IHNob3duKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IDM2ODU4OGQxMDJhMTU2YWE4ZjBj
NTIxMjgxMjZmOWU1NjdmOWRhMzAuLmE2ZGExZGE0MjIwZDVlYzU2MzdiNGYxYWY1YTc0MDA2ODk0
ZjNhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC0yMywxNCArMjMs
MTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0NvbnRhaW5lciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZp
ZXcKIHsKLSAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIGNvbnN0cnVjdG9yKCkKICAgICB7
CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiY29udGVudC12aWV3LWNvbnRhaW5lciIpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12aWV3LWNvbnRhaW5lciIpOwogCiAgICAgICAgIHRo
aXMuX2JhY2tGb3J3YXJkTGlzdCA9IFtdOwogICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSAt
MTsKQEAgLTM4LDExICszNyw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9
IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0KLQogICAgIGdldCBjdXJyZW50SW5kZXgoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRJbmRleDsKQEAgLTY3LDEzICs2MSw2IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVu
ZHMgV2ViSW5zcGVjCiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhpcy5f
Y3VycmVudEluZGV4XTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAg
ICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwotICAg
ICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQotICAgICAgICAgICAgY3VycmVudENvbnRlbnRW
aWV3LnVwZGF0ZUxheW91dCgpOwotICAgIH0KLQogICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50
ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZywgZXh0cmFBcmd1bWVudHMp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CkBAIC00
MjgsMTggKzQxNSw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNz
IENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRWaWV3KQotICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSAhPT0gdGhpcy5fZWxlbWVudCkK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFZpZXcuZWxlbWVu
dCk7Ci0gICAgfQotCi0gICAgX3JlbW92ZUNvbnRlbnRWaWV3RWxlbWVudChjb250ZW50VmlldykK
LSAgICB7Ci0gICAgICAgIGlmIChjb250ZW50Vmlldy5lbGVtZW50LnBhcmVudE5vZGUpCi0gICAg
ICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGVu
dFZpZXcuZWxlbWVudCk7Ci0gICAgfQotCiAgICAgX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50Vmll
dyhjb250ZW50VmlldykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50Vmll
dy52aXNpYmxlKTsKQEAgLTQ2MCw3ICs0MzUsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0NvbnRhaW5lciBleHRlbmRzIFdlYkluc3BlYwog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQmFja0ZvcndhcmRFbnRyeSk7CiAKLSAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdFbGVt
ZW50KGVudHJ5LmNvbnRlbnRWaWV3KTsKKyAgICAgICAgaWYgKCF0aGlzLnN1YnZpZXdzLmluY2x1
ZGVzKGVudHJ5LmNvbnRlbnRWaWV3KSkKKyAgICAgICAgICAgIHRoaXMuYWRkU3VidmlldyhlbnRy
eS5jb250ZW50VmlldykKKwogICAgICAgICBlbnRyeS5wcmVwYXJlVG9TaG93KHNob3VsZENhbGxT
aG93bik7CiAgICAgfQogCkBAIC00NjksNyArNDQ2LDggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNw
ZWMKICAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
QmFja0ZvcndhcmRFbnRyeSk7CiAKICAgICAgICAgZW50cnkucHJlcGFyZVRvSGlkZSgpOwotICAg
ICAgICB0aGlzLl9yZW1vdmVDb250ZW50Vmlld0VsZW1lbnQoZW50cnkuY29udGVudFZpZXcpOwor
ICAgICAgICBpZiAodGhpcy5zdWJ2aWV3cy5pbmNsdWRlcyhlbnRyeS5jb250ZW50VmlldykpCisg
ICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoZW50cnkuY29udGVudFZpZXcpCiAgICAgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXRhR3JpZC5qcwppbmRleCAxOWZjNDVmYjJhZDE5YWMyNDM0ZGU2YjQxYjEzMWI1ZDM0ZGE3
YWExLi5iNzhhMGI2NTc1YzY5MGU0ZGRhZTIxNzJhYjBmNDZjYjQ2YjVhNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5q
cwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
RGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dl
Ykluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rvcihjb2x1bW5zRGF0YSwgZWRpdENhbGxiYWNrLCBkZWxl
dGVDYWxsYmFjaywgcHJlZmVycmVkQ29sdW1uT3JkZXIpCiAgICAgewpAQCAtNDgsNyArNDgsNiBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5yZXNpemVycyA9IFtdOwogICAgICAgICB0aGlzLl9j
b2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NOYW1lID0gImRhdGEtZ3JpZCI7CiAgICAgICAgIHRoaXMuZWxlbWVudC50YWJJbmRleCA9IDA7
CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
a2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC00MDAsNyArMzk5LDcgQEAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykK
ICAgICAgICAgICAgIGNvbHVtblsiZWxlbWVudCJdLnN0eWxlLndpZHRoID0gd2lkdGhzW2lkZW50
aWZpZXJdICsgIiUiOwogICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZh
bHNlOwotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5
b3V0KCk7CiAgICAgfQogCiAgICAgaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVt
bkRhdGEsIGluc2VydGlvbkluZGV4KQpAQCAtNTUyLDkgKzU1MSw5IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
IC8vCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGFmdGVyIHRoZSBEYXRh
R3JpZCBpcyBhdHRhY2hlZCB0byBpdHMKICAgICAvLyBwYXJlbnQgZWxlbWVudCwgdGhlbiB0aGUg
RGF0YUdyaWQncyBjb2x1bW5zIHdpbGwgbm90IGJlIHJlc2l6YWJsZS4KLSAgICB1cGRhdGVMYXlv
dXQoKQorICAgIGxheW91dCgpCiAgICAgewotICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byB1
c2Ugb2Zmc2V0ZXMgaWYgd2UncmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCB0cmVlIHll
dC4KKyAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNldHMgaWYgd2UncmUgbm90
IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCB0cmVlIHlldC4KICAgICAgICAgaWYgKCF0aGlzLl9j
b2x1bW5XaWR0aHNJbml0aWFsaXplZCAmJiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKICAg
ICAgICAgICAgIC8vIEdpdmUgYWxsIHRoZSBjb2x1bW5zIGluaXRpYWwgd2lkdGhzIG5vdyBzbyB0
aGF0IGR1cmluZyBhIHJlc2l6ZSwKICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHR3byBjb2x1bW5z
IHRoYXQgZ2V0IHJlc2l6ZWQgZ2V0IGEgcGVyY2VudCB2YWx1ZSBmb3IKQEAgLTU4MCw3ICs1Nzks
NiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXpl
ckVsZW1lbnRzKCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwogICAgIH0KIAogICAgIGNvbHVtbldp
ZHRoc01hcCgpCkBAIC02MDIsNyArNjAwLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xh
c3MgRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlz
Ll9kYXRhVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5bb3JkaW5hbF0uc3R5bGUud2lk
dGggPSB3aWR0aDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Cisg
ICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICBfaXNDb2x1bW5WaXNpYmxl
KGNvbHVtbklkZW50aWZpZXIpCkBAIC0xMjYwLDcgKzEyNTgsNiBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAg
ICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuRGlkTGF5b3V0KTsKICAgICB9CiAKICAgICByZXNpemVy
RHJhZ0VuZGVkKHJlc2l6ZXIpCkBAIC0xMjcwLDEyICsxMjY3LDEwIEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2N1cnJlbnRSZXNpemVyID0gbnVsbDsK
LSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLkV2ZW50LkRpZExheW91dCk7CiAgICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50ID0gewotICAgIERpZExheW91dDogImRhdGFncmlkLWRpZC1sYXlvdXQiLAogICAgIFNv
cnRDaGFuZ2VkOiAiZGF0YWdyaWQtc29ydC1jaGFuZ2VkIiwKICAgICBTZWxlY3RlZE5vZGVDaGFu
Z2VkOiAiZGF0YWdyaWQtc2VsZWN0ZWQtbm9kZS1jaGFuZ2VkIiwKICAgICBFeHBhbmRlZE5vZGU6
ICJkYXRhZ3JpZC1leHBhbmRlZC1ub2RlIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNh
bFBhdGhOYXZpZ2F0aW9uSXRlbS5qcwppbmRleCAyZGJhMjBiYWRlNGVjNWZhZTM5YTQwMjhjMmY3
N2NhZjVlYTAxMTg4Li44YWIyMWU0N2RkYjdiYzIzMDRhMGJmNzk3NmMxZmYwOGZhZjI5NzUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVy
YXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzCkBA
IC02MSw3ICs2MSw3IEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0
ZW0gPSBjbGFzcyBIaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0CiAKICAgICAgICAgLy8gVXBk
YXRlIGxheW91dCBmb3IgdGhlIHNvIG90aGVyIGl0ZW1zIGNhbiBhZGp1c3QgdG8gdGhlIGV4dHJh
IHNwYWNlIChvciBsYWNrIHRoZXJlb2YpIHRvby4KICAgICAgICAgaWYgKHRoaXMucGFyZW50TmF2
aWdhdGlvbkJhcikKLSAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci51cGRhdGVM
YXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIubmVlZHNM
YXlvdXQoKTsKICAgICB9CiAKICAgICBnZXQgbGFzdENvbXBvbmVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRU
aW1lbGluZVZpZXcuanMKaW5kZXggZDQ2ZjEzZDA2MDg2OGVmNzNkOTcyNDhhMjFiY2M4ODI3ODg1
ODUyNC4uY2E0NWFkOTAxMGFhNzUxM2YxYWQwN2MzMzE2YjlhY2U1M2U0ZmQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxp
bmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheW91dFRpbWVsaW5lVmlldy5qcwpAQCAtODYsNyArODYsNyBAQCBXZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVWaWV3ID0gY2xhc3MgTGF5b3V0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLgogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5fbW91c2VMZWF2ZVRyZWVPdXRs
aW5lLmJpbmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJs
YXlvdXQiKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAg
ICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsK
IApAQCAtMTMzLDE1ICsxMzMsNiBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0g
Y2xhc3MgTGF5b3V0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0
aGlzLl91cGRhdGVIaWdobGlnaHQoKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAg
IHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCk7Ci0gICAgfQotCiAgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRy
ZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkLnRyZWVFbGVt
ZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVycyh0cmVlRWxlbWVudCk7CkBAIC0xODUsNiArMTc2
LDExIEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1l
bGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hs
aWdodCgpOwogICAgIH0KIAorICAgIGxheW91dCgpCisgICAgeworICAgICAgICB0aGlzLl9wcm9j
ZXNzUGVuZGluZ1JlY29yZHMoKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfcHJv
Y2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCmluZGV4IGRlODU2OTVlNjFj
ZGNkNzQ3ODg3Y2I3OTk1ODVmOGFlMDhhY2E0ZjUuLjhmYWNmM2JhMmU5ZTRiZGVlMjA4MjFkMDY4
Mzg5OTI5OGQyN2VlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpAQCAtMjMsMjYgKzIzLDI2IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAorV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBu
YXZpZ2F0aW9uSXRlbXMsIHJvbGUsIGxhYmVsKQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAg
ICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQg
fHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1lIHx8ICJuYXZpZ2F0
aW9uLWJhciIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFt
ZSB8fCAibmF2aWdhdGlvbi1iYXIiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0g
MDsKIAogICAgICAgICBpZiAocm9sZSkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0
cmlidXRlKCJyb2xlIiwgcm9sZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmli
dXRlKCJyb2xlIiwgcm9sZSk7CiAgICAgICAgIGlmIChsYWJlbCkKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKIAotICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXMuYmlu
ZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMp
LCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlzKSwg
ZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRo
aXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5f
bW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKIAorICAgICAgICB0aGlzLl9taW5pbXVtV2lk
dGggPSBOYU47CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcyA9IFtdOwogCiAgICAgICAg
IGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKQEAgLTc1LDcgKzc1LDcgQEAgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMuc3BsaWNlKGluZGV4LCAwLCBuYXZp
Z2F0aW9uSXRlbSk7CiAKICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50KQotICAgICAgICAgICAg
cGFyZW50RWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7CisgICAgICAgICAgICBwYXJlbnRFbGVtZW50
ID0gdGhpcy5lbGVtZW50OwogCiAgICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMuX25hdmln
YXRpb25JdGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0g
bmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogbnVsbDsKQEAgLTg0LDkgKzg0LDkg
QEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0QmVm
b3JlKG5hdmlnYXRpb25JdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAKLSAgICAg
ICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwogCi0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29v
bigpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgcmV0dXJuIG5hdmln
YXRpb25JdGVtOwogICAgIH0KQEAgLTEwNSw3MiArMTA1LDEzIEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnJlbW92ZShuYXZpZ2F0aW9uSXRlbSk7
CiAgICAgICAgIG5hdmlnYXRpb25JdGVtLmVsZW1lbnQucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhp
cy5fbWluaW11bVdpZHRoTmVlZHNSZWNhbGN1bGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5f
bWluaW11bVdpZHRoID0gTmFOOwogCi0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOwor
ICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25J
dGVtOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dFNvb24oKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIg
PSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9uZWVkc0xheW91dCkKLSAgICAg
ICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhp
cy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUu
YmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxB
bmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKTsKLSAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLl9uZWVkc0xheW91dCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh0eXBlb2Yg
dGhpcy5jdXN0b21VcGRhdGVMYXlvdXQgPT09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAgIHRo
aXMuY3VzdG9tVXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byB0ZXN0IGlm
IHRoZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCi0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgLy8gVGVsbCBlYWNoIG5hdmlnYXRpb24gaXRlbSB0byB1
cGRhdGUgdG8gZnVsbCB3aWR0aCBpZiBuZWVkZWQuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkl0ZW1zW2ldLnVwZGF0ZUxheW91dCh0cnVlKTsKLQotICAgICAgICB2YXIgdG90
YWxJdGVtV2lkdGggPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgLy8gU2tpcCBmbGV4aWJsZSBz
cGFjZSBpdGVtcyBzaW5jZSB0aGV5IGNhbiB0YWtlIHVwIG5vIHNwYWNlIGF0IHRoZSBtaW5pbXVt
IHdpZHRoLgotICAgICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0pCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHRvdGFsSXRlbVdpZHRoICs9IHRoaXMuX25h
dmlnYXRpb25JdGVtc1tpXS5lbGVtZW50LnJlYWxPZmZzZXRXaWR0aDsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciBiYXJXaWR0aCA9IHRoaXMuX2VsZW1lbnQucmVhbE9mZnNldFdpZHRoOwotCi0g
ICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIGNsYXNzIGJhY2sgaWYgdGhlIGl0ZW1zIGFyZSB3
aWRlciB0aGFuIHRoZSBiYXIuCi0gICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRo
KQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLQotICAgICAgICAvLyBHaXZl
IGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBvcnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVy
LgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS51cGRhdGVMYXlv
dXQoKTsKLSAgICB9Ci0KICAgICBnZXQgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSB8fCBudWxsOwpAQCAt
MjA2LDE4ICsxNDcsMTAgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZp
Z2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhp
cy5fbmF2aWdhdGlvbkl0ZW1zOwogICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBtaW5pbXVtV2lk
dGgoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21pbmltdW1XaWR0aCA9PT0gdW5kZWZpbmVk
IHx8IHRoaXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbikgeworICAgICAgICBpZiAo
aXNOYU4odGhpcy5fbWluaW11bVdpZHRoKSkKICAgICAgICAgICAgIHRoaXMuX21pbmltdW1XaWR0
aCA9IHRoaXMuX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpOwotICAgICAgICAgICAgZGVsZXRlIHRo
aXMuX21pbmltdW1XaWR0aE5lZWRzUmVjYWxjdWxhdGlvbjsKLSAgICAgICAgfQotCiAgICAgICAg
IHJldHVybiB0aGlzLl9taW5pbXVtV2lkdGg7CiAgICAgfQogCkBAIC0yMjcsNiArMTYwLDM1IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAg
IGxheW91dCgpCisgICAgeworICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBj
bGFzcyB0byB0ZXN0IGlmIHRoZSBpdGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
LkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKworICAgICAgICAvLyBUZWxsIGVhY2ggbmF2aWdh
dGlvbiBpdGVtIHRvIHVwZGF0ZSB0byBmdWxsIHdpZHRoIGlmIG5lZWRlZC4KKyAgICAgICAgZm9y
IChsZXQgbmF2aWdhdGlvbkl0ZW0gb2YgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zKQorICAgICAgICAg
ICAgbmF2aWdhdGlvbkl0ZW0udXBkYXRlTGF5b3V0KHRydWUpOworCisgICAgICAgIGxldCB0b3Rh
bEl0ZW1XaWR0aCA9IDA7CisgICAgICAgIGZvciAobGV0IG5hdmlnYXRpb25JdGVtIG9mIHRoaXMu
X25hdmlnYXRpb25JdGVtcykgeworICAgICAgICAgICAgLy8gU2tpcCBmbGV4aWJsZSBzcGFjZSBp
dGVtcyBzaW5jZSB0aGV5IGNhbiB0YWtlIHVwIG5vIHNwYWNlIGF0IHRoZSBtaW5pbXVtIHdpZHRo
LgorICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25JdGVtIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgdG90YWxJdGVtV2lkdGggKz0gbmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5y
ZWFsT2Zmc2V0V2lkdGg7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBiYXJXaWR0aCA9IHRo
aXMuZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisKKyAgICAgICAgLy8gQWRkIHRoZSBjb2xsYXBz
ZWQgY2xhc3MgYmFjayBpZiB0aGUgaXRlbXMgYXJlIHdpZGVyIHRoYW4gdGhlIGJhci4KKyAgICAg
ICAgaWYgKHRvdGFsSXRlbVdpZHRoID4gYmFyV2lkdGgpCisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CisKKyAgICAgICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRpb24gaXRlbSB0aGUg
b3Bwb3J0dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4KKyAgICAgICAgZm9yIChsZXQgbmF2aWdh
dGlvbkl0ZW0gb2YgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zKQorICAgICAgICAgICAgbmF2aWdhdGlv
bkl0ZW0udXBkYXRlTGF5b3V0KGZhbHNlKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAg
ICBfZmluZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRleCkK
QEAgLTI1OSw3ICsyMjEsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5h
dmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIC8vIFJlbW92
ZSB0aGUgdGFiSW5kZXggc28gY2xpY2tpbmcgdGhlIG5hdmlnYXRpb24gYmFyIGRvZXMgbm90IGdp
dmUgaXQgZm9jdXMuCiAgICAgICAgIC8vIE9ubHkga2VlcCB0aGUgdGFiSW5kZXggaWYgYWxyZWFk
eSBmb2N1c2VkIGZyb20ga2V5Ym9hcmQgbmF2aWdhdGlvbi4gVGhpcyBtYXRjaGVzIFhjb2RlLgog
ICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJl
bW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1v
dmVBdHRyaWJ1dGUoInRhYmluZGV4Iik7CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZl
bnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJhZGlv
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBpZiAoIWl0ZW1F
bGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSkKQEAgLTI5NywxNSArMjU5LDE1
IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5
bGVDbGFzc05hbWUpOwotICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5u
YXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpIHsK
KyAgICAgICAgaWYgKCFpdGVtRWxlbWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0g
fHwgIXRoaXMuZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpIHsKICAgICAgICAgICAgIC8v
IEZpbmQgdGhlIGVsZW1lbnQgdGhhdCBpcyBhdCB0aGUgWCBwb3NpdGlvbiBvZiB0aGUgbW91c2Us
IGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAvLyB2ZXJ0aWNh
bGx5IGluIHRoZSBuYXZpZ2F0aW9uIGJhci4KLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgdGhpcy5fZWxlbWVudC50b3RhbE9m
ZnNldFRvcCArICh0aGlzLl9lbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpKTsKKyAgICAgICAgICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgdGhp
cy5lbGVtZW50LnRvdGFsT2Zmc2V0VG9wICsgKHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAy
KSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICBpdGVtRWxlbWVudCA9IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhDbGFzcyhXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNz
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZp
Z2F0aW9uSXRlbSB8fCAhdGhpcy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpCisgICAg
ICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSB8
fCAhdGhpcy5lbGVtZW50LmNvbnRhaW5zKGl0ZW1FbGVtZW50KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzM2LDcgKzI5OCw3IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlVXBFdmVudExpc3RlbmVyOwogCiAgICAgICAg
IC8vIFJlc3RvcmUgdGhlIHRhYkluZGV4IHNvIHRoZSBuYXZpZ2F0aW9uIGJhciBjYW4gYmUgaW4g
dGhlIGtleWJvYXJkIHRhYiBsb29wLgotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0g
MDsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICAvLyBEaXNw
YXRjaCB0aGUgc2VsZWN0ZWQgZXZlbnQgaGVyZSBzaW5jZSB0aGUgc2VsZWN0ZWROYXZpZ2F0aW9u
SXRlbSBzZXR0ZXIgc3VycHJlc3NlcyBpdAogICAgICAgICAvLyB3aGlsZSB0aGUgbW91c2UgaXMg
ZG93biB0byBwcmV2ZW50IHNlbmRpbmcgaXQgd2hpbGUgc2NydWJiaW5nIHRoZSBiYXIuCkBAIC0z
OTMsMTEgKzM1NSwxMSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmln
YXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBfY2FsY3VsYXRlTWlu
aW11bVdpZHRoKCkKICAgICB7Ci0gICAgICAgIHZhciB3YXNDb2xsYXBzZWQgPSB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBz
ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGNvbnN0IHdhc0NvbGxhcHNlZCA9IHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFw
c2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIHN0eWxl
IGNsYXNzIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgdGhlIGl0ZW1zIHdoZW4gdGhleSBhcmUg
Y29sbGFwc2VkLgogICAgICAgICBpZiAoIXdhc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBz
ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAK
ICAgICAgICAgdmFyIHRvdGFsSXRlbVdpZHRoID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpIHsKQEAgLTQwOSw3ICszNzEs
NyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBz
ZWQgc3R5bGUgY2xhc3MgaWYgd2Ugd2VyZSBub3QgY29sbGFwc2VkIGJlZm9yZS4KICAgICAgICAg
aWYgKCF3YXNDb2xsYXBzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUp
OworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHJldHVy
biB0b3RhbEl0ZW1XaWR0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCmluZGV4IGNiNzU1
NDNjMWZhNTdkMDNiMDIwNTEyNTI4MDIwMmU1YjNiZGM1ODguLjFkNzYxMTU0ZTNiNzBkNThiMjI5
YTYzMWZjYzhiODNiZDAzYjAwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCkBAIC04MCw3ICs4
MCw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIE5hdmlnYXRpb25JdGVt
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoImhpZGRlbiIsIGZsYWcpOwogCiAgICAgICAgIGlmICh0aGlzLl9wYXJlbnRO
YXZpZ2F0aW9uQmFyKQotICAgICAgICAgICAgdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhci51cGRh
dGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFyLm5l
ZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1l
bGluZVZpZXcuanMKaW5kZXggMmJiNDAzNmJkMjFlYWQ1ZTM5ZjBjYjMxMTJmOGY2NTc4NWNlYjM5
Yi4uYTAxODdlYTU3ZTBmZjc5NjNjMjg2YjJlZTI4N2JiOTcyZmMyOWJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5l
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9O
ZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC05Myw3ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYklu
c3BlY3RvCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJuZXR3b3JrIik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2Rh
dGFHcmlkKTsKIAogICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3Jk
QWRkZWQsIHRoaXMpOwogCkBAIC0xMjksMTUgKzEyOSw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
VGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3Bl
Y3RvCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmNsb3NlZCgpOwogICAgIH0KIAotICAgIHVwZGF0
ZUxheW91dCgpCi0gICAgewotICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAg
ICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNz
UGVuZGluZ1JlY29yZHMoKTsKLSAgICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1
c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0
YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsK
QEAgLTE4Nyw2ICsxNzgsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcgPSBj
bGFzcyBOZXR3b3JrVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAgc3Vw
ZXIudHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOwogICAg
IH0KIAorICAgIGxheW91dCgpCisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1Jl
Y29yZHMoKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfcHJvY2Vzc1BlbmRpbmdS
ZWNvcmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKaW5kZXggZWJlMWFkNTZh
Y2Y1YTgwZjIzMTJiZmVmNGIzZWU5YjYyZmM2NTc2MS4uOGM4YTNkNWI0Y2NmNGUzZjJjMzFkMGNj
NWE0MjRhM2UxZmFmZmZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKQEAg
LTQxLDEzICs0MSwxNCBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBjbGFz
cyBPdmVydmlld1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAgIHRoaXMu
X3RpbWVsaW5lUnVsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXI7CiAgICAgICAg
IHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxsb3dzQ2xpcHBlZExhYmVscyA9IHRydWU7CisgICAgICAg
IC8vIEZJWE1FOiBjaGFuZ2UgdG8gYHRoaXMuYWRkU3Vidmlldyh0aGlzLl90aW1lbGluZVJ1bGVy
KWAgb25jZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUwNzAzPiBpcyBmaXhlZC4KICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7CiAK
ICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFya2VyKDAsIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlci5UeXBlLkN1cnJlbnRUaW1l
KTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRp
bWVNYXJrZXIpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvdmVydmll
dyIpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxl
bWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAg
ICAgdGhpcy5fbmV0d29ya1RpbWVsaW5lID0gcmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yayk7CiAgICAgICAgIHRoaXMuX25ldHdv
cmtUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5S
ZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAt
ODgsMzUgKzg5LDYgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3Mg
T3ZlcnZpZXdUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fcmVj
b3JkaW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgfQogCi0g
ICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwot
Ci0gICAgICAgIHZhciBvbGRaZXJvVGltZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWU7
Ci0gICAgICAgIHZhciBvbGRTdGFydFRpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGlt
ZTsKLSAgICAgICAgdmFyIG9sZEVuZFRpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWU7
Ci0gICAgICAgIHZhciBvbGRDdXJyZW50VGltZSA9IHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRp
bWU7Ci0KLSAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci56ZXJvVGltZSA9IHRoaXMuemVyb1Rp
bWU7Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuc3RhcnRUaW1lID0gdGhpcy5zdGFydFRp
bWU7Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuZW5kVGltZSA9IHRoaXMuZW5kVGltZTsK
LSAgICAgICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIudGltZSA9IHRoaXMuY3VycmVudFRpbWU7
Ci0KLSAgICAgICAgLy8gVGhlIFRpbWVsaW5lRGF0YUdyaWROb2RlIGdyYXBocyBhcmUgcG9zaXRp
b25lZCB3aXRoIHBlcmNlbnRhZ2VzLCBzbyB0aGV5IGF1dG8gcmVzaXplIHdpdGggdGhlIHZpZXcu
Ci0gICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byByZWZyZXNoIHRoZSBncmFwaHMgd2hlbiB0aGUg
YW55IG9mIHRoZSB0aW1lcyBjaGFuZ2UuCi0gICAgICAgIGlmICh0aGlzLnplcm9UaW1lICE9PSBv
bGRaZXJvVGltZSB8fCB0aGlzLnN0YXJ0VGltZSAhPT0gb2xkU3RhcnRUaW1lIHx8IHRoaXMuZW5k
VGltZSAhPT0gb2xkRW5kVGltZSB8fCB0aGlzLmN1cnJlbnRUaW1lICE9PSBvbGRDdXJyZW50VGlt
ZSkgewotICAgICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxk
cmVuWzBdOwotICAgICAgICAgICAgd2hpbGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAg
ICAgIGRhdGFHcmlkTm9kZS5yZWZyZXNoR3JhcGgoKTsKLSAgICAgICAgICAgICAgICBkYXRhR3Jp
ZE5vZGUgPSBkYXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCBudWxsLCB0cnVlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIu
dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZXByZXNlbnRl
ZE9iamVjdHMoKTsKLSAgICB9Ci0KICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVk
Tm9kZTsKQEAgLTE4Nyw2ICsxNTksMzQgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVW
aWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9u
KHRyZWVFbGVtZW50LnNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAg
IH0KIAorICAgIGxheW91dCgpCisgICAgeworICAgICAgICBsZXQgb2xkWmVyb1RpbWUgPSB0aGlz
Ll90aW1lbGluZVJ1bGVyLnplcm9UaW1lOworICAgICAgICBsZXQgb2xkU3RhcnRUaW1lID0gdGhp
cy5fdGltZWxpbmVSdWxlci5zdGFydFRpbWU7CisgICAgICAgIGxldCBvbGRFbmRUaW1lID0gdGhp
cy5fdGltZWxpbmVSdWxlci5lbmRUaW1lOworICAgICAgICBsZXQgb2xkQ3VycmVudFRpbWUgPSB0
aGlzLl9jdXJyZW50VGltZU1hcmtlci50aW1lOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVs
ZXIuemVyb1RpbWUgPSB0aGlzLnplcm9UaW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVy
LnN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVy
LmVuZFRpbWUgPSB0aGlzLmVuZFRpbWU7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2Vy
LnRpbWUgPSB0aGlzLmN1cnJlbnRUaW1lOworCisgICAgICAgIC8vIFRoZSBUaW1lbGluZURhdGFH
cmlkTm9kZSBncmFwaHMgYXJlIHBvc2l0aW9uZWQgd2l0aCBwZXJjZW50YWdlcywgc28gdGhleSBh
dXRvIHJlc2l6ZSB3aXRoIHRoZSB2aWV3LgorICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gcmVm
cmVzaCB0aGUgZ3JhcGhzIHdoZW4gdGhlIGFueSBvZiB0aGUgdGltZXMgY2hhbmdlLgorICAgICAg
ICBpZiAodGhpcy56ZXJvVGltZSAhPT0gb2xkWmVyb1RpbWUgfHwgdGhpcy5zdGFydFRpbWUgIT09
IG9sZFN0YXJ0VGltZSB8fCB0aGlzLmVuZFRpbWUgIT09IG9sZEVuZFRpbWUgfHwgdGhpcy5jdXJy
ZW50VGltZSAhPT0gb2xkQ3VycmVudFRpbWUpIHsKKyAgICAgICAgICAgIGxldCBkYXRhR3JpZE5v
ZGUgPSB0aGlzLl9kYXRhR3JpZC5jaGlsZHJlblswXTsKKyAgICAgICAgICAgIHdoaWxlIChkYXRh
R3JpZE5vZGUpIHsKKyAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUucmVmcmVzaEdyYXBoKCk7
CisgICAgICAgICAgICAgICAgZGF0YUdyaWROb2RlID0gZGF0YUdyaWROb2RlLnRyYXZlcnNlTmV4
dE5vZGUodHJ1ZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBGSVhNRTogcmVtb3ZlIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MDcwMz4g
aXMgZml4ZWQuCisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIudXBkYXRlTGF5b3V0KCk7CisK
KyAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMoKTsKKyAgICB9
CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5RGV0YWlscyhh
LCBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUXVpY2tDb25zb2xlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUXVpY2tDb25zb2xlLmpzCmluZGV4IGM0YWQ1MjAyNzg3ZjEzY2IyNDUxMDhjOGU2YjUx
YzFlMzg0NmZjYzMuLjg1NmRkOWUzNmQzMjQwMGJlMzFkM2Q4OTQ5YjRkN2VjMzc2MzE1ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNr
Q29uc29sZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9RdWlja0NvbnNvbGUuanMKQEAgLTIzLDExICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFz
cyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3Iu
UXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZp
ZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fdG9nZ2xlT3JGb2N1c0tl
eWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhpcy5fdG9nZ2xlT3JG
b2N1cy5iaW5kKHRoaXMpKTsKIApAQCAtMzgsMTIgKzM4LDExIEBAIFdlYkluc3BlY3Rvci5RdWlj
a0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIHRoaXMuX290aGVyRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzID0gW107
CiAgICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllclRvRXhlY3V0aW9uQ29udGV4dFBhdGhDb21w
b25lbnRNYXAgPSB7fTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJxdWljay1jb25zb2xlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJxdWljay1jb25zb2xlIik7CiAKICAgICAgICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvbnNvbGVQcm9tcHQobnVsbCwgInRleHQvamF2YXNjcmlwdCIpOwogICAgICAgICB0
aGlzLnByb21wdC5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRleHQtcHJvbXB0Iik7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9tcHQuZWxlbWVudCk7CisgICAgICAg
IHRoaXMuYWRkU3Vidmlldyh0aGlzLnByb21wdCk7CiAKICAgICAgICAgLy8gRklYTUU6IENvZGVN
aXJyb3IgNCBoYXMgYSBkZWZhdWx0ICJFc2MiIGtleSBoYW5kbGVyIHRoYXQgYWx3YXlzIHByZXZl
bnRzIGRlZmF1bHQuCiAgICAgICAgIC8vIE91ciBrZXlib2FyZCBzaG9ydGN1dCBhYm92ZSB3aWxs
IHJlc3BlY3QgdGhlIGRlZmF1bHQgcHJldmVudGVkIGFuZCBpZ25vcmUgdGhlIGV2ZW50CkBAIC01
NSw3ICs1NCw3IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNv
bGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMucHJvbXB0LnNob3du
KCk7CiAKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuUXVp
Y2tDb25zb2xlTmF2aWdhdGlvbkJhcjsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXco
dGhpcy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNl
bGVjdG9ySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25J
dGVtOwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtLnNob3dTZWxl
Y3RvckFycm93cyA9IHRydWU7CkBAIC03NCwxMSArNzMsNiBAQCBXZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
CiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0KICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKQEAgLTg5LDEzICs4Myw2IEBA
IFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50Ll9leGVjdXRpb25Db250ZXh0SWRlbnRpZmllcjsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgLy8gQSBoYXJkIG1heGltdW0g
c2l6ZSBvZiAzMyUgb2YgdGhlIHdpbmRvdy4KLSAgICAgICAgdmFyIG1heGltdW1BbGxvd2VkSGVp
Z2h0ID0gTWF0aC5yb3VuZCh3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjMzKTsKLSAgICAgICAgdGhp
cy5wcm9tcHQuZWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSBtYXhpbXVtQWxsb3dlZEhlaWdodCAr
ICJweCI7Ci0gICAgfQotCiAgICAgY29uc29sZUxvZ1Zpc2liaWxpdHlDaGFuZ2VkKHZpc2libGUp
CiAgICAgewogICAgICAgICBpZiAodmlzaWJsZSA9PT0gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucyhXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlNob3dpbmdMb2dDbGFzc05hbWUpKQpA
QCAtMTA2LDYgKzkzLDE1IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlj
a0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuRXZlbnQuRGlkUmVz
aXplKTsKICAgICB9CiAKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCisgICAgewor
ICAgICAgICAvLyBBIGhhcmQgbWF4aW11bSBzaXplIG9mIDMzJSBvZiB0aGUgd2luZG93LgorICAg
ICAgICBsZXQgbWF4aW11bUFsbG93ZWRIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhl
aWdodCAqIDAuMzMpOworICAgICAgICB0aGlzLnByb21wdC5lbGVtZW50LnN0eWxlLm1heEhlaWdo
dCA9IG1heGltdW1BbGxvd2VkSGVpZ2h0ICsgInB4IjsKKyAgICB9CisKICAgICAvLyBQcml2YXRl
CiAKICAgICBfZXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzVG9EaXNwbGF5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmlu
Z0ZyYW1lVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMKaW5kZXggYzlmOTdlYjBiYjc2
ZmMxYWE0OTQ2MzNhNmU1Mzg2ZDc2ZDk3YWM3ZS4uNjE3YzU5ZDQ2NjE1OWZiNTRiYTRlM2Y0MWY2
YjE4YjFlMTE0YzhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZp
ZXcuanMKQEAgLTc5LDcgKzc5LDcgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxp
bmVWaWV3ID0gY2xhc3MgUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0ZW4KICAgICAgICAg
dGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRl
ci5Bc2NlbmRpbmc7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbmRl
cmluZy1mcmFtZSIpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0
YUdyaWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7
CiAKICAgICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX3JlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmRB
ZGRlZCwgdGhpcyk7CiAKQEAgLTEzMSwxNSArMTMxLDYgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmlu
Z0ZyYW1lVGltZWxpbmVWaWV3ID0gY2xhc3MgUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0
ZW4KICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY2xvc2VkKCk7CiAgICAgfQogCi0gICAgdXBkYXRl
TGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAg
IHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQ
ZW5kaW5nUmVjb3JkcygpOwotICAgIH0KLQogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50
cygpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2Vs
ZWN0ZWROb2RlOwpAQCAtMjQ1LDYgKzIzNiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJh
bWVUaW1lbGluZVZpZXcgPSBjbGFzcyBSZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyBleHRlbgog
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0
ZQogCiAgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZp
ZXcuanMKaW5kZXggNDhlNTA1MjY3YWIxNDA4MDBkYTNhY2M5ZTM5ZjI0MDZkZjNmYWRjYi4uMTI2
YTQ5ZGUyOGZjNzBjNmJlMDUwMmFkYzEwMDIxYmM4ZGRmOWEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRp
bWVsaW5lVmlldy5qcwpAQCAtNjgsNyArNjgsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxp
bmVWaWV3ID0gY2xhc3MgU2NyaXB0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
U29ydE9yZGVyLkFzY2VuZGluZzsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic2NyaXB0Iik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRh
R3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsK
IAogICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhp
cyk7CiAKQEAgLTEwNCwyOCArMTA0LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmll
dyA9IGNsYXNzIFNjcmlwdFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQuY2xvc2VkKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkK
LSAgICB7Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX2Rh
dGFHcmlkLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZSAhPT0g
dGhpcy5fb2xkU3RhcnRUaW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gdGhpcy5fb2xkRW5kVGltZSkg
ewotICAgICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVu
WzBdOwotICAgICAgICAgICAgd2hpbGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAgICAg
IGRhdGFHcmlkTm9kZS51cGRhdGVSYW5nZVRpbWVzKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRp
bWUpOwotICAgICAgICAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUucmV2ZWFsZWQpCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5yZWZyZXNoSWZOZWVkZWQoKTsKLSAgICAgICAgICAg
ICAgICBkYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwg
bnVsbCwgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX29sZFN0YXJ0
VGltZSA9IHRoaXMuc3RhcnRUaW1lOwotICAgICAgICAgICAgdGhpcy5fb2xkRW5kVGltZSA9IHRo
aXMuZW5kVGltZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVj
b3JkcygpOwotICAgIH0KLQogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAg
ewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2Rl
OwpAQCAtMjE3LDYgKzE5NSwyNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0g
Y2xhc3MgU2NyaXB0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB9
CiAgICAgfQogCisgICAgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnN0YXJ0VGlt
ZSAhPT0gdGhpcy5fb2xkU3RhcnRUaW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gdGhpcy5fb2xkRW5k
VGltZSkgeworICAgICAgICAgICAgbGV0IGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNo
aWxkcmVuWzBdOworICAgICAgICAgICAgd2hpbGUgKGRhdGFHcmlkTm9kZSkgeworICAgICAgICAg
ICAgICAgIGRhdGFHcmlkTm9kZS51cGRhdGVSYW5nZVRpbWVzKHRoaXMuc3RhcnRUaW1lLCB0aGlz
LmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUucmV2ZWFsZWQpCisg
ICAgICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5yZWZyZXNoSWZOZWVkZWQoKTsKKyAgICAg
ICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZShm
YWxzZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuX29s
ZFN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1lOworICAgICAgICAgICAgdGhpcy5fb2xkRW5kVGlt
ZSA9IHRoaXMuZW5kVGltZTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5k
aW5nUmVjb3JkcygpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9wcm9jZXNzUGVu
ZGluZ1JlY29yZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDZkN2Y0MzNjZjQ4MmVmZjRhOTMxNTY1OGMxMTllMmYw
YjkyNDAyMzUuLmRjNWQ5MjM2ZmEwZTk5YTFjOGM3YTgxMDhhZTI1NmQ4OTVjOTRkZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIu
anMKQEAgLTIzLDIzICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJCYXJJ
dGVtcykKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwog
Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIi
KTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKIAogICAgICAg
ICB2YXIgdG9wQm9yZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICB0b3BCb3JkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInRvcC1ib3JkZXIiKTsKLSAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0b3BCb3JkZXJFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRvcEJvcmRlckVsZW1lbnQpOwogCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxl
TW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1v
dXNlTGVhdmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNs
aWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CiAKICAgICAg
ICAgdGhpcy5fdGFiQmFySXRlbXMgPSBbXTsKIApAQCAtMTExLDcgKzExMCw3IEBAIFdlYkluc3Bl
Y3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fdGFiQmFySXRl
bXMubGVuZ3RoIC0gMSA6IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aDsKICAgICAgICAgaW5kZXgg
PSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgbGFzdEluZGV4KSk7CiAKLSAgICAgICAgaWYg
KHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAg
ICBpZiAodGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAg
ICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7
CiAgICAgICAgICAgICBkb05vdEFuaW1hdGUgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMjUsMzQg
KzEyNCwzNCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJ
dGVtc1tpbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNp
YmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl9u
ZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2Vy
dEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAg
IHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGlu
Z0VsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2lu
Z2xlLXRhYiIsICF0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRo
YW5PbmVOb3JtYWxUYWIoKSk7CiAKICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxl
ZnQgPSBudWxsOwogICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxs
OwogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAg
ICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0Fu
ZFBvc2l0aW9ucyk7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVt
b3ZlU3R5bGVzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJpbnNlcnRpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAg
dGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImJlaW5nLWluc2VydGVkIik7CiAK
ICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAK
LSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5
bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFkb05vdEFuaW1hdGUpIHsK
QEAgLTE2OCw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogMCwg
d2lkdGg6IDB9KTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
dGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
c3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFy
SXRlbVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKQEAgLTE3
Nyw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
YW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhp
cy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYkJh
ci5FdmVudC5UYWJCYXJJdGVtQWRkZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTIwNCw3ICsyMDMs
NyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSBuZXh0VGFi
QmFySXRlbTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUocmVtb3ZlU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAgICAgICAgZG9Ob3RBbmlt
YXRlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjE5LDcgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5U
YWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAg
IHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAgICB2YXIgaGFzTW9yZVRoYW5P
bmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpOwotICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5P
bmVOb3JtYWxUYWIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2lu
Z2xlLXRhYiIsICFoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYik7CiAKICAgICAgICAgY29uc3Qgc2hv
dWxkT3BlbkRlZmF1bHRUYWIgPSAhdGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgIXRoaXMuaGFz
Tm9ybWFsVGFiKCk7CiAgICAgICAgIGlmIChzaG91bGRPcGVuRGVmYXVsdFRhYikKQEAgLTIzMCw3
ICsyMjksNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2Vk
U2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0aGlzLl9maW5pc2hFeHBh
bmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJCYXIuRXZlbnQuVGFiQmFySXRl
bVJlbW92ZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTI0NCw4ICsyNDMsOCBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAg
ICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2xvc2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5nLXRhYiIpOwogCiAgICAgICAgICAgICB2YXIgbGVm
dCA9IDA7CiAgICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50VGFiQmFySXRlbSBvZiB0aGlzLl90
YWJCYXJJdGVtcykgewpAQCAtMjY2LDcgKzI2NSw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBj
bGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAo
bGFzdE5vcm1hbFRhYkJhckl0ZW0gIT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKICAgICAg
ICAgICAgICAgICBsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBh
cnNlRmxvYXQobGFzdE5vcm1hbFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgKyAxKSAr
ICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
a2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3Zl
U3R5bGVzTGlzdGVuZXIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5
bGVzKCkKQEAgLTI3NSwxNiArMjc0LDE2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAodGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtICYmIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAhPT0gbGFzdE5v
cm1hbFRhYkJhckl0ZW0pCiAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVt
LmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJhckl0
ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgLSAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNsb3NpbmctdGFiIik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY2xvc2luZy10YWIiKTsKIAogICAgICAgICAg
ICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVu
ZXIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtp
dFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIWRvTm90QW5pbWF0ZSkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogCiAgICAgICAgICAgICB0aGlzLl90YWJBbmlt
YXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciA9IHRydWU7CiAKQEAgLTI5NCw3ICsyOTMsNyBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogCiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmlu
ZCh0aGlzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRT
b29uKCk7CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJ
dGVtUmVtb3ZlZCwge3RhYkJhckl0ZW19KTsKIApAQCAtMzUwLDYxICszNDksNiBAQCBXZWJJbnNw
ZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0lu
ZGV4XTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gdHJ1ZTsKLQotICAgICAgICBmdW5jdGlvbiB1cGRh
dGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVy
ID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBpZiAodGhpcy5fbmVlZHNMYXlvdXQpCi0gICAg
ICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRo
aXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRl
LmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikgewotICAgICAgICAgICAgY2FuY2Vs
QW5pbWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcik7Ci0gICAgICAgICAg
ICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5
b3V0IikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQg
PSBmYWxzZTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGUt
dGl0bGVzIik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFw
c2VkIik7Ci0KLSAgICAgICAgdmFyIGZpcnN0Tm9ybWFsVGFiSXRlbSA9IG51bGw7Ci0gICAgICAg
IGZvciAodmFyIHRhYkl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKLSAgICAgICAgICAgIGlm
ICh0YWJJdGVtLnBpbm5lZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGZpcnN0Tm9ybWFsVGFiSXRlbSA9IHRhYkl0ZW07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghZmlyc3ROb3JtYWxUYWJJdGVtKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChmaXJzdE5vcm1hbFRhYkl0ZW0uZWxlbWVudC5vZmZzZXRXaWR0
aCA+PSAxMjApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKLQotICAgICAgICBpZiAoZmlyc3ROb3JtYWxUYWJJ
dGVtLmVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRlLXRpdGxlcyIpOwotICAgIH0K
LQogICAgIGdldCBzZWxlY3RlZFRhYkJhckl0ZW0oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3NlbGVjdGVkVGFiQmFySXRlbTsKQEAgLTQzNSwxNCArMzc5LDQxIEBAIFdlYkluc3BlY3Rv
ci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtczsKICAgICB9CiAKLSAgICBnZXQgZWxlbWVudCgp
CisgICAgaGFzTm9ybWFsVGFiKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OworICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuc29tZSgodGFiKSA9PiAhdGFiLnBp
bm5lZCk7CiAgICAgfQogCi0gICAgaGFzTm9ybWFsVGFiKCkKKyAgICAvLyBQcm90ZWN0ZWQKKwor
ICAgIGxheW91dCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuc29t
ZSgodGFiKSA9PiAhdGFiLnBpbm5lZCk7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGUtdGl0bGVzIik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKTsKKworICAgICAg
ICBsZXQgZmlyc3ROb3JtYWxUYWJJdGVtID0gbnVsbDsKKyAgICAgICAgZm9yIChsZXQgdGFiSXRl
bSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgaWYgKHRhYkl0ZW0ucGlubmVk
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZmlyc3ROb3JtYWxUYWJJ
dGVtID0gdGFiSXRlbTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFmaXJzdE5vcm1hbFRhYkl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDEyMCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29s
bGFwc2VkIik7CisKKyAgICAgICAgaWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNl
dFdpZHRoID49IDYwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJoaWRlLXRpdGxlcyIpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUK
QEAgLTQ4Myw3ICs0NTQsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgdmFyIHRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CiAKLSAgICAgICAgdmFyIGJhclJlY3QgPSB0aGlz
Ll9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBjb25zdCBiYXJSZWN0
ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgICAgIGZvciAo
dmFyIHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKICAgICAgICAgICAgIHZhciBi
b3VuZGluZ1JlY3QgPSB0YWJCYXJJdGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CkBAIC01MjIsNyArNDkzLDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIGlmICghYmVmb3JlVGFiU2l6
ZXNBbmRQb3NpdGlvbnMpCiAgICAgICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlv
bnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAgICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIp
OwogICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsK
IAogICAgICAgICAgICAgdmFyIGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKQEAgLTUzMiwyNiArNTAzLDI2IEBAIFdl
Ykluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlv
dXQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1h
dGluZyIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhw
YW5kaW5nLXRhYnMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5
VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwog
Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRU
cmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3Zl
U3R5bGVzTGlzdGVuZXIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBy
ZW1vdmVTdHlsZXMoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOworICAg
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0
Iik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1h
dGluZyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJl
eHBhbmRpbmctdGFicyIpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVt
U2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0
KCk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
IndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25F
bmQiLCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CiAKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICB9CkBAIC02MzAsNyArNjAxLDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9
IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdmFyIGNs
b3NlQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENs
YXNzKFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUpOwog
ICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50IHx8IGNsaWNrZWRNaWRkbGVCdXR0b24pIHsK
ICAgICAgICAgICAgIC8vIERpc2FsbG93IGNsb3NpbmcgdGhlIGRlZmF1bHQgdGFiIGlmIGl0IGlz
IHRoZSBvbmx5IHRhYi4KLSAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAm
JiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQorICAgICAg
ICAgICAgaWYgKHRhYkJhckl0ZW0uaXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBmYWxzZSwgdHJ1ZSk7
CkBAIC02NTEsMTAgKzYyMiwxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAgICBpZiAoIXRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKKyAgICAg
ICAgaWYgKCF0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0Iikp
IHsKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKHRo
aXMuX3JlY29yZFRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpKTsKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVuZGVmaW5lZCkKQEAgLTY5NSw3
ICs2NjYsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJ
dGVtc1tuZXdJbmRleCArIDFdOwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4
dFNpYmxpbmcgPyBuZXh0U2libGluZy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlz
Ll9uZXdUYWJJdGVtLmVsZW1lbnQgOiBudWxsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50Lmlu
c2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdF
bGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3Rl
ZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKIAogICAgICAgICAvLyBG
SVhNRTogQW5pbWF0ZSB0aGUgdGFicyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZvciB0aGUgc2Vs
ZWN0ZWQgdGFiLiBUaGlzIHdhcyBjYXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRyaWVkLgogCkBA
IC03MTQsMTAgKzY4NSwxMCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3du
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiZHJhZ2dpbmctdGFiIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJkcmFnZ2luZy10YWIiKTsKIAogICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVk
Q2xvc2VkU2luY2VNb3VzZUVudGVyKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0aGlzLl9jbGVh
clRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgdmFyIGxlZnQgPSAwOwpAQCAtNzQ1LDE0ICs3MTYsMTQgQEAgV2ViSW5zcGVjdG9yLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9o
YW5kbGVNb3VzZUxlYXZlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNE
b3duIHx8ICF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpCisgICAgICAgIGlmICh0aGlzLl9t
b3VzZUlzRG93biB8fCAhdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwg
IXRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdoZW4gdGhlIG1v
dXNlIGlzIGluc2lkZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVkLCByZW1vdmVk
IG9yIGdlbmVyYWxseSBjaGFuZ2UgaW5zaWRlLgogICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91
c2UgcmVhbGx5IGRpZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUgYm91bmRzLgog
ICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVjdCBiZWhhdmlv
cj8KLSAgICAgICAgdmFyIGJhclJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOwotICAgICAgICB2YXIgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdUYWJJdGVtID8g
dGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogbnVsbDsK
KyAgICAgICAgY29uc3QgYmFyUmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyAgICAgICAgY29uc3QgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdUYWJJdGVtID8g
dGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogbnVsbDsK
ICAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQucGFnZVkgPCBi
YXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBldmVudC5wYWdl
WCA8IChuZXdUYWJJdGVtUmVjdCA/IG5ld1RhYkl0ZW1SZWN0LnJpZ2h0IDogYmFyUmVjdC5yaWdo
dCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTc2OCw3ICs3MzksNyBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAg
ICAgX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIXRo
aXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAgaWYgKCF0aGlzLl90YWJBbmltYXRl
ZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cygic3RhdGljLWxheW91dCIpIHx8IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFu
aW1hdGluZyIpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2ZpbmlzaEV4
cGFuZGluZ1RhYnNBZnRlckNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwppbmRleCAyOGJhOTM5NTVhMzk4
MTIzMWU2Njc2ZDZhMzgwNjhlMjFjZjJiZGRlLi42ZTA2MDJiODhlMzRhMzIzZDAyNjkxODJlMTc1
NWNhNGY2YmM4ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKQEAgLTIzLDE5ICsyMywxNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UYWJCcm93
c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYklu
c3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFyLCBuYXZpZ2F0aW9uU2lk
ZWJhciwgZGV0YWlsc1NpZGViYXIpCiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh0YWJCYXIsICJNdXN0IHByb3ZpZGUgYSBUYWJCYXIuIik7CiAKLSAgICAg
ICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJyb3dzZXIiKTsK
KyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fdGFiQmFyID0gdGFiQmFy
IHx8IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFyOwotICAgICAgICBpZiAoIXRhYkJhcikKLSAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGFiQmFyLmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJyb3dzZXIiKTsKIAorICAg
ICAgICB0aGlzLl90YWJCYXIgPSB0YWJCYXI7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRl
YmFyID0gbmF2aWdhdGlvblNpZGViYXIgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fZGV0YWlsc1Np
ZGViYXIgPSBkZXRhaWxzU2lkZWJhciB8fCBudWxsOwogCkBAIC00OCw3ICs0Niw3IEBAIFdlYklu
c3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50KTsK
KyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyKTsKIAog
ICAgICAgICB2YXIgc2hvd05leHRUYWIgPSB0aGlzLl9zaG93TmV4dFRhYi5iaW5kKHRoaXMpOwog
ICAgICAgICB2YXIgc2hvd1ByZXZpb3VzVGFiID0gdGhpcy5fc2hvd1ByZXZpb3VzVGFiLmJpbmQo
dGhpcyk7CkBAIC03MywxMSArNzEsNiBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNz
IFRhYkJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OwotICAgIH0KLQogICAgIGdldCB0YWJCYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3RhYkJhcjsKQEAgLTk4LDEyICs5MSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xh
c3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICB9CiAK
LSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFiQmFyLnVwZGF0ZUxh
eW91dCgpOwotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQo
KTsKLSAgICB9Ci0KICAgICBiZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhjb25zdHJ1Y3RvcikK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250
ZW50Vmlld3NbMF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCmluZGV4IDdhMDBkY2FjYmE5MWMzMTM2YTRi
YTgxYmJlMDExNDE5N2JiMzU1NjMuLmY1NTY2MjIwYTgyZThkZDljYjgyNDE4MjExN2FlZTMyODhk
MmViYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKQEAgLTE3MiwyNiArMTcyLDE4IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVZpZXcgPSBjbGFzcyBUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdXBkYXRl
TGF5b3V0KCkKKyAgICBmaWx0ZXJVcGRhdGVkKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9z
Y2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmlt
YXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAg
ICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBu
ZWVkZWQuCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7CiAg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQorICAgIG5lZWRzTGF5b3V0KCkKICAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikK
KyAgICAgICAgLy8gRklYTUU6IG5lZWRzTGF5b3V0IGNhbiBiZSByZW1vdmVkIG9uY2UgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE1MDc0MT4gaXMgZml4ZWQuCisgICAgICAgIGlmICghdGhpcy52aXNp
YmxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwot
ICAgIH0KIAotICAgIGZpbHRlclVwZGF0ZWQoKQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlv
blBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKKyAgICAgICAgc3VwZXIubmVlZHNMYXlvdXQoKTsK
ICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTI0NywxNSArMjM5LDQgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lVmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rv
ci5Db250ZW50VmlldwogCiAgICAgICAgIHRoaXMuc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1l
bnQodHJlZUVsZW1lbnQpOwogICAgIH0KLQotICAgIG5lZWRzTGF5b3V0KCkKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy52aXNpYmxlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Ub29sYmFyLmpzCmluZGV4IDIxM2UzMjAxNzEyOGY5YWYyNDI2NGVhOTBjM2Y2ZWZhY2YwZWZm
NTIuLjRhNWY3NmYxNDM4YzM3Y2VlNWU1MzA3NGQxZTE1NjQ5YjVmNTVlODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpA
QCAtMzQsMzAgKzM0LDMwIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAKICAgICAgICAgdGhpcy5fY29udHJv
bFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAg
IHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9v
bGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQpOwogCiAgICAg
ICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgICAgICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CisgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOwogCiAg
ICAgICAgIHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQuY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSAr
ICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNlbnRlckxlZnRJdGVtU2VjdGlvblN0eWxlQ2xh
c3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlckxl
ZnRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rp
b25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMu
X2NlbnRlclNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0
ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50
ZXJJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlz
Ll9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgICAgIHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdl
Ykluc3BlY3Rvci5Ub29sYmFyLkNlbnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJSaWdodFNlY3Rp
b25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRl
clJpZ2h0U2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fcmlnaHRT
ZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlv
blN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuUmlnaHRJdGVtU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgaWYgKCFkb250QWxsb3dN
b2RlQ2hhbmdlcykKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0
bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNzMsMTUgKzczLDE1IEBAIFdlYkluc3BlY3Rvci5U
b29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlKQot
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2Rpc3BsYXlN
b2RlKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2Rp
c3BsYXlNb2RlKTsKIAogICAgICAgICAvLyBSZXZlcnQgdGhlIGZvcmNlZCBpY29uLW9ubHkgbW9k
ZSBpZiBpdCB3YXMgYXBwbGllZC4KICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlID09PSBX
ZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKQot
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5U
b29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5
KTsKIAogICAgICAgICB0aGlzLl9kaXNwbGF5TW9kZSA9IG1vZGU7CiAKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKG1vZGUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChtb2RlKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCkBAIC05OSwx
OCArOTksNTYgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAodGhpcy5fc2l6ZU1vZGUpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUodGhpcy5fc2l6ZU1vZGUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUodGhpcy5fc2l6ZU1vZGUpOwogCiAgICAgICAgIHRoaXMuX3NpemVNb2RlID0g
bW9kZTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKG1vZGUpOwogCiAgICAgICAgIHRoaXMudXBk
YXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLlRvb2xiYXIuRXZlbnQuU2l6ZU1vZGVEaWRDaGFuZ2UpOwogICAgIH0KIAotICAg
IGN1c3RvbVVwZGF0ZUxheW91dCgpCisgICAgYWRkVG9vbGJhckl0ZW0odG9vbGJhckl0ZW0sIHNl
Y3Rpb25JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHNlY3Rpb25FbGVtZW50OworCisg
ICAgICAgIHN3aXRjaCAoc2VjdGlvbklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVG9vbGJhci5TZWN0aW9uLkNvbnRyb2w6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVu
dCA9IHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5MZWZ0OgorICAgICAgICAg
ICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ2Vu
dGVyTGVmdDoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyTGVmdFNl
Y3Rpb25FbGVtZW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uLkNlbnRlcjoKKyAgICAgICAg
ICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQ7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24u
Q2VudGVyUmlnaHQ6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NlbnRlclJp
Z2h0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uUmlnaHQ6CisgICAgICAgICAgICBzZWN0aW9uRWxl
bWVudCA9IHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlY3Rpb25FbGVtZW50KTsKKworICAg
ICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uRWxlbWVudCk7
CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlvdXQoKQogICAgIHsKICAgICAg
ICAgLy8gQmFpbCBlYXJseSBpZiBvdXIgc2VjdGlvbnMgYXJlIG5vdCBjcmVhdGVkIHlldC4gVGhp
cyBtZWFucyB3ZSBhcmUgYmVpbmcgY2FsbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCiAgICAgICAg
IGlmICghdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50IHx8ICF0aGlzLl9jZW50ZXJTZWN0aW9uRWxl
bWVudCB8fCAhdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCkKQEAgLTExOCwxNyArMTU2LDE3IEBA
IFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyCiAKICAgICAgICAgLy8gRm9yY2UgY29sbGFwc2VkIHN0eWxlIGZvciBK
YXZhU2NyaXB0IGRlYnVnZ2FibGVzLgogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2Fi
bGVUeXBlID09PSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkgewotICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxl
Q2xhc3NOYW1lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFJlbW92ZSB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIHRvIHRlc3QgaWYgdGhlIGl0ZW1zIGNh
biBmaXQgYXQgZnVsbCB3aWR0aC4KLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIC8vIFJldmVydCB0
aGUgZm9yY2VkIGljb24tb25seSBtb2RlIGlmIGl0IHdhcyBhcHBsaWVkLgogICAgICAgICBpZiAo
dGhpcy5fZGlzcGxheU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLklj
b25BbmRMYWJlbEhvcml6b250YWwpIHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7Ci0g
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRvb2xi
YXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCk7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9k
ZS5JY29uT25seSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGlzT3ZlcmZsb3dpbmdUb29sYmFyKCkKQEAgLTE0
Nyw1MCArMTg1LDE0IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRl
bmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAgICAgICAgIC8vIE9ubHkgdGhlIGhvcml6
b250YWwgZGlzcGxheSBtb2RlIHN1cHBvcnRzIGNvbGxhcHNpbmcgbGFiZWxzLgogICAgICAgICAv
LyBJZiBhbnkgc2VjdGlvbnMgYXJlIG92ZXJmbG93aW5nIHRoZSB0b29sYmFyIHRoZW4gZm9yY2Ug
dGhlIGRpc3BsYXkgbW9kZSB0byBiZSBpY29uIG9ubHkuCiAgICAgICAgIGlmICh0aGlzLl9kaXNw
bGF5TW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVs
SG9yaXpvbnRhbCAmJiBpc092ZXJmbG93aW5nVG9vbGJhci5jYWxsKHRoaXMpKSB7Ci0gICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIu
RGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNv
bk9ubHkpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5z
cGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCk7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5E
aXNwbGF5TW9kZS5JY29uT25seSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWlzT3ZlcmZs
b3dpbmdUb29sYmFyLmNhbGwodGhpcykpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNv
bGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9Ci0KLSAgICBhZGRUb29sYmFySXRlbSh0b29s
YmFySXRlbSwgc2VjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgc2VjdGlvbkVs
ZW1lbnQ7Ci0KLSAgICAgICAgc3dpdGNoIChzZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ29udHJvbDoKLSAgICAgICAgICAgIHNl
Y3Rpb25FbGVtZW50ID0gdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50OwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uLkxlZnQ6
Ci0gICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudDsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIu
U2VjdGlvbi5DZW50ZXJMZWZ0OgotICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9j
ZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ2VudGVy
OgotICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVu
dDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xi
YXIuU2VjdGlvbi5DZW50ZXJSaWdodDoKLSAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhp
cy5fY2VudGVyUmlnaHRTZWN0aW9uRWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5SaWdodDoKLSAgICAgICAgICAg
IHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoc2VjdGlvbkVsZW1l
bnQpOwotCi0gICAgICAgIHRoaXMuYWRkTmF2aWdhdGlvbkl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rp
b25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIAogICAg
IC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliMmM1ZDViNDQwN2ZmZDNmNWE5M2MxMzM5Zjk1OGI5
OGRhYzVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaWV3LmpzCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2Vi
SW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAor
eworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50Ll9fdmlldyA9IHRoaXM7CisgICAgICAgIHRo
aXMuX3N1YnZpZXdzID0gW107CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxl
bWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAg
ICBnZXQgc3Vidmlld3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnZpZXdzOwor
ICAgIH0KKworICAgIGFkZFN1YnZpZXcodmlldykKKyAgICB7CisgICAgICAgIHRoaXMuaW5zZXJ0
U3Vidmlld0JlZm9yZSh2aWV3LCBudWxsKTsKKyAgICB9CisKKyAgICBpbnNlcnRTdWJ2aWV3QmVm
b3JlKHZpZXcsIHJlZmVyZW5jZVZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh2
aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghcmVmZXJlbmNlVmlldyB8fCByZWZlcmVuY2VWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlZpZXcpOworCisgICAgICAgIGlmICh0aGlzLl9zdWJ2aWV3cy5pbmNsdWRlcyh2aWV3KSkgewor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDYW5ub3QgYWRkIHZpZXcgdGhhdCBp
cyBhbHJlYWR5IGEgc3Vidmlldy4iLCB2aWV3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IGJlZm9yZUluZGV4ID0gcmVmZXJlbmNlVmlldyA/IHRoaXMu
X3N1YnZpZXdzLmluZGV4T2YocmVmZXJlbmNlVmlldykgOiB0aGlzLl9zdWJ2aWV3cy5sZW5ndGg7
CisgICAgICAgIGlmIChiZWZvcmVJbmRleCA9PT0gLTEpIHsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGZhbHNlLCAiQ2Fubm90IGluc2VydCB2aWV3LiBJbnZhbGlkIHJlZmVyZW5jZSB2aWV3
LiIsIHJlZmVyZW5jZVZpZXcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5fc3Vidmlld3MuaW5zZXJ0QXRJbmRleCh2aWV3LCBiZWZvcmVJbmRleCk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuaW5zZXJ0QmVmb3JlKHZpZXcuZWxlbWVudCwgcmVmZXJlbmNl
VmlldyA/IHJlZmVyZW5jZVZpZXcuZWxlbWVudCA6IG51bGwpOworICAgIH0KKworICAgIHJlbW92
ZVN1YnZpZXcodmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcuZWxl
bWVudC5wYXJlbnROb2RlID09PSB0aGlzLl9lbGVtZW50LCAiU3VidmlldyBET00gZWxlbWVudCBt
dXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBhcmVudCB2aWV3IGVsZW1lbnQuIik7CisKKyAgICAgICAg
aWYgKCF0aGlzLl9zdWJ2aWV3cy5pbmNsdWRlcyh2aWV3KSkgeworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZmFsc2UsICJDYW5ub3QgcmVtb3ZlIHZpZXcgd2hpY2ggaXNuJ3QgYSBzdWJ2aWV3
LiIsIHZpZXcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fc3Vidmlld3MucmVtb3ZlKHZpZXcsIHRydWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LnJl
bW92ZUNoaWxkKHZpZXcuZWxlbWVudCk7CisgICAgfQorCisgICAgcmVwbGFjZVN1YnZpZXcob2xk
VmlldywgbmV3VmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9sZFZpZXcgIT09
IG5ld1ZpZXcsICJDYW5ub3QgcmVwbGFjZSBzdWJ2aWV3IHdpdGggaXRzZWxmLiIpOworCisgICAg
ICAgIHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZShuZXdWaWV3LCBvbGRWaWV3KTsKKyAgICAgICAg
dGhpcy5yZW1vdmVTdWJ2aWV3KG9sZFZpZXcpOworICAgIH0KKworICAgIHVwZGF0ZUxheW91dCgp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmll
cikKKyAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91
dFVwZGF0ZUlkZW50aWZpZXIpOworCisgICAgICAgIHRoaXMuX2xheW91dFN1YnRyZWUoKTsKKyAg
ICB9CisKKyAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICB9CisKKyAgICBuZWVkc0xheW91
dCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlv
dXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2xheW91dFN1
YnRyZWUuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBsYXlv
dXQoKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAg
ICAvLyBOb3QgcmVzcG9uc2libGUgZm9yIHJlY3Vyc2luZyB0byBjaGlsZCB2aWV3cy4KKyAgICAg
ICAgLy8gU2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHk7IHVzZSB1cGRhdGVMYXlvdXQoKSBp
bnN0ZWFkLgorICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9sYXlvdXRTdWJ0cmVlKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1
bmRlZmluZWQ7CisKKyAgICAgICAgdGhpcy5sYXlvdXQoKTsKKworICAgICAgICB0aGlzLl9zdWJ2
aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7IHZpZXcuX2xheW91dFN1YnRyZWUoKTsgfSk7CisgICAg
fQorfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264715</attachid>
            <date>2015-11-03 13:07:31 -0800</date>
            <delta_ts>2015-11-03 13:57:28 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-149186-20151103130644.patch</filename>
            <type>text/plain</type>
            <size>90611</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
MGQ2MWE3YjQ2MTQwMzBmZGM0ODAzMWFmM2JkODIyMjFmOWMyMjdlLi42YThjZjk0MWQzNWM3YzVm
OTgzYjA0OWFlY2JkMTU0OGEzZGU1ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjkgQEAKKzIwMTUtMTEtMDMgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBWaWV3IGJhc2UgY2xhc3MsIHJlZmFj
dG9yIHNvbWUgY29yZSB2aWV3IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1
cmcgYW5kIFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMg
YSBuZXcgVmlldyBiYXNlIGNsYXNzLCB3aGljaCBlbmNhcHN1bGF0ZXMgRE9NIGVsZW1lbnQgY3Jl
YXRpb24sCisgICAgICAgIGxheW91dCBzY2hlZHVsaW5nLCBhbmQgc3VidmlldyBtYW5hZ2VtZW50
LiBUaGUgVmlldyBjbGFzcyBjb25zdHJ1Y3RvciBhY2NlcHRzIGFuIG9wdGlvbmFsCisgICAgICAg
IGVsZW1lbnQgcGFyYW1ldGVyLCBhbGxvd2luZyBhbiBleGlzdGluZyBET00gZWxlbWVudCB0byBi
ZSBhc3NvY2lhdGVkIHdpdGggdGhlIFZpZXcgb2JqZWN0LAorICAgICAgICByYXRoZXIgdGhhbiBk
eW5hbWljYWxseSBjcmVhdGluZyBhIG5ldyBlbGVtZW50LiBWaWV3IGFsc28gYWRkcyBhIGBfX3Zp
ZXdgIHByb3BlcnR5IHRvIGl0cworICAgICAgICBhc3NvY2lhdGVkIERPTSBlbGVtZW50IHRvIGZh
Y2lsaXRhdGUgZGVidWdnaW5nIHRoZSBJbnNwZWN0b3IgVUkuCisKKyAgICAgICAgRm9yIHRoZSB2
aWV3IGNsYXNzZXMgcmVmYWN0b3JlZCBpbiB0aGlzIHBhdGNoLCB0aGUgY2hhbmdlcyBhcmUgbGFy
Z2VseSBtZWNoYW5pY2FsLiBEeW5hbWljYWxseQorICAgICAgICBjcmVhdGVkIERPTSBlbGVtZW50
cyBhbmQgcmVkdW5kYW50IGVsZW1lbnQgZ2V0dGVycyBoYXZlIGJlZW4gcmVtb3ZlZC4gbmVlZHNM
YXlvdXQgaGFzIHJlcGxhY2VkCisgICAgICAgIHVwZGF0ZUxheW91dElmTmVlZGVkIHdoZXJlIGFw
cHJvcHJpYXRlLiB1cGRhdGVMYXlvdXQgaGFzIGJlZW4gcmVtb3ZlZCBlbnRpcmVseSBmb3Igdmll
d3MgdGhhdAorICAgICAgICBwZXJmb3JtZWQgbm8gbGF5b3V0IG90aGVyIHRoYW4gdG8gY2FzY2Fk
ZSBsYXlvdXRzIHRvIHRoZWlyIGNoaWxkcmVuLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9C
YXNlL01haW4uanM6CisgICAgICAgIE1vdmVkIFRhYkJhciBsYXlvdXQgdXBkYXRlcyBvdXQgb2Yg
VGFiQnJvd3NlciBhbmQgaW50byBNYWluLmpzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9N
YWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6
IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5
b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93
c2VyVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXJUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJU
YWJDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90
b3R5cGUuZ2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5fc2hvd0VudHJ5KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX2hpZGVFbnRyeSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmdldCBlbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5w
cm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX2FkZENvbnRlbnRWaWV3RWxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90
eXBlLl9yZW1vdmVDb250ZW50Vmlld0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLmF1dG9TaXplQ29sdW1ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLmFwcGx5Q29sdW1uV2lkdGhzTWFwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLnJlc2l6ZXJEcmFnZ2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlc2l6ZXJEcmFnRW5kZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRl
bS5wcm90b3R5cGUuc2V0IGNvbXBvbmVudHMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnBy
b3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmll
dy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUu
aW5zZXJ0TmF2aWdhdGlvbkl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIucHJvdG90eXBlLnJlbW92ZU5hdmlnYXRpb25JdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5nZXQgbWluaW11bVdpZHRoKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9tb3VzZURvd24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9tb3VzZU1vdmVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fbW91c2VVcCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX2NhbGN1bGF0ZU1pbmlt
dW1XaWR0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUu
dXBkYXRlTGF5b3V0U29vbi51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnVwZGF0ZUxheW91dFNvb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUu
Z2V0IGVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2
aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJv
dG90eXBlLnNldCBoaWRkZW4pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29y
a1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVW
aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlw
ZS5sYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJv
dG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PdmVy
dmlld1RpbWVsaW5lVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGlu
ZVZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdU
aW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJv
dG90eXBlLmxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3Rv
dHlwZS5nZXQgZWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LnByb3RvdHlwZS5sYXlvdXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LnByb3RvdHlwZS51
cGRhdGVMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2Ny
aXB0VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnByb3RvdHlw
ZS5sYXlvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5wcm90
b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYkJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuaW5zZXJ0VGFiQmFySXRlbS5hbmltYXRlVGFi
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJ
dGVtLnJlbW92ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlw
ZS5pbnNlcnRUYWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90
eXBlLnJlbW92ZVRhYkJhckl0ZW0uYW5pbWF0ZVRhYnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbS5yZW1vdmVTdHlsZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUucmVtb3ZlVGFiQmFySXRlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5oYXNOb3JtYWxUYWIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlv
bnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2ZpbmlzaEV4cGFu
ZGluZ1RhYnNBZnRlckNsb3NlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3Rv
dHlwZS5fZmluaXNoRXhwYW5kaW5nVGFic0FmdGVyQ2xvc2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZUNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZUxlYXZlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVOZXdUYWJNb3VzZUVudGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLnVwZGF0ZUxheW91dFNvb24udXBkYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLnVwZGF0
ZUxheW91dFNvb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90
b3R5cGUudXBkYXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJC
YXIucHJvdG90eXBlLmdldCBlbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJyb3dzZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUuZ2V0IGVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIucHJvdG90eXBl
LnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3Rv
dHlwZS5maWx0ZXJVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcu
cHJvdG90eXBlLm5lZWRzTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVZp
ZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXRJZk5lZWRlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3KTogRGVsZXRlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Ub29sYmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5zZXQg
ZGlzcGxheU1vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLnNl
dCBzaXplTW9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuYWRk
VG9vbGJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLmxh
eW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUuY3VzdG9tVXBk
YXRlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lZCB0byBsYXlvdXQuIFRoaXMgZWxp
bWluYXRlZCBhIGxheWVyaW5nIHZpb2xhdGlvbiBpbiBOYXZpZ2F0aW9uQmFyLAorICAgICAgICB3
aGVyZSB0aGUgZnVuY3Rpb24gcHJldmlvdXNseSBrbm93biBhcyB1cGRhdGVMYXlvdXQgY2hlY2tl
ZCBmb3IgYQorICAgICAgICBhIGBjdXN0b21VcGRhdGVMYXlvdXRgIGZ1bmN0aW9uIHByb3BlcnR5
LCBhbmQgd291bGQgY2FsbCBpdCBpbnN0ZWFkIG9mIGl0cworICAgICAgICBvd24gbGF5b3V0IGxv
Z2ljIGlmIGZvdW5kLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaWV3LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUuZ2V0IHN1YnZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZS5hZGRTdWJ2aWV3KToKKyAgICAgICAgQXBwZW5kcyBhIHZpZXcgdG8gdGhlIGVuZCBv
ZiB0aGUgc3VidmlldyBsaXN0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
Lmluc2VydFN1YnZpZXdCZWZvcmUpOgorICAgICAgICBJbnNlcnRzIGEgdmlldyBpbnRvIHN1YnZp
ZXcgbGlzdCBiZWZvcmUgYW5vdGhlciBzdWJ2aWV3LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
ZXcucHJvdG90eXBlLnJlbW92ZVN1YnZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcu
cHJvdG90eXBlLnJlcGxhY2VTdWJ2aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAgICBObyBsb25nZXIgb3ZlcnJpZGRlbiBieSBz
dWJjbGFzc2VzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxh
eW91dElmTmVlZGVkKToKKyAgICAgICAgRm9yY2VzIGEgbGF5b3V0IGlmIG9uZSBoYXMgYmVlbiBz
Y2hlZHVsZWQsIG90aGVyd2lzZSBkb2VzIG5vdGhpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Vmlldy5wcm90b3R5cGUubmVlZHNMYXlvdXQpOgorICAgICAgICBTY2hlZHVsZXMgYSBsYXlvdXQg
Zm9yIHRoZSB2aWV3LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmxheW91
dCk6CisgICAgICAgIE92ZXJyaWRkZW4gYnkgdmlld3MgdGhhdCByZXF1aXJlIHNwZWNpYWwgbGF5
b3V0IGxvZ2ljLiBMYXlvdXRzCisgICAgICAgIGNhc2NhZGUgdG8gY2hpbGQgdmlld3MgYXV0b21h
dGljYWxseS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fbGF5b3V0U3Vi
dHJlZSk6CisgICAgICAgIE1haW4gbGF5b3V0IGVudHJ5IHBvaW50LiBDYWxsZWQgYnkgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHZpYSBuZWVkc0xheXV0LCBieQorICAgICAgICB1cGRhdGVMYXlvdXQg
d2hlbiBmb3JjaW5nIGEgc3luY2hyb25vdXMgbGF5b3V0LCBhbmQgY2FsbGVkIHJlY3Vyc2l2ZWx5
IGR1cmluZworICAgICAgICBzdWJ2aWV3IHRyYXZlcnNhbC4KKwogMjAxNS0xMS0wMyAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEhhbmRsZSBvciBSZW1vdmUgUGFyc2VIVE1MIFRpbWVsaW5lIEV2ZW50IFJlY29yZHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCAy
OTk3ZDBiZTRlY2ZkNzhhYTJiZDZhN2Q3YWMzYTFlNGI3ODQ5M2I2Li43ZmM2ZThjMGQ1MmQ4Njhm
ODU2ZjM2NGU2YzE5NzZmYTdmY2Q2NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xMjgyLDYgKzEyODIsNyBAQCBXZWJJbnNw
ZWN0b3IuX3dpbmRvd0JsdXJyZWQgPSBmdW5jdGlvbihldmVudCkKIFdlYkluc3BlY3Rvci5fd2lu
ZG93UmVzaXplZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIHRoaXMudG9vbGJhci51cGRhdGVM
YXlvdXQoKTsKKyAgICB0aGlzLnRhYkJhci51cGRhdGVMYXlvdXQoKTsKICAgICB0aGlzLl90YWJC
cm93c2VyU2l6ZURpZENoYW5nZSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGFjZTM3NWI2ZDg2ZWYzMzkwMGZiNDBhOTYyMDM0
ZDYzZDE3ZWI0ZDcuLjEyZjU1OTk3Zjk3NjIyY2IxOWZiOTgzMTRkODlhNTM4YjMyOGIxZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTMz
Niw2ICszMzYsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+
CiAKKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlldy5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvQ29uc29sZUNvbW1hbmRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQu
anMKaW5kZXggODBmNDk0YmJmMDE0ZTVhMmEzOWJmZmJjYTg2NDAyM2EyMThkNTMyMS4uZDY1NzIz
NmI3ZWRjNzdiYzBjYjQ4MDhmMGVlMzNlZGU0YjhkNGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0Lmpz
CkBAIC0yMywxNiArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9
IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogewogICAgIGNv
bnN0cnVjdG9yKGRlbGVnYXRlLCBtaW1lVHlwZSwgZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHN1
cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCiAgICAgICAgIG1pbWVUeXBlID0gcGFy
c2VNSU1FVHlwZShtaW1lVHlwZSkudHlwZTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxl
bWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLXByb21wdCIsIFdlYkluc3BlY3Rvci5TeW50YXhI
aWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImNvbnNvbGUtcHJvbXB0IiwgV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5
bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVs
bDsKIApAQCAtNjYsMTEgKzY1LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBjbGFz
cyBDb25zb2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVi
bGljCiAKLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxl
bWVudDsKLSAgICB9Ci0KICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2RlbGVnYXRlOwpAQCAtMTI2LDExICsxMjAsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29s
ZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwogICAgIH0KIAotICAgIHVwZGF0
ZUxheW91dCgpCi0gICAgewotICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlZnJlc2goKTsKLSAg
ICB9Ci0KICAgICB1cGRhdGVDb21wbGV0aW9ucyhjb21wbGV0aW9ucywgaW1wbGljaXRTdWZmaXgp
CiAgICAgewogICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci51cGRhdGVDb21wbGV0
aW9ucyhjb21wbGV0aW9ucywgaW1wbGljaXRTdWZmaXgpOwpAQCAtMTU4LDYgKzE0NywxMSBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiAhIXRoaXMudGV4dDsKICAgICB9CiAK
KyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7
CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2hhbmRsZVRhYktleShjb2RlTWlycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50QnJvd3Nlci5qcwppbmRleCBiZTdiZTAyNmY4MWZmYThhYzg4YWUxOTljNTVl
MzA0YTQxODkwNmMyLi43MTEzNGFiNmU4NGE2NjZjYzJiZDM5NGE2Mzk5ZjAzZmY0MDk2ODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50QnJvd3Nlci5qcwpAQCAtMjMsMjkgKzIzLDI4IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
ID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJ
bnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3RydWN0b3IoZWxlbWVudCwgZGVsZWdhdGUsIGRp
c2FibGVCYWNrRm9yd2FyZCkKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVy
KGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImNvbnRlbnQtYnJvd3NlciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiY29udGVudC1icm93c2VyIik7CiAKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5l
dyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1
YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7CiAKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdD
b250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyOwogICAgICAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2Us
IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZWxlbWVudCk7
CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lcik7CiAK
ICAgICAgICAgdGhpcy5fZmluZEJhbm5lciA9IG5ldyBXZWJJbnNwZWN0b3IuRmluZEJhbm5lcih0
aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZFNob3csIHRoaXMuX2ZpbmRCYW5uZXJEaWRTaG93LCB0
aGlzKTsKICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZEhpZGUsIHRoaXMuX2ZpbmRCYW5uZXJEaWRIaWRlLCB0
aGlzKTsKIAogICAgICAgICBpZiAoIWRpc2FibGVCYWNrRm9yd2FyZCkgewotICAgICAgICAgICAg
dGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29u
dHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9uQ2xp
Y2tlZC5iaW5kKHRoaXMpLCB0aGlzLl9lbGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX2Zvcndh
cmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2Vk
LmJpbmQodGhpcyksIHRoaXMuX2VsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fYmFja0tleWJv
YXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMp
LCB0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEtleWJvYXJkU2hvcnRj
dXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleS5SaWdodCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgdGhp
cy5lbGVtZW50KTsKIAogICAgICAgICAgICAgdGhpcy5fYmFja0J1dHRvbk5hdmlnYXRpb25JdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiYmFjayIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQmFjayAoJXMpIikuZm9ybWF0KHRoaXMuX2JhY2tLZXlib2FyZFNob3J0
Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9CYWNrRm9yd2FyZEFycm93cy5zdmcjYmFjay1hcnJv
dy1tYXNrIiwgOCwgMTMpOwogICAgICAgICAgICAgdGhpcy5fYmFja0J1dHRvbk5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX2JhY2tCdXR0b25DbGlja2VkLCB0aGlzKTsKQEAgLTgxLDExICs4
MCw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2Vy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQg
ZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9Ci0K
ICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2
aWdhdGlvbkJhcjsKQEAgLTEzMywxMiArMTI3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93
c2VyID0gY2xhc3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdHM7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0KCk7
Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnVwZGF0ZUxheW91dCgpOwotICAg
IH0KLQogICAgIHNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVk
T2JqZWN0LCBjb29raWUsIGV4dHJhQXJndW1lbnRzKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRl
bnRWaWV3ID0gdGhpcy5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVk
T2JqZWN0LCBmYWxzZSwgZXh0cmFBcmd1bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRC
cm93c2VyVGFiQ29udGVudFZpZXcuanMKaW5kZXggNGVlMmFkMzM3NDY5ZTdhYTA1NTMwMGQyNDIw
ODExOGI4ZjY3Yzg1MS4uNTk5N2NiMDdlZGVmYTk5NWZlYzc2ZmNjN2E4M2ZiNmRlYjYyOTMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCkBAIC00
Miw3ICs0Miw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0g
Y2xhc3MgQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBlCiAKICAgICAgICAgdGhpcy5fbGFz
dFNlbGVjdGVkRGV0YWlsc1NpZGViYXJQYW5lbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNl
dHRpbmcoaWRlbnRpZmllciArICItbGFzdC1zZWxlY3RlZC1kZXRhaWxzLXNpZGViYXItcGFuZWwi
LCBudWxsKTsKIAotICAgICAgICB0aGlzLl9jb250ZW50QnJvd3NlciA9IHRoaXMuX2NvbnRlbnRC
cm93c2VyOwogICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50UmVwcmVzZW50ZWRPYmplY3Rz
RGlkQ2hhbmdlLCB0aGlzLnNob3dEZXRhaWxzU2lkZWJhclBhbmVscywgdGhpcyk7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRl
bnRCcm93c2VyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY29udGVu
dEJyb3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwogCkBAIC04Miw3ICs4
MSw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyBlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGV0YWlsc1NpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVu
dC5TaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcy5fZGV0YWlsc1NpZGViYXJQYW5lbFNlbGVjdGVk
LCB0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9jb250ZW50QnJvd3Nlci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRo
aXMuX2NvbnRlbnRCcm93c2VyKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTEyMiwxMyAr
MTIxLDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3IGUKICAgICAgICAgdGhpcy5fY29udGVudEJy
b3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3MoKTsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0
KCk7Ci0KLSAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIudXBkYXRlTGF5b3V0KCk7Ci0gICAg
fQotCiAgICAgZ2V0IG1hbmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggYTdjYjhkM2ZhZDgxMzU3OGJkMzE4
NTdlYTM2MTM5NDQ4MjEyZTJjNy4uMTgwMjJkMzdlM2Q5ODVkY2U2MzQ0MmY0NWFiYmY3OTJkNWQ2
MGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBj
bGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rv
ci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZp
ZXcKIHsKICAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMp
CiAgICAgewpAQCAtMzQsOCArMzQsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBjbGFz
cyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlz
Ll9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwogCi0gICAgICAgIHRoaXMu
X2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LXZpZXciKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtdmlldyIpOwogCiAgICAgICAgIHRoaXMuX3BhcmVu
dENvbnRhaW5lciA9IG51bGw7CiAgICAgfQpAQCAtMTk1LDExICsxOTQsNiBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgcmV0dXJuIFtdOwogICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCBwYXJl
bnRDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudENvbnRhaW5l
cjsKQEAgLTI0NSwxMSArMjM5LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0KLQogICAgIHNob3duKCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29u
dGFpbmVyLmpzCmluZGV4IDM2ODU4OGQxMDJhMTU2YWE4ZjBjNTIxMjgxMjZmOWU1NjdmOWRhMzAu
LmE2ZGExZGE0MjIwZDVlYzU2MzdiNGYxYWY1YTc0MDA2ODk0ZjNhZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFp
bmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC0yMywxNCArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0NvbnRhaW5lciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRW
aWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKLSAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50KQorICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAK
LSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12
aWV3LWNvbnRhaW5lciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29u
dGVudC12aWV3LWNvbnRhaW5lciIpOwogCiAgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9
IFtdOwogICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSAtMTsKQEAgLTM4LDExICszNyw2IEBA
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29u
dGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVt
ZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAg
IGdldCBjdXJyZW50SW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRJ
bmRleDsKQEAgLTY3LDEzICs2MSw2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAg
IHJldHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhpcy5fY3VycmVudEluZGV4XTsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50
VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwotICAgICAgICBpZiAoY3VycmVudENvbnRl
bnRWaWV3KQotICAgICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnVwZGF0ZUxheW91dCgpOwot
ICAgIH0KLQogICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRP
YmplY3QsIG9ubHlFeGlzdGluZywgZXh0cmFBcmd1bWVudHMpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CkBAIC00MjgsMTggKzQxNSw2IEBAIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVy
IGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfYWRkQ29udGVudFZp
ZXdFbGVtZW50KGNvbnRlbnRWaWV3KQotICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmVs
ZW1lbnQucGFyZW50Tm9kZSAhPT0gdGhpcy5fZWxlbWVudCkKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFZpZXcuZWxlbWVudCk7Ci0gICAgfQotCi0gICAgX3Jl
bW92ZUNvbnRlbnRWaWV3RWxlbWVudChjb250ZW50VmlldykKLSAgICB7Ci0gICAgICAgIGlmIChj
b250ZW50Vmlldy5lbGVtZW50LnBhcmVudE5vZGUpCi0gICAgICAgICAgICBjb250ZW50Vmlldy5l
bGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGVudFZpZXcuZWxlbWVudCk7Ci0gICAg
fQotCiAgICAgX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50Vmlldyhjb250ZW50VmlldykKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50Vmlldy52aXNpYmxlKTsKQEAgLTQ2MCw3
ICs0MzUsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBDb250
ZW50Vmlld0NvbnRhaW5lciBleHRlbmRzIFdlYkluc3BlYwogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSk7
CiAKLSAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdFbGVtZW50KGVudHJ5LmNvbnRlbnRWaWV3
KTsKKyAgICAgICAgaWYgKCF0aGlzLnN1YnZpZXdzLmluY2x1ZGVzKGVudHJ5LmNvbnRlbnRWaWV3
KSkKKyAgICAgICAgICAgIHRoaXMuYWRkU3VidmlldyhlbnRyeS5jb250ZW50VmlldykKKwogICAg
ICAgICBlbnRyeS5wcmVwYXJlVG9TaG93KHNob3VsZENhbGxTaG93bik7CiAgICAgfQogCkBAIC00
NjksNyArNDQ2LDggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3Mg
Q29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgY29uc29sZS5h
c3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSk7CiAK
ICAgICAgICAgZW50cnkucHJlcGFyZVRvSGlkZSgpOwotICAgICAgICB0aGlzLl9yZW1vdmVDb250
ZW50Vmlld0VsZW1lbnQoZW50cnkuY29udGVudFZpZXcpOworICAgICAgICBpZiAodGhpcy5zdWJ2
aWV3cy5pbmNsdWRlcyhlbnRyeS5jb250ZW50VmlldykpCisgICAgICAgICAgICB0aGlzLnJlbW92
ZVN1YnZpZXcoZW50cnkuY29udGVudFZpZXcpCiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwppbmRleCAx
OWZjNDVmYjJhZDE5YWMyNDM0ZGU2YjQxYjEzMWI1ZDM0ZGE3YWExLi5iNzhhMGI2NTc1YzY5MGU0
ZGRhZTIxNzJhYjBmNDZjYjQ2YjVhNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwpAQCAtMjMsNyArMjMsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRh
R3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5EYXRhR3JpZCA9
IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1
Y3Rvcihjb2x1bW5zRGF0YSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaywgcHJlZmVycmVk
Q29sdW1uT3JkZXIpCiAgICAgewpAQCAtNDgsNyArNDgsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
dGhpcy5yZXNpemVycyA9IFtdOwogICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXpl
ZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGEtZ3JpZCI7
CiAgICAgICAgIHRoaXMuZWxlbWVudC50YWJJbmRleCA9IDA7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBm
YWxzZSk7CkBAIC00MDAsNyArMzk5LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3Mg
RGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGZvciAodmFyIFtp
ZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykKICAgICAgICAgICAgIGNvbHVtblsi
ZWxlbWVudCJdLnN0eWxlLndpZHRoID0gd2lkdGhzW2lkZW50aWZpZXJdICsgIiUiOwogICAgICAg
ICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwotICAgICAgICB0aGlzLnVw
ZGF0ZUxheW91dCgpOworICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAgICAgfQogCiAgICAg
aW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVtbkRhdGEsIGluc2VydGlvbkluZGV4
KQpAQCAtNTUyLDkgKzU1MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFH
cmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBm
dW5jdGlvbiBpcyBub3QgY2FsbGVkIGFmdGVyIHRoZSBEYXRhR3JpZCBpcyBhdHRhY2hlZCB0byBp
dHMKICAgICAvLyBwYXJlbnQgZWxlbWVudCwgdGhlbiB0aGUgRGF0YUdyaWQncyBjb2x1bW5zIHdp
bGwgbm90IGJlIHJlc2l6YWJsZS4KLSAgICB1cGRhdGVMYXlvdXQoKQorICAgIGxheW91dCgpCiAg
ICAgewotICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byB1c2Ugb2Zmc2V0ZXMgaWYgd2UncmUg
bm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCB0cmVlIHlldC4KKyAgICAgICAgLy8gRG8gbm90
IGF0dGVtcHQgdG8gdXNlIG9mZnNldHMgaWYgd2UncmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1
bWVudCB0cmVlIHlldC4KICAgICAgICAgaWYgKCF0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXpl
ZCAmJiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKICAgICAgICAgICAgIC8vIEdpdmUgYWxs
IHRoZSBjb2x1bW5zIGluaXRpYWwgd2lkdGhzIG5vdyBzbyB0aGF0IGR1cmluZyBhIHJlc2l6ZSwK
ICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHR3byBjb2x1bW5zIHRoYXQgZ2V0IHJlc2l6ZWQgZ2V0
IGEgcGVyY2VudCB2YWx1ZSBmb3IKQEAgLTU4MCw3ICs1NzksNiBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQgPSBjbGFzcyBEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7Ci0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVu
dC5EaWRMYXlvdXQpOwogICAgIH0KIAogICAgIGNvbHVtbldpZHRoc01hcCgpCkBAIC02MDIsNyAr
NjAwLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91
cEVsZW1lbnQuY2hpbGRyZW5bb3JkaW5hbF0uc3R5bGUud2lkdGggPSB3aWR0aDsKICAgICAgICAg
fQogCi0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CisgICAgICAgIHRoaXMubmVlZHNMYXlv
dXQoKTsKICAgICB9CiAKICAgICBfaXNDb2x1bW5WaXNpYmxlKGNvbHVtbklkZW50aWZpZXIpCkBA
IC0xMjYwLDcgKzEyNTgsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRhR3Jp
ZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9wb3NpdGlvblJl
c2l6ZXJFbGVtZW50cygpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuRGlkTGF5b3V0KTsKICAgICB9CiAKICAgICByZXNpemVyRHJhZ0VuZGVkKHJlc2l6ZXIpCkBA
IC0xMjcwLDEyICsxMjY3LDEwIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFH
cmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuX2N1cnJlbnRSZXNpemVyID0gbnVsbDsKLSAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LkRpZExheW91dCk7
CiAgICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50ID0gewotICAgIERpZExh
eW91dDogImRhdGFncmlkLWRpZC1sYXlvdXQiLAogICAgIFNvcnRDaGFuZ2VkOiAiZGF0YWdyaWQt
c29ydC1jaGFuZ2VkIiwKICAgICBTZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZGF0YWdyaWQtc2VsZWN0
ZWQtbm9kZS1jaGFuZ2VkIiwKICAgICBFeHBhbmRlZE5vZGU6ICJkYXRhZ3JpZC1leHBhbmRlZC1u
b2RlIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5q
cwppbmRleCAyZGJhMjBiYWRlNGVjNWZhZTM5YTQwMjhjMmY3N2NhZjVlYTAxMTg4Li44YWIyMWU0
N2RkYjdiYzIzMDRhMGJmNzk3NmMxZmYwOGZhZjI5NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzCkBAIC02MSw3ICs2MSw3IEBAIFdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBIaWVyYXJjaGlj
YWxQYXRoTmF2aWdhdGlvbkl0CiAKICAgICAgICAgLy8gVXBkYXRlIGxheW91dCBmb3IgdGhlIHNv
IG90aGVyIGl0ZW1zIGNhbiBhZGp1c3QgdG8gdGhlIGV4dHJhIHNwYWNlIChvciBsYWNrIHRoZXJl
b2YpIHRvby4KICAgICAgICAgaWYgKHRoaXMucGFyZW50TmF2aWdhdGlvbkJhcikKLSAgICAgICAg
ICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAg
ICAgICB0aGlzLnBhcmVudE5hdmlnYXRpb25CYXIubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAg
ICBnZXQgbGFzdENvbXBvbmVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMKaW5kZXgg
ZDQ2ZjEzZDA2MDg2OGVmNzNkOTcyNDhhMjFiY2M4ODI3ODg1ODUyNC4uY2E0NWFkOTAxMGFhNzUx
M2YxYWQwN2MzMzE2YjlhY2U1M2U0ZmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5q
cwpAQCAtODYsNyArODYsNyBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gY2xh
c3MgTGF5b3V0VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0aGlz
Lm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWxlYXZlIiwgdGhpcy5fbW91c2VMZWF2ZVRyZWVPdXRsaW5lLmJpbmQodGhpcykpOwogCiAg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYXlvdXQiKTsKLSAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICB0
aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwogCiAgICAgICAgIHRpbWVsaW5lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlz
Ll9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIApAQCAtMTMzLDE1ICsxMzMsNiBA
QCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gY2xhc3MgTGF5b3V0VGltZWxpbmVW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGlnaHQo
KTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQotICAgIHsKLSAgICAgICAgc3VwZXIudXBk
YXRlTGF5b3V0KCk7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0K
LSAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfQotCiAgICAgbWF0
Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkLnRyZWVFbGVtZW50TWF0Y2hlc0FjdGl2ZVNjb3Bl
RmlsdGVycyh0cmVlRWxlbWVudCk7CkBAIC0xODUsNiArMTc2LDExIEBAIFdlYkluc3BlY3Rvci5M
YXlvdXRUaW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuCiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0KIAorICAg
IGxheW91dCgpCisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsK
KyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uQmFyLmpzCmluZGV4IGRlODU2OTVlNjFjZGNkNzQ3ODg3Y2I3OTk1ODVmOGFl
MDhhY2E0ZjUuLjhmYWNmM2JhMmU5ZTRiZGVlMjA4MjFkMDY4Mzg5OTI5OGQyN2VlZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRp
b25CYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmF2aWdhdGlvbkJhci5qcwpAQCAtMjMsMjYgKzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFz
cyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlZpZXcKIHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsIHJvbGUs
IGxhYmVsKQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7
CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNv
bnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1lIHx8ICJuYXZpZ2F0aW9uLWJhciIpOwotICAgICAgICB0
aGlzLl9lbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCAibmF2aWdhdGlvbi1iYXIi
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICBpZiAocm9s
ZSkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7
CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CiAg
ICAgICAgIGlmIChsYWJlbCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRl
KCJhcmlhLWxhYmVsIiwgbGFiZWwpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJp
YnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwotICAg
ICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJp
bmQodGhpcyksIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3du
LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImZvY3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwg
ZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMuX2tleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyks
IGZhbHNlKTsKIAorICAgICAgICB0aGlzLl9taW5pbXVtV2lkdGggPSBOYU47CiAgICAgICAgIHRo
aXMuX25hdmlnYXRpb25JdGVtcyA9IFtdOwogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMp
IHsKQEAgLTc1LDcgKzc1LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBO
YXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLl9u
YXZpZ2F0aW9uSXRlbXMuc3BsaWNlKGluZGV4LCAwLCBuYXZpZ2F0aW9uSXRlbSk7CiAKICAgICAg
ICAgaWYgKCFwYXJlbnRFbGVtZW50KQotICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMu
X2VsZW1lbnQ7CisgICAgICAgICAgICBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50OwogCiAg
ICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpbmRleCArIDFd
OwogICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2li
bGluZy5lbGVtZW50IDogbnVsbDsKQEAgLTg0LDkgKzg0LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogCiAgICAgICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5hdmlnYXRpb25JdGVtLmVs
ZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fbWluaW11bVdpZHRo
TmVlZHNSZWNhbGN1bGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0g
TmFOOwogCi0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICB0aGlzLm5l
ZWRzTGF5b3V0KCk7CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtOwogICAgIH0KQEAg
LTEwNSw3MiArMTA1LDEzIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2
aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fbmF2
aWdhdGlvbkl0ZW1zLnJlbW92ZShuYXZpZ2F0aW9uSXRlbSk7CiAgICAgICAgIG5hdmlnYXRpb25J
dGVtLmVsZW1lbnQucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoTmVlZHNS
ZWNhbGN1bGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbWluaW11bVdpZHRoID0gTmFOOwog
Ci0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOworICAgICAgICB0aGlzLm5lZWRzTGF5
b3V0KCk7CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtOwogICAgIH0KIAotICAgIHVw
ZGF0ZUxheW91dFNvb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dElk
ZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fbmVlZHNMYXlv
dXQgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0KLSAgICAg
ICAgICAgIGlmICh0aGlzLl9uZWVkc0xheW91dCkKLSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0
ZUxheW91dCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRp
ZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfQot
Ci0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlv
dXRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl91
cGRhdGVMYXlvdXRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElk
ZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9uZWVkc0xh
eW91dCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21VcGRhdGVMYXlv
dXQgPT09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAgIHRoaXMuY3VzdG9tVXBkYXRlTGF5b3V0
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUg
dGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byB0ZXN0IGlmIHRoZSBpdGVtcyBjYW4gZml0IGF0
IGZ1bGwgd2lkdGguCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAg
ICAgLy8gVGVsbCBlYWNoIG5hdmlnYXRpb24gaXRlbSB0byB1cGRhdGUgdG8gZnVsbCB3aWR0aCBp
ZiBuZWVkZWQuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbmF2aWdhdGlvbkl0
ZW1zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zW2ldLnVw
ZGF0ZUxheW91dCh0cnVlKTsKLQotICAgICAgICB2YXIgdG90YWxJdGVtV2lkdGggPSAwOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgLy8gU2tpcCBmbGV4aWJsZSBzcGFjZSBpdGVtcyBzaW5jZSB0aGV5
IGNhbiB0YWtlIHVwIG5vIHNwYWNlIGF0IHRoZSBtaW5pbXVtIHdpZHRoLgotICAgICAgICAgICAg
aWYgKHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GbGV4
aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIHRvdGFsSXRlbVdpZHRoICs9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS5lbGVt
ZW50LnJlYWxPZmZzZXRXaWR0aDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBiYXJXaWR0aCA9
IHRoaXMuX2VsZW1lbnQucmVhbE9mZnNldFdpZHRoOwotCi0gICAgICAgIC8vIEFkZCB0aGUgY29s
bGFwc2VkIGNsYXNzIGJhY2sgaWYgdGhlIGl0ZW1zIGFyZSB3aWRlciB0aGFuIHRoZSBiYXIuCi0g
ICAgICAgIGlmICh0b3RhbEl0ZW1XaWR0aCA+IGJhcldpZHRoKQotICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNl
ZFN0eWxlQ2xhc3NOYW1lKTsKLQotICAgICAgICAvLyBHaXZlIGVhY2ggbmF2aWdhdGlvbiBpdGVt
IHRoZSBvcHBvcnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVyLgotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAg
IHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS51cGRhdGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBn
ZXQgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSB8fCBudWxsOwpAQCAtMjA2LDE4ICsxNDcsMTAgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zOwog
ICAgIH0KIAotICAgIGdldCBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0KLQogICAgIGdldCBtaW5pbXVtV2lkdGgoKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX21pbmltdW1XaWR0aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX21pbmltdW1XaWR0
aE5lZWRzUmVjYWxjdWxhdGlvbikgeworICAgICAgICBpZiAoaXNOYU4odGhpcy5fbWluaW11bVdp
ZHRoKSkKICAgICAgICAgICAgIHRoaXMuX21pbmltdW1XaWR0aCA9IHRoaXMuX2NhbGN1bGF0ZU1p
bmltdW1XaWR0aCgpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21pbmltdW1XaWR0aE5lZWRz
UmVjYWxjdWxhdGlvbjsKLSAgICAgICAgfQotCiAgICAgICAgIHJldHVybiB0aGlzLl9taW5pbXVt
V2lkdGg7CiAgICAgfQogCkBAIC0yMjcsNiArMTYwLDM1IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGxheW91dCgpCisgICAgeworICAg
ICAgICAvLyBSZW1vdmUgdGhlIGNvbGxhcHNlZCBzdHlsZSBjbGFzcyB0byB0ZXN0IGlmIHRoZSBp
dGVtcyBjYW4gZml0IGF0IGZ1bGwgd2lkdGguCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NO
YW1lKTsKKworICAgICAgICAvLyBUZWxsIGVhY2ggbmF2aWdhdGlvbiBpdGVtIHRvIHVwZGF0ZSB0
byBmdWxsIHdpZHRoIGlmIG5lZWRlZC4KKyAgICAgICAgZm9yIChsZXQgbmF2aWdhdGlvbkl0ZW0g
b2YgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zKQorICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW0udXBk
YXRlTGF5b3V0KHRydWUpOworCisgICAgICAgIGxldCB0b3RhbEl0ZW1XaWR0aCA9IDA7CisgICAg
ICAgIGZvciAobGV0IG5hdmlnYXRpb25JdGVtIG9mIHRoaXMuX25hdmlnYXRpb25JdGVtcykgewor
ICAgICAgICAgICAgLy8gU2tpcCBmbGV4aWJsZSBzcGFjZSBpdGVtcyBzaW5jZSB0aGV5IGNhbiB0
YWtlIHVwIG5vIHNwYWNlIGF0IHRoZSBtaW5pbXVtIHdpZHRoLgorICAgICAgICAgICAgaWYgKG5h
dmlnYXRpb25JdGVtIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0
aW9uSXRlbSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdG90YWxJ
dGVtV2lkdGggKz0gbmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5yZWFsT2Zmc2V0V2lkdGg7CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBiYXJXaWR0aCA9IHRoaXMuZWxlbWVudC5yZWFsT2Zmc2V0
V2lkdGg7CisKKyAgICAgICAgLy8gQWRkIHRoZSBjb2xsYXBzZWQgY2xhc3MgYmFjayBpZiB0aGUg
aXRlbXMgYXJlIHdpZGVyIHRoYW4gdGhlIGJhci4KKyAgICAgICAgaWYgKHRvdGFsSXRlbVdpZHRo
ID4gYmFyV2lkdGgpCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CisKKyAgICAg
ICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRpb24gaXRlbSB0aGUgb3Bwb3J0dW5pdHkgdG8gY29sbGFw
c2UgZnVydGhlci4KKyAgICAgICAgZm9yIChsZXQgbmF2aWdhdGlvbkl0ZW0gb2YgdGhpcy5fbmF2
aWdhdGlvbkl0ZW1zKQorICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW0udXBkYXRlTGF5b3V0KGZh
bHNlKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfZmluZE5hdmlnYXRpb25JdGVt
KG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRleCkKQEAgLTI1OSw3ICsyMjEsNyBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIC8vIFJlbW92ZSB0aGUgdGFiSW5kZXggc28gY2xp
Y2tpbmcgdGhlIG5hdmlnYXRpb24gYmFyIGRvZXMgbm90IGdpdmUgaXQgZm9jdXMuCiAgICAgICAg
IC8vIE9ubHkga2VlcCB0aGUgdGFiSW5kZXggaWYgYWxyZWFkeSBmb2N1c2VkIGZyb20ga2V5Ym9h
cmQgbmF2aWdhdGlvbi4gVGhpcyBtYXRjaGVzIFhjb2RlLgogICAgICAgICBpZiAoIXRoaXMuX2Zv
Y3VzZWQpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5k
ZXgiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4
Iik7CiAKICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3R5bGVDbGFzc05hbWUpOwogICAgICAgICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVu
dC5uYXZpZ2F0aW9uSXRlbSkKQEAgLTI5NywxNSArMjU5LDE1IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyID0gY2xhc3MgTmF2aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAKICAgICAgICAgdmFyIGl0ZW1F
bGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5z
cGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUpOwotICAgICAg
ICBpZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSB8fCAhdGhp
cy5fZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpIHsKKyAgICAgICAgaWYgKCFpdGVtRWxl
bWVudCB8fCAhaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMuZWxlbWVudC5jb250
YWlucyhpdGVtRWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgdGhh
dCBpcyBhdCB0aGUgWCBwb3NpdGlvbiBvZiB0aGUgbW91c2UsIGV2ZW4gd2hlbiB0aGUgbW91c2Ug
aXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAvLyB2ZXJ0aWNhbGx5IGluIHRoZSBuYXZpZ2F0aW9u
IGJhci4KLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2lu
dChldmVudC5wYWdlWCwgdGhpcy5fZWxlbWVudC50b3RhbE9mZnNldFRvcCArICh0aGlzLl9lbGVt
ZW50Lm9mZnNldEhlaWdodCAvIDIpKTsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgdGhpcy5lbGVtZW50LnRvdGFsT2Zmc2V0
VG9wICsgKHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKSk7CiAgICAgICAgICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpdGVtRWxl
bWVudCA9IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBp
ZiAoIWl0ZW1FbGVtZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5f
ZWxlbWVudC5jb250YWlucyhpdGVtRWxlbWVudCkpCisgICAgICAgICAgICBpZiAoIWl0ZW1FbGVt
ZW50IHx8ICFpdGVtRWxlbWVudC5uYXZpZ2F0aW9uSXRlbSB8fCAhdGhpcy5lbGVtZW50LmNvbnRh
aW5zKGl0ZW1FbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMzM2LDcgKzI5OCw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gY2xhc3MgTmF2
aWdhdGlvbkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgZGVsZXRlIHRo
aXMuX21vdXNlVXBFdmVudExpc3RlbmVyOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHRhYklu
ZGV4IHNvIHRoZSBuYXZpZ2F0aW9uIGJhciBjYW4gYmUgaW4gdGhlIGtleWJvYXJkIHRhYiBsb29w
LgotICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAgICAvLyBEaXNwYXRjaCB0aGUgc2VsZWN0ZWQgZXZl
bnQgaGVyZSBzaW5jZSB0aGUgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSBzZXR0ZXIgc3VycHJlc3Nl
cyBpdAogICAgICAgICAvLyB3aGlsZSB0aGUgbW91c2UgaXMgZG93biB0byBwcmV2ZW50IHNlbmRp
bmcgaXQgd2hpbGUgc2NydWJiaW5nIHRoZSBiYXIuCkBAIC0zOTMsMTEgKzM1NSwxMSBAQCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAKICAgICBfY2FsY3VsYXRlTWluaW11bVdpZHRoKCkKICAgICB7Ci0g
ICAgICAgIHZhciB3YXNDb2xsYXBzZWQgPSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgIGNvbnN0IHdhc0NvbGxhcHNlZCA9IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwog
CiAgICAgICAgIC8vIEFkZCB0aGUgY29sbGFwc2VkIHN0eWxlIGNsYXNzIHRvIGNhbGN1bGF0ZSB0
aGUgd2lkdGggb2YgdGhlIGl0ZW1zIHdoZW4gdGhleSBhcmUgY29sbGFwc2VkLgogICAgICAgICBp
ZiAoIXdhc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgdmFyIHRvdGFsSXRl
bVdpZHRoID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9u
SXRlbXMubGVuZ3RoOyArK2kpIHsKQEAgLTQwOSw3ICszNzEsNyBAQCBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb2xsYXBzZWQgc3R5bGUgY2xhc3MgaWYgd2Ug
d2VyZSBub3QgY29sbGFwc2VkIGJlZm9yZS4KICAgICAgICAgaWYgKCF3YXNDb2xsYXBzZWQpCi0g
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFw
c2VkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHJldHVybiB0b3RhbEl0ZW1XaWR0aDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCmluZGV4IGNiNzU1NDNjMWZhNTdkMDNiMDIwNTEyNTI4
MDIwMmU1YjNiZGM1ODguLjFkNzYxMTU0ZTNiNzBkNThiMjI5YTYzMWZjYzhiODNiZDAzYjAwMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCkBAIC04MCw3ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uSXRlbSA9IGNsYXNzIE5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIs
IGZsYWcpOwogCiAgICAgICAgIGlmICh0aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFyKQotICAgICAg
ICAgICAgdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXRTb29uKCk7CisgICAg
ICAgICAgICB0aGlzLl9wYXJlbnROYXZpZ2F0aW9uQmFyLm5lZWRzTGF5b3V0KCk7CiAgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMKaW5kZXggMmJi
NDAzNmJkMjFlYWQ1ZTM5ZjBjYjMxMTJmOGY2NTc4NWNlYjM5Yi4uYTAxODdlYTU3ZTBmZjc5NjNj
Mjg2YjJlZTI4N2JiOTcyZmMyOWJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3Lmpz
CkBAIC05Myw3ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gY2xh
c3MgTmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3RvCiAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNj
ZW5kaW5nOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuZXR3b3JrIik7
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKIAogICAgICAgICB0
aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNv
cmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCkBAIC0x
MjksMTUgKzEyOSw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gY2xhc3Mg
TmV0d29ya1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3RvCiAgICAgICAgIHRoaXMuX2Rh
dGFHcmlkLmNsb3NlZCgpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAg
ICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRh
dGVMYXlvdXQoKTsKLQotICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKLSAg
ICB9Ci0KICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1l
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRj
aGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKQEAgLTE4Nyw2ICsxNzgsMTEgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcgPSBjbGFzcyBOZXR3b3JrVGltZWxpbmVW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAgc3VwZXIudHJlZUVsZW1lbnRTZWxlY3Rl
ZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOwogICAgIH0KIAorICAgIGxheW91dCgpCisg
ICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKTsKKyAgICB9CisKICAg
ICAvLyBQcml2YXRlCiAKICAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxp
bmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3Zl
cnZpZXdUaW1lbGluZVZpZXcuanMKaW5kZXggZWJlMWFkNTZhY2Y1YTgwZjIzMTJiZmVmNGIzZWU5
YjYyZmM2NTc2MS4uOGM4YTNkNWI0Y2NmNGUzZjJjMzFkMGNjNWE0MjRhM2UxZmFmZmZiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZp
ZXdUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKQEAgLTQxLDEzICs0MSwxNCBAQCBXZWJJ
bnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBjbGFzcyBPdmVydmlld1RpbWVsaW5lVmll
dyBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXI7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIu
YWxsb3dzQ2xpcHBlZExhYmVscyA9IHRydWU7CisgICAgICAgIC8vIEZJWE1FOiBjaGFuZ2UgdG8g
YHRoaXMuYWRkU3Vidmlldyh0aGlzLl90aW1lbGluZVJ1bGVyKWAgb25jZSA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTUwNzAzPiBpcyBmaXhlZC4KICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fY3VycmVu
dFRpbWVNYXJrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hcmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKICAgICAgICAgdGhpcy5fdGlt
ZWxpbmVSdWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwogCiAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvdmVydmlldyIpOwotICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMu
YWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAgICAgdGhpcy5fbmV0d29ya1RpbWVs
aW5lID0gcmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LlR5cGUuTmV0d29yayk7CiAgICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0
d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAtODgsMzUgKzg5LDYgQEAgV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdUaW1lbGluZVZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLnJlbW92ZUV2ZW50TGlz
dGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAg
ICB7Ci0gICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHZhciBvbGRaZXJv
VGltZSA9IHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWU7Ci0gICAgICAgIHZhciBvbGRTdGFy
dFRpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGltZTsKLSAgICAgICAgdmFyIG9sZEVu
ZFRpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWU7Ci0gICAgICAgIHZhciBvbGRDdXJy
ZW50VGltZSA9IHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWU7Ci0KLSAgICAgICAgdGhpcy5f
dGltZWxpbmVSdWxlci56ZXJvVGltZSA9IHRoaXMuemVyb1RpbWU7Ci0gICAgICAgIHRoaXMuX3Rp
bWVsaW5lUnVsZXIuc3RhcnRUaW1lID0gdGhpcy5zdGFydFRpbWU7Ci0gICAgICAgIHRoaXMuX3Rp
bWVsaW5lUnVsZXIuZW5kVGltZSA9IHRoaXMuZW5kVGltZTsKLSAgICAgICAgdGhpcy5fY3VycmVu
dFRpbWVNYXJrZXIudGltZSA9IHRoaXMuY3VycmVudFRpbWU7Ci0KLSAgICAgICAgLy8gVGhlIFRp
bWVsaW5lRGF0YUdyaWROb2RlIGdyYXBocyBhcmUgcG9zaXRpb25lZCB3aXRoIHBlcmNlbnRhZ2Vz
LCBzbyB0aGV5IGF1dG8gcmVzaXplIHdpdGggdGhlIHZpZXcuCi0gICAgICAgIC8vIFdlIG9ubHkg
bmVlZCB0byByZWZyZXNoIHRoZSBncmFwaHMgd2hlbiB0aGUgYW55IG9mIHRoZSB0aW1lcyBjaGFu
Z2UuCi0gICAgICAgIGlmICh0aGlzLnplcm9UaW1lICE9PSBvbGRaZXJvVGltZSB8fCB0aGlzLnN0
YXJ0VGltZSAhPT0gb2xkU3RhcnRUaW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gb2xkRW5kVGltZSB8
fCB0aGlzLmN1cnJlbnRUaW1lICE9PSBvbGRDdXJyZW50VGltZSkgewotICAgICAgICAgICAgdmFy
IGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAg
d2hpbGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5yZWZy
ZXNoR3JhcGgoKTsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGUu
dHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIudXBkYXRlTGF5b3V0KCk7Ci0KLSAg
ICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMoKTsKLSAgICB9Ci0K
ICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKQEAgLTE4Nyw2ICsxNTks
MzQgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3ZlcnZpZXdU
aW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dP
cmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKHRyZWVFbGVtZW50LnNvdXJjZUNv
ZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgIH0KIAorICAgIGxheW91dCgpCisg
ICAgeworICAgICAgICBsZXQgb2xkWmVyb1RpbWUgPSB0aGlzLl90aW1lbGluZVJ1bGVyLnplcm9U
aW1lOworICAgICAgICBsZXQgb2xkU3RhcnRUaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci5zdGFy
dFRpbWU7CisgICAgICAgIGxldCBvbGRFbmRUaW1lID0gdGhpcy5fdGltZWxpbmVSdWxlci5lbmRU
aW1lOworICAgICAgICBsZXQgb2xkQ3VycmVudFRpbWUgPSB0aGlzLl9jdXJyZW50VGltZU1hcmtl
ci50aW1lOworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuemVyb1RpbWUgPSB0aGlzLnpl
cm9UaW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLnN0YXJ0VGltZSA9IHRoaXMuc3Rh
cnRUaW1lOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmVuZFRpbWUgPSB0aGlzLmVuZFRp
bWU7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyLnRpbWUgPSB0aGlzLmN1cnJlbnRU
aW1lOworCisgICAgICAgIC8vIFRoZSBUaW1lbGluZURhdGFHcmlkTm9kZSBncmFwaHMgYXJlIHBv
c2l0aW9uZWQgd2l0aCBwZXJjZW50YWdlcywgc28gdGhleSBhdXRvIHJlc2l6ZSB3aXRoIHRoZSB2
aWV3LgorICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gcmVmcmVzaCB0aGUgZ3JhcGhzIHdoZW4g
dGhlIGFueSBvZiB0aGUgdGltZXMgY2hhbmdlLgorICAgICAgICBpZiAodGhpcy56ZXJvVGltZSAh
PT0gb2xkWmVyb1RpbWUgfHwgdGhpcy5zdGFydFRpbWUgIT09IG9sZFN0YXJ0VGltZSB8fCB0aGlz
LmVuZFRpbWUgIT09IG9sZEVuZFRpbWUgfHwgdGhpcy5jdXJyZW50VGltZSAhPT0gb2xkQ3VycmVu
dFRpbWUpIHsKKyAgICAgICAgICAgIGxldCBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5j
aGlsZHJlblswXTsKKyAgICAgICAgICAgIHdoaWxlIChkYXRhR3JpZE5vZGUpIHsKKyAgICAgICAg
ICAgICAgICBkYXRhR3JpZE5vZGUucmVmcmVzaEdyYXBoKCk7CisgICAgICAgICAgICAgICAgZGF0
YUdyaWROb2RlID0gZGF0YUdyaWROb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgbnVsbCwgdHJ1
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogcmVtb3Zl
IG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MDcwMz4gaXMgZml4ZWQuCisgICAgICAgIHRo
aXMuX3RpbWVsaW5lUnVsZXIudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgdGhpcy5fcHJvY2Vz
c1BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMoKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5RGV0YWlscyhhLCBiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpz
CmluZGV4IGM0YWQ1MjAyNzg3ZjEzY2IyNDUxMDhjOGU2YjUxYzFlMzg0NmZjYzMuLjg1NmRkOWUz
NmQzMjQwMGJlMzFkM2Q4OTQ5YjRkN2VjMzc2MzE1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKQEAg
LTIzLDExICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3Mg
UXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIHsKICAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50KQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoZWxlbWVu
dCk7CiAKICAgICAgICAgdGhpcy5fdG9nZ2xlT3JGb2N1c0tleWJvYXJkU2hvcnRjdXQgPSBuZXcg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhpcy5fdG9nZ2xlT3JGb2N1cy5iaW5kKHRoaXMpKTsKIApA
QCAtMzgsMTIgKzM4LDExIEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlj
a0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX290aGVy
RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzID0gW107CiAgICAgICAgIHRoaXMuX2ZyYW1l
SWRlbnRpZmllclRvRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRNYXAgPSB7fTsKIAotICAg
ICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJxdWljay1jb25zb2xl
Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJxdWljay1jb25zb2xlIik7
CiAKICAgICAgICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQo
bnVsbCwgInRleHQvamF2YXNjcmlwdCIpOwogICAgICAgICB0aGlzLnByb21wdC5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInRleHQtcHJvbXB0Iik7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5wcm9tcHQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlz
LnByb21wdCk7CiAKICAgICAgICAgLy8gRklYTUU6IENvZGVNaXJyb3IgNCBoYXMgYSBkZWZhdWx0
ICJFc2MiIGtleSBoYW5kbGVyIHRoYXQgYWx3YXlzIHByZXZlbnRzIGRlZmF1bHQuCiAgICAgICAg
IC8vIE91ciBrZXlib2FyZCBzaG9ydGN1dCBhYm92ZSB3aWxsIHJlc3BlY3QgdGhlIGRlZmF1bHQg
cHJldmVudGVkIGFuZCBpZ25vcmUgdGhlIGV2ZW50CkBAIC01NSw3ICs1NCw3IEBAIFdlYkluc3Bl
Y3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2JqZWN0CiAgICAgICAgIHRoaXMucHJvbXB0LnNob3duKCk7CiAKICAgICAgICAgdGhpcy5f
bmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJh
cjsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFy
LmVsZW1lbnQpOworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fbmF2aWdhdGlvbkJhcik7
CiAKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9ySXRlbSA9IG5ldyBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtOwogICAgICAgICB0aGlzLl9l
eGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtLnNob3dTZWxlY3RvckFycm93cyA9IHRydWU7CkBA
IC03NCwxMSArNzMsNiBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tD
b25zb2xlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAg
ICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAg
ICB9Ci0KICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fbmF2aWdhdGlvbkJhcjsKQEAgLTg5LDEzICs4Myw2IEBAIFdlYkluc3BlY3Rvci5RdWlja0Nv
bnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
Ll9leGVjdXRpb25Db250ZXh0SWRlbnRpZmllcjsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQo
KQotICAgIHsKLSAgICAgICAgLy8gQSBoYXJkIG1heGltdW0gc2l6ZSBvZiAzMyUgb2YgdGhlIHdp
bmRvdy4KLSAgICAgICAgdmFyIG1heGltdW1BbGxvd2VkSGVpZ2h0ID0gTWF0aC5yb3VuZCh3aW5k
b3cuaW5uZXJIZWlnaHQgKiAwLjMzKTsKLSAgICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5zdHls
ZS5tYXhIZWlnaHQgPSBtYXhpbXVtQWxsb3dlZEhlaWdodCArICJweCI7Ci0gICAgfQotCiAgICAg
Y29uc29sZUxvZ1Zpc2liaWxpdHlDaGFuZ2VkKHZpc2libGUpCiAgICAgewogICAgICAgICBpZiAo
dmlzaWJsZSA9PT0gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3Iu
UXVpY2tDb25zb2xlLlNob3dpbmdMb2dDbGFzc05hbWUpKQpAQCAtMTA2LDYgKzkzLDE1IEBAIFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUuRXZlbnQuRGlkUmVzaXplKTsKICAgICB9CiAKKyAgICAv
LyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCisgICAgeworICAgICAgICAvLyBBIGhhcmQgbWF4
aW11bSBzaXplIG9mIDMzJSBvZiB0aGUgd2luZG93LgorICAgICAgICBsZXQgbWF4aW11bUFsbG93
ZWRIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOworICAgICAg
ICB0aGlzLnByb21wdC5lbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IG1heGltdW1BbGxvd2VkSGVp
Z2h0ICsgInB4IjsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfZXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnRzVG9EaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJh
bWVUaW1lbGluZVZpZXcuanMKaW5kZXggYzlmOTdlYjBiYjc2ZmMxYWE0OTQ2MzNhNmU1Mzg2ZDc2
ZDk3YWM3ZS4uNjE3YzU5ZDQ2NjE1OWZiNTRiYTRlM2Y0MWY2YjE4YjFlMTE0YzhlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5n
RnJhbWVUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMKQEAgLTc5LDcgKzc5LDcg
QEAgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3ID0gY2xhc3MgUmVuZGVy
aW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0ZW4KICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE9y
ZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAKICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbmRlcmluZy1mcmFtZSIpOwotICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAg
ICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAKICAgICAgICAgdGltZWxpbmUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQs
IHRoaXMuX3JlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKQEAgLTEz
MSwxNSArMTMxLDYgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3ID0g
Y2xhc3MgUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0ZW4KICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuY2xvc2VkKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAg
ICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0
ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpOwotICAg
IH0KLQogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICB2
YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwpAQCAtMjQ1LDYg
KzIzNiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcgPSBjbGFz
cyBSZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldyBleHRlbgogICAgICAgICByZXR1cm4gbnVsbDsK
ICAgICB9CiAKKyAgICBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRp
bmdSZWNvcmRzKCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3Byb2Nlc3NQZW5k
aW5nUmVjb3JkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKaW5kZXggNDhlNTA1MjY3
YWIxNDA4MDBkYTNhY2M5ZTM5ZjI0MDZkZjNmYWRjYi4uMTI2YTQ5ZGUyOGZjNzBjNmJlMDUwMmFk
YzEwMDIxYmM4ZGRmOWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcwpAQCAtNjgs
NyArNjgsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gY2xhc3MgU2NyaXB0
VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsK
IAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0Iik7Ci0gICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKIAogICAgICAgICB0aW1lbGluZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwg
dGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKQEAgLTEwNCwyOCArMTA0
LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldyA9IGNsYXNzIFNjcmlwdFRpbWVs
aW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY2xv
c2VkKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHN1cGVy
LnVwZGF0ZUxheW91dCgpOwotCi0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgp
OwotCi0gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZSAhPT0gdGhpcy5fb2xkU3RhcnRUaW1lIHx8
IHRoaXMuZW5kVGltZSAhPT0gdGhpcy5fb2xkRW5kVGltZSkgewotICAgICAgICAgICAgdmFyIGRh
dGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAgd2hp
bGUgKGRhdGFHcmlkTm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS51cGRhdGVS
YW5nZVRpbWVzKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpOwotICAgICAgICAgICAgICAg
IGlmIChkYXRhR3JpZE5vZGUucmV2ZWFsZWQpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFHcmlk
Tm9kZS5yZWZyZXNoSWZOZWVkZWQoKTsKLSAgICAgICAgICAgICAgICBkYXRhR3JpZE5vZGUgPSBk
YXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX29sZFN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1l
OwotICAgICAgICAgICAgdGhpcy5fb2xkRW5kVGltZSA9IHRoaXMuZW5kVGltZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpOwotICAgIH0KLQogICAg
IGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdy
aWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwpAQCAtMjE3LDYgKzE5NSwyNCBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gY2xhc3MgU2NyaXB0VGltZWxpbmVW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLgogICAgICAgICB9CiAgICAgfQogCisgICAgbGF5b3V0
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZSAhPT0gdGhpcy5fb2xkU3RhcnRU
aW1lIHx8IHRoaXMuZW5kVGltZSAhPT0gdGhpcy5fb2xkRW5kVGltZSkgeworICAgICAgICAgICAg
bGV0IGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdOworICAgICAgICAg
ICAgd2hpbGUgKGRhdGFHcmlkTm9kZSkgeworICAgICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS51
cGRhdGVSYW5nZVRpbWVzKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpOworICAgICAgICAg
ICAgICAgIGlmIChkYXRhR3JpZE5vZGUucmV2ZWFsZWQpCisgICAgICAgICAgICAgICAgICAgIGRh
dGFHcmlkTm9kZS5yZWZyZXNoSWZOZWVkZWQoKTsKKyAgICAgICAgICAgICAgICBkYXRhR3JpZE5v
ZGUgPSBkYXRhR3JpZE5vZGUudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuX29sZFN0YXJ0VGltZSA9IHRoaXMuc3Rh
cnRUaW1lOworICAgICAgICAgICAgdGhpcy5fb2xkRW5kVGltZSA9IHRoaXMuZW5kVGltZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpOworICAgIH0K
KwogICAgIC8vIFByaXZhdGUKIAogICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmlu
ZGV4IDZkN2Y0MzNjZjQ4MmVmZjRhOTMxNTY1OGMxMTllMmYwYjkyNDAyMzUuLmRjNWQ5MjM2ZmEw
ZTk5YTFjOGM3YTgxMDhhZTI1NmQ4OTVjOTRkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTIzLDIzICsyMywyMiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CitXZWJJ
bnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcK
IHsKICAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJCYXJJdGVtcykKICAgICB7Ci0gICAgICAg
IHN1cGVyKCk7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1l
bnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgidGFiLWJhciIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0
cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKIAogICAgICAgICB2YXIgdG9wQm9yZGVyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0b3BCb3JkZXJFbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInRvcC1ib3JkZXIiKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0b3BCb3JkZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRvcEJvcmRlckVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykp
OwotICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlz
Ll9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUNsaWNrLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hh
bmRsZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMg
PSBbXTsKIApAQCAtMTExLDcgKzExMCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBU
YWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHZhciBsYXN0SW5kZXgg
PSB0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSA6IHRoaXMu
X3RhYkJhckl0ZW1zLmxlbmd0aDsKICAgICAgICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1p
bihpbmRleCwgbGFzdEluZGV4KSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgeworICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5nIikpIHsKICAgICAgICAgICAgIHJlcXVlc3RBbmlt
YXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBkb05vdEFu
aW1hdGUgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMjUsMzQgKzEyNCwzNCBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tpbmRleCArIDFdOwogICAg
ICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5l
bGVtZW50IDogKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQgOiBu
dWxsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVs
ZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRC
ZWZvcmUodGFiQmFySXRlbS5lbGVtZW50LCBuZXh0U2libGluZ0VsZW1lbnQpOwogCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICF0aGlzLl9oYXNN
b3JlVGhhbk9uZU5vcm1hbFRhYigpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CiAK
ICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOwogICAgICAgICB0
YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOwogCiAgICAgICAgIGZ1bmN0aW9u
IGFuaW1hdGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAgdGhpcy5fYXBwbHlUYWJCYXJJ
dGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAKLSAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVu
ZCIsIHJlbW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIp
OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5
b3V0Iik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1h
dGluZyIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNl
cnRpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
c3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImluc2VydGluZy10YWIiKTsKIAogICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImJlaW5nLWluc2VydGVkIik7CiAKICAgICAgICAgICAgIHRoaXMuX2Ns
ZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlbW92ZVN0
eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFkb05vdEFuaW1hdGUpIHsKQEAgLTE2OCw3ICsxNjcsNyBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJlZm9yZVRhYlNpemVzQW5k
UG9zaXRpb25zLnNldCh0YWJCYXJJdGVtLCB7bGVmdDogMCwgd2lkdGg6IDB9KTsKIAotICAgICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwogICAg
ICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImJlaW5nLWluc2VydGVk
Iik7CiAKICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25z
KGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKQEAgLTE3Nyw3ICsxNzYsNyBAQCBXZWJJbnNw
ZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlz
KSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7
CisgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtQWRk
ZWQsIHt0YWJCYXJJdGVtfSk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCBXZWJJbnNwZWN0b3IuVGFi
QmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAg
ICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSBuZXh0VGFiQmFySXRlbTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYW5pbWF0aW5n
IikpIHsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1h
dGluZyIpKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVtb3ZlU3R5bGVz
LmJpbmQodGhpcykpOwogICAgICAgICAgICAgZG9Ob3RBbmltYXRlID0gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjE5LDcgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5y
ZW1vdmUoKTsKIAogICAgICAgICB2YXIgaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9o
YXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2luZ2xlLXRhYiIsICFoYXNNb3JlVGhh
bk9uZU5vcm1hbFRhYik7CiAKICAgICAgICAgY29uc3Qgc2hvdWxkT3BlbkRlZmF1bHRUYWIgPSAh
dGFiQmFySXRlbS5pc0RlZmF1bHRUYWIgJiYgIXRoaXMuaGFzTm9ybWFsVGFiKCk7CiAgICAgICAg
IGlmIChzaG91bGRPcGVuRGVmYXVsdFRhYikKQEAgLTIzMCw3ICsyMjksNyBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICAgICAgICAgIHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShi
ZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKKyAgICAgICAgICAgICAgICB0aGlzLm5l
ZWRzTGF5b3V0KCk7CiAKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5UYWJCYXIuRXZlbnQuVGFiQmFySXRlbVJlbW92ZWQsIHt0YWJCYXJJdGVt
fSk7CiAKQEAgLTI0NCw4ICsyNDMsOCBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1h
dGVUYWJzKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJhbmltYXRpbmciKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiY2xvc2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJj
bG9zaW5nLXRhYiIpOwogCiAgICAgICAgICAgICB2YXIgbGVmdCA9IDA7CiAgICAgICAgICAgICBm
b3IgKHZhciBjdXJyZW50VGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgewpAQCAtMjY2
LDcgKzI2NSw3IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAobGFzdE5vcm1hbFRhYkJhckl0ZW0g
IT09IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFs
VGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQobGFzdE5vcm1hbFRh
YkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgKyAxKSArICJweCI7CiAKLSAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJl
bW92ZVN0eWxlc0xpc3RlbmVyKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAg
ICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKQEAgLTI3NSwxNiArMjc0
LDE2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtICYm
IHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSAhPT0gbGFzdE5vcm1hbFRhYkJhckl0ZW0pCiAgICAg
ICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgg
PSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0
aCkgLSAxKSArICJweCI7CiAKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoImNsb3NpbmctdGFiIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiY2xvc2luZy10YWIiKTsKIAogICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQo
KTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1v
dmVTdHlsZXNMaXN0ZW5lcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRvTm90QW5pbWF0
ZSkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdGF0aWMtbGF5
b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxh
eW91dCIpOwogCiAgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VF
bnRlciA9IHRydWU7CiAKQEAgLTI5NCw3ICsyOTMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0g
Y2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAgICBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZVRhYnMuYmluZCh0aGlzKSk7CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRTb29uKCk7CisgICAgICAgICAgICB0
aGlzLm5lZWRzTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVudC5UYWJCYXJJdGVtUmVtb3ZlZCwge3RhYkJhckl0
ZW19KTsKIApAQCAtMzUwLDYxICszNDksNiBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3Mg
VGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlzLnNlbGVjdGVk
VGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW25ld0luZGV4XTsKICAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXRTb29uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRJ
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX25lZWRzTGF5
b3V0ID0gdHJ1ZTsKLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAg
ICAgICAgICBpZiAodGhpcy5fbmVlZHNMYXlvdXQpCi0gICAgICAgICAgICAgICAgdGhpcy51cGRh
dGVMYXlvdXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dElkZW50
aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlLmJpbmQodGhpcykpOwotICAgIH0K
LQotICAgIHVwZGF0ZUxheW91dCgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlTGF5
b3V0SWRlbnRpZmllcikgewotICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5f
dXBkYXRlTGF5b3V0SWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRJ
ZGVudGlmaWVyID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSBmYWxzZTsKLQotICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGUtdGl0bGVzIik7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFwc2VkIik7Ci0KLSAgICAgICAgdmFy
IGZpcnN0Tm9ybWFsVGFiSXRlbSA9IG51bGw7Ci0gICAgICAgIGZvciAodmFyIHRhYkl0ZW0gb2Yg
dGhpcy5fdGFiQmFySXRlbXMpIHsKLSAgICAgICAgICAgIGlmICh0YWJJdGVtLnBpbm5lZCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZpcnN0Tm9ybWFsVGFiSXRlbSA9
IHRhYkl0ZW07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
Zmlyc3ROb3JtYWxUYWJJdGVtKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChm
aXJzdE5vcm1hbFRhYkl0ZW0uZWxlbWVudC5vZmZzZXRXaWR0aCA+PSAxMjApCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBz
ZWQiKTsKLQotICAgICAgICBpZiAoZmlyc3ROb3JtYWxUYWJJdGVtLmVsZW1lbnQub2Zmc2V0V2lk
dGggPj0gNjApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJoaWRlLXRpdGxlcyIpOwotICAgIH0KLQogICAgIGdldCBzZWxlY3RlZFRh
YkJhckl0ZW0oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRl
bTsKQEAgLTQzNSwxNCArMzc5LDQxIEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJC
YXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJC
YXJJdGVtczsKICAgICB9CiAKLSAgICBnZXQgZWxlbWVudCgpCisgICAgaGFzTm9ybWFsVGFiKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OworICAgICAgICByZXR1cm4gdGhp
cy5fdGFiQmFySXRlbXMuc29tZSgodGFiKSA9PiAhdGFiLnBpbm5lZCk7CiAgICAgfQogCi0gICAg
aGFzTm9ybWFsVGFiKCkKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXMuc29tZSgodGFiKSA9PiAhdGFiLnBpbm5l
ZCk7CisgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMt
bGF5b3V0IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoImhpZGUtdGl0bGVzIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKTsKKworICAgICAgICBsZXQgZmlyc3ROb3JtYWxUYWJJ
dGVtID0gbnVsbDsKKyAgICAgICAgZm9yIChsZXQgdGFiSXRlbSBvZiB0aGlzLl90YWJCYXJJdGVt
cykgeworICAgICAgICAgICAgaWYgKHRhYkl0ZW0ucGlubmVkKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgZmlyc3ROb3JtYWxUYWJJdGVtID0gdGFiSXRlbTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaXJzdE5vcm1hbFRhYkl0
ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGZpcnN0Tm9ybWFsVGFiSXRl
bS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDEyMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIik7CisKKyAgICAgICAg
aWYgKGZpcnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDYwKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRl
LXRpdGxlcyIpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTQ4Myw3ICs0NTQsNyBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgIHsKICAgICAgICAgdmFyIHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5l
dyBNYXA7CiAKLSAgICAgICAgdmFyIGJhclJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgICAgICBjb25zdCBiYXJSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgICAgIGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhp
cy5fdGFiQmFySXRlbXMpIHsKICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSB0YWJCYXJJ
dGVtLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CkBAIC01MjIsNyArNDkzLDcgQEAg
V2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgICAgIGlmICghYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMpCiAgICAg
ICAgICAgICAgICAgYmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJC
YXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpOwogICAgICAgICAgICAgdGhpcy5f
Y2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsKIAogICAgICAgICAgICAgdmFyIGFm
dGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQ
b3NpdGlvbnMoKTsKQEAgLTUzMiwyNiArNTAzLDI2IEBAIFdlYkluc3BlY3Rvci5UYWJCYXIgPSBj
bGFzcyBUYWJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGFuaW1hdGVUYWJzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpOwotICAgICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRhYnMiKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXhwYW5kaW5nLXRh
YnMiKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKGFmdGVyVGFiU2l6ZXNBbmRQb3NpdGlvbnMpOwogCi0gICAgICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3Zl
U3R5bGVzTGlzdGVuZXIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVtb3ZlU3R5bGVzTGlzdGVuZXIpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiByZW1vdmVTdHlsZXMoKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgi
c3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgiYW5pbWF0aW5nIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOworICAgICAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRpbmctdGFicyIpOwogCiAg
ICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKTsK
IAogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKLSAgICAgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQi
LCByZW1vdmVTdHlsZXNMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZW1vdmVTdHlsZXNMaXN0
ZW5lcik7CiAKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9CkBAIC02
MzAsNyArNjAxLDcgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9IGV2
ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5UYWJC
YXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBpZiAoY2xvc2VCdXR0
b25FbGVtZW50IHx8IGNsaWNrZWRNaWRkbGVCdXR0b24pIHsKICAgICAgICAgICAgIC8vIERpc2Fs
bG93IGNsb3NpbmcgdGhlIGRlZmF1bHQgdGFiIGlmIGl0IGlzIHRoZSBvbmx5IHRhYi4KLSAgICAg
ICAgICAgIGlmICh0YWJCYXJJdGVtLmlzRGVmYXVsdFRhYiAmJiB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQorICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0u
aXNEZWZhdWx0VGFiICYmIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10
YWIiKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMucmVtb3Zl
VGFiQmFySXRlbSh0YWJCYXJJdGVtLCBmYWxzZSwgdHJ1ZSk7CkBAIC02NTEsMTAgKzYyMiwxMCBA
QCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKKyAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0aWMtbGF5b3V0IikpIHsKICAgICAgICAgICAgIHRoaXMu
X2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKHRoaXMuX3JlY29yZFRhYkJhckl0ZW1T
aXplc0FuZFBvc2l0aW9ucygpKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZCgic3RhdGljLWxheW91dCIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJkcmFnZ2luZy10YWIiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJzdGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5f
bW91c2VPZmZzZXQgPT09IHVuZGVmaW5lZCkKQEAgLTY5NSw3ICs2NjYsNyBAQCBXZWJJbnNwZWN0
b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAg
ICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0aGlzLl90YWJCYXJJdGVtc1tuZXdJbmRleCArIDFdOwog
ICAgICAgICB2YXIgbmV4dFNpYmxpbmdFbGVtZW50ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGlu
Zy5lbGVtZW50IDogKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl9uZXdUYWJJdGVtLmVsZW1lbnQg
OiBudWxsKTsKIAotICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxl
Y3RlZFRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKyAgICAgICAgdGhp
cy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudCwg
bmV4dFNpYmxpbmdFbGVtZW50KTsKIAogICAgICAgICAvLyBGSVhNRTogQW5pbWF0ZSB0aGUgdGFi
cyB0aGF0IG1vdmUgdG8gbWFrZSByb29tIGZvciB0aGUgc2VsZWN0ZWQgdGFiLiBUaGlzIHdhcyBj
YXVzaW5nIG1lIHRyb3VibGUgd2hlbiBJIHRyaWVkLgogCkBAIC03MTQsMTAgKzY4NSwxMCBAQCBX
ZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmctdGFi
Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZy10YWIi
KTsKIAogICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVy
KSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInN0YXRpYy1s
YXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0
aWMtbGF5b3V0Iik7CiAgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBv
c2l0aW9ucygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIGxlZnQgPSAwOwpA
QCAtNzQ1LDE0ICs3MTYsMTQgQEAgV2ViSW5zcGVjdG9yLlRhYkJhciA9IGNsYXNzIFRhYkJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIF9oYW5kbGVNb3VzZUxlYXZlKGV2ZW50
KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX21vdXNlSXNEb3duIHx8ICF0aGlzLl90YWJBbmlt
YXRlZENsb3NlZFNpbmNlTW91c2VFbnRlciB8fCAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29u
dGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cygiYW5pbWF0aW5nIikpCisgICAgICAgIGlmICh0aGlzLl9tb3VzZUlzRG93biB8fCAhdGhpcy5f
dGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuY29udGFpbnMoInN0YXRpYy1sYXlvdXQiKSB8fCB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJhbmltYXRpbmciKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBU
aGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdoZW4gdGhlIG1vdXNlIGlzIGluc2lkZSB0aGUgZWxl
bWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVkLCByZW1vdmVkIG9yIGdlbmVyYWxseSBjaGFuZ2Ug
aW5zaWRlLgogICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgcmVhbGx5IGRpZCBsZWF2ZSB0
aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUgYm91bmRzLgogICAgICAgICAvLyBGSVhNRTogSXMg
dGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVjdCBiZWhhdmlvcj8KLSAgICAgICAgdmFyIGJhclJl
Y3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICB2YXIg
bmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVt
ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogbnVsbDsKKyAgICAgICAgY29uc3QgYmFyUmVj
dCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgY29uc3Qg
bmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVt
ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogbnVsbDsKICAgICAgICAgaWYgKGV2ZW50LnBh
Z2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQucGFnZVkgPCBiYXJSZWN0LmJvdHRvbSAmJiBldmVu
dC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBldmVudC5wYWdlWCA8IChuZXdUYWJJdGVtUmVjdCA/
IG5ld1RhYkl0ZW1SZWN0LnJpZ2h0IDogYmFyUmVjdC5yaWdodCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTc2OCw3ICs3MzksNyBAQCBXZWJJbnNwZWN0b3IuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgX2hhbmRsZU5ld1RhYk1vdXNl
RW50ZXIoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2Vk
U2luY2VNb3VzZUVudGVyIHx8ICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3Rh
dGljLWxheW91dCIpIHx8IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRp
bmciKSkKKyAgICAgICAgaWYgKCF0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRl
ciB8fCAhdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGluZyIpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3Nl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UYWJCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGFiQnJvd3Nlci5qcwppbmRleCAyOGJhOTM5NTVhMzk4MTIzMWU2Njc2ZDZhMzgwNjhlMjFj
ZjJiZGRlLi42ZTA2MDJiODhlMzRhMzIzZDAyNjkxODJlMTc1NWNhNGY2YmM4ZTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJy
b3dzZXIuanMKQEAgLTIzLDE5ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3Nl
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK1dlYkluc3BlY3Rvci5UYWJCcm93c2VyID0g
Y2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiB7CiAgICAgY29uc3Ry
dWN0b3IoZWxlbWVudCwgdGFiQmFyLCBuYXZpZ2F0aW9uU2lkZWJhciwgZGV0YWlsc1NpZGViYXIp
CiAgICAgewotICAgICAgICBzdXBlcigpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXIs
ICJNdXN0IHByb3ZpZGUgYSBUYWJCYXIuIik7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVs
ZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLWJyb3dzZXIiKTsKKyAgICAgICAgc3VwZXIoZWxlbWVu
dCk7CiAKLSAgICAgICAgdGhpcy5fdGFiQmFyID0gdGFiQmFyIHx8IG5ldyBXZWJJbnNwZWN0b3Iu
VGFiQmFyOwotICAgICAgICBpZiAoIXRhYkJhcikKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fdGFiQmFyLmVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGFiLWJyb3dzZXIiKTsKIAorICAgICAgICB0aGlzLl90YWJCYXIgPSB0
YWJCYXI7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyID0gbmF2aWdhdGlvblNpZGVi
YXIgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXIgPSBkZXRhaWxzU2lkZWJh
ciB8fCBudWxsOwogCkBAIC00OCw3ICs0Niw3IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0g
Y2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5hZGRTdWJ2
aWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyKTsKIAogICAgICAgICB2YXIgc2hvd05leHRU
YWIgPSB0aGlzLl9zaG93TmV4dFRhYi5iaW5kKHRoaXMpOwogICAgICAgICB2YXIgc2hvd1ByZXZp
b3VzVGFiID0gdGhpcy5fc2hvd1ByZXZpb3VzVGFiLmJpbmQodGhpcyk7CkBAIC03MywxMSArNzEs
NiBAQCBXZWJJbnNwZWN0b3IuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBlbGVtZW50KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0KLQogICAgIGdldCB0
YWJCYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhcjsKQEAgLTk4LDEyICs5
MSw2IEBAIFdlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29u
dGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQoKQot
ICAgIHsKLSAgICAgICAgdGhpcy5fdGFiQmFyLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB0aGlz
Ll9jb250ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQoKTsKLSAgICB9Ci0KICAgICBiZXN0
VGFiQ29udGVudFZpZXdGb3JDbGFzcyhjb25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRh
YkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3NbMF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVWaWV3LmpzCmluZGV4IDdhMDBkY2FjYmE5MWMzMTM2YTRiYTgxYmJlMDExNDE5N2JiMzU1NjMu
LmY1NTY2MjIwYTgyZThkZDljYjgyNDE4MjExN2FlZTMyODhkMmViYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZp
ZXcuanMKQEAgLTE3MiwyNiArMTcyLDE4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcgPSBj
bGFzcyBUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0KCkKKyAgICBmaWx0ZXJV
cGRhdGVkKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hl
ZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxl
ZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5T
ZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0SWZOZWVkZWQoKQorICAgIG5lZWRzTGF5b3V0KCkKICAgICB7Ci0gICAgICAgIGlmICghdGhp
cy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgLy8gRklYTUU6IG5l
ZWRzTGF5b3V0IGNhbiBiZSByZW1vdmVkIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MDc0
MT4gaXMgZml4ZWQuCisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0KIAotICAgIGZpbHRlclVw
ZGF0ZWQoKQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlKTsKKyAgICAgICAgc3VwZXIubmVlZHNMYXlvdXQoKTsKICAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKQEAgLTI0NywxNSArMjM5LDQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyA9IGNs
YXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogCiAgICAg
ICAgIHRoaXMuc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOwogICAg
IH0KLQotICAgIG5lZWRzTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy52aXNpYmxl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlv
dXRVcGRhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
dGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCmluZGV4IDIx
M2UzMjAxNzEyOGY5YWYyNDI2NGVhOTBjM2Y2ZWZhY2YwZWZmNTIuLjRhNWY3NmYxNDM4YzM3Y2Vl
NWU1MzA3NGQxZTE1NjQ5YjVmNTVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpAQCAtMzQsMzAgKzM0LDMwIEBAIFdl
Ykluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyCiAKICAgICAgICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9u
RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5Db250cm9sU2VjdGlvblN0
eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nv
bnRyb2xTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2xlZnRTZWN0aW9u
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9s
ZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNl
Y3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkxlZnRJdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2NlbnRlckxl
ZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAg
ICB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5U
b29sYmFyLkNlbnRlckxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlckxlZnRTZWN0aW9uRWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVs
ZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50
LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05h
bWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJJdGVtU2VjdGlvblN0eWxlQ2xh
c3NOYW1lOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclNl
Y3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nl
bnRlclNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25F
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2Nl
bnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIu
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLkNl
bnRlclJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jZW50ZXJSaWdodFNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQp
OwogCiAgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAi
ICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwot
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1l
bnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWN0aW9u
RWxlbWVudCk7CiAKICAgICAgICAgaWYgKCFkb250QWxsb3dNb2RlQ2hhbmdlcykKLSAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9o
YW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNv
bnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIH0KIAogICAgIC8vIFB1Ymxp
YwpAQCAtNzMsMTUgKzczLDE1IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJh
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlKQotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2Rpc3BsYXlNb2RlKTsKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2Rpc3BsYXlNb2RlKTsKIAogICAgICAg
ICAvLyBSZXZlcnQgdGhlIGZvcmNlZCBpY29uLW9ubHkgbW9kZSBpZiBpdCB3YXMgYXBwbGllZC4K
ICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNb2RlID09PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5E
aXNwbGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKQotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLklj
b25Pbmx5KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25Pbmx5KTsKIAogICAgICAgICB0aGlzLl9k
aXNwbGF5TW9kZSA9IG1vZGU7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KG1vZGUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChtb2RlKTsKIAogICAg
ICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwogCkBAIC05OSwxOCArOTksNTYgQEAgV2ViSW5zcGVj
dG9yLlRvb2xiYXIgPSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2l6ZU1vZGUp
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc2l6ZU1v
ZGUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc2l6
ZU1vZGUpOwogCiAgICAgICAgIHRoaXMuX3NpemVNb2RlID0gbW9kZTsKIAotICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQobW9kZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKG1vZGUpOwogCiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRXZl
bnQuU2l6ZU1vZGVEaWRDaGFuZ2UpOwogICAgIH0KIAotICAgIGN1c3RvbVVwZGF0ZUxheW91dCgp
CisgICAgYWRkVG9vbGJhckl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQorICAg
IHsKKyAgICAgICAgdmFyIHNlY3Rpb25FbGVtZW50OworCisgICAgICAgIHN3aXRjaCAoc2VjdGlv
bklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9u
LkNvbnRyb2w6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NvbnRyb2xTZWN0
aW9uRWxlbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLlRvb2xiYXIuU2VjdGlvbi5MZWZ0OgorICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0
aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyTGVmdDoKKyAgICAgICAgICAg
IHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyTGVmdFNlY3Rpb25FbGVtZW50OworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVG9vbGJhci5TZWN0aW9uLkNlbnRlcjoKKyAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0g
dGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyUmlnaHQ6CisgICAgICAg
ICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX2NlbnRlclJpZ2h0U2VjdGlvbkVsZW1lbnQ7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Ub29sYmFyLlNl
Y3Rpb24uUmlnaHQ6CisgICAgICAgICAgICBzZWN0aW9uRWxlbWVudCA9IHRoaXMuX3JpZ2h0U2Vj
dGlvbkVsZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHNlY3Rpb25FbGVtZW50KTsKKworICAgICAgICB0aGlzLmFkZE5hdmlnYXRp
b25JdGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uRWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBsYXlvdXQoKQogICAgIHsKICAgICAgICAgLy8gQmFpbCBlYXJseSBpZiBv
dXIgc2VjdGlvbnMgYXJlIG5vdCBjcmVhdGVkIHlldC4gVGhpcyBtZWFucyB3ZSBhcmUgYmVpbmcg
Y2FsbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIGlmICghdGhpcy5fbGVmdFNlY3Rp
b25FbGVtZW50IHx8ICF0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5fcmlnaHRT
ZWN0aW9uRWxlbWVudCkKQEAgLTExOCwxNyArMTU2LDE3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFy
ID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiAKICAg
ICAgICAgLy8gRm9yY2UgY29sbGFwc2VkIHN0eWxlIGZvciBKYXZhU2NyaXB0IGRlYnVnZ2FibGVz
LgogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2FibGVUeXBlID09PSBXZWJJbnNwZWN0
b3IuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkgewotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxl
Q2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgY29sbGFwc2Vk
IHN0eWxlIGNsYXNzIHRvIHRlc3QgaWYgdGhlIGl0ZW1zIGNhbiBmaXQgYXQgZnVsbCB3aWR0aC4K
LSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5
bGVDbGFzc05hbWUpOwogCiAgICAgICAgIC8vIFJldmVydCB0aGUgZm9yY2VkIGljb24tb25seSBt
b2RlIGlmIGl0IHdhcyBhcHBsaWVkLgogICAgICAgICBpZiAodGhpcy5fZGlzcGxheU1vZGUgPT09
IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbEhvcml6b250YWwp
IHsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFu
ZExhYmVsSG9yaXpvbnRhbCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZShXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNw
bGF5TW9kZS5JY29uQW5kTGFiZWxIb3Jpem9udGFsKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1
bmN0aW9uIGlzT3ZlcmZsb3dpbmdUb29sYmFyKCkKQEAgLTE0Nyw1MCArMTg1LDE0IEBAIFdlYklu
c3BlY3Rvci5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyCiAgICAgICAgIC8vIE9ubHkgdGhlIGhvcml6b250YWwgZGlzcGxheSBtb2RlIHN1
cHBvcnRzIGNvbGxhcHNpbmcgbGFiZWxzLgogICAgICAgICAvLyBJZiBhbnkgc2VjdGlvbnMgYXJl
IG92ZXJmbG93aW5nIHRoZSB0b29sYmFyIHRoZW4gZm9yY2UgdGhlIGRpc3BsYXkgbW9kZSB0byBi
ZSBpY29uIG9ubHkuCiAgICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TW9kZSA9PT0gV2ViSW5zcGVj
dG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCAmJiBpc092ZXJm
bG93aW5nVG9vbGJhci5jYWxsKHRoaXMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExh
YmVsSG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbk9ubHkpOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxh
eU1vZGUuSWNvbkFuZExhYmVsSG9yaXpvbnRhbCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uT25seSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWlzT3ZlcmZsb3dpbmdUb29sYmFyLmNhbGwodGhp
cykpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1l
KTsKLSAgICB9Ci0KLSAgICBhZGRUb29sYmFySXRlbSh0b29sYmFySXRlbSwgc2VjdGlvbklkZW50
aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgc2VjdGlvbkVsZW1lbnQ7Ci0KLSAgICAgICAgc3dp
dGNoIChzZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Ub29s
YmFyLlNlY3Rpb24uQ29udHJvbDoKLSAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5f
Y29udHJvbFNlY3Rpb25FbGVtZW50OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uLkxlZnQ6Ci0gICAgICAgICAgICBzZWN0aW9u
RWxlbWVudCA9IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJMZWZ0Ogot
ICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJMZWZ0U2VjdGlvbkVsZW1l
bnQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNlY3Rpb24uQ2VudGVyOgotICAgICAgICAgICAgc2VjdGlv
bkVsZW1lbnQgPSB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbi5DZW50ZXJSaWdo
dDoKLSAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY2VudGVyUmlnaHRTZWN0aW9u
RWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRvb2xiYXIuU2VjdGlvbi5SaWdodDoKLSAgICAgICAgICAgIHNlY3Rpb25FbGVtZW50ID0gdGhp
cy5fcmlnaHRTZWN0aW9uRWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K
LSAgICAgICAgY29uc29sZS5hc3NlcnQoc2VjdGlvbkVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMu
YWRkTmF2aWdhdGlvbkl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25FbGVtZW50KTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29s
bGFwc2VkU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg3ZmY5M2VmMTJkNDY5YzFhZDljMmIyNDEwNDA5OWVkOWYxZjNiNjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3Lmpz
CkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFz
cyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVs
ZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQg
PSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlz
Ll9lbGVtZW50Ll9fdmlldyA9IHRoaXM7CisgICAgICAgIHRoaXMuX3N1YnZpZXdzID0gW107Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICBnZXQgc3Vidmlld3MoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnZpZXdzOworICAgIH0KKworICAgIGFkZFN1YnZp
ZXcodmlldykKKyAgICB7CisgICAgICAgIHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZSh2aWV3LCBu
dWxsKTsKKyAgICB9CisKKyAgICBpbnNlcnRTdWJ2aWV3QmVmb3JlKHZpZXcsIHJlZmVyZW5jZVZp
ZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh2aWV3IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlZpZXcpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcmVmZXJlbmNlVmlldyB8fCBy
ZWZlcmVuY2VWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlZpZXcpOworCisgICAgICAgIGlm
ICh0aGlzLl9zdWJ2aWV3cy5pbmNsdWRlcyh2aWV3KSkgeworICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoZmFsc2UsICJDYW5ub3QgYWRkIHZpZXcgdGhhdCBpcyBhbHJlYWR5IGEgc3Vidmlldy4i
LCB2aWV3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0
IGJlZm9yZUluZGV4ID0gcmVmZXJlbmNlVmlldyA/IHRoaXMuX3N1YnZpZXdzLmluZGV4T2YocmVm
ZXJlbmNlVmlldykgOiB0aGlzLl9zdWJ2aWV3cy5sZW5ndGg7CisgICAgICAgIGlmIChiZWZvcmVJ
bmRleCA9PT0gLTEpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiQ2Fubm90
IGluc2VydCB2aWV3LiBJbnZhbGlkIHJlZmVyZW5jZSB2aWV3LiIsIHJlZmVyZW5jZVZpZXcpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc3Vidmlld3Mu
aW5zZXJ0QXRJbmRleCh2aWV3LCBiZWZvcmVJbmRleCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQu
aW5zZXJ0QmVmb3JlKHZpZXcuZWxlbWVudCwgcmVmZXJlbmNlVmlldyA/IHJlZmVyZW5jZVZpZXcu
ZWxlbWVudCA6IG51bGwpOworICAgIH0KKworICAgIHJlbW92ZVN1YnZpZXcodmlldykKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmll
dyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcuZWxlbWVudC5wYXJlbnROb2RlID09PSB0
aGlzLl9lbGVtZW50LCAiU3VidmlldyBET00gZWxlbWVudCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhl
IHBhcmVudCB2aWV3IGVsZW1lbnQuIik7CisKKyAgICAgICAgaWYgKCF0aGlzLl9zdWJ2aWV3cy5p
bmNsdWRlcyh2aWV3KSkgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDYW5u
b3QgcmVtb3ZlIHZpZXcgd2hpY2ggaXNuJ3QgYSBzdWJ2aWV3LiIsIHZpZXcpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc3Vidmlld3MucmVtb3ZlKHZp
ZXcsIHRydWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUNoaWxkKHZpZXcuZWxlbWVu
dCk7CisgICAgfQorCisgICAgcmVwbGFjZVN1YnZpZXcob2xkVmlldywgbmV3VmlldykKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9sZFZpZXcgIT09IG5ld1ZpZXcsICJDYW5ub3QgcmVw
bGFjZSBzdWJ2aWV3IHdpdGggaXRzZWxmLiIpOworCisgICAgICAgIHRoaXMuaW5zZXJ0U3Vidmll
d0JlZm9yZShuZXdWaWV3LCBvbGRWaWV3KTsKKyAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KG9s
ZFZpZXcpOworICAgIH0KKworICAgIHVwZGF0ZUxheW91dCgpCisgICAgeworICAgICAgICB0aGlz
Ll9sYXlvdXRTdWJ0cmVlKCk7CisgICAgfQorCisgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Cisg
ICAgfQorCisgICAgbmVlZHNMYXlvdXQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVk
dWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRp
b25GcmFtZSgoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0U3VidHJlZSgp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGxheW91dCgp
CisgICAgeworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgIC8v
IE5vdCByZXNwb25zaWJsZSBmb3IgcmVjdXJzaW5nIHRvIGNoaWxkIHZpZXdzLgorICAgICAgICAv
LyBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseTsgdXNlIHVwZGF0ZUxheW91dCgpIGluc3Rl
YWQuCisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2xheW91dFN1YnRyZWUoKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVw
ZGF0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRl
SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMubGF5b3V0
KCk7CisKKyAgICAgICAgZm9yIChsZXQgdmlldyBvZiB0aGlzLl9zdWJ2aWV3cykKKyAgICAgICAg
ICAgIHZpZXcuX2xheW91dFN1YnRyZWUoKTsKKyAgICB9Cit9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>