<?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>49864</bug_id>
          
          <creation_ts>2010-11-20 05:05:48 -0800</creation_ts>
          <short_desc>Web Inspector: refactor ResourceView hierarchy.</short_desc>
          <delta_ts>2010-11-24 02:36:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311918</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-20 05:05:48 -0800</bug_when>
    <thetext>Things that I am planning to do:
- Extract headers rendering from ResourceView into HTTPRequestView and HTTPResponseView;
- Introduce NetworkItemView that would contain tabbed pane. Tabbed pane will contain:
    Request: HTTPRequestView &lt;new, extracted from ResourceView&gt;
    Response: HTTPResponseView &lt;new, extracted from ResourceView&gt;
    Content: ResourceView&apos;s ancestor (SourceView or ImageView or FontView, etc.)
    Cookies: ResourceCookiesView &lt;new, extracted from ResourceView&gt;
    Timeline: ResourceTimelineView &lt;new, mimics Timeline popover in Network panel&gt;
    Size: &lt;will be added in the future&gt;

As a result 
- nasty headersVisible logic will go away
- Network panel, ResourcePanel and Scripts panel will reuse SourceView itself, with no headers business.
- It will be easy to add tabs to the network panel (and resources panel in the future)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312328</commentid>
    <comment_count>1</comment_count>
      <attachid>74550</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-22 07:07:05 -0800</bug_when>
    <thetext>Created attachment 74550
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312852</commentid>
    <comment_count>2</comment_count>
      <attachid>74550</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-11-23 08:09:52 -0800</bug_when>
    <thetext>Comment on attachment 74550
[PATCH] Proposed change.

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

&gt; WebCore/inspector/front-end/CookieItemsView.js:132
&gt;                      if (!pushed) {
&gt;                          pushed = true;
&gt; -                        this._cookies.push(allCookies[i]);
&gt; +                        cookies.push(allCookies[i]);

We&apos;re calculating size for all cookies, not just for given domain, is it the intent? If not, I guess bailing out with break is the way to go instead of using a flag.

&gt; WebCore/inspector/front-end/CookieItemsView.js:182
&gt;              if (addedCookies[cookies[i].name])
&gt; -                continue;
&gt; +            continue;

Wrong indent.

&gt; WebCore/inspector/front-end/CookiesTable.js:89
&gt; +    addCookiesFolder: function(folderName, cookies)
&gt; +    {
&gt; +        this._data.push({cookies: cookies, folderName: folderName});
&gt; +        this._rebuildTable();

So we&apos;re doing a full rebuild upon adding every folder -- is this the intent?

&gt; WebCore/inspector/front-end/CookiesTable.js:116
&gt; +    reset: function()

Where is this used?

&gt; WebCore/inspector/front-end/CookiesTable.js:124
&gt; +        var selectedCookie = this._dataGrid.selectedNode ? this._dataGrid.selectedNode.cookie : null;

You seem to have selectedCookie getter just for this.

&gt; WebCore/inspector/front-end/CookiesTable.js:181
&gt; +            case 0: comparator = localeCompare.bind(this, &quot;name&quot;); break;
&gt; +            case 1: comparator = localeCompare.bind(this, &quot;value&quot;); break;
&gt; +            case 2: comparator = localeCompare.bind(this, &quot;domain&quot;); break;
&gt; +            case 3: comparator = localeCompare.bind(this, &quot;path&quot;); break;
&gt; +            case 4: comparator = expiresCompare; break;
&gt; +            case 5: comparator = numberCompare.bind(this, &quot;size&quot;); break;
&gt; +            case 6: comparator = localeCompare.bind(this, &quot;httpOnly&quot;); break;
&gt; +            case 7: comparator = localeCompare.bind(this, &quot;secure&quot;); break;
&gt; +            default: localeCompare.bind(this, &quot;name&quot;);

I know it&apos;s been there before, so just a sugegstion: DataGrid seems to have been designed to handle symbolic column identifiers, with an unfortunate exception of _editingCommitted(), which brutally abuses column class names and should probably be fixed anyway. Using original cookie field names as a column identifier will spare us for this switch, simplify code in _createGridNode() and make column info initialization in constructor way more readable.

&gt; WebCore/inspector/front-end/CookiesTable.js:198
&gt; +        data[6] = (cookie.httpOnly ? &quot;\u2713&quot; : &quot;&quot;); // Checkmark
&gt; +        data[7] = (cookie.secure ? &quot;\u2713&quot; : &quot;&quot;); // Checkmark

const checkmark = &quot;\u2713&quot;?

&gt; WebCore/inspector/front-end/FileSystemView.js:128
&gt; -        this._tabbedPane.selectTabById(&quot;persistent&quot;);
&gt; +        this._tabbedPane.selectTab(&quot;persistent&quot;);

Did you test FileSystemView? The changes you&apos;ve made to TabbedPane will apparently break it, as it relies on tabs being Elements, not Views.

&gt; WebCore/inspector/front-end/NetworkItemView.js:48
&gt; +    if (this._contentView.hasContent()) {
&gt; +        // Reusing this view, so hide it at first.
&gt; +        this._contentView.visible = false;
&gt; +        this._tabbedPane.appendTab(&quot;content&quot;, WebInspector.UIString(&quot;Content&quot;), this._contentView);
&gt; +    }
&gt; +    this._tabbedPane.appendTab(&quot;cookies&quot;, WebInspector.UIString(&quot;Cookies&quot;), this._cookiesView);

So we&apos;re not showing content tab if there&apos;s no content, yet show cookies all the time -- seems a bit inconsistent.

&gt; WebCore/inspector/front-end/NetworkItemView.js:67
&gt; +            this._isInFallbackSelection = true;
&gt; +            this._tabbedPane.selectTab(&quot;headers&quot;);
&gt; +            delete this._isInFallbackSelection;

Appears to be a bit of hack. Can we rather pass additional parameter along with tab-selected event that signifies whether the selection was a result of user gesture?

&gt; WebCore/inspector/front-end/NetworkItemView.js:85
&gt; +    selectContentTab: function()

Is this still being used?

&gt; WebCore/inspector/front-end/NetworkPanel.js:836
&gt; +            delete this.visibleView;

Redundant, isn&apos;t it?

&gt; WebCore/inspector/front-end/ResourceCookiesView.js:50
&gt; +                this._emptyMsgElement = document.createElement(&quot;div&quot;);
&gt; +                this._emptyMsgElement.className = &quot;storage-empty-view&quot;;
&gt; +                this._emptyMsgElement.textContent = WebInspector.UIString(&quot;This request has no cookies.&quot;);
&gt; +                this.element.appendChild(this._emptyMsgElement);

consider this.element.createChild(&quot;div&quot;, &quot;storage-empty-view&quot;).textContent = WebInspector.UIString(&quot;This request has no cookies.&quot;);

&gt; WebCore/inspector/front-end/ResourceView.js:30
&gt;  WebInspector.ResourceView = function(resource)

Rename to ResourceContentView?

&gt; WebCore/inspector/front-end/SourceView.js:209
&gt;          this.tabbedPane.selectTabById(&quot;local&quot;);

Does this work?

&gt; WebCore/inspector/front-end/StylesSidebarPane.js:117
&gt; +	return;

Huh??

&gt; WebCore/inspector/front-end/TabbedPane.js:53
&gt; +    selectTab: function(id, e)

What&apos;s e? Seems to be unused.

&gt; WebCore/inspector/front-end/TabbedPane.js:60
&gt; +            delete this._currentTab;

Seems to be redundant.

&gt; WebCore/inspector/front-end/networkPanel.css:719
&gt; +    white-space:pre-wrap;

style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312856</commentid>
    <comment_count>3</comment_count>
      <attachid>74550</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-11-23 08:15:58 -0800</bug_when>
    <thetext>Comment on attachment 74550
[PATCH] Proposed change.

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

&gt; WebCore/inspector/front-end/CookiesTable.js:63
&gt; +    columns[0].width = &quot;25%&quot;;
&gt; +    columns[1].title = WebInspector.UIString(&quot;Value&quot;);
&gt; +    columns[1].sortable = true;
&gt; +    columns[1].width = &quot;35%&quot;;
&gt; +    columns[2].title = WebInspector.UIString(&quot;Domain&quot;);
&gt; +    columns[2].sortable = true;
&gt; +    columns[2].width = &quot;7%&quot;;
&gt; +    columns[3].title = WebInspector.UIString(&quot;Path&quot;);
&gt; +    columns[3].sortable = true;
&gt; +    columns[3].width = &quot;8%&quot;;
&gt; +    columns[4].title = WebInspector.UIString(&quot;Expires&quot;);
&gt; +    columns[4].sortable = true;
&gt; +    columns[4].width = &quot;7%&quot;;
&gt; +    columns[5].title = WebInspector.UIString(&quot;Size&quot;);
&gt; +    columns[5].aligned = &quot;right&quot;;
&gt; +    columns[5].sortable = true;
&gt; +    columns[5].width = &quot;8%&quot;;
&gt; +    columns[6].title = WebInspector.UIString(&quot;HTTP&quot;);
&gt; +    columns[6].aligned = &quot;centered&quot;;
&gt; +    columns[6].sortable = true;
&gt; +    columns[6].width = &quot;7%&quot;;
&gt; +    columns[7].title = WebInspector.UIString(&quot;Secure&quot;);
&gt; +    columns[7].aligned = &quot;centered&quot;;
&gt; +    columns[7].sortable = true;
&gt; +    columns[7].width = &quot;8%&quot;;

Percents sum up to 105, I guess that&apos;s the downside of doing this by hands. Did we loose any hope with auto-sizing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312873</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-23 08:49:56 -0800</bug_when>
    <thetext>&gt; We&apos;re calculating size for all cookies, not just for given domain, is it the intent? If not, I guess bailing out with break is the way to go instead of using a flag.
&gt;

Nope, this counter is simply collecting the overhead (i.e. all cookies for all resources per this domain).
 
&gt; &gt; WebCore/inspector/front-end/CookieItemsView.js:182
&gt; &gt;              if (addedCookies[cookies[i].name])
&gt; &gt; -                continue;
&gt; &gt; +            continue;
&gt; 
&gt; Wrong indent.
&gt; 

Done.

&gt; &gt; WebCore/inspector/front-end/CookiesTable.js:89
&gt; &gt; +    addCookiesFolder: function(folderName, cookies)
&gt; &gt; +    {
&gt; &gt; +        this._data.push({cookies: cookies, folderName: folderName});
&gt; &gt; +        this._rebuildTable();
&gt; 
&gt; So we&apos;re doing a full rebuild upon adding every folder -- is this the intent?
&gt; 

Yes, this is easy, should not happen often, preserves proper order.

&gt; &gt; WebCore/inspector/front-end/CookiesTable.js:116
&gt; &gt; +    reset: function()
&gt; 
&gt; Where is this used?
&gt;

Nowhere, nuked!
 
&gt; &gt; WebCore/inspector/front-end/CookiesTable.js:124
&gt; &gt; +        var selectedCookie = this._dataGrid.selectedNode ? this._dataGrid.selectedNode.cookie : null;
&gt; 
&gt; You seem to have selectedCookie getter just for this.
&gt; 

Yep, added it after the usage. Using it now.

&gt; &gt; WebCore/inspector/front-end/CookiesTable.js:181
&gt; &gt; +            case 0: comparator = localeCompare.bind(this, &quot;name&quot;); break;
&gt; &gt; +            case 1: comparator = localeCompare.bind(this, &quot;value&quot;); break;
&gt; &gt; +            case 2: comparator = localeCompare.bind(this, &quot;domain&quot;); break;
&gt; &gt; +            case 3: comparator = localeCompare.bind(this, &quot;path&quot;); break;
&gt; &gt; +            case 4: comparator = expiresCompare; break;
&gt; &gt; +            case 5: comparator = numberCompare.bind(this, &quot;size&quot;); break;
&gt; &gt; +            case 6: comparator = localeCompare.bind(this, &quot;httpOnly&quot;); break;
&gt; &gt; +            case 7: comparator = localeCompare.bind(this, &quot;secure&quot;); break;
&gt; &gt; +            default: localeCompare.bind(this, &quot;name&quot;);
&gt; 
&gt; I know it&apos;s been there before, so just a sugegstion: DataGrid seems to have been designed to handle symbolic column identifiers, with an unfortunate exception of _editingCommitted(), which brutally abuses column class names and should probably be fixed anyway. Using original cookie field names as a column identifier will spare us for this switch, simplify code in _createGridNode() and make column info initialization in constructor way more readable.
&gt; 

Some other time.

&gt; &gt; WebCore/inspector/front-end/CookiesTable.js:198
&gt; &gt; +        data[6] = (cookie.httpOnly ? &quot;\u2713&quot; : &quot;&quot;); // Checkmark
&gt; &gt; +        data[7] = (cookie.secure ? &quot;\u2713&quot; : &quot;&quot;); // Checkmark
&gt; 
&gt; const checkmark = &quot;\u2713&quot;?
&gt; 

Done.

&gt; &gt; WebCore/inspector/front-end/FileSystemView.js:128
&gt; &gt; -        this._tabbedPane.selectTabById(&quot;persistent&quot;);
&gt; &gt; +        this._tabbedPane.selectTab(&quot;persistent&quot;);
&gt; 
&gt; Did you test FileSystemView? The changes you&apos;ve made to TabbedPane will apparently break it, as it relies on tabs being Elements, not Views.
&gt; 

I know. FSV is not working, hidden behind a flag, needs UI mock and review.

&gt; &gt; WebCore/inspector/front-end/NetworkItemView.js:48
&gt; &gt; +    if (this._contentView.hasContent()) {
&gt; &gt; +        // Reusing this view, so hide it at first.
&gt; &gt; +        this._contentView.visible = false;
&gt; &gt; +        this._tabbedPane.appendTab(&quot;content&quot;, WebInspector.UIString(&quot;Content&quot;), this._contentView);
&gt; &gt; +    }
&gt; &gt; +    this._tabbedPane.appendTab(&quot;cookies&quot;, WebInspector.UIString(&quot;Cookies&quot;), this._cookiesView);
&gt; 
&gt; So we&apos;re not showing content tab if there&apos;s no content, yet show cookies all the time -- seems a bit inconsistent.
&gt; 

We maintain existing behavior - no content tab for resources we can&apos;t show content for (redirects, etc.)

&gt; &gt; WebCore/inspector/front-end/NetworkItemView.js:67
&gt; &gt; +            this._isInFallbackSelection = true;
&gt; &gt; +            this._tabbedPane.selectTab(&quot;headers&quot;);
&gt; &gt; +            delete this._isInFallbackSelection;
&gt; 
&gt; Appears to be a bit of hack. Can we rather pass additional parameter along with tab-selected event that signifies whether the selection was a result of user gesture?
&gt; 

Done.

&gt; &gt; WebCore/inspector/front-end/NetworkItemView.js:85
&gt; &gt; +    selectContentTab: function()
&gt; 
&gt; Is this still being used?
&gt; 

Nope, nuked.

&gt; &gt; WebCore/inspector/front-end/NetworkPanel.js:836
&gt; &gt; +            delete this.visibleView;
&gt; 
&gt; Redundant, isn&apos;t it?
&gt; 

It kinda shows the state control flow is in.

&gt; &gt; WebCore/inspector/front-end/ResourceCookiesView.js:50
&gt; &gt; +                this._emptyMsgElement = document.createElement(&quot;div&quot;);
&gt; &gt; +                this._emptyMsgElement.className = &quot;storage-empty-view&quot;;
&gt; &gt; +                this._emptyMsgElement.textContent = WebInspector.UIString(&quot;This request has no cookies.&quot;);
&gt; &gt; +                this.element.appendChild(this._emptyMsgElement);
&gt; 
&gt; consider this.element.createChild(&quot;div&quot;, &quot;storage-empty-view&quot;).textContent = WebInspector.UIString(&quot;This request has no cookies.&quot;);
&gt; 

No way :)

&gt; &gt; WebCore/inspector/front-end/ResourceView.js:30
&gt; &gt;  WebInspector.ResourceView = function(resource)
&gt; 
&gt; Rename to ResourceContentView?
&gt;

It is only content view from the network panel perspective.
 
&gt; &gt; WebCore/inspector/front-end/SourceView.js:209
&gt; &gt;          this.tabbedPane.selectTabById(&quot;local&quot;);
&gt; 
&gt; Does this work?
&gt; 

Nuked as a whole.

&gt; &gt; WebCore/inspector/front-end/StylesSidebarPane.js:117
&gt; &gt; +	return;
&gt; 
&gt; Huh??
&gt; 

That as a temporary measure.

&gt; &gt; WebCore/inspector/front-end/TabbedPane.js:53
&gt; &gt; +    selectTab: function(id, e)
&gt; 
&gt; What&apos;s e? Seems to be unused.
&gt; 
&gt; &gt; WebCore/inspector/front-end/TabbedPane.js:60
&gt; &gt; +            delete this._currentTab;
&gt; 
&gt; Seems to be redundant.
&gt; 

I like this style more.

&gt; &gt; WebCore/inspector/front-end/networkPanel.css:719
&gt; &gt; +    white-space:pre-wrap;
&gt; 
&gt; style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312875</commentid>
    <comment_count>5</comment_count>
      <attachid>74674</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-23 08:53:00 -0800</bug_when>
    <thetext>Created attachment 74674
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313190</commentid>
    <comment_count>6</comment_count>
      <attachid>74674</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-24 02:29:09 -0800</bug_when>
    <thetext>Comment on attachment 74674
[PATCH] Review comments addressed.

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

&gt; WebCore/WebCore.gypi:4435
&gt; +            &apos;inspector/front-end/CookiesTable.js&apos;,

nit: wrong sorting order

&gt; WebCore/WebCore.gypi:4488
&gt; +            &apos;inspector/front-end/ResourceCookiesView.js&apos;,

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313191</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-24 02:36:44 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       WebCore/ChangeLog
        M       WebCore/English.lproj/localizedStrings.js
        M       WebCore/WebCore.gypi
        M       WebCore/WebCore.vcproj/WebCore.vcproj
        M       WebCore/inspector/front-end/CookieItemsView.js
        A       WebCore/inspector/front-end/CookiesTable.js
        M       WebCore/inspector/front-end/FileSystemView.js
        M       WebCore/inspector/front-end/FontView.js
        M       WebCore/inspector/front-end/ImageView.js
        A       WebCore/inspector/front-end/NetworkItemView.js
        M       WebCore/inspector/front-end/NetworkPanel.js
        A       WebCore/inspector/front-end/ResourceCookiesView.js
        A       WebCore/inspector/front-end/ResourceHeadersView.js
        M       WebCore/inspector/front-end/ResourceView.js
        M       WebCore/inspector/front-end/ResourcesPanel.js
        M       WebCore/inspector/front-end/ScriptsPanel.js
        M       WebCore/inspector/front-end/SourceView.js
        M       WebCore/inspector/front-end/TabbedPane.js
        M       WebCore/inspector/front-end/WebKit.qrc
        M       WebCore/inspector/front-end/inspector.css
        M       WebCore/inspector/front-end/inspector.html
        M       WebCore/inspector/front-end/networkPanel.css
Committed r72655</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74550</attachid>
            <date>2010-11-22 07:07:05 -0800</date>
            <delta_ts>2010-11-23 08:53:00 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>resource_view</filename>
            <type>text/plain</type>
            <size>98303</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2I4NzIyZC4uNzZhZTdmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTAgQEAKKzIwMTAtMTEtMjIgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgUmVzb3VyY2VWaWV3
IGhpZXJhcmNoeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5ODY0CisKKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyBzcGxpdHMgUmVzb3VyY2VWaWV3
LmpzIGludG86CisgICAgICAgICAgICBOZXR3b3JrSXRlbVZpZXcuanMgKHRhYmJlZCBwYW5lKQor
ICAgICAgICAgICAgUmVzb3VyY2VIZWFkZXJzVmlldy5qcyAoaGVhZGVyIHRhYikKKyAgICAgICAg
ICAgIFJlc291cmNlQ29va2llc1ZpZXcuanMgKGNvb2tpZXMgdGFiKQorICAgICAgICAgICAgUmVz
b3VyY2VWaWV3LmpzIChiYXNlIGNsYXNzIGZvciBjb250ZW50IHRhYikuCisgICAgICAgIENvb2tp
ZXNUYWJsZSB3YXMgZXh0cmFjdGVkIGZyb20gQ29va2llSXRlbXNWaWV3IGFuZAorICAgICAgICBi
cnVzaGVkIHVwLiBoZWFkZXJzVmlzaWJsZSBmbGFnIGhhcyBiZWVuIHJlbW92ZWQuCisKKyAgICAg
ICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2ll
SXRlbXNWaWV3LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS5yZXNpemUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX3VwZGF0ZVdpdGhDb29raWVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9maWx0ZXJDb29r
aWVzRm9yRG9tYWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJv
dG90eXBlLl9kZWxldGVDb29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1z
Vmlldy5wcm90b3R5cGUuX2RlbGV0ZUJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlja2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVDb29raWVzVGFibGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNpbXBsZUNvb2tpZXNUYWJsZS5wcm90b3R5cGUuc2V0Q29va2llcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2ltcGxlQ29va2llc1RhYmxlLnByb3RvdHlwZS5yZXNpemUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
b2tpZXNUYWJsZS5wcm90b3R5cGUudXBkYXRlV2lkdGhzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db29raWVzVGFibGUucHJvdG90eXBlLnNldENvb2tpZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuYWRkQ29va2llc0ZvbGRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5nZXQgc2VsZWN0ZWRDb29raWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3JlYnVpbGRUYWJs
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5yZXNldCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fcG9wdWxhdGVO
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLl90b3Rh
bFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3Nv
cnRDb29raWVzLmxvY2FsZUNvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNU
YWJsZS5wcm90b3R5cGUuX3NvcnRDb29raWVzLm51bWJlckNvbXBhcmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3NvcnRDb29raWVzLmV4cGlyZXNDb21w
YXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLl9zb3J0
Q29va2llcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5f
Y3JlYXRlR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90
b3R5cGUuX29uRGVsZXRlRnJvbUdyaWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcu
cHJvdG90eXBlLl9zZWxlY3RGaWxlU3lzdGVtVGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5wcm90b3R5cGUuc2VsZWN0VGVtcG9yYXJ5RmlsZVN5c3RlbVRhYik6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGUuaGFzQ29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRm9udFZpZXcucHJvdG90eXBlLl9jcmVhdGVDb250ZW50SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZvbnRWaWV3LnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGUudXBkYXRlRm9udFByZXZpZXdTaXplKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JbWFnZVZpZXcucHJvdG90eXBlLmhhc0NvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkltYWdlVmlldy5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrSXRlbVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtJdGVtVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3LnBy
b3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrSXRlbVZpZXcucHJv
dG90eXBlLl9zZWxlY3RUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmll
dy5wcm90b3R5cGUuX3RhYlNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
SXRlbVZpZXcucHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a0l0ZW1WaWV3LnByb3RvdHlwZS5zZWxlY3RDb250ZW50VGFiKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrUGFuZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQ
YW5lbC5wcm90b3R5cGUucmVmcmVzaFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlLl9zaG93UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX2Nsb3NlVmlzaWJsZVJlc291cmNlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1ZpZXcuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcucHJvdG90eXBlLnNob3cpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qczogQWRkZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hVUkwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUXVl
cnlTdHJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJv
dG90eXBlLl9yZWZyZXNoRm9ybURhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
SGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdFBheWxvYWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUGFybXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl90
b2dnbGVVUkxkZWNvZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
Vmlldy5wcm90b3R5cGUuX2dldEhlYWRlclZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVmcmVz
aFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hIVFRQSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoSGVhZGVycyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcucHJvdG90eXBlLmhhc0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZS5zaG93UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5fc2hvd1Jlc291cmNlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9zaG93U2NyaXB0T3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnNob3cpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLmhpZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oYXNDb250ZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS51cGRhdGVMb2Nh
bENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnNl
bGVjdExvY2FsQ29udGVudFRhYik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGFiYmVkUGFuZS5wcm90b3R5cGUuYXBwZW5kVGFiKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJiZWRQYW5lLnByb3RvdHlwZS5zZWxlY3RUYWIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRhYmJlZFBhbmUucHJvdG90eXBlLl9zaG93VGFiKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJiZWRQYW5lLnByb3RvdHlwZS5faGlkZVRhYik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzczoKKyAgICAgICAgKC53ZWJraXQtbGluZS1ndXR0ZXItYmFja2Ryb3ApOgorICAg
ICAgICAoLnJlc291cmNlLXZpZXcpOgorICAgICAgICAoLnJlc291cmNlLXZpZXcudmlzaWJsZSk6
CisgICAgICAgICgucmVzb3VyY2Utdmlldy5mb250KToKKyAgICAgICAgKC5yZXNvdXJjZS12aWV3
LmltYWdlID4gLmltYWdlKToKKyAgICAgICAgKC5yZXNvdXJjZS12aWV3LmltYWdlID4gLmluZm8p
OgorICAgICAgICAoLnN0b3JhZ2Utdmlldyk6CisgICAgICAgICguc3RvcmFnZS12aWV3IC5kYXRh
LWdyaWQpOgorICAgICAgICAoLnN0b3JhZ2UtZW1wdHktdmlldywgLnN0b3JhZ2UtdmlldyAuc3Rv
cmFnZS10YWJsZS1lcnJvcik6CisgICAgICAgICguc3RvcmFnZS12aWV3IC5zdG9yYWdlLXRhYmxl
LWVycm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNzczoKKyAgICAgICAg
KC5uZXR3b3JrLWNlbGwtc3VidGl0bGUpOgorICAgICAgICAoLm5ldHdvcmstaGVhZGVyLXN1YnRp
dGxlKToKKyAgICAgICAgKCNuZXR3b3JrLXZpZXdzIC5uZXR3b3JrLWl0ZW0tdmlldyAudGFiYmVk
LXBhbmUtaGVhZGVyKToKKyAgICAgICAgKCNuZXR3b3JrLXZpZXdzLnNtYWxsIC5uZXR3b3JrLWl0
ZW0tdmlldyAudGFiYmVkLXBhbmUtaGVhZGVyKToKKyAgICAgICAgKC5uZXR3b3JrLWl0ZW0tdmll
dyk6CisgICAgICAgICgubmV0d29yay1pdGVtLXZpZXcudmlzaWJsZSk6CisgICAgICAgICgubmV0
d29yay1pdGVtLXZpZXcgLnRhYmJlZC1wYW5lLWhlYWRlcik6CisgICAgICAgICgubmV0d29yay1p
dGVtLXZpZXcgLnNjb3BlLWJhciBsaSk6CisgICAgICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3
KToKKyAgICAgICAgKC5yZXNvdXJjZS1oZWFkZXJzLXZpZXcudmlzaWJsZSk6CisgICAgICAgICgu
cmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgLnBhcmVudCk6CisgICAg
ICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgLmNoaWxkcmVu
IGxpKToKKyAgICAgICAgKC5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3Vy
ZSBsaS5leHBhbmRlZCAuaGVhZGVyLWNvdW50KToKKyAgICAgICAgKC5yZXNvdXJjZS1oZWFkZXJz
LXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSAuaGVhZGVyLW5hbWUpOgorICAgICAgICAoLnJlc291
cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIC5oZWFkZXItdmFsdWUpOgorICAg
ICAgICAoLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIC5yYXctZm9y
bS1kYXRhKToKKyAgICAgICAgKC5yZXNvdXJjZS1jb29raWVzLXZpZXcpOgorICAgICAgICAoLnJl
c291cmNlLWNvb2tpZXMtdmlldy52aXNpYmxlKToKKyAgICAgICAgKC5yZXNvdXJjZS1jb29raWVz
LXZpZXcgLmRhdGEtZ3JpZCk6CisgICAgICAgICgucmVzb3VyY2UtY29va2llcy12aWV3IC5kYXRh
LWdyaWQgLnJvdy1ncm91cCk6CisKIDIwMTAtMTEtMjIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPiwgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9FbmdsaXNo
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcwppbmRleCA0ZWIxMWI5Li45YWI4Yzg4IDEwMDY0NApCaW5hcnkgZmlsZXMg
YS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBhbmQgYi9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYWY3ODJhNi4u
NTdhOWE2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTQ0MDksNiArNDQwOSw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Db250ZXh0TWVudS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9D
b29raWVJdGVtc1ZpZXcuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29v
a2llc1RhYmxlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBh
cnNlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NDb21wbGV0aW9u
cy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpz
JywKQEAgLTQ0NDQsNiArNDQ0NSw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9h
cmRTaG9ydGN1dC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNz
U2lkZWJhclBhbmUuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a0l0ZW1WaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24u
anMnLApAQCAtNDQ2MCw2ICs0NDYyLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlQ2F0ZWdvcnkuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VNYW5hZ2VyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
Q29va2llc1ZpZXcuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VIZWFkZXJzVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNp
ZGViYXJQYW5lLmpzJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDlj
Y2U2YmIuLjQ3YWRmYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NjQyOTgsNiArNjQyOTgsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29va2llc1RhYmxlLmpz
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29va2llUGFyc2VyLmpzIg0KIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQpAQCAtNjQ0NTQsNiArNjQ0NTgsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcTmV0
d29ya0l0ZW1WaWV3LmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcTmV0d29ya1BhbmVsLmpzIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtNjQ1MTgsNiArNjQ1MjYsMTQgQEAKIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcUmVzb3VyY2VDb29raWVzVmlldy5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XFJlc291cmNlSGVhZGVyc1ZpZXcuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZp
bGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZU1h
bmFnZXIuanMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRleCBiMmRhODc1Li4xZmVhZTAzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKQEAgLTI3
LDE0OSArMjcsMTkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvb2tpZXNU
YWJsZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwot
Ci0gICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRhYmxlIik7Ci19Ci0KLVdlYkluc3Bl
Y3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlID0gewotICAgIHJlc2l6ZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAodGhpcy5fYXV0b1NpemluZ0RvbmUpCi0gICAgICAgICAgICB0aGlzLl9k
YXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aGlz
Ll9hdXRvU2l6aW5nRG9uZSA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5hdXRv
U2l6ZUNvbHVtbnMoNCwgNDUsIDEpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9jcmVhdGVE
YXRhR3JpZDogZnVuY3Rpb24oZXhwYW5kYWJsZSkKLSAgICB7Ci0gICAgICAgIHZhciBjb2x1bW5z
ID0geyAwOiB7fSwgMToge30sIDI6IHt9LCAzOiB7fSwgNDoge30sIDU6IHt9LCA2OiB7fSwgNzog
e30gfTsKLSAgICAgICAgY29sdW1uc1swXS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TmFtZSIpOwotICAgICAgICBjb2x1bW5zWzBdLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgY29s
dW1uc1swXS5kaXNjbG9zdXJlID0gZXhwYW5kYWJsZTsKLSAgICAgICAgY29sdW1uc1sxXS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKTsKLSAgICAgICAgY29sdW1uc1sxXS5z
b3J0YWJsZSA9IHRydWU7Ci0gICAgICAgIGNvbHVtbnNbMl0udGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRvbWFpbiIpOwotICAgICAgICBjb2x1bW5zWzJdLnNvcnRhYmxlID0gdHJ1ZTsK
LSAgICAgICAgY29sdW1uc1szXS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF0aCIp
OwotICAgICAgICBjb2x1bW5zWzNdLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgY29sdW1uc1s0
XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXhwaXJlcyIpOwotICAgICAgICBjb2x1
bW5zWzRdLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgY29sdW1uc1s1XS50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpOwotICAgICAgICBjb2x1bW5zWzVdLmFsaWduZWQgPSAi
cmlnaHQiOwotICAgICAgICBjb2x1bW5zWzVdLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgY29s
dW1uc1s2XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSFRUUCIpOwotICAgICAgICBj
b2x1bW5zWzZdLmFsaWduZWQgPSAiY2VudGVyZWQiOwotICAgICAgICBjb2x1bW5zWzZdLnNvcnRh
YmxlID0gdHJ1ZTsKLSAgICAgICAgY29sdW1uc1s3XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2VjdXJlIik7Ci0gICAgICAgIGNvbHVtbnNbN10uYWxpZ25lZCA9ICJjZW50ZXJlZCI7
Ci0gICAgICAgIGNvbHVtbnNbN10uc29ydGFibGUgPSB0cnVlOwotCi0gICAgICAgIHZhciBkZWxl
dGVDYWxsYmFjayA9IHRoaXMuX2RlbGV0ZUNvb2tpZUNhbGxiYWNrID8gdGhpcy5fZGVsZXRlQ29v
a2llQ2FsbGJhY2suYmluZCh0aGlzKSA6IG51bGw7Ci0gICAgICAgIHRoaXMuX2RhdGFHcmlkID0g
bmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zLCBudWxsLCBkZWxldGVDYWxsYmFjayk7
Ci0gICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdl
ZCIsIHRoaXMuX3BvcHVsYXRlRGF0YUdyaWQsIHRoaXMpOwotICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7Ci0gICAgfSwKLQotICAgIF9wb3B1
bGF0ZUNvb2tpZXM6IGZ1bmN0aW9uKHBhcmVudE5vZGUsIGNvb2tpZXMpCi0gICAgewotICAgICAg
ICB2YXIgc2VsZWN0ZWRDb29raWUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUgPyB0aGlz
Ll9kYXRhR3JpZC5zZWxlY3RlZE5vZGUuY29va2llIDogbnVsbDsKLSAgICAgICAgcGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICBpZiAoIWNvb2tpZXMpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHRoaXMuX3NvcnRDb29raWVzKGNvb2tpZXMpOwotICAgICAgICB2YXIg
dG90YWxTaXplID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY29va2llTm9kZSA9IHRoaXMuX2NyZWF0ZUdyaWRO
b2RlKGNvb2tpZXNbaV0pOwotICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChjb29r
aWVOb2RlKTsKLSAgICAgICAgICAgIGlmIChzZWxlY3RlZENvb2tpZSA9PT0gY29va2llc1tpXSkK
LSAgICAgICAgICAgICAgICBjb29raWVOb2RlLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0sCi0KLSAgICBfc29ydENvb2tpZXM6IGZ1bmN0aW9uKGNvb2tpZXMpCi0gICAgewotICAg
ICAgICB2YXIgc29ydERpcmVjdGlvbiA9IHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFz
Y2VuZGluZyIgPyAxIDogLTE7Ci0KLSAgICAgICAgZnVuY3Rpb24gbG9jYWxlQ29tcGFyZShmaWVs
ZCwgY29va2llMSwgY29va2llMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNvcnRE
aXJlY3Rpb24gKiAoY29va2llMVtmaWVsZF0gKyAiIikubG9jYWxlQ29tcGFyZShjb29raWUyW2Zp
ZWxkXSArICIiKQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbnVtYmVyQ29tcGFyZShm
aWVsZCwgY29va2llMSwgY29va2llMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNv
cnREaXJlY3Rpb24gKiAoY29va2llMVtmaWVsZF0gLSBjb29raWUyW2ZpZWxkXSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBleHBpcmVzQ29tcGFyZShjb29raWUxLCBjb29raWUyKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29va2llMS5zZXNzaW9uICE9PSBjb29raWUyLnNl
c3Npb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnREaXJlY3Rpb24gKiAoY29va2llMS5z
ZXNzaW9uID8gMSA6IC0xKTsKLQotICAgICAgICAgICAgaWYgKGNvb2tpZTEuc2Vzc2lvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICAgICAgcmV0dXJuIHNvcnREaXJlY3Rp
b24gKiAoY29va2llMS5leHBpcmVzIC0gY29va2llMi5leHBpcmVzKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciBjb21wYXJhdG9yOwotICAgICAgICBzd2l0Y2ggKHBhcnNlSW50KHRoaXMuX2Rh
dGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyKSkgewotICAgICAgICAgICAgY2FzZSAwOiBjb21w
YXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJuYW1lIik7IGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSAxOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJ2YWx1
ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMjogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBh
cmUuYmluZCh0aGlzLCAiZG9tYWluIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAzOiBjb21w
YXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJwYXRoIik7IGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSA0OiBjb21wYXJhdG9yID0gZXhwaXJlc0NvbXBhcmU7IGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSA1OiBjb21wYXJhdG9yID0gbnVtYmVyQ29tcGFyZS5iaW5kKHRoaXMsICJzaXpl
Iik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSA2OiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFy
ZS5iaW5kKHRoaXMsICJodHRwT25seSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgNzogY29t
cGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAic2VjdXJlIik7IGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDogbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJuYW1lIik7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb29raWVzLnNvcnQoY29tcGFyYXRvcik7Ci0gICAgfSwKLQotICAg
IF9jcmVhdGVHcmlkTm9kZTogZnVuY3Rpb24oY29va2llKQotICAgIHsKLSAgICAgICAgdmFyIGRh
dGEgPSB7fTsKLSAgICAgICAgZGF0YVswXSA9IGNvb2tpZS5uYW1lOwotICAgICAgICBkYXRhWzFd
ID0gY29va2llLnZhbHVlOwotICAgICAgICBkYXRhWzJdID0gY29va2llLmRvbWFpbiB8fCAiIjsK
LSAgICAgICAgZGF0YVszXSA9IGNvb2tpZS5wYXRoIHx8ICIiOwotICAgICAgICBkYXRhWzRdID0g
Y29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db29raWUuVHlwZS5SZXF1ZXN0ID8gIiIgOgot
ICAgICAgICAgICAgKGNvb2tpZS5zZXNzaW9uID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXNz
aW9uIikgOiBuZXcgRGF0ZShjb29raWUuZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7Ci0gICAgICAg
IGRhdGFbNV0gPSBjb29raWUuc2l6ZTsKLSAgICAgICAgZGF0YVs2XSA9IChjb29raWUuaHR0cE9u
bHkgPyAiXHUyNzEzIiA6ICIiKTsgLy8gQ2hlY2ttYXJrCi0gICAgICAgIGRhdGFbN10gPSAoY29v
a2llLnNlY3VyZSA/ICJcdTI3MTMiIDogIiIpOyAvLyBDaGVja21hcmsKLQotICAgICAgICB2YXIg
bm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEpOwotICAgICAgICBub2Rl
LmNvb2tpZSA9IGNvb2tpZTsKLSAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwotCiBXZWJJ
bnNwZWN0b3IuQ29va2llSXRlbXNWaWV3ID0gZnVuY3Rpb24odHJlZUVsZW1lbnQsIGNvb2tpZURv
bWFpbikKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLmNhbGwodGhpcyk7CisgICAg
V2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJzdG9yYWdlLXZpZXciKTsKIAotICAgIHRoaXMuZGVsZXRlQnV0dG9uID0gbmV3IFdl
Ykluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUi
KSwgImRlbGV0ZS1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOwotICAgIHRoaXMuZGVsZXRlQnV0
dG9uLnZpc2libGUgPSBmYWxzZTsKLSAgICB0aGlzLmRlbGV0ZUJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2RlbGV0ZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2Up
OworICAgIHRoaXMuX2RlbGV0ZUJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0
dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIiksICJkZWxldGUtc3RvcmFnZS1zdGF0
dXMtYmFyLWl0ZW0iKTsKKyAgICB0aGlzLl9kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOwor
ICAgIHRoaXMuX2RlbGV0ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2Rl
bGV0ZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworCisgICAgdGhpcy5fcmVmcmVz
aEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVmcmVzaCIpLCAicmVmcmVzaC1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOwor
ICAgIHRoaXMuX3JlZnJlc2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9y
ZWZyZXNoQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICB0aGlzLnJlZnJl
c2hCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlZnJlc2giKSwgInJlZnJlc2gtc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsK
LSAgICB0aGlzLnJlZnJlc2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9y
ZWZyZXNoQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgCiAgICAgdGhpcy5f
dHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKICAgICB0aGlzLl9jb29raWVEb21haW4gPSBjb29r
aWVEb21haW47CiAKQEAgLTE4Miw3ICs1Miw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1Zp
ZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVudCwgY29va2llRG9tYWluKQogV2ViSW5zcGVjdG9yLkNv
b2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5yZWZyZXNoQnV0dG9uLmVsZW1lbnQsIHRoaXMuZGVs
ZXRlQnV0dG9uLmVsZW1lbnRdOworICAgICAgICByZXR1cm4gW3RoaXMuX3JlZnJlc2hCdXR0b24u
ZWxlbWVudCwgdGhpcy5fZGVsZXRlQnV0dG9uLmVsZW1lbnRdOwogICAgIH0sCiAKICAgICBzaG93
OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQpAQCAtMTk0LDcgKzY0LDEzIEBAIFdlYkluc3BlY3Rv
ci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgIGhpZGU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5oaWRlLmNhbGwodGhpcyk7
Ci0gICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5fZGVsZXRlQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKKyAgICB9LAorCisgICAgcmVzaXplOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY29va2llc1RhYmxlKQorICAgICAg
ICAgICAgdGhpcy5fY29va2llc1RhYmxlLnVwZGF0ZVdpZHRocygpOwogICAgIH0sCiAKICAgICBf
dXBkYXRlOiBmdW5jdGlvbigpCkBAIC0yMDQsNDcgKzgwLDM1IEBAIFdlYkluc3BlY3Rvci5Db29r
aWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3VwZGF0ZVdpdGhDb29raWVzOiBmdW5j
dGlvbihhbGxDb29raWVzLCBpc0FkdmFuY2VkKQogICAgIHsKLSAgICAgICAgaWYgKGlzQWR2YW5j
ZWQpCi0gICAgICAgICAgICB0aGlzLl9maWx0ZXJDb29raWVzRm9yRG9tYWluKGFsbENvb2tpZXMp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9jb29raWVzID0gYWxsQ29va2llczsK
KyAgICAgICAgdGhpcy5fY29va2llcyA9IGlzQWR2YW5jZWQgPyB0aGlzLl9maWx0ZXJDb29raWVz
Rm9yRG9tYWluKGFsbENvb2tpZXMpIDogYWxsQ29va2llczsKKwogICAgICAgICBpZiAoIXRoaXMu
X2Nvb2tpZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIHNob3cuCiAgICAg
ICAgICAgICB0aGlzLl9lbXB0eU1zZ0VsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7
Ci0gICAgICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxlID0gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAodGhpcy5fZGF0YUdyaWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHRoaXMuX2RlbGV0
ZUJ1dHRvbi52aXNpYmxlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodGhpcy5fY29va2llc1Rh
YmxlKQorICAgICAgICAgICAgICAgIHRoaXMuX2Nvb2tpZXNUYWJsZS5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImhpZGRlbiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkgewotICAgICAgICAgICAgaWYgKGlzQWR2YW5jZWQpIHsK
LSAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEYXRhR3JpZCgpOwotICAgICAgICAgICAgICAg
IHRoaXMuX3BvcHVsYXRlRGF0YUdyaWQoKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5hdXRvU2l6ZUNvbHVtbnMoNiwgMzMpOwotICAgICAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVt
ZW50LnN1YnRpdGxlID0gU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBj
b29raWVzICglcykiKSwgdGhpcy5fY29va2llcy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAg
IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3RvdGFsU2l6ZSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0
ZVNpbXBsZURhdGFHcmlkKCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTaW1wbGVE
YXRhR3JpZCgpOwotICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmF1dG9TaXplQ29sdW1u
cygyMCwgODApOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aWYgKGlzQWR2YW5jZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVEYXRhR3JpZCgp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU2ltcGxl
RGF0YUdyaWQoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9jb29raWVzVGFibGUpIHsKKyAgICAgICAg
ICAgIHRoaXMuX2Nvb2tpZXNUYWJsZSA9IGlzQWR2YW5jZWQgPyBuZXcgV2ViSW5zcGVjdG9yLkNv
b2tpZXNUYWJsZSh0aGlzLl9jb29raWVEb21haW4sIGZhbHNlLCB0aGlzLl9kZWxldGVDb29raWUu
YmluZCh0aGlzKSkgOiBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNUYWJsZSgpOworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nvb2tpZXNUYWJsZS5lbGVt
ZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQucmVtb3Zl
U3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHRoaXMuX2Nvb2tpZXNUYWJsZS5zZXRDb29r
aWVzKHRoaXMuX2Nvb2tpZXMpOworICAgICAgICB0aGlzLl9jb29raWVzVGFibGUuZWxlbWVudC5y
ZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgdGhpcy5fZW1wdHlNc2dFbGVtZW50
LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICBpZiAoaXNBZHZhbmNlZCkKLSAgICAg
ICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0cnVlOworICAgICAgICBpZiAoaXNB
ZHZhbmNlZCkgeworICAgICAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnQuc3VidGl0bGUgPSBTdHJp
bmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIGNvb2tpZXMgKCVzKSIpLCB0aGlz
Ll9jb29raWVzLmxlbmd0aCwKKyAgICAgICAgICAgICAgICBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0
aGlzLl90b3RhbFNpemUsIFdlYkluc3BlY3Rvci5VSVN0cmluZykpOworICAgICAgICAgICAgdGhp
cy5fZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0cnVlOworICAgICAgICB9CiAgICAgfSwKIAogICAg
IF9maWx0ZXJDb29raWVzRm9yRG9tYWluOiBmdW5jdGlvbihhbGxDb29raWVzKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fY29va2llcyA9IFtdOworICAgICAgICB2YXIgY29va2llcyA9IFtdOwogICAg
ICAgICB2YXIgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwgPSBbXTsKICAgICAgICAgdGhpcy5f
dG90YWxTaXplID0gMDsKIApAQCAtMjY1LDM5ICsxMjksNTcgQEAgV2ViSW5zcGVjdG9yLkNvb2tp
ZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvdGFs
U2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXB1c2hlZCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX2Nvb2tpZXMucHVzaChhbGxDb29raWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvb2tpZXMucHVzaChhbGxDb29raWVzW2ldKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICByZXR1
cm4gY29va2llczsKICAgICB9LAogCi0gICAgX3BvcHVsYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkK
KyAgICBfZGVsZXRlQ29va2llOiBmdW5jdGlvbihjb29raWUpCiAgICAgewotICAgICAgICB0aGlz
Ll9wb3B1bGF0ZUNvb2tpZXModGhpcy5fZGF0YUdyaWQsIHRoaXMuX2Nvb2tpZXMpOworICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLmRlbGV0ZUNvb2tpZShjb29raWUubmFtZSwgdGhpcy5fY29va2ll
RG9tYWluKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlKCk7CiAgICAgfSwKIAotICAgIF9jcmVhdGVT
aW1wbGVEYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9kZWxldGVCdXR0b25DbGlja2VkOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB2YXIgY29sdW1ucyA9IHt9OwotICAgICAgICBjb2x1bW5z
WzBdID0ge307Ci0gICAgICAgIGNvbHVtbnNbMV0gPSB7fTsKLSAgICAgICAgY29sdW1uc1swXS50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmFtZSIpOwotICAgICAgICBjb2x1bW5zWzFd
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIpOwotCi0gICAgICAgIHRoaXMu
X2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKLSAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwotICAgICAg
ICB0aGlzLl9kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKKyAgICAgICAgaWYgKHRoaXMuX2Nvb2tp
ZXNUYWJsZS5zZWxlY3RlZENvb2tpZSkKKyAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUNvb2tpZSh0
aGlzLl9jb29raWVzVGFibGUuc2VsZWN0ZWRDb29raWUpOwogICAgIH0sCiAKLSAgICBfcG9wdWxh
dGVTaW1wbGVEYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoQnV0dG9uQ2xpY2tlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl91cGRhdGUoKTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNU
YWJsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICB2YXIgY29sdW1ucyA9IHt9OworICAgIGNvbHVtbnNbMF0gPSB7
fTsKKyAgICBjb2x1bW5zWzFdID0ge307CisgICAgY29sdW1uc1swXS50aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTmFtZSIpOworICAgIGNvbHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlZhbHVlIik7CisKKyAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7CisgICAgdGhpcy5fZGF0YUdyaWQuYXV0b1NpemVDb2x1
bW5zKDIwLCA4MCk7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOworICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOworfQorCitXZWJJ
bnNwZWN0b3IuU2ltcGxlQ29va2llc1RhYmxlLnByb3RvdHlwZSA9IHsKKyAgICBzZXRDb29raWVz
OiBmdW5jdGlvbihjb29raWVzKQogICAgIHsKLSAgICAgICAgdmFyIGNvb2tpZXMgPSB0aGlzLl9j
b29raWVzOwogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAg
ICB2YXIgYWRkZWRDb29raWVzID0ge307CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29v
a2llcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKGFkZGVkQ29va2llc1tjb29raWVz
W2ldLm5hbWVdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBhZGRlZENvb2tpZXNbY29va2llc1tpXS5uYW1lXSA9IHRydWU7CiAg
ICAgICAgICAgICB2YXIgZGF0YSA9IHt9OwogICAgICAgICAgICAgZGF0YVswXSA9IGNvb2tpZXNb
aV0ubmFtZTsKQEAgLTMxMCwyNiArMTkyLDkgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdLnNlbGVj
dGVkID0gdHJ1ZTsKICAgICB9LAogCi0gICAgX2RlbGV0ZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9u
KGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCB8fCAhdGhpcy5fZGF0
YUdyaWQuc2VsZWN0ZWROb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMu
X2RlbGV0ZUNvb2tpZUNhbGxiYWNrKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSk7Ci0gICAg
fSwKLQotICAgIF9kZWxldGVDb29raWVDYWxsYmFjazogZnVuY3Rpb24obm9kZSkKLSAgICB7Ci0g
ICAgICAgIHZhciBjb29raWUgPSBub2RlLmNvb2tpZTsKLSAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHRoaXMuX2Nvb2tpZURvbWFpbik7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZSgpOwotICAgIH0sCi0KLSAgICBfcmVmcmVzaEJ1dHRvbkNsaWNrZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHJlc2l6ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhp
cy5fdXBkYXRlKCk7CisgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKKyAgICAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOwogICAgIH0KIH0KLQotV2ViSW5zcGVjdG9yLkNv
b2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvb2tpZXNU
YWJsZS5wcm90b3R5cGU7Ci0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVzVGFibGUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1Rh
YmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOTZiMWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpz
CkBAIC0wLDAgKzEsMjEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29y
YXJvCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlID0gZnVuY3Rpb24oY29va2llRG9tYWluLCBleHBh
bmRhYmxlLCBkZWxldGVDYWxsYmFjaykKK3sKKyAgICB0aGlzLl9jb29raWVEb21haW4gPSBjb29r
aWVEb21haW47CisKKyAgICB2YXIgY29sdW1ucyA9IHsgMDoge30sIDE6IHt9LCAyOiB7fSwgMzog
e30sIDQ6IHt9LCA1OiB7fSwgNjoge30sIDc6IHt9IH07CisgICAgY29sdW1uc1swXS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmFtZSIpOworICAgIGNvbHVtbnNbMF0uc29ydGFibGUg
PSB0cnVlOworICAgIGNvbHVtbnNbMF0uZGlzY2xvc3VyZSA9IGV4cGFuZGFibGU7CisgICAgY29s
dW1uc1swXS53aWR0aCA9ICIyNSUiOworICAgIGNvbHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlZhbHVlIik7CisgICAgY29sdW1uc1sxXS5zb3J0YWJsZSA9IHRydWU7Cisg
ICAgY29sdW1uc1sxXS53aWR0aCA9ICIzNSUiOworICAgIGNvbHVtbnNbMl0udGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRvbWFpbiIpOworICAgIGNvbHVtbnNbMl0uc29ydGFibGUgPSB0
cnVlOworICAgIGNvbHVtbnNbMl0ud2lkdGggPSAiNyUiOworICAgIGNvbHVtbnNbM10udGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhdGgiKTsKKyAgICBjb2x1bW5zWzNdLnNvcnRhYmxl
ID0gdHJ1ZTsKKyAgICBjb2x1bW5zWzNdLndpZHRoID0gIjglIjsKKyAgICBjb2x1bW5zWzRdLnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBpcmVzIik7CisgICAgY29sdW1uc1s0XS5z
b3J0YWJsZSA9IHRydWU7CisgICAgY29sdW1uc1s0XS53aWR0aCA9ICI3JSI7CisgICAgY29sdW1u
c1s1XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpOworICAgIGNvbHVtbnNb
NV0uYWxpZ25lZCA9ICJyaWdodCI7CisgICAgY29sdW1uc1s1XS5zb3J0YWJsZSA9IHRydWU7Cisg
ICAgY29sdW1uc1s1XS53aWR0aCA9ICI4JSI7CisgICAgY29sdW1uc1s2XS50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSFRUUCIpOworICAgIGNvbHVtbnNbNl0uYWxpZ25lZCA9ICJjZW50
ZXJlZCI7CisgICAgY29sdW1uc1s2XS5zb3J0YWJsZSA9IHRydWU7CisgICAgY29sdW1uc1s2XS53
aWR0aCA9ICI3JSI7CisgICAgY29sdW1uc1s3XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2VjdXJlIik7CisgICAgY29sdW1uc1s3XS5hbGlnbmVkID0gImNlbnRlcmVkIjsKKyAgICBj
b2x1bW5zWzddLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICBjb2x1bW5zWzddLndpZHRoID0gIjglIjsK
KworICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5z
LCBudWxsLCBkZWxldGVDYWxsYmFjayA/IHRoaXMuX29uRGVsZXRlRnJvbUdyaWQuYmluZCh0aGlz
KSA6IG51bGwpOworICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcg
Y2hhbmdlZCIsIHRoaXMuX3JlYnVpbGRUYWJsZSwgdGhpcyk7CisKKyAgICB0aGlzLmVsZW1lbnQg
PSB0aGlzLl9kYXRhR3JpZC5lbGVtZW50OworICAgIHRoaXMuX2RhdGEgPSBbXTsKKyAgICB0aGlz
Ll9kZWxldGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNrOworfQorCitXZWJJbnNwZWN0b3IuQ29v
a2llc1RhYmxlLnByb3RvdHlwZSA9IHsKKyAgICB1cGRhdGVXaWR0aHM6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKKyAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnVwZGF0ZVdpZHRocygpOworICAgIH0sCisKKyAgICBzZXRDb29raWVzOiBmdW5jdGlvbihj
b29raWVzKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGF0YSA9IFt7Y29va2llczogY29va2llc31d
OworICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKKyAgICB9LAorCisgICAgYWRkQ29va2ll
c0ZvbGRlcjogZnVuY3Rpb24oZm9sZGVyTmFtZSwgY29va2llcykKKyAgICB7CisgICAgICAgIHRo
aXMuX2RhdGEucHVzaCh7Y29va2llczogY29va2llcywgZm9sZGVyTmFtZTogZm9sZGVyTmFtZX0p
OworICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKKyAgICB9LAorCisgICAgZ2V0IHNlbGVj
dGVkQ29va2llKCkKKyAgICB7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5fZGF0YUdyaWQuc2Vs
ZWN0ZWROb2RlOworICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUuY29va2llIDogbnVsbDsKKyAg
ICB9LAorCisgICAgX3JlYnVpbGRUYWJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9kYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMu
X2RhdGFbaV07CisgICAgICAgICAgICBpZiAoaXRlbS5mb2xkZXJOYW1lKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGdyb3VwRGF0YSA9IFsgaXRlbS5mb2xkZXJOYW1lLCAiIiwgIiIsICIiLCAiIiwg
dGhpcy5fdG90YWxTaXplKGl0ZW0uY29va2llcyksICIiLCAiIiBdOworICAgICAgICAgICAgICAg
IHZhciBncm91cE5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShncm91cERhdGEp
OworICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChncm91cE5vZGUpOworICAgICAgICAg
ICAgICAgIGdyb3VwTm9kZS5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJvdy1ncm91cCIpOworICAg
ICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlTm9kZShncm91cE5vZGUsIGl0ZW0uY29va2llcyk7
CisgICAgICAgICAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZCgpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVOb2RlKHRoaXMuX2RhdGFHcmlkLCBpdGVt
LmNvb2tpZXMpOworICAgICAgICB9CisgICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0
aGlzLl9kYXRhID0gW107CisgICAgfSwKKworICAgIF9wb3B1bGF0ZU5vZGU6IGZ1bmN0aW9uKHBh
cmVudE5vZGUsIGNvb2tpZXMpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWRDb29raWUgPSB0
aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUgPyB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUu
Y29va2llIDogbnVsbDsKKyAgICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZHJlbigpOworICAg
ICAgICBpZiAoIWNvb2tpZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
c29ydENvb2tpZXMoY29va2llcyk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2ll
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNvb2tpZU5vZGUgPSB0aGlzLl9jcmVh
dGVHcmlkTm9kZShjb29raWVzW2ldKTsKKyAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hp
bGQoY29va2llTm9kZSk7CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDb29raWUgPT09IGNvb2tp
ZXNbaV0pCisgICAgICAgICAgICAgICAgY29va2llTm9kZS5zZWxlY3RlZCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgX3RvdGFsU2l6ZTogZnVuY3Rpb24oY29va2llcykKKyAgICB7
CisgICAgICAgIHZhciB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgY29v
a2llcyAmJiBpIDwgY29va2llcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAr
PSBjb29raWVzW2ldLnNpemU7CisgICAgICAgIHJldHVybiB0b3RhbFNpemU7CisgICAgfSwKKwor
ICAgIF9zb3J0Q29va2llczogZnVuY3Rpb24oY29va2llcykKKyAgICB7CisgICAgICAgIHZhciBz
b3J0RGlyZWN0aW9uID0gdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIiA/
IDEgOiAtMTsKKworICAgICAgICBmdW5jdGlvbiBsb2NhbGVDb21wYXJlKGZpZWxkLCBjb29raWUx
LCBjb29raWUyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAq
IChjb29raWUxW2ZpZWxkXSArICIiKS5sb2NhbGVDb21wYXJlKGNvb2tpZTJbZmllbGRdICsgIiIp
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBudW1iZXJDb21wYXJlKGZpZWxkLCBjb29r
aWUxLCBjb29raWUyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlv
biAqIChjb29raWUxW2ZpZWxkXSAtIGNvb2tpZTJbZmllbGRdKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGV4cGlyZXNDb21wYXJlKGNvb2tpZTEsIGNvb2tpZTIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChjb29raWUxLnNlc3Npb24gIT09IGNvb2tpZTIuc2Vzc2lvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLnNlc3Npb24gPyAx
IDogLTEpOworCisgICAgICAgICAgICBpZiAoY29va2llMS5zZXNzaW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29r
aWUxLmV4cGlyZXMgLSBjb29raWUyLmV4cGlyZXMpOworICAgICAgICB9CisKKyAgICAgICAgdmFy
IGNvbXBhcmF0b3I7CisgICAgICAgIHN3aXRjaCAocGFyc2VJbnQodGhpcy5fZGF0YUdyaWQuc29y
dENvbHVtbklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICBjYXNlIDA6IGNvbXBhcmF0b3IgPSBs
b2NhbGVDb21wYXJlLmJpbmQodGhpcywgIm5hbWUiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDE6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInZhbHVlIik7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAyOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRo
aXMsICJkb21haW4iKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IGNvbXBhcmF0b3IgPSBs
b2NhbGVDb21wYXJlLmJpbmQodGhpcywgInBhdGgiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDQ6IGNvbXBhcmF0b3IgPSBleHBpcmVzQ29tcGFyZTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDU6IGNvbXBhcmF0b3IgPSBudW1iZXJDb21wYXJlLmJpbmQodGhpcywgInNpemUiKTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDY6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhp
cywgImh0dHBPbmx5Iik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBjb21wYXJhdG9yID0g
bG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJzZWN1cmUiKTsgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OiBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgIm5hbWUiKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvb2tpZXMuc29ydChjb21wYXJhdG9yKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZUdy
aWROb2RlOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICB2YXIgZGF0YSA9IHt9Owor
ICAgICAgICBkYXRhWzBdID0gY29va2llLm5hbWU7CisgICAgICAgIGRhdGFbMV0gPSBjb29raWUu
dmFsdWU7CisgICAgICAgIGRhdGFbMl0gPSBjb29raWUuZG9tYWluIHx8ICIiOworICAgICAgICBk
YXRhWzNdID0gY29va2llLnBhdGggfHwgIiI7CisgICAgICAgIGRhdGFbNF0gPSBjb29raWUudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLkNvb2tpZS5UeXBlLlJlcXVlc3QgPyAiIiA6CisgICAgICAgICAg
ICAoY29va2llLnNlc3Npb24gPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5l
dyBEYXRlKGNvb2tpZS5leHBpcmVzKS50b0dNVFN0cmluZygpKTsKKyAgICAgICAgZGF0YVs1XSA9
IGNvb2tpZS5zaXplOworICAgICAgICBkYXRhWzZdID0gKGNvb2tpZS5odHRwT25seSA/ICJcdTI3
MTMiIDogIiIpOyAvLyBDaGVja21hcmsKKyAgICAgICAgZGF0YVs3XSA9IChjb29raWUuc2VjdXJl
ID8gIlx1MjcxMyIgOiAiIik7IC8vIENoZWNrbWFyaworCisgICAgICAgIHZhciBub2RlID0gbmV3
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSk7CisgICAgICAgIG5vZGUuY29va2llID0g
Y29va2llOworICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVlOworICAgICAgICByZXR1cm4g
bm9kZTsKKyAgICB9LAorCisgICAgX29uRGVsZXRlRnJvbUdyaWQ6IGZ1bmN0aW9uKG5vZGUpCisg
ICAgeworICAgICAgICB0aGlzLl9kZWxldGVDYWxsYmFjayhub2RlLmNvb2tpZSk7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCmluZGV4
IDBjNjYzNmIuLjhjZDAxMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9GaWxlU3lzdGVtVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbVZpZXcuanMKQEAgLTEyNSwxMiArMTI1LDEyIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldy5wcm90b3R5cGUgPSB7CiAgICAgfSwKICAgICBfc2VsZWN0RmlsZVN5c3RlbVRhYjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWJCeUlk
KCJwZXJzaXN0ZW50Iik7CisgICAgICAgIHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0VGFiKCJwZXJz
aXN0ZW50Iik7CiAgICAgfSwKICAgICAKICAgICBzZWxlY3RUZW1wb3JhcnlGaWxlU3lzdGVtVGFi
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYkJ5
SWQoInRlbXAiKTsKKyAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWIoInRlbXAiKTsK
ICAgICB9LAogCiAgICAgX3JldmVhbFBlcnNpc3RlbnRGb2xkZXJJbk9TOiBmdW5jdGlvbigpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMKaW5kZXggNzhhN2U3MC4uODI1NTll
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZvbnRWaWV3LmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcwpAQCAtMzQsMTIgKzM0
LDEyIEBAIFdlYkluc3BlY3Rvci5Gb250VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogfQogCiBX
ZWJJbnNwZWN0b3IuRm9udFZpZXcucHJvdG90eXBlID0gewotICAgIGhhc0NvbnRlbnRUYWI6IGZ1
bmN0aW9uKCkKKyAgICBoYXNDb250ZW50OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9LAogCi0gICAgY29udGVudFRhYlNlbGVjdGVkOiBmdW5jdGlvbigpCisg
ICAgX2NyZWF0ZUNvbnRlbnRJZk5lZWRlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuZm9udFByZXZpZXdFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTEsNyAr
NTEsNyBAQCBXZWJJbnNwZWN0b3IuRm9udFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBkb2N1
bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuZm9udFN0eWxlRWxlbWVudCk7CiAKICAgICAgICAg
dGhpcy5mb250UHJldmlld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZvbnRQcmV2aWV3
RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZvbnRQcmV2
aWV3RWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5mb250UHJldmlld0VsZW1lbnQuc3R5bGUuc2V0
UHJvcGVydHkoImZvbnQtZmFtaWx5IiwgdW5pcXVlRm9udE5hbWUsIG51bGwpOwogICAgICAgICB0
aGlzLmZvbnRQcmV2aWV3RWxlbWVudC5pbm5lckhUTUwgPSAiQUJDREVGR0hJSktMTTxicj5OT1BR
UlNUVVZXWFlaPGJyPmFiY2RlZmdoaWprbG08YnI+bm9wcXJzdHV2d3h5ejxicj4xMjM0NTY3ODkw
IjsKQEAgLTYzLDYgKzYzLDcgQEAgV2ViSW5zcGVjdG9yLkZvbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1l
bnQpOworICAgICAgICB0aGlzLl9jcmVhdGVDb250ZW50SWZOZWVkZWQoKTsKICAgICAgICAgdGhp
cy51cGRhdGVGb250UHJldmlld1NpemUoKTsKICAgICB9LAogCkBAIC04Niw3ICs4Nyw3IEBAIFdl
Ykluc3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnN0IHdpZHRoID0g
dGhpcy5mb250UHJldmlld0VsZW1lbnQub2Zmc2V0V2lkdGg7CiAKICAgICAgICAgLy8gU3VidHJh
Y3Qgc29tZSBwYWRkaW5nLiBUaGlzIHNob3VsZCBtYXRjaCB0aGUgcGFkZGluZyBpbiB0aGUgQ1NT
IHBsdXMgcm9vbSBmb3IgdGhlIHNjcm9sbGJhci4KLSAgICAgICAgY29uc3QgY29udGFpbmVyV2lk
dGggPSB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldFdpZHRoIC0gNTA7CisgICAgICAgIGNvbnN0
IGNvbnRhaW5lcldpZHRoID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoIC0gNTA7CiAKICAgICAg
ICAgaWYgKCFoZWlnaHQgfHwgIXdpZHRoIHx8ICFjb250YWluZXJXaWR0aCkgewogICAgICAgICAg
ICAgdGhpcy5mb250UHJldmlld0VsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImZvbnQtc2l6
ZSIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZpZXcuanMKaW5kZXggZjcwZmFk
Ni4uNTRhMTZiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdl
Vmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VWaWV3LmpzCkBA
IC0zNCwyNiArMzQsMzMgQEAgV2ViSW5zcGVjdG9yLkltYWdlVmlldyA9IGZ1bmN0aW9uKHJlc291
cmNlKQogfQogCiBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBoYXND
b250ZW50VGFiOiBmdW5jdGlvbigpCisgICAgaGFzQ29udGVudDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAotICAgIGNvbnRlbnRUYWJTZWxlY3RlZDog
ZnVuY3Rpb24oKQorICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywg
cGFyZW50RWxlbWVudCk7CisgICAgICAgIHRoaXMuX2NyZWF0ZUNvbnRlbnRJZk5lZWRlZCgpOwor
ICAgIH0sCisKKyAgICBfY3JlYXRlQ29udGVudElmTmVlZGVkOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fY29udGFpbmVyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB0aGlzLl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAg
ICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJpbWFnZSI7Ci0gICAgICAgIHRoaXMuY29u
dGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKTsKKworICAgICAgICB2YXIg
aW1hZ2VDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
aW1hZ2VDb250YWluZXIuY2xhc3NOYW1lID0gImltYWdlIjsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKGltYWdlQ29udGFpbmVyKTsKIAogICAgICAgICB2YXIgaW1hZ2VQcmV2aWV3
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwogICAgICAgICBpbWFnZVBy
ZXZpZXdFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJlc291cmNlLWltYWdlLXZpZXciKTsKLSAgICAg
ICAgdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGltYWdlUHJldmlld0VsZW1lbnQpOworICAg
ICAgICBpbWFnZUNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZVByZXZpZXdFbGVtZW50KTsKIAog
ICAgICAgICB0aGlzLl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJpbmZvIjsKLSAgICAgICAgdGhp
cy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpOworICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKTsKIAogICAgICAgICB2YXIg
aW1hZ2VOYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7CiAgICAgICAg
IGltYWdlTmFtZUVsZW1lbnQuY2xhc3NOYW1lID0gInRpdGxlIjsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU2MmJiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0
b3IuTmV0d29ya0l0ZW1WaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCit7CisgICAgV2ViSW5zcGVj
dG9yLlZpZXcuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJu
ZXR3b3JrLWl0ZW0tdmlldyIpOworCisgICAgdGhpcy5faGVhZGVyc1ZpZXcgPSBuZXcgV2ViSW5z
cGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcocmVzb3VyY2UpOworICAgIHRoaXMuX2NvbnRlbnRW
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJj
ZShyZXNvdXJjZSk7CisgICAgdGhpcy5fY29va2llc1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlQ29va2llc1ZpZXcocmVzb3VyY2UpOworCisgICAgdGhpcy5fdGFiYmVkUGFuZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSh0aGlzLmVsZW1lbnQpOworICAgIHRoaXMuX3RhYmJl
ZFBhbmUuYXBwZW5kVGFiKCJoZWFkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFkZXJz
IiksIHRoaXMuX2hlYWRlcnNWaWV3KTsKKyAgICBpZiAodGhpcy5fY29udGVudFZpZXcuaGFzQ29u
dGVudCgpKSB7CisgICAgICAgIC8vIFJldXNpbmcgdGhpcyB2aWV3LCBzbyBoaWRlIGl0IGF0IGZp
cnN0LgorICAgICAgICB0aGlzLl9jb250ZW50Vmlldy52aXNpYmxlID0gZmFsc2U7CisgICAgICAg
IHRoaXMuX3RhYmJlZFBhbmUuYXBwZW5kVGFiKCJjb250ZW50IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb250ZW50IiksIHRoaXMuX2NvbnRlbnRWaWV3KTsKKyAgICB9CisgICAgdGhpcy5fdGFi
YmVkUGFuZS5hcHBlbmRUYWIoImNvb2tpZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvb2tp
ZXMiKSwgdGhpcy5fY29va2llc1ZpZXcpOworICAgIHRoaXMuX3RhYmJlZFBhbmUuYWRkRXZlbnRM
aXN0ZW5lcigidGFiLXNlbGVjdGVkIiwgdGhpcy5fdGFiU2VsZWN0ZWQsIHRoaXMpOworfQorCitX
ZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3LnByb3RvdHlwZSA9IHsKKyAgICBzaG93OiBmdW5j
dGlvbihwYXJlbnRFbGVtZW50KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlLnNob3cuY2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fc2Vs
ZWN0VGFiKCk7CisgICAgfSwKKworICAgIF9zZWxlY3RUYWI6IGZ1bmN0aW9uKHRhYklkKQorICAg
IHsKKyAgICAgICAgaWYgKCF0YWJJZCkKKyAgICAgICAgICAgIHRhYklkID0gV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnJlc291cmNlVmlld1RhYjsKKworICAgICAgICBpZiAoIXRoaXMuX3RhYmJlZFBh
bmUuc2VsZWN0VGFiKHRhYklkKSkgeworICAgICAgICAgICAgdGhpcy5faXNJbkZhbGxiYWNrU2Vs
ZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0VGFiKCJo
ZWFkZXJzIik7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5faXNJbkZhbGxiYWNrU2VsZWN0aW9u
OworICAgICAgICB9CisgICAgfSwKKworICAgIF90YWJTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2lzSW5GYWxsYmFja1NlbGVjdGlvbikgeworICAg
ICAgICAgICAgdmFyIHRhYklkID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPSB0YWJJZDsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICByZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jb29raWVz
Vmlldy52aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fY29va2llc1ZpZXcucmVzaXplKCk7Cisg
ICAgfSwKKworICAgIHNlbGVjdENvbnRlbnRUYWI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0VGFiKCJjb250ZW50Iik7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuVmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcwppbmRleCA4ZWYxYjc0Li45OWJlNDc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgQW50aG9ueSBSaWNhdWQgPHJpa0B3ZWJraXQub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQxLDI3ICs2NDEsMTEgQEAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgc2hvdzogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5zaG93LmNhbGwo
dGhpcyk7Ci0KICAgICAgICAgdGhpcy5fcmVmcmVzaElmTmVlZGVkKCk7CiAKLSAgICAgICAgdmFy
IHZpc2libGVWaWV3ID0gdGhpcy52aXNpYmxlVmlldzsKLSAgICAgICAgaWYgKHRoaXMudmlzaWJs
ZVJlc291cmNlKSB7Ci0gICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmhlYWRlcnNWaXNpYmxl
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpCiAgICAgICAgICAgICB0aGlz
LnZpc2libGVWaWV3LnNob3codGhpcy5fdmlld3NDb250YWluZXJFbGVtZW50KTsKLSAgICAgICAg
fSBlbHNlIGlmICh2aXNpYmxlVmlldykKLSAgICAgICAgICAgIHZpc2libGVWaWV3LnNob3coKTsK
IAotICAgICAgICAvLyBIaWRlIGFueSB2aWV3cyB0aGF0IGFyZSB2aXNpYmxlIHRoYXQgYXJlIG5v
dCB0aGlzIHBhbmVsJ3MgY3VycmVudCB2aXNpYmxlIHZpZXcuCi0gICAgICAgIC8vIFRoaXMgY2Fu
IGhhcHBlbiB3aGVuIGEgUmVzb3VyY2VWaWV3IGlzIHZpc2libGUgaW4gdGhlIFNjcmlwdHMgcGFu
ZWwgdGhlbiBzd2l0Y2hlZAotICAgICAgICAvLyB0byB0aGUgdGhpcyBwYW5lbC4KLSAgICAgICAg
dmFyIHJlc291cmNlc0xlbmd0aCA9IHRoaXMuX3Jlc291cmNlcy5sZW5ndGg7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZh
ciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc1tpXTsKLSAgICAgICAgICAgIHZhciB2aWV3ID0g
cmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci0gICAgICAgICAgICBpZiAoIXZpZXcgfHwgdmlldyA9
PT0gdmlzaWJsZVZpZXcpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2
aWV3LnZpc2libGUgPSBmYWxzZTsKLSAgICAgICAgfQogICAgICAgICB0aGlzLl9kYXRhR3JpZC51
cGRhdGVXaWR0aHMoKTsKICAgICAgICAgdGhpcy5fcG9zaXRpb25TdW1tYXJ5QmFyKCk7CiAgICAg
fSwKQEAgLTY5NiwxMyArNjgwLDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUucGVyZm9ybVNlYXJj
aC5jYWxsKHRoaXMsIHF1ZXJ5KTsKICAgICB9LAogCi0gICAgZ2V0IHZpc2libGVWaWV3KCkKLSAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLnZpc2libGVSZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLnZpc2libGVSZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKLSAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgfSwKLQogICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX25lZWRzUmVmcmVzaCA9IGZhbHNlOwpAQCAtODI5LDggKzgwNiw2IEBAIFdlYkluc3BlY3Rv
ci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHJlc291cmNlLl9yZXNvdXJj
ZXNWaWV3ID0gbmV3VmlldzsKIAotICAgICAgICBuZXdWaWV3LmhlYWRlcnNWaXNpYmxlID0gb2xk
Vmlldy5oZWFkZXJzVmlzaWJsZTsKLQogICAgICAgICBpZiAob2xkVmlld1BhcmVudE5vZGUpCiAg
ICAgICAgICAgICBuZXdWaWV3LnNob3cob2xkVmlld1BhcmVudE5vZGUpOwogCkBAIC04NTYsMjIg
KzgzMSwxNSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB0aGlzLl90b2dnbGVWaWV3aW5nUmVzb3VyY2VNb2RlKCk7CiAKLSAgICAgICAgaWYgKHRo
aXMudmlzaWJsZVJlc291cmNlICYmIHRoaXMudmlzaWJsZVJlc291cmNlLl9yZXNvdXJjZXNWaWV3
KQotICAgICAgICAgICAgdGhpcy52aXNpYmxlUmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcuaGlkZSgp
OworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldykgeworICAgICAgICAgICAgdGhpcy52aXNp
YmxlVmlldy5kZXRhY2goKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnZpc2libGVWaWV3Owor
ICAgICAgICB9CiAKLSAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgdmlldy5oZWFk
ZXJzVmlzaWJsZSA9IHRydWU7CisgICAgICAgIHZhciB2aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5O
ZXR3b3JrSXRlbVZpZXcocmVzb3VyY2UpOwogICAgICAgICB2aWV3LnNob3codGhpcy5fdmlld3ND
b250YWluZXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IHZpZXc7CiAKLSAg
ICAgICAgaWYgKGxpbmUpIHsKLSAgICAgICAgICAgIHZpZXcuc2VsZWN0Q29udGVudFRhYigpOwot
ICAgICAgICAgICAgaWYgKHZpZXcucmV2ZWFsTGluZSkKLSAgICAgICAgICAgICAgICB2aWV3LnJl
dmVhbExpbmUobGluZSk7Ci0gICAgICAgICAgICBpZiAodmlldy5oaWdobGlnaHRMaW5lKQotICAg
ICAgICAgICAgICAgIHZpZXcuaGlnaGxpZ2h0TGluZShsaW5lKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMudmlzaWJsZVJlc291cmNlID0gcmVzb3VyY2U7CiAgICAgICAgIHRoaXMudXBkYXRl
U2lkZWJhcldpZHRoKCk7CiAgICAgfSwKIApAQCAtODc5LDkgKzg0NywxMCBAQCBXZWJJbnNwZWN0
b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVTdHlsZUNsYXNzKCJ2aWV3aW5nLXJlc291cmNlIik7CiAKLSAgICAgICAgaWYgKHRo
aXMudmlzaWJsZVJlc291cmNlICYmIHRoaXMudmlzaWJsZVJlc291cmNlLl9yZXNvdXJjZXNWaWV3
KQotICAgICAgICAgICAgdGhpcy52aXNpYmxlUmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcuaGlkZSgp
OwotICAgICAgICBkZWxldGUgdGhpcy52aXNpYmxlUmVzb3VyY2U7CisgICAgICAgIGlmICh0aGlz
LnZpc2libGVWaWV3KSB7CisgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmRldGFjaCgpOwor
ICAgICAgICAgICAgZGVsZXRlIHRoaXMudmlzaWJsZVZpZXc7CisgICAgICAgIH0KIAogICAgICAg
ICBpZiAodGhpcy5fbGFzdFNlbGVjdGVkR3JhcGhUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHRo
aXMuX2xhc3RTZWxlY3RlZEdyYXBoVHJlZUVsZW1lbnQuc2VsZWN0KHRydWUpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1ZpZXcuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDE5MDcwCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1ZpZXcuanMKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNvb2tpZXNWaWV3ID0gZnVuY3Rp
b24ocmVzb3VyY2UpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKKyAgICB0
aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicmVzb3VyY2UtY29va2llcy12aWV3Iik7CisKKyAg
ICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOworCisgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0
ZW5lcigicmVxdWVzdEhlYWRlcnMgY2hhbmdlZCIsIHRoaXMuc2hvdywgdGhpcyk7CisgICAgcmVz
b3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigicmVzcG9uc2VIZWFkZXJzIGNoYW5nZWQiLCB0aGlzLnNo
b3csIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29raWVzVmlldy5wcm90b3R5
cGUgPSB7CisgICAgc2hvdzogZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fcmVzb3VyY2UucmVxdWVzdENvb2tpZXMgJiYgIXRoaXMuX3Jlc291cmNlLnJl
c3BvbnNlQ29va2llcykgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9lbXB0eU1zZ0VsZW1lbnQp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eU1zZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eU1zZ0VsZW1lbnQu
Y2xhc3NOYW1lID0gInN0b3JhZ2UtZW1wdHktdmlldyI7CisgICAgICAgICAgICAgICAgdGhpcy5f
ZW1wdHlNc2dFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlz
IHJlcXVlc3QgaGFzIG5vIGNvb2tpZXMuIik7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2VtcHR5TXNnRWxlbWVudCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVu
dEVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRoaXMuX2VtcHR5TXNnRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX2VtcHR5TXNnRWxlbWVu
dC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2VtcHR5TXNnRWxlbWVudCk7CisKKyAg
ICAgICAgdGhpcy5fY29va2llc1RhYmxlID0gbmV3IFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUo
bnVsbCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2Nvb2tpZXNUYWJsZS5hZGRDb29raWVz
Rm9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBDb29raWVzIiksIHRoaXMuX3Jl
c291cmNlLnJlcXVlc3RDb29raWVzKTsKKyAgICAgICAgdGhpcy5fY29va2llc1RhYmxlLmFkZENv
b2tpZXNGb2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBDb29raWVzIiksIHRo
aXMuX3Jlc291cmNlLnJlc3BvbnNlQ29va2llcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9jb29raWVzVGFibGUuZWxlbWVudCk7CisKKyAgICAgICAgV2ViSW5zcGVj
dG9yLlZpZXcucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5fY29va2llc1RhYmxlLnVwZGF0ZVdpZHRocygpOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlSGVhZGVyc1ZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWUxMDEwZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIElCTSBDb3JwLiAyMDA5ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICBX
ZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJyZXNvdXJjZS1oZWFkZXJzLXZpZXciKTsKKworICAgIHRoaXMuX3Jlc291cmNlID0gcmVz
b3VyY2U7CisKKyAgICB0aGlzLl9oZWFkZXJzTGlzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJvbCIpOworICAgIHRoaXMuX2hlYWRlcnNMaXN0RWxlbWVudC5jbGFzc05hbWUgPSAi
b3V0bGluZS1kaXNjbG9zdXJlIjsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
aGVhZGVyc0xpc3RFbGVtZW50KTsKKworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZSA9IG5l
dyBUcmVlT3V0bGluZSh0aGlzLl9oZWFkZXJzTGlzdEVsZW1lbnQpOworICAgIHRoaXMuX2hlYWRl
cnNUcmVlT3V0bGluZS5leHBhbmRUcmVlRWxlbWVudHNXaGVuQXJyb3dpbmcgPSB0cnVlOworCisg
ICAgdGhpcy5fdXJsVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIGZhbHNl
KTsKKyAgICB0aGlzLl91cmxUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgdGhp
cy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX3VybFRyZWVFbGVtZW50KTsK
KworICAgIHRoaXMuX3JlcXVlc3RNZXRob2RUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCgi
IiwgbnVsbCwgZmFsc2UpOworICAgIHRoaXMuX3JlcXVlc3RNZXRob2RUcmVlRWxlbWVudC5zZWxl
Y3RhYmxlID0gZmFsc2U7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxk
KHRoaXMuX3JlcXVlc3RNZXRob2RUcmVlRWxlbWVudCk7CisKKyAgICB0aGlzLl9zdGF0dXNDb2Rl
VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIGZhbHNlKTsKKyAgICB0aGlz
Ll9zdGF0dXNDb2RlVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgIHRoaXMuX2hl
YWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0dXNDb2RlVHJlZUVsZW1lbnQp
OworICAgICAKKyAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50ID0gbmV3IFRyZWVF
bGVtZW50KCIiLCBudWxsLCB0cnVlKTsKKyAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVt
ZW50LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50
LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5k
Q2hpbGQodGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CisKKyAgICB0aGlzLl9kZWNv
ZGVIb3ZlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG91YmxlLUNsaWNrIHRvIHRvZ2dsZSBi
ZXR3ZWVuIFVSTCBlbmNvZGVkIGFuZCBkZWNvZGVkIGZvcm1hdHMiKTsKKyAgICB0aGlzLl9kZWNv
ZGVSZXF1ZXN0UGFyYW1ldGVycyA9IHRydWU7CisKKyAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVF
bGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCB0cnVlKTsKKyAgICB0aGlzLl9xdWVy
eVN0cmluZ1RyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9xdWVyeVN0cmlu
Z1RyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLl9xdWVyeVN0cmluZ1Ry
ZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFw
cGVuZENoaWxkKHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fZm9y
bURhdGFUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgdHJ1ZSk7CisgICAg
dGhpcy5fZm9ybURhdGFUcmVlRWxlbWVudC5leHBhbmRlZCA9IHRydWU7CisgICAgdGhpcy5fZm9y
bURhdGFUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgdGhpcy5fZm9ybURhdGFU
cmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5h
cHBlbmRDaGlsZCh0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50KTsKKworICAgIHRoaXMuX3JlcXVl
c3RQYXlsb2FkVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXF1ZXN0IFBheWxvYWQiKSwgbnVsbCwgdHJ1ZSk7CisgICAgdGhpcy5fcmVxdWVzdFBh
eWxvYWRUcmVlRWxlbWVudC5leHBhbmRlZCA9IHRydWU7CisgICAgdGhpcy5fcmVxdWVzdFBheWxv
YWRUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgdGhpcy5fcmVxdWVzdFBheWxv
YWRUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZCh0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50KTsKKworICAgIHRo
aXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxs
LCB0cnVlKTsKKyAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudC5leHBhbmRlZCA9
IHRydWU7CisgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9y
ZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisKKyAgICByZXNvdXJjZS5hZGRFdmVudExpc3Rl
bmVyKCJyZXF1ZXN0SGVhZGVycyBjaGFuZ2VkIiwgdGhpcy5fcmVmcmVzaFJlcXVlc3RIZWFkZXJz
LCB0aGlzKTsKKyAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJyZXNwb25zZUhlYWRlcnMg
Y2hhbmdlZCIsIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMsIHRoaXMpOworICAgIHJlc291
cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5fcmVmcmVzaEhUVFBJbmZvcm1h
dGlvbiwgdGhpcyk7CisKKyAgICB0aGlzLl9yZWZyZXNoVVJMKCk7CisgICAgdGhpcy5fcmVmcmVz
aFF1ZXJ5U3RyaW5nKCk7CisgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzKCk7CisgICAg
dGhpcy5fcmVmcmVzaFJlc3BvbnNlSGVhZGVycygpOworICAgIHRoaXMuX3JlZnJlc2hIVFRQSW5m
b3JtYXRpb24oKTsKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90
eXBlID0geworCisgICAgX3JlZnJlc2hVUkw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3VybFRyZWVFbGVtZW50LnRpdGxlSFRNTCA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVc
Ij4iICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IFVSTCIpICsgIjo8L2Rpdj4iICsK
KyAgICAgICAgICAgICI8ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiAr
IHRoaXMuX3Jlc291cmNlLnVybC5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IjsKKyAgICB9LAorCisg
ICAgX3JlZnJlc2hRdWVyeVN0cmluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHF1
ZXJ5UGFyYW1ldGVycyA9IHRoaXMuX3Jlc291cmNlLnF1ZXJ5UGFyYW1ldGVyczsKKyAgICAgICAg
dGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSAhcXVlcnlQYXJhbWV0ZXJzOwor
ICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzKQorICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFBh
cm1zKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUXVlcnkgU3RyaW5nIFBhcmFtZXRlcnMiKSwgcXVl
cnlQYXJhbWV0ZXJzLCB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50KTsKKyAgICB9LAorCisg
ICAgX3JlZnJlc2hGb3JtRGF0YTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZm9y
bURhdGFUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5
bG9hZFRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7CisKKyAgICAgICAgdmFyIGZvcm1EYXRhID0g
dGhpcy5fcmVzb3VyY2UucmVxdWVzdEZvcm1EYXRhOworICAgICAgICBpZiAoIWZvcm1EYXRhKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmb3JtUGFyYW1ldGVycyA9IHRoaXMu
X3Jlc291cmNlLmZvcm1QYXJhbWV0ZXJzOworICAgICAgICBpZiAoZm9ybVBhcmFtZXRlcnMpIHsK
KyAgICAgICAgICAgIHRoaXMuX2Zvcm1EYXRhVHJlZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7Cisg
ICAgICAgICAgICB0aGlzLl9yZWZyZXNoUGFybXMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3Jt
IERhdGEiKSwgZm9ybVBhcmFtZXRlcnMsIHRoaXMuX2Zvcm1EYXRhVHJlZUVsZW1lbnQpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFBheWxvYWRUcmVlRWxlbWVu
dC5oaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0UGF5bG9h
ZChmb3JtRGF0YSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3JlZnJlc2hSZXF1ZXN0UGF5
bG9hZDogZnVuY3Rpb24oZm9ybURhdGEpCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5
bG9hZFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIHRpdGxlID0g
IjxkaXYgY2xhc3M9XCJyYXctZm9ybS1kYXRhIGhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIg
KyBmb3JtRGF0YS5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IjsKKyAgICAgICAgdmFyIHBhcm1UcmVl
RWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7CisgICAgICAgIHBh
cm1UcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKKyAgICAgICAgcGFybVRyZWVFbGVtZW50
LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdFBheWxvYWRUcmVlRWxl
bWVudC5hcHBlbmRDaGlsZChwYXJtVHJlZUVsZW1lbnQpOworICAgIH0sCisKKyAgICBfcmVmcmVz
aFBhcm1zOiBmdW5jdGlvbih0aXRsZSwgcGFybXMsIHBhcm1zVHJlZUVsZW1lbnQpCisgICAgewor
ICAgICAgICBwYXJtc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgcGFy
bXNUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZSArICI8c3BhbiBjbGFzcz1cImhlYWRlci1j
b3VudFwiPiIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiAoJWQpIiwgcGFybXMubGVuZ3RoKSAr
ICI8L3NwYW4+IjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcm1zLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9IHBhcm1zW2ldLm5hbWU7CisgICAgICAgICAg
ICB2YXIgdmFsdWUgPSBwYXJtc1tpXS52YWx1ZTsKKworICAgICAgICAgICAgdmFyIGVycm9yRGVj
b2RpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1l
dGVycykgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCIlIikgPj0gMCkgewor
ICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGVjb2RpbmcgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1wrL2csICIgIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhbHVlRXNjYXBlZCA9IHZhbHVlLmVzY2FwZUhU
TUwoKTsKKyAgICAgICAgICAgIGlmIChlcnJvckRlY29kaW5nKQorICAgICAgICAgICAgICAgIHZh
bHVlRXNjYXBlZCArPSAiIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPiIgKyBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIih1bmFibGUgdG8gZGVjb2RlIHZhbHVlKSIpLmVzY2FwZUhUTUwoKSAr
ICI8L3NwYW4+IjsKKworICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFk
ZXItbmFtZVwiPiIgKyBuYW1lLmVzY2FwZUhUTUwoKSArICI6PC9kaXY+IjsKKyAgICAgICAgICAg
IHRpdGxlICs9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIHZh
bHVlRXNjYXBlZCArICI8L2Rpdj4iOworCisgICAgICAgICAgICB2YXIgcGFybVRyZWVFbGVtZW50
ID0gbmV3IFRyZWVFbGVtZW50KG51bGwsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIHBhcm1U
cmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKKyAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVu
dC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQudG9vbHRp
cCA9IHRoaXMuX2RlY29kZUhvdmVyOworICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50Lm9uZGJs
Y2xpY2sgPSB0aGlzLl90b2dnbGVVUkxkZWNvZGluZy5iaW5kKHRoaXMpOworICAgICAgICAgICAg
cGFybXNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChwYXJtVHJlZUVsZW1lbnQpOworICAgICAgICB9
CisgICAgfSwKKworICAgIF90b2dnbGVVUkxkZWNvZGluZzogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB0aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1ldGVycyA9ICF0aGlzLl9kZWNvZGVS
ZXF1ZXN0UGFyYW1ldGVyczsKKyAgICAgICAgdGhpcy5fcmVmcmVzaFF1ZXJ5U3RyaW5nKCk7Cisg
ICAgICAgIHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOworICAgIH0sCisKKyAgICBfZ2V0SGVhZGVy
VmFsdWU6IGZ1bmN0aW9uKGhlYWRlcnMsIGtleSkKKyAgICB7CisgICAgICAgIHZhciBsb3dlcktl
eSA9IGtleS50b0xvd2VyQ2FzZSgpOworICAgICAgICBmb3IgKHZhciB0ZXN0S2V5IGluIGhlYWRl
cnMpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0S2V5LnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyS2V5
KQorICAgICAgICAgICAgICAgIHJldHVybiBoZWFkZXJzW3Rlc3RLZXldOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlz
Ll9yZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCisgICAgICAg
ICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihLZXkzKSIsIHZhbHVlOiB0aGlzLl9yZXNv
dXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5M307CisgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJz
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX3Jlc291cmNl
LnNvcnRlZFJlcXVlc3RIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9yZXF1ZXN0SGVhZGVy
c1RyZWVFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEZvcm1EYXRhKCk7CisgICAgfSwK
KworICAgIF9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVz
b3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgIT09ICJ1bmRlZmluZWQiKQorICAgICAg
ICAgICAgYWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoQ2hhbGxlbmdlIFJlc3BvbnNlKSIsIHZh
bHVlOiB0aGlzLl9yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07CisgICAgICAg
IHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVh
ZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhlYWRlcnMsIGFkZGl0aW9uYWxS
b3csIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgX3Jl
ZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXF1
ZXN0TWV0aG9kRWxlbWVudCA9IHRoaXMuX3JlcXVlc3RNZXRob2RUcmVlRWxlbWVudDsKKyAgICAg
ICAgcmVxdWVzdE1ldGhvZEVsZW1lbnQuaGlkZGVuID0gIXRoaXMuX3Jlc291cmNlLnN0YXR1c0Nv
ZGU7CisgICAgICAgIHZhciBzdGF0dXNDb2RlRWxlbWVudCA9IHRoaXMuX3N0YXR1c0NvZGVUcmVl
RWxlbWVudDsKKyAgICAgICAgc3RhdHVzQ29kZUVsZW1lbnQuaGlkZGVuID0gIXRoaXMuX3Jlc291
cmNlLnN0YXR1c0NvZGU7CisgICAgICAgIHZhciBzdGF0dXNDb2RlSW1hZ2UgPSAiIjsKKworICAg
ICAgICBpZiAodGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZSkgeworICAgICAgICAgICAgdmFyIHN0
YXR1c0ltYWdlU291cmNlID0gIiI7CisgICAgICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2Uuc3Rh
dHVzQ29kZSA8IDMwMCkKKyAgICAgICAgICAgICAgICBzdGF0dXNJbWFnZVNvdXJjZSA9ICJJbWFn
ZXMvc3VjY2Vzc0dyZWVuRG90LnBuZyI7CisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9yZXNv
dXJjZS5zdGF0dXNDb2RlIDwgNDAwKQorICAgICAgICAgICAgICAgIHN0YXR1c0ltYWdlU291cmNl
ID0gIkltYWdlcy93YXJuaW5nT3JhbmdlRG90LnBuZyI7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc3RhdHVzSW1hZ2VTb3VyY2UgPSAiSW1hZ2VzL2Vycm9yUmVkRG90LnBuZyI7
CisKKyAgICAgICAgICAgIHZhciBzdGF0dXNUZXh0RXNjYXBlZCA9IHRoaXMuX3Jlc291cmNlLnN0
YXR1c0NvZGUgKyAiICIgKyB0aGlzLl9yZXNvdXJjZS5zdGF0dXNUZXh0LmVzY2FwZUhUTUwoKTsK
KyAgICAgICAgICAgIHN0YXR1c0NvZGVJbWFnZSA9ICI8aW1nIGNsYXNzPVwicmVzb3VyY2Utc3Rh
dHVzLWltYWdlXCIgc3JjPVwiIiArIHN0YXR1c0ltYWdlU291cmNlICsgIlwiIHRpdGxlPVwiIiAr
IHN0YXR1c1RleHRFc2NhcGVkICsgIlwiPiI7CisgICAgCisgICAgICAgICAgICByZXF1ZXN0TWV0
aG9kRWxlbWVudC50aXRsZUhUTUwgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBNZXRob2QiKSArICI6PC9kaXY+IiArCisgICAg
ICAgICAgICAgICAgIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsg
dGhpcy5fcmVzb3VyY2UucmVxdWVzdE1ldGhvZCArICI8L2Rpdj4iOworCisgICAgICAgICAgICBz
dGF0dXNDb2RlRWxlbWVudC50aXRsZUhUTUwgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+
IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIENvZGUiKSArICI6PC9kaXY+IiArCisg
ICAgICAgICAgICAgICAgc3RhdHVzQ29kZUltYWdlICsgIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFs
dWUgc291cmNlLWNvZGVcIj4iICsgc3RhdHVzVGV4dEVzY2FwZWQgKyAiPC9kaXY+IjsKKyAgICAg
ICAgfQorICAgIH0sCisgICAgCisgICAgX3JlZnJlc2hIZWFkZXJzOiBmdW5jdGlvbih0aXRsZSwg
aGVhZGVycywgYWRkaXRpb25hbFJvdywgaGVhZGVyc1RyZWVFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgaGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIGxl
bmd0aCA9IGhlYWRlcnMubGVuZ3RoOworICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQudGl0bGVI
VE1MID0gdGl0bGUuZXNjYXBlSFRNTCgpICsgIjxzcGFuIGNsYXNzPVwiaGVhZGVyLWNvdW50XCI+
IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBsZW5ndGgpICsgIjwvc3Bhbj4iOwor
ICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuaGlkZGVuID0gIWxlbmd0aDsKKworICAgICAgICB2
YXIgbGVuZ3RoID0gaGVhZGVycy5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8ZGl2IGNsYXNzPVwiaGVh
ZGVyLW5hbWVcIj4iICsgaGVhZGVyc1tpXS5oZWFkZXIuZXNjYXBlSFRNTCgpICsgIjo8L2Rpdj4i
OworICAgICAgICAgICAgdGl0bGUgKz0gIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNl
LWNvZGVcIj4iICsgaGVhZGVyc1tpXS52YWx1ZS5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IgorCisg
ICAgICAgICAgICB2YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVsbCwg
bnVsbCwgZmFsc2UpOworICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGVIVE1MID0g
dGl0bGU7CisgICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7
CisgICAgICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVs
ZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxSb3cpIHsKKyAgICAg
ICAgICAgIHZhciB0aXRsZSA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgYWRkaXRp
b25hbFJvdy5oZWFkZXIuZXNjYXBlSFRNTCgpICsgIjo8L2Rpdj4iOworICAgICAgICAgICAgdGl0
bGUgKz0gIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsgYWRkaXRp
b25hbFJvdy52YWx1ZS5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IgorCisgICAgICAgICAgICB2YXIg
aGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVsbCwgbnVsbCwgZmFsc2UpOwor
ICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGVIVE1MID0gdGl0bGU7CisgICAgICAg
ICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBo
ZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVsZW1lbnQpOworICAgICAg
ICB9CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggMTllMzA1Mi4uYTI4NGRhMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC03LDEz
ICs3LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMzAsNDAzICszMCwxNSBAQAogV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogewogICAgIFdlYkluc3BlY3Rv
ci5WaWV3LmNhbGwodGhpcyk7Ci0KICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicmVz
b3VyY2UtdmlldyIpOwotCiAgICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlOwotCi0gICAgdGhp
cy50YWJiZWRQYW5lID0gbmV3IFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lKHRoaXMuZWxlbWVudCk7
Ci0KLSAgICB0aGlzLmhlYWRlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5oZWFkZXJzRWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2Utdmlldy1o
ZWFkZXJzIjsKLSAgICB0aGlzLnRhYmJlZFBhbmUuYXBwZW5kVGFiKCJoZWFkZXJzIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJIZWFkZXJzIiksIHRoaXMuaGVhZGVyc0VsZW1lbnQsIHRoaXMuX3Nl
bGVjdFRhYi5iaW5kKHRoaXMsICJoZWFkZXJzIikpOwotCi0gICAgaWYgKHRoaXMuaGFzQ29udGVu
dFRhYigpKSB7Ci0gICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAi
cmVzb3VyY2Utdmlldy1jb250ZW50IjsKLSAgICAgICAgdGhpcy50YWJiZWRQYW5lLmFwcGVuZFRh
YigiY29udGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGVudCIpLCB0aGlzLmNvbnRl
bnRFbGVtZW50LCB0aGlzLl9zZWxlY3RUYWIuYmluZCh0aGlzLCAiY29udGVudCIpKTsKLSAgICB9
Ci0KLSAgICB0aGlzLmhlYWRlcnNMaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im9sIik7Ci0gICAgdGhpcy5oZWFkZXJzTGlzdEVsZW1lbnQuY2xhc3NOYW1lID0gIm91dGxpbmUt
ZGlzY2xvc3VyZSI7Ci0gICAgdGhpcy5oZWFkZXJzRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhl
YWRlcnNMaXN0RWxlbWVudCk7Ci0KLSAgICB0aGlzLmhlYWRlcnNUcmVlT3V0bGluZSA9IG5ldyBU
cmVlT3V0bGluZSh0aGlzLmhlYWRlcnNMaXN0RWxlbWVudCk7Ci0gICAgdGhpcy5oZWFkZXJzVHJl
ZU91dGxpbmUuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nID0gdHJ1ZTsKLQotICAgIHRo
aXMudXJsVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIGZhbHNlKTsKLSAg
ICB0aGlzLnVybFRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICB0aGlzLmhlYWRl
cnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLnVybFRyZWVFbGVtZW50KTsKLQotICAgIHRo
aXMucmVxdWVzdE1ldGhvZFRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCBm
YWxzZSk7Ci0gICAgdGhpcy5yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZh
bHNlOwotICAgIHRoaXMuaGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMucmVxdWVz
dE1ldGhvZFRyZWVFbGVtZW50KTsKLQotICAgIHRoaXMuc3RhdHVzQ29kZVRyZWVFbGVtZW50ID0g
bmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCBmYWxzZSk7Ci0gICAgdGhpcy5zdGF0dXNDb2RlVHJl
ZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMuaGVhZGVyc1RyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKHRoaXMuc3RhdHVzQ29kZVRyZWVFbGVtZW50KTsKLSAgICAgCi0gICAgdGhp
cy5yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCB0
cnVlKTsKLSAgICB0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQuZXhwYW5kZWQgPSB0cnVl
OwotICAgIHRoaXMucmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7
Ci0gICAgdGhpcy5oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5yZXF1ZXN0SGVh
ZGVyc1RyZWVFbGVtZW50KTsKLQotICAgIHRoaXMuX2RlY29kZUhvdmVyID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEb3VibGUtQ2xpY2sgdG8gdG9nZ2xlIGJldHdlZW4gVVJMIGVuY29kZWQgYW5k
IGRlY29kZWQgZm9ybWF0cyIpOwotICAgIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0g
dHJ1ZTsKLQotICAgIHRoaXMucXVlcnlTdHJpbmdUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVu
dCgiIiwgbnVsbCwgdHJ1ZSk7Ci0gICAgdGhpcy5xdWVyeVN0cmluZ1RyZWVFbGVtZW50LmV4cGFu
ZGVkID0gdHJ1ZTsKLSAgICB0aGlzLnF1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOwotICAgIHRoaXMucXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwot
ICAgIHRoaXMuaGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMucXVlcnlTdHJpbmdU
cmVlRWxlbWVudCk7Ci0KLSAgICB0aGlzLmZvcm1EYXRhVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVs
ZW1lbnQoIiIsIG51bGwsIHRydWUpOwotICAgIHRoaXMuZm9ybURhdGFUcmVlRWxlbWVudC5leHBh
bmRlZCA9IHRydWU7Ci0gICAgdGhpcy5mb3JtRGF0YVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBm
YWxzZTsKLSAgICB0aGlzLmZvcm1EYXRhVHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKLSAgICB0
aGlzLmhlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLmZvcm1EYXRhVHJlZUVsZW1l
bnQpOwotCi0gICAgdGhpcy5yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVt
ZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBQYXlsb2FkIiksIG51bGwsIHRydWUp
OwotICAgIHRoaXMucmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudC5leHBhbmRlZCA9IHRydWU7Ci0g
ICAgdGhpcy5yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAg
ICB0aGlzLnJlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKLSAgICB0aGlz
LmhlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLnJlcXVlc3RQYXlsb2FkVHJlZUVs
ZW1lbnQpOwotCi0gICAgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCA9IG5ldyBUcmVl
RWxlbWVudCgiIiwgbnVsbCwgdHJ1ZSk7Ci0gICAgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxl
bWVudC5leHBhbmRlZCA9IHRydWU7Ci0gICAgdGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVu
dC5zZWxlY3RhYmxlID0gZmFsc2U7Ci0gICAgdGhpcy5oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5k
Q2hpbGQodGhpcy5yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7Ci0KLSAgICB0aGlzLmhlYWRl
cnNWaXNpYmxlID0gdHJ1ZTsKLQotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlcXVl
c3RIZWFkZXJzIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMsIHRoaXMpOwot
ICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc3BvbnNlSGVhZGVycyBjaGFuZ2VkIiwg
dGhpcy5fcmVmcmVzaFJlc3BvbnNlSGVhZGVycywgdGhpcyk7Ci0gICAgcmVzb3VyY2UuYWRkRXZl
bnRMaXN0ZW5lcigiZmluaXNoZWQiLCB0aGlzLl9yZWZyZXNoSFRUUEluZm9ybWF0aW9uLCB0aGlz
KTsKLQotICAgIHRoaXMuX3JlZnJlc2hVUkwoKTsKLSAgICB0aGlzLl9yZWZyZXNoUXVlcnlTdHJp
bmcoKTsKLSAgICB0aGlzLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMoKTsKLSAgICB0aGlzLl9yZWZy
ZXNoUmVzcG9uc2VIZWFkZXJzKCk7Ci0gICAgdGhpcy5fcmVmcmVzaEhUVFBJbmZvcm1hdGlvbigp
OwotICAgIHRoaXMuX3NlbGVjdFRhYigpOwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHsKLSAgICAgICAgICAgIHZhciBwYXJlbnRFbGVt
ZW50ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNvdXJjZS12aWV3cyIpIHx8IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHQtcmVzb3VyY2Utdmlld3MiKSk7Ci0gICAgICAgICAg
ICBpZiAocGFyZW50RWxlbWVudCkKLSAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgc2hvdzogZnVu
Y3Rpb24ocGFyZW50RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3Nl
bGVjdFRhYigpOwotICAgIH0sCi0KLSAgICBzZXQgaGVhZGVyc1Zpc2libGUoeCkKKyAgICBoYXND
b250ZW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoeCA9PT0gdGhpcy5faGVhZGVy
c1Zpc2libGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2hlYWRlcnNWaXNp
YmxlID0geDsKLSAgICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5
bGVDbGFzcygiaGVhZGVycy12aXNpYmxlIik7IAotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGVhZGVycy12aXNpYmxlIik7IAotICAgICAg
ICB0aGlzLl9zZWxlY3RUYWIoKTsKLSAgICB9LAotCi0gICAgcmVzaXplOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5fY29va2llc1ZpZXcgJiYgIXRoaXMuX2Nvb2tpZXNWaWV3
LmVsZW1lbnQuaGFzU3R5bGVDbGFzcygiaGlkZGVuIikpCi0gICAgICAgICAgICB0aGlzLl9jb29r
aWVzVmlldy5yZXNpemUoKTsKLSAgICB9LAotCi0gICAgc2VsZWN0Q29udGVudFRhYjogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2VsZWN0VGFiKCJjb250ZW50Iik7Ci0gICAgfSwK
LQotICAgIF9zZWxlY3RUYWI6IGZ1bmN0aW9uKHRhYikKLSAgICB7Ci0gICAgICAgIGlmICh0YWIp
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VWaWV3VGFiID0gdGFi
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBwcmVmZXJyZWRUYWIgPSBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VWaWV3VGFiOwotICAgICAgICAgICAgdGFiID0gImNvbnRl
bnQiOwotCi0gICAgICAgICAgICAvLyBIb25vciB1c2VyIHRhYiBwcmVmZXJlbmNlIChpZiB3ZSBj
YW4pLiBGYWxsYmFjayB0byBjb250ZW50IGlmIGhlYWRlcnMgbm90IHZpc2libGUsIGhlYWRlcnMg
b3RoZXJ3aXNlLgotICAgICAgICAgICAgaWYgKHRoaXMuX2hlYWRlcnNWaXNpYmxlKQotICAgICAg
ICAgICAgICAgIHRhYiA9IHRoaXMudGFiYmVkUGFuZS5oYXNUYWIocHJlZmVycmVkVGFiKSA/IHBy
ZWZlcnJlZFRhYiA6ICJoZWFkZXJzIjsKLSAgICAgICAgfQotICAgICAgICB0aGlzLnRhYmJlZFBh
bmUuc2VsZWN0VGFiQnlJZCh0YWIpOwotICAgICAgICBpZiAodGFiID09PSAiY29udGVudCIgJiYg
dGhpcy5oYXNDb250ZW50VGFiKCkpCi0gICAgICAgICAgICB0aGlzLmNvbnRlbnRUYWJTZWxlY3Rl
ZCgpOwotICAgIH0sCi0KLSAgICBoYXNDb250ZW50VGFiOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICAvLyBEZXJpdmVkIGNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCBk
ZWZpbmUgdGhpcy5jb250ZW50VGFiU2VsZWN0ZWQgZm9yIGNvbnRlbnQgcmVuZGVyaW5nLgogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoVVJMOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB0aGlzLnVybFRyZWVFbGVtZW50LnRpdGxlSFRNTCA9ICI8ZGl2IGNs
YXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IFVS
TCIpICsgIjo8L2Rpdj4iICsKLSAgICAgICAgICAgICI8ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVl
IHNvdXJjZS1jb2RlXCI+IiArIHRoaXMucmVzb3VyY2UudXJsLmVzY2FwZUhUTUwoKSArICI8L2Rp
dj4iOwotICAgIH0sCi0KLSAgICBfcmVmcmVzaFF1ZXJ5U3RyaW5nOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5yZXNvdXJjZS5xdWVyeVBhcmFt
ZXRlcnM7Ci0gICAgICAgIHRoaXMucXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSAhcXVl
cnlQYXJhbWV0ZXJzOwotICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzKQotICAgICAgICAgICAg
dGhpcy5fcmVmcmVzaFBhcm1zKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUXVlcnkgU3RyaW5nIFBh
cmFtZXRlcnMiKSwgcXVlcnlQYXJhbWV0ZXJzLCB0aGlzLnF1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQp
OwotICAgIH0sCi0KLSAgICBfcmVmcmVzaEZvcm1EYXRhOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLmZvcm1EYXRhVHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKLSAgICAgICAgdGhp
cy5yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7Ci0KLSAgICAgICAgdmFy
IGZvcm1EYXRhID0gdGhpcy5yZXNvdXJjZS5yZXF1ZXN0Rm9ybURhdGE7Ci0gICAgICAgIGlmICgh
Zm9ybURhdGEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGZvcm1QYXJhbWV0
ZXJzID0gdGhpcy5yZXNvdXJjZS5mb3JtUGFyYW1ldGVyczsKLSAgICAgICAgaWYgKGZvcm1QYXJh
bWV0ZXJzKSB7Ci0gICAgICAgICAgICB0aGlzLmZvcm1EYXRhVHJlZUVsZW1lbnQuaGlkZGVuID0g
ZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9yZWZyZXNoUGFybXMoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGb3JtIERhdGEiKSwgZm9ybVBhcmFtZXRlcnMsIHRoaXMuZm9ybURhdGFUcmVlRWxlbWVu
dCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLnJlcXVlc3RQYXlsb2FkVHJl
ZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9yZWZyZXNoUmVxdWVz
dFBheWxvYWQoZm9ybURhdGEpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoUmVx
dWVzdFBheWxvYWQ6IGZ1bmN0aW9uKGZvcm1EYXRhKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXF1
ZXN0UGF5bG9hZFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIHRp
dGxlID0gIjxkaXYgY2xhc3M9XCJyYXctZm9ybS1kYXRhIGhlYWRlci12YWx1ZSBzb3VyY2UtY29k
ZVwiPiIgKyBmb3JtRGF0YS5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IjsKLSAgICAgICAgdmFyIHBh
cm1UcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAg
ICAgIHBhcm1UcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKLSAgICAgICAgcGFybVRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5yZXF1ZXN0UGF5bG9hZFRy
ZWVFbGVtZW50LmFwcGVuZENoaWxkKHBhcm1UcmVlRWxlbWVudCk7Ci0gICAgfSwKLQotICAgIF9y
ZWZyZXNoUGFybXM6IGZ1bmN0aW9uKHRpdGxlLCBwYXJtcywgcGFybXNUcmVlRWxlbWVudCkKLSAg
ICB7Ci0gICAgICAgIHBhcm1zVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAg
ICBwYXJtc1RyZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlICsgIjxzcGFuIGNsYXNzPVwiaGVh
ZGVyLWNvdW50XCI+IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBwYXJtcy5sZW5n
dGgpICsgIjwvc3Bhbj4iOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFybXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBuYW1lID0gcGFybXNbaV0ubmFtZTsKLSAgICAg
ICAgICAgIHZhciB2YWx1ZSA9IHBhcm1zW2ldLnZhbHVlOwotCi0gICAgICAgICAgICB2YXIgZXJy
b3JEZWNvZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHRoaXMuX2RlY29kZVJlcXVlc3RQ
YXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoIiUiKSA+PSAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2goZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZWNvZGluZyA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXCsvZywgIiAi
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFsdWVFc2NhcGVkID0gdmFsdWUuZXNj
YXBlSFRNTCgpOwotICAgICAgICAgICAgaWYgKGVycm9yRGVjb2RpbmcpCi0gICAgICAgICAgICAg
ICAgdmFsdWVFc2NhcGVkICs9ICIgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+IiArIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiKHVuYWJsZSB0byBkZWNvZGUgdmFsdWUpIikuZXNjYXBlSFRN
TCgpICsgIjwvc3Bhbj4iOwotCi0gICAgICAgICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1c
ImhlYWRlci1uYW1lXCI+IiArIG5hbWUuZXNjYXBlSFRNTCgpICsgIjo8L2Rpdj4iOwotICAgICAg
ICAgICAgdGl0bGUgKz0gIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4i
ICsgdmFsdWVFc2NhcGVkICsgIjwvZGl2PiI7Ci0KLSAgICAgICAgICAgIHZhciBwYXJtVHJlZUVs
ZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVsbCwgbnVsbCwgZmFsc2UpOwotICAgICAgICAgICAg
cGFybVRyZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlOwotICAgICAgICAgICAgcGFybVRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC50
b29sdGlwID0gdGhpcy5fZGVjb2RlSG92ZXI7Ci0gICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQu
b25kYmxjbGljayA9IHRoaXMuX3RvZ2dsZVVSTGRlY29kaW5nLmJpbmQodGhpcyk7Ci0gICAgICAg
ICAgICBwYXJtc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKHBhcm1UcmVlRWxlbWVudCk7Ci0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgX3RvZ2dsZVVSTGRlY29kaW5nOiBmdW5jdGlvbihldmVudCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0gIXRoaXMuX2Rl
Y29kZVJlcXVlc3RQYXJhbWV0ZXJzOwotICAgICAgICB0aGlzLl9yZWZyZXNoUXVlcnlTdHJpbmco
KTsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEZvcm1EYXRhKCk7Ci0gICAgfSwKLQotICAgIF9nZXRI
ZWFkZXJWYWx1ZTogZnVuY3Rpb24oaGVhZGVycywga2V5KQotICAgIHsKLSAgICAgICAgdmFyIGxv
d2VyS2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGZvciAodmFyIHRlc3RLZXkgaW4g
aGVhZGVycykgewotICAgICAgICAgICAgaWYgKHRlc3RLZXkudG9Mb3dlckNhc2UoKSA9PT0gbG93
ZXJLZXkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnNbdGVzdEtleV07Ci0gICAgICAg
IH0KLSAgICB9LAotCi0gICAgX3JlZnJlc2hSZXF1ZXN0SGVhZGVyczogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOwotICAgICAgICBpZiAodHlwZW9m
IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQotICAg
ICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5y
ZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5M307Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFk
ZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMucmVzb3Vy
Y2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMucmVxdWVzdEhlYWRl
cnNUcmVlRWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOwotICAgICAg
ICB0aGlzLl9yZWZyZXNoQ29va2llcygpOwotICAgIH0sCi0KLSAgICBfcmVmcmVzaFJlc3BvbnNl
SGVhZGVyczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBu
dWxsOwotICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdl
UmVzcG9uc2UgIT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHto
ZWFkZXI6ICIoQ2hhbGxlbmdlIFJlc3BvbnNlKSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndlYlNv
Y2tldENoYWxsZW5nZVJlc3BvbnNlfTsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMucmVzb3VyY2Uuc29y
dGVkUmVzcG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLnJlc3BvbnNlSGVhZGVyc1Ry
ZWVFbGVtZW50KTsKLSAgICAgICAgdGhpcy5fcmVmcmVzaENvb2tpZXMoKTsKLSAgICB9LAotCi0g
ICAgX3JlZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZh
ciByZXF1ZXN0TWV0aG9kRWxlbWVudCA9IHRoaXMucmVxdWVzdE1ldGhvZFRyZWVFbGVtZW50Owot
ICAgICAgICByZXF1ZXN0TWV0aG9kRWxlbWVudC5oaWRkZW4gPSAhdGhpcy5yZXNvdXJjZS5zdGF0
dXNDb2RlOwotICAgICAgICB2YXIgc3RhdHVzQ29kZUVsZW1lbnQgPSB0aGlzLnN0YXR1c0NvZGVU
cmVlRWxlbWVudDsKLSAgICAgICAgc3RhdHVzQ29kZUVsZW1lbnQuaGlkZGVuID0gIXRoaXMucmVz
b3VyY2Uuc3RhdHVzQ29kZTsKLSAgICAgICAgdmFyIHN0YXR1c0NvZGVJbWFnZSA9ICIiOwotCi0g
ICAgICAgIGlmICh0aGlzLnJlc291cmNlLnN0YXR1c0NvZGUpIHsKLSAgICAgICAgICAgIHZhciBz
dGF0dXNJbWFnZVNvdXJjZSA9ICIiOwotICAgICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2Uuc3Rh
dHVzQ29kZSA8IDMwMCkKLSAgICAgICAgICAgICAgICBzdGF0dXNJbWFnZVNvdXJjZSA9ICJJbWFn
ZXMvc3VjY2Vzc0dyZWVuRG90LnBuZyI7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnJlc291
cmNlLnN0YXR1c0NvZGUgPCA0MDApCi0gICAgICAgICAgICAgICAgc3RhdHVzSW1hZ2VTb3VyY2Ug
PSAiSW1hZ2VzL3dhcm5pbmdPcmFuZ2VEb3QucG5nIjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBzdGF0dXNJbWFnZVNvdXJjZSA9ICJJbWFnZXMvZXJyb3JSZWREb3QucG5nIjsK
LQotICAgICAgICAgICAgdmFyIHN0YXR1c1RleHRFc2NhcGVkID0gdGhpcy5yZXNvdXJjZS5zdGF0
dXNDb2RlICsgIiAiICsgdGhpcy5yZXNvdXJjZS5zdGF0dXNUZXh0LmVzY2FwZUhUTUwoKTsKLSAg
ICAgICAgICAgIHN0YXR1c0NvZGVJbWFnZSA9ICI8aW1nIGNsYXNzPVwicmVzb3VyY2Utc3RhdHVz
LWltYWdlXCIgc3JjPVwiIiArIHN0YXR1c0ltYWdlU291cmNlICsgIlwiIHRpdGxlPVwiIiArIHN0
YXR1c1RleHRFc2NhcGVkICsgIlwiPiI7Ci0gICAgCi0gICAgICAgICAgICByZXF1ZXN0TWV0aG9k
RWxlbWVudC50aXRsZUhUTUwgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBNZXRob2QiKSArICI6PC9kaXY+IiArCi0gICAgICAg
ICAgICAgICAgIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsgdGhp
cy5yZXNvdXJjZS5yZXF1ZXN0TWV0aG9kICsgIjwvZGl2PiI7Ci0KLSAgICAgICAgICAgIHN0YXR1
c0NvZGVFbGVtZW50LnRpdGxlSFRNTCA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGF0dXMgQ29kZSIpICsgIjo8L2Rpdj4iICsKLSAgICAg
ICAgICAgICAgICBzdGF0dXNDb2RlSW1hZ2UgKyAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBz
b3VyY2UtY29kZVwiPiIgKyBzdGF0dXNUZXh0RXNjYXBlZCArICI8L2Rpdj4iOwotICAgICAgICB9
Ci0gICAgfSwKLSAgICAKLSAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBoZWFk
ZXJzLCBhZGRpdGlvbmFsUm93LCBoZWFkZXJzVHJlZUVsZW1lbnQpCi0gICAgewotICAgICAgICBo
ZWFkZXJzVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICB2YXIgbGVuZ3Ro
ID0gaGVhZGVycy5sZW5ndGg7Ci0gICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC50aXRsZUhUTUwg
PSB0aXRsZS5lc2NhcGVIVE1MKCkgKyAiPHNwYW4gY2xhc3M9XCJoZWFkZXItY291bnRcIj4iICsg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIGxlbmd0aCkgKyAiPC9zcGFuPiI7Ci0gICAg
ICAgIGhlYWRlcnNUcmVlRWxlbWVudC5oaWRkZW4gPSAhbGVuZ3RoOwotCi0gICAgICAgIHZhciBs
ZW5ndGggPSBoZWFkZXJzLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFkZXIt
bmFtZVwiPiIgKyBoZWFkZXJzW2ldLmhlYWRlci5lc2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7Ci0g
ICAgICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29k
ZVwiPiIgKyBoZWFkZXJzW2ldLnZhbHVlLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iCi0KLSAgICAg
ICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxs
LCBmYWxzZSk7Ci0gICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRs
ZTsKLSAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVu
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYWRkaXRpb25hbFJvdykgewotICAgICAgICAg
ICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBhZGRpdGlvbmFs
Um93LmhlYWRlci5lc2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7Ci0gICAgICAgICAgICB0aXRsZSAr
PSAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBhZGRpdGlvbmFs
Um93LnZhbHVlLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iCi0KLSAgICAgICAgICAgIHZhciBoZWFk
ZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKLSAgICAgICAgICAg
IGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGhlYWRl
cnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgX3JlZnJlc2hDb29raWVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuX2Nvb2tpZXNWaWV3KSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMucmVzb3Vy
Y2UucmVxdWVzdENvb2tpZXMgJiYgIXRoaXMucmVzb3VyY2UucmVzcG9uc2VDb29raWVzKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMuX2Nvb2tpZXNWaWV3ID0gbmV3
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvb2tpZXNUYWIoKTsKLSAgICAgICAgICAgIHRoaXMudGFi
YmVkUGFuZS5hcHBlbmRUYWIoImNvb2tpZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvb2tp
ZXMiKSwgdGhpcy5fY29va2llc1ZpZXcsIHRoaXMuX3NlbGVjdFRhYi5iaW5kKHRoaXMsICJjb29r
aWVzIikpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2Nvb2tpZXNWaWV3LnJlcXVlc3RDb29r
aWVzID0gdGhpcy5yZXNvdXJjZS5yZXF1ZXN0Q29va2llczsKLSAgICAgICAgdGhpcy5fY29va2ll
c1ZpZXcucmVzcG9uc2VDb29raWVzID0gdGhpcy5yZXNvdXJjZS5yZXNwb25zZUNvb2tpZXM7CiAg
ICAgfQogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNv
b2tpZXNUYWIgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5j
YWxsKHRoaXMpOwotICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJjZS12aWV3
LWNvb2tpZXMiKTsKLSAgICB0aGlzLl9yZXF1ZXN0Q29va2llcyA9IFtdOwotICAgIHRoaXMuX3Jl
c3BvbnNlQ29va2llcyA9IFtdOwotICAgIHRoaXMuX2NyZWF0ZURhdGFHcmlkKHRydWUpOwotICAg
IHRoaXMuX3JlcXVlc3RDb29raWVzTm9kZSA9IHRoaXMuX2NyZWF0ZUZvbGRlcihXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlcXVlc3QgQ29va2llcyIpKTsKLSAgICB0aGlzLl9yZXNwb25zZUNvb2tp
ZXNOb2RlID0gdGhpcy5fY3JlYXRlRm9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9u
c2UgQ29va2llcyIpKTsKLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1RhYi5wcm90
b3R5cGUgPSB7Ci0gICAgc2hvdzogZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKLSAgICB7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzLCBw
YXJlbnRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5yZXNpemUoKTsKLSAgICB9LAotCi0gICAgc2V0
IHJlcXVlc3RDb29raWVzKGNvb2tpZXMpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVxdWVz
dENvb2tpZXMgPT09IGNvb2tpZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMu
X3JlcXVlc3RDb29raWVzID0gY29va2llczsKLSAgICAgICAgdGhpcy5fcG9wdWxhdGVDb29raWVz
KHRoaXMuX3JlcXVlc3RDb29raWVzTm9kZSwgdGhpcy5fcmVxdWVzdENvb2tpZXMpOwotICAgIH0s
Ci0KLSAgICBzZXQgcmVzcG9uc2VDb29raWVzKGNvb2tpZXMpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5fcmVzcG9uc2VDb29raWVzID09PSBjb29raWVzKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB0aGlzLl9yZXNwb25zZUNvb2tpZXMgPSBjb29raWVzOwotICAgICAgICB0aGlzLl9w
b3B1bGF0ZUNvb2tpZXModGhpcy5fcmVzcG9uc2VDb29raWVzTm9kZSwgdGhpcy5fcmVzcG9uc2VD
b29raWVzKTsKLSAgICB9LAotCi0gICAgX3BvcHVsYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3BvcHVsYXRlQ29va2llcyh0aGlzLl9yZXF1ZXN0Q29va2llc05v
ZGUsIHRoaXMuX3JlcXVlc3RDb29raWVzKTsKLSAgICAgICAgdGhpcy5fcG9wdWxhdGVDb29raWVz
KHRoaXMuX3Jlc3BvbnNlQ29va2llc05vZGUsIHRoaXMuX3Jlc3BvbnNlQ29va2llcyk7Ci0gICAg
fSwKLQotICAgIF9wb3B1bGF0ZUNvb2tpZXM6IGZ1bmN0aW9uKHBhcmVudE5vZGUsIGNvb2tpZXMp
Ci0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fcG9w
dWxhdGVDb29raWVzLmNhbGwodGhpcywgcGFyZW50Tm9kZSwgY29va2llcyk7Ci0gICAgICAgIHZh
ciB0b3RhbFNpemUgPSAwOwotICAgICAgICBpZiAoY29va2llcykgewotICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHRv
dGFsU2l6ZSArPSBjb29raWVzW2ldLnNpemU7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyZW50Tm9k
ZS5leHBhbmRlZCA9IHRydWU7Ci0gICAgICAgIHBhcmVudE5vZGUuZGF0YVs1XSA9IHRvdGFsU2l6
ZTsKLSAgICAgICAgcGFyZW50Tm9kZS5yZWZyZXNoKCk7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVG
b2xkZXI6IGZ1bmN0aW9uKG5hbWUpCi0gICAgewotICAgICAgICB2YXIgZGF0YSA9IFsgbmFtZSwg
IiIsICIiLCAiIiwgIiIsIDAsICIiLCAiIiBdOwotICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEpOwotICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0
cnVlOwotICAgICAgICBub2RlLmV4cGFuZGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYXBwZW5kQ2hpbGQobm9kZSk7Ci0gICAgICAgIG5vZGUuZWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJyb3ctZ3JvdXAiKTsKLSAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotfTsKLQotV2ViSW5z
cGVjdG9yLlJlc291cmNlQ29va2llc1RhYi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggNTI4NWRhZS4uYTgwYzJhNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtOTksMTEgKzk5LDgg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMpOwogCi0gICAg
ICAgIGlmICh0aGlzLnZpc2libGVWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNl
VmlldykgewotICAgICAgICAgICAgLy8gU291cmNlVmlld3MgYXJlIHNoYXJlZCBiZXR3ZWVuIHRo
ZSBwYW5lbHMuCi0gICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmhlYWRlcnNWaXNpYmxlID0g
ZmFsc2U7CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldykKICAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuc2hvdyh0aGlz
LnN0b3JhZ2VWaWV3cyk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5faW5pdGlhbGl6
ZWREZWZhdWx0U2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU5LDcgKzM1Niw2
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKGxpbmUpIHsKICAgICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNl
TWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICB2
aWV3LnNlbGVjdENvbnRlbnRUYWIoKTsKICAgICAgICAgICAgIGlmICh2aWV3LnJldmVhbExpbmUp
CiAgICAgICAgICAgICAgICAgdmlldy5yZXZlYWxMaW5lKGxpbmUpOwogICAgICAgICAgICAgaWYg
KHZpZXcuaGlnaGxpZ2h0TGluZSkKQEAgLTM3MSw3ICszNjcsNiBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgIF9zaG93UmVzb3VyY2VWaWV3OiBmdW5jdGlv
bihyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHZp
ZXcuaGVhZGVyc1Zpc2libGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh2
aWV3KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcwppbmRleCAwZGNlOTVlLi4wYTNjN2E5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTIxMywxMSArMjEzLDkgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90
b3R5cGUuc2hvdy5jYWxsKHRoaXMpOwogICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVFbGVtZW50
LnN0eWxlLnJpZ2h0ID0gKHRoaXMuc2lkZWJhckVsZW1lbnQub2Zmc2V0V2lkdGggLSAzKSArICJw
eCI7CiAKLSAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpIHsKLSAgICAgICAgICAgIGlmICh0
aGlzLnZpc2libGVWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldykKLSAg
ICAgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmhlYWRlcnNWaXNpYmxlID0gZmFsc2U7Cisg
ICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3KQogICAgICAgICAgICAgdGhpcy52aXNpYmxlVmll
dy5zaG93KHRoaXMudmlld3NDb250YWluZXJFbGVtZW50KTsKLSAgICAgICAgfQorCiAgICAgICAg
IGlmICh0aGlzLl9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bikgewogICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5lbmFibGVEZWJ1Z2dlcihmYWxzZSk7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fYXR0YWNoRGVidWdnZXJXaGVuU2hvd247CkBAIC01OTgsMTAgKzU5Niw5IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHZhciB2aWV3OwotICAgICAgICBpZiAoc2NyaXB0T3JSZXNvdXJjZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5SZXNvdXJjZSkgeworICAgICAgICBpZiAoc2NyaXB0T3JSZXNvdXJjZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKICAgICAgICAgICAgIHZpZXcgPSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHNjcmlwdE9y
UmVzb3VyY2UpOwotICAgICAgICAgICAgdmlldy5oZWFkZXJzVmlzaWJsZSA9IGZhbHNlOwotICAg
ICAgICB9IGVsc2UgaWYgKHNjcmlwdE9yUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0KQorICAgICAgICBlbHNlIGlmIChzY3JpcHRPclJlc291cmNlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHZpZXcgPSB0aGlzLnNjcmlwdFZpZXdGb3JT
Y3JpcHQoc2NyaXB0T3JSZXNvdXJjZSk7CiAKICAgICAgICAgaWYgKCF2aWV3KQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVZpZXcuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcwppbmRleCBjN2EzNWY3Li40NDFiMGNiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcwpAQCAtMzMsNyArMzMs
NyBAQCBXZWJJbnNwZWN0b3IuU291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHRo
aXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UiKTsKIAogICAgIHZhciBjYW5FZGl0U2Ny
aXB0cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cyAmJiBXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMuY2FuRWRpdFNjcmlwdHMoKSAmJiByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQ7Ci0gICAgdGhpcy5zb3VyY2VGcmFtZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUodGhpcy5jb250ZW50RWxlbWVudCwgdGhpcy5fYWRkQnJlYWtw
b2ludC5iaW5kKHRoaXMpLCBjYW5FZGl0U2NyaXB0cyA/IHRoaXMuX2VkaXRMaW5lLmJpbmQodGhp
cykgOiBudWxsLCB0aGlzLl9jb250aW51ZVRvTGluZS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLnNv
dXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmVsZW1lbnQsIHRo
aXMuX2FkZEJyZWFrcG9pbnQuYmluZCh0aGlzKSwgY2FuRWRpdFNjcmlwdHMgPyB0aGlzLl9lZGl0
TGluZS5iaW5kKHRoaXMpIDogbnVsbCwgdGhpcy5fY29udGludWVUb0xpbmUuYmluZCh0aGlzKSk7
CiAgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigiZmluaXNoZWQiLCB0aGlzLl9yZXNvdXJj
ZUxvYWRpbmdGaW5pc2hlZCwgdGhpcyk7CiAgICAgdGhpcy5fZnJhbWVOZWVkc1NldHVwID0gdHJ1
ZTsKIH0KQEAgLTUwLDkgKzUwLDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBl
ID0gewogICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50
RWxlbWVudCk7CisgICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7CiAgICAg
ICAgIHRoaXMuc291cmNlRnJhbWUudmlzaWJsZSA9IHRydWU7Ci0gICAgICAgIGlmICh0aGlzLmxv
Y2FsU291cmNlRnJhbWUpCi0gICAgICAgICAgICB0aGlzLmxvY2FsU291cmNlRnJhbWUudmlzaWJs
ZSA9IHRydWU7CiAgICAgICAgIHRoaXMucmVzaXplKCk7CiAgICAgfSwKIApAQCAtNjIsOCArNjEs
NiBAQCBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICgh
dGhpcy5fZnJhbWVOZWVkc1NldHVwKQogICAgICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5jbGVh
ckxpbmVIaWdobGlnaHQoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmhp
ZGUuY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMubG9jYWxTb3VyY2VGcmFtZSkKLSAgICAg
ICAgICAgIHRoaXMubG9jYWxTb3VyY2VGcmFtZS52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgIHRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwogICAgIH0sCiAKQEAgLTcxLDkgKzY4
LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuc291cmNlRnJhbWUpCiAgICAgICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnJl
c2l6ZSgpOwotICAgICAgICBpZiAodGhpcy5sb2NhbFNvdXJjZUZyYW1lKQotICAgICAgICAgICAg
dGhpcy5sb2NhbFNvdXJjZUZyYW1lLnJlc2l6ZSgpOwotICAgICAgICBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VWaWV3LnByb3RvdHlwZS5yZXNpemUuY2FsbCh0aGlzKTsKICAgICB9LAogCiAgICAgc2V0
dXBTb3VyY2VGcmFtZUlmTmVlZGVkOiBmdW5jdGlvbigpCkBAIC04MSwyMiArNzUsMTUgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX2Zy
YW1lTmVlZHNTZXR1cCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmF0dGFj
aCgpOwotCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZU5lZWRzU2V0dXA7CiAgICAgICAgIHRo
aXMucmVzb3VyY2UucmVxdWVzdENvbnRlbnQodGhpcy5fY29udGVudExvYWRlZC5iaW5kKHRoaXMp
KTsKICAgICB9LAogCi0gICAgaGFzQ29udGVudFRhYjogZnVuY3Rpb24oKQorICAgIGhhc0NvbnRl
bnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAg
ICBjb250ZW50VGFiU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2V0
dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7Ci0gICAgfSwKLQogICAgIF9jb250ZW50TG9hZGVkOiBm
dW5jdGlvbihjb250ZW50KQogICAgIHsKICAgICAgICAgdmFyIG1pbWVUeXBlID0gdGhpcy5fY2Fu
b25pY2FsTWltZVR5cGUodGhpcy5yZXNvdXJjZSk7CkBAIC0yMTQsMTUgKzIwMSwxMiBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmxvY2Fs
Q29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
ICAgIHRoaXMubG9jYWxDb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2Utdmlldy1j
b250ZW50IjsKICAgICAgICAgICAgIHRoaXMudGFiYmVkUGFuZS5hcHBlbmRUYWIoImxvY2FsIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhbCIpLCB0aGlzLmxvY2FsQ29udGVudEVsZW1lbnQs
IHRoaXMuc2VsZWN0TG9jYWxDb250ZW50VGFiLmJpbmQodGhpcykpOwotICAgICAgICAgICAgdGhp
cy5sb2NhbFNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmxv
Y2FsQ29udGVudEVsZW1lbnQsIHRoaXMuX2FkZEJyZWFrcG9pbnQuYmluZCh0aGlzKSwgbnVsbCwg
dGhpcy5fY29udGludWVUb0xpbmUuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KLSAgICAgICAgdGhp
cy5sb2NhbFNvdXJjZUZyYW1lLnNldENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQsICIiKTsKICAg
ICB9LAogCiAgICAgc2VsZWN0TG9jYWxDb250ZW50VGFiOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICB0aGlzLnRhYmJlZFBhbmUuc2VsZWN0VGFiQnlJZCgibG9jYWwiKTsKLSAgICAgICAgdGhp
cy5sb2NhbFNvdXJjZUZyYW1lLnZpc2libGUgPSB0cnVlOwogICAgICAgICBpZiAoInJlc2l6ZSIg
aW4gdGhpcykKICAgICAgICAgICAgIHRoaXMucmVzaXplKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCAwYWVjNjY5
Li4zNzU1ZGY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Np
ZGViYXJQYW5lLmpzCkBAIC0xMTQsNiArMTE0LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgIHVwZGF0ZTogZnVuY3Rpb24obm9kZSwgZWRpdGVk
U2VjdGlvbiwgZm9yY2VVcGRhdGUpCiAgICAgeworCXJldHVybjsKICAgICAgICAgdmFyIHJlZnJl
c2ggPSBmYWxzZTsKIAogICAgICAgICBpZiAoZm9yY2VVcGRhdGUpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCmluZGV4IDFlZDk3MjUuLjlhNDlmYWMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCkBAIC0zMiw2MiArMzIsNTEgQEAg
V2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUgPSBmdW5jdGlvbihlbGVtZW50KQogewogICAgIHRoaXMu
ZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
dGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRhYmJlZC1wYW5lIik7Ci0gICAgdGhpcy50YWJz
RWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInRhYmJlZC1wYW5lLWhl
YWRlciIpOwotICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hp
bGQoImRpdiIsICJ0YWJiZWQtcGFuZS1jb250ZW50Iik7Ci0KLSAgICB0aGlzLl90YWJPYmplY3Rz
ID0ge307CisgICAgdGhpcy5fdGFic0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQo
ImRpdiIsICJ0YWJiZWQtcGFuZS1oZWFkZXIiKTsKKyAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9
IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInRhYmJlZC1wYW5lLWNvbnRlbnQiKTsK
KyAgICB0aGlzLl90YWJzID0ge307CiB9CiAKIFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lLnByb3Rv
dHlwZSA9IHsKLSAgICBhcHBlbmRUYWI6IGZ1bmN0aW9uKGlkLCB0YWJUaXRsZSwgY29udGVudCwg
dGFiQ2xpY2tMaXN0ZW5lcikKKyAgICBhcHBlbmRUYWI6IGZ1bmN0aW9uKGlkLCB0YWJUaXRsZSwg
dmlldykKICAgICB7CiAgICAgICAgIHZhciB0YWJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKICAgICAgICAgdGFiRWxlbWVudC50ZXh0Q29udGVudCA9IHRhYlRpdGxlOwot
ICAgICAgICB0YWJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGFiQ2xpY2tMaXN0
ZW5lciwgZmFsc2UpOwotICAgICAgICB0aGlzLnRhYnNFbGVtZW50LmFwcGVuZENoaWxkKHRhYkVs
ZW1lbnQpOwotICAgICAgICB2YXIgdGFiT2JqZWN0ID0geyB0YWI6IHRhYkVsZW1lbnQgfTsKLSAg
ICAgICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgewotICAgICAgICAgICAg
dGFiT2JqZWN0LmVsZW1lbnQgPSBjb250ZW50OwotICAgICAgICAgICAgdGhpcy5jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZChjb250ZW50KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudC5lbGVtZW50
KTsKLSAgICAgICAgICAgIHRhYk9iamVjdC52aWV3ID0gY29udGVudDsKLSAgICAgICAgfQotICAg
ICAgICB0aGlzLl90YWJPYmplY3RzW2lkXSA9IHRhYk9iamVjdDsKLSAgICB9LAorICAgICAgICB0
YWJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5zZWxlY3RUYWIuYmluZCh0
aGlzLCBpZCksIGZhbHNlKTsKIAotICAgIGhhc1RhYjogZnVuY3Rpb24odGFiSWQpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGFiSWQgaW4gdGhpcy5fdGFiT2JqZWN0czsKKyAgICAgICAgdGhpcy5f
dGFic0VsZW1lbnQuYXBwZW5kQ2hpbGQodGFiRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2NvbnRl
bnRFbGVtZW50LmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdGFi
c1tpZF0gPSB7IHRhYkVsZW1lbnQ6IHRhYkVsZW1lbnQsIHZpZXc6IHZpZXcgfQogICAgIH0sCi0g
ICAgIAotICAgIHNlbGVjdFRhYkJ5SWQ6IGZ1bmN0aW9uKHRhYklkKQorCisgICAgc2VsZWN0VGFi
OiBmdW5jdGlvbihpZCwgZSkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX3Rh
Yk9iamVjdHMpIHsKLSAgICAgICAgICAgIGlmIChpZCA9PT0gdGFiSWQpCi0gICAgICAgICAgICAg
ICAgdGhpcy5fc2hvd1RhYih0aGlzLl90YWJPYmplY3RzW2lkXSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpcy5faGlkZVRhYih0aGlzLl90YWJPYmplY3RzW2lkXSk7Cisg
ICAgICAgIGlmICghKGlkIGluIHRoaXMuX3RhYnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGFiKSB7CisgICAgICAgICAgICB0aGlzLl9o
aWRlVGFiKHRoaXMuX2N1cnJlbnRUYWIpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVu
dFRhYjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhpcy5oYXNUYWIodGFiSWQpOworICAg
ICAgICB2YXIgdGFiID0gdGhpcy5fdGFic1tpZF07CisgICAgICAgIHRoaXMuX3Nob3dUYWIodGFi
KTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRhYiA9IHRhYjsKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoInRhYi1zZWxlY3RlZCIsIGlkKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSwKIAotICAgIF9zaG93VGFiOiBmdW5jdGlvbih0YWJPYmplY3QpCisgICAgX3No
b3dUYWI6IGZ1bmN0aW9uKHRhYikKICAgICB7Ci0gICAgICAgIHRhYk9iamVjdC50YWIuYWRkU3R5
bGVDbGFzcygic2VsZWN0ZWQiKTsKLSAgICAgICAgaWYgKHRhYk9iamVjdC5lbGVtZW50KQotICAg
ICAgICAgICAgdGFiT2JqZWN0LmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRhYk9iamVjdC52aWV3LnZpc2libGUgPSB0cnVlOwor
ICAgICAgICB0YWIudGFiRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOworICAgICAg
ICB0YWIudmlldy5zaG93KHRoaXMuX2NvbnRlbnRFbGVtZW50KTsKICAgICB9LAogCi0gICAgX2hp
ZGVUYWI6IGZ1bmN0aW9uKHRhYk9iamVjdCkKKyAgICBfaGlkZVRhYjogZnVuY3Rpb24odGFiKQog
ICAgIHsKLSAgICAgICAgdGFiT2JqZWN0LnRhYi5yZW1vdmVTdHlsZUNsYXNzKCJzZWxlY3RlZCIp
OwotICAgICAgICBpZiAodGFiT2JqZWN0LmVsZW1lbnQpCi0gICAgICAgICAgICB0YWJPYmplY3Qu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgdGFiT2JqZWN0LnZpZXcudmlzaWJsZSA9IGZhbHNlOworICAgICAgICB0YWIudGFiRWxlbWVu
dC5yZW1vdmVTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOworICAgICAgICB0YWIudmlldy52aXNpYmxl
ID0gZmFsc2U7CiAgICAgfQogfQorCitXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZS5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDJiODdiY2MuLmY4MGFjNDIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgPGZpbGU+
Q29udGV4dE1lbnUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29va2llSXRlbXNWaWV3LmpzPC9maWxl
PgogICAgIDxmaWxlPkNvb2tpZVBhcnNlci5qczwvZmlsZT4KKyAgICA8ZmlsZT5Db29raWVzVGFi
bGUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q1NTQ29tcGxldGlvbnMuanM8L2ZpbGU+CiAgICAgPGZp
bGU+Q1NTU3R5bGVNb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5EYXRhYmFzZS5qczwvZmlsZT4K
QEAgLTU1LDYgKzU2LDcgQEAKICAgICA8ZmlsZT5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpz
PC9maWxlPgogICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2ZpbGU+CiAgICAgPGZpbGU+
TWV0cmljc1NpZGViYXJQYW5lLmpzPC9maWxlPgorICAgIDxmaWxlPk5ldHdvcmtJdGVtVmlldy5q
czwvZmlsZT4KICAgICA8ZmlsZT5OZXR3b3JrUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2Jq
ZWN0LmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxl
PgpAQCAtNzAsNiArNzIsOCBAQAogICAgIDxmaWxlPlJlbW90ZU9iamVjdC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5SZXNvdXJjZS5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZUNhdGVnb3J5Lmpz
PC9maWxlPgorICAgIDxmaWxlPlJlc291cmNlQ29va2llc1ZpZXcuanM8L2ZpbGU+CisgICAgPGZp
bGU+UmVzb3VyY2VIZWFkZXJzVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZU1hbmFn
ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PlJlc291cmNlc1BhbmVsLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcwppbmRleCAyOWYyMzg1Li44YjgzZjQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtNzk4LDkxICs3OTgsMTkgQEAgYm9keS5wbGF0Zm9y
bS1saW51eCAubW9ub3NwYWNlLCBib2R5LnBsYXRmb3JtLWxpbnV4IC5zb3VyY2UtY29kZSB7CiAg
ICAgZGlzcGxheTogYmxvY2s7CiB9CiAKLS5yZXNvdXJjZS12aWV3IHsKLSAgICBkaXNwbGF5OiBu
b25lOworLndlYmtpdC1saW5lLWd1dHRlci1iYWNrZHJvcCB7CisgICAgLyogS2VlcCB0aGlzIGlu
IHN5bmMgd2l0aCB2aWV3LXNvdXJjZS5jc3MgKC53ZWJraXQtbGluZS1ndXR0ZXItYmFja2Ryb3Ap
ICovCisgICAgd2lkdGg6IDMxcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MCwgMjQw
LCAyNDApOworICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigxODcsIDE4NywgMTg3KTsK
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYmFja2dyb3VuZDogd2hpdGU7Ci0gICAgdG9w
OiAwOworICAgIHotaW5kZXg6IC0xOwogICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAg
Ym90dG9tOiAwOwotfQotCi0ucmVzb3VyY2Utdmlldy52aXNpYmxlIHsKLSAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKLX0KLQotLnJlc291cmNlLXZpZXcgLnRhYmJlZC1wYW5lLWhlYWRlciB7Ci0g
ICAgZGlzcGxheTogbm9uZTsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAgYmFja2dyb3VuZDogLXdl
YmtpdC1ncmFkaWVudChsaW5lYXIsIDAlIDAlLCAwJSAxMDAlLCBmcm9tKHJnYigyMzYsIDIzNiwg
MjM2KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwotICAgIGJvcmRlci1ib3R0b206IDFweCBz
b2xpZCByZ2IoMTYzLCAxNjMsIDE2Myk7Ci19Ci0KLS5yZXNvdXJjZS12aWV3LmhlYWRlcnMtdmlz
aWJsZSAudGFiYmVkLXBhbmUtaGVhZGVyIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotLnJl
c291cmNlLXZpZXcgLnNjb3BlLWJhciBsaSB7Ci0gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1
czogMDsKLSAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKLX0KLQotLnJlc291cmNl
LXZpZXctaGVhZGVycyB7Ci0gICAgcGFkZGluZzogNnB4OwotICAgIC13ZWJraXQtdXNlci1zZWxl
Y3Q6IHRleHQ7ICAgIAotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7Ci0gICAg
bGVmdDogMDsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgb3ZlcmZsb3c6IGF1
dG87Ci19Ci0KLS5yZXNvdXJjZS12aWV3LWhlYWRlcnMgLm91dGxpbmUtZGlzY2xvc3VyZSAucGFy
ZW50IHsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGZvbnQtd2VpZ2h0OiBi
b2xkOwotfQotCi0ucmVzb3VyY2Utdmlldy1oZWFkZXJzIC5vdXRsaW5lLWRpc2Nsb3N1cmUgLmNo
aWxkcmVuIGxpIHsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotCi0ucmVzb3VyY2Utdmll
dy1oZWFkZXJzIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkuZXhwYW5kZWQgLmhlYWRlci1jb3VudCB7
Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnJlc291cmNlLXZpZXctaGVhZGVycyAub3V0bGlu
ZS1kaXNjbG9zdXJlIC5oZWFkZXItbmFtZSB7Ci0gICAgY29sb3I6IHJnYigzMyUsIDMzJSwgMzMl
KTsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTsK
LSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotICAgIHdo
aXRlLXNwYWNlOiBwcmUtd3JhcDsKLX0KLQotLnJlc291cmNlLXZpZXctaGVhZGVycyAub3V0bGlu
ZS1kaXNjbG9zdXJlIC5oZWFkZXItdmFsdWUgewotICAgIGRpc3BsYXk6IGlubGluZTsKLSAgICBt
YXJnaW4tcmlnaHQ6IDEwMHB4OwotICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKLSAgICB3b3Jk
LWJyZWFrOiBicmVhay1hbGw7Ci0gICAgbWFyZ2luLXRvcDogMXB4OwotfQotCi0ucmVzb3VyY2Ut
dmlldy1oZWFkZXJzIC5vdXRsaW5lLWRpc2Nsb3N1cmUgLnJhdy1mb3JtLWRhdGEgewotICAgIHdo
aXRlLXNwYWNlOnByZS13cmFwOwotfQotCi0ucmVzb3VyY2UtdmlldyAucmVzb3VyY2Utdmlldy1j
b250ZW50IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0
OiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG92ZXJmbG93OiBhdXRvOwor
ICAgIGhlaWdodDogMTAwJQogfQogCi0ucmVzb3VyY2Utdmlldy1jb29raWVzIHsKKy5yZXNvdXJj
ZS12aWV3IHsKICAgICBkaXNwbGF5OiBub25lOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAg
ICB0b3A6IDA7CkBAIC04OTAsMzYgKzgxOCwxMyBAQCBib2R5LnBsYXRmb3JtLWxpbnV4IC5tb25v
c3BhY2UsIGJvZHkucGxhdGZvcm0tbGludXggLnNvdXJjZS1jb2RlIHsKICAgICBsZWZ0OiAwOwog
ICAgIGJvdHRvbTogMDsKICAgICBvdmVyZmxvdzogYXV0bzsKLSAgICBwYWRkaW5nOiAxMnB4Owot
ICAgIGhlaWdodDogMTAwJTsKIH0KIAotLnJlc291cmNlLXZpZXctY29va2llcy52aXNpYmxlIHsK
Ky5yZXNvdXJjZS12aWV3LnZpc2libGUgewogICAgIGRpc3BsYXk6IGJsb2NrOwogfQogCi0ucmVz
b3VyY2Utdmlldy1jb29raWVzLnRhYmxlIC5kYXRhLWdyaWQgewotICAgIGhlaWdodDogMTAwJTsK
LX0KLQotLnJlc291cmNlLXZpZXctY29va2llcyAuZGF0YS1ncmlkIC5yb3ctZ3JvdXAgewotICAg
IGZvbnQtd2VpZ2h0OiBib2xkOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLX0KLQotLndlYmtpdC1s
aW5lLWd1dHRlci1iYWNrZHJvcCB7Ci0gICAgLyogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB2aWV3
LXNvdXJjZS5jc3MgKC53ZWJraXQtbGluZS1ndXR0ZXItYmFja2Ryb3ApICovCi0gICAgd2lkdGg6
IDMxcHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MCwgMjQwLCAyNDApOwotICAgIGJv
cmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigxODcsIDE4NywgMTg3KTsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgei1pbmRleDogLTE7Ci0gICAgbGVmdDogMDsKLSAgICB0b3A6IDA7Ci0g
ICAgaGVpZ2h0OiAxMDAlCi19Ci0KLS5yZXNvdXJjZS12aWV3LmZvbnQgLnJlc291cmNlLXZpZXct
Y29udGVudCB7CisucmVzb3VyY2Utdmlldy5mb250IHsKICAgICBmb250LXNpemU6IDYwcHg7CiAg
ICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKQEAg
LTkyNywxMiArODMyLDEyIEBAIGJvZHkucGxhdGZvcm0tbGludXggLm1vbm9zcGFjZSwgYm9keS5w
bGF0Zm9ybS1saW51eCAuc291cmNlLWNvZGUgewogICAgIHBhZGRpbmc6IDE1cHg7CiB9CiAKLS5y
ZXNvdXJjZS12aWV3LmltYWdlIC5yZXNvdXJjZS12aWV3LWNvbnRlbnQgPiAuaW1hZ2UgeworLnJl
c291cmNlLXZpZXcuaW1hZ2UgPiAuaW1hZ2UgewogICAgIHBhZGRpbmc6IDIwcHggMjBweCAxMHB4
IDIwcHg7CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogfQogCi0ucmVzb3VyY2Utdmlldy5pbWFn
ZSAucmVzb3VyY2Utdmlldy1jb250ZW50ID4gLmluZm8geworLnJlc291cmNlLXZpZXcuaW1hZ2Ug
PiAuaW5mbyB7CiAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICAgZm9udC1zaXplOiAxMXB4
OwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7CkBAIC0yMDAyLDE2ICsxOTA3LDE2IEBA
IGxpLnNlbGVjdGVkIC5iYXNlLXN0b3JhZ2UtdHJlZS1lbGVtZW50LXN1YnRpdGxlIHsKICAgICBk
aXNwbGF5OiBibG9jazsKIH0KIAotLnN0b3JhZ2Utdmlldy50YWJsZSB7Cisuc3RvcmFnZS12aWV3
IHsKICAgICBvdmVyZmxvdzogaGlkZGVuOwogfQogCi0uc3RvcmFnZS12aWV3LnRhYmxlIC5kYXRh
LWdyaWQgeworLnN0b3JhZ2UtdmlldyAuZGF0YS1ncmlkIHsKICAgICBib3JkZXI6IG5vbmU7CiAg
ICAgaGVpZ2h0OiAxMDAlOwogfQogCi0uc3RvcmFnZS1lbXB0eS12aWV3LCAuc3RvcmFnZS12aWV3
LnRhYmxlIC5zdG9yYWdlLXRhYmxlLWVycm9yIHsKKy5zdG9yYWdlLWVtcHR5LXZpZXcsIC5zdG9y
YWdlLXZpZXcgLnN0b3JhZ2UtdGFibGUtZXJyb3IgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
ICAgICB0b3A6IDA7CiAgICAgYm90dG9tOiAyNSU7CkBAIC0yMDI5LDcgKzE5MzQsNyBAQCBsaS5z
ZWxlY3RlZCAuYmFzZS1zdG9yYWdlLXRyZWUtZWxlbWVudC1zdWJ0aXRsZSB7CiAgICAgd2hpdGUt
c3BhY2U6IHByZS13cmFwOwogfQogCi0uc3RvcmFnZS12aWV3LnRhYmxlIC5zdG9yYWdlLXRhYmxl
LWVycm9yIHsKKy5zdG9yYWdlLXZpZXcgLnN0b3JhZ2UtdGFibGUtZXJyb3IgewogICAgIGNvbG9y
OiByZ2IoNjYlLCAzMyUsIDMzJSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAppbmRleCBlMGM3MmU5Li42NjdlZWVmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC02Nyw2ICs2Nyw3IEBAIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NU3RvcmFnZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NU3RvcmFn
ZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iRGF0YUdyaWQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkNvb2tpZXNUYWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBcHBsaWNhdGlvbkNhY2hl
SXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CkBAIC0xMTIsNiArMTEzLDkgQEAg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBdWRpdFJ1
bGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJBdWRpdENhdGVnb3JpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkF1ZGl0Rm9ybWF0dGVycy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VIZWFkZXJzVmlldy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VD
b29raWVzVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iTmV0d29ya0l0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZyYW1lLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TeW50YXhIaWdo
bGlnaHRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvbmV0d29ya1BhbmVsLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3
b3JrUGFuZWwuY3NzCmluZGV4IDZiNmFlYmUuLmU4YzllNjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCkBAIC05NywxMSArOTcsMTEgQEAKIAogLm5l
dHdvcmstY2VsbC1zdWJ0aXRsZSB7CiAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICBjb2xv
cjogZ3JleTsKKyAgICBjb2xvcjogZ3JheTsKIH0KIAogLm5ldHdvcmstaGVhZGVyLXN1YnRpdGxl
IHsKLSAgICBjb2xvcjogZ3JleTsKKyAgICBjb2xvcjogZ3JheTsKIH0KIAogLm5ldHdvcmstc2lk
ZWJhciAuZGF0YS1ncmlkLnNtYWxsIC5uZXR3b3JrLWNlbGwtc3VidGl0bGUsCkBAIC02MjksMTMg
KzYyOSwxMyBAQAogICAgIGNvbG9yOiBibGFjazsKIH0KIAotI25ldHdvcmstdmlld3MgLnJlc291
cmNlLXZpZXcgLnRhYmJlZC1wYW5lLWhlYWRlciB7CisjbmV0d29yay12aWV3cyAubmV0d29yay1p
dGVtLXZpZXcgLnRhYmJlZC1wYW5lLWhlYWRlciB7CiAgICAgaGVpZ2h0OiAzMXB4OwogICAgIHBh
ZGRpbmctdG9wOiA4cHg7CiAgICAgcGFkZGluZy1sZWZ0OiAyNXB4OwogfQogCi0jbmV0d29yay12
aWV3cy5zbWFsbCAucmVzb3VyY2UtdmlldyAudGFiYmVkLXBhbmUtaGVhZGVyIHsKKyNuZXR3b3Jr
LXZpZXdzLnNtYWxsIC5uZXR3b3JrLWl0ZW0tdmlldyAudGFiYmVkLXBhbmUtaGVhZGVyIHsKICAg
ICBoZWlnaHQ6IDIzcHg7CiAgICAgcGFkZGluZy10b3A6IDA7CiB9CkBAIC02NDMsMyArNjQzLDEw
MyBAQAogLm5ldHdvcmsucGFuZWwudmlld2luZy1yZXNvdXJjZSAuZGF0YS1ncmlkIC5kYXRhLWNv
bnRhaW5lciB7CiAgICAgcGFkZGluZy1yaWdodDogMDsKIH0KKworLm5ldHdvcmstaXRlbS12aWV3
IHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNr
Z3JvdW5kOiB3aGl0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICByaWdodDogMDsK
KyAgICBib3R0b206IDA7Cit9CisKKy5uZXR3b3JrLWl0ZW0tdmlldy52aXNpYmxlIHsKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWJveDsKK30KKworLm5ldHdvcmstaXRlbS12aWV3IC50YWJiZWQtcGFu
ZS1oZWFkZXIgeworICAgIGhlaWdodDogMjBweDsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdy
YWRpZW50KGxpbmVhciwgMCUgMCUsIDAlIDEwMCUsIGZyb20ocmdiKDIzNiwgMjM2LCAyMzYpKSwg
dG8ocmdiKDIxNywgMjE3LCAyMTcpKSk7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJn
YigxNjMsIDE2MywgMTYzKTsKK30KKworLm5ldHdvcmstaXRlbS12aWV3IC5zY29wZS1iYXIgbGkg
eworICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CisgICAgYm9yZGVyLWJvdHRvbS1y
aWdodC1yYWRpdXM6IDA7Cit9CisKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgeworICAgIGRpc3Bs
YXk6IG5vbmU7CisgICAgcGFkZGluZzogNnB4OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRl
eHQ7ICAgIAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDog
MDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9
CisKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcudmlzaWJsZSB7CisgICAgZGlzcGxheTogYmxvY2s7
Cit9CisKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSAucGFyZW50
IHsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAgIGZvbnQtd2VpZ2h0OiBib2xk
OworfQorCisucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgLmNoaWxk
cmVuIGxpIHsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisucmVzb3VyY2UtaGVhZGVy
cy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkuZXhwYW5kZWQgLmhlYWRlci1jb3VudCB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKworLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1k
aXNjbG9zdXJlIC5oZWFkZXItbmFtZSB7CisgICAgY29sb3I6IHJnYigzMyUsIDMzJSwgMzMlKTsK
KyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTsKKyAg
ICBmb250LXdlaWdodDogYm9sZDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworICAgIHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsKK30KKworLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1k
aXNjbG9zdXJlIC5oZWFkZXItdmFsdWUgeworICAgIGRpc3BsYXk6IGlubGluZTsKKyAgICBtYXJn
aW4tcmlnaHQ6IDEwMHB4OworICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKKyAgICB3b3JkLWJy
ZWFrOiBicmVhay1hbGw7CisgICAgbWFyZ2luLXRvcDogMXB4OworfQorCisucmVzb3VyY2UtaGVh
ZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgLnJhdy1mb3JtLWRhdGEgeworICAgIHdoaXRl
LXNwYWNlOnByZS13cmFwOworfQorCisucmVzb3VyY2UtY29va2llcy12aWV3IHsKKyAgICBkaXNw
bGF5OiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmln
aHQ6IDA7CisgICAgbGVmdDogMDsKKyAgICBib3R0b206IDA7CisgICAgb3ZlcmZsb3c6IGF1dG87
CisgICAgcGFkZGluZzogMTJweDsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKKy5yZXNvdXJjZS1j
b29raWVzLXZpZXcudmlzaWJsZSB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy5yZXNvdXJj
ZS1jb29raWVzLXZpZXcgLmRhdGEtZ3JpZCB7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisucmVz
b3VyY2UtY29va2llcy12aWV3IC5kYXRhLWdyaWQgLnJvdy1ncm91cCB7CisgICAgZm9udC13ZWln
aHQ6IGJvbGQ7CisgICAgZm9udC1zaXplOiAxMXB4OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74674</attachid>
            <date>2010-11-23 08:53:00 -0800</date>
            <delta_ts>2010-11-24 02:29:09 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>resource_view</filename>
            <type>text/plain</type>
            <size>97739</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTFmNzJhOC4uMjZmMWNmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTAgQEAKKzIwMTAtMTEtMjIgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgUmVzb3VyY2VWaWV3
IGhpZXJhcmNoeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5ODY0CisKKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyBzcGxpdHMgUmVzb3VyY2VWaWV3
LmpzIGludG86CisgICAgICAgICAgICBOZXR3b3JrSXRlbVZpZXcuanMgKHRhYmJlZCBwYW5lKQor
ICAgICAgICAgICAgUmVzb3VyY2VIZWFkZXJzVmlldy5qcyAoaGVhZGVyIHRhYikKKyAgICAgICAg
ICAgIFJlc291cmNlQ29va2llc1ZpZXcuanMgKGNvb2tpZXMgdGFiKQorICAgICAgICAgICAgUmVz
b3VyY2VWaWV3LmpzIChiYXNlIGNsYXNzIGZvciBjb250ZW50IHRhYikuCisgICAgICAgIENvb2tp
ZXNUYWJsZSB3YXMgZXh0cmFjdGVkIGZyb20gQ29va2llSXRlbXNWaWV3IGFuZAorICAgICAgICBi
cnVzaGVkIHVwLiBoZWFkZXJzVmlzaWJsZSBmbGFnIGhhcyBiZWVuIHJlbW92ZWQuCisKKyAgICAg
ICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2ll
SXRlbXNWaWV3LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS5yZXNpemUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX3VwZGF0ZVdpdGhDb29raWVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9maWx0ZXJDb29r
aWVzRm9yRG9tYWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJv
dG90eXBlLl9kZWxldGVDb29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1z
Vmlldy5wcm90b3R5cGUuX2RlbGV0ZUJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlja2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVDb29raWVzVGFibGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNpbXBsZUNvb2tpZXNUYWJsZS5wcm90b3R5cGUuc2V0Q29va2llcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2ltcGxlQ29va2llc1RhYmxlLnByb3RvdHlwZS5yZXNpemUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
b2tpZXNUYWJsZS5wcm90b3R5cGUudXBkYXRlV2lkdGhzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db29raWVzVGFibGUucHJvdG90eXBlLnNldENvb2tpZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuYWRkQ29va2llc0ZvbGRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5nZXQgc2VsZWN0ZWRDb29raWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3JlYnVpbGRUYWJs
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5yZXNldCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fcG9wdWxhdGVO
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLl90b3Rh
bFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3Nv
cnRDb29raWVzLmxvY2FsZUNvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNU
YWJsZS5wcm90b3R5cGUuX3NvcnRDb29raWVzLm51bWJlckNvbXBhcmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3NvcnRDb29raWVzLmV4cGlyZXNDb21w
YXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLl9zb3J0
Q29va2llcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5f
Y3JlYXRlR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90
b3R5cGUuX29uRGVsZXRlRnJvbUdyaWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcu
cHJvdG90eXBlLl9zZWxlY3RGaWxlU3lzdGVtVGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5wcm90b3R5cGUuc2VsZWN0VGVtcG9yYXJ5RmlsZVN5c3RlbVRhYik6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGUuaGFzQ29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRm9udFZpZXcucHJvdG90eXBlLl9jcmVhdGVDb250ZW50SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZvbnRWaWV3LnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGUudXBkYXRlRm9udFByZXZpZXdTaXplKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JbWFnZVZpZXcucHJvdG90eXBlLmhhc0NvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkltYWdlVmlldy5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrSXRlbVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtJdGVtVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3LnBy
b3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrSXRlbVZpZXcucHJv
dG90eXBlLl9zZWxlY3RUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmll
dy5wcm90b3R5cGUuX3RhYlNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
SXRlbVZpZXcucHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a0l0ZW1WaWV3LnByb3RvdHlwZS5zZWxlY3RDb250ZW50VGFiKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrUGFuZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQ
YW5lbC5wcm90b3R5cGUucmVmcmVzaFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlLl9zaG93UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUuX2Nsb3NlVmlzaWJsZVJlc291cmNlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1ZpZXcuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcucHJvdG90eXBlLnNob3cpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qczogQWRkZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hVUkwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUXVl
cnlTdHJpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJv
dG90eXBlLl9yZWZyZXNoRm9ybURhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
SGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmVxdWVzdFBheWxvYWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUGFybXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl90
b2dnbGVVUkxkZWNvZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
Vmlldy5wcm90b3R5cGUuX2dldEhlYWRlclZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVmcmVz
aFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hIVFRQSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoSGVhZGVycyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcucHJvdG90eXBlLmhhc0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZS5zaG93UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5fc2hvd1Jlc291cmNlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9zaG93U2NyaXB0T3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnNob3cpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLmhpZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oYXNDb250ZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS51cGRhdGVMb2Nh
bENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnNl
bGVjdExvY2FsQ29udGVudFRhYik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGFiYmVkUGFuZS5wcm90b3R5cGUuYXBwZW5kVGFiKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJiZWRQYW5lLnByb3RvdHlwZS5zZWxlY3RUYWIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRhYmJlZFBhbmUucHJvdG90eXBlLl9zaG93VGFiKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJiZWRQYW5lLnByb3RvdHlwZS5faGlkZVRhYik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzczoKKyAgICAgICAgKC53ZWJraXQtbGluZS1ndXR0ZXItYmFja2Ryb3ApOgorICAg
ICAgICAoLnJlc291cmNlLXZpZXcpOgorICAgICAgICAoLnJlc291cmNlLXZpZXcudmlzaWJsZSk6
CisgICAgICAgICgucmVzb3VyY2Utdmlldy5mb250KToKKyAgICAgICAgKC5yZXNvdXJjZS12aWV3
LmltYWdlID4gLmltYWdlKToKKyAgICAgICAgKC5yZXNvdXJjZS12aWV3LmltYWdlID4gLmluZm8p
OgorICAgICAgICAoLnN0b3JhZ2Utdmlldyk6CisgICAgICAgICguc3RvcmFnZS12aWV3IC5kYXRh
LWdyaWQpOgorICAgICAgICAoLnN0b3JhZ2UtZW1wdHktdmlldywgLnN0b3JhZ2UtdmlldyAuc3Rv
cmFnZS10YWJsZS1lcnJvcik6CisgICAgICAgICguc3RvcmFnZS12aWV3IC5zdG9yYWdlLXRhYmxl
LWVycm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNzczoKKyAgICAgICAg
KC5uZXR3b3JrLWNlbGwtc3VidGl0bGUpOgorICAgICAgICAoLm5ldHdvcmstaGVhZGVyLXN1YnRp
dGxlKToKKyAgICAgICAgKCNuZXR3b3JrLXZpZXdzIC5uZXR3b3JrLWl0ZW0tdmlldyAudGFiYmVk
LXBhbmUtaGVhZGVyKToKKyAgICAgICAgKCNuZXR3b3JrLXZpZXdzLnNtYWxsIC5uZXR3b3JrLWl0
ZW0tdmlldyAudGFiYmVkLXBhbmUtaGVhZGVyKToKKyAgICAgICAgKC5uZXR3b3JrLWl0ZW0tdmll
dyk6CisgICAgICAgICgubmV0d29yay1pdGVtLXZpZXcudmlzaWJsZSk6CisgICAgICAgICgubmV0
d29yay1pdGVtLXZpZXcgLnRhYmJlZC1wYW5lLWhlYWRlcik6CisgICAgICAgICgubmV0d29yay1p
dGVtLXZpZXcgLnNjb3BlLWJhciBsaSk6CisgICAgICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3
KToKKyAgICAgICAgKC5yZXNvdXJjZS1oZWFkZXJzLXZpZXcudmlzaWJsZSk6CisgICAgICAgICgu
cmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgLnBhcmVudCk6CisgICAg
ICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgLmNoaWxkcmVu
IGxpKToKKyAgICAgICAgKC5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3Vy
ZSBsaS5leHBhbmRlZCAuaGVhZGVyLWNvdW50KToKKyAgICAgICAgKC5yZXNvdXJjZS1oZWFkZXJz
LXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSAuaGVhZGVyLW5hbWUpOgorICAgICAgICAoLnJlc291
cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIC5oZWFkZXItdmFsdWUpOgorICAg
ICAgICAoLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIC5yYXctZm9y
bS1kYXRhKToKKyAgICAgICAgKC5yZXNvdXJjZS1jb29raWVzLXZpZXcpOgorICAgICAgICAoLnJl
c291cmNlLWNvb2tpZXMtdmlldy52aXNpYmxlKToKKyAgICAgICAgKC5yZXNvdXJjZS1jb29raWVz
LXZpZXcgLmRhdGEtZ3JpZCk6CisgICAgICAgICgucmVzb3VyY2UtY29va2llcy12aWV3IC5kYXRh
LWdyaWQgLnJvdy1ncm91cCk6CisKIDIwMTAtMTEtMjMgIEplcmVteSBPcmxvdyAgPGpvcmxvd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDRlYjExYjkuLjlhYjhjODgg
MTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzIGFuZCBiL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBjYmY3ODE0Li5iNzUzNTQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDQzMiw2ICs0NDMyLDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcycsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29va2llUGFyc2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU0NvbXBsZXRpb25zLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NTU1N0eWxlTW9kZWwuanMnLApAQCAtNDQ2Nyw2ICs0NDY4LDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcycsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL09iamVjdC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9PYmpl
Y3RQcm9wZXJ0aWVzU2VjdGlvbi5qcycsCkBAIC00NDgzLDYgKzQ0ODUsOCBAQAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcycsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggODVkYjZmZC4uY2UwYzg1ZiAxMDA3NTUKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC02NDc1MCw2ICs2NDc1MCwxMCBAQAogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxDb29raWVzVGFibGUuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUN
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDb29raWVQYXJzZXIu
anMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC02NDkwNiw2ICs2NDkxMCwxMCBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxOZXR3b3JrSXRlbVZpZXcuanMiDQorCQkJCQk+DQorCQkJCTwvRmls
ZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxOZXR3b3JrUGFuZWwuanMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC02NDk3MCw2ICs2
NDk3OCwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZUNvb2tpZXNWaWV3LmpzIg0K
KwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VIZWFkZXJzVmlldy5qcyINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXFJlc291cmNlTWFuYWdlci5qcyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCmluZGV4IGIy
ZGE4NzUuLjc1YzdmODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b29raWVJdGVtc1ZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZUl0ZW1zVmlldy5qcwpAQCAtMjcsMTQ5ICsyNywxOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rv
ci5WaWV3LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygidGFi
bGUiKTsKLX0KLQotV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUgPSB7Ci0gICAg
cmVzaXplOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9hdXRvU2l6aW5nRG9uZSkK
LSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHRoaXMuX2F1dG9TaXppbmdEb25lID0gdHJ1ZTsKLSAgICAgICAgICAg
IHRoaXMuX2RhdGFHcmlkLmF1dG9TaXplQ29sdW1ucyg0LCA0NSwgMSk7Ci0gICAgICAgIH0KLSAg
ICB9LAotCi0gICAgX2NyZWF0ZURhdGFHcmlkOiBmdW5jdGlvbihleHBhbmRhYmxlKQotICAgIHsK
LSAgICAgICAgdmFyIGNvbHVtbnMgPSB7IDA6IHt9LCAxOiB7fSwgMjoge30sIDM6IHt9LCA0OiB7
fSwgNToge30sIDY6IHt9LCA3OiB7fSB9OwotICAgICAgICBjb2x1bW5zWzBdLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJOYW1lIik7Ci0gICAgICAgIGNvbHVtbnNbMF0uc29ydGFibGUg
PSB0cnVlOwotICAgICAgICBjb2x1bW5zWzBdLmRpc2Nsb3N1cmUgPSBleHBhbmRhYmxlOwotICAg
ICAgICBjb2x1bW5zWzFdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIpOwot
ICAgICAgICBjb2x1bW5zWzFdLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgY29sdW1uc1syXS50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9tYWluIik7Ci0gICAgICAgIGNvbHVtbnNb
Ml0uc29ydGFibGUgPSB0cnVlOwotICAgICAgICBjb2x1bW5zWzNdLnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJQYXRoIik7Ci0gICAgICAgIGNvbHVtbnNbM10uc29ydGFibGUgPSB0cnVl
OwotICAgICAgICBjb2x1bW5zWzRdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBp
cmVzIik7Ci0gICAgICAgIGNvbHVtbnNbNF0uc29ydGFibGUgPSB0cnVlOwotICAgICAgICBjb2x1
bW5zWzVdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXplIik7Ci0gICAgICAgIGNv
bHVtbnNbNV0uYWxpZ25lZCA9ICJyaWdodCI7Ci0gICAgICAgIGNvbHVtbnNbNV0uc29ydGFibGUg
PSB0cnVlOwotICAgICAgICBjb2x1bW5zWzZdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJIVFRQIik7Ci0gICAgICAgIGNvbHVtbnNbNl0uYWxpZ25lZCA9ICJjZW50ZXJlZCI7Ci0gICAg
ICAgIGNvbHVtbnNbNl0uc29ydGFibGUgPSB0cnVlOwotICAgICAgICBjb2x1bW5zWzddLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWN1cmUiKTsKLSAgICAgICAgY29sdW1uc1s3XS5h
bGlnbmVkID0gImNlbnRlcmVkIjsKLSAgICAgICAgY29sdW1uc1s3XS5zb3J0YWJsZSA9IHRydWU7
Ci0KLSAgICAgICAgdmFyIGRlbGV0ZUNhbGxiYWNrID0gdGhpcy5fZGVsZXRlQ29va2llQ2FsbGJh
Y2sgPyB0aGlzLl9kZWxldGVDb29raWVDYWxsYmFjay5iaW5kKHRoaXMpIDogbnVsbDsKLSAgICAg
ICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMsIG51
bGwsIGRlbGV0ZUNhbGxiYWNrKTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0
ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5fcG9wdWxhdGVEYXRhR3JpZCwgdGhpcyk7Ci0g
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsK
LSAgICB9LAotCi0gICAgX3BvcHVsYXRlQ29va2llczogZnVuY3Rpb24ocGFyZW50Tm9kZSwgY29v
a2llcykKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3RlZENvb2tpZSA9IHRoaXMuX2RhdGFHcmlk
LnNlbGVjdGVkTm9kZSA/IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZS5jb29raWUgOiBudWxs
OwotICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGlmICghY29v
a2llcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fc29ydENvb2tpZXMoY29v
a2llcyk7Ci0gICAgICAgIHZhciB0b3RhbFNpemUgPSAwOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvb2tpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjb29raWVOb2Rl
ID0gdGhpcy5fY3JlYXRlR3JpZE5vZGUoY29va2llc1tpXSk7Ci0gICAgICAgICAgICBwYXJlbnRO
b2RlLmFwcGVuZENoaWxkKGNvb2tpZU5vZGUpOwotICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ29v
a2llID09PSBjb29raWVzW2ldKQotICAgICAgICAgICAgICAgIGNvb2tpZU5vZGUuc2VsZWN0ZWQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9zb3J0Q29va2llczogZnVuY3Rpb24o
Y29va2llcykKLSAgICB7Ci0gICAgICAgIHZhciBzb3J0RGlyZWN0aW9uID0gdGhpcy5fZGF0YUdy
aWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIiA/IDEgOiAtMTsKLQotICAgICAgICBmdW5jdGlv
biBsb2NhbGVDb21wYXJlKGZpZWxkLCBjb29raWUxLCBjb29raWUyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxW2ZpZWxkXSArICIiKS5sb2Nh
bGVDb21wYXJlKGNvb2tpZTJbZmllbGRdICsgIiIpCi0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBudW1iZXJDb21wYXJlKGZpZWxkLCBjb29raWUxLCBjb29raWUyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxW2ZpZWxkXSAtIGNvb2tp
ZTJbZmllbGRdKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGV4cGlyZXNDb21wYXJl
KGNvb2tpZTEsIGNvb2tpZTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb29raWUxLnNl
c3Npb24gIT09IGNvb2tpZTIuc2Vzc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gc29ydERp
cmVjdGlvbiAqIChjb29raWUxLnNlc3Npb24gPyAxIDogLTEpOwotCi0gICAgICAgICAgICBpZiAo
Y29va2llMS5zZXNzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgICAg
ICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLmV4cGlyZXMgLSBjb29raWUyLmV4cGly
ZXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGNvbXBhcmF0b3I7Ci0gICAgICAgIHN3aXRj
aCAocGFyc2VJbnQodGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIpKSB7Ci0gICAg
ICAgICAgICBjYXNlIDA6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgIm5h
bWUiKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDE6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21w
YXJlLmJpbmQodGhpcywgInZhbHVlIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAyOiBjb21w
YXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJkb21haW4iKTsgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIDM6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInBh
dGgiKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDQ6IGNvbXBhcmF0b3IgPSBleHBpcmVzQ29t
cGFyZTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDU6IGNvbXBhcmF0b3IgPSBudW1iZXJDb21w
YXJlLmJpbmQodGhpcywgInNpemUiKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDY6IGNvbXBh
cmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgImh0dHBPbmx5Iik7IGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSA3OiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJz
ZWN1cmUiKTsgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OiBsb2NhbGVDb21wYXJlLmJpbmQo
dGhpcywgIm5hbWUiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvb2tpZXMuc29ydChjb21wYXJh
dG9yKTsKLSAgICB9LAotCi0gICAgX2NyZWF0ZUdyaWROb2RlOiBmdW5jdGlvbihjb29raWUpCi0g
ICAgewotICAgICAgICB2YXIgZGF0YSA9IHt9OwotICAgICAgICBkYXRhWzBdID0gY29va2llLm5h
bWU7Ci0gICAgICAgIGRhdGFbMV0gPSBjb29raWUudmFsdWU7Ci0gICAgICAgIGRhdGFbMl0gPSBj
b29raWUuZG9tYWluIHx8ICIiOwotICAgICAgICBkYXRhWzNdID0gY29va2llLnBhdGggfHwgIiI7
Ci0gICAgICAgIGRhdGFbNF0gPSBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvb2tpZS5U
eXBlLlJlcXVlc3QgPyAiIiA6Ci0gICAgICAgICAgICAoY29va2llLnNlc3Npb24gPyBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5leHBpcmVzKS50b0dN
VFN0cmluZygpKTsKLSAgICAgICAgZGF0YVs1XSA9IGNvb2tpZS5zaXplOwotICAgICAgICBkYXRh
WzZdID0gKGNvb2tpZS5odHRwT25seSA/ICJcdTI3MTMiIDogIiIpOyAvLyBDaGVja21hcmsKLSAg
ICAgICAgZGF0YVs3XSA9IChjb29raWUuc2VjdXJlID8gIlx1MjcxMyIgOiAiIik7IC8vIENoZWNr
bWFyawotCi0gICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUo
ZGF0YSk7Ci0gICAgICAgIG5vZGUuY29va2llID0gY29va2llOwotICAgICAgICBub2RlLnNlbGVj
dGFibGUgPSB0cnVlOwotICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci19OwotCi1XZWJJbnNw
ZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGU7Ci0KIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcgPSBmdW5jdGlvbih0
cmVlRWxlbWVudCwgY29va2llRG9tYWluKQogewotICAgIFdlYkluc3BlY3Rvci5Db29raWVzVGFi
bGUuY2FsbCh0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogCiAgICAg
dGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInN0b3JhZ2UtdmlldyIpOwogCi0gICAgdGhpcy5k
ZWxldGVCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRlbGV0ZSIpLCAiZGVsZXRlLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7
Ci0gICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOwotICAgIHRoaXMuZGVsZXRl
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZGVsZXRlQnV0dG9uQ2xpY2tl
ZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5fZGVsZXRlQnV0dG9uID0gbmV3IFdlYklu
c3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUiKSwg
ImRlbGV0ZS1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOworICAgIHRoaXMuX2RlbGV0ZUJ1dHRv
bi52aXNpYmxlID0gZmFsc2U7CisgICAgdGhpcy5fZGVsZXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fZGVsZXRlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7
CisKKyAgICB0aGlzLl9yZWZyZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJC
dXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Ut
c3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZhbHNl
KTsKIAotICAgIHRoaXMucmVmcmVzaEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFy
QnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCIpLCAicmVmcmVzaC1zdG9yYWdl
LXN0YXR1cy1iYXItaXRlbSIpOwotICAgIHRoaXMucmVmcmVzaEJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZhbHNl
KTsKLSAgICAKICAgICB0aGlzLl90cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50OwogICAgIHRoaXMu
X2Nvb2tpZURvbWFpbiA9IGNvb2tpZURvbWFpbjsKIApAQCAtMTgyLDcgKzUyLDcgQEAgV2ViSW5z
cGVjdG9yLkNvb2tpZUl0ZW1zVmlldyA9IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBjb29raWVEb21h
aW4pCiBXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICBnZXQg
c3RhdHVzQmFySXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLnJlZnJlc2hCdXR0
b24uZWxlbWVudCwgdGhpcy5kZWxldGVCdXR0b24uZWxlbWVudF07CisgICAgICAgIHJldHVybiBb
dGhpcy5fcmVmcmVzaEJ1dHRvbi5lbGVtZW50LCB0aGlzLl9kZWxldGVCdXR0b24uZWxlbWVudF07
CiAgICAgfSwKIAogICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCkBAIC0xOTQsNyAr
NjQsMTMgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
aGlkZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlLmhpZGUuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9
IGZhbHNlOworICAgICAgICB0aGlzLl9kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOworICAg
IH0sCisKKyAgICByZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9j
b29raWVzVGFibGUpCisgICAgICAgICAgICB0aGlzLl9jb29raWVzVGFibGUudXBkYXRlV2lkdGhz
KCk7CiAgICAgfSwKIAogICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKQEAgLTIwNCw0NyArODAsMzUg
QEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfdXBk
YXRlV2l0aENvb2tpZXM6IGZ1bmN0aW9uKGFsbENvb2tpZXMsIGlzQWR2YW5jZWQpCiAgICAgewot
ICAgICAgICBpZiAoaXNBZHZhbmNlZCkKLSAgICAgICAgICAgIHRoaXMuX2ZpbHRlckNvb2tpZXNG
b3JEb21haW4oYWxsQ29va2llcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2Nv
b2tpZXMgPSBhbGxDb29raWVzOworICAgICAgICB0aGlzLl9jb29raWVzID0gaXNBZHZhbmNlZCA/
IHRoaXMuX2ZpbHRlckNvb2tpZXNGb3JEb21haW4oYWxsQ29va2llcykgOiBhbGxDb29raWVzOwor
CiAgICAgICAgIGlmICghdGhpcy5fY29va2llcy5sZW5ndGgpIHsKICAgICAgICAgICAgIC8vIE5v
dGhpbmcgdG8gc2hvdy4KICAgICAgICAgICAgIHRoaXMuX2VtcHR5TXNnRWxlbWVudC5yZW1vdmVT
dHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2li
bGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKLSAgICAgICAgICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAg
ICAgICAgICAgdGhpcy5fZGVsZXRlQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmICh0aGlzLl9jb29raWVzVGFibGUpCisgICAgICAgICAgICAgICAgdGhpcy5fY29va2llc1Rh
YmxlLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNBZHZhbmNlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURhdGFHcmlk
KCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVEYXRhR3JpZCgpOwotICAgICAgICAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLmF1dG9TaXplQ29sdW1ucyg2LCAzMyk7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fdHJlZUVsZW1lbnQuc3VidGl0bGUgPSBTdHJpbmcuc3ByaW50ZihXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIiVkIGNvb2tpZXMgKCVzKSIpLCB0aGlzLl9jb29raWVzLmxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5fdG90YWxTaXpl
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5fY3JlYXRlU2ltcGxlRGF0YUdyaWQoKTsKLSAgICAgICAgICAgICAgICB0
aGlzLl9wb3B1bGF0ZVNpbXBsZURhdGFHcmlkKCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuYXV0b1NpemVDb2x1bW5zKDIwLCA4MCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoaXNBZHZhbmNlZCkKLSAgICAgICAgICAgICAgICB0aGlz
Ll9wb3B1bGF0ZURhdGFHcmlkKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dGhpcy5fcG9wdWxhdGVTaW1wbGVEYXRhR3JpZCgpOworICAgICAgICBpZiAoIXRoaXMuX2Nvb2tp
ZXNUYWJsZSkgeworICAgICAgICAgICAgdGhpcy5fY29va2llc1RhYmxlID0gaXNBZHZhbmNlZCA/
IG5ldyBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlKHRoaXMuX2Nvb2tpZURvbWFpbiwgZmFsc2Us
IHRoaXMuX2RlbGV0ZUNvb2tpZS5iaW5kKHRoaXMpKSA6IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxl
Q29va2llc1RhYmxlKCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY29va2llc1RhYmxlLmVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fZGF0
YUdyaWQuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgdGhpcy5f
Y29va2llc1RhYmxlLnNldENvb2tpZXModGhpcy5fY29va2llcyk7CisgICAgICAgIHRoaXMuX2Nv
b2tpZXNUYWJsZS5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgICAgICB0
aGlzLl9lbXB0eU1zZ0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIGlm
IChpc0FkdmFuY2VkKQotICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IHRy
dWU7CisgICAgICAgIGlmIChpc0FkdmFuY2VkKSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxl
bWVudC5zdWJ0aXRsZSA9IFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQg
Y29va2llcyAoJXMpIiksIHRoaXMuX2Nvb2tpZXMubGVuZ3RoLAorICAgICAgICAgICAgICAgIE51
bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3RvdGFsU2l6ZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KSk7CisgICAgICAgICAgICB0aGlzLl9kZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7CisgICAg
ICAgIH0KICAgICB9LAogCiAgICAgX2ZpbHRlckNvb2tpZXNGb3JEb21haW46IGZ1bmN0aW9uKGFs
bENvb2tpZXMpCiAgICAgewotICAgICAgICB0aGlzLl9jb29raWVzID0gW107CisgICAgICAgIHZh
ciBjb29raWVzID0gW107CiAgICAgICAgIHZhciByZXNvdXJjZVVSTHNGb3JEb2N1bWVudFVSTCA9
IFtdOwogICAgICAgICB0aGlzLl90b3RhbFNpemUgPSAwOwogCkBAIC0yNjUsMzQgKzEyOSw1MiBA
QCBXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcHVzaGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoZWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29va2llcy5wdXNoKGFsbENvb2tpZXNbaV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29va2llcy5wdXNoKGFsbENvb2tpZXNbaV0pOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CisgICAgICAgIHJldHVybiBjb29raWVzOwogICAgIH0sCiAKLSAgICBfcG9wdWxhdGVE
YXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9kZWxldGVDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX3BvcHVsYXRlQ29va2llcyh0aGlzLl9kYXRhR3JpZCwgdGhp
cy5fY29va2llcyk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGVsZXRlQ29va2llKGNvb2tp
ZS5uYW1lLCB0aGlzLl9jb29raWVEb21haW4pOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAg
ICB9LAogCi0gICAgX2NyZWF0ZVNpbXBsZURhdGFHcmlkOiBmdW5jdGlvbigpCisgICAgX2RlbGV0
ZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBjb2x1bW5zID0g
e307Ci0gICAgICAgIGNvbHVtbnNbMF0gPSB7fTsKLSAgICAgICAgY29sdW1uc1sxXSA9IHt9Owot
ICAgICAgICBjb2x1bW5zWzBdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOYW1lIik7
Ci0gICAgICAgIGNvbHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVl
Iik7Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
KGNvbHVtbnMpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdy
aWQuZWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOworICAg
ICAgICBpZiAodGhpcy5fY29va2llc1RhYmxlLnNlbGVjdGVkQ29va2llKQorICAgICAgICAgICAg
dGhpcy5fZGVsZXRlQ29va2llKHRoaXMuX2Nvb2tpZXNUYWJsZS5zZWxlY3RlZENvb2tpZSk7CiAg
ICAgfSwKIAotICAgIF9wb3B1bGF0ZVNpbXBsZURhdGFHcmlkOiBmdW5jdGlvbigpCisgICAgX3Jl
ZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3VwZGF0ZSgpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOworCitXZWJJbnNw
ZWN0b3IuU2ltcGxlQ29va2llc1RhYmxlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHZhciBjb2x1bW5zID0ge307
CisgICAgY29sdW1uc1swXSA9IHt9OworICAgIGNvbHVtbnNbMV0gPSB7fTsKKyAgICBjb2x1bW5z
WzBdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOYW1lIik7CisgICAgY29sdW1uc1sx
XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKTsKKworICAgIHRoaXMuX2Rh
dGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKKyAgICB0aGlzLl9k
YXRhR3JpZC5hdXRvU2l6ZUNvbHVtbnMoMjAsIDgwKTsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRl
V2lkdGhzKCk7Cit9CisKK1dlYkluc3BlY3Rvci5TaW1wbGVDb29raWVzVGFibGUucHJvdG90eXBl
ID0geworICAgIHNldENvb2tpZXM6IGZ1bmN0aW9uKGNvb2tpZXMpCiAgICAgewotICAgICAgICB2
YXIgY29va2llcyA9IHRoaXMuX2Nvb2tpZXM7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92
ZUNoaWxkcmVuKCk7CiAgICAgICAgIHZhciBhZGRlZENvb2tpZXMgPSB7fTsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKSB7CkBAIC0zMTAsMjYgKzE5Miw5
IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5jaGlsZHJlblswXS5zZWxlY3RlZCA9IHRydWU7CiAgICAgfSwKIAotICAg
IF9kZWxldGVCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fZGF0YUdyaWQgfHwgIXRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9kZWxldGVDb29raWVDYWxsYmFjayh0aGlz
Ll9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpOwotICAgIH0sCi0KLSAgICBfZGVsZXRlQ29va2llQ2Fs
bGJhY2s6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICB2YXIgY29va2llID0gbm9kZS5j
b29raWU7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGVsZXRlQ29va2llKGNvb2tpZS5uYW1l
LCB0aGlzLl9jb29raWVEb21haW4pOwotICAgICAgICB0aGlzLl91cGRhdGUoKTsKLSAgICB9LAot
Ci0gICAgX3JlZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICByZXNpemU6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZSgpOworICAgICAgICBpZiAo
dGhpcy5fZGF0YUdyaWQpCisgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVXaWR0aHMo
KTsKICAgICB9CiB9Ci0KLVdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlOwotCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NDc5MTM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qcwpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybworICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJs
ZSA9IGZ1bmN0aW9uKGNvb2tpZURvbWFpbiwgZXhwYW5kYWJsZSwgZGVsZXRlQ2FsbGJhY2spCit7
CisgICAgdGhpcy5fY29va2llRG9tYWluID0gY29va2llRG9tYWluOworCisgICAgdmFyIGNvbHVt
bnMgPSB7IDA6IHt9LCAxOiB7fSwgMjoge30sIDM6IHt9LCA0OiB7fSwgNToge30sIDY6IHt9LCA3
OiB7fSB9OworICAgIGNvbHVtbnNbMF0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5h
bWUiKTsKKyAgICBjb2x1bW5zWzBdLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICBjb2x1bW5zWzBdLmRp
c2Nsb3N1cmUgPSBleHBhbmRhYmxlOworICAgIGNvbHVtbnNbMF0ud2lkdGggPSAiMjUlIjsKKyAg
ICBjb2x1bW5zWzFdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIpOworICAg
IGNvbHVtbnNbMV0uc29ydGFibGUgPSB0cnVlOworICAgIGNvbHVtbnNbMV0ud2lkdGggPSAiMzUl
IjsKKyAgICBjb2x1bW5zWzJdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEb21haW4i
KTsKKyAgICBjb2x1bW5zWzJdLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICBjb2x1bW5zWzJdLndpZHRo
ID0gIjclIjsKKyAgICBjb2x1bW5zWzNdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQ
YXRoIik7CisgICAgY29sdW1uc1szXS5zb3J0YWJsZSA9IHRydWU7CisgICAgY29sdW1uc1szXS53
aWR0aCA9ICI4JSI7CisgICAgY29sdW1uc1s0XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRXhwaXJlcyIpOworICAgIGNvbHVtbnNbNF0uc29ydGFibGUgPSB0cnVlOworICAgIGNvbHVt
bnNbNF0ud2lkdGggPSAiNyUiOworICAgIGNvbHVtbnNbNV0udGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNpemUiKTsKKyAgICBjb2x1bW5zWzVdLmFsaWduZWQgPSAicmlnaHQiOworICAg
IGNvbHVtbnNbNV0uc29ydGFibGUgPSB0cnVlOworICAgIGNvbHVtbnNbNV0ud2lkdGggPSAiOCUi
OworICAgIGNvbHVtbnNbNl0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhUVFAiKTsK
KyAgICBjb2x1bW5zWzZdLmFsaWduZWQgPSAiY2VudGVyZWQiOworICAgIGNvbHVtbnNbNl0uc29y
dGFibGUgPSB0cnVlOworICAgIGNvbHVtbnNbNl0ud2lkdGggPSAiNyUiOworICAgIGNvbHVtbnNb
N10udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyZSIpOworICAgIGNvbHVtbnNb
N10uYWxpZ25lZCA9ICJjZW50ZXJlZCI7CisgICAgY29sdW1uc1s3XS5zb3J0YWJsZSA9IHRydWU7
CisgICAgY29sdW1uc1s3XS53aWR0aCA9ICI4JSI7CisKKyAgICB0aGlzLl9kYXRhR3JpZCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgbnVsbCwgZGVsZXRlQ2FsbGJhY2sgPyB0
aGlzLl9vbkRlbGV0ZUZyb21HcmlkLmJpbmQodGhpcykgOiBudWxsKTsKKyAgICB0aGlzLl9kYXRh
R3JpZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLl9yZWJ1aWxkVGFi
bGUsIHRoaXMpOworCisgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fZGF0YUdyaWQuZWxlbWVudDsK
KyAgICB0aGlzLl9kYXRhID0gW107CisgICAgdGhpcy5fZGVsZXRlQ2FsbGJhY2sgPSBkZWxldGVD
YWxsYmFjazsKK30KKworV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUgPSB7Cisg
ICAgdXBkYXRlV2lkdGhzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZGF0
YUdyaWQpCisgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKKyAgICB9
LAorCisgICAgc2V0Q29va2llczogZnVuY3Rpb24oY29va2llcykKKyAgICB7CisgICAgICAgIHRo
aXMuX2RhdGEgPSBbe2Nvb2tpZXM6IGNvb2tpZXN9XTsKKyAgICAgICAgdGhpcy5fcmVidWlsZFRh
YmxlKCk7CisgICAgfSwKKworICAgIGFkZENvb2tpZXNGb2xkZXI6IGZ1bmN0aW9uKGZvbGRlck5h
bWUsIGNvb2tpZXMpCisgICAgeworICAgICAgICB0aGlzLl9kYXRhLnB1c2goe2Nvb2tpZXM6IGNv
b2tpZXMsIGZvbGRlck5hbWU6IGZvbGRlck5hbWV9KTsKKyAgICAgICAgdGhpcy5fcmVidWlsZFRh
YmxlKCk7CisgICAgfSwKKworICAgIGdldCBzZWxlY3RlZENvb2tpZSgpCisgICAgeworICAgICAg
ICB2YXIgbm9kZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZTsKKyAgICAgICAgcmV0dXJu
IG5vZGUgPyBub2RlLmNvb2tpZSA6IG51bGw7CisgICAgfSwKKworICAgIF9yZWJ1aWxkVGFibGU6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9kYXRhW2ldOworICAgICAgICAgICAgaWYg
KGl0ZW0uZm9sZGVyTmFtZSkgeworICAgICAgICAgICAgICAgIHZhciBncm91cERhdGEgPSBbIGl0
ZW0uZm9sZGVyTmFtZSwgIiIsICIiLCAiIiwgIiIsIHRoaXMuX3RvdGFsU2l6ZShpdGVtLmNvb2tp
ZXMpLCAiIiwgIiIgXTsKKyAgICAgICAgICAgICAgICB2YXIgZ3JvdXBOb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUoZ3JvdXBEYXRhKTsKKyAgICAgICAgICAgICAgICBncm91cE5v
ZGUuc2VsZWN0YWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBw
ZW5kQ2hpbGQoZ3JvdXBOb2RlKTsKKyAgICAgICAgICAgICAgICBncm91cE5vZGUuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJyb3ctZ3JvdXAiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0
ZU5vZGUoZ3JvdXBOb2RlLCBpdGVtLmNvb2tpZXMpOworICAgICAgICAgICAgICAgIGdyb3VwTm9k
ZS5leHBhbmQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3Bv
cHVsYXRlTm9kZSh0aGlzLl9kYXRhR3JpZCwgaXRlbS5jb29raWVzKTsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBfcG9wdWxhdGVOb2RlOiBmdW5jdGlvbihwYXJlbnROb2RlLCBjb29raWVzKQor
ICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGVkQ29va2llID0gdGhpcy5zZWxlY3RlZENvb2tpZTsK
KyAgICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICBpZiAoIWNvb2tp
ZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc29ydENvb2tpZXMoY29v
a2llcyk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIGNvb2tpZU5vZGUgPSB0aGlzLl9jcmVhdGVHcmlkTm9kZShjb29r
aWVzW2ldKTsKKyAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoY29va2llTm9kZSk7
CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDb29raWUgPT09IGNvb2tpZXNbaV0pCisgICAgICAg
ICAgICAgICAgY29va2llTm9kZS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgX3RvdGFsU2l6ZTogZnVuY3Rpb24oY29va2llcykKKyAgICB7CisgICAgICAgIHZhciB0
b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgY29va2llcyAmJiBpIDwgY29v
a2llcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBjb29raWVzW2ldLnNp
emU7CisgICAgICAgIHJldHVybiB0b3RhbFNpemU7CisgICAgfSwKKworICAgIF9zb3J0Q29va2ll
czogZnVuY3Rpb24oY29va2llcykKKyAgICB7CisgICAgICAgIHZhciBzb3J0RGlyZWN0aW9uID0g
dGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIiA/IDEgOiAtMTsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhbGVDb21wYXJlKGZpZWxkLCBjb29raWUxLCBjb29raWUyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxW2ZpZWxk
XSArICIiKS5sb2NhbGVDb21wYXJlKGNvb2tpZTJbZmllbGRdICsgIiIpCisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBudW1iZXJDb21wYXJlKGZpZWxkLCBjb29raWUxLCBjb29raWUyKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxW2Zp
ZWxkXSAtIGNvb2tpZTJbZmllbGRdKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGV4
cGlyZXNDb21wYXJlKGNvb2tpZTEsIGNvb2tpZTIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChjb29raWUxLnNlc3Npb24gIT09IGNvb2tpZTIuc2Vzc2lvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLnNlc3Npb24gPyAxIDogLTEpOworCisgICAg
ICAgICAgICBpZiAoY29va2llMS5zZXNzaW9uKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
CisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLmV4cGlyZXMgLSBj
b29raWUyLmV4cGlyZXMpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNvbXBhcmF0b3I7Cisg
ICAgICAgIHN3aXRjaCAocGFyc2VJbnQodGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZp
ZXIpKSB7CisgICAgICAgICAgICBjYXNlIDA6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJp
bmQodGhpcywgIm5hbWUiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6IGNvbXBhcmF0b3Ig
PSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInZhbHVlIik7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAyOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJkb21haW4iKTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJp
bmQodGhpcywgInBhdGgiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGNvbXBhcmF0b3Ig
PSBleHBpcmVzQ29tcGFyZTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGNvbXBhcmF0b3Ig
PSBudW1iZXJDb21wYXJlLmJpbmQodGhpcywgInNpemUiKTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDY6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgImh0dHBPbmx5Iik7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5i
aW5kKHRoaXMsICJzZWN1cmUiKTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBsb2NhbGVD
b21wYXJlLmJpbmQodGhpcywgIm5hbWUiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvb2tpZXMu
c29ydChjb21wYXJhdG9yKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZUdyaWROb2RlOiBmdW5jdGlv
bihjb29raWUpCisgICAgeworICAgICAgICB2YXIgZGF0YSA9IHt9OworICAgICAgICBkYXRhWzBd
ID0gY29va2llLm5hbWU7CisgICAgICAgIGRhdGFbMV0gPSBjb29raWUudmFsdWU7CisgICAgICAg
IGRhdGFbMl0gPSBjb29raWUuZG9tYWluIHx8ICIiOworICAgICAgICBkYXRhWzNdID0gY29va2ll
LnBhdGggfHwgIiI7CisgICAgICAgIGRhdGFbNF0gPSBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkNvb2tpZS5UeXBlLlJlcXVlc3QgPyAiIiA6CisgICAgICAgICAgICAoY29va2llLnNlc3Np
b24gPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5l
eHBpcmVzKS50b0dNVFN0cmluZygpKTsKKyAgICAgICAgZGF0YVs1XSA9IGNvb2tpZS5zaXplOwor
ICAgICAgICBjb25zdCBjaGVja21hcmsgPSAiXHUyNzEzIjsKKyAgICAgICAgZGF0YVs2XSA9IChj
b29raWUuaHR0cE9ubHkgPyBjaGVja21hcmsgOiAiIik7CisgICAgICAgIGRhdGFbN10gPSAoY29v
a2llLnNlY3VyZSA/IGNoZWNrbWFyayA6ICIiKTsKKworICAgICAgICB2YXIgbm9kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEpOworICAgICAgICBub2RlLmNvb2tpZSA9IGNv
b2tpZTsKKyAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG5v
ZGU7CisgICAgfSwKKworICAgIF9vbkRlbGV0ZUZyb21HcmlkOiBmdW5jdGlvbihub2RlKQorICAg
IHsKKyAgICAgICAgdGhpcy5fZGVsZXRlQ2FsbGJhY2sobm9kZS5jb29raWUpOworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwppbmRleCAw
YzY2MzZiLi44Y2QwMTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1WaWV3LmpzCkBAIC0xMjUsMTIgKzEyNSwxMiBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVZpZXcucHJvdG90eXBlID0gewogICAgIH0sCiAgICAgX3NlbGVjdEZpbGVTeXN0ZW1UYWI6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0VGFiQnlJZCgi
cGVyc2lzdGVudCIpOworICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYigicGVyc2lz
dGVudCIpOwogICAgIH0sCiAgICAgCiAgICAgc2VsZWN0VGVtcG9yYXJ5RmlsZVN5c3RlbVRhYjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWJCeUlk
KCJ0ZW1wIik7CisgICAgICAgIHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0VGFiKCJ0ZW1wIik7CiAg
ICAgfSwKIAogICAgIF9yZXZlYWxQZXJzaXN0ZW50Rm9sZGVySW5PUzogZnVuY3Rpb24oKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZvbnRWaWV3LmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZvbnRWaWV3LmpzCmluZGV4IDc4YTdlNzAuLjgyNTU5ZWYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMKQEAgLTM0LDEyICszNCwx
MiBAQCBXZWJJbnNwZWN0b3IuRm9udFZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKIH0KIAogV2Vi
SW5zcGVjdG9yLkZvbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBoYXNDb250ZW50VGFiOiBmdW5j
dGlvbigpCisgICAgaGFzQ29udGVudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSwKIAotICAgIGNvbnRlbnRUYWJTZWxlY3RlZDogZnVuY3Rpb24oKQorICAg
IF9jcmVhdGVDb250ZW50SWZOZWVkZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLmZvbnRQcmV2aWV3RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUxLDcgKzUx
LDcgQEAgV2ViSW5zcGVjdG9yLkZvbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZG9jdW1l
bnQuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLmZvbnRTdHlsZUVsZW1lbnQpOwogCiAgICAgICAgIHRo
aXMuZm9udFByZXZpZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5mb250UHJldmlld0Vs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5mb250UHJldmll
d0VsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuZm9udFByZXZpZXdFbGVtZW50LnN0eWxlLnNldFBy
b3BlcnR5KCJmb250LWZhbWlseSIsIHVuaXF1ZUZvbnROYW1lLCBudWxsKTsKICAgICAgICAgdGhp
cy5mb250UHJldmlld0VsZW1lbnQuaW5uZXJIVE1MID0gIkFCQ0RFRkdISUpLTE08YnI+Tk9QUVJT
VFVWV1hZWjxicj5hYmNkZWZnaGlqa2xtPGJyPm5vcHFyc3R1dnd4eXo8YnI+MTIzNDU2Nzg5MCI7
CkBAIC02Myw2ICs2Myw3IEBAIFdlYkluc3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgc2hvdzogZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50
KTsKKyAgICAgICAgdGhpcy5fY3JlYXRlQ29udGVudElmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMu
dXBkYXRlRm9udFByZXZpZXdTaXplKCk7CiAgICAgfSwKIApAQCAtODYsNyArODcsNyBAQCBXZWJJ
bnNwZWN0b3IuRm9udFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBjb25zdCB3aWR0aCA9IHRo
aXMuZm9udFByZXZpZXdFbGVtZW50Lm9mZnNldFdpZHRoOwogCiAgICAgICAgIC8vIFN1YnRyYWN0
IHNvbWUgcGFkZGluZy4gVGhpcyBzaG91bGQgbWF0Y2ggdGhlIHBhZGRpbmcgaW4gdGhlIENTUyBw
bHVzIHJvb20gZm9yIHRoZSBzY3JvbGxiYXIuCi0gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRo
ID0gdGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRXaWR0aCAtIDUwOworICAgICAgICBjb25zdCBj
b250YWluZXJXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCAtIDUwOwogCiAgICAgICAg
IGlmICghaGVpZ2h0IHx8ICF3aWR0aCB8fCAhY29udGFpbmVyV2lkdGgpIHsKICAgICAgICAgICAg
IHRoaXMuZm9udFByZXZpZXdFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJmb250LXNpemUi
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZpZXcuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VWaWV3LmpzCmluZGV4IGY3MGZhZDYu
LjU0YTE2YmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZp
ZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcwpAQCAt
MzQsMjYgKzM0LDMzIEBAIFdlYkluc3BlY3Rvci5JbWFnZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJj
ZSkKIH0KIAogV2ViSW5zcGVjdG9yLkltYWdlVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgaGFzQ29u
dGVudFRhYjogZnVuY3Rpb24oKQorICAgIGhhc0NvbnRlbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBjb250ZW50VGFiU2VsZWN0ZWQ6IGZ1
bmN0aW9uKCkKKyAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBh
cmVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl9jcmVhdGVDb250ZW50SWZOZWVkZWQoKTsKKyAg
ICB9LAorCisgICAgX2NyZWF0ZUNvbnRlbnRJZk5lZWRlZDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2NvbnRhaW5lcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
dGhpcy5fY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAg
IHRoaXMuX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiaW1hZ2UiOwotICAgICAgICB0aGlzLmNvbnRl
bnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lcik7CisKKyAgICAgICAgdmFyIGlt
YWdlQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGlt
YWdlQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJpbWFnZSI7CisgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChpbWFnZUNvbnRhaW5lcik7CiAKICAgICAgICAgdmFyIGltYWdlUHJldmlld0Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICAgaW1hZ2VQcmV2
aWV3RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJjZS1pbWFnZS12aWV3Iik7Ci0gICAgICAg
IHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZVByZXZpZXdFbGVtZW50KTsKKyAgICAg
ICAgaW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQoaW1hZ2VQcmV2aWV3RWxlbWVudCk7CiAKICAg
ICAgICAgdGhpcy5fY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc05hbWUgPSAiaW5mbyI7Ci0gICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lcik7CiAKICAgICAgICAgdmFyIGlt
YWdlTmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpOwogICAgICAgICBp
bWFnZU5hbWVFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aXRsZSI7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yZGRlODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcwpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9y
Lk5ldHdvcmtJdGVtVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIFdlYkluc3BlY3Rv
ci5WaWV3LmNhbGwodGhpcyk7CisKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmV0
d29yay1pdGVtLXZpZXciKTsKKworICAgIHRoaXMuX2hlYWRlcnNWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3KHJlc291cmNlKTsKKyAgICB0aGlzLl9jb250ZW50Vmll
dyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2Uo
cmVzb3VyY2UpOworICAgIHRoaXMuX2Nvb2tpZXNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNvb2tpZXNWaWV3KHJlc291cmNlKTsKKworICAgIHRoaXMuX3RhYmJlZFBhbmUgPSBuZXcg
V2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUodGhpcy5lbGVtZW50KTsKKyAgICB0aGlzLl90YWJiZWRQ
YW5lLmFwcGVuZFRhYigiaGVhZGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVhZGVycyIp
LCB0aGlzLl9oZWFkZXJzVmlldyk7CisgICAgaWYgKHRoaXMuX2NvbnRlbnRWaWV3Lmhhc0NvbnRl
bnQoKSkgeworICAgICAgICAvLyBSZXVzaW5nIHRoaXMgdmlldywgc28gaGlkZSBpdCBhdCBmaXJz
dC4KKyAgICAgICAgdGhpcy5fY29udGVudFZpZXcudmlzaWJsZSA9IGZhbHNlOworICAgICAgICB0
aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYigiY29udGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ29udGVudCIpLCB0aGlzLl9jb250ZW50Vmlldyk7CisgICAgfQorICAgIHRoaXMuX3RhYmJl
ZFBhbmUuYXBwZW5kVGFiKCJjb29raWVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb29raWVz
IiksIHRoaXMuX2Nvb2tpZXNWaWV3KTsKKyAgICB0aGlzLl90YWJiZWRQYW5lLmFkZEV2ZW50TGlz
dGVuZXIoInRhYi1zZWxlY3RlZCIsIHRoaXMuX3RhYlNlbGVjdGVkLCB0aGlzKTsKK30KKworV2Vi
SW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldy5wcm90b3R5cGUgPSB7CisgICAgc2hvdzogZnVuY3Rp
b24ocGFyZW50RWxlbWVudCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3Rv
dHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgICAgIHRoaXMuX3NlbGVj
dFRhYigpOworICAgIH0sCisKKyAgICBfc2VsZWN0VGFiOiBmdW5jdGlvbih0YWJJZCkKKyAgICB7
CisgICAgICAgIGlmICghdGFiSWQpCisgICAgICAgICAgICB0YWJJZCA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWI7CisKKyAgICAgICAgaWYgKCF0aGlzLl90YWJiZWRQYW5l
LnNlbGVjdFRhYih0YWJJZCkpIHsKKyAgICAgICAgICAgIHRoaXMuX2lzSW5GYWxsYmFja1NlbGVj
dGlvbiA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYigiaGVh
ZGVycyIpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2lzSW5GYWxsYmFja1NlbGVjdGlvbjsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICBfdGFiU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlVmlld1RhYiA9IGV2
ZW50LmRhdGEudGFiSWQ7CisgICAgfSwKKworICAgIHJlc2l6ZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2Nvb2tpZXNWaWV3LnZpc2libGUpCisgICAgICAgICAgICB0aGlz
Ll9jb29raWVzVmlldy5yZXNpemUoKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5OZXR3b3Jr
SXRlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDhl
ZjFiNzQuLjk5YmU0NzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBBbnRob255IFJpY2F1ZCA8cmlrQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02NDEsMjcgKzY0MSwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBzaG93OiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzKTsKLQogICAgICAg
ICB0aGlzLl9yZWZyZXNoSWZOZWVkZWQoKTsKIAotICAgICAgICB2YXIgdmlzaWJsZVZpZXcgPSB0
aGlzLnZpc2libGVWaWV3OwotICAgICAgICBpZiAodGhpcy52aXNpYmxlUmVzb3VyY2UpIHsKLSAg
ICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuaGVhZGVyc1Zpc2libGUgPSB0cnVlOworICAgICAg
ICBpZiAodGhpcy52aXNpYmxlVmlldykKICAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuc2hv
dyh0aGlzLl92aWV3c0NvbnRhaW5lckVsZW1lbnQpOwotICAgICAgICB9IGVsc2UgaWYgKHZpc2li
bGVWaWV3KQotICAgICAgICAgICAgdmlzaWJsZVZpZXcuc2hvdygpOwogCi0gICAgICAgIC8vIEhp
ZGUgYW55IHZpZXdzIHRoYXQgYXJlIHZpc2libGUgdGhhdCBhcmUgbm90IHRoaXMgcGFuZWwncyBj
dXJyZW50IHZpc2libGUgdmlldy4KLSAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gYSBS
ZXNvdXJjZVZpZXcgaXMgdmlzaWJsZSBpbiB0aGUgU2NyaXB0cyBwYW5lbCB0aGVuIHN3aXRjaGVk
Ci0gICAgICAgIC8vIHRvIHRoZSB0aGlzIHBhbmVsLgotICAgICAgICB2YXIgcmVzb3VyY2VzTGVu
Z3RoID0gdGhpcy5fcmVzb3VyY2VzLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCByZXNvdXJjZXNMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdGhp
cy5fcmVzb3VyY2VzW2ldOwotICAgICAgICAgICAgdmFyIHZpZXcgPSByZXNvdXJjZS5fcmVzb3Vy
Y2VzVmlldzsKLSAgICAgICAgICAgIGlmICghdmlldyB8fCB2aWV3ID09PSB2aXNpYmxlVmlldykK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHZpZXcudmlzaWJsZSA9IGZh
bHNlOwotICAgICAgICB9CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOwog
ICAgICAgICB0aGlzLl9wb3NpdGlvblN1bW1hcnlCYXIoKTsKICAgICB9LApAQCAtNjk2LDEzICs2
ODAsNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5wZXJmb3JtU2VhcmNoLmNhbGwodGhpcywgcXVl
cnkpOwogICAgIH0sCiAKLSAgICBnZXQgdmlzaWJsZVZpZXcoKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMudmlzaWJsZVJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZVJl
c291cmNlLl9yZXNvdXJjZXNWaWV3OwotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAotCiAg
ICAgcmVmcmVzaDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fbmVlZHNSZWZyZXNo
ID0gZmFsc2U7CkBAIC04MjksOCArODA2LDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcgPSBuZXdWaWV3
OwogCi0gICAgICAgIG5ld1ZpZXcuaGVhZGVyc1Zpc2libGUgPSBvbGRWaWV3LmhlYWRlcnNWaXNp
YmxlOwotCiAgICAgICAgIGlmIChvbGRWaWV3UGFyZW50Tm9kZSkKICAgICAgICAgICAgIG5ld1Zp
ZXcuc2hvdyhvbGRWaWV3UGFyZW50Tm9kZSk7CiAKQEAgLTg1NiwyMiArODMxLDE1IEBAIFdlYklu
c3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3RvZ2ds
ZVZpZXdpbmdSZXNvdXJjZU1vZGUoKTsKIAotICAgICAgICBpZiAodGhpcy52aXNpYmxlUmVzb3Vy
Y2UgJiYgdGhpcy52aXNpYmxlUmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcpCi0gICAgICAgICAgICB0
aGlzLnZpc2libGVSZXNvdXJjZS5fcmVzb3VyY2VzVmlldy5oaWRlKCk7CisgICAgICAgIGlmICh0
aGlzLnZpc2libGVWaWV3KSB7CisgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmRldGFjaCgp
OworICAgICAgICAgICAgZGVsZXRlIHRoaXMudmlzaWJsZVZpZXc7CisgICAgICAgIH0KIAotICAg
ICAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3
Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICB2aWV3LmhlYWRlcnNWaXNpYmxlID0gdHJ1
ZTsKKyAgICAgICAgdmFyIHZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldyhy
ZXNvdXJjZSk7CiAgICAgICAgIHZpZXcuc2hvdyh0aGlzLl92aWV3c0NvbnRhaW5lckVsZW1lbnQp
OworICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gdmlldzsKIAotICAgICAgICBpZiAobGluZSkg
ewotICAgICAgICAgICAgdmlldy5zZWxlY3RDb250ZW50VGFiKCk7Ci0gICAgICAgICAgICBpZiAo
dmlldy5yZXZlYWxMaW5lKQotICAgICAgICAgICAgICAgIHZpZXcucmV2ZWFsTGluZShsaW5lKTsK
LSAgICAgICAgICAgIGlmICh2aWV3LmhpZ2hsaWdodExpbmUpCi0gICAgICAgICAgICAgICAgdmll
dy5oaWdobGlnaHRMaW5lKGxpbmUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy52aXNpYmxl
UmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICAgICAgdGhpcy51cGRhdGVTaWRlYmFyV2lkdGgoKTsK
ICAgICB9LAogCkBAIC04NzksOSArODQ3LDEwIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwu
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoInZpZXdpbmctcmVzb3VyY2UiKTsKIAotICAgICAgICBpZiAodGhpcy52aXNpYmxlUmVzb3Vy
Y2UgJiYgdGhpcy52aXNpYmxlUmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcpCi0gICAgICAgICAgICB0
aGlzLnZpc2libGVSZXNvdXJjZS5fcmVzb3VyY2VzVmlldy5oaWRlKCk7Ci0gICAgICAgIGRlbGV0
ZSB0aGlzLnZpc2libGVSZXNvdXJjZTsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpIHsK
KyAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CisgICAgICAgICAgICBkZWxl
dGUgdGhpcy52aXNpYmxlVmlldzsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9sYXN0
U2VsZWN0ZWRHcmFwaFRyZWVFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVk
R3JhcGhUcmVlRWxlbWVudC5zZWxlY3QodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZUNvb2tpZXNWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU0MTkwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VDb29raWVzVmlldy5qcwpAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1ZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sK
KyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJyZXNvdXJjZS1jb29raWVzLXZpZXciKTsKKworICAgIHRoaXMuX3Jlc291cmNl
ID0gcmVzb3VyY2U7CisKKyAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJyZXF1ZXN0SGVh
ZGVycyBjaGFuZ2VkIiwgdGhpcy5zaG93LCB0aGlzKTsKKyAgICByZXNvdXJjZS5hZGRFdmVudExp
c3RlbmVyKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIsIHRoaXMuc2hvdywgdGhpcyk7Cit9CisK
K1dlYkluc3BlY3Rvci5SZXNvdXJjZUNvb2tpZXNWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBzaG93
OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yZXNv
dXJjZS5yZXF1ZXN0Q29va2llcyAmJiAhdGhpcy5fcmVzb3VyY2UucmVzcG9uc2VDb29raWVzKSB7
CisgICAgICAgICAgICBpZiAoIXRoaXMuX2VtcHR5TXNnRWxlbWVudCkgeworICAgICAgICAgICAg
ICAgIHRoaXMuX2VtcHR5TXNnRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICAgICAgICAgIHRoaXMuX2VtcHR5TXNnRWxlbWVudC5jbGFzc05hbWUgPSAic3Rv
cmFnZS1lbXB0eS12aWV3IjsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eU1zZ0VsZW1lbnQu
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgcmVxdWVzdCBoYXMgbm8g
Y29va2llcy4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fZW1wdHlNc2dFbGVtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fZW1wdHlNc2dF
bGVtZW50KQorICAgICAgICAgICAgdGhpcy5fZW1wdHlNc2dFbGVtZW50LnBhcmVudEVsZW1lbnQu
cmVtb3ZlQ2hpbGQodGhpcy5fZW1wdHlNc2dFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jb29r
aWVzVGFibGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZShudWxsLCB0cnVlLCB0cnVl
KTsKKyAgICAgICAgdGhpcy5fY29va2llc1RhYmxlLmFkZENvb2tpZXNGb2xkZXIoV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZXF1ZXN0IENvb2tpZXMiKSwgdGhpcy5fcmVzb3VyY2UucmVxdWVzdENv
b2tpZXMpOworICAgICAgICB0aGlzLl9jb29raWVzVGFibGUuYWRkQ29va2llc0ZvbGRlcihXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIENvb2tpZXMiKSwgdGhpcy5fcmVzb3VyY2UucmVz
cG9uc2VDb29raWVzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nv
b2tpZXNUYWJsZS5lbGVtZW50KTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5
cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb29raWVz
VGFibGUudXBkYXRlV2lkdGhzKCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
b29raWVzVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVh
ZGVyc1ZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJz
Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTEwMTBmCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVy
c1ZpZXcuanMKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgSUJN
IENvcnAuIDIwMDkgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VI
ZWFkZXJzVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3
LmNhbGwodGhpcyk7CisgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJlc291cmNlLWhl
YWRlcnMtdmlldyIpOworCisgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKKworICAgIHRo
aXMuX2hlYWRlcnNMaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Cisg
ICAgdGhpcy5faGVhZGVyc0xpc3RFbGVtZW50LmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1
cmUiOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJzTGlzdEVsZW1l
bnQpOworCisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKHRo
aXMuX2hlYWRlcnNMaXN0RWxlbWVudCk7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmV4
cGFuZFRyZWVFbGVtZW50c1doZW5BcnJvd2luZyA9IHRydWU7CisKKyAgICB0aGlzLl91cmxUcmVl
RWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgZmFsc2UpOworICAgIHRoaXMuX3Vy
bFRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLl9oZWFkZXJzVHJlZU91
dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5fdXJsVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fcmVx
dWVzdE1ldGhvZFRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCBmYWxzZSk7
CisgICAgdGhpcy5fcmVxdWVzdE1ldGhvZFRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsK
KyAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5fcmVxdWVzdE1l
dGhvZFRyZWVFbGVtZW50KTsKKworICAgIHRoaXMuX3N0YXR1c0NvZGVUcmVlRWxlbWVudCA9IG5l
dyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgZmFsc2UpOworICAgIHRoaXMuX3N0YXR1c0NvZGVUcmVl
RWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKHRoaXMuX3N0YXR1c0NvZGVUcmVlRWxlbWVudCk7CisgICAgIAorICAgIHRo
aXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGws
IHRydWUpOworICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQuZXhwYW5kZWQgPSB0
cnVlOworICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZh
bHNlOworICAgIHRoaXMuX2hlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9yZXF1
ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKKworICAgIHRoaXMuX2RlY29kZUhvdmVyID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEb3VibGUtQ2xpY2sgdG8gdG9nZ2xlIGJldHdlZW4gVVJMIGVuY29k
ZWQgYW5kIGRlY29kZWQgZm9ybWF0cyIpOworICAgIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0
ZXJzID0gdHJ1ZTsKKworICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQgPSBuZXcgVHJl
ZUVsZW1lbnQoIiIsIG51bGwsIHRydWUpOworICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1l
bnQuZXhwYW5kZWQgPSB0cnVlOworICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuc2Vs
ZWN0YWJsZSA9IGZhbHNlOworICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuaGlkZGVu
ID0gdHJ1ZTsKKyAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5f
cXVlcnlTdHJpbmdUcmVlRWxlbWVudCk7CisKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50
ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCB0cnVlKTsKKyAgICB0aGlzLl9mb3JtRGF0YVRy
ZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50
LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50LmhpZGRl
biA9IHRydWU7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMu
X2Zvcm1EYXRhVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fcmVxdWVzdFBheWxvYWRUcmVlRWxl
bWVudCA9IG5ldyBUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgUGF5
bG9hZCIpLCBudWxsLCB0cnVlKTsKKyAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50
LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LnNl
bGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50Lmhp
ZGRlbiA9IHRydWU7CisgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRo
aXMuX3JlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQpOworCisgICAgdGhpcy5fcmVzcG9uc2VIZWFk
ZXJzVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIHRydWUpOworICAgIHRo
aXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKKyAgICB0aGlz
Ll9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgdGhp
cy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1Ry
ZWVFbGVtZW50KTsKKworICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlcXVlc3RIZWFk
ZXJzIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMsIHRoaXMpOworICAgIHJl
c291cmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc3BvbnNlSGVhZGVycyBjaGFuZ2VkIiwgdGhpcy5f
cmVmcmVzaFJlc3BvbnNlSGVhZGVycywgdGhpcyk7CisgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0
ZW5lcigiZmluaXNoZWQiLCB0aGlzLl9yZWZyZXNoSFRUUEluZm9ybWF0aW9uLCB0aGlzKTsKKwor
ICAgIHRoaXMuX3JlZnJlc2hVUkwoKTsKKyAgICB0aGlzLl9yZWZyZXNoUXVlcnlTdHJpbmcoKTsK
KyAgICB0aGlzLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMoKTsKKyAgICB0aGlzLl9yZWZyZXNoUmVz
cG9uc2VIZWFkZXJzKCk7CisgICAgdGhpcy5fcmVmcmVzaEhUVFBJbmZvcm1hdGlvbigpOworfQor
CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CisKKyAgICBf
cmVmcmVzaFVSTDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdXJsVHJlZUVsZW1l
bnQudGl0bGVIVE1MID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlcXVlc3QgVVJMIikgKyAiOjwvZGl2PiIgKworICAgICAgICAgICAgIjxk
aXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsgdGhpcy5fcmVzb3VyY2Uu
dXJsLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iOworICAgIH0sCisKKyAgICBfcmVmcmVzaFF1ZXJ5
U3RyaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0g
dGhpcy5fcmVzb3VyY2UucXVlcnlQYXJhbWV0ZXJzOworICAgICAgICB0aGlzLl9xdWVyeVN0cmlu
Z1RyZWVFbGVtZW50LmhpZGRlbiA9ICFxdWVyeVBhcmFtZXRlcnM7CisgICAgICAgIGlmIChxdWVy
eVBhcmFtZXRlcnMpCisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoUGFybXMoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJRdWVyeSBTdHJpbmcgUGFyYW1ldGVycyIpLCBxdWVyeVBhcmFtZXRlcnMsIHRo
aXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQpOworICAgIH0sCisKKyAgICBfcmVmcmVzaEZvcm1E
YXRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9mb3JtRGF0YVRyZWVFbGVtZW50
LmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX3JlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQu
aGlkZGVuID0gdHJ1ZTsKKworICAgICAgICB2YXIgZm9ybURhdGEgPSB0aGlzLl9yZXNvdXJjZS5y
ZXF1ZXN0Rm9ybURhdGE7CisgICAgICAgIGlmICghZm9ybURhdGEpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIGZvcm1QYXJhbWV0ZXJzID0gdGhpcy5fcmVzb3VyY2UuZm9ybVBh
cmFtZXRlcnM7CisgICAgICAgIGlmIChmb3JtUGFyYW1ldGVycykgeworICAgICAgICAgICAgdGhp
cy5fZm9ybURhdGFUcmVlRWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMu
X3JlZnJlc2hQYXJtcyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm0gRGF0YSIpLCBmb3JtUGFy
YW1ldGVycywgdGhpcy5fZm9ybURhdGFUcmVlRWxlbWVudCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmhpZGRlbiA9IGZhbHNl
OworICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3RQYXlsb2FkKGZvcm1EYXRhKTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICBfcmVmcmVzaFJlcXVlc3RQYXlsb2FkOiBmdW5jdGlvbihm
b3JtRGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQu
cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1cInJh
dy1mb3JtLWRhdGEgaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGZvcm1EYXRhLmVzY2Fw
ZUhUTUwoKSArICI8L2Rpdj4iOworICAgICAgICB2YXIgcGFybVRyZWVFbGVtZW50ID0gbmV3IFRy
ZWVFbGVtZW50KG51bGwsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgcGFybVRyZWVFbGVtZW50LnRp
dGxlSFRNTCA9IHRpdGxlOworICAgICAgICBwYXJtVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZh
bHNlOworICAgICAgICB0aGlzLl9yZXF1ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmFwcGVuZENoaWxk
KHBhcm1UcmVlRWxlbWVudCk7CisgICAgfSwKKworICAgIF9yZWZyZXNoUGFybXM6IGZ1bmN0aW9u
KHRpdGxlLCBwYXJtcywgcGFybXNUcmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIHBhcm1zVHJl
ZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICBwYXJtc1RyZWVFbGVtZW50LnRp
dGxlSFRNTCA9IHRpdGxlICsgIjxzcGFuIGNsYXNzPVwiaGVhZGVyLWNvdW50XCI+IiArIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBwYXJtcy5sZW5ndGgpICsgIjwvc3Bhbj4iOworCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFybXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBuYW1lID0gcGFybXNbaV0ubmFtZTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBh
cm1zW2ldLnZhbHVlOworCisgICAgICAgICAgICB2YXIgZXJyb3JEZWNvZGluZyA9IGZhbHNlOwor
ICAgICAgICAgICAgaWYgKHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoIiUiKSA+PSAwKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlY29kZVVSSUNvbXBv
bmVudCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JEZWNvZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXCsvZywgIiAiKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFsdWVFc2NhcGVkID0gdmFsdWUuZXNjYXBlSFRNTCgpOworICAgICAgICAg
ICAgaWYgKGVycm9yRGVjb2RpbmcpCisgICAgICAgICAgICAgICAgdmFsdWVFc2NhcGVkICs9ICIg
PHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
KHVuYWJsZSB0byBkZWNvZGUgdmFsdWUpIikuZXNjYXBlSFRNTCgpICsgIjwvc3Bhbj4iOworCisg
ICAgICAgICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIG5h
bWUuZXNjYXBlSFRNTCgpICsgIjo8L2Rpdj4iOworICAgICAgICAgICAgdGl0bGUgKz0gIjxkaXYg
Y2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4iICsgdmFsdWVFc2NhcGVkICsgIjwv
ZGl2PiI7CisKKyAgICAgICAgICAgIHZhciBwYXJtVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1l
bnQobnVsbCwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50LnRpdGxl
SFRNTCA9IHRpdGxlOworICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBm
YWxzZTsKKyAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC50b29sdGlwID0gdGhpcy5fZGVjb2Rl
SG92ZXI7CisgICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQub25kYmxjbGljayA9IHRoaXMuX3Rv
Z2dsZVVSTGRlY29kaW5nLmJpbmQodGhpcyk7CisgICAgICAgICAgICBwYXJtc1RyZWVFbGVtZW50
LmFwcGVuZENoaWxkKHBhcm1UcmVlRWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
X3RvZ2dsZVVSTGRlY29kaW5nOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
X2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0gIXRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJz
OworICAgICAgICB0aGlzLl9yZWZyZXNoUXVlcnlTdHJpbmcoKTsKKyAgICAgICAgdGhpcy5fcmVm
cmVzaEZvcm1EYXRhKCk7CisgICAgfSwKKworICAgIF9nZXRIZWFkZXJWYWx1ZTogZnVuY3Rpb24o
aGVhZGVycywga2V5KQorICAgIHsKKyAgICAgICAgdmFyIGxvd2VyS2V5ID0ga2V5LnRvTG93ZXJD
YXNlKCk7CisgICAgICAgIGZvciAodmFyIHRlc3RLZXkgaW4gaGVhZGVycykgeworICAgICAgICAg
ICAgaWYgKHRlc3RLZXkudG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJLZXkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGhlYWRlcnNbdGVzdEtleV07CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3Jl
ZnJlc2hSZXF1ZXN0SGVhZGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGFkZGl0
aW9uYWxSb3cgPSBudWxsOworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNv
Y2tldFJlcXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGFkZGl0aW9uYWxS
b3cgPSB7aGVhZGVyOiAiKEtleTMpIiwgdmFsdWU6IHRoaXMuX3Jlc291cmNlLndlYlNvY2tldFJl
cXVlc3RLZXkzfTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhl
YWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwor
ICAgICAgICB0aGlzLl9yZWZyZXNoRm9ybURhdGEoKTsKKyAgICB9LAorCisgICAgX3JlZnJlc2hS
ZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBhZGRpdGlvbmFs
Um93ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXNvdXJjZS53ZWJTb2NrZXRD
aGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBhZGRpdGlvbmFs
Um93ID0ge2hlYWRlcjogIihDaGFsbGVuZ2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMuX3Jlc291
cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlfTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhl
YWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMuX3Jl
c291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVzcG9u
c2VIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgIH0sCisKKyAgICBfcmVmcmVzaEhUVFBJbmZvcm1h
dGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RNZXRob2RFbGVtZW50
ID0gdGhpcy5fcmVxdWVzdE1ldGhvZFRyZWVFbGVtZW50OworICAgICAgICByZXF1ZXN0TWV0aG9k
RWxlbWVudC5oaWRkZW4gPSAhdGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZTsKKyAgICAgICAgdmFy
IHN0YXR1c0NvZGVFbGVtZW50ID0gdGhpcy5fc3RhdHVzQ29kZVRyZWVFbGVtZW50OworICAgICAg
ICBzdGF0dXNDb2RlRWxlbWVudC5oaWRkZW4gPSAhdGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZTsK
KyAgICAgICAgdmFyIHN0YXR1c0NvZGVJbWFnZSA9ICIiOworCisgICAgICAgIGlmICh0aGlzLl9y
ZXNvdXJjZS5zdGF0dXNDb2RlKSB7CisgICAgICAgICAgICB2YXIgc3RhdHVzSW1hZ2VTb3VyY2Ug
PSAiIjsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5zdGF0dXNDb2RlIDwgMzAwKQor
ICAgICAgICAgICAgICAgIHN0YXR1c0ltYWdlU291cmNlID0gIkltYWdlcy9zdWNjZXNzR3JlZW5E
b3QucG5nIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Jlc291cmNlLnN0YXR1c0NvZGUg
PCA0MDApCisgICAgICAgICAgICAgICAgc3RhdHVzSW1hZ2VTb3VyY2UgPSAiSW1hZ2VzL3dhcm5p
bmdPcmFuZ2VEb3QucG5nIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0
dXNJbWFnZVNvdXJjZSA9ICJJbWFnZXMvZXJyb3JSZWREb3QucG5nIjsKKworICAgICAgICAgICAg
dmFyIHN0YXR1c1RleHRFc2NhcGVkID0gdGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZSArICIgIiAr
IHRoaXMuX3Jlc291cmNlLnN0YXR1c1RleHQuZXNjYXBlSFRNTCgpOworICAgICAgICAgICAgc3Rh
dHVzQ29kZUltYWdlID0gIjxpbWcgY2xhc3M9XCJyZXNvdXJjZS1zdGF0dXMtaW1hZ2VcIiBzcmM9
XCIiICsgc3RhdHVzSW1hZ2VTb3VyY2UgKyAiXCIgdGl0bGU9XCIiICsgc3RhdHVzVGV4dEVzY2Fw
ZWQgKyAiXCI+IjsKKyAgICAKKyAgICAgICAgICAgIHJlcXVlc3RNZXRob2RFbGVtZW50LnRpdGxl
SFRNTCA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXF1ZXN0IE1ldGhvZCIpICsgIjo8L2Rpdj4iICsKKyAgICAgICAgICAgICAgICAiPGRp
diBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyB0aGlzLl9yZXNvdXJjZS5y
ZXF1ZXN0TWV0aG9kICsgIjwvZGl2PiI7CisKKyAgICAgICAgICAgIHN0YXR1c0NvZGVFbGVtZW50
LnRpdGxlSFRNTCA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdGF0dXMgQ29kZSIpICsgIjo8L2Rpdj4iICsKKyAgICAgICAgICAgICAgICBz
dGF0dXNDb2RlSW1hZ2UgKyAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwi
PiIgKyBzdGF0dXNUZXh0RXNjYXBlZCArICI8L2Rpdj4iOworICAgICAgICB9CisgICAgfSwKKyAg
ICAKKyAgICBfcmVmcmVzaEhlYWRlcnM6IGZ1bmN0aW9uKHRpdGxlLCBoZWFkZXJzLCBhZGRpdGlv
bmFsUm93LCBoZWFkZXJzVHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBoZWFkZXJzVHJlZUVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICB2YXIgbGVuZ3RoID0gaGVhZGVycy5s
ZW5ndGg7CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZS5lc2Nh
cGVIVE1MKCkgKyAiPHNwYW4gY2xhc3M9XCJoZWFkZXItY291bnRcIj4iICsgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIgKCVkKSIsIGxlbmd0aCkgKyAiPC9zcGFuPiI7CisgICAgICAgIGhlYWRlcnNU
cmVlRWxlbWVudC5oaWRkZW4gPSAhbGVuZ3RoOworCisgICAgICAgIHZhciBsZW5ndGggPSBoZWFk
ZXJzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBo
ZWFkZXJzW2ldLmhlYWRlci5lc2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7CisgICAgICAgICAgICB0
aXRsZSArPSAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBoZWFk
ZXJzW2ldLnZhbHVlLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iCisKKyAgICAgICAgICAgIHZhciBo
ZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Cisg
ICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKKyAgICAgICAg
ICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGhl
YWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoYWRkaXRpb25hbFJvdykgeworICAgICAgICAgICAgdmFyIHRpdGxl
ID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBhZGRpdGlvbmFsUm93LmhlYWRlci5l
c2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7CisgICAgICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFz
cz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBhZGRpdGlvbmFsUm93LnZhbHVlLmVz
Y2FwZUhUTUwoKSArICI8L2Rpdj4iCisKKyAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVu
dCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICBoZWFk
ZXJUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKKyAgICAgICAgICAgIGhlYWRlclRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVu
dC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qcwppbmRleCAxOWUzMDUyLi5hMjg0ZGExIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKQEAgLTcsMTMgKzcsMTMgQEAKICAqIGFy
ZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECkBAIC0zMCw0MDMgKzMwLDE1IEBACiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlz
KTsKLQogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJjZS12aWV3Iik7Ci0K
ICAgICB0aGlzLnJlc291cmNlID0gcmVzb3VyY2U7Ci0KLSAgICB0aGlzLnRhYmJlZFBhbmUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUodGhpcy5lbGVtZW50KTsKLQotICAgIHRoaXMuaGVh
ZGVyc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmhl
YWRlcnNFbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZS12aWV3LWhlYWRlcnMiOwotICAgIHRo
aXMudGFiYmVkUGFuZS5hcHBlbmRUYWIoImhlYWRlcnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkhlYWRlcnMiKSwgdGhpcy5oZWFkZXJzRWxlbWVudCwgdGhpcy5fc2VsZWN0VGFiLmJpbmQodGhp
cywgImhlYWRlcnMiKSk7Ci0KLSAgICBpZiAodGhpcy5oYXNDb250ZW50VGFiKCkpIHsKLSAgICAg
ICAgdGhpcy5jb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZS12aWV3LWNv
bnRlbnQiOwotICAgICAgICB0aGlzLnRhYmJlZFBhbmUuYXBwZW5kVGFiKCJjb250ZW50IiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDb250ZW50IiksIHRoaXMuY29udGVudEVsZW1lbnQsIHRoaXMu
X3NlbGVjdFRhYi5iaW5kKHRoaXMsICJjb250ZW50IikpOwotICAgIH0KLQotICAgIHRoaXMuaGVh
ZGVyc0xpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKLSAgICB0aGlz
LmhlYWRlcnNMaXN0RWxlbWVudC5jbGFzc05hbWUgPSAib3V0bGluZS1kaXNjbG9zdXJlIjsKLSAg
ICB0aGlzLmhlYWRlcnNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZGVyc0xpc3RFbGVtZW50
KTsKLQotICAgIHRoaXMuaGVhZGVyc1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKHRoaXMu
aGVhZGVyc0xpc3RFbGVtZW50KTsKLSAgICB0aGlzLmhlYWRlcnNUcmVlT3V0bGluZS5leHBhbmRU
cmVlRWxlbWVudHNXaGVuQXJyb3dpbmcgPSB0cnVlOwotCi0gICAgdGhpcy51cmxUcmVlRWxlbWVu
dCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgZmFsc2UpOwotICAgIHRoaXMudXJsVHJlZUVs
ZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMuaGVhZGVyc1RyZWVPdXRsaW5lLmFw
cGVuZENoaWxkKHRoaXMudXJsVHJlZUVsZW1lbnQpOwotCi0gICAgdGhpcy5yZXF1ZXN0TWV0aG9k
VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIGZhbHNlKTsKLSAgICB0aGlz
LnJlcXVlc3RNZXRob2RUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7Ci0gICAgdGhpcy5o
ZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5yZXF1ZXN0TWV0aG9kVHJlZUVsZW1l
bnQpOwotCi0gICAgdGhpcy5zdGF0dXNDb2RlVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQo
IiIsIG51bGwsIGZhbHNlKTsKLSAgICB0aGlzLnN0YXR1c0NvZGVUcmVlRWxlbWVudC5zZWxlY3Rh
YmxlID0gZmFsc2U7Ci0gICAgdGhpcy5oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhp
cy5zdGF0dXNDb2RlVHJlZUVsZW1lbnQpOwotICAgICAKLSAgICB0aGlzLnJlcXVlc3RIZWFkZXJz
VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIHRydWUpOwotICAgIHRoaXMu
cmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudC5leHBhbmRlZCA9IHRydWU7Ci0gICAgdGhpcy5yZXF1
ZXN0SGVhZGVyc1RyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICB0aGlzLmhlYWRl
cnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLnJlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQp
OwotCi0gICAgdGhpcy5fZGVjb2RlSG92ZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvdWJs
ZS1DbGljayB0byB0b2dnbGUgYmV0d2VlbiBVUkwgZW5jb2RlZCBhbmQgZGVjb2RlZCBmb3JtYXRz
Iik7Ci0gICAgdGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMgPSB0cnVlOwotCi0gICAgdGhp
cy5xdWVyeVN0cmluZ1RyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxsLCB0cnVl
KTsKLSAgICB0aGlzLnF1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuZXhwYW5kZWQgPSB0cnVlOwotICAg
IHRoaXMucXVlcnlTdHJpbmdUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7Ci0gICAgdGhp
cy5xdWVyeVN0cmluZ1RyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7Ci0gICAgdGhpcy5oZWFkZXJz
VHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodGhpcy5xdWVyeVN0cmluZ1RyZWVFbGVtZW50KTsKLQot
ICAgIHRoaXMuZm9ybURhdGFUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwg
dHJ1ZSk7Ci0gICAgdGhpcy5mb3JtRGF0YVRyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKLSAg
ICB0aGlzLmZvcm1EYXRhVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMu
Zm9ybURhdGFUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwotICAgIHRoaXMuaGVhZGVyc1RyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuZm9ybURhdGFUcmVlRWxlbWVudCk7Ci0KLSAgICB0aGlz
LnJlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXF1ZXN0IFBheWxvYWQiKSwgbnVsbCwgdHJ1ZSk7Ci0gICAgdGhpcy5yZXF1
ZXN0UGF5bG9hZFRyZWVFbGVtZW50LmV4cGFuZGVkID0gdHJ1ZTsKLSAgICB0aGlzLnJlcXVlc3RQ
YXlsb2FkVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgIHRoaXMucmVxdWVzdFBh
eWxvYWRUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwotICAgIHRoaXMuaGVhZGVyc1RyZWVPdXRs
aW5lLmFwcGVuZENoaWxkKHRoaXMucmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudCk7Ci0KLSAgICB0
aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIiLCBudWxs
LCB0cnVlKTsKLSAgICB0aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50LmV4cGFuZGVkID0g
dHJ1ZTsKLSAgICB0aGlzLnJlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBm
YWxzZTsKLSAgICB0aGlzLmhlYWRlcnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLnJlc3Bv
bnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKLQotICAgIHRoaXMuaGVhZGVyc1Zpc2libGUgPSB0cnVl
OwotCi0gICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigicmVxdWVzdEhlYWRlcnMgY2hhbmdl
ZCIsIHRoaXMuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycywgdGhpcyk7Ci0gICAgcmVzb3VyY2UuYWRk
RXZlbnRMaXN0ZW5lcigicmVzcG9uc2VIZWFkZXJzIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoUmVz
cG9uc2VIZWFkZXJzLCB0aGlzKTsKLSAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5p
c2hlZCIsIHRoaXMuX3JlZnJlc2hIVFRQSW5mb3JtYXRpb24sIHRoaXMpOwotCi0gICAgdGhpcy5f
cmVmcmVzaFVSTCgpOwotICAgIHRoaXMuX3JlZnJlc2hRdWVyeVN0cmluZygpOwotICAgIHRoaXMu
X3JlZnJlc2hSZXF1ZXN0SGVhZGVycygpOwotICAgIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRl
cnMoKTsKLSAgICB0aGlzLl9yZWZyZXNoSFRUUEluZm9ybWF0aW9uKCk7Ci0gICAgdGhpcy5fc2Vs
ZWN0VGFiKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewot
ICAgIGF0dGFjaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQu
cGFyZW50Tm9kZSkgewotICAgICAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc291cmNlLXZpZXdzIikgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNjcmlwdC1yZXNvdXJjZS12aWV3cyIpKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRFbGVt
ZW50KQotICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVt
ZW50KTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRFbGVt
ZW50KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnNob3cuY2Fs
bCh0aGlzLCBwYXJlbnRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5fc2VsZWN0VGFiKCk7Ci0gICAg
fSwKLQotICAgIHNldCBoZWFkZXJzVmlzaWJsZSh4KQorICAgIGhhc0NvbnRlbnQ6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIGlmICh4ID09PSB0aGlzLl9oZWFkZXJzVmlzaWJsZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5faGVhZGVyc1Zpc2libGUgPSB4OwotICAgICAg
ICBpZiAoeCkKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXJz
LXZpc2libGUiKTsgCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1v
dmVTdHlsZUNsYXNzKCJoZWFkZXJzLXZpc2libGUiKTsgCi0gICAgICAgIHRoaXMuX3NlbGVjdFRh
YigpOwotICAgIH0sCi0KLSAgICByZXNpemU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9jb29raWVzVmlldyAmJiAhdGhpcy5fY29va2llc1ZpZXcuZWxlbWVudC5oYXNTdHls
ZUNsYXNzKCJoaWRkZW4iKSkKLSAgICAgICAgICAgIHRoaXMuX2Nvb2tpZXNWaWV3LnJlc2l6ZSgp
OwotICAgIH0sCi0KLSAgICBzZWxlY3RDb250ZW50VGFiOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9zZWxlY3RUYWIoImNvbnRlbnQiKTsKLSAgICB9LAotCi0gICAgX3NlbGVjdFRh
YjogZnVuY3Rpb24odGFiKQotICAgIHsKLSAgICAgICAgaWYgKHRhYikKLSAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPSB0YWI7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgdmFyIHByZWZlcnJlZFRhYiA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5y
ZXNvdXJjZVZpZXdUYWI7Ci0gICAgICAgICAgICB0YWIgPSAiY29udGVudCI7Ci0KLSAgICAgICAg
ICAgIC8vIEhvbm9yIHVzZXIgdGFiIHByZWZlcmVuY2UgKGlmIHdlIGNhbikuIEZhbGxiYWNrIHRv
IGNvbnRlbnQgaWYgaGVhZGVycyBub3QgdmlzaWJsZSwgaGVhZGVycyBvdGhlcndpc2UuCi0gICAg
ICAgICAgICBpZiAodGhpcy5faGVhZGVyc1Zpc2libGUpCi0gICAgICAgICAgICAgICAgdGFiID0g
dGhpcy50YWJiZWRQYW5lLmhhc1RhYihwcmVmZXJyZWRUYWIpID8gcHJlZmVycmVkVGFiIDogImhl
YWRlcnMiOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMudGFiYmVkUGFuZS5zZWxlY3RUYWJCeUlk
KHRhYik7Ci0gICAgICAgIGlmICh0YWIgPT09ICJjb250ZW50IiAmJiB0aGlzLmhhc0NvbnRlbnRU
YWIoKSkKLSAgICAgICAgICAgIHRoaXMuY29udGVudFRhYlNlbGVjdGVkKCk7Ci0gICAgfSwKLQot
ICAgIGhhc0NvbnRlbnRUYWI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIERlcml2ZWQg
Y2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgYW5kIGRlZmluZSB0aGlzLmNvbnRl
bnRUYWJTZWxlY3RlZCBmb3IgY29udGVudCByZW5kZXJpbmcuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9LAotCi0gICAgX3JlZnJlc2hVUkw6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMudXJsVHJlZUVsZW1lbnQudGl0bGVIVE1MID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFt
ZVwiPiIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgVVJMIikgKyAiOjwvZGl2PiIg
KwotICAgICAgICAgICAgIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4i
ICsgdGhpcy5yZXNvdXJjZS51cmwuZXNjYXBlSFRNTCgpICsgIjwvZGl2PiI7Ci0gICAgfSwKLQot
ICAgIF9yZWZyZXNoUXVlcnlTdHJpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBx
dWVyeVBhcmFtZXRlcnMgPSB0aGlzLnJlc291cmNlLnF1ZXJ5UGFyYW1ldGVyczsKLSAgICAgICAg
dGhpcy5xdWVyeVN0cmluZ1RyZWVFbGVtZW50LmhpZGRlbiA9ICFxdWVyeVBhcmFtZXRlcnM7Ci0g
ICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMpCi0gICAgICAgICAgICB0aGlzLl9yZWZyZXNoUGFy
bXMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJRdWVyeSBTdHJpbmcgUGFyYW1ldGVycyIpLCBxdWVy
eVBhcmFtZXRlcnMsIHRoaXMucXVlcnlTdHJpbmdUcmVlRWxlbWVudCk7Ci0gICAgfSwKLQotICAg
IF9yZWZyZXNoRm9ybURhdGE6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZm9ybURh
dGFUcmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwotICAgICAgICB0aGlzLnJlcXVlc3RQYXlsb2Fk
VHJlZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKLQotICAgICAgICB2YXIgZm9ybURhdGEgPSB0aGlz
LnJlc291cmNlLnJlcXVlc3RGb3JtRGF0YTsKLSAgICAgICAgaWYgKCFmb3JtRGF0YSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgZm9ybVBhcmFtZXRlcnMgPSB0aGlzLnJlc291
cmNlLmZvcm1QYXJhbWV0ZXJzOwotICAgICAgICBpZiAoZm9ybVBhcmFtZXRlcnMpIHsKLSAgICAg
ICAgICAgIHRoaXMuZm9ybURhdGFUcmVlRWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKLSAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2hQYXJtcyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm0gRGF0YSIp
LCBmb3JtUGFyYW1ldGVycywgdGhpcy5mb3JtRGF0YVRyZWVFbGVtZW50KTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRoaXMucmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudC5oaWRkZW4g
PSBmYWxzZTsKLSAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0UGF5bG9hZChmb3JtRGF0
YSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX3JlZnJlc2hSZXF1ZXN0UGF5bG9hZDogZnVu
Y3Rpb24oZm9ybURhdGEpCi0gICAgewotICAgICAgICB0aGlzLnJlcXVlc3RQYXlsb2FkVHJlZUVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFz
cz1cInJhdy1mb3JtLWRhdGEgaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGZvcm1EYXRh
LmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iOwotICAgICAgICB2YXIgcGFybVRyZWVFbGVtZW50ID0g
bmV3IFRyZWVFbGVtZW50KG51bGwsIG51bGwsIGZhbHNlKTsKLSAgICAgICAgcGFybVRyZWVFbGVt
ZW50LnRpdGxlSFRNTCA9IHRpdGxlOwotICAgICAgICBwYXJtVHJlZUVsZW1lbnQuc2VsZWN0YWJs
ZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnJlcXVlc3RQYXlsb2FkVHJlZUVsZW1lbnQuYXBwZW5k
Q2hpbGQocGFybVRyZWVFbGVtZW50KTsKLSAgICB9LAotCi0gICAgX3JlZnJlc2hQYXJtczogZnVu
Y3Rpb24odGl0bGUsIHBhcm1zLCBwYXJtc1RyZWVFbGVtZW50KQotICAgIHsKLSAgICAgICAgcGFy
bXNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIHBhcm1zVHJlZUVsZW1l
bnQudGl0bGVIVE1MID0gdGl0bGUgKyAiPHNwYW4gY2xhc3M9XCJoZWFkZXItY291bnRcIj4iICsg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIHBhcm1zLmxlbmd0aCkgKyAiPC9zcGFuPiI7
Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJtcy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgdmFyIG5hbWUgPSBwYXJtc1tpXS5uYW1lOwotICAgICAgICAgICAgdmFyIHZhbHVl
ID0gcGFybXNbaV0udmFsdWU7Ci0KLSAgICAgICAgICAgIHZhciBlcnJvckRlY29kaW5nID0gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMpIHsKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigiJSIpID49IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGVjb2RlVVJJ
Q29tcG9uZW50KHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvckRlY29kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cKy9nLCAiICIpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICB2YWx1ZUVzY2FwZWQgPSB2YWx1ZS5lc2NhcGVIVE1MKCk7Ci0gICAg
ICAgICAgICBpZiAoZXJyb3JEZWNvZGluZykKLSAgICAgICAgICAgICAgICB2YWx1ZUVzY2FwZWQg
Kz0gIiA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj4iICsgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIodW5hYmxlIHRvIGRlY29kZSB2YWx1ZSkiKS5lc2NhcGVIVE1MKCkgKyAiPC9zcGFuPiI7
Ci0KLSAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4i
ICsgbmFtZS5lc2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7Ci0gICAgICAgICAgICB0aXRsZSArPSAi
PGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyB2YWx1ZUVzY2FwZWQg
KyAiPC9kaXY+IjsKLQotICAgICAgICAgICAgdmFyIHBhcm1UcmVlRWxlbWVudCA9IG5ldyBUcmVl
RWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQu
dGl0bGVIVE1MID0gdGl0bGU7Ci0gICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQuc2VsZWN0YWJs
ZSA9IGZhbHNlOwotICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50LnRvb2x0aXAgPSB0aGlzLl9k
ZWNvZGVIb3ZlcjsKLSAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC5vbmRibGNsaWNrID0gdGhp
cy5fdG9nZ2xlVVJMZGVjb2RpbmcuYmluZCh0aGlzKTsKLSAgICAgICAgICAgIHBhcm1zVHJlZUVs
ZW1lbnQuYXBwZW5kQ2hpbGQocGFybVRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICBfdG9nZ2xlVVJMZGVjb2Rpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMgPSAhdGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFt
ZXRlcnM7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hRdWVyeVN0cmluZygpOwotICAgICAgICB0aGlz
Ll9yZWZyZXNoRm9ybURhdGEoKTsKLSAgICB9LAotCi0gICAgX2dldEhlYWRlclZhbHVlOiBmdW5j
dGlvbihoZWFkZXJzLCBrZXkpCi0gICAgewotICAgICAgICB2YXIgbG93ZXJLZXkgPSBrZXkudG9M
b3dlckNhc2UoKTsKLSAgICAgICAgZm9yICh2YXIgdGVzdEtleSBpbiBoZWFkZXJzKSB7Ci0gICAg
ICAgICAgICBpZiAodGVzdEtleS50b0xvd2VyQ2FzZSgpID09PSBsb3dlcktleSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaGVhZGVyc1t0ZXN0S2V5XTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAg
ICBfcmVmcmVzaFJlcXVlc3RIZWFkZXJzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
YWRkaXRpb25hbFJvdyA9IG51bGw7Ci0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZS53
ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBhZGRpdGlv
bmFsUm93ID0ge2hlYWRlcjogIihLZXkzKSIsIHZhbHVlOiB0aGlzLnJlc291cmNlLndlYlNvY2tl
dFJlcXVlc3RLZXkzfTsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXF1ZXN0
SGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsK
LSAgICAgICAgdGhpcy5fcmVmcmVzaEZvcm1EYXRhKCk7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hD
b29raWVzKCk7Ci0gICAgfSwKLQotICAgIF9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7Ci0gICAgICAgIGlm
ICh0eXBlb2YgdGhpcy5yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSAhPT0gInVu
ZGVmaW5lZCIpCi0gICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihDaGFsbGVu
Z2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMucmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVz
cG9uc2V9OwotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhlYWRl
cnMsIGFkZGl0aW9uYWxSb3csIHRoaXMucmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwotICAg
ICAgICB0aGlzLl9yZWZyZXNoQ29va2llcygpOwotICAgIH0sCi0KLSAgICBfcmVmcmVzaEhUVFBJ
bmZvcm1hdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3RNZXRob2RF
bGVtZW50ID0gdGhpcy5yZXF1ZXN0TWV0aG9kVHJlZUVsZW1lbnQ7Ci0gICAgICAgIHJlcXVlc3RN
ZXRob2RFbGVtZW50LmhpZGRlbiA9ICF0aGlzLnJlc291cmNlLnN0YXR1c0NvZGU7Ci0gICAgICAg
IHZhciBzdGF0dXNDb2RlRWxlbWVudCA9IHRoaXMuc3RhdHVzQ29kZVRyZWVFbGVtZW50OwotICAg
ICAgICBzdGF0dXNDb2RlRWxlbWVudC5oaWRkZW4gPSAhdGhpcy5yZXNvdXJjZS5zdGF0dXNDb2Rl
OwotICAgICAgICB2YXIgc3RhdHVzQ29kZUltYWdlID0gIiI7Ci0KLSAgICAgICAgaWYgKHRoaXMu
cmVzb3VyY2Uuc3RhdHVzQ29kZSkgewotICAgICAgICAgICAgdmFyIHN0YXR1c0ltYWdlU291cmNl
ID0gIiI7Ci0gICAgICAgICAgICBpZiAodGhpcy5yZXNvdXJjZS5zdGF0dXNDb2RlIDwgMzAwKQot
ICAgICAgICAgICAgICAgIHN0YXR1c0ltYWdlU291cmNlID0gIkltYWdlcy9zdWNjZXNzR3JlZW5E
b3QucG5nIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucmVzb3VyY2Uuc3RhdHVzQ29kZSA8
IDQwMCkKLSAgICAgICAgICAgICAgICBzdGF0dXNJbWFnZVNvdXJjZSA9ICJJbWFnZXMvd2Fybmlu
Z09yYW5nZURvdC5wbmciOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0YXR1
c0ltYWdlU291cmNlID0gIkltYWdlcy9lcnJvclJlZERvdC5wbmciOwotCi0gICAgICAgICAgICB2
YXIgc3RhdHVzVGV4dEVzY2FwZWQgPSB0aGlzLnJlc291cmNlLnN0YXR1c0NvZGUgKyAiICIgKyB0
aGlzLnJlc291cmNlLnN0YXR1c1RleHQuZXNjYXBlSFRNTCgpOwotICAgICAgICAgICAgc3RhdHVz
Q29kZUltYWdlID0gIjxpbWcgY2xhc3M9XCJyZXNvdXJjZS1zdGF0dXMtaW1hZ2VcIiBzcmM9XCIi
ICsgc3RhdHVzSW1hZ2VTb3VyY2UgKyAiXCIgdGl0bGU9XCIiICsgc3RhdHVzVGV4dEVzY2FwZWQg
KyAiXCI+IjsKLSAgICAKLSAgICAgICAgICAgIHJlcXVlc3RNZXRob2RFbGVtZW50LnRpdGxlSFRN
TCA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVcIj4iICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXF1ZXN0IE1ldGhvZCIpICsgIjo8L2Rpdj4iICsKLSAgICAgICAgICAgICAgICAiPGRpdiBj
bGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyB0aGlzLnJlc291cmNlLnJlcXVl
c3RNZXRob2QgKyAiPC9kaXY+IjsKLQotICAgICAgICAgICAgc3RhdHVzQ29kZUVsZW1lbnQudGl0
bGVIVE1MID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0YXR1cyBDb2RlIikgKyAiOjwvZGl2PiIgKwotICAgICAgICAgICAgICAgIHN0YXR1
c0NvZGVJbWFnZSArICI8ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiAr
IHN0YXR1c1RleHRFc2NhcGVkICsgIjwvZGl2PiI7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIAot
ICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMsIGFkZGl0aW9uYWxS
b3csIGhlYWRlcnNUcmVlRWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGhlYWRlcnNUcmVlRWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIHZhciBsZW5ndGggPSBoZWFkZXJzLmxlbmd0
aDsKLSAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlLmVzY2FwZUhU
TUwoKSArICI8c3BhbiBjbGFzcz1cImhlYWRlci1jb3VudFwiPiIgKyBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiAoJWQpIiwgbGVuZ3RoKSArICI8L3NwYW4+IjsKLSAgICAgICAgaGVhZGVyc1RyZWVF
bGVtZW50LmhpZGRlbiA9ICFsZW5ndGg7Ci0KLSAgICAgICAgdmFyIGxlbmd0aCA9IGhlYWRlcnMu
bGVuZ3RoOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIGhlYWRl
cnNbaV0uaGVhZGVyLmVzY2FwZUhUTUwoKSArICI6PC9kaXY+IjsKLSAgICAgICAgICAgIHRpdGxl
ICs9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGhlYWRlcnNb
aV0udmFsdWUuZXNjYXBlSFRNTCgpICsgIjwvZGl2PiIKLQotICAgICAgICAgICAgdmFyIGhlYWRl
clRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KG51bGwsIG51bGwsIGZhbHNlKTsKLSAgICAg
ICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlOwotICAgICAgICAgICAg
aGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgaGVhZGVy
c1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChhZGRpdGlvbmFsUm93KSB7Ci0gICAgICAgICAgICB2YXIgdGl0bGUgPSAi
PGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIGFkZGl0aW9uYWxSb3cuaGVhZGVyLmVzY2Fw
ZUhUTUwoKSArICI6PC9kaXY+IjsKLSAgICAgICAgICAgIHRpdGxlICs9ICI8ZGl2IGNsYXNzPVwi
aGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGFkZGl0aW9uYWxSb3cudmFsdWUuZXNjYXBl
SFRNTCgpICsgIjwvZGl2PiIKLQotICAgICAgICAgICAgdmFyIGhlYWRlclRyZWVFbGVtZW50ID0g
bmV3IFRyZWVFbGVtZW50KG51bGwsIG51bGwsIGZhbHNlKTsKLSAgICAgICAgICAgIGhlYWRlclRy
ZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlOwotICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1l
bnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFw
cGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBf
cmVmcmVzaENvb2tpZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY29v
a2llc1ZpZXcpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5yZXNvdXJjZS5yZXF1ZXN0Q29va2ll
cyAmJiAhdGhpcy5yZXNvdXJjZS5yZXNwb25zZUNvb2tpZXMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgdGhpcy5fY29va2llc1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlQ29va2llc1RhYigpOwotICAgICAgICAgICAgdGhpcy50YWJiZWRQYW5lLmFwcGVuZFRh
YigiY29va2llcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29va2llcyIpLCB0aGlzLl9jb29r
aWVzVmlldywgdGhpcy5fc2VsZWN0VGFiLmJpbmQodGhpcywgImNvb2tpZXMiKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgdGhpcy5fY29va2llc1ZpZXcucmVxdWVzdENvb2tpZXMgPSB0aGlzLnJlc291
cmNlLnJlcXVlc3RDb29raWVzOwotICAgICAgICB0aGlzLl9jb29raWVzVmlldy5yZXNwb25zZUNv
b2tpZXMgPSB0aGlzLnJlc291cmNlLnJlc3BvbnNlQ29va2llczsKICAgICB9CiB9CiAKIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5W
aWV3LnByb3RvdHlwZTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29va2llc1RhYiA9IGZ1bmN0
aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLmNhbGwodGhpcyk7Ci0gICAg
dGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJlc291cmNlLXZpZXctY29va2llcyIpOwotICAg
IHRoaXMuX3JlcXVlc3RDb29raWVzID0gW107Ci0gICAgdGhpcy5fcmVzcG9uc2VDb29raWVzID0g
W107Ci0gICAgdGhpcy5fY3JlYXRlRGF0YUdyaWQodHJ1ZSk7Ci0gICAgdGhpcy5fcmVxdWVzdENv
b2tpZXNOb2RlID0gdGhpcy5fY3JlYXRlRm9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVx
dWVzdCBDb29raWVzIikpOwotICAgIHRoaXMuX3Jlc3BvbnNlQ29va2llc05vZGUgPSB0aGlzLl9j
cmVhdGVGb2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBDb29raWVzIikpOwot
fQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb29raWVzVGFiLnByb3RvdHlwZSA9IHsKLSAgICBz
aG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOwot
ICAgICAgICB0aGlzLnJlc2l6ZSgpOwotICAgIH0sCi0KLSAgICBzZXQgcmVxdWVzdENvb2tpZXMo
Y29va2llcykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Q29va2llcyA9PT0gY29v
a2llcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fcmVxdWVzdENvb2tpZXMg
PSBjb29raWVzOwotICAgICAgICB0aGlzLl9wb3B1bGF0ZUNvb2tpZXModGhpcy5fcmVxdWVzdENv
b2tpZXNOb2RlLCB0aGlzLl9yZXF1ZXN0Q29va2llcyk7Ci0gICAgfSwKLQotICAgIHNldCByZXNw
b25zZUNvb2tpZXMoY29va2llcykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNwb25zZUNv
b2tpZXMgPT09IGNvb2tpZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3Jl
c3BvbnNlQ29va2llcyA9IGNvb2tpZXM7Ci0gICAgICAgIHRoaXMuX3BvcHVsYXRlQ29va2llcyh0
aGlzLl9yZXNwb25zZUNvb2tpZXNOb2RlLCB0aGlzLl9yZXNwb25zZUNvb2tpZXMpOwotICAgIH0s
Ci0KLSAgICBfcG9wdWxhdGVEYXRhR3JpZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fcG9wdWxhdGVDb29raWVzKHRoaXMuX3JlcXVlc3RDb29raWVzTm9kZSwgdGhpcy5fcmVxdWVz
dENvb2tpZXMpOwotICAgICAgICB0aGlzLl9wb3B1bGF0ZUNvb2tpZXModGhpcy5fcmVzcG9uc2VD
b29raWVzTm9kZSwgdGhpcy5fcmVzcG9uc2VDb29raWVzKTsKLSAgICB9LAotCi0gICAgX3BvcHVs
YXRlQ29va2llczogZnVuY3Rpb24ocGFyZW50Tm9kZSwgY29va2llcykKLSAgICB7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLl9wb3B1bGF0ZUNvb2tpZXMuY2Fs
bCh0aGlzLCBwYXJlbnROb2RlLCBjb29raWVzKTsKLSAgICAgICAgdmFyIHRvdGFsU2l6ZSA9IDA7
Ci0gICAgICAgIGlmIChjb29raWVzKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvb2tpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdG90YWxTaXplICs9IGNvb2tp
ZXNbaV0uc2l6ZTsKLSAgICAgICAgfQotICAgICAgICBwYXJlbnROb2RlLmV4cGFuZGVkID0gdHJ1
ZTsKLSAgICAgICAgcGFyZW50Tm9kZS5kYXRhWzVdID0gdG90YWxTaXplOwotICAgICAgICBwYXJl
bnROb2RlLnJlZnJlc2goKTsKLSAgICB9LAotCi0gICAgX2NyZWF0ZUZvbGRlcjogZnVuY3Rpb24o
bmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBkYXRhID0gWyBuYW1lLCAiIiwgIiIsICIiLCAiIiwg
MCwgIiIsICIiIF07Ci0gICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUoZGF0YSk7Ci0gICAgICAgIG5vZGUuc2VsZWN0YWJsZSA9IHRydWU7Ci0gICAgICAgIG5v
ZGUuZXhwYW5kZWQgPSB0cnVlOwotICAgICAgICB0aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChu
b2RlKTsKLSAgICAgICAgbm9kZS5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJvdy1ncm91cCIpOwot
ICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VD
b29raWVzVGFiLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxl
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qcwppbmRleCA1Mjg1ZGFlLi5hODBjMmE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC05OSwxMSArOTksOCBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LlBhbmVsLnByb3RvdHlwZS5zaG93LmNhbGwodGhpcyk7CiAKLSAgICAgICAgaWYgKHRoaXMudmlz
aWJsZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3KSB7Ci0gICAgICAg
ICAgICAvLyBTb3VyY2VWaWV3cyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIHBhbmVscy4KLSAgICAg
ICAgICAgIHRoaXMudmlzaWJsZVZpZXcuaGVhZGVyc1Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAg
aWYgKHRoaXMudmlzaWJsZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
KQogICAgICAgICAgICAgdGhpcy52aXNpYmxlVmlldy5zaG93KHRoaXMuc3RvcmFnZVZpZXdzKTsK
LSAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9pbml0aWFsaXplZERlZmF1bHRTZWxlY3Rp
b24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTksNyArMzU2LDYgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAobGluZSkgewogICAg
ICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNl
Vmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgIHZpZXcuc2VsZWN0Q29udGVu
dFRhYigpOwogICAgICAgICAgICAgaWYgKHZpZXcucmV2ZWFsTGluZSkKICAgICAgICAgICAgICAg
ICB2aWV3LnJldmVhbExpbmUobGluZSk7CiAgICAgICAgICAgICBpZiAodmlldy5oaWdobGlnaHRM
aW5lKQpAQCAtMzcxLDcgKzM2Nyw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgX3Nob3dSZXNvdXJjZVZpZXc6IGZ1bmN0aW9uKHJlc291cmNlKQogICAg
IHsKICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291
cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgdmlldy5oZWFkZXJzVmlzaWJs
ZSA9IGZhbHNlOwogICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHZpZXcpOwogICAgIH0sCiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDBkY2U5
NWUuLjBhM2M3YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcwpAQCAtMjEzLDExICsyMTMsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5zaG93LmNhbGwo
dGhpcyk7CiAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSAo
dGhpcy5zaWRlYmFyRWxlbWVudC5vZmZzZXRXaWR0aCAtIDMpICsgInB4IjsKIAotICAgICAgICBp
ZiAodGhpcy52aXNpYmxlVmlldykgewotICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3KQotICAgICAgICAgICAgICAgIHRo
aXMudmlzaWJsZVZpZXcuaGVhZGVyc1Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMu
dmlzaWJsZVZpZXcpCiAgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LnNob3codGhpcy52aWV3
c0NvbnRhaW5lckVsZW1lbnQpOwotICAgICAgICB9CisKICAgICAgICAgaWYgKHRoaXMuX2F0dGFj
aERlYnVnZ2VyV2hlblNob3duKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmVuYWJs
ZURlYnVnZ2VyKGZhbHNlKTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9hdHRhY2hEZWJ1Z2dl
cldoZW5TaG93bjsKQEAgLTU5OCwxMCArNTk2LDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIHZpZXc7
Ci0gICAgICAgIGlmIChzY3JpcHRPclJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
c291cmNlKSB7CisgICAgICAgIGlmIChzY3JpcHRPclJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlKQogICAgICAgICAgICAgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSk7Ci0gICAg
ICAgICAgICB2aWV3LmhlYWRlcnNWaXNpYmxlID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2NyaXB0T3JSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCisgICAgICAg
IGVsc2UgaWYgKHNjcmlwdE9yUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0
KQogICAgICAgICAgICAgdmlldyA9IHRoaXMuc2NyaXB0Vmlld0ZvclNjcmlwdChzY3JpcHRPclJl
c291cmNlKTsKIAogICAgICAgICBpZiAoIXZpZXcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VWaWV3LmpzCmluZGV4IGM3YTM1ZjcuLjlmZjQ2ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCkBAIC0zMyw3ICszMyw3IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInNvdXJjZSIpOwogCiAgICAgdmFyIGNhbkVkaXRTY3JpcHRzID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5zY3JpcHRzICYmIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5jYW5FZGl0
U2NyaXB0cygpICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LlNjcmlwdDsKLSAgICB0aGlzLnNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZSh0aGlzLmNvbnRlbnRFbGVtZW50LCB0aGlzLl9hZGRCcmVha3BvaW50LmJpbmQodGhpcyks
IGNhbkVkaXRTY3JpcHRzID8gdGhpcy5fZWRpdExpbmUuYmluZCh0aGlzKSA6IG51bGwsIHRoaXMu
X2NvbnRpbnVlVG9MaW5lLmJpbmQodGhpcykpOworICAgIHRoaXMuc291cmNlRnJhbWUgPSBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKHRoaXMuZWxlbWVudCwgdGhpcy5fYWRkQnJlYWtwb2lu
dC5iaW5kKHRoaXMpLCBjYW5FZGl0U2NyaXB0cyA/IHRoaXMuX2VkaXRMaW5lLmJpbmQodGhpcykg
OiBudWxsLCB0aGlzLl9jb250aW51ZVRvTGluZS5iaW5kKHRoaXMpKTsKICAgICByZXNvdXJjZS5h
ZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVk
LCB0aGlzKTsKICAgICB0aGlzLl9mcmFtZU5lZWRzU2V0dXAgPSB0cnVlOwogfQpAQCAtNTAsOSAr
NTAsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgc2hvdzog
ZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKICAgICAgICAgdGhpcy5zb3VyY2VG
cmFtZS52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgaWYgKHRoaXMubG9jYWxTb3VyY2VGcmFtZSkK
LSAgICAgICAgICAgIHRoaXMubG9jYWxTb3VyY2VGcmFtZS52aXNpYmxlID0gdHJ1ZTsKICAgICAg
ICAgdGhpcy5yZXNpemUoKTsKICAgICB9LAogCkBAIC02Miw4ICs2MSw2IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9mcmFtZU5lZWRz
U2V0dXApCiAgICAgICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLmNsZWFyTGluZUhpZ2hsaWdodCgp
OwogICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuaGlkZS5jYWxsKHRoaXMpOwot
ICAgICAgICBpZiAodGhpcy5sb2NhbFNvdXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5sb2Nh
bFNvdXJjZUZyYW1lLnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4ID0gLTE7CiAgICAgfSwKIApAQCAtNzEsOSArNjgsNiBAQCBXZWJJbnNwZWN0
b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAodGhpcy5zb3Vy
Y2VGcmFtZSkKICAgICAgICAgICAgIHRoaXMuc291cmNlRnJhbWUucmVzaXplKCk7Ci0gICAgICAg
IGlmICh0aGlzLmxvY2FsU291cmNlRnJhbWUpCi0gICAgICAgICAgICB0aGlzLmxvY2FsU291cmNl
RnJhbWUucmVzaXplKCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90
eXBlLnJlc2l6ZS5jYWxsKHRoaXMpOwogICAgIH0sCiAKICAgICBzZXR1cFNvdXJjZUZyYW1lSWZO
ZWVkZWQ6IGZ1bmN0aW9uKCkKQEAgLTgxLDIyICs3NSwxNSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fZnJhbWVOZWVkc1NldHVwKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuYXR0YWNoKCk7Ci0KICAgICAgICAg
ZGVsZXRlIHRoaXMuX2ZyYW1lTmVlZHNTZXR1cDsKICAgICAgICAgdGhpcy5yZXNvdXJjZS5yZXF1
ZXN0Q29udGVudCh0aGlzLl9jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAg
ICBoYXNDb250ZW50VGFiOiBmdW5jdGlvbigpCisgICAgaGFzQ29udGVudDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAotICAgIGNvbnRlbnRUYWJTZWxl
Y3RlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZO
ZWVkZWQoKTsKLSAgICB9LAotCiAgICAgX2NvbnRlbnRMb2FkZWQ6IGZ1bmN0aW9uKGNvbnRlbnQp
CiAgICAgewogICAgICAgICB2YXIgbWltZVR5cGUgPSB0aGlzLl9jYW5vbmljYWxNaW1lVHlwZSh0
aGlzLnJlc291cmNlKTsKQEAgLTIwOCwyNSArMTk1LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBmaW5kU2VhcmNoTWF0Y2hlcy5jYWxsKHRoaXMsIHF1
ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKTsKICAgICB9LAogCi0gICAgdXBkYXRlTG9jYWxDb250ZW50
OiBmdW5jdGlvbihjb250ZW50LCBtaW1lVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5s
b2NhbENvbnRlbnRFbGVtZW50KSB7Ci0gICAgICAgICAgICB0aGlzLmxvY2FsQ29udGVudEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHRoaXMubG9j
YWxDb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2Utdmlldy1jb250ZW50IjsKLSAg
ICAgICAgICAgIHRoaXMudGFiYmVkUGFuZS5hcHBlbmRUYWIoImxvY2FsIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2NhbCIpLCB0aGlzLmxvY2FsQ29udGVudEVsZW1lbnQsIHRoaXMuc2VsZWN0
TG9jYWxDb250ZW50VGFiLmJpbmQodGhpcykpOwotICAgICAgICAgICAgdGhpcy5sb2NhbFNvdXJj
ZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmxvY2FsQ29udGVudEVs
ZW1lbnQsIHRoaXMuX2FkZEJyZWFrcG9pbnQuYmluZCh0aGlzKSwgbnVsbCwgdGhpcy5fY29udGlu
dWVUb0xpbmUuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5sb2NhbFNvdXJj
ZUZyYW1lLnNldENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQsICIiKTsKLSAgICB9LAotCi0gICAg
c2VsZWN0TG9jYWxDb250ZW50VGFiOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnRh
YmJlZFBhbmUuc2VsZWN0VGFiQnlJZCgibG9jYWwiKTsKLSAgICAgICAgdGhpcy5sb2NhbFNvdXJj
ZUZyYW1lLnZpc2libGUgPSB0cnVlOwotICAgICAgICBpZiAoInJlc2l6ZSIgaW4gdGhpcykKLSAg
ICAgICAgICAgIHRoaXMucmVzaXplKCk7Ci0gICAgfSwKLQogICAgIGp1bXBUb0ZpcnN0U2VhcmNo
UmVzdWx0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3Vs
dHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGFiYmVkUGFuZS5qcwppbmRleCAxZWQ5NzI1Li44NGFiNzAyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qcwpAQCAtMzIsNjIgKzMyLDU1IEBAIFdlYklu
c3BlY3Rvci5UYWJiZWRQYW5lID0gZnVuY3Rpb24oZWxlbWVudCkKIHsKICAgICB0aGlzLmVsZW1l
bnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ0YWJiZWQtcGFuZSIpOwotICAgIHRoaXMudGFic0VsZW1l
bnQgPSB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJ0YWJiZWQtcGFuZS1oZWFkZXIi
KTsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJk
aXYiLCAidGFiYmVkLXBhbmUtY29udGVudCIpOwotCi0gICAgdGhpcy5fdGFiT2JqZWN0cyA9IHt9
OworICAgIHRoaXMuX3RhYnNFbGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYi
LCAidGFiYmVkLXBhbmUtaGVhZGVyIik7CisgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSB0aGlz
LmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJ0YWJiZWQtcGFuZS1jb250ZW50Iik7CisgICAg
dGhpcy5fdGFicyA9IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZS5wcm90b3R5cGUg
PSB7Ci0gICAgYXBwZW5kVGFiOiBmdW5jdGlvbihpZCwgdGFiVGl0bGUsIGNvbnRlbnQsIHRhYkNs
aWNrTGlzdGVuZXIpCisgICAgYXBwZW5kVGFiOiBmdW5jdGlvbihpZCwgdGFiVGl0bGUsIHZpZXcp
CiAgICAgewogICAgICAgICB2YXIgdGFiRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxpIik7CiAgICAgICAgIHRhYkVsZW1lbnQudGV4dENvbnRlbnQgPSB0YWJUaXRsZTsKLSAgICAg
ICAgdGFiRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRhYkNsaWNrTGlzdGVuZXIs
IGZhbHNlKTsKLSAgICAgICAgdGhpcy50YWJzRWxlbWVudC5hcHBlbmRDaGlsZCh0YWJFbGVtZW50
KTsKLSAgICAgICAgdmFyIHRhYk9iamVjdCA9IHsgdGFiOiB0YWJFbGVtZW50IH07Ci0gICAgICAg
IGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKLSAgICAgICAgICAgIHRhYk9i
amVjdC5lbGVtZW50ID0gY29udGVudDsKLSAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQu
YXBwZW5kQ2hpbGQoY29udGVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQuZWxlbWVudCk7Ci0g
ICAgICAgICAgICB0YWJPYmplY3QudmlldyA9IGNvbnRlbnQ7Ci0gICAgICAgIH0KLSAgICAgICAg
dGhpcy5fdGFiT2JqZWN0c1tpZF0gPSB0YWJPYmplY3Q7Ci0gICAgfSwKKyAgICAgICAgdGFiRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuc2VsZWN0VGFiLmJpbmQodGhpcywg
aWQsIHRydWUpLCBmYWxzZSk7CiAKLSAgICBoYXNUYWI6IGZ1bmN0aW9uKHRhYklkKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRhYklkIGluIHRoaXMuX3RhYk9iamVjdHM7CisgICAgICAgIHRoaXMu
X3RhYnNFbGVtZW50LmFwcGVuZENoaWxkKHRhYkVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3Rh
YnNbaWRdID0geyB0YWJFbGVtZW50OiB0YWJFbGVtZW50LCB2aWV3OiB2aWV3IH0KICAgICB9LAot
ICAgICAKLSAgICBzZWxlY3RUYWJCeUlkOiBmdW5jdGlvbih0YWJJZCkKKworICAgIHNlbGVjdFRh
YjogZnVuY3Rpb24oaWQsIHVzZXJHZXN0dXJlKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgaWQg
aW4gdGhpcy5fdGFiT2JqZWN0cykgewotICAgICAgICAgICAgaWYgKGlkID09PSB0YWJJZCkKLSAg
ICAgICAgICAgICAgICB0aGlzLl9zaG93VGFiKHRoaXMuX3RhYk9iamVjdHNbaWRdKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl9oaWRlVGFiKHRoaXMuX3RhYk9iamVj
dHNbaWRdKTsKKyAgICAgICAgaWYgKCEoaWQgaW4gdGhpcy5fdGFicykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUYWIpIHsKKyAgICAgICAg
ICAgIHRoaXMuX2hpZGVUYWIodGhpcy5fY3VycmVudFRhYikKKyAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9jdXJyZW50VGFiOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLmhhc1RhYih0
YWJJZCk7CisKKyAgICAgICAgdmFyIHRhYiA9IHRoaXMuX3RhYnNbaWRdOworICAgICAgICB0aGlz
Ll9zaG93VGFiKHRhYik7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUYWIgPSB0YWI7CisgICAgICAg
IGlmICh1c2VyR2VzdHVyZSkgeworICAgICAgICAgICAgdmFyIGV2ZW50ID0ge3RhYklkOiBpZH07
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygidGFiLXNlbGVjdGVk
IiwgZXZlbnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAg
ICBfc2hvd1RhYjogZnVuY3Rpb24odGFiT2JqZWN0KQorICAgIF9zaG93VGFiOiBmdW5jdGlvbih0
YWIpCiAgICAgewotICAgICAgICB0YWJPYmplY3QudGFiLmFkZFN0eWxlQ2xhc3MoInNlbGVjdGVk
Iik7Ci0gICAgICAgIGlmICh0YWJPYmplY3QuZWxlbWVudCkKLSAgICAgICAgICAgIHRhYk9iamVj
dC5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0YWJPYmplY3Qudmlldy52aXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgdGFiLnRhYkVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKKyAgICAgICAgdGFiLnZpZXcuc2hvdyh0
aGlzLl9jb250ZW50RWxlbWVudCk7CiAgICAgfSwKIAotICAgIF9oaWRlVGFiOiBmdW5jdGlvbih0
YWJPYmplY3QpCisgICAgX2hpZGVUYWI6IGZ1bmN0aW9uKHRhYikKICAgICB7Ci0gICAgICAgIHRh
Yk9iamVjdC50YWIucmVtb3ZlU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKLSAgICAgICAgaWYgKHRh
Yk9iamVjdC5lbGVtZW50KQotICAgICAgICAgICAgdGFiT2JqZWN0LmVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiaGlkZGVuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRhYk9iamVjdC52aWV3
LnZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgdGFiLnRhYkVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygic2VsZWN0ZWQiKTsKKyAgICAgICAgdGFiLnZpZXcudmlzaWJsZSA9IGZhbHNlOwogICAgIH0K
IH0KKworV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwppbmRleCAyYjg3YmNjLi5mODBhYzQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYwpAQCAtMjEsNiArMjEsNyBAQAogICAgIDxmaWxlPkNvbnRleHRNZW51LmpzPC9m
aWxlPgogICAgIDxmaWxlPkNvb2tpZUl0ZW1zVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Db29r
aWVQYXJzZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+Q29va2llc1RhYmxlLmpzPC9maWxlPgogICAg
IDxmaWxlPkNTU0NvbXBsZXRpb25zLmpzPC9maWxlPgogICAgIDxmaWxlPkNTU1N0eWxlTW9kZWwu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YWJhc2UuanM8L2ZpbGU+CkBAIC01NSw2ICs1Niw3IEBA
CiAgICAgPGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmlsZT4KICAgICA8Zmls
ZT5LZXlib2FyZFNob3J0Y3V0LmpzPC9maWxlPgogICAgIDxmaWxlPk1ldHJpY3NTaWRlYmFyUGFu
ZS5qczwvZmlsZT4KKyAgICA8ZmlsZT5OZXR3b3JrSXRlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZp
bGU+TmV0d29ya1BhbmVsLmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qczwvZmlsZT4KQEAgLTcwLDYgKzcyLDgg
QEAKICAgICA8ZmlsZT5SZW1vdGVPYmplY3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2Uu
anM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VDYXRlZ29yeS5qczwvZmlsZT4KKyAgICA8Zmls
ZT5SZXNvdXJjZUNvb2tpZXNWaWV3LmpzPC9maWxlPgorICAgIDxmaWxlPlJlc291cmNlSGVhZGVy
c1ZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VNYW5hZ2VyLmpzPC9maWxlPgogICAg
IDxmaWxlPlJlc291cmNlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZXNQYW5lbC5q
czwvZmlsZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXgg
MjlmMjM4NS4uOGI4M2Y0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKQEAgLTc5OCw5MSArNzk4LDE5IEBAIGJvZHkucGxhdGZvcm0tbGludXggLm1vbm9zcGFj
ZSwgYm9keS5wbGF0Zm9ybS1saW51eCAuc291cmNlLWNvZGUgewogICAgIGRpc3BsYXk6IGJsb2Nr
OwogfQogCi0ucmVzb3VyY2UtdmlldyB7Ci0gICAgZGlzcGxheTogbm9uZTsKKy53ZWJraXQtbGlu
ZS1ndXR0ZXItYmFja2Ryb3AgeworICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdmlldy1z
b3VyY2UuY3NzICgud2Via2l0LWxpbmUtZ3V0dGVyLWJhY2tkcm9wKSAqLworICAgIHdpZHRoOiAz
MXB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDAsIDI0MCwgMjQwKTsKKyAgICBib3Jk
ZXItcmlnaHQ6IDFweCBzb2xpZCByZ2IoMTg3LCAxODcsIDE4Nyk7CiAgICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIGJhY2tncm91bmQ6IHdoaXRlOwotICAgIHRvcDogMDsKKyAgICB6LWluZGV4
OiAtMTsKICAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMDsKLX0KLQot
LnJlc291cmNlLXZpZXcudmlzaWJsZSB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci19Ci0K
LS5yZXNvdXJjZS12aWV3IC50YWJiZWQtcGFuZS1oZWFkZXIgewotICAgIGRpc3BsYXk6IG5vbmU7
Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGlu
ZWFyLCAwJSAwJSwgMCUgMTAwJSwgZnJvbShyZ2IoMjM2LCAyMzYsIDIzNikpLCB0byhyZ2IoMjE3
LCAyMTcsIDIxNykpKTsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE2MywgMTYz
LCAxNjMpOwotfQotCi0ucmVzb3VyY2Utdmlldy5oZWFkZXJzLXZpc2libGUgLnRhYmJlZC1wYW5l
LWhlYWRlciB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLS5yZXNvdXJjZS12aWV3IC5zY29w
ZS1iYXIgbGkgewotICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Ci0gICAgYm9yZGVy
LWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Ci19Ci0KLS5yZXNvdXJjZS12aWV3LWhlYWRlcnMgewot
ICAgIHBhZGRpbmc6IDZweDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OyAgICAKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgcmln
aHQ6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG92ZXJmbG93OiBhdXRvOwotfQotCi0ucmVzb3Vy
Y2Utdmlldy1oZWFkZXJzIC5vdXRsaW5lLWRpc2Nsb3N1cmUgLnBhcmVudCB7Ci0gICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotLnJlc291
cmNlLXZpZXctaGVhZGVycyAub3V0bGluZS1kaXNjbG9zdXJlIC5jaGlsZHJlbiBsaSB7Ci0gICAg
d2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLQotLnJlc291cmNlLXZpZXctaGVhZGVycyAub3V0bGlu
ZS1kaXNjbG9zdXJlIGxpLmV4cGFuZGVkIC5oZWFkZXItY291bnQgewotICAgIGRpc3BsYXk6IG5v
bmU7Ci19Ci0KLS5yZXNvdXJjZS12aWV3LWhlYWRlcnMgLm91dGxpbmUtZGlzY2xvc3VyZSAuaGVh
ZGVyLW5hbWUgewotICAgIGNvbG9yOiByZ2IoMzMlLCAzMyUsIDMzJSk7Ci0gICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOwotICAgIG1hcmdpbi1yaWdodDogMC41ZW07Ci0gICAgZm9udC13ZWlnaHQ6
IGJvbGQ7Ci0gICAgdmVydGljYWwtYWxpZ246IHRvcDsKLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdy
YXA7Ci19Ci0KLS5yZXNvdXJjZS12aWV3LWhlYWRlcnMgLm91dGxpbmUtZGlzY2xvc3VyZSAuaGVh
ZGVyLXZhbHVlIHsKLSAgICBkaXNwbGF5OiBpbmxpbmU7Ci0gICAgbWFyZ2luLXJpZ2h0OiAxMDBw
eDsKLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ci0gICAgd29yZC1icmVhazogYnJlYWstYWxs
OwotICAgIG1hcmdpbi10b3A6IDFweDsKLX0KLQotLnJlc291cmNlLXZpZXctaGVhZGVycyAub3V0
bGluZS1kaXNjbG9zdXJlIC5yYXctZm9ybS1kYXRhIHsKLSAgICB3aGl0ZS1zcGFjZTpwcmUtd3Jh
cDsKLX0KLQotLnJlc291cmNlLXZpZXcgLnJlc291cmNlLXZpZXctY29udGVudCB7Ci0gICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAw
OwotICAgIGJvdHRvbTogMDsKLSAgICBvdmVyZmxvdzogYXV0bzsKKyAgICBoZWlnaHQ6IDEwMCUK
IH0KIAotLnJlc291cmNlLXZpZXctY29va2llcyB7CisucmVzb3VyY2UtdmlldyB7CiAgICAgZGlz
cGxheTogbm9uZTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwpAQCAtODkw
LDM2ICs4MTgsMTMgQEAgYm9keS5wbGF0Zm9ybS1saW51eCAubW9ub3NwYWNlLCBib2R5LnBsYXRm
b3JtLWxpbnV4IC5zb3VyY2UtY29kZSB7CiAgICAgbGVmdDogMDsKICAgICBib3R0b206IDA7CiAg
ICAgb3ZlcmZsb3c6IGF1dG87Ci0gICAgcGFkZGluZzogMTJweDsKLSAgICBoZWlnaHQ6IDEwMCU7
CiB9CiAKLS5yZXNvdXJjZS12aWV3LWNvb2tpZXMudmlzaWJsZSB7CisucmVzb3VyY2Utdmlldy52
aXNpYmxlIHsKICAgICBkaXNwbGF5OiBibG9jazsKIH0KIAotLnJlc291cmNlLXZpZXctY29va2ll
cy50YWJsZSAuZGF0YS1ncmlkIHsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KLS5yZXNvdXJjZS12
aWV3LWNvb2tpZXMgLmRhdGEtZ3JpZCAucm93LWdyb3VwIHsKLSAgICBmb250LXdlaWdodDogYm9s
ZDsKLSAgICBmb250LXNpemU6IDExcHg7Ci19Ci0KLS53ZWJraXQtbGluZS1ndXR0ZXItYmFja2Ry
b3AgewotICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdmlldy1zb3VyY2UuY3NzICgud2Vi
a2l0LWxpbmUtZ3V0dGVyLWJhY2tkcm9wKSAqLwotICAgIHdpZHRoOiAzMXB4OwotICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigyNDAsIDI0MCwgMjQwKTsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBz
b2xpZCByZ2IoMTg3LCAxODcsIDE4Nyk7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHot
aW5kZXg6IC0xOwotICAgIGxlZnQ6IDA7Ci0gICAgdG9wOiAwOwotICAgIGhlaWdodDogMTAwJQot
fQotCi0ucmVzb3VyY2Utdmlldy5mb250IC5yZXNvdXJjZS12aWV3LWNvbnRlbnQgeworLnJlc291
cmNlLXZpZXcuZm9udCB7CiAgICAgZm9udC1zaXplOiA2MHB4OwogICAgIHdoaXRlLXNwYWNlOiBw
cmUtd3JhcDsKICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CkBAIC05MjcsMTIgKzgzMiwxMiBA
QCBib2R5LnBsYXRmb3JtLWxpbnV4IC5tb25vc3BhY2UsIGJvZHkucGxhdGZvcm0tbGludXggLnNv
dXJjZS1jb2RlIHsKICAgICBwYWRkaW5nOiAxNXB4OwogfQogCi0ucmVzb3VyY2Utdmlldy5pbWFn
ZSAucmVzb3VyY2Utdmlldy1jb250ZW50ID4gLmltYWdlIHsKKy5yZXNvdXJjZS12aWV3LmltYWdl
ID4gLmltYWdlIHsKICAgICBwYWRkaW5nOiAyMHB4IDIwcHggMTBweCAyMHB4OwogICAgIHRleHQt
YWxpZ246IGNlbnRlcjsKIH0KIAotLnJlc291cmNlLXZpZXcuaW1hZ2UgLnJlc291cmNlLXZpZXct
Y29udGVudCA+IC5pbmZvIHsKKy5yZXNvdXJjZS12aWV3LmltYWdlID4gLmluZm8gewogICAgIHBh
ZGRpbmctYm90dG9tOiAxMHB4OwogICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAtd2Via2l0LXVz
ZXItc2VsZWN0OiB0ZXh0OwpAQCAtMjAwMiwxNiArMTkwNywxNiBAQCBsaS5zZWxlY3RlZCAuYmFz
ZS1zdG9yYWdlLXRyZWUtZWxlbWVudC1zdWJ0aXRsZSB7CiAgICAgZGlzcGxheTogYmxvY2s7CiB9
CiAKLS5zdG9yYWdlLXZpZXcudGFibGUgeworLnN0b3JhZ2UtdmlldyB7CiAgICAgb3ZlcmZsb3c6
IGhpZGRlbjsKIH0KIAotLnN0b3JhZ2Utdmlldy50YWJsZSAuZGF0YS1ncmlkIHsKKy5zdG9yYWdl
LXZpZXcgLmRhdGEtZ3JpZCB7CiAgICAgYm9yZGVyOiBub25lOwogICAgIGhlaWdodDogMTAwJTsK
IH0KIAotLnN0b3JhZ2UtZW1wdHktdmlldywgLnN0b3JhZ2Utdmlldy50YWJsZSAuc3RvcmFnZS10
YWJsZS1lcnJvciB7Cisuc3RvcmFnZS1lbXB0eS12aWV3LCAuc3RvcmFnZS12aWV3IC5zdG9yYWdl
LXRhYmxlLWVycm9yIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwogICAg
IGJvdHRvbTogMjUlOwpAQCAtMjAyOSw3ICsxOTM0LDcgQEAgbGkuc2VsZWN0ZWQgLmJhc2Utc3Rv
cmFnZS10cmVlLWVsZW1lbnQtc3VidGl0bGUgewogICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsK
IH0KIAotLnN0b3JhZ2Utdmlldy50YWJsZSAuc3RvcmFnZS10YWJsZS1lcnJvciB7Cisuc3RvcmFn
ZS12aWV3IC5zdG9yYWdlLXRhYmxlLWVycm9yIHsKICAgICBjb2xvcjogcmdiKDY2JSwgMzMlLCAz
MyUpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5k
ZXggZTBjNzJlOS4uNjY3ZWVlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbApAQCAtNjcsNiArNjcsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN0b3JhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN0b3JhZ2VJdGVtc1ZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFHcmlk
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJD
b29raWVzVGFibGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkNvb2tpZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3Rl
bVZpZXcuanMiPjwvc2NyaXB0PgpAQCAtMTEyLDYgKzExMyw5IEBAIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRSdWxlcy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRDYXRlZ29yaWVz
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJB
dWRpdEZvcm1hdHRlcnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IlJlc291cmNlSGVhZGVyc1ZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlQ29va2llc1ZpZXcuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdvcmtJ
dGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUmVzb3VyY2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJTb3VyY2VGcmFtZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtQYW5l
bC5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNzcwppbmRl
eCA2YjZhZWJlLi44MWUzYmI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvbmV0d29ya1BhbmVsLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0
d29ya1BhbmVsLmNzcwpAQCAtOTcsMTEgKzk3LDE1IEBACiAKIC5uZXR3b3JrLWNlbGwtc3VidGl0
bGUgewogICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgY29sb3I6IGdyZXk7CisgICAgY29s
b3I6IGdyYXk7Cit9CisKKy5uZXR3b3JrLXNpZGViYXIgdHIuc2VsZWN0ZWQgLm5ldHdvcmstY2Vs
bC1zdWJ0aXRsZSB7CisgICAgY29sb3I6IHdoaXRlOwogfQogCiAubmV0d29yay1oZWFkZXItc3Vi
dGl0bGUgewotICAgIGNvbG9yOiBncmV5OworICAgIGNvbG9yOiBncmF5OwogfQogCiAubmV0d29y
ay1zaWRlYmFyIC5kYXRhLWdyaWQuc21hbGwgLm5ldHdvcmstY2VsbC1zdWJ0aXRsZSwKQEAgLTYy
OSwxMyArNjMzLDEzIEBACiAgICAgY29sb3I6IGJsYWNrOwogfQogCi0jbmV0d29yay12aWV3cyAu
cmVzb3VyY2UtdmlldyAudGFiYmVkLXBhbmUtaGVhZGVyIHsKKyNuZXR3b3JrLXZpZXdzIC5uZXR3
b3JrLWl0ZW0tdmlldyAudGFiYmVkLXBhbmUtaGVhZGVyIHsKICAgICBoZWlnaHQ6IDMxcHg7CiAg
ICAgcGFkZGluZy10b3A6IDhweDsKICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7CiB9CiAKLSNuZXR3
b3JrLXZpZXdzLnNtYWxsIC5yZXNvdXJjZS12aWV3IC50YWJiZWQtcGFuZS1oZWFkZXIgeworI25l
dHdvcmstdmlld3Muc21hbGwgLm5ldHdvcmstaXRlbS12aWV3IC50YWJiZWQtcGFuZS1oZWFkZXIg
ewogICAgIGhlaWdodDogMjNweDsKICAgICBwYWRkaW5nLXRvcDogMDsKIH0KQEAgLTY0MywzICs2
NDcsMTAzIEBACiAubmV0d29yay5wYW5lbC52aWV3aW5nLXJlc291cmNlIC5kYXRhLWdyaWQgLmRh
dGEtY29udGFpbmVyIHsKICAgICBwYWRkaW5nLXJpZ2h0OiAwOwogfQorCisubmV0d29yay1pdGVt
LXZpZXcgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IGJhY2tncm91bmQ6IHdoaXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0
OiAwOworICAgIGJvdHRvbTogMDsKK30KKworLm5ldHdvcmstaXRlbS12aWV3LnZpc2libGUgewor
ICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworfQorCisubmV0d29yay1pdGVtLXZpZXcgLnRhYmJl
ZC1wYW5lLWhlYWRlciB7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIGJhY2tncm91bmQ6IC13ZWJr
aXQtZ3JhZGllbnQobGluZWFyLCAwJSAwJSwgMCUgMTAwJSwgZnJvbShyZ2IoMjM2LCAyMzYsIDIz
NikpLCB0byhyZ2IoMjE3LCAyMTcsIDIxNykpKTsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgcmdiKDE2MywgMTYzLCAxNjMpOworfQorCisubmV0d29yay1pdGVtLXZpZXcgLnNjb3BlLWJh
ciBsaSB7CisgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKKyAgICBib3JkZXItYm90
dG9tLXJpZ2h0LXJhZGl1czogMDsKK30KKworLnJlc291cmNlLWhlYWRlcnMtdmlldyB7CisgICAg
ZGlzcGxheTogbm9uZTsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogdGV4dDsgICAgCisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBs
ZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBvdmVyZmxvdzogYXV0
bzsKK30KKworLnJlc291cmNlLWhlYWRlcnMtdmlldy52aXNpYmxlIHsKKyAgICBkaXNwbGF5OiBi
bG9jazsKK30KKworLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIC5w
YXJlbnQgeworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgZm9udC13ZWlnaHQ6
IGJvbGQ7Cit9CisKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSAu
Y2hpbGRyZW4gbGkgeworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy5yZXNvdXJjZS1o
ZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5leHBhbmRlZCAuaGVhZGVyLWNvdW50
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRs
aW5lLWRpc2Nsb3N1cmUgLmhlYWRlci1uYW1lIHsKKyAgICBjb2xvcjogcmdiKDMzJSwgMzMlLCAz
MyUpOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBtYXJnaW4tcmlnaHQ6IDAuNWVt
OworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CisgICAg
d2hpdGUtc3BhY2U6IHByZS13cmFwOworfQorCisucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRs
aW5lLWRpc2Nsb3N1cmUgLmhlYWRlci12YWx1ZSB7CisgICAgZGlzcGxheTogaW5saW5lOworICAg
IG1hcmdpbi1yaWdodDogMTAwcHg7CisgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOworICAgIHdv
cmQtYnJlYWs6IGJyZWFrLWFsbDsKKyAgICBtYXJnaW4tdG9wOiAxcHg7Cit9CisKKy5yZXNvdXJj
ZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSAucmF3LWZvcm0tZGF0YSB7CisgICAg
d2hpdGUtc3BhY2U6IHByZS13cmFwOworfQorCisucmVzb3VyY2UtY29va2llcy12aWV3IHsKKyAg
ICBkaXNwbGF5OiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7Cisg
ICAgcmlnaHQ6IDA7CisgICAgbGVmdDogMDsKKyAgICBib3R0b206IDA7CisgICAgb3ZlcmZsb3c6
IGF1dG87CisgICAgcGFkZGluZzogMTJweDsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKKy5yZXNv
dXJjZS1jb29raWVzLXZpZXcudmlzaWJsZSB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy5y
ZXNvdXJjZS1jb29raWVzLXZpZXcgLmRhdGEtZ3JpZCB7CisgICAgaGVpZ2h0OiAxMDAlOworfQor
CisucmVzb3VyY2UtY29va2llcy12aWV3IC5kYXRhLWdyaWQgLnJvdy1ncm91cCB7CisgICAgZm9u
dC13ZWlnaHQ6IGJvbGQ7CisgICAgZm9udC1zaXplOiAxMXB4OworfQo=
</data>
<flag name="review"
          id="65339"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>