<?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>231181</bug_id>
          
          <creation_ts>2021-10-04 11:23:15 -0700</creation_ts>
          <short_desc>Web Inspector: add TabBar context menu support for WI.WebInspectorExtensionTabContentView</short_desc>
          <delta_ts>2021-10-11 12:17:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800138</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-04 11:23:15 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800140</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-04 11:23:43 -0700</bug_when>
    <thetext>&lt;rdar://74698241&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800696</commentid>
    <comment_count>2</comment_count>
      <attachid>440244</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-05 12:12:49 -0700</bug_when>
    <thetext>Created attachment 440244
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800699</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-05 12:16:37 -0700</bug_when>
    <thetext>This patch depends on the fix for 230758 (extension iframe should not reload on hide).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800733</commentid>
    <comment_count>4</comment_count>
      <attachid>440244</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-10-05 13:41:00 -0700</bug_when>
    <thetext>Comment on attachment 440244
Patch v1.0

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

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:679
&gt; +    // Returning a null content view will effectively prevent automatic restoration of this tab type.
&gt; +    // Inspector Extension tabs must be created via WebInspectorExtensionController.createTabForExtension().
&gt; +    if (tabClass === WI.WebInspectorExtensionTabContentView)
&gt; +        return null;

Can we assert this?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:70
&gt; +            WI.tabBrowser.closeTabForContentView(tabContentView, {suppressAnimations});

NIT: This can be {supressAnimations: true} instead of a const to keep the value at the call site here.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:90
&gt; +        WI.tabBrowser.addTabForContentView(tabContentView, {suppressAnimations});

Ditto :70

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:209
&gt; +        let didAddSeparator = false;
&gt; +        for (let tabContentView of this._extensionTabContentViewForExtensionTabIDMap.values()) {
&gt; +            let shouldIncludeTab = tabContentView.isHidden || !tabContentView.tabBarItem.parentTabBar;
&gt; +            if (!shouldIncludeTab)
&gt; +                continue;
&gt; +
&gt; +            if (!didAddSeparator) {
&gt; +                didAddSeparator = true;
&gt; +                contextMenu.appendSeparator();
&gt; +            }

This could also be reworked like I suggested below on :220-225, although you&apos;d have to filter the values, which would make this (worst case) O(2n).

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:213
&gt; +                this.showExtensionTab(tabContentView.extensionTabID, {suppressAnimations});

Ditto :70
Also, why suppress these animations, but not the animations for `addContextMenuItemsForAllExtensionTabs`?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:225
&gt; +        let didAddSeparator = false;
&gt; +        for (let tabContentView of this._extensionTabContentViewForExtensionTabIDMap.values()) {
&gt; +            if (!didAddSeparator) {
&gt; +                didAddSeparator = true;
&gt; +                contextMenu.appendSeparator();
&gt; +            }

Might be easier to follow if we just early return if there are no tab content views to list, thus eliminating the need to keep track of if we added a separator yet. 
```
let tabContentViews = this._extensionTabContentViewForExtensionTabIDMap.values();
if (!tabContentViews.length)
    return;

contextMenu.appendSeperator()

for(let tabContentView of tabContentViews( {
...

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:233
&gt; +                    this.showExtensionTab(tabContentView.extensionTabID);
&gt; +                else
&gt; +                    this.hideExtensionTab(tabContentView.extensionTabID);

See :213

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:354
&gt; +        // Return true if the ContentView is closed, or if shouldNotRemoveFromDOMWhenHidden() is true and the ContentView has been hidden.

Most of this comment is redundant with the code, and the detail of `shouldNotRemoveFromDOMWhenHidden` seems like a loose contract at this point, and not necessarily a guarantee going forward.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:355
&gt; +        return this._isClosed || this._isHidden;

The changelog says `Add a flag so that clients can determine when the content view is hidden but not closed.`, but this checks if the content view is hidden or closed. Call sites to isHidden should probably also just check `isClosed` as needed, instead of overloading the getter for this property.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:361
&gt; +        this.element.classList.toggle(&quot;hidden-simulating-dom-detached&quot;, this._isHidden);

I know I suggested this CSS class name a few days ago, but I&apos;m less thrilled with it now that it isn&apos;t so directly tied to the `shouldNotRemoveFromDOMWhenHidden` property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800740</commentid>
    <comment_count>5</comment_count>
      <attachid>440244</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-05 13:55:24 -0700</bug_when>
    <thetext>Comment on attachment 440244
Patch v1.0

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

&gt; Source/WebInspectorUI/ChangeLog:22
&gt; +        List WebInspectorExtensionTabContentView as a known tab class. But do not allow
&gt; +        this tab class to be instantiated directly. Extension tabs are intended to be
&gt; +        created using WebInspectorExtensionController.createTabForExtension().

Do we save whether the user has removed the tab or not anywhere?  As a user I wouldn&apos;t want an extension tab that I&apos;d removed in a previous Web Inspector session to suddenly show up again the next time (and every time after that) I inspect something.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:192
&gt; +        tabContentView.hidden = true;
&gt; +        WI.tabBrowser.closeTabForContentView(tabContentView, options);

This confuses me a bit.  If the developer has removed an extension tab from the tab bar, why are we keeping the tab alive?  I&apos;d think that removing the tab from the tab bar would throw it away entirely such that adding it back to the tab bar would basically recreate it from scratch?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:207
&gt; +            if (!didAddSeparator) {
&gt; +                didAddSeparator = true;

`WI.ContextMenu` will ignore leading or sequential separators so you shouldn&apos;t need to worry about this in those cases.  Is there some other reason why you are doing this?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:223
&gt; +            if (!didAddSeparator) {
&gt; +                didAddSeparator = true;

ditto (:206)

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:352
&gt; +    get isHidden()

Style: this should just be `get hidden` to match the variable name of `set hidden`

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:354
&gt;&gt; +        // Return true if the ContentView is closed, or if shouldNotRemoveFromDOMWhenHidden() is true and the ContentView has been hidden.
&gt; 
&gt; Most of this comment is redundant with the code, and the detail of `shouldNotRemoveFromDOMWhenHidden` seems like a loose contract at this point, and not necessarily a guarantee going forward.

FWIW the builtin DOM `hidden` also doesn&apos;t really have anything to do with whether something is attached to the DOM

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:429
&gt; +            return;

Can we flip this and have this be an early-return instead?
```
    if (contentView.constructor.shouldNotRemoveFromDOMWhenHidden() &amp;&amp; contentView.hidden)
        return;
```

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:92
&gt; +    static isTabAllowed()

Style: this (and `shouldSaveTab`) should be moved to a `// Static` section above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800755</commentid>
    <comment_count>6</comment_count>
      <attachid>440244</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-10-05 14:15:13 -0700</bug_when>
    <thetext>Comment on attachment 440244
Patch v1.0

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:202
&gt; +            let shouldIncludeTab = tabContentView.isHidden || !tabContentView.tabBarItem.parentTabBar;

`isHidden` doesn&apos;t seem right here - If I understand correctly, `isHidden` is true when the extension is not the active tab, but here we should just be listing tabs that aren&apos;t in the tab bar at all. I think `isClosed` would be more correct?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:227
&gt; +            let checked = !tabContentView.isHidden || !!tabContentView.tabBarItem.parentTabBar;

Ditto :202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801692</commentid>
    <comment_count>7</comment_count>
      <attachid>440517</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-07 11:47:36 -0700</bug_when>
    <thetext>Created attachment 440517
Patch v1.0.1 (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801812</commentid>
    <comment_count>8</comment_count>
      <attachid>440542</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-07 15:09:37 -0700</bug_when>
    <thetext>Created attachment 440542
Patch v1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801852</commentid>
    <comment_count>9</comment_count>
      <attachid>440542</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-10-07 16:30:36 -0700</bug_when>
    <thetext>Comment on attachment 440542
Patch v1.1

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

LGTM, provisional r+

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:220
&gt; +            let disabled = false;

NIT: `const`

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.css:2
&gt; + * Copyright (C) 2013â2021 Apple Inc. All rights reserved.

Encoding issue?

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:2
&gt; + * Copyright (C) 2013â2021 Apple Inc. All rights reserved.

Ditto ContentView.css:2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801854</commentid>
    <comment_count>10</comment_count>
      <attachid>440244</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-07 16:32:17 -0700</bug_when>
    <thetext>Comment on attachment 440244
Patch v1.0

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:22
&gt;&gt; +        created using WebInspectorExtensionController.createTabForExtension().
&gt; 
&gt; Do we save whether the user has removed the tab or not anywhere?  As a user I wouldn&apos;t want an extension tab that I&apos;d removed in a previous Web Inspector session to suddenly show up again the next time (and every time after that) I inspect something.

No, the fact that they were hidden is not saved. I think it would be even more confusing to continue hiding extension tabs if inspector has been closed and reopened. Let&apos;s live on this and see.

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:679
&gt;&gt; +        return null;
&gt; 
&gt; Can we assert this?

Yes

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:192
&gt;&gt; +        WI.tabBrowser.closeTabForContentView(tabContentView, options);
&gt; 
&gt; This confuses me a bit.  If the developer has removed an extension tab from the tab bar, why are we keeping the tab alive?  I&apos;d think that removing the tab from the tab bar would throw it away entirely such that adding it back to the tab bar would basically recreate it from scratch?

Aside from reusing the arguments and praying.. we don&apos;t have a way to recreate the extension tab. Moreover the web extension&apos;s script contexts (background page, devtools background page) would not have a reference to the recreated extension tab, and thus can&apos;t communicate with it. It would just look broken to a user.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:202
&gt;&gt; +            let shouldIncludeTab = tabContentView.isHidden || !tabContentView.tabBarItem.parentTabBar;
&gt; 
&gt; `isHidden` doesn&apos;t seem right here - If I understand correctly, `isHidden` is true when the extension is not the active tab, but here we should just be listing tabs that aren&apos;t in the tab bar at all. I think `isClosed` would be more correct?

I renamed this to isVisible and now these conditions read much more clearly.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:352
&gt;&gt; +    get isHidden()
&gt; 
&gt; Style: this should just be `get hidden` to match the variable name of `set hidden`

I renamed it to isVisible and inverted the logic at all use sites to preserve behavior. This naming matches isClosed just above–I&apos;d prefer to extend that naming scheme for getters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801862</commentid>
    <comment_count>11</comment_count>
      <attachid>440542</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-07 16:38:32 -0700</bug_when>
    <thetext>Comment on attachment 440542
Patch v1.1

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:220
&gt;&gt; +            let disabled = false;
&gt; 
&gt; NIT: `const`

it actually should just be removed as it&apos;s not needed

`appendCheckboxItem` assumes `false` for `disabled` :)

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:354
&gt; +        return !this._isClosed &amp;&amp; this._isVisible;

It still feels kinda weird to consult `_isClosed` :/

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:357
&gt; +    set visible(value)

Style: this should either be `set isVisible` or the getter should be changed to `get visible`

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:360
&gt; +        this.element.classList.toggle(&quot;content-view-not-visible&quot;, !this._isVisible);

NIT: I&apos;d drop the &quot;content-view&quot; as that&apos;s already evident since this object always has a `.content-view` class on it anyways

&gt; Source/WebInspectorUI/UserInterface/Views/ContentViewContainer.js:428
&gt; +        this.removeSubview(contentView);

I think this may cause assertions depending on how `_disassociateFromContentView` is called (e.g. `replaceContentView`, `closeContentView`, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802328</commentid>
    <comment_count>12</comment_count>
      <attachid>440691</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-08 17:35:29 -0700</bug_when>
    <thetext>Created attachment 440691
Patch v1.2.1 (for landing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802348</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-08 18:41:04 -0700</bug_when>
    <thetext>Committed r283859 (242737@main): &lt;https://commits.webkit.org/242737@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440691.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802733</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-10-11 12:17:21 -0700</bug_when>
    <thetext>Committed r283921 (242788@main): &lt;https://commits.webkit.org/242788@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440244</attachid>
            <date>2021-10-05 12:12:49 -0700</date>
            <delta_ts>2021-10-07 11:47:35 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-231181-20211005121248.patch</filename>
            <type>text/plain</type>
            <size>17966</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MDZiODNjODE0YWVjODY4ZDNmYmZkNjhhZmNiZjg2ZDdhYzc0NDlmLi5lMWNhM2E1Y2E4ZjdiYTFi
NTNiNDE4ZmZlNjUxYTAyMWUyNDk0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMS0xMC0wNSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgVGFiQmFyIGNvbnRleHQgbWVudSBzdXBwb3J0IGZvciBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTgxCisgICAgICAgIDxyZGFyOi8vNzQ2
OTgyNDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIGV4aXN0aW5nIFRhYkJhci9UYWJCcm93c2VyIHN5c3RlbSByZWxpZXMgb24gdGhlIGZhY3Qg
dGhhdCBlYWNoIHRhYiBjbGFzcyBjYW4KKyAgICAgICAgYmUgaW5zdGFudGlhdGVkIG9uY2UuIFRo
aXMgaXMgbm8gbG9uZ2VyIHRydWUgd2l0aCBleHRlbnNpb24gdGFicywgYXMgYWxsIG9mIHRoZW0K
KyAgICAgICAgYXJlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50VmlldyBjbGFzcy4KKworICAgICAgICBUaGUgbmV3IGFwcHJvYWNoIGJ1aWxk
cyBvbiBidWcgMjMwNzU4IGJ5IGludHJvZHVjaW5nIGEgJ2hpZGRlbicgcHJvcGVydHkgb24gQ29u
dGVudFZpZXcuCisgICAgICAgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1hcmsgZXh0ZW5zaW9uIHRh
YnMgYXMgImF0dGFjaGVkIGJ5IG5vdCBzaG93aW5nIiBkdWUgdG8gdGhlCisgICAgICAgIG92ZXJy
aWRlIG9mIHNob3VsZE5vdFJlbW92ZUZyb21ET01XaGVuSGlkZGVuKCkuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLl9jcmVhdGVUYWJDb250ZW50
Vmlld0ZvclR5cGUpOgorICAgICAgICAoV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQpOgorICAg
ICAgICBMaXN0IFdlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3IGFzIGEga25vd24g
dGFiIGNsYXNzLiBCdXQgZG8gbm90IGFsbG93CisgICAgICAgIHRoaXMgdGFiIGNsYXNzIHRvIGJl
IGluc3RhbnRpYXRlZCBkaXJlY3RseS4gRXh0ZW5zaW9uIHRhYnMgYXJlIGludGVuZGVkIHRvIGJl
CisgICAgICAgIGNyZWF0ZWQgdXNpbmcgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5j
cmVhdGVUYWJGb3JFeHRlbnNpb24oKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnVucmVnaXN0ZXJFeHRlbnNp
b24pOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5
cGUuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgRHJpdmUtYnksIHN1cHByZXNzIGFu
aW1hdGlvbnMgd2hlbiBleHRlbnNpb24gdGFicyBhcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkLiBP
dGhlcndpc2UKKyAgICAgICAgdGhlcmUgaXMgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgYW5kIGdsaXRj
aHkgYW5pbWF0aW9uIHdoZW4gbXVsdGlwbGUgZXh0ZW5zaW9uIHRhYnMgYXJlIAorICAgICAgICBj
cmVhdGVkIHVwb24gbG9hZGluZyBXZWIgSW5zcGVjdG9yIHRoZSBmaXJzdCB0aW1lLgorCisgICAg
ICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5zaG93RXh0
ZW5zaW9uVGFiKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmhpZGVFeHRlbnNpb25UYWIpOiBBZGRlZC4KKyAgICAgICAgVGhlc2UgbWV0aG9k
cyBhcmUgY291bnRlcnBhcnRzLiBUaGV5IHRvZ2dsZSB0YWJDb250ZW50Vmlldy5oaWRkZW4gdG8g
bWFrZSB0aGUgdGFiCisgICAgICAgIHZpc2libGUgYW5kIGhpZGRlbi4gTm90ZSB0aGF0ICdoaWRl
JyBkb2VzIG5vdCBhY3R1YWxseSBjbG9zZS9kZXN0cm95IHRoZQorICAgICAgICBleHRlbnNpb24g
dGFiLiBFeHRlbnNpb24gdGFicyBhcmUgaGlkZGVuIGJ5IHNldHRpbmcgLmhpZGRlbiAoJ2Rpc3Bs
YXk6bm9uZScpLAorICAgICAgICByZW1vdmluZyB0aGUgdGFiJ3MgVGFiQmFySXRlbSBmcm9tIHRo
ZSBUYWJCYXIsIGFuZCByZXZlYWwgaXQgaW4gdGhlIFRhYkJhciBjb250ZXh0IG1lbnVzLgorCisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5hZGRD
b250ZXh0TWVudUl0ZW1zRm9yQ2xvc2VkRXh0ZW5zaW9uVGFicyk6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5hZGRDb250ZXh0TWVudUl0ZW1z
Rm9yQWxsRXh0ZW5zaW9uVGFicyk6CisgICAgICAgIEFkZGVkLiBUYWJCYXIgZGVsZWdhdGVzIHRo
ZSBjcmVhdGlvbiBvZiBleHRlbnNpb24gdGFiIGNvbnRleHQgbWVudSBpdGVtcyB0byB0aGlzIGNs
YXNzLgorICAgICAgICBUaGUgZmlyc3QgbWV0aG9kIG9ubHkgc2hvd3MgaGlkZGVuIGV4dGVuc2lv
biB0YWJzIChmb3IgdGhlIFJlb3BlbiBDbG9zZWQgVGFicyArIGl0ZW0pLgorICAgICAgICBUaGUg
c2Vjb25kIG1ldGhvZCBzaG93cyB2aXNpYmxlIGFuZCBoaWRkZW4gZXh0ZW5zaW9uIHRhYnMgYW5k
IGZlZWRzIHRoZSBtYWluIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudFZpZXcuY3NzOgorICAgICAgICAoLmNvbnRlbnQtdmlldy5oaWRkZW4tc2lt
dWxhdGluZy1kb20tZGV0YWNoZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudFZpZXdDb250YWluZXIuY3NzOgorICAgICAgICAoLmNvbnRlbnQtdmlldy1jb250YWluZXIg
PiAuY29udGVudC12aWV3KToKKyAgICAgICAgKC5jb250ZW50LXZpZXctY29udGFpbmVyID4gLmNv
bnRlbnQtdmlldy5oaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQpOiBEZWxldGVkLgorICAg
ICAgICBUaGlzIHN0eWxlIGNsYXNzIGlzIG5vdyBtYW5hZ2VkIGJ5IENvbnRlbnRWaWV3LmpzLiBT
bywgbW92ZSB0aGUgc3R5bGUgZGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuQ29udGVudFZpZXcpOgorICAgICAg
ICAoV0kuQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBpc0hpZGRlbik6CisgICAgICAgIChXSS5D
b250ZW50Vmlldy5wcm90b3R5cGUuc2V0IGhpZGRlbik6CisgICAgICAgIEFkZCBhIGZsYWcgc28g
dGhhdCBjbGllbnRzIGNhbiBkZXRlcm1pbmUgd2hlbiB0aGUgY29udGVudCB2aWV3IGlzIGhpZGRl
biBidXQgbm90IGNsb3NlZC4KKyAgICAgICAgRHVlIHRvIHNob3VsZE5vdFJlbW92ZUZyb21ET01X
aGVuSGlkZGVuKCksIHRoZSBjb250ZW50IHZpZXcgd2lsbCBub3QgYWN0dWFsbHkgYmVjb21lCisg
ICAgICAgIGRldGFjaGVkIGZyb20gdGhlIERPTSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgorICAgICAgICAoV0ku
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZp
ZXcpOgorICAgICAgICBGaXggdGhpcyBjb2RlIHRvIG5vdCBkZXRhY2ggZXh0ZW5zaW9uIHRhYnMg
dGhhdCBhcmUgaGlkZGVuLgorCisgICAgICAgIChXSS5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUuX3Nob3dFbnRyeSk6CisgICAgICAgIChXSS5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUuX2hpZGVFbnRyeSk6CisgICAgICAgIEFkb3B0IG5ldyBzZXR0ZXIgZm9yIENvbnRlbnRW
aWV3LnByb3RvdHlwZS5oaWRkZW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5qczoKKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZUFkZENsb3NlZFRh
YnNUYWJCYXJJdGVtTW91c2VEb3duKToKKyAgICAgICAgRG9uJ3QgYWRkIGdlbmVyaWMgY29udGV4
dCBtZW51IGl0ZW1zIGZvciBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy4gQ2Fs
bCBvdXQKKyAgICAgICAgdG8gV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciB0byBjcmVh
dGUgdGhlIGFwcHJvcHJpYXRlIGV4dGVuc2lvbiB0YWIgY29udGV4dCBtZW51IGl0ZW1zLgorICAg
ICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlVGFiQ29udGFpbmVyQ29udGV4dE1lbnUp
OgorICAgICAgICAoV0kuVGFiQmFyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5pc1RhYkFsbG93ZWQpOiBEcml2ZS1ieSwg
Z2F0ZSBjcmVhdGlvbiBvZiB0aGlzIGNsYXNzCisgICAgICAgIG9uIFdlYiBFeHRlbnNpb25zIGJl
aW5nIGVuYWJsZWQgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMp
LgorCiAyMDIxLTA5LTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFdlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3IHNob3VsZCBu
b3QgcmVsb2FkIGl0cyBpZnJhbWUgd2hlbiBkZXRhY2hlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDA2MDdkYTA5ZTlkZGQ5MmNj
ODdkOGQ3OTViMjk2MWQyYWI3MzU1NmUuLjQ4NjM5N2IzMTZlNDE4NzVjOTEzZGQ2YWNkNmIwYmIz
ODdjN2M0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKQEAgLTQ4Myw2ICs0ODMsNyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rp
b24oKQogICAgICAgICBXSS5Db25zb2xlVGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LAorICAg
ICAgICBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldywKICAgICBdOwogCiAg
ICAgV0kuX2tub3duVGFiQ2xhc3Nlc0J5VHlwZSA9IG5ldyBNYXA7CkBAIC02NzIsNiArNjczLDEx
IEBAIFdJLl9jcmVhdGVUYWJDb250ZW50Vmlld0ZvclR5cGUgPSBmdW5jdGlvbih0YWJUeXBlKQog
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5pbmcgYSBudWxsIGNv
bnRlbnQgdmlldyB3aWxsIGVmZmVjdGl2ZWx5IHByZXZlbnQgYXV0b21hdGljIHJlc3RvcmF0aW9u
IG9mIHRoaXMgdGFiIHR5cGUuCisgICAgLy8gSW5zcGVjdG9yIEV4dGVuc2lvbiB0YWJzIG11c3Qg
YmUgY3JlYXRlZCB2aWEgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5jcmVhdGVUYWJG
b3JFeHRlbnNpb24oKS4KKyAgICBpZiAodGFiQ2xhc3MgPT09IFdJLldlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaWV3KQorICAgICAgICByZXR1cm4gbnVsbDsKKwogICAgIGNvbnNvbGUu
YXNzZXJ0KFdJLlRhYkNvbnRlbnRWaWV3LmlzUHJvdG90eXBlT2YodGFiQ2xhc3MpKTsKICAgICBy
ZXR1cm4gbmV3IHRhYkNsYXNzOwogfTsKQEAgLTczOCw2ICs3NDQsOSBAQCBXSS5fdHJ5VG9SZXN0
b3JlUGVuZGluZ1RhYnMgPSBmdW5jdGlvbigpCiAKIFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2Vk
ID0gZnVuY3Rpb24odGFiVHlwZSkKIHsKKyAgICBpZiAodGFiVHlwZSA9PT0gV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuVHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgbGV0IHRhYkNsYXNzID0gV0kuX2tub3duVGFiQ2xhc3Nlc0J5VHlwZS5nZXQodGFiVHlw
ZSk7CiAgICAgaWYgKCF0YWJDbGFzcyB8fCAhdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNw
ZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCmluZGV4IDM4YTM3OWM0ZDhhZTgxYjVmY2YwNmZl
YTcyMmFiYzY4YWVjNzhiOGMuLmM1ZmQ4Y2Q1MWRiYzY0MjY4ZGNiZDFmODVkZmMxMzRjYTJlYzI1
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlci5qcwpAQCAtNjMsMTAgKzYzLDExIEBAIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4
dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29k
ZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCisgICAgICAgIGNvbnN0IHN1cHByZXNzQW5p
bWF0aW9ucyA9IHRydWU7CiAgICAgICAgIGxldCBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSA9IHRo
aXMuX3RhYklEc0ZvckV4dGVuc2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQpIHx8IFtdOwogICAg
ICAgICBmb3IgKGxldCBleHRlbnNpb25UYWJJRCBvZiBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSkg
ewogICAgICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29u
dGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC50YWtlKGV4dGVuc2lvblRhYklEKTsKLSAgICAg
ICAgICAgIFdJLnRhYkJyb3dzZXIuY2xvc2VUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmll
dyk7CisgICAgICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFi
Q29udGVudFZpZXcsIHtzdXBwcmVzc0FuaW1hdGlvbnN9KTsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuRXZlbnQuRXh0ZW5zaW9uUmVtb3ZlZCwge2V4dGVuc2lvbn0pOwpAQCAtODMsOSAr
ODQsMTAgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgbGV0IGV4dGVuc2lvblRh
YklEID0gYFdlYkV4dGVuc2lvblRhYi0ke2V4dGVuc2lvbklEfS0ke3RoaXMuX25leHRFeHRlbnNp
b25UYWJJRCsrfWA7CiAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IG5ldyBXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyhleHRlbnNpb24sIGV4dGVuc2lvblRhYklELCB0
YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOwogCisgICAgICAgIGNvbnN0IHN1cHByZXNz
QW5pbWF0aW9ucyA9IHRydWU7CiAgICAgICAgIHRoaXMuX3RhYklEc0ZvckV4dGVuc2lvbklETWFw
LmFkZChleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwogICAgICAgICB0aGlzLl9leHRlbnNp
b25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFwLnNldChleHRlbnNpb25UYWJJRCwg
dGFiQ29udGVudFZpZXcpOwotICAgICAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRW
aWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250
ZW50Vmlldyh0YWJDb250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9uc30pOwogCiAgICAgICAg
IC8vIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgdG8gcmV0dXJuIGFuIGVycm9yIHN0cmluZyBv
ciBhIHJlc3VsdCBvYmplY3QuCiAgICAgICAgIHJldHVybiB7ZXh0ZW5zaW9uVGFiSUR9OwpAQCAt
MTU4LDcgKzE2MCw3IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgIHJldHVybiB0
YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlfSk7CiAgICAgfQogICAg
IAotICAgIHNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpCisgICAgc2hvd0V4dGVuc2lv
blRhYihleHRlbnNpb25UYWJJRCwgb3B0aW9ucyA9IHt9KQogICAgIHsKICAgICAgICAgbGV0IHRh
YkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25U
YWJJRE1hcC5nZXQoZXh0ZW5zaW9uVGFiSUQpOwogICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3
KSB7CkBAIC0xNjYsNyArMTY4LDkgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAg
ICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1
ZXN0OwogICAgICAgICB9CiAKKyAgICAgICAgdGFiQ29udGVudFZpZXcuaGlkZGVuID0gZmFsc2U7
CiAgICAgICAgIGxldCBzdWNjZXNzID0gV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZp
ZXcodGFiQ29udGVudFZpZXcsIHsKKyAgICAgICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgICAg
ICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRnJv
bnRlbmRBUEksCiAgICAgICAgIH0pOwogCkBAIC0xNzYsNiArMTgwLDYxIEBAIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyIGV4dGVuCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBoaWRlRXh0ZW5zaW9uVGFiKGV4
dGVuc2lvblRhYklELCBvcHRpb25zID0ge30pCisgICAgeworICAgICAgICBsZXQgdGFiQ29udGVu
dFZpZXcgPSB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFw
LmdldChleHRlbnNpb25UYWJJRCk7CisgICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpIHsKKyAg
ICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byBzaG93IGV4dGVuc2lv
biB0YWIgd2l0aCB1bmtub3duIGV4dGVuc2lvblRhYklEOiAiICsgZXh0ZW5zaW9uVGFiSUQpOwor
ICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52
YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICB0YWJDb250ZW50Vmlldy5oaWRkZW4g
PSB0cnVlOworICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFi
Q29udGVudFZpZXcsIG9wdGlvbnMpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRl
bnRWaWV3LmlzSGlkZGVuKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRhYkNvbnRlbnRWaWV3
LmlzQ2xvc2VkKTsKKyAgICB9CisKKyAgICBhZGRDb250ZXh0TWVudUl0ZW1zRm9yQ2xvc2VkRXh0
ZW5zaW9uVGFicyhjb250ZXh0TWVudSkKKyAgICB7CisgICAgICAgIGxldCBkaWRBZGRTZXBhcmF0
b3IgPSBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgdGFiQ29udGVudFZpZXcgb2YgdGhpcy5fZXh0
ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC52YWx1ZXMoKSkgeworICAg
ICAgICAgICAgbGV0IHNob3VsZEluY2x1ZGVUYWIgPSB0YWJDb250ZW50Vmlldy5pc0hpZGRlbiB8
fCAhdGFiQ29udGVudFZpZXcudGFiQmFySXRlbS5wYXJlbnRUYWJCYXI7CisgICAgICAgICAgICBp
ZiAoIXNob3VsZEluY2x1ZGVUYWIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIGlmICghZGlkQWRkU2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgZGlkQWRkU2Vw
YXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0
b3IoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3Qgc3VwcHJlc3NBbmltYXRp
b25zID0gZmFsc2U7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKHRhYkNvbnRl
bnRWaWV3LnRhYkluZm8oKS5kaXNwbGF5TmFtZSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRo
aXMuc2hvd0V4dGVuc2lvblRhYih0YWJDb250ZW50Vmlldy5leHRlbnNpb25UYWJJRCwge3N1cHBy
ZXNzQW5pbWF0aW9uc30pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBhZGRDb250ZXh0TWVudUl0ZW1zRm9yQWxsRXh0ZW5zaW9uVGFicyhjb250ZXh0TWVudSkKKyAg
ICB7CisgICAgICAgIGxldCBkaWRBZGRTZXBhcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgZm9yIChs
ZXQgdGFiQ29udGVudFZpZXcgb2YgdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRl
bnNpb25UYWJJRE1hcC52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKCFkaWRBZGRTZXBhcmF0
b3IpIHsKKyAgICAgICAgICAgICAgICBkaWRBZGRTZXBhcmF0b3IgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsZXQgY2hlY2tlZCA9ICF0YWJDb250ZW50Vmlldy5pc0hpZGRlbiB8fCAhIXRh
YkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0ucGFyZW50VGFiQmFyOworICAgICAgICAgICAgbGV0IGRp
c2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0
ZW0odGFiQ29udGVudFZpZXcudGFiSW5mbygpLmRpc3BsYXlOYW1lLCAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgaWYgKCFjaGVja2VkKQorICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFeHRl
bnNpb25UYWIodGFiQ29udGVudFZpZXcuZXh0ZW5zaW9uVGFiSUQpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRXh0ZW5zaW9uVGFiKHRhYkNvbnRl
bnRWaWV3LmV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAgIH0sIGNoZWNrZWQsIGRpc2FibGVk
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIo
ZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkKICAgICB7CiAgICAgICAgIGxldCB0YWJDb250
ZW50VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURN
YXAuZ2V0KGV4dGVuc2lvblRhYklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzcwppbmRleCA0OTU3YjZmNzUx
MGUzZTQwYzgzMmU0YTJkN2MxZTkyNGVmODMxOTA1Li4wMGUwNWEzMDY5NjUxNWY4ZGRiNmFiNmRi
MGMwMjRlM2UwZmFiYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuY3NzCkBAIC02NiwzICs2Niw3IEBACiAu
Y29udGVudC12aWV3ID4gLm1lc3NhZ2UtdGV4dC12aWV3ID4gLmRlc2NyaXB0aW9uIHsKICAgICBs
aW5lLWhlaWdodDogMjJweDsKIH0KKworLmNvbnRlbnQtdmlldy5oaWRkZW4tc2ltdWxhdGluZy1k
b20tZGV0YWNoZWQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4
IDIzNzhiOGIyNmRiMzI4M2M5NTgxNWVhZjc2M2M4MGQyMWU4OWVjYWQuLjg4Mjk0NmUyMTI3NWNm
NmQyZGI1NTVlMzEzNzk0N2E0ODBmNzRmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC0zOCw2ICsz
OCw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3
CiAKICAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKICAgICAgICAgdGhpcy5f
aXNDbG9zZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBmYWxzZTsKICAgICB9
CiAKICAgICAvLyBTdGF0aWMKQEAgLTM0OCw2ICszNDksMTggQEAgV0kuQ29udGVudFZpZXcgPSBj
bGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKIAogICAgIGdldCBpc0Nsb3NlZCgpIHsg
cmV0dXJuIHRoaXMuX2lzQ2xvc2VkOyB9CiAKKyAgICBnZXQgaXNIaWRkZW4oKQorICAgIHsKKyAg
ICAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIENvbnRlbnRWaWV3IGlzIGNsb3NlZCwgb3IgaWYg
c2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4oKSBpcyB0cnVlIGFuZCB0aGUgQ29udGVu
dFZpZXcgaGFzIGJlZW4gaGlkZGVuLgorICAgICAgICByZXR1cm4gdGhpcy5faXNDbG9zZWQgfHwg
dGhpcy5faXNIaWRkZW47CisgICAgfQorCisgICAgc2V0IGhpZGRlbih2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lzSGlkZGVuID0gISF2YWx1ZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoImhpZGRlbi1zaW11bGF0aW5nLWRvbS1kZXRhY2hlZCIsIHRoaXMuX2lz
SGlkZGVuKTsKKyAgICB9CisKICAgICBnZXQgcmVwcmVzZW50ZWRPYmplY3QoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZp
ZXdDb250YWluZXIuY3NzCmluZGV4IGE0NDhhMTVhMDc0YzAzYjJmMjNlNzVkOTZkNGJmMDVmZTI3
OTY3ZDMuLjkzY2FhYTNiZTUyNDc1ZDNjNGQ0NGNjNzg5MTkyMjQ0OGJlNWQ2YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
Q29udGFpbmVyLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5jc3MKQEAgLTM3LDcgKzM3LDMgQEAKIAogICAgIG92
ZXJmbG93OiBoaWRkZW47CiB9Ci0KLS5jb250ZW50LXZpZXctY29udGFpbmVyID4gLmNvbnRlbnQt
dmlldy5oaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQgewotICAgIGRpc3BsYXk6IG5vbmU7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IDIzMmQ1ZDZkOGNiMzli
MTZkNWNmYzU3NDNhNWJhMjJlNThjNTA2YTAuLjdjOGViYzE0NjllNGQwOTUyMTdjNjAxNDNlN2Nm
MDUwNWRhMzAyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC00MjMs
OCArNDIzLDEwIEBAIFdJLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdD
b250YWluZXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgLy8gRGVzZWxlY3RlZCBleHRlbnNp
b24gdGFicyBhcmUgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIERPTSB2aWEgYHRoaXMuZWxlbWVudGAs
CiAgICAgICAgIC8vIHNvIHRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGFjdHVhbGx5IHJlbW92
ZSB0aGUgc3VidmlldyBhbmQgZGV0YWNoIGZyb20gdGhlIERPTS4KLSAgICAgICAgaWYgKGNvbnRl
bnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZE5vdFJlbW92ZUZyb21ET01XaGVuSGlkZGVuKCkgJiYg
Y29udGVudFZpZXcuaXNBdHRhY2hlZCkKKyAgICAgICAgaWYgKCFjb250ZW50Vmlldy5jb25zdHJ1
Y3Rvci5zaG91bGROb3RSZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigpIHx8ICFjb250ZW50Vmlldy5p
c0hpZGRlbikKICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3Vidmlldyhjb250ZW50Vmlldyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghY29udGVudFZpZXcuaXNBdHRhY2hlZCk7CiAKQEAgLTQ2Myw3ICs0NjUsNyBAQCBXSS5Db250
ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV0ku
VmlldwogICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3MuaW5jbHVkZXMoZW50cnkuY29udGVudFZp
ZXcpKQogICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KGVudHJ5LmNvbnRlbnRWaWV3KTsKICAg
ICAgICAgZWxzZSBpZiAoZW50cnkuY29udGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkTm90UmVt
b3ZlRnJvbURPTVdoZW5IaWRkZW4oKSkgewotICAgICAgICAgICAgZW50cnkuY29udGVudFZpZXcu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQi
KTsKKyAgICAgICAgICAgIGVudHJ5LmNvbnRlbnRWaWV3LmhpZGRlbiA9IGZhbHNlOwogICAgICAg
ICAgICAgZW50cnkuY29udGVudFZpZXcuYXR0YWNoZWQoKTsKICAgICAgICAgfQogCkBAIC00ODIs
NyArNDg0LDcgQEAgV0kuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0Nv
bnRhaW5lciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgZW50cnkucHJlcGFyZVRvSGlkZSgpOwog
ICAgICAgICBpZiAodGhpcy5zdWJ2aWV3cy5pbmNsdWRlcyhlbnRyeS5jb250ZW50VmlldykpIHsK
ICAgICAgICAgICAgIGlmIChlbnRyeS5jb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGROb3RS
ZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigpKSB7Ci0gICAgICAgICAgICAgICAgZW50cnkuY29udGVu
dFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNo
ZWQiKTsKKyAgICAgICAgICAgICAgICBlbnRyeS5jb250ZW50Vmlldy5oaWRkZW4gPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGVudHJ5LmNvbnRlbnRWaWV3LmRldGFjaGVkKCk7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoZW50cnkuY29udGVu
dFZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGFiQmFyLmpzCmluZGV4IDQxZmFmODBkNjRlZjVhOGYwZWQwODE3MDQ4MmY0N2JiYjU0OTE3
YzguLjUzOWEyMzBiMmYyY2M5MGNmMmQxNjUzNjc3NTkxYWJhYmY0MWFmMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAg
LTc2MiwxMSArNzYyLDE3IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZp
ZXcKICAgICAgICAgfSk7CiAKICAgICAgICAgZm9yIChsZXQgY2xvc2VkVGFiQ2xhc3Mgb2YgY2xv
c2VkVGFiQ2xhc3NlcykgeworICAgICAgICAgICAgLy8gVGFiIHR5cGVzIHRoYXQgYXJlIG5vdCBy
ZXN0b3JhYmxlIChpLmUuLCBleHRlbnNpb24gdGFiKSBzaG91bGQgbm90IGJlIGFkZGVkIGluIHRo
ZSBnZW5lcmljIGNvZGUgcGF0aC4KKyAgICAgICAgICAgIGlmICghY2xvc2VkVGFiQ2xhc3Muc2hv
dWxkU2F2ZVRhYigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKGNsb3NlZFRhYkNsYXNzLnRhYkluZm8oKS5kaXNwbGF5TmFt
ZSwgKCkgPT4gewogICAgICAgICAgICAgICAgIFdJLmNyZWF0ZU5ld1RhYldpdGhUeXBlKGNsb3Nl
ZFRhYkNsYXNzLlR5cGUsIHtzaG91bGRTaG93TmV3VGFiOiB0cnVlfSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogCisgICAgICAgIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVy
LmFkZENvbnRleHRNZW51SXRlbXNGb3JDbG9zZWRFeHRlbnNpb25UYWJzKGNvbnRleHRNZW51KTsK
KwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfQogCkBAIC05NDEsNiArOTQ3LDgg
QEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAg
ICAgICAgICBXSS5jcmVhdGVOZXdUYWJXaXRoVHlwZSh0YWJDbGFzcy5UeXBlLCB7c2hvdWxkU2hv
d05ld1RhYjogdHJ1ZX0pOwogICAgICAgICAgICAgfSwgY2hlY2tlZCwgZGlzYWJsZWQpOwogICAg
ICAgICB9CisKKyAgICAgICAgV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIuYWRkQ29u
dGV4dE1lbnVJdGVtc0ZvckFsbEV4dGVuc2lvblRhYnMoY29udGV4dE1lbnUpOwogICAgIH0KIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXcuanMKaW5kZXggMWJiNGE0MGZhYjM0ZThiNWVhZGM5ZGVlZTQwNzZjNTljZGM1YTg0Ni4u
YzAyNWQzYzJkOTBiYjQzNzIyZmQxM2FlYzIxNzM4ZTE4ZDQ0ODQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKQEAgLTg5
LDYgKzg5LDExIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xh
c3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAKICAgICBzdGF0aWMgc2hvdWxk
U2F2ZVRhYigpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0aWMgaXNUYWJBbGxvd2VkKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJF
eHRlbnNpb25zOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9leHRlbnNpb25GcmFt
ZURpZExvYWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440517</attachid>
            <date>2021-10-07 11:47:36 -0700</date>
            <delta_ts>2021-10-07 15:09:35 -0700</delta_ts>
            <desc>Patch v1.0.1 (rebased)</desc>
            <filename>bug-231181-20211007114736.patch</filename>
            <type>text/plain</type>
            <size>17971</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MzU4ZjUyM2E0YTIyZTg4OTI2ZTI3YzM2YzY0MWIxMjBkMDMyNjk5Li4wNjYzMjAyOGE3MDVlMGYz
MjEzNGZhMDk1MzQ0NmE3NDQ1MTc4MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMS0xMC0wNyAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgVGFiQmFyIGNvbnRleHQgbWVudSBzdXBwb3J0IGZvciBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTgxCisgICAgICAgIDxyZGFyOi8vNzQ2
OTgyNDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIGV4aXN0aW5nIFRhYkJhci9UYWJCcm93c2VyIHN5c3RlbSByZWxpZXMgb24gdGhlIGZhY3Qg
dGhhdCBlYWNoIHRhYiBjbGFzcyBjYW4KKyAgICAgICAgYmUgaW5zdGFudGlhdGVkIG9uY2UuIFRo
aXMgaXMgbm8gbG9uZ2VyIHRydWUgd2l0aCBleHRlbnNpb24gdGFicywgYXMgYWxsIG9mIHRoZW0K
KyAgICAgICAgYXJlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50VmlldyBjbGFzcy4KKworICAgICAgICBUaGUgbmV3IGFwcHJvYWNoIGJ1aWxk
cyBvbiBidWcgMjMwNzU4IGJ5IGludHJvZHVjaW5nIGEgJ2hpZGRlbicgcHJvcGVydHkgb24gQ29u
dGVudFZpZXcuCisgICAgICAgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1hcmsgZXh0ZW5zaW9uIHRh
YnMgYXMgImF0dGFjaGVkIGJ5IG5vdCBzaG93aW5nIiBkdWUgdG8gdGhlCisgICAgICAgIG92ZXJy
aWRlIG9mIHNob3VsZE5vdFJlbW92ZUZyb21ET01XaGVuSGlkZGVuKCkuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLl9jcmVhdGVUYWJDb250ZW50
Vmlld0ZvclR5cGUpOgorICAgICAgICAoV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQpOgorICAg
ICAgICBMaXN0IFdlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3IGFzIGEga25vd24g
dGFiIGNsYXNzLiBCdXQgZG8gbm90IGFsbG93CisgICAgICAgIHRoaXMgdGFiIGNsYXNzIHRvIGJl
IGluc3RhbnRpYXRlZCBkaXJlY3RseS4gRXh0ZW5zaW9uIHRhYnMgYXJlIGludGVuZGVkIHRvIGJl
CisgICAgICAgIGNyZWF0ZWQgdXNpbmcgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5j
cmVhdGVUYWJGb3JFeHRlbnNpb24oKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnVucmVnaXN0ZXJFeHRlbnNp
b24pOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5
cGUuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgRHJpdmUtYnksIHN1cHByZXNzIGFu
aW1hdGlvbnMgd2hlbiBleHRlbnNpb24gdGFicyBhcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkLiBP
dGhlcndpc2UKKyAgICAgICAgdGhlcmUgaXMgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgYW5kIGdsaXRj
aHkgYW5pbWF0aW9uIHdoZW4gbXVsdGlwbGUgZXh0ZW5zaW9uIHRhYnMgYXJlIAorICAgICAgICBj
cmVhdGVkIHVwb24gbG9hZGluZyBXZWIgSW5zcGVjdG9yIHRoZSBmaXJzdCB0aW1lLgorCisgICAg
ICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5zaG93RXh0
ZW5zaW9uVGFiKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmhpZGVFeHRlbnNpb25UYWIpOiBBZGRlZC4KKyAgICAgICAgVGhlc2UgbWV0aG9k
cyBhcmUgY291bnRlcnBhcnRzLiBUaGV5IHRvZ2dsZSB0YWJDb250ZW50Vmlldy5oaWRkZW4gdG8g
bWFrZSB0aGUgdGFiCisgICAgICAgIHZpc2libGUgYW5kIGhpZGRlbi4gTm90ZSB0aGF0ICdoaWRl
JyBkb2VzIG5vdCBhY3R1YWxseSBjbG9zZS9kZXN0cm95IHRoZQorICAgICAgICBleHRlbnNpb24g
dGFiLiBFeHRlbnNpb24gdGFicyBhcmUgaGlkZGVuIGJ5IHNldHRpbmcgLmhpZGRlbiAoJ2Rpc3Bs
YXk6bm9uZScpLAorICAgICAgICByZW1vdmluZyB0aGUgdGFiJ3MgVGFiQmFySXRlbSBmcm9tIHRo
ZSBUYWJCYXIsIGFuZCByZXZlYWwgaXQgaW4gdGhlIFRhYkJhciBjb250ZXh0IG1lbnVzLgorCisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5hZGRD
b250ZXh0TWVudUl0ZW1zRm9yQ2xvc2VkRXh0ZW5zaW9uVGFicyk6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5hZGRDb250ZXh0TWVudUl0ZW1z
Rm9yQWxsRXh0ZW5zaW9uVGFicyk6CisgICAgICAgIEFkZGVkLiBUYWJCYXIgZGVsZWdhdGVzIHRo
ZSBjcmVhdGlvbiBvZiBleHRlbnNpb24gdGFiIGNvbnRleHQgbWVudSBpdGVtcyB0byB0aGlzIGNs
YXNzLgorICAgICAgICBUaGUgZmlyc3QgbWV0aG9kIG9ubHkgc2hvd3MgaGlkZGVuIGV4dGVuc2lv
biB0YWJzIChmb3IgdGhlIFJlb3BlbiBDbG9zZWQgVGFicyArIGl0ZW0pLgorICAgICAgICBUaGUg
c2Vjb25kIG1ldGhvZCBzaG93cyB2aXNpYmxlIGFuZCBoaWRkZW4gZXh0ZW5zaW9uIHRhYnMgYW5k
IGZlZWRzIHRoZSBtYWluIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudFZpZXcuY3NzOgorICAgICAgICAoLmNvbnRlbnQtdmlldy5oaWRkZW4tc2lt
dWxhdGluZy1kb20tZGV0YWNoZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudFZpZXdDb250YWluZXIuY3NzOgorICAgICAgICAoLmNvbnRlbnQtdmlldy1jb250YWluZXIg
PiAuY29udGVudC12aWV3KToKKyAgICAgICAgKC5jb250ZW50LXZpZXctY29udGFpbmVyID4gLmNv
bnRlbnQtdmlldy5oaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQpOiBEZWxldGVkLgorICAg
ICAgICBUaGlzIHN0eWxlIGNsYXNzIGlzIG5vdyBtYW5hZ2VkIGJ5IENvbnRlbnRWaWV3LmpzLiBT
bywgbW92ZSB0aGUgc3R5bGUgZGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuQ29udGVudFZpZXcpOgorICAgICAg
ICAoV0kuQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBpc0hpZGRlbik6CisgICAgICAgIChXSS5D
b250ZW50Vmlldy5wcm90b3R5cGUuc2V0IGhpZGRlbik6CisgICAgICAgIEFkZCBhIGZsYWcgc28g
dGhhdCBjbGllbnRzIGNhbiBkZXRlcm1pbmUgd2hlbiB0aGUgY29udGVudCB2aWV3IGlzIGhpZGRl
biBidXQgbm90IGNsb3NlZC4KKyAgICAgICAgRHVlIHRvIHNob3VsZE5vdFJlbW92ZUZyb21ET01X
aGVuSGlkZGVuKCksIHRoZSBjb250ZW50IHZpZXcgd2lsbCBub3QgYWN0dWFsbHkgYmVjb21lCisg
ICAgICAgIGRldGFjaGVkIGZyb20gdGhlIERPTSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgorICAgICAgICAoV0ku
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZp
ZXcpOgorICAgICAgICBGaXggdGhpcyBjb2RlIHRvIG5vdCBkZXRhY2ggZXh0ZW5zaW9uIHRhYnMg
dGhhdCBhcmUgaGlkZGVuLgorCisgICAgICAgIChXSS5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUuX3Nob3dFbnRyeSk6CisgICAgICAgIChXSS5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUuX2hpZGVFbnRyeSk6CisgICAgICAgIEFkb3B0IG5ldyBzZXR0ZXIgZm9yIENvbnRlbnRW
aWV3LnByb3RvdHlwZS5oaWRkZW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5qczoKKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZUFkZENsb3NlZFRh
YnNUYWJCYXJJdGVtTW91c2VEb3duKToKKyAgICAgICAgRG9uJ3QgYWRkIGdlbmVyaWMgY29udGV4
dCBtZW51IGl0ZW1zIGZvciBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy4gQ2Fs
bCBvdXQKKyAgICAgICAgdG8gV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciB0byBjcmVh
dGUgdGhlIGFwcHJvcHJpYXRlIGV4dGVuc2lvbiB0YWIgY29udGV4dCBtZW51IGl0ZW1zLgorICAg
ICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlVGFiQ29udGFpbmVyQ29udGV4dE1lbnUp
OgorICAgICAgICAoV0kuVGFiQmFyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5pc1RhYkFsbG93ZWQpOiBEcml2ZS1ieSwg
Z2F0ZSBjcmVhdGlvbiBvZiB0aGlzIGNsYXNzCisgICAgICAgIG9uIFdlYiBFeHRlbnNpb25zIGJl
aW5nIGVuYWJsZWQgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMp
LgorCiAyMDIxLTEwLTA3ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFdlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3IHNob3VsZCBu
b3QgcmVsb2FkIGl0cyBpZnJhbWUgd2hlbiBkZXRhY2hlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDA2MDdkYTA5ZTlkZGQ5MmNj
ODdkOGQ3OTViMjk2MWQyYWI3MzU1NmUuLjQ4NjM5N2IzMTZlNDE4NzVjOTEzZGQ2YWNkNmIwYmIz
ODdjN2M0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKQEAgLTQ4Myw2ICs0ODMsNyBAQCBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rp
b24oKQogICAgICAgICBXSS5Db25zb2xlVGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLlNlYXJj
aFRhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LAorICAg
ICAgICBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldywKICAgICBdOwogCiAg
ICAgV0kuX2tub3duVGFiQ2xhc3Nlc0J5VHlwZSA9IG5ldyBNYXA7CkBAIC02NzIsNiArNjczLDEx
IEBAIFdJLl9jcmVhdGVUYWJDb250ZW50Vmlld0ZvclR5cGUgPSBmdW5jdGlvbih0YWJUeXBlKQog
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5pbmcgYSBudWxsIGNv
bnRlbnQgdmlldyB3aWxsIGVmZmVjdGl2ZWx5IHByZXZlbnQgYXV0b21hdGljIHJlc3RvcmF0aW9u
IG9mIHRoaXMgdGFiIHR5cGUuCisgICAgLy8gSW5zcGVjdG9yIEV4dGVuc2lvbiB0YWJzIG11c3Qg
YmUgY3JlYXRlZCB2aWEgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5jcmVhdGVUYWJG
b3JFeHRlbnNpb24oKS4KKyAgICBpZiAodGFiQ2xhc3MgPT09IFdJLldlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaWV3KQorICAgICAgICByZXR1cm4gbnVsbDsKKwogICAgIGNvbnNvbGUu
YXNzZXJ0KFdJLlRhYkNvbnRlbnRWaWV3LmlzUHJvdG90eXBlT2YodGFiQ2xhc3MpKTsKICAgICBy
ZXR1cm4gbmV3IHRhYkNsYXNzOwogfTsKQEAgLTczOCw2ICs3NDQsOSBAQCBXSS5fdHJ5VG9SZXN0
b3JlUGVuZGluZ1RhYnMgPSBmdW5jdGlvbigpCiAKIFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2Vk
ID0gZnVuY3Rpb24odGFiVHlwZSkKIHsKKyAgICBpZiAodGFiVHlwZSA9PT0gV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuVHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgbGV0IHRhYkNsYXNzID0gV0kuX2tub3duVGFiQ2xhc3Nlc0J5VHlwZS5nZXQodGFiVHlw
ZSk7CiAgICAgaWYgKCF0YWJDbGFzcyB8fCAhdGFiQ2xhc3MuaXNUYWJBbGxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNw
ZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCmluZGV4IGVhZjI2OTkyYjExNjQ2YTAxMThkNGVj
YTIyYWVmN2MzNzg1NWVkN2QuLmNjMTVhMTA3MWQ2MGFiYWViZTU3ZjM0ZGExZGYyMzZkNWM2Mzk3
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlci5qcwpAQCAtNjMsMTAgKzYzLDExIEBAIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4
dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29k
ZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCisgICAgICAgIGNvbnN0IHN1cHByZXNzQW5p
bWF0aW9ucyA9IHRydWU7CiAgICAgICAgIGxldCBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSA9IHRo
aXMuX3RhYklEc0ZvckV4dGVuc2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQpIHx8IFtdOwogICAg
ICAgICBmb3IgKGxldCBleHRlbnNpb25UYWJJRCBvZiBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSkg
ewogICAgICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29u
dGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC50YWtlKGV4dGVuc2lvblRhYklEKTsKLSAgICAg
ICAgICAgIFdJLnRhYkJyb3dzZXIuY2xvc2VUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmll
dyk7CisgICAgICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFi
Q29udGVudFZpZXcsIHtzdXBwcmVzc0FuaW1hdGlvbnN9KTsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuRXZlbnQuRXh0ZW5zaW9uUmVtb3ZlZCwge2V4dGVuc2lvbn0pOwpAQCAtODMsOSAr
ODQsMTAgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgbGV0IGV4dGVuc2lvblRh
YklEID0gYFdlYkV4dGVuc2lvblRhYi0ke2V4dGVuc2lvbklEfS0ke3RoaXMuX25leHRFeHRlbnNp
b25UYWJJRCsrfWA7CiAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IG5ldyBXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyhleHRlbnNpb24sIGV4dGVuc2lvblRhYklELCB0
YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwpOwogCisgICAgICAgIGNvbnN0IHN1cHByZXNz
QW5pbWF0aW9ucyA9IHRydWU7CiAgICAgICAgIHRoaXMuX3RhYklEc0ZvckV4dGVuc2lvbklETWFw
LmFkZChleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwogICAgICAgICB0aGlzLl9leHRlbnNp
b25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFwLnNldChleHRlbnNpb25UYWJJRCwg
dGFiQ29udGVudFZpZXcpOwotICAgICAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRW
aWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250
ZW50Vmlldyh0YWJDb250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9uc30pOwogCiAgICAgICAg
IC8vIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgdG8gcmV0dXJuIGFuIGVycm9yIHN0cmluZyBv
ciBhIHJlc3VsdCBvYmplY3QuCiAgICAgICAgIHJldHVybiB7ZXh0ZW5zaW9uVGFiSUR9OwpAQCAt
MTU4LDcgKzE2MCw3IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgIHJldHVybiB0
YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlfSk7CiAgICAgfQogICAg
IAotICAgIHNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpCisgICAgc2hvd0V4dGVuc2lv
blRhYihleHRlbnNpb25UYWJJRCwgb3B0aW9ucyA9IHt9KQogICAgIHsKICAgICAgICAgbGV0IHRh
YkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25U
YWJJRE1hcC5nZXQoZXh0ZW5zaW9uVGFiSUQpOwogICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3
KSB7CkBAIC0xNjYsNyArMTY4LDkgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAg
ICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1
ZXN0OwogICAgICAgICB9CiAKKyAgICAgICAgdGFiQ29udGVudFZpZXcuaGlkZGVuID0gZmFsc2U7
CiAgICAgICAgIGxldCBzdWNjZXNzID0gV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZp
ZXcodGFiQ29udGVudFZpZXcsIHsKKyAgICAgICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgICAg
ICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRnJv
bnRlbmRBUEksCiAgICAgICAgIH0pOwogCkBAIC0xNzYsNiArMTgwLDYxIEBAIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyIGV4dGVuCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBoaWRlRXh0ZW5zaW9uVGFiKGV4
dGVuc2lvblRhYklELCBvcHRpb25zID0ge30pCisgICAgeworICAgICAgICBsZXQgdGFiQ29udGVu
dFZpZXcgPSB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFw
LmdldChleHRlbnNpb25UYWJJRCk7CisgICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpIHsKKyAg
ICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byBzaG93IGV4dGVuc2lv
biB0YWIgd2l0aCB1bmtub3duIGV4dGVuc2lvblRhYklEOiAiICsgZXh0ZW5zaW9uVGFiSUQpOwor
ICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52
YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICB0YWJDb250ZW50Vmlldy5oaWRkZW4g
PSB0cnVlOworICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFi
Q29udGVudFZpZXcsIG9wdGlvbnMpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRl
bnRWaWV3LmlzSGlkZGVuKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRhYkNvbnRlbnRWaWV3
LmlzQ2xvc2VkKTsKKyAgICB9CisKKyAgICBhZGRDb250ZXh0TWVudUl0ZW1zRm9yQ2xvc2VkRXh0
ZW5zaW9uVGFicyhjb250ZXh0TWVudSkKKyAgICB7CisgICAgICAgIGxldCBkaWRBZGRTZXBhcmF0
b3IgPSBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgdGFiQ29udGVudFZpZXcgb2YgdGhpcy5fZXh0
ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC52YWx1ZXMoKSkgeworICAg
ICAgICAgICAgbGV0IHNob3VsZEluY2x1ZGVUYWIgPSB0YWJDb250ZW50Vmlldy5pc0hpZGRlbiB8
fCAhdGFiQ29udGVudFZpZXcudGFiQmFySXRlbS5wYXJlbnRUYWJCYXI7CisgICAgICAgICAgICBp
ZiAoIXNob3VsZEluY2x1ZGVUYWIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIGlmICghZGlkQWRkU2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgZGlkQWRkU2Vw
YXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0
b3IoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3Qgc3VwcHJlc3NBbmltYXRp
b25zID0gZmFsc2U7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKHRhYkNvbnRl
bnRWaWV3LnRhYkluZm8oKS5kaXNwbGF5TmFtZSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRo
aXMuc2hvd0V4dGVuc2lvblRhYih0YWJDb250ZW50Vmlldy5leHRlbnNpb25UYWJJRCwge3N1cHBy
ZXNzQW5pbWF0aW9uc30pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBhZGRDb250ZXh0TWVudUl0ZW1zRm9yQWxsRXh0ZW5zaW9uVGFicyhjb250ZXh0TWVudSkKKyAg
ICB7CisgICAgICAgIGxldCBkaWRBZGRTZXBhcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgZm9yIChs
ZXQgdGFiQ29udGVudFZpZXcgb2YgdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRl
bnNpb25UYWJJRE1hcC52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKCFkaWRBZGRTZXBhcmF0
b3IpIHsKKyAgICAgICAgICAgICAgICBkaWRBZGRTZXBhcmF0b3IgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsZXQgY2hlY2tlZCA9ICF0YWJDb250ZW50Vmlldy5pc0hpZGRlbiB8fCAhIXRh
YkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0ucGFyZW50VGFiQmFyOworICAgICAgICAgICAgbGV0IGRp
c2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0
ZW0odGFiQ29udGVudFZpZXcudGFiSW5mbygpLmRpc3BsYXlOYW1lLCAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgaWYgKCFjaGVja2VkKQorICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFeHRl
bnNpb25UYWIodGFiQ29udGVudFZpZXcuZXh0ZW5zaW9uVGFiSUQpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRXh0ZW5zaW9uVGFiKHRhYkNvbnRl
bnRWaWV3LmV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAgIH0sIGNoZWNrZWQsIGRpc2FibGVk
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIo
ZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkKICAgICB7CiAgICAgICAgIGxldCB0YWJDb250
ZW50VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURN
YXAuZ2V0KGV4dGVuc2lvblRhYklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzcwppbmRleCA0OTU3YjZmNzUx
MGUzZTQwYzgzMmU0YTJkN2MxZTkyNGVmODMxOTA1Li4wMGUwNWEzMDY5NjUxNWY4ZGRiNmFiNmRi
MGMwMjRlM2UwZmFiYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuY3NzCkBAIC02NiwzICs2Niw3IEBACiAu
Y29udGVudC12aWV3ID4gLm1lc3NhZ2UtdGV4dC12aWV3ID4gLmRlc2NyaXB0aW9uIHsKICAgICBs
aW5lLWhlaWdodDogMjJweDsKIH0KKworLmNvbnRlbnQtdmlldy5oaWRkZW4tc2ltdWxhdGluZy1k
b20tZGV0YWNoZWQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4
IGRjZjc0NDQ3OWRlOTNhMWI0ZDFkNGQ3ZmRlZWFjODEyYTAzYTJjNGEuLjhkMmUyM2ZiZGViMDcx
N2MzYTU4Yzc1ZmE1ZmQ0NzI1MWM2NjQyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC0zOCw2ICsz
OCw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3
CiAKICAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKICAgICAgICAgdGhpcy5f
aXNDbG9zZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBmYWxzZTsKICAgICB9
CiAKICAgICAvLyBTdGF0aWMKQEAgLTM0OCw2ICszNDksMTggQEAgV0kuQ29udGVudFZpZXcgPSBj
bGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKIAogICAgIGdldCBpc0Nsb3NlZCgpIHsg
cmV0dXJuIHRoaXMuX2lzQ2xvc2VkOyB9CiAKKyAgICBnZXQgaXNIaWRkZW4oKQorICAgIHsKKyAg
ICAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIENvbnRlbnRWaWV3IGlzIGNsb3NlZCwgb3IgaWYg
c2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4oKSBpcyB0cnVlIGFuZCB0aGUgQ29udGVu
dFZpZXcgaGFzIGJlZW4gaGlkZGVuLgorICAgICAgICByZXR1cm4gdGhpcy5faXNDbG9zZWQgfHwg
dGhpcy5faXNIaWRkZW47CisgICAgfQorCisgICAgc2V0IGhpZGRlbih2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lzSGlkZGVuID0gISF2YWx1ZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoImhpZGRlbi1zaW11bGF0aW5nLWRvbS1kZXRhY2hlZCIsIHRoaXMuX2lz
SGlkZGVuKTsKKyAgICB9CisKICAgICBnZXQgcmVwcmVzZW50ZWRPYmplY3QoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZp
ZXdDb250YWluZXIuY3NzCmluZGV4IGE0NDhhMTVhMDc0YzAzYjJmMjNlNzVkOTZkNGJmMDVmZTI3
OTY3ZDMuLjkzY2FhYTNiZTUyNDc1ZDNjNGQ0NGNjNzg5MTkyMjQ0OGJlNWQ2YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
Q29udGFpbmVyLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5jc3MKQEAgLTM3LDcgKzM3LDMgQEAKIAogICAgIG92
ZXJmbG93OiBoaWRkZW47CiB9Ci0KLS5jb250ZW50LXZpZXctY29udGFpbmVyID4gLmNvbnRlbnQt
dmlldy5oaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQgewotICAgIGRpc3BsYXk6IG5vbmU7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IDgxZDlmODBiNzlkOGFl
ZmVjNDEwNTEyZWJmNmI3Zjk3NmJiNzI2NWUuLmVhZDNlMTgwYzBkYjM3YTJmZGE5Y2E4N2U1YTE2
ZGIzNTFkMjlmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC00MjMs
OCArNDIzLDEwIEBAIFdJLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdD
b250YWluZXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgLy8gRGVzZWxlY3RlZCBleHRlbnNp
b24gdGFicyBhcmUgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIERPTSB2aWEgYHRoaXMuZWxlbWVudGAs
CiAgICAgICAgIC8vIHNvIHRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGFjdHVhbGx5IHJlbW92
ZSB0aGUgc3VidmlldyBhbmQgZGV0YWNoIGZyb20gdGhlIERPTS4KLSAgICAgICAgaWYgKGNvbnRl
bnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZE5vdFJlbW92ZUZyb21ET01XaGVuSGlkZGVuKCkgJiYg
Y29udGVudFZpZXcuaXNBdHRhY2hlZCkKKyAgICAgICAgaWYgKCFjb250ZW50Vmlldy5jb25zdHJ1
Y3Rvci5zaG91bGROb3RSZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigpIHx8ICFjb250ZW50Vmlldy5p
c0hpZGRlbikKICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3Vidmlldyhjb250ZW50Vmlldyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghY29udGVudFZpZXcuaXNBdHRhY2hlZCk7CiAKQEAgLTQ2Myw3ICs0NjUsNyBAQCBXSS5Db250
ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV0ku
VmlldwogICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3MuaW5jbHVkZXMoZW50cnkuY29udGVudFZp
ZXcpKQogICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KGVudHJ5LmNvbnRlbnRWaWV3KTsKICAg
ICAgICAgZWxzZSBpZiAoZW50cnkuY29udGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkTm90UmVt
b3ZlRnJvbURPTVdoZW5IaWRkZW4oKSkgewotICAgICAgICAgICAgZW50cnkuY29udGVudFZpZXcu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQi
KTsKKyAgICAgICAgICAgIGVudHJ5LmNvbnRlbnRWaWV3LmhpZGRlbiA9IGZhbHNlOwogICAgICAg
ICAgICAgZW50cnkuY29udGVudFZpZXcuX2RpZE1vdmVUb1BhcmVudCh0aGlzKTsKICAgICAgICAg
fQogCkBAIC00ODIsNyArNDg0LDcgQEAgV0kuQ29udGVudFZpZXdDb250YWluZXIgPSBjbGFzcyBD
b250ZW50Vmlld0NvbnRhaW5lciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgZW50cnkucHJlcGFy
ZVRvSGlkZSgpOwogICAgICAgICBpZiAodGhpcy5zdWJ2aWV3cy5pbmNsdWRlcyhlbnRyeS5jb250
ZW50VmlldykpIHsKICAgICAgICAgICAgIGlmIChlbnRyeS5jb250ZW50Vmlldy5jb25zdHJ1Y3Rv
ci5zaG91bGROb3RSZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigpKSB7Ci0gICAgICAgICAgICAgICAg
ZW50cnkuY29udGVudFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4tc2ltdWxhdGlu
Zy1kb20tZGV0YWNoZWQiKTsKKyAgICAgICAgICAgICAgICBlbnRyeS5jb250ZW50Vmlldy5oaWRk
ZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgIGVudHJ5LmNvbnRlbnRWaWV3Ll9kaWRNb3ZlVG9Q
YXJlbnQobnVsbCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLnJl
bW92ZVN1YnZpZXcoZW50cnkuY29udGVudFZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDQxZmFmODBkNjRlZjVh
OGYwZWQwODE3MDQ4MmY0N2JiYjU0OTE3YzguLjUzOWEyMzBiMmYyY2M5MGNmMmQxNjUzNjc3NTkx
YWJhYmY0MWFmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTc2MiwxMSArNzYyLDE3IEBAIFdJLlRhYkJhciA9IGNs
YXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgfSk7CiAKICAgICAgICAgZm9yIChs
ZXQgY2xvc2VkVGFiQ2xhc3Mgb2YgY2xvc2VkVGFiQ2xhc3NlcykgeworICAgICAgICAgICAgLy8g
VGFiIHR5cGVzIHRoYXQgYXJlIG5vdCByZXN0b3JhYmxlIChpLmUuLCBleHRlbnNpb24gdGFiKSBz
aG91bGQgbm90IGJlIGFkZGVkIGluIHRoZSBnZW5lcmljIGNvZGUgcGF0aC4KKyAgICAgICAgICAg
IGlmICghY2xvc2VkVGFiQ2xhc3Muc2hvdWxkU2F2ZVRhYigpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGNsb3NlZFRhYkNs
YXNzLnRhYkluZm8oKS5kaXNwbGF5TmFtZSwgKCkgPT4gewogICAgICAgICAgICAgICAgIFdJLmNy
ZWF0ZU5ld1RhYldpdGhUeXBlKGNsb3NlZFRhYkNsYXNzLlR5cGUsIHtzaG91bGRTaG93TmV3VGFi
OiB0cnVlfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCisgICAgICAgIFdJLnNoYXJl
ZEFwcC5leHRlbnNpb25Db250cm9sbGVyLmFkZENvbnRleHRNZW51SXRlbXNGb3JDbG9zZWRFeHRl
bnNpb25UYWJzKGNvbnRleHRNZW51KTsKKwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAg
ICAgfQogCkBAIC05NDEsNiArOTQ3LDggQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVu
ZHMgV0kuVmlldwogICAgICAgICAgICAgICAgICAgICBXSS5jcmVhdGVOZXdUYWJXaXRoVHlwZSh0
YWJDbGFzcy5UeXBlLCB7c2hvdWxkU2hvd05ld1RhYjogdHJ1ZX0pOwogICAgICAgICAgICAgfSwg
Y2hlY2tlZCwgZGlzYWJsZWQpOwogICAgICAgICB9CisKKyAgICAgICAgV0kuc2hhcmVkQXBwLmV4
dGVuc2lvbkNvbnRyb2xsZXIuYWRkQ29udGV4dE1lbnVJdGVtc0ZvckFsbEV4dGVuc2lvblRhYnMo
Y29udGV4dE1lbnUpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKaW5kZXggMzY3NjRhYjJlZDVjNmQzNmVh
YWViMmVmNmYxMTJhZWY2NGUzM2EyYi4uNWQ1ZmM5MjlkNTZhMzk0OWNmZTM1YWE3ZTFmYjg0NGIz
N2ZkZTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcuanMKQEAgLTg5LDYgKzg5LDExIEBAIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0YXRpYyBpc1RhYkFsbG93
ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0
c1dlYkV4dGVuc2lvbnM7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2V4dGVuc2lv
bkZyYW1lRGlkTG9hZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440542</attachid>
            <date>2021-10-07 15:09:37 -0700</date>
            <delta_ts>2021-10-08 17:35:28 -0700</delta_ts>
            <desc>Patch v1.1</desc>
            <filename>bug-231181-20211007150936.patch</filename>
            <type>text/plain</type>
            <size>19456</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MzU4ZjUyM2E0YTIyZTg4OTI2ZTI3YzM2YzY0MWIxMjBkMDMyNjk5Li45MTgwNGIzNGM5OTllNTM0
MjE1YzVlMzQ2MGRmZDc0YzNmMWZiZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAyMS0xMC0wNyAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgVGFiQmFyIGNvbnRleHQgbWVudSBzdXBwb3J0IGZvciBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTgxCisgICAgICAgIDxyZGFyOi8vNzQ2
OTgyNDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIGV4aXN0aW5nIFRhYkJhci9UYWJCcm93c2VyIHN5c3RlbSByZWxpZXMgb24gdGhlIGZhY3Qg
dGhhdCBlYWNoIHRhYiBjbGFzcyBjYW4KKyAgICAgICAgYmUgaW5zdGFudGlhdGVkIG9uY2UuIFRo
aXMgaXMgbm8gbG9uZ2VyIHRydWUgd2l0aCBleHRlbnNpb24gdGFicywgYXMgYWxsIG9mIHRoZW0K
KyAgICAgICAgYXJlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50VmlldyBjbGFzcy4KKworICAgICAgICBUaGUgbmV3IGFwcHJvYWNoIGJ1aWxk
cyBvbiBidWcgMjMwNzU4IGJ5IGludHJvZHVjaW5nIGEgJ3Zpc2libGUnIHByb3BlcnR5IG9uIENv
bnRlbnRWaWV3LgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYXJrIGV4dGVuc2lvbiB0
YWJzIGFzICJhdHRhY2hlZCBidXQgbm90IHZpc2libGUiIGR1ZSB0byB0aGUKKyAgICAgICAgb3Zl
cnJpZGUgb2Ygc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5Ob3RWaXNpYmxlKCkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLl9jcmVhdGVUYWJD
b250ZW50Vmlld0ZvclR5cGUpOgorICAgICAgICAoV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQp
OgorICAgICAgICBMaXN0IFdlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3IGFzIGEg
a25vd24gdGFiIGNsYXNzLiBCdXQgZG8gbm90IGFsbG93CisgICAgICAgIHRoaXMgdGFiIGNsYXNz
IHRvIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gRXh0ZW5zaW9uIHRhYnMgYXJlIGludGVuZGVk
IHRvIGJlCisgICAgICAgIGNyZWF0ZWQgdXNpbmcgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJv
bGxlci5jcmVhdGVUYWJGb3JFeHRlbnNpb24oKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnVucmVnaXN0ZXJF
eHRlbnNpb24pOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5w
cm90b3R5cGUuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgRHJpdmUtYnksIHN1cHBy
ZXNzIGFuaW1hdGlvbnMgd2hlbiBleHRlbnNpb24gdGFicyBhcmUgY3JlYXRlZCBhbmQgZGVzdHJv
eWVkLiBPdGhlcndpc2UKKyAgICAgICAgdGhlcmUgaXMgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgYW5k
IGdsaXRjaHkgYW5pbWF0aW9uIHdoZW4gbXVsdGlwbGUgZXh0ZW5zaW9uIHRhYnMgYXJlIAorICAg
ICAgICBjcmVhdGVkIHVwb24gbG9hZGluZyBXZWIgSW5zcGVjdG9yIHRoZSBmaXJzdCB0aW1lLgor
CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5z
aG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIucHJvdG90eXBlLmhpZGVFeHRlbnNpb25UYWIpOiBBZGRlZC4KKyAgICAgICAgVGhlc2Ug
bWV0aG9kcyBhcmUgY291bnRlcnBhcnRzLiBUaGV5IHRvZ2dsZSB0YWJDb250ZW50Vmlldy52aXNp
YmxlIHRvIG1ha2UgdGhlIHRhYgorICAgICAgICB2aXNpYmxlIG9yIG5vdC12aXNpYmxlLiBOb3Rl
IHRoYXQgJ2hpZGUnIGRvZXMgbm90IGFjdHVhbGx5IGNsb3NlL2Rlc3Ryb3kgdGhlCisgICAgICAg
IGV4dGVuc2lvbiB0YWIuIEV4dGVuc2lvbiB0YWJzIGFyZSAiaGlkZGVuIiBieSBzZXR0aW5nIC52
aXNpYmxlID0gZmFsc2UgKCdkaXNwbGF5Om5vbmUnKSwKKyAgICAgICAgcmVtb3ZpbmcgdGhlIHRh
YidzIFRhYkJhckl0ZW0gZnJvbSB0aGUgVGFiQmFyLCBhbmQgcmV2ZWFsIGl0IGluIHRoZSBUYWJC
YXIgY29udGV4dCBtZW51cy4KKworICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlci5wcm90b3R5cGUuYWRkQ29udGV4dE1lbnVJdGVtc0ZvckNsb3NlZEV4dGVuc2lvblRh
YnMpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5
cGUuYWRkQ29udGV4dE1lbnVJdGVtc0ZvckFsbEV4dGVuc2lvblRhYnMpOgorICAgICAgICBBZGRl
ZC4gVGFiQmFyIGRlbGVnYXRlcyB0aGUgY3JlYXRpb24gb2YgZXh0ZW5zaW9uIHRhYiBjb250ZXh0
IG1lbnUgaXRlbXMgdG8gdGhpcyBjbGFzcy4KKyAgICAgICAgVGhlIGZpcnN0IG1ldGhvZCBvbmx5
IHNob3dzIG5vbi12aXNpYmxlIGV4dGVuc2lvbiB0YWJzIChmb3IgdGhlIFJlb3BlbiBDbG9zZWQg
VGFicyArIGl0ZW0pLgorICAgICAgICBUaGUgc2Vjb25kIG1ldGhvZCBzaG93cyBhbGwgY3JlYXRl
ZCBleHRlbnNpb24gdGFicyBhbmQgZmVlZHMgdGhlIG1haW4gY29udGV4dCBtZW51LgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5jc3M6CisgICAgICAgICguY29u
dGVudC12aWV3LmNvbnRlbnQtdmlldy1ub3QtdmlzaWJsZSk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5jc3M6CisgICAgICAgICguY29udGVudC12
aWV3LWNvbnRhaW5lciA+IC5jb250ZW50LXZpZXcpOgorICAgICAgICAoLmNvbnRlbnQtdmlldy1j
b250YWluZXIgPiAuY29udGVudC12aWV3LmhpZGRlbi1zaW11bGF0aW5nLWRvbS1kZXRhY2hlZCk6
IERlbGV0ZWQuCisgICAgICAgIFRoaXMgc3R5bGUgY2xhc3MgaXMgbm93IG1hbmFnZWQgYnkgQ29u
dGVudFZpZXcuanMuIFNvLCBtb3ZlIHRoZSBzdHlsZSBkZWNsYXJhdGlvbi4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50
Vmlldyk6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IGlzVmlzaWJsZSk6
CisgICAgICAgIChXSS5Db250ZW50Vmlldy5wcm90b3R5cGUuc2V0IHZpc2libGUpOgorICAgICAg
ICBBZGQgYSBmbGFnIHNvIHRoYXQgY2xpZW50cyBjYW4gZGV0ZXJtaW5lIHdoZW4gdGhlIGNvbnRl
bnQgdmlldyBpcyBub3QgdmlzaWJsZSBhbmQgbm90IGNsb3NlZC4KKyAgICAgICAgVGhpcyBjYW4g
YmUgdHJ1ZSBpZiBhIHN1YmNsYXNzIG92ZXJyaWRlcyBzaG91bGROb3RSZW1vdmVGcm9tRE9NV2hl
bk5vdFZpc2libGUoKSB0byByZXR1cm4gdHJ1ZS4KKworICAgICAgICAoV0kuQ29udGVudFZpZXcu
c2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4pOiBEZWxldGVkLgorICAgICAgICAoV0ku
Q29udGVudFZpZXcuc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5Ob3RWaXNpYmxlKTogUmVuYW1l
ZC4KKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYmUgaW4gdGVybXMgb2YgdmlzaWJpbGl0eSwgbm90
ICdoaWRkZW4nLCBiZWNhdXNlICdoaWRkZW4nIGlzIGFscmVhZHkgdXNlZCBieSBET00gQVBJLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qczoK
KyAgICAgICAgKFdJLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5fZGlzYXNzb2NpYXRl
RnJvbUNvbnRlbnRWaWV3KToKKyAgICAgICAgRml4IHRoaXMgY29kZSB0byBub3QgZGV0YWNoIGV4
dGVuc2lvbiB0YWJzIHRoYXQgYXJlIG5vdCB2aXNpYmxlLgorCisgICAgICAgIChXSS5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX3Nob3dFbnRyeSk6CisgICAgICAgIChXSS5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX2hpZGVFbnRyeSk6CisgICAgICAgIEFkb3B0IG5ldyBz
ZXR0ZXIgZm9yIENvbnRlbnRWaWV3LnByb3RvdHlwZS52aXNpYmxlLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanM6CisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBl
Ll9oYW5kbGVBZGRDbG9zZWRUYWJzVGFiQmFySXRlbU1vdXNlRG93bik6CisgICAgICAgIERvbid0
IGFkZCBnZW5lcmljIGNvbnRleHQgbWVudSBpdGVtcyBmb3IgV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcuIENhbGwgb3V0CisgICAgICAgIHRvIFdlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIgdG8gY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBleHRlbnNpb24gdGFiIGNvbnRl
eHQgbWVudSBpdGVtcy4KKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZVRhYkNv
bnRhaW5lckNvbnRleHRNZW51KToKKyAgICAgICAgKFdJLlRhYkJhcik6CisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuaXNUYWJB
bGxvd2VkKTogRHJpdmUtYnksIGdhdGUgY3JlYXRpb24gb2YgdGhpcyBjbGFzcworICAgICAgICBv
biBXZWIgRXh0ZW5zaW9ucyBiZWluZyBlbmFibGVkIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3Vw
cG9ydHNXZWJFeHRlbnNpb25zKS4KKworICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcuc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5Ob3RWaXNpYmxlKTogUmVu
YW1lZC4KKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnNo
b3VsZE5vdFJlbW92ZUZyb21ET01XaGVuSGlkZGVuKTogRGVsZXRlZC4KKwogMjAyMS0xMC0wNyAg
QkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBXZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyBzaG91bGQgbm90IHJlbG9hZCBpdHMgaWZy
YW1lIHdoZW4gZGV0YWNoZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvTWFpbi5qcwppbmRleCAwNjA3ZGEwOWU5ZGRkOTJjYzg3ZDhkNzk1YjI5NjFkMmFi
NzM1NTZlLi5jYjI5YTk1ZjZmNTA3YjU5NTlkYzY1MzRlMzAyYWNhZjZkOWU0MmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC00
ODMsNiArNDgzLDcgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgV0ku
Q29uc29sZVRhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5TZWFyY2hUYWJDb250ZW50VmlldywK
ICAgICAgICAgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldywKKyAgICAgICAgV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcsCiAgICAgXTsKIAogICAgIFdJLl9rbm93blRhYkNs
YXNzZXNCeVR5cGUgPSBuZXcgTWFwOwpAQCAtNjcyLDYgKzY3MywxMCBAQCBXSS5fY3JlYXRlVGFi
Q29udGVudFZpZXdGb3JUeXBlID0gZnVuY3Rpb24odGFiVHlwZSkKICAgICAgICAgcmV0dXJuIG51
bGw7CiAgICAgfQogCisgICAgY29uc29sZS5hc3NlcnQodGFiQ2xhc3MgIT09IFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LCAiRXh0ZW5zaW9uIHRhYnMgbXVzdCBiZSBjcmVh
dGVkIHZpYSBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmNyZWF0ZVRhYkZvckV4dGVu
c2lvbigpLiIpOworICAgIGlmICh0YWJDbGFzcyA9PT0gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcpCisgICAgICAgIHJldHVybiBudWxsOworCiAgICAgY29uc29sZS5hc3Nl
cnQoV0kuVGFiQ29udGVudFZpZXcuaXNQcm90b3R5cGVPZih0YWJDbGFzcykpOwogICAgIHJldHVy
biBuZXcgdGFiQ2xhc3M7CiB9OwpAQCAtNzM4LDYgKzc0Myw5IEBAIFdJLl90cnlUb1Jlc3RvcmVQ
ZW5kaW5nVGFicyA9IGZ1bmN0aW9uKCkKIAogV0kuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQgPSBm
dW5jdGlvbih0YWJUeXBlKQogeworICAgIGlmICh0YWJUeXBlID09PSBXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50Vmlldy5UeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBsZXQgdGFiQ2xhc3MgPSBXSS5fa25vd25UYWJDbGFzc2VzQnlUeXBlLmdldCh0YWJUeXBlKTsK
ICAgICBpZiAoIXRhYkNsYXNzIHx8ICF0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKaW5kZXggZWFmMjY5OTJiMTE2NDZhMDExOGQ0ZWNhMjJh
ZWY3YzM3ODU1ZWQ3ZC4uOWM1NjIyOWRkZWFhODEwZWJkYjQ1NjNjNDU0ZWRjYjk5ZTBiYWIyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25D
b250cm9sbGVyLmpzCkBAIC02Niw3ICs2Niw3IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAg
ICAgICAgIGxldCBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSA9IHRoaXMuX3RhYklEc0ZvckV4dGVu
c2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQpIHx8IFtdOwogICAgICAgICBmb3IgKGxldCBleHRl
bnNpb25UYWJJRCBvZiBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSkgewogICAgICAgICAgICAgbGV0
IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNp
b25UYWJJRE1hcC50YWtlKGV4dGVuc2lvblRhYklEKTsKLSAgICAgICAgICAgIFdJLnRhYkJyb3dz
ZXIuY2xvc2VUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7CisgICAgICAgICAgICBX
SS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcsIHtzdXBw
cmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuRXZl
bnQuRXh0ZW5zaW9uUmVtb3ZlZCwge2V4dGVuc2lvbn0pOwpAQCAtODUsNyArODUsNyBAQCBXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlciBleHRlbgogCiAgICAgICAgIHRoaXMuX3RhYklEc0ZvckV4dGVuc2lvbklE
TWFwLmFkZChleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwogICAgICAgICB0aGlzLl9leHRl
bnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFwLnNldChleHRlbnNpb25UYWJJ
RCwgdGFiQ29udGVudFZpZXcpOwotICAgICAgICBXSS50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRl
bnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5hZGRUYWJGb3JD
b250ZW50Vmlldyh0YWJDb250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOwog
CiAgICAgICAgIC8vIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgdG8gcmV0dXJuIGFuIGVycm9y
IHN0cmluZyBvciBhIHJlc3VsdCBvYmplY3QuCiAgICAgICAgIHJldHVybiB7ZXh0ZW5zaW9uVGFi
SUR9OwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAg
IHJldHVybiB0YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlfSk7CiAg
ICAgfQogICAgIAotICAgIHNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpCisgICAgc2hv
d0V4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCwgb3B0aW9ucyA9IHt9KQogICAgIHsKICAgICAg
ICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JF
eHRlbnNpb25UYWJJRE1hcC5nZXQoZXh0ZW5zaW9uVGFiSUQpOwogICAgICAgICBpZiAoIXRhYkNv
bnRlbnRWaWV3KSB7CkBAIC0xNjcsNiArMTY3LDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
Q29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4K
ICAgICAgICAgfQogCiAgICAgICAgIGxldCBzdWNjZXNzID0gV0kudGFiQnJvd3Nlci5zaG93VGFi
Rm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcsIHsKKyAgICAgICAgICAgIC4uLm9wdGlvbnMs
CiAgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25J
bml0aWF0b3IuRnJvbnRlbmRBUEksCiAgICAgICAgIH0pOwogCkBAIC0xNzQsNiArMTc1LDU2IEBA
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JF
eHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVy
cm9yKCJVbmFibGUgdG8gc2hvdyBleHRlbnNpb24gdGFiIHdpdGggZXh0ZW5zaW9uVGFiSUQ6ICIg
KyBleHRlbnNpb25UYWJJRCk7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uLkVycm9yQ29kZS5JbnRlcm5hbEVycm9yOwogICAgICAgICB9CisKKyAgICAgICAgdGFi
Q29udGVudFZpZXcudmlzaWJsZSA9IHRydWU7CisgICAgfQorCisgICAgaGlkZUV4dGVuc2lvblRh
YihleHRlbnNpb25UYWJJRCwgb3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgbGV0IHRhYkNv
bnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJ
RE1hcC5nZXQoZXh0ZW5zaW9uVGFiSUQpOworICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KSB7
CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gc2hvdyBleHRl
bnNpb24gdGFiIHdpdGggdW5rbm93biBleHRlbnNpb25UYWJJRDogIiArIGV4dGVuc2lvblRhYklE
KTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
LkludmFsaWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgdGFiQ29udGVudFZpZXcudmlz
aWJsZSA9IGZhbHNlOworICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZp
ZXcodGFiQ29udGVudFZpZXcsIG9wdGlvbnMpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0
YWJDb250ZW50Vmlldy5pc1Zpc2libGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGFiQ29u
dGVudFZpZXcuaXNDbG9zZWQpOworICAgIH0KKworICAgIGFkZENvbnRleHRNZW51SXRlbXNGb3JD
bG9zZWRFeHRlbnNpb25UYWJzKGNvbnRleHRNZW51KQorICAgIHsKKyAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kU2VwYXJhdG9yKCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFiQ29udGVudFZpZXcg
b2YgdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC52YWx1
ZXMoKSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGV4dGVuc2lvbiB0YWIgaGFzIGJlZW4gdW5j
aGVja2VkIGluIHRoZSBUYWJCYXIgY29udGV4dCBtZW51LCB0aGVuIHRoZSB0YWJCYXJJdGVtCisg
ICAgICAgICAgICAvLyBmb3IgdGhlIGV4dGVuc2lvbiB0YWIgd2lsbCBub3QgYmUgY29ubmVjdGVk
IHRvIGEgcGFyZW50IFRhYkJhci4KKyAgICAgICAgICAgIGxldCBzaG91bGRJbmNsdWRlVGFiID0g
IXRhYkNvbnRlbnRWaWV3LmlzVmlzaWJsZSAmJiAhdGFiQ29udGVudFZpZXcudGFiQmFySXRlbS5w
YXJlbnRUYWJCYXI7CisgICAgICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGVUYWIpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
dGFiQ29udGVudFZpZXcudGFiSW5mbygpLmRpc3BsYXlOYW1lLCAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgdGhpcy5zaG93RXh0ZW5zaW9uVGFiKHRhYkNvbnRlbnRWaWV3LmV4dGVuc2lvblRhYklE
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgYWRkQ29udGV4dE1l
bnVJdGVtc0ZvckFsbEV4dGVuc2lvblRhYnMoY29udGV4dE1lbnUpCisgICAgeworICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKworICAgICAgICBmb3IgKGxldCB0YWJDb250
ZW50VmlldyBvZiB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklE
TWFwLnZhbHVlcygpKSB7CisgICAgICAgICAgICBsZXQgY2hlY2tlZCA9IHRhYkNvbnRlbnRWaWV3
LmlzVmlzaWJsZSB8fCAhIXRhYkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0ucGFyZW50VGFiQmFyOwor
ICAgICAgICAgICAgbGV0IGRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRDaGVja2JveEl0ZW0odGFiQ29udGVudFZpZXcudGFiSW5mbygpLmRpc3BsYXlOYW1l
LCAoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFjaGVja2VkKQorICAgICAgICAgICAgICAg
ICAgICB0aGlzLnNob3dFeHRlbnNpb25UYWIodGFiQ29udGVudFZpZXcuZXh0ZW5zaW9uVGFiSUQp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRXh0
ZW5zaW9uVGFiKHRhYkNvbnRlbnRWaWV3LmV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAgIH0s
IGNoZWNrZWQsIGRpc2FibGVkKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRW
aWV3LmNzcwppbmRleCA0OTU3YjZmNzUxMGUzZTQwYzgzMmU0YTJkN2MxZTkyNGVmODMxOTA1Li5h
YmNmNmVjZmViYzk5M2M2YzZjZjFkZDU4YzQyNGQ1NTRjOGM5OTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5jc3MKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcu
Y3NzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTPigJMyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjYsMyArNjYsNyBAQAogLmNvbnRlbnQtdmlldyA+IC5tZXNzYWdlLXRleHQtdmlldyA+
IC5kZXNjcmlwdGlvbiB7CiAgICAgbGluZS1oZWlnaHQ6IDIycHg7CiB9CisKKy5jb250ZW50LXZp
ZXcuY29udGVudC12aWV3LW5vdC12aXNpYmxlIHsKKyAgICBkaXNwbGF5OiBub25lOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlldy5qcwppbmRleCBkY2Y3NDQ0NzlkZTkzYTFiNGQxZDRkN2ZkZWVhYzgxMmEwM2EyYzRh
Li4zNTA5NmY4YjhiNThjYjAyY2Y3ZGFmOGEzYzkxOWUwMDI3M2M1MGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmll
dy5qcwpAQCAtMzgsMTEgKzM4LDEyIEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVs
bDsKICAgICAgICAgdGhpcy5faXNDbG9zZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faXNWaXNp
YmxlID0gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRpYyBzaG91bGRO
b3RSZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigpCisgICAgc3RhdGljIHNob3VsZE5vdFJlbW92ZUZy
b21ET01XaGVuTm90VmlzaWJsZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnQgdmlldyBz
aG91bGQgKm5vdCogYmUgZGV0YWNoZWQgZnJvbSB0aGUgRE9NIHdoZW4gaGlkZGVuLgpAQCAtMzQ4
LDYgKzM0OSwxNyBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuVmlldwogCiAgICAgZ2V0IGlzQ2xvc2VkKCkgeyByZXR1cm4gdGhpcy5faXNDbG9zZWQ7IH0K
IAorICAgIGdldCBpc1Zpc2libGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9pc0Ns
b3NlZCAmJiB0aGlzLl9pc1Zpc2libGU7CisgICAgfQorCisgICAgc2V0IHZpc2libGUodmFsdWUp
CisgICAgeworICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSAhIXZhbHVlOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiY29udGVudC12aWV3LW5vdC12aXNpYmxlIiwgIXRo
aXMuX2lzVmlzaWJsZSk7CisgICAgfQorCiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29u
dGFpbmVyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRWaWV3Q29udGFpbmVyLmNzcwppbmRleCBhNDQ4YTE1YTA3NGMwM2IyZjIzZTc1ZDk2ZDRi
ZjA1ZmUyNzk2N2QzLi45M2NhYWEzYmU1MjQ3NWQzYzRkNDRjYzc4OTE5MjI0NDhiZTVkNmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlld0NvbnRhaW5lci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuY3NzCkBAIC0zNyw3ICszNywzIEBACiAK
ICAgICBvdmVyZmxvdzogaGlkZGVuOwogfQotCi0uY29udGVudC12aWV3LWNvbnRhaW5lciA+IC5j
b250ZW50LXZpZXcuaGlkZGVuLXNpbXVsYXRpbmctZG9tLWRldGFjaGVkIHsKLSAgICBkaXNwbGF5
OiBub25lOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwppbmRleCA4MWQ5Zjgw
Yjc5ZDhhZWZlYzQxMDUxMmViZjZiN2Y5NzZiYjcyNjVlLi5hZTNmYzQ3YWNkZjYzMTJmM2I5NzAz
MjliYTE0MGE2ZTY5NGQ0ZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz4oCTMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQyMSwxMCArNDIxLDExIEBAIFdJLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3Mg
Q29udGVudFZpZXdDb250YWluZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBEZXNlbGVjdGVkIGV4dGVuc2lvbiB0YWJzIGFyZSBz
dGlsbCBhdHRhY2hlZCB0byB0aGUgRE9NIHZpYSBgdGhpcy5lbGVtZW50YCwKLSAgICAgICAgLy8g
c28gdGhpcyBpcyB0aGUgbGFzdCBjaGFuY2UgdG8gYWN0dWFsbHkgcmVtb3ZlIHRoZSBzdWJ2aWV3
IGFuZCBkZXRhY2ggZnJvbSB0aGUgRE9NLgotICAgICAgICBpZiAoY29udGVudFZpZXcuY29uc3Ry
dWN0b3Iuc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4oKSAmJiBjb250ZW50Vmlldy5p
c0F0dGFjaGVkKQotICAgICAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KGNvbnRlbnRWaWV3KTsK
KyAgICAgICAgLy8gSGlkZGVuL25vbi12aXNpYmxlIGV4dGVuc2lvbiB0YWJzIG11c3QgcmVtYWlu
IGF0dGFjaGVkIHRvIHRoZSBET00gdG8gYXZvaWQgcmVsb2FkaW5nLgorICAgICAgICBpZiAoY29u
dGVudFZpZXcuY29uc3RydWN0b3Iuc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5Ob3RWaXNpYmxl
KCkgJiYgIWNvbnRlbnRWaWV3LmlzVmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoY29udGVudFZpZXcpOwogCiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFjb250ZW50Vmlldy5pc0F0dGFjaGVkKTsKIApAQCAtNDYyLDggKzQ2Myw4IEBAIFdJ
LkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0ZW5k
cyBXSS5WaWV3CiAKICAgICAgICAgaWYgKCF0aGlzLnN1YnZpZXdzLmluY2x1ZGVzKGVudHJ5LmNv
bnRlbnRWaWV3KSkKICAgICAgICAgICAgIHRoaXMuYWRkU3VidmlldyhlbnRyeS5jb250ZW50Vmll
dyk7Ci0gICAgICAgIGVsc2UgaWYgKGVudHJ5LmNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3Vs
ZE5vdFJlbW92ZUZyb21ET01XaGVuSGlkZGVuKCkpIHsKLSAgICAgICAgICAgIGVudHJ5LmNvbnRl
bnRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuLXNpbXVsYXRpbmctZG9tLWRl
dGFjaGVkIik7CisgICAgICAgIGVsc2UgaWYgKGVudHJ5LmNvbnRlbnRWaWV3LmNvbnN0cnVjdG9y
LnNob3VsZE5vdFJlbW92ZUZyb21ET01XaGVuTm90VmlzaWJsZSgpKSB7CisgICAgICAgICAgICBl
bnRyeS5jb250ZW50Vmlldy52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGVudHJ5LmNvbnRl
bnRWaWV3Ll9kaWRNb3ZlVG9QYXJlbnQodGhpcyk7CiAgICAgICAgIH0KIApAQCAtNDgxLDggKzQ4
Miw4IEBAIFdJLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWlu
ZXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgZW50cnkucHJlcGFyZVRvSGlkZSgpOwogICAg
ICAgICBpZiAodGhpcy5zdWJ2aWV3cy5pbmNsdWRlcyhlbnRyeS5jb250ZW50VmlldykpIHsKLSAg
ICAgICAgICAgIGlmIChlbnRyeS5jb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGROb3RSZW1v
dmVGcm9tRE9NV2hlbkhpZGRlbigpKSB7Ci0gICAgICAgICAgICAgICAgZW50cnkuY29udGVudFZp
ZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQi
KTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5jb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGRO
b3RSZW1vdmVGcm9tRE9NV2hlbk5vdFZpc2libGUoKSkgeworICAgICAgICAgICAgICAgIGVudHJ5
LmNvbnRlbnRWaWV3LnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBlbnRyeS5jb250
ZW50Vmlldy5fZGlkTW92ZVRvUGFyZW50KG51bGwpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KGVudHJ5LmNvbnRlbnRWaWV3KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwpp
bmRleCA0MWZhZjgwZDY0ZWY1YThmMGVkMDgxNzA0ODJmNDdiYmI1NDkxN2M4Li41MzlhMjMwYjJm
MmNjOTBjZjJkMTY1MzY3NzU5MWFiYWJmNDFhZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCkBAIC03NjIsMTEgKzc2Miwx
NyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIH0p
OwogCiAgICAgICAgIGZvciAobGV0IGNsb3NlZFRhYkNsYXNzIG9mIGNsb3NlZFRhYkNsYXNzZXMp
IHsKKyAgICAgICAgICAgIC8vIFRhYiB0eXBlcyB0aGF0IGFyZSBub3QgcmVzdG9yYWJsZSAoaS5l
LiwgZXh0ZW5zaW9uIHRhYikgc2hvdWxkIG5vdCBiZSBhZGRlZCBpbiB0aGUgZ2VuZXJpYyBjb2Rl
IHBhdGguCisgICAgICAgICAgICBpZiAoIWNsb3NlZFRhYkNsYXNzLnNob3VsZFNhdmVUYWIoKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShjbG9zZWRUYWJDbGFzcy50YWJJbmZvKCkuZGlzcGxheU5hbWUsICgpID0+IHsKICAg
ICAgICAgICAgICAgICBXSS5jcmVhdGVOZXdUYWJXaXRoVHlwZShjbG9zZWRUYWJDbGFzcy5UeXBl
LCB7c2hvdWxkU2hvd05ld1RhYjogdHJ1ZX0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
IAorICAgICAgICBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5hZGRDb250ZXh0TWVu
dUl0ZW1zRm9yQ2xvc2VkRXh0ZW5zaW9uVGFicyhjb250ZXh0TWVudSk7CisKICAgICAgICAgY29u
dGV4dE1lbnUuc2hvdygpOwogICAgIH0KIApAQCAtOTQxLDYgKzk0Nyw4IEBAIFdJLlRhYkJhciA9
IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgICAgICAgICAgV0kuY3Jl
YXRlTmV3VGFiV2l0aFR5cGUodGFiQ2xhc3MuVHlwZSwge3Nob3VsZFNob3dOZXdUYWI6IHRydWV9
KTsKICAgICAgICAgICAgIH0sIGNoZWNrZWQsIGRpc2FibGVkKTsKICAgICAgICAgfQorCisgICAg
ICAgIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLmFkZENvbnRleHRNZW51SXRlbXNG
b3JBbGxFeHRlbnNpb25UYWJzKGNvbnRleHRNZW51KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmluZGV4
IDM2NzY0YWIyZWQ1YzZkMzZlYWFlYjJlZjZmMTEyYWVmNjRlMzNhMmIuLjJkZjEyOGVkZWM3ZWQ3
Y2NkMmUxZTQxZDQyYjczMjMyNjg4ZDc3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCkBAIC00Nyw2ICs0NywxNSBAQCBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyA9IGNsYXNzIFdlYkluc3BlY3Rv
ckV4dGVuc2lvblRhYkNvbnRlbnRWaQogICAgICAgICB0aGlzLl9mcmFtZUNvbnRlbnREaWRMb2Fk
ID0gZmFsc2U7CiAgICAgfQogCisgICAgLy8gU3RhdGljCisgICAgc3RhdGljIHNob3VsZFNhdmVU
YWIoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBzaG91bGROb3RSZW1vdmVGcm9tRE9N
V2hlbk5vdFZpc2libGUoKSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBzdGF0aWMgaXNUYWJBbGxv
d2VkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9y
dHNXZWJFeHRlbnNpb25zOworICAgIH0KKwogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGV4dGVu
c2lvblRhYklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uVGFiSUQ7IH0KQEAgLTgyLDEzICs5
MSw2IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAgICAgICAgIHJldHVybiB0aGlzLl90YWJJ
bmZvOwogICAgIH0KIAotICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkgeyByZXR1cm4gZmFsc2U7
IH0KLQotICAgIHN0YXRpYyBzaG91bGROb3RSZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigpIHsKLSAg
ICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgdGhlIDxpZnJhbWU+IGNvbnRlbnQg
ZnJvbSBiZWluZyByZWxvYWRlZCB3aGVuIHRoZSBleHRlbnNpb24gdGFiIGlzIGhpZGRlbi4KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2V4dGVu
c2lvbkZyYW1lRGlkTG9hZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440691</attachid>
            <date>2021-10-08 17:35:29 -0700</date>
            <delta_ts>2021-10-08 18:41:05 -0700</delta_ts>
            <desc>Patch v1.2.1 (for landing)</desc>
            <filename>bug-231181-20211008173529.patch</filename>
            <type>text/plain</type>
            <size>16805</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MzU4ZjUyM2E0YTIyZTg4OTI2ZTI3YzM2YzY0MWIxMjBkMDMyNjk5Li41YTkwNTc3YTY2MGQ2NWQy
MDVmZTJjMTY5ZDQ2Yzg2YzExNzEyMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAyMS0xMC0wOCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgVGFiQmFyIGNvbnRleHQgbWVudSBzdXBwb3J0IGZvciBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTgxCisgICAgICAgIDxyZGFyOi8vNzQ2
OTgyNDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIFRo
ZSBleGlzdGluZyBUYWJCYXIvVGFiQnJvd3NlciBzeXN0ZW0gcmVsaWVzIG9uIHRoZSBmYWN0IHRo
YXQgZWFjaCB0YWIgY2xhc3MgY2FuCisgICAgICAgIGJlIGluc3RhbnRpYXRlZCBvbmNlLiBUaGlz
IGlzIG5vIGxvbmdlciB0cnVlIHdpdGggZXh0ZW5zaW9uIHRhYnMsIGFzIGFsbCBvZiB0aGVtCisg
ICAgICAgIGFyZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcgY2xhc3MuCisKKyAgICAgICAgVGhlIG5ldyBhcHByb2FjaCBidWlsZHMg
b24gYnVnIDIzMDc1OCBieSBpbnRyb2R1Y2luZyBhICd2aXNpYmxlJyBwcm9wZXJ0eSBvbiBDb250
ZW50Vmlldy4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFyayBleHRlbnNpb24gdGFi
cyBhcyAiYXR0YWNoZWQgYnkgbm90IHNob3dpbmciIGR1ZSB0byB0aGUKKyAgICAgICAgb3ZlcnJp
ZGUgb2Ygc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4oKS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kuX2NyZWF0ZVRhYkNvbnRlbnRW
aWV3Rm9yVHlwZSk6CisgICAgICAgIChXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCk6CisgICAg
ICAgIExpc3QgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgYXMgYSBrbm93biB0
YWIgY2xhc3MuIEJ1dCBkbyBub3QgYWxsb3cKKyAgICAgICAgdGhpcyB0YWIgY2xhc3MgdG8gYmUg
aW5zdGFudGlhdGVkIGRpcmVjdGx5LiBFeHRlbnNpb24gdGFicyBhcmUgaW50ZW5kZWQgdG8gYmUK
KyAgICAgICAgY3JlYXRlZCB1c2luZyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmNy
ZWF0ZVRhYkZvckV4dGVuc2lvbigpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUudW5yZWdpc3RlckV4dGVuc2lv
bik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlw
ZS5jcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICBEcml2ZS1ieSwgc3VwcHJlc3MgYW5p
bWF0aW9ucyB3aGVuIGV4dGVuc2lvbiB0YWJzIGFyZSBjcmVhdGVkIGFuZCBkZXN0cm95ZWQuIE90
aGVyd2lzZQorICAgICAgICB0aGVyZSBpcyBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBhbmQgZ2xpdGNo
eSBhbmltYXRpb24gd2hlbiBtdWx0aXBsZSBleHRlbnNpb24gdGFicyBhcmUgCisgICAgICAgIGNy
ZWF0ZWQgdXBvbiBsb2FkaW5nIFdlYiBJbnNwZWN0b3IgdGhlIGZpcnN0IHRpbWUuCisKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dFeHRl
bnNpb25UYWIpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5w
cm90b3R5cGUuaGlkZUV4dGVuc2lvblRhYik6IEFkZGVkLgorICAgICAgICBUaGVzZSBtZXRob2Rz
IGFyZSBjb3VudGVycGFydHMuIFRoZXkgdG9nZ2xlIHRhYkNvbnRlbnRWaWV3LnZpc2libGUgdG8g
bWFrZSB0aGUgdGFiCisgICAgICAgIHZpc2libGUgYW5kIG5vdCB2aXNpYmxlLiBOb3RlIHRoYXQg
J2hpZGluZycgZG9lcyBub3QgYWN0dWFsbHkgY2xvc2UvZGVzdHJveSB0aGUKKyAgICAgICAgZXh0
ZW5zaW9uIHRhYi4gRXh0ZW5zaW9uIHRhYnMgYXJlIGhpZGRlbiBieSBzZXR0aW5nIC5ub3Qtdmlz
aWJsZSAoJ2Rpc3BsYXk6bm9uZScpIGFuZAorICAgICAgICByZW1vdmluZyB0aGUgdGFiJ3MgVGFi
QmFySXRlbSBmcm9tIHRoZSBUYWJCYXIuCisKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLmFkZENvbnRleHRNZW51SXRlbXNGb3JDbG9zZWRFeHRl
bnNpb25UYWJzKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmFkZENvbnRleHRNZW51SXRlbXNGb3JBbGxFeHRlbnNpb25UYWJzKToKKyAgICAg
ICAgQWRkZWQuIFRhYkJhciBkZWxlZ2F0ZXMgdGhlIGNyZWF0aW9uIG9mIGV4dGVuc2lvbiB0YWIg
Y29udGV4dCBtZW51IGl0ZW1zIHRvIHRoaXMgY2xhc3MuCisgICAgICAgIFRoZSBmaXJzdCBtZXRo
b2Qgb25seSBzaG93cyBoaWRkZW4gZXh0ZW5zaW9uIHRhYnMgKGZvciB0aGUgUmVvcGVuIENsb3Nl
ZCBUYWJzICsgaXRlbSkuCisgICAgICAgIFRoZSBzZWNvbmQgbWV0aG9kIHNob3dzIHZpc2libGUg
YW5kIG5vdCB2aXNpYmxlIGV4dGVuc2lvbiB0YWJzIGFuZCBmZWVkcyB0aGUgbWFpbiBjb250ZXh0
IG1lbnUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzczoK
KyAgICAgICAgKC5jb250ZW50LXZpZXcubm90LXZpc2libGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuY3NzOgorICAgICAgICAoLmNvbnRlbnQt
dmlldy1jb250YWluZXIgPiAuY29udGVudC12aWV3KToKKyAgICAgICAgKC5jb250ZW50LXZpZXct
Y29udGFpbmVyID4gLmNvbnRlbnQtdmlldy5ub3QtdmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IFRoaXMgc3R5bGUgY2xhc3MgaXMgbm93IG1hbmFnZWQgYnkgQ29udGVudFZpZXcuanMuIFNvLCBt
b3ZlIHRoZSBzdHlsZSBkZWNsYXJhdGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlldyk6CisgICAgICAgIChX
SS5Db250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHZpc2libGUpOgorICAgICAgICAoV0kuQ29udGVu
dFZpZXcucHJvdG90eXBlLnNldCB2aXNpYmxlKToKKyAgICAgICAgQWRkIGEgZmxhZyBzbyB0aGF0
IGNsaWVudHMgY2FuIGRldGVybWluZSB3aGVuIHRoZSBjb250ZW50IHZpZXcgaXMgbm90IHZpc2li
bGUgYW5kIG5vdCBjbG9zZWQuCisgICAgICAgIFRoaXMgY2FuIGJlIHRydWUgaWYgYSBzdWJjbGFz
cyBvdmVycmlkZXMgc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4oKSB0byByZXR1cm4g
dHJ1ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWlu
ZXIuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX2Rpc2Fz
c29jaWF0ZUZyb21Db250ZW50Vmlldyk6CisgICAgICAgIEZpeCB0aGlzIGNvZGUgdG8gbm90IGRl
dGFjaCBleHRlbnNpb24gdGFicyB0aGF0IGFyZSBoaWRkZW4uCisKKyAgICAgICAgKFdJLkNvbnRl
bnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5fc2hvd0VudHJ5KToKKyAgICAgICAgKFdJLkNvbnRl
bnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5faGlkZUVudHJ5KToKKyAgICAgICAgQWRvcHQgbmV3
IHNldHRlciBmb3IgQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlw
ZS5faGFuZGxlQWRkQ2xvc2VkVGFic1RhYkJhckl0ZW1Nb3VzZURvd24pOgorICAgICAgICBEb24n
dCBhZGQgZ2VuZXJpYyBjb250ZXh0IG1lbnUgaXRlbXMgZm9yIFdlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3LiBDYWxsIG91dAorICAgICAgICB0byBXZWJJbnNwZWN0b3JFeHRlbnNp
b25Db250cm9sbGVyIHRvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgZXh0ZW5zaW9uIHRhYiBjb250
ZXh0IG1lbnUgaXRlbXMuCisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVUYWJD
b250YWluZXJDb250ZXh0TWVudSk6CisgICAgICAgIChXSS5UYWJCYXIpOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5q
czoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmlzVGFi
QWxsb3dlZCk6IERyaXZlLWJ5LCBnYXRlIGNyZWF0aW9uIG9mIHRoaXMgY2xhc3MKKyAgICAgICAg
b24gV2ViIEV4dGVuc2lvbnMgYmVpbmcgZW5hYmxlZCAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnN1
cHBvcnRzV2ViRXh0ZW5zaW9ucykuCisKIDIwMjEtMTAtMDcgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFi
Q29udGVudFZpZXcgc2hvdWxkIG5vdCByZWxvYWQgaXRzIGlmcmFtZSB3aGVuIGRldGFjaGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5k
ZXggMDYwN2RhMDllOWRkZDkyY2M4N2Q4ZDc5NWIyOTYxZDJhYjczNTU2ZS4uNzg5NmE0ZGIzZjI3
OTM1YzYxM2VjOTMyMGMyMWE4NDJiZDVjNmRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNjcyLDYgKzY3MiwxMCBAQCBXSS5f
Y3JlYXRlVGFiQ29udGVudFZpZXdGb3JUeXBlID0gZnVuY3Rpb24odGFiVHlwZSkKICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgfQogCisgICAgY29uc29sZS5hc3NlcnQodGFiQ2xhc3MgIT09IFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LCAiRXh0ZW5zaW9uIHRhYnMgbXVz
dCBiZSBjcmVhdGVkIHZpYSBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmNyZWF0ZVRh
YkZvckV4dGVuc2lvbigpLiIpOworICAgIGlmICh0YWJDbGFzcyA9PT0gV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpZXcpCisgICAgICAgIHJldHVybiBudWxsOworCiAgICAgY29u
c29sZS5hc3NlcnQoV0kuVGFiQ29udGVudFZpZXcuaXNQcm90b3R5cGVPZih0YWJDbGFzcykpOwog
ICAgIHJldHVybiBuZXcgdGFiQ2xhc3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKaW5kZXggZWFmMjY5OTJiMTE2
NDZhMDExOGQ0ZWNhMjJhZWY3YzM3ODU1ZWQ3ZC4uMTBhZDk5OWY5NjBiNGM5ZjAxYjg5MmU2ODky
ZmIzMDY2ZjlhZDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNw
ZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC02Niw3ICs2Niw3IEBAIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyIGV4dGVuCiAgICAgICAgIGxldCBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSA9IHRoaXMu
X3RhYklEc0ZvckV4dGVuc2lvbklETWFwLnRha2UoZXh0ZW5zaW9uSUQpIHx8IFtdOwogICAgICAg
ICBmb3IgKGxldCBleHRlbnNpb25UYWJJRCBvZiBleHRlbnNpb25UYWJJRHNUb1JlbW92ZSkgewog
ICAgICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC50YWtlKGV4dGVuc2lvblRhYklEKTsKLSAgICAgICAg
ICAgIFdJLnRhYkJyb3dzZXIuY2xvc2VUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7
CisgICAgICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFiQ29u
dGVudFZpZXcsIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIuRXZlbnQuRXh0ZW5zaW9uUmVtb3ZlZCwge2V4dGVuc2lvbn0pOwpAQCAtODUs
NyArODUsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogCiAgICAgICAgIHRoaXMuX3RhYklE
c0ZvckV4dGVuc2lvbklETWFwLmFkZChleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwogICAg
ICAgICB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFwLnNl
dChleHRlbnNpb25UYWJJRCwgdGFiQ29udGVudFZpZXcpOwotICAgICAgICBXSS50YWJCcm93c2Vy
LmFkZFRhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgV0kudGFiQnJv
d3Nlci5hZGRUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldywge3N1cHByZXNzQW5pbWF0
aW9uczogdHJ1ZX0pOwogCiAgICAgICAgIC8vIFRoZSBjYWxsaW5nIGNvbnZlbnRpb24gaXMgdG8g
cmV0dXJuIGFuIGVycm9yIHN0cmluZyBvciBhIHJlc3VsdCBvYmplY3QuCiAgICAgICAgIHJldHVy
biB7ZXh0ZW5zaW9uVGFiSUR9OwpAQCAtMTY2LDYgKzE2Niw3IEBAIFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
IGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9y
Q29kZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCisgICAgICAgIHRhYkNvbnRlbnRWaWV3
LnZpc2libGUgPSB0cnVlOwogICAgICAgICBsZXQgc3VjY2VzcyA9IFdJLnRhYkJyb3dzZXIuc2hv
d1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCB7CiAgICAgICAgICAgICBpbml0aWF0
b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRnJvbnRlbmRBUEks
CiAgICAgICAgIH0pOwpAQCAtMTc2LDYgKzE3Nyw1MyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRl
bgogICAgICAgICB9CiAgICAgfQogCisgICAgaGlkZUV4dGVuc2lvblRhYihleHRlbnNpb25UYWJJ
RCwgb3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhp
cy5fZXh0ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC5nZXQoZXh0ZW5z
aW9uVGFiSUQpOworICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KSB7CisgICAgICAgICAgICBX
SS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gc2hvdyBleHRlbnNpb24gdGFiIHdpdGgg
dW5rbm93biBleHRlbnNpb25UYWJJRDogIiArIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAg
IHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0
OworICAgICAgICB9CisKKyAgICAgICAgdGFiQ29udGVudFZpZXcudmlzaWJsZSA9IGZhbHNlOwor
ICAgICAgICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZp
ZXcsIG9wdGlvbnMpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0YWJDb250ZW50Vmlldy52
aXNpYmxlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRhYkNvbnRlbnRWaWV3LmlzQ2xvc2Vk
KTsKKyAgICB9CisKKyAgICBhZGRDb250ZXh0TWVudUl0ZW1zRm9yQ2xvc2VkRXh0ZW5zaW9uVGFi
cyhjb250ZXh0TWVudSkKKyAgICB7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRv
cigpOworCisgICAgICAgIGZvciAobGV0IHRhYkNvbnRlbnRWaWV3IG9mIHRoaXMuX2V4dGVuc2lv
blRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAudmFsdWVzKCkpIHsKKyAgICAgICAg
ICAgIC8vIElmIHRoZSBleHRlbnNpb24gdGFiIGhhcyBiZWVuIHVuY2hlY2tlZCBpbiB0aGUgVGFi
QmFyIGNvbnRleHQgbWVudSwgdGhlbiB0aGUgdGFiQmFySXRlbQorICAgICAgICAgICAgLy8gZm9y
IHRoZSBleHRlbnNpb24gdGFiIHdpbGwgbm90IGJlIGNvbm5lY3RlZCB0byBhIHBhcmVudCBUYWJC
YXIuCisgICAgICAgICAgICBsZXQgc2hvdWxkSW5jbHVkZVRhYiA9ICF0YWJDb250ZW50Vmlldy52
aXNpYmxlIHx8ICF0YWJDb250ZW50Vmlldy50YWJCYXJJdGVtLnBhcmVudFRhYkJhcjsKKyAgICAg
ICAgICAgIGlmICghc2hvdWxkSW5jbHVkZVRhYikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbSh0YWJDb250ZW50Vmlldy50YWJJ
bmZvKCkuZGlzcGxheU5hbWUsICgpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dFeHRl
bnNpb25UYWIodGFiQ29udGVudFZpZXcuZXh0ZW5zaW9uVGFiSUQpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhZGRDb250ZXh0TWVudUl0ZW1zRm9yQWxsRXh0ZW5z
aW9uVGFicyhjb250ZXh0TWVudSkKKyAgICB7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNl
cGFyYXRvcigpOworCisgICAgICAgIGZvciAobGV0IHRhYkNvbnRlbnRWaWV3IG9mIHRoaXMuX2V4
dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAudmFsdWVzKCkpIHsKKyAg
ICAgICAgICAgIGxldCBjaGVja2VkID0gdGFiQ29udGVudFZpZXcudmlzaWJsZSB8fCAhIXRhYkNv
bnRlbnRWaWV3LnRhYkJhckl0ZW0ucGFyZW50VGFiQmFyOworICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kQ2hlY2tib3hJdGVtKHRhYkNvbnRlbnRWaWV3LnRhYkluZm8oKS5kaXNwbGF5TmFt
ZSwgKCkgPT4geworICAgICAgICAgICAgICAgIGlmICghY2hlY2tlZCkKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5zaG93RXh0ZW5zaW9uVGFiKHRhYkNvbnRlbnRWaWV3LmV4dGVuc2lvblRhYklE
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUV4
dGVuc2lvblRhYih0YWJDb250ZW50Vmlldy5leHRlbnNpb25UYWJJRCk7CisgICAgICAgICAgICB9
LCBjaGVja2VkKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRl
bnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkKICAgICB7CiAgICAgICAgIGxl
dCB0YWJDb250ZW50VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5z
aW9uVGFiSURNYXAuZ2V0KGV4dGVuc2lvblRhYklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmNzcwppbmRleCA0
OTU3YjZmNzUxMGUzZTQwYzgzMmU0YTJkN2MxZTkyNGVmODMxOTA1Li40MWIwOTgwOWM3MWY3MzYx
Yjk5ZGY0NmRiM2Q4Yzg5MzM1MTkxZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuY3NzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDMgKzY2LDcg
QEAKIC5jb250ZW50LXZpZXcgPiAubWVzc2FnZS10ZXh0LXZpZXcgPiAuZGVzY3JpcHRpb24gewog
ICAgIGxpbmUtaGVpZ2h0OiAyMnB4OwogfQorCisuY29udGVudC12aWV3Lm5vdC12aXNpYmxlIHsK
KyAgICBkaXNwbGF5OiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwppbmRleCBkY2Y3NDQ0NzlkZTkz
YTFiNGQxZDRkN2ZkZWVhYzgxMmEwM2EyYzRhLi41ZDUwZGNjYzI2YmU3YWNiOTczN2ExMmMyMWM0
MmMzOWIzMDE3YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAtMzgsNiArMzgsNyBAQCBXSS5Db250
ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgIHRo
aXMuX3BhcmVudENvbnRhaW5lciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2lzQ2xvc2VkID0gZmFs
c2U7CisgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0
aWMKQEAgLTM0OCw2ICszNDksMTcgQEAgV0kuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50Vmll
dyBleHRlbmRzIFdJLlZpZXcKIAogICAgIGdldCBpc0Nsb3NlZCgpIHsgcmV0dXJuIHRoaXMuX2lz
Q2xvc2VkOyB9CiAKKyAgICBnZXQgdmlzaWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gIXRo
aXMuaXNDbG9zZWQgJiYgdGhpcy5fdmlzaWJsZTsKKyAgICB9CisKKyAgICBzZXQgdmlzaWJsZSh2
YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Zpc2libGUgPSAhIXZhbHVlOworICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibm90LXZpc2libGUiLCAhdGhpcy5fdmlzaWJs
ZSk7CisgICAgfQorCiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250
YWluZXIuanMKaW5kZXggODFkOWY4MGI3OWQ4YWVmZWM0MTA1MTJlYmY2YjdmOTc2YmI3MjY1ZS4u
ZWI0MjhlODEyNGRkNTY4M2ZkYjg2NmM0MjNiZTFhYzBkZWYyMmE2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWlu
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudFZpZXdDb250YWluZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxM+KAkzIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MjEsMTAgKzQyMSwxMSBAQCBXSS5Db250ZW50
Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV0kuVmll
dwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRGVzZWxlY3Rl
ZCBleHRlbnNpb24gdGFicyBhcmUgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIERPTSB2aWEgYHRoaXMu
ZWxlbWVudGAsCi0gICAgICAgIC8vIHNvIHRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGFjdHVh
bGx5IHJlbW92ZSB0aGUgc3VidmlldyBhbmQgZGV0YWNoIGZyb20gdGhlIERPTS4KLSAgICAgICAg
aWYgKGNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZE5vdFJlbW92ZUZyb21ET01XaGVuSGlk
ZGVuKCkgJiYgY29udGVudFZpZXcuaXNBdHRhY2hlZCkKLSAgICAgICAgICAgIHRoaXMucmVtb3Zl
U3Vidmlldyhjb250ZW50Vmlldyk7CisgICAgICAgIC8vIEhpZGRlbi9ub24tdmlzaWJsZSBleHRl
bnNpb24gdGFicyBtdXN0IHJlbWFpbiBhdHRhY2hlZCB0byB0aGUgRE9NIHRvIGF2b2lkIHJlbG9h
ZGluZy4KKyAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yLnNob3VsZE5vdFJlbW92
ZUZyb21ET01XaGVuSGlkZGVuKCkgJiYgIWNvbnRlbnRWaWV3LnZpc2libGUpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KGNvbnRlbnRWaWV3KTsKIAog
ICAgICAgICBjb25zb2xlLmFzc2VydCghY29udGVudFZpZXcuaXNBdHRhY2hlZCk7CiAKQEAgLTQ2
Myw3ICs0NjQsNyBAQCBXSS5Db250ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3
Q29udGFpbmVyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3MuaW5j
bHVkZXMoZW50cnkuY29udGVudFZpZXcpKQogICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KGVu
dHJ5LmNvbnRlbnRWaWV3KTsKICAgICAgICAgZWxzZSBpZiAoZW50cnkuY29udGVudFZpZXcuY29u
c3RydWN0b3Iuc2hvdWxkTm90UmVtb3ZlRnJvbURPTVdoZW5IaWRkZW4oKSkgewotICAgICAgICAg
ICAgZW50cnkuY29udGVudFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4tc2lt
dWxhdGluZy1kb20tZGV0YWNoZWQiKTsKKyAgICAgICAgICAgIGVudHJ5LmNvbnRlbnRWaWV3LnZp
c2libGUgPSB0cnVlOwogICAgICAgICAgICAgZW50cnkuY29udGVudFZpZXcuX2RpZE1vdmVUb1Bh
cmVudCh0aGlzKTsKICAgICAgICAgfQogCkBAIC00ODIsNyArNDgzLDcgQEAgV0kuQ29udGVudFZp
ZXdDb250YWluZXIgPSBjbGFzcyBDb250ZW50Vmlld0NvbnRhaW5lciBleHRlbmRzIFdJLlZpZXcK
ICAgICAgICAgZW50cnkucHJlcGFyZVRvSGlkZSgpOwogICAgICAgICBpZiAodGhpcy5zdWJ2aWV3
cy5pbmNsdWRlcyhlbnRyeS5jb250ZW50VmlldykpIHsKICAgICAgICAgICAgIGlmIChlbnRyeS5j
b250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGROb3RSZW1vdmVGcm9tRE9NV2hlbkhpZGRlbigp
KSB7Ci0gICAgICAgICAgICAgICAgZW50cnkuY29udGVudFZpZXcuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJoaWRkZW4tc2ltdWxhdGluZy1kb20tZGV0YWNoZWQiKTsKKyAgICAgICAgICAgICAgICBl
bnRyeS5jb250ZW50Vmlldy52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZW50cnku
Y29udGVudFZpZXcuX2RpZE1vdmVUb1BhcmVudChudWxsKTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3VidmlldyhlbnRyeS5jb250ZW50Vmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJC
cm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFi
QnJvd3Nlci5qcwppbmRleCA4MDRkM2JiZjEzYTM3MTg5YzNiYzI0NTI1MTE5ZGJjMDFmOTA0NDEy
Li5hNjVmNjc3ZjM1NDlmYTY5NzY3MmNiYjkyOWMzMWEwYmZhNDYyZTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIu
anMKQEAgLTIxMCw4ICsyMTAsOSBAQCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBl
eHRlbmRzIFdJLlZpZXcKIAogICAgICAgICB0aGlzLl90YWJCYXIucmVtb3ZlVGFiQmFySXRlbSh0
YWJDb250ZW50Vmlldy50YWJCYXJJdGVtLCBvcHRpb25zKTsKIAorICAgICAgICBsZXQgc2hvdWxk
U2F2ZVRhYiA9IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmlldz8uY29uc3RydWN0b3Iuc2hvdWxk
U2F2ZVRhYigpIHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmlldz8uY29uc3RydWN0b3Iuc2hv
dWxkUGluVGFiKCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRl
bnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJhci50YWJDb3VudCk7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRh
YkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3NbMF0pOworICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRoaXMuc2Vs
ZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdIHx8
ICFzaG91bGRTYXZlVGFiKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yOTYs
OCArMjk3LDkgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXSS5W
aWV3CiAKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2xvc2VDb250ZW50Vmll
dyh0YWJDb250ZW50Vmlldyk7CiAKKyAgICAgICAgbGV0IHNob3VsZFNhdmVUYWIgPSB0aGlzLnNl
bGVjdGVkVGFiQ29udGVudFZpZXc/LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIoKSB8fCB0aGlz
LnNlbGVjdGVkVGFiQ29udGVudFZpZXc/LmNvbnN0cnVjdG9yLnNob3VsZFBpblRhYigpOwogICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MubGVuZ3RoID09
PSB0aGlzLl90YWJCYXIudGFiQ291bnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5z
ZWxlY3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0g
dGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3c1swXSB8fCAhc2hvdWxkU2F2ZVRhYik7
CiAgICAgfQogCiAgICAgX2hhbmRsZVNpZGViYXJQYW5lbFNlbGVjdGVkKGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcwpp
bmRleCAzNjc2NGFiMmVkNWM2ZDM2ZWFhZWIyZWY2ZjExMmFlZjY0ZTMzYTJiLi4wOGZlMGJlOGNh
NTZiYmVmODBkYjM4ZTE1M2FjNDRjMzBkYzIzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcwpAQCAtNDcsNiArNDcsMTYg
QEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNw
ZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKICAgICAgICAgdGhpcy5fZnJhbWVDb250ZW50RGlk
TG9hZCA9IGZhbHNlOwogICAgIH0KIAorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHNob3Vs
ZFNhdmVUYWIoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBzaG91bGROb3RSZW1vdmVG
cm9tRE9NV2hlbkhpZGRlbigpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHN0YXRpYyBpc1RhYkFs
bG93ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBw
b3J0c1dlYkV4dGVuc2lvbnM7CisgICAgfQorCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZXh0
ZW5zaW9uVGFiSUQoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25UYWJJRDsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>