<?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>65511</bug_id>
          
          <creation_ts>2011-08-01 22:57:18 -0700</creation_ts>
          <short_desc>Web Inspector: autocomplete combobox for Styles sidebar and Console.</short_desc>
          <delta_ts>2011-11-18 01:57:35 -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="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>chris</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>445110</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-01 22:57:18 -0700</bug_when>
    <thetext>Iterating through possible style values with up/down is cool, could a autocomplete combobox work? Good for discoverability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449676</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-11 02:41:11 -0700</bug_when>
    <thetext>Let&apos;s handle the CSS properties suggestions in this bug, and I&apos;ve filed bug 66044 for the console prompt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449821</commentid>
    <comment_count>2</comment_count>
      <attachid>103635</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-11 09:28:11 -0700</bug_when>
    <thetext>Created attachment 103635
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451556</commentid>
    <comment_count>3</comment_count>
      <attachid>103635</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-16 04:48:23 -0700</bug_when>
    <thetext>Comment on attachment 103635
[PATCH] Suggested solution

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:956
&gt; +        if (!curSection) {

Looks like too much copypaste.

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:92
&gt; +        var bodyElement = this.inputElement.ownerDocument.body;

I&apos;ve seen this in Popover helper. Is there anything to reuse?

&gt; Source/WebCore/inspector/front-end/suggestBox.css:57
&gt; +/* Vertical Scrollbar Styles */

Can we reuse existing ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451626</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-16 08:19:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 103635 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103635&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:956
&gt; &gt; +        if (!curSection) {
&gt; 
&gt; Looks like too much copypaste.

Removed dead code.

&gt; &gt; Source/WebCore/inspector/front-end/SuggestBox.js:92
&gt; &gt; +        var bodyElement = this.inputElement.ownerDocument.body;
&gt; 
&gt; I&apos;ve seen this in Popover helper. Is there anything to reuse?

Yes, extracted into utilities.js.

&gt; &gt; Source/WebCore/inspector/front-end/suggestBox.css:57
&gt; &gt; +/* Vertical Scrollbar Styles */
&gt; 
&gt; Can we reuse existing ones?

Done (created 2 separate custom scrollbar styles (for vertical and horizontal ones) in inspector.css and used them both in Popover and SuggestBox).

A fixed patch is to be attached shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451628</commentid>
    <comment_count>5</comment_count>
      <attachid>104048</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-16 08:20:20 -0700</bug_when>
    <thetext>Created attachment 104048
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451740</commentid>
    <comment_count>6</comment_count>
      <attachid>104048</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-16 10:58:33 -0700</bug_when>
    <thetext>Comment on attachment 104048
[PATCH] Comments addressed

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

Too much copypaste.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:930
&gt; +        if (!curSection) {

Could you submit this as a separate change?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:952
&gt; +        if (!curSection) {

same other change

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1139
&gt; +        this._selectorElement.scrollIntoViewIfNeeded(false);

same other change

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2047
&gt; +            else if (moveDirection === &quot;backward&quot;) {

same other change

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:2248
&gt; +        //this._clearAutoComplete();

Should this code be commented?

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:32
&gt; +    this.parentElement = inputElement.ownerDocument.body;

Please make these fields private

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:43
&gt; +    window.addEventListener(&quot;scroll&quot;, this._boundOnScroll, true);

No need for scroll / resize listeners.

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:85
&gt; +        const anchorBox = this.inputElement.boxInWindow(window, this.parentElement);

Could you style it using CSS instead?

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:135
&gt; +        if (event.handled)

event.handled is not standard. how can this happen? The one setting it should stop propagation instead as you do below.

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:146
&gt; +                this.tabKeyPressed(event);

These all should be private.

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:192
&gt; +        this.inputElement.pruneEmptyTextNodes();

This looks a lot like copypaste from the TextPrompt.

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:222
&gt; +    acceptAutoComplete: function(event)

This method looks exactly as the one in the TextPrompt. I think the way you should implement it is to extend TextPrompt instead. It could be TextPrompt + drop box.

&gt; Source/WebCore/inspector/front-end/SuggestBox.js:378
&gt; +    _completionsReady: function(selection, completions)

Again giant copypaste?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489960</commentid>
    <comment_count>7</comment_count>
      <attachid>112319</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-25 04:48:44 -0700</bug_when>
    <thetext>Created attachment 112319
[PATCH] A major rewrite, which extends the TextPrompt functionality by aggregating SuggestBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490014</commentid>
    <comment_count>8</comment_count>
      <attachid>112319</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-25 06:51:45 -0700</bug_when>
    <thetext>Comment on attachment 112319
[PATCH] A major rewrite, which extends the TextPrompt functionality by aggregating SuggestBox

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

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:353
&gt; +        if (force &amp;&amp; !expressionString)

You should nuke the prefix check below instead.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:110
&gt; +WebInspector.StylesSidebarPane.StyleValueDelimiters = &quot; \xA0\t\n\&quot;&apos;:;,/(&quot;;

You should not suggest upon &quot;)&quot; type.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1878
&gt; +                if (isEnterKey(event)) {

It would be nice if TextPrompt could be configured to handle it internally. Worst case, you should do:

if (this._prompt.handleEvent(event))
  return;

in all entry points.

&gt; Source/WebCore/inspector/front-end/TextPrompt.js:605
&gt; +    this.completions = completions;

please make things private.

&gt; Source/WebCore/inspector/front-end/inspector.css:2507
&gt; +.suggest-box {

please move this to the newly added textPrompt.css and require it from ConsoleView and ElementsPanel. Alternatively you could make TextPrompt a view, but I am not sure it is worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490063</commentid>
    <comment_count>9</comment_count>
      <attachid>112344</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-25 09:14:36 -0700</bug_when>
    <thetext>Created attachment 112344
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490781</commentid>
    <comment_count>10</comment_count>
      <attachid>112494</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-26 06:16:58 -0700</bug_when>
    <thetext>Created attachment 112494
[PATCH] Got rid of FocusRestorer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493898</commentid>
    <comment_count>11</comment_count>
      <attachid>113170</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-01 07:37:34 -0700</bug_when>
    <thetext>Created attachment 113170
[PATCH] Rebased on the refactored TextPrompt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495336</commentid>
    <comment_count>12</comment_count>
      <attachid>113459</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-03 04:13:31 -0700</bug_when>
    <thetext>Created attachment 113459
[PATCH] Rebased on the committed SuggestBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495419</commentid>
    <comment_count>13</comment_count>
      <attachid>113459</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-03 06:41:04 -0700</bug_when>
    <thetext>Comment on attachment 113459
[PATCH] Rebased on the committed SuggestBox

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

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:114
&gt; +    const suggestBoxConfig = new WebInspector.TextPrompt.SuggestBoxConfig(&quot;generic-suggest&quot;);

We should not use configs, please add corresponding events to the TextPrompt. SuggestBox should be entirely hidden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497024</commentid>
    <comment_count>14</comment_count>
      <attachid>113835</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-07 01:59:45 -0800</bug_when>
    <thetext>Created attachment 113835
[PATCH] Got rid of SuggestBoxConfig</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497063</commentid>
    <comment_count>15</comment_count>
      <attachid>113835</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-07 04:27:28 -0800</bug_when>
    <thetext>Comment on attachment 113835
[PATCH] Got rid of SuggestBoxConfig

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

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:115
&gt; +    this.prompt.setSuggestBoxEnabled(&quot;generic-suggest&quot;);

enableSuggestBox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497074</commentid>
    <comment_count>16</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-07 04:50:31 -0800</bug_when>
    <thetext>Committed r99407: &lt;http://trac.webkit.org/changeset/99407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505607</commentid>
    <comment_count>17</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-11-18 01:57:35 -0800</bug_when>
    <thetext>*** Bug 18651 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103635</attachid>
            <date>2011-08-11 09:28:11 -0700</date>
            <delta_ts>2011-08-16 08:20:20 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>48526</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ5NGRhYWExZTBiOTRlMWY1ZWQ1YjFkZGYzN2U3ZTlhYzE0NmI5NGIKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDQg
MTM6NTU6NTQgMjAxMSArMDQwMAoKICAgIEZpeAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZGUyOGJlLi4zOWJh
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTEtMDgtMTEgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
dXRvY29tcGxldGUgY29tYm9ib3ggZm9yIENTUyBzdHlsZSBwcm9wZXJ0eSBuYW1lcy92YWx1ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTUxMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5uZXh0RWRpdGFibGVTaWJsaW5nKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5w
cmV2aW91c0VkaXRhYmxlU2libGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9w
ZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuc3RhcnRFZGl0aW5nU2VsZWN0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0RWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4dC5tb3Zl
RGlyZWN0aW9uKToKKyAgICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
dWdnZXN0Qm94LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgdmlzaWJsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUuZ2V0IHRleHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLnNldCB0ZXh0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgaGFzU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25zY3JvbGxy
ZXNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl91cGRh
dGVCb3hQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5
cGUuX3JlbWVtYmVySW5wdXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJv
eC5wcm90b3R5cGUuX29uYm94bW91c2Vkb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdn
ZXN0Qm94LnByb3RvdHlwZS5faGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJv
eC5wcm90b3R5cGUucmVtb3ZlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1
Z2dlc3RCb3gucHJvdG90eXBlLl9vbktleURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1
Z2dlc3RCb3gucHJvdG90eXBlLl9hcHBseVN1Z2dlc3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLmFjY2VwdFN1Z2dlc3Rpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLmFjY2VwdEF1dG9Db21wbGV0ZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl9vblByZXZpb3VzSXRlbSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUudXBkYXRlU3VnZ2Vz
dGlvbnNTb29uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS51
cGRhdGVTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90
b3R5cGUuX3VwZGF0ZVVzZXJFbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJv
eC5wcm90b3R5cGUuX29uSXRlbU1vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3Vn
Z2VzdEJveC5wcm90b3R5cGUuX2NyZWF0ZUl0ZW1FbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5fdXBkYXRlSXRlbXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl91cGRhdGVTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jbGVhckF1dG9Db21wbGV0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUuX2NvbXBsZXRpb25zUmVh
ZHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLmlzQ2FyZXRJ
bnNpZGVQcm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBl
LmlzQ2FyZXRBdEVuZE9mUHJvbXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94
LnByb3RvdHlwZS5pc0NhcmV0T25GaXJzdExpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1
Z2dlc3RCb3gucHJvdG90eXBlLmlzQ2FyZXRPbkxhc3RMaW5lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5tb3ZlQ2FyZXRUb0VuZE9mUHJvbXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5lbnRlcktleVByZXNzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLnRhYktleVByZXNzZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLnNwYWNlS2V5UHJl
c3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUudXBLZXlQ
cmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5kb3du
S2V5UHJlc3NlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
OgorICAgICAgICAoLnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0KToKKyAgICAgICAgKC5zdWdnZXN0
LWJveC5jc3Mtc3VnZ2VzdCAuY29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcuYmx1ckV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvc3VnZ2VzdEJveC5jc3M6IEFkZGVk
LgorICAgICAgICAoLnN1Z2dlc3QtYm94KToKKyAgICAgICAgKC5zdWdnZXN0LWJveC52aXNpYmxl
KToKKyAgICAgICAgKC5zdWdnZXN0LWJveCAuY29udGFpbmVyKToKKyAgICAgICAgKC5zdWdnZXN0
LWJveC1jb250ZW50LWl0ZW0pOgorICAgICAgICAoLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbS5z
ZWxlY3RlZCk6CisgICAgICAgICguc3VnZ2VzdC1ib3gtY29udGVudC1pdGVtOmhvdmVyOm5vdCgu
c2VsZWN0ZWQpKToKKyAgICAgICAgKC5zdWdnZXN0LWJveCA6Oi13ZWJraXQtc2Nyb2xsYmFyKToK
KyAgICAgICAgKC5zdWdnZXN0LWJveCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcik6CisgICAg
ICAgICguc3VnZ2VzdC1ib3ggOjotd2Via2l0LXJlc2l6ZXIpOgorICAgICAgICAoLnN1Z2dlc3Qt
Ym94IDo6LXdlYmtpdC1zY3JvbGxiYXI6dmVydGljYWw6Y29ybmVyLXByZXNlbnQpOgorICAgICAg
ICAoLnN1Z2dlc3QtYm94IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWwpOgorICAg
ICAgICAoLnN1Z2dlc3QtYm94IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92
ZXIpOgorICAgICAgICAoLnN1Z2dlc3QtYm94IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVy
dGljYWw6YWN0aXZlKToKKyAgICAgICAgKC5zdWdnZXN0LWJveCA6Oi13ZWJraXQtc2Nyb2xsYmFy
LXRyYWNrLXBpZWNlOnZlcnRpY2FsOnN0YXJ0KToKKyAgICAgICAgKC5zdWdnZXN0LWJveCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVuZCk6CisgICAgICAgICguc3Vn
Z2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDplbmQ6Y29y
bmVyLXByZXNlbnQpOgorICAgICAgICAoLnN1Z2dlc3QtYm94IDo6LXdlYmtpdC1zY3JvbGxiYXIt
dHJhY2stcGllY2U6dmVydGljYWw6ZGVjcmVtZW50KToKKyAgICAgICAgKC5zdWdnZXN0LWJveCA6
Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmluY3JlbWVudCk6CisgICAg
ICAgICguc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24pOgorCiAyMDExLTA4
LTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHRoZXJlIHNob3VsZCBiZSBhIHdheSB0byB0ZWxsIHdoYXQgcHJvcGVydGll
cyBhcmUgbm9uLWVudW1lcmFibGUgd2hlbiBleHBhbmRpbmcgb2JqZWN0cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
CmluZGV4IDJiMDY5MDQuLjU4NzY0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTAxLDcgKzEwMSw3
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Db2xvckZvcm1hdCA9IHsKICAgICBI
U0xBOiAiaHNsYSIKIH0KIAotV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFs
dWVEZWxpbWl0ZXJzID0gIiBcdFxuXCInOjssLygpIjsKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCI7CiAKIC8v
IFRha2VuIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvcHJvcGlkeC5odG1sLgogV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkluaGVyaXRlZFByb3BlcnRpZXMgPSBbCkBAIC05
MzEsNiArOTMxLDE4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjdXJTZWN0aW9uLm5leHRTaWJsaW5n
OwogICAgICAgICB9IHdoaWxlIChjdXJTZWN0aW9uICYmICFjdXJTZWN0aW9uLmVkaXRhYmxlKTsK
IAorICAgICAgICBpZiAoIWN1clNlY3Rpb24pIHsKKyAgICAgICAgICAgIHZhciBjYW5kaWRhdGVT
ZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjYW5kaWRhdGVTZWN0aW9u
LnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAo
Y3VyU2VjdGlvbiAmJiBjdXJTZWN0aW9uLmVkaXRhYmxlKQorICAgICAgICAgICAgICAgICAgICBj
YW5kaWRhdGVTZWN0aW9uID0gY3VyU2VjdGlvbjsKKyAgICAgICAgICAgICAgICBjdXJTZWN0aW9u
ID0gY3VyU2VjdGlvbi5wcmV2aW91c1NpYmxpbmc7CisgICAgICAgICAgICB9IHdoaWxlIChjdXJT
ZWN0aW9uKTsKKworICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVNlY3Rpb24uZWRpdGFibGUg
PyBjYW5kaWRhdGVTZWN0aW9uIDogbnVsbDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBj
dXJTZWN0aW9uOwogICAgIH0sCiAKQEAgLTk0MSw2ICs5NTMsMTggQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3VyU2VjdGlv
biA9IGN1clNlY3Rpb24ucHJldmlvdXNTaWJsaW5nOwogICAgICAgICB9IHdoaWxlIChjdXJTZWN0
aW9uICYmICFjdXJTZWN0aW9uLmVkaXRhYmxlKTsKIAorICAgICAgICBpZiAoIWN1clNlY3Rpb24p
IHsKKyAgICAgICAgICAgIHZhciBjYW5kaWRhdGVTZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAg
IGN1clNlY3Rpb24gPSBjYW5kaWRhdGVTZWN0aW9uLm5leHRTaWJsaW5nOworICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIGlmIChjdXJTZWN0aW9uICYmIGN1clNlY3Rpb24uZWRpdGFi
bGUpCisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVNlY3Rpb24gPSBjdXJTZWN0aW9uOwor
ICAgICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjdXJTZWN0aW9uLm5leHRTaWJsaW5nOworICAg
ICAgICAgICAgfSB3aGlsZSAoY3VyU2VjdGlvbik7CisKKyAgICAgICAgICAgIHJldHVybiBjYW5k
aWRhdGVTZWN0aW9uLmVkaXRhYmxlID8gY2FuZGlkYXRlU2VjdGlvbiA6IG51bGw7CisgICAgICAg
IH0KKwogICAgICAgICByZXR1cm4gY3VyU2VjdGlvbjsKICAgICB9LAogCkBAIC0xMTE2LDYgKzEx
NDAsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChlbGVtZW50KSkKICAgICAg
ICAgICAgIHJldHVybjsKIAorICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmco
dGhpcy5fc2VsZWN0b3JFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBudWxsLAogICAg
ICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nU2VsZWN0b3JDb21taXR0ZWQuYmlu
ZCh0aGlzKSwKQEAgLTE3OTEsMTggKzE4MTYsMzUgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoaXNFbnRlcktleShl
dmVudCkgfHwgaXNGaWVsZElucHV0VGVybWluYXRlZCkgewogICAgICAgICAgICAgICAgIC8vIEVu
dGVyIG9yIGNvbG9uIChmb3IgbmFtZSkvc2VtaWNvbG9uIG91dHNpZGUgb2Ygc3RyaW5nIChmb3Ig
dmFsdWUpLgogICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IEVudGVyIHNob3VsZCBvbmx5IGFjY2VwdCB0aGUgc3VnZ2VzdGlvbiB3aXRob3V0IGNvbW1pdHRp
bmcgdGhlIHZhbHVlIGlmIHRoZSBzdWdnZXN0IGJveCBpcyB2aXNpYmxlLgorICAgICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdEJveC52aXNpYmxlICYmIHRoaXMuX3N1Z2dlc3RCb3gu
aGFzU2VsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94
LmFjY2VwdFN1Z2dlc3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy
ZXR1cm4gIm1vdmUtZm9yd2FyZCI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNv
ZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwgZXZl
bnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJj
YW5jZWwiOwotICAgICAgICAgICAgZWxzZSBpZiAoIWlzRWRpdGluZ05hbWUgJiYgdGhpcy5fbmV3
UHJvcGVydHkgJiYgZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuS2V5cy5CYWNrc3BhY2UuY29kZSkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5r
ZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2RlIHx8
IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMUIiKSB7CisgICAgICAgICAgICAgICAgaWYg
KCF0aGlzLl9zdWdnZXN0Qm94LnZpc2libGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAi
Y2FuY2VsIjsgLy8gT25seSBjYW5jZWwgdGhlIGVkaXRvciB3aGVuIHRoZSBzdWdnZXN0IGJveCBp
cyBub3QgYWN0aXZlLgorICAgICAgICAgICAgfSBlbHNlIGlmICghaXNFZGl0aW5nTmFtZSAmJiB0
aGlzLl9uZXdQcm9wZXJ0eSAmJiBldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5LZXlzLkJhY2tzcGFjZS5jb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gRm9y
IGEgbmV3IHByb3BlcnR5LCB3aGVuIEJhY2tzcGFjZSBpcyBwcmVzc2VkIGF0IHRoZSBiZWdpbm5p
bmcgb2YgbmV3IHByb3BlcnR5IHZhbHVlLCBtb3ZlIGJhY2sgdG8gdGhlIHByb3BlcnR5IG5hbWUu
CiAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
ICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmICFzZWxlY3Rpb24u
Zm9jdXNPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWJhY2t3YXJkIjsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09
ICJVKzAwMDkiKSAvLyBUYWIga2V5LgorICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiVSswMDA5IikgeyAvLyBUYWIga2V5LgorICAgICAgICAgICAgICAgIC8v
IFRhYiBhY2NlcHRzIHRoZSBwcm9wZXJ0eSBuYW1lIHN1Z2dlc3Rpb24vY29tcGxldGlvbiBhbmQg
dHJhbnNpdGlvbnMgdG8gdGhlIHZhbHVlIGZpZWxkLgorICAgICAgICAgICAgICAgIGlmIChpc0Vk
aXRpbmdOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0Qm94LnZp
c2libGUgJiYgdGhpcy5fc3VnZ2VzdEJveC5oYXNTZWxlY3Rpb24pCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LmFjY2VwdFN1Z2dlc3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5h
Y2NlcHRBdXRvQ29tcGxldGUoKTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg
ICByZXR1cm4gIm1vdmUtIiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2Fy
ZCIpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcGFzdGVI
YW5kbGVyKGNvbnRleHQsIGV2ZW50KQpAQCAtMTgzMCwxOCArMTg3MiwyNSBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybiAibW92ZS1mb3J3YXJkIjsKICAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9uIGZvY3Vz
UmVzdG9yZXIoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAodGhpcy5fc3Vn
Z2VzdEJveCAmJiB0aGlzLl9zdWdnZXN0Qm94LmZvY3VzZWQpID8gdGhpcy5fc3VnZ2VzdEJveC5p
bnB1dFJhbmdlIDogbnVsbDsKKyAgICAgICAgfQorCiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdp
bmFsUHJvcGVydHlUZXh0OwogCiAgICAgICAgIHRoaXMuX3BhcmVudFBhbmUuX2lzRWRpdGluZ1N0
eWxlID0gdHJ1ZTsKKyAgICAgICAgc2VsZWN0RWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVk
KGZhbHNlKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhzZWxlY3RFbGVtZW50
LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgY29tbWl0SGFu
ZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCiAgICAgICAgICAgICBjYW5j
ZWxIYW5kbGVyOiB0aGlzLmVkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwKICAgICAgICAgICAg
IGN1c3RvbUZpbmlzaEhhbmRsZXI6IG5hbWVWYWx1ZUZpbmlzaEhhbmRsZXIuYmluZCh0aGlzLCBj
b250ZXh0LCBpc0VkaXRpbmdOYW1lKSwKLSAgICAgICAgICAgIHBhc3RlSGFuZGxlcjogaXNFZGl0
aW5nTmFtZSA/IHBhc3RlSGFuZGxlci5iaW5kKHRoaXMsIGNvbnRleHQpIDogbnVsbAorICAgICAg
ICAgICAgcGFzdGVIYW5kbGVyOiBpc0VkaXRpbmdOYW1lID8gcGFzdGVIYW5kbGVyLmJpbmQodGhp
cywgY29udGV4dCkgOiBudWxsLAorICAgICAgICAgICAgZm9jdXNSZXN0b3JlcjogZm9jdXNSZXN0
b3Jlci5iaW5kKHRoaXMpCiAgICAgICAgIH0pOwogCi0gICAgICAgIHRoaXMuX3Byb21wdCA9IG5l
dyBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQoc2VsZWN0
RWxlbWVudCwgaXNFZGl0aW5nTmFtZSA/IFdlYkluc3BlY3Rvci5jc3NOYW1lQ29tcGxldGlvbnMg
OiBXZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHRoaXMubmFt
ZUVsZW1lbnQudGV4dENvbnRlbnQpKTsKKyAgICAgICAgdGhpcy5fc3VnZ2VzdEJveCA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlTdWdnZXN0KHNlbGVjdEVs
ZW1lbnQsIGlzRWRpdGluZ05hbWUgPyBXZWJJbnNwZWN0b3IuY3NzTmFtZUNvbXBsZXRpb25zIDog
V2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eSh0aGlzLm5hbWVF
bGVtZW50LnRleHRDb250ZW50KSwgdGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxlVGV4dEVkaXQuYmlu
ZCh0aGlzLCB0cnVlKSk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5k
RXh0ZW50KHNlbGVjdEVsZW1lbnQsIDAsIHNlbGVjdEVsZW1lbnQsIDEpOwogICAgIH0sCiAKQEAg
LTE5ODksMTcgKzIwMzgsMjcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBtb3ZlVG8gPSB0aGlzOwogICAgICAgICB2YXIg
bW92ZVRvT3RoZXIgPSAoaXNFZGl0aW5nTmFtZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2Fy
ZCIpKTsKICAgICAgICAgdmFyIGFiYW5kb25OZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5
ICYmICF1c2VySW5wdXQgJiYgKG1vdmVUb090aGVyIHx8IGlzRWRpdGluZ05hbWUpOworICAgICAg
ICB2YXIgdGFyZ2V0TmV3UHJvcGVydHlTZWN0aW9uID0gdGhpcy50cmVlT3V0bGluZS5zZWN0aW9u
OwogICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiICYmICFpc0VkaXRpbmdO
YW1lIHx8IG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIgJiYgaXNFZGl0aW5nTmFtZSkgewog
ICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIG1vdmVUbyA9IChtb3ZlRGlyZWN0aW9u
ID09PSAiZm9yd2FyZCIgPyBtb3ZlVG8ubmV4dFNpYmxpbmcgOiBtb3ZlVG8ucHJldmlvdXNTaWJs
aW5nKTsKICAgICAgICAgICAgIH0gd2hpbGUobW92ZVRvICYmICFtb3ZlVG8uc2VsZWN0YWJsZSk7
CiAKLSAgICAgICAgICAgaWYgKG1vdmVUbykKKyAgICAgICAgICAgIGlmIChtb3ZlVG8pCiAgICAg
ICAgICAgICAgICAgbW92ZVRvUHJvcGVydHlOYW1lID0gbW92ZVRvLm5hbWU7CiAgICAgICAgICAg
ICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgKCF0aGlzLl9uZXdQcm9w
ZXJ0eSB8fCB1c2VySW5wdXQpKQogICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1Byb3BlcnR5ID0g
dHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIg
JiYgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnJ1bGUpCi0gICAgICAgICAgICAgICAgbW92ZVRv
U2VsZWN0b3IgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0g
ImJhY2t3YXJkIikgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24ucnVsZSkKKyAgICAgICAgICAgICAgICAgICAgbW92ZVRvU2VsZWN0b3IgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNTaWJs
aW5nID0gdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKCk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZU5ld1Byb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldE5ld1Byb3BlcnR5U2VjdGlvbiA9IHByZXZpb3VzU2libGluZzsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCiAgICAgICAgIC8vIE1ha2UgdGhlIENoYW5nZXMgYW5kIHRyaWdnZXIgdGhlIG1vdmVU
b05leHRDYWxsYmFjayBhZnRlciB1cGRhdGluZy4KQEAgLTIwMDgsNyArMjA2Nyw3IEBAIFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgaXNEaXJ0eVZpYVBhc3RlID0gaXNEYXRhUGFzdGVkICYmICh0aGlzLm5hbWVFbGVtZW50LnRl
eHRDb250ZW50ICE9PSBjb250ZXh0Lm9yaWdpbmFsTmFtZSB8fCB0aGlzLnZhbHVlRWxlbWVudC50
ZXh0Q29udGVudCAhPT0gY29udGV4dC5vcmlnaW5hbFZhbHVlKTsKICAgICAgICAgdmFyIHNob3Vs
ZENvbW1pdE5ld1Byb3BlcnR5ID0gdGhpcy5fbmV3UHJvcGVydHkgJiYgKG1vdmVUb090aGVyIHx8
ICghbW92ZURpcmVjdGlvbiAmJiAhaXNFZGl0aW5nTmFtZSkgfHwgKGlzRWRpdGluZ05hbWUgJiYg
YmxhbmtJbnB1dCkpOwogICAgICAgICBpZiAoKCh1c2VySW5wdXQgIT09IHByZXZpb3VzQ29udGVu
dCB8fCBpc0RpcnR5VmlhUGFzdGUpICYmICF0aGlzLl9uZXdQcm9wZXJ0eSkgfHwgc2hvdWxkQ29t
bWl0TmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5f
YWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2FsbGJhY2suYmluZCh0aGlzLCB0aGlzLl9uZXdQcm9w
ZXJ0eSwgIWJsYW5rSW5wdXQsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7CisgICAgICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24uX2FmdGVyVXBkYXRlID0gbW92ZVRvTmV4dENhbGxi
YWNrLmJpbmQodGhpcywgdGhpcy5fbmV3UHJvcGVydHksICFibGFua0lucHV0LCB0aGlzLnRyZWVP
dXRsaW5lLnNlY3Rpb24sIHRhcmdldE5ld1Byb3BlcnR5U2VjdGlvbik7CiAgICAgICAgICAgICB2
YXIgcHJvcGVydHlUZXh0OwogICAgICAgICAgICAgaWYgKGJsYW5rSW5wdXQgfHwgKHRoaXMuX25l
d1Byb3BlcnR5ICYmIC9eXHMqJC8udGVzdCh0aGlzLnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCkp
KQogICAgICAgICAgICAgICAgIHByb3BlcnR5VGV4dCA9ICIiOwpAQCAtMjAyMiwxMyArMjA4MSwx
MyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghaXNEYXRhUGFzdGVkICYmICF0aGlz
Ll9uZXdQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7Ci0gICAg
ICAgICAgICBtb3ZlVG9OZXh0Q2FsbGJhY2suY2FsbCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwg
ZmFsc2UsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7CisgICAgICAgICAgICBtb3ZlVG9OZXh0
Q2FsbGJhY2suY2FsbCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgZmFsc2UsIHRoaXMudHJlZU91
dGxpbmUuc2VjdGlvbiwgdGFyZ2V0TmV3UHJvcGVydHlTZWN0aW9uKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZhciBtb3ZlVG9JbmRleCA9IG1vdmVUbyAmJiB0aGlzLnRyZWVPdXRsaW5lID8gdGhp
cy50cmVlT3V0bGluZS5jaGlsZHJlbi5pbmRleE9mKG1vdmVUbykgOiAtMTsKIAogICAgICAgICAv
LyBUaGUgQ2FsbGJhY2sgdG8gc3RhcnQgZWRpdGluZyB0aGUgbmV4dC9wcmV2aW91cyBwcm9wZXJ0
eS9zZWxlY3Rvci4KLSAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENhbGxiYWNrKGFscmVhZHlO
ZXcsIHZhbHVlQ2hhbmdlZCwgc2VjdGlvbikKKyAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENh
bGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwgc2VjdGlvbiwgdGFyZ2V0TmV3UHJvcGVy
dHlTZWN0aW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1vdmVEaXJlY3Rpb24pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2MiwxNCArMjEyMSwyNyBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBpZiAoYWxyZWFkeU5ldyAmJiAhdmFsdWVDaGFuZ2VkICYmIChpc0VkaXRpbmdOYW1lIF4gKG1v
dmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICAgICAgc2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRF
ZGl0aW5nKCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0TmV3UHJvcGVydHlTZWN0aW9uLmFkZE5l
d0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhYmFuZG9uTmV3UHJvcGVydHkpIHsK
ICAgICAgICAgICAgICAgICB2YXIgc2VjdGlvblRvRWRpdCA9IG1vdmVEaXJlY3Rpb24gPT09ICJi
YWNrd2FyZCIgPyBzZWN0aW9uIDogc2VjdGlvbi5uZXh0RWRpdGFibGVTaWJsaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlY3Rpb25Ub0VkaXQgJiYgc2VjdGlvblRvRWRpdC5ydWxlKQotICAg
ICAgICAgICAgICAgICAgICBzZWN0aW9uVG9FZGl0LnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHNlY3Rpb25Ub0VkaXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHNlY3Rpb25Ub0VkaXQucnVsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25U
b0VkaXQuc3RhcnRFZGl0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJk
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uVG9FZGl0LmFkZE5ld0JsYW5r
UHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHNlY3Rpb25Ub0Vk
aXQucHJvcGVydGllc1RyZWVPdXRsaW5lID8gc2VjdGlvblRvRWRpdC5wcm9wZXJ0aWVzVHJlZU91
dGxpbmUuY2hpbGRyZW4gOiBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
aGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkcmVuWzBdLnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRvRWRpdC5h
ZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMDgxLDkgKzIxNTMsOSBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBf
cmVtb3ZlUHJvbXB0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBCVUcgNTMyNDIuIFRo
aXMgY2Fubm90IGdvIGludG8gZWRpdGluZ0VuZGVkKCksIGFzIGl0IHNob3VsZCBhbHdheXMgaGFw
cGVuIGZpcnN0IGZvciBhbnkgZWRpdGluZyBvdXRjb21lLgotICAgICAgICBpZiAodGhpcy5fcHJv
bXB0KSB7Ci0gICAgICAgICAgICB0aGlzLl9wcm9tcHQucmVtb3ZlRnJvbUVsZW1lbnQoKTsKLSAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcm9tcHQ7CisgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0
Qm94KSB7CisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LnJlbW92ZUZyb21FbGVtZW50KCk7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc3VnZ2VzdEJveDsKICAgICAgICAgfQogICAgIH0s
CiAKQEAgLTIxNjAsNzcgKzIyMzIsNDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKIAotV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVuY3Rpb24o
ZWxlbWVudCwgY3NzQ29tcGxldGlvbnMpCitXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUu
Q1NTUHJvcGVydHlTdWdnZXN0ID0gZnVuY3Rpb24oaW5wdXRFbGVtZW50LCBjc3NDb21wbGV0aW9u
cywgYXBwbHlJdGVtQ2FsbGJhY2ssIGFjY2VwdENhbGxiYWNrKQogewotICAgIFdlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0LmNhbGwodGhpcywgZWxlbWVudCwgdGhpcy5fYnVpbGRQcm9wZXJ0eUNvbXBs
ZXRpb25zLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZh
bHVlRGVsaW1pdGVycywgdHJ1ZSk7CiAgICAgdGhpcy5fY3NzQ29tcGxldGlvbnMgPSBjc3NDb21w
bGV0aW9uczsKKyAgICBXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5jYWxsKHRoaXMsIGlucHV0RWxl
bWVudCwgImNzcy1zdWdnZXN0IiwgdGhpcy5fYnVpbGRQcm9wZXJ0eUNvbXBsZXRpb25zLmJpbmQo
dGhpcyksIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVy
cywgYXBwbHlJdGVtQ2FsbGJhY2ssIGFjY2VwdENhbGxiYWNrKTsKIH0KIAotV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0LnByb3RvdHlwZSA9IHsKLSAgICB1
cEtleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5faGFuZGxl
TmFtZU9yVmFsdWVVcERvd24oZXZlbnQpOwotICAgIH0sCi0KLSAgICBkb3duS2V5UHJlc3NlZDog
ZnVuY3Rpb24oZXZlbnQpCitXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVy
dHlTdWdnZXN0LnByb3RvdHlwZSA9IHsKKyAgICBlbnRlcktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5faGFuZGxlTmFtZU9yVmFsdWVVcERvd24oZXZlbnQp
OworICAgICAgICBpZiAodGhpcy5hY2NlcHRTdWdnZXN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLmFjY2VwdENhbGxiYWNrKQorICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0Q2FsbGJh
Y2soKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICB0YWJLZXlQcmVzc2VkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7Ci0gICAgfSwK
LQotICAgIF9oYW5kbGVOYW1lT3JWYWx1ZVVwRG93bjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICB2YXIgcmV2ZXJzZSA9IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCI7Ci0gICAg
ICAgIGlmICh0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLmNvbXBs
ZXRlKGZhbHNlLCByZXZlcnNlKTsgLy8gQWNjZXB0IHRoZSBjdXJyZW50IHN1Z2dlc3Rpb24sIGlm
IGFueS4KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHdvcmQgc3Vm
Zml4IHRvIGFmZmVjdCBpdCB3aGVuIGNvbXB1dGluZyB0aGUgc3Vic2VxdWVudCBzdWdnZXN0aW9u
LgotICAgICAgICAgICAgdGhpcy5fc2VsZWN0Q3VycmVudFdvcmRTdWZmaXgoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuY29tcGxldGUoZmFsc2UsIHJldmVyc2UpOyAvLyBBY3R1YWxseSBp
bmNyZW1lbnQvZGVjcmVtZW50IHRoZSBzdWdnZXN0aW9uLgotICAgICAgICBldmVudC5oYW5kbGVk
ID0gdHJ1ZTsKKyAgICAgICAgLy90aGlzLl9jbGVhckF1dG9Db21wbGV0ZSgpOworICAgICAgICB0
aGlzLl9oaWRlKCk7CiAgICAgfSwKIAotICAgIF9zZWxlY3RDdXJyZW50V29yZFN1ZmZpeDogZnVu
Y3Rpb24oKQorICAgIHNwYWNlS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAg
ICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAo
IXNlbGVjdGlvbi5yYW5nZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZh
ciBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAgICBpZiAo
IXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVzY2VuZGFudCh0aGlz
LmVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgd29yZFN1ZmZpeFJh
bmdlID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0aW9u
UmFuZ2Uuc3RhcnRPZmZzZXQsIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZh
bHVlRGVsaW1pdGVycywgdGhpcy5lbGVtZW50LCAiZm9yd2FyZCIpOwotICAgICAgICBpZiAoIXdv
cmRTdWZmaXhSYW5nZS50b1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
ZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7Ci0gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZSh3
b3JkU3VmZml4UmFuZ2UpOworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRFbGVtZW50ICYmIHRo
aXMuX3NlbGVjdGVkRWxlbWVudC50ZXh0Q29udGVudCkgeworICAgICAgICAgICAgdGhpcy5hY2Nl
cHRTdWdnZXN0aW9uKHRoaXMuX3NlbGVjdGVkRWxlbWVudC50ZXh0Q29udGVudCArICIgIik7Cisg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LlN1Z2dlc3RCb3gucHJvdG90eXBlLnNwYWNlS2V5UHJlc3NlZC5jYWxsKHRoaXMsIGV2ZW50KTsK
ICAgICB9LAogCi0gICAgX2J1aWxkUHJvcGVydHlDb21wbGV0aW9uczogZnVuY3Rpb24od29yZFJh
bmdlLCBiZXN0TWF0Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2spCisgICAgX2J1aWxk
UHJvcGVydHlDb21wbGV0aW9uczogZnVuY3Rpb24od29yZFJhbmdlLCBjb21wbGV0aW9uc1JlYWR5
Q2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgcHJlZml4ID0gd29yZFJhbmdlLnRvU3RyaW5n
KCkudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgaWYgKCFwcmVmaXggJiYgYmVzdE1hdGNoT25seSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcmVzdWx0czsKLSAgICAgICAgaWYg
KGJlc3RNYXRjaE9ubHkpIHsKLSAgICAgICAgICAgIHJlc3VsdHMgPSBbXTsKLSAgICAgICAgICAg
IHZhciBmaXJzdE1hdGNoID0gdGhpcy5fY3NzQ29tcGxldGlvbnMuZmlyc3RTdGFydHNXaXRoKHBy
ZWZpeCk7Ci0gICAgICAgICAgICBpZiAoZmlyc3RNYXRjaCkKLSAgICAgICAgICAgICAgICByZXN1
bHRzLnB1c2goZmlyc3RNYXRjaCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbnNSZWFk
eUNhbGxiYWNrKHJlc3VsdHMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0cyA9IHRoaXMu
X2Nzc0NvbXBsZXRpb25zLnN0YXJ0c1dpdGgocHJlZml4KTsKLSAgICAgICAgaWYgKHJlc3VsdHMp
Ci0gICAgICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0cyk7CisgICAgICAg
IHZhciByZXN1bHRzID0gdGhpcy5fY3NzQ29tcGxldGlvbnMuc3RhcnRzV2l0aChwcmVmaXgpOwor
ICAgICAgICAvLyBBdm9pZC9oaWRlIGEgc3VnZ2VzdGlvbiBib3ggaWYgdGhlIGN1cnJlbnQgcHJl
Zml4IGVxdWFscyB0aGUgb25seSBzdWdnZXN0aW9uLgorICAgICAgICBpZiAocmVzdWx0cyAmJiBy
ZXN1bHRzLmxlbmd0aCA9PT0gMSAmJiByZXN1bHRzWzBdLm1hdGNoKG5ldyBSZWdFeHAoIl4iICsg
cHJlZml4LmVzY2FwZUZvclJlZ0V4cCgpICsgIiQiLCAiaSIpKSkKKyAgICAgICAgICAgIHJlc3Vs
dHMgPSBudWxsOworICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0cyk7CiAg
ICAgfQogfQogCi1XZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9t
cHQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZTsKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVN1Z2dlc3QucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3VnZ2VzdEJveC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3VnZ2VzdEJveC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDk1ODRmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdWdnZXN0Qm94LmpzCkBAIC0w
LDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3ggPSBmdW5jdGlvbihpbnB1dEVs
ZW1lbnQsIGNsYXNzTmFtZSwgY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJzLCBhcHBseUl0ZW1D
YWxsYmFjaywgYWNjZXB0Q2FsbGJhY2spCit7CisgICAgdGhpcy5wYXJlbnRFbGVtZW50ID0gaW5w
dXRFbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTsKKyAgICB0aGlzLmlucHV0RWxlbWVudCA9IGlu
cHV0RWxlbWVudDsKKyAgICB0aGlzLmNvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CisgICAgdGhp
cy5jb21wbGV0aW9uU3RvcENoYXJhY3RlcnMgPSBzdG9wQ2hhcmFjdGVyczsKKyAgICB0aGlzLmFw
cGx5SXRlbUNhbGxiYWNrID0gYXBwbHlJdGVtQ2FsbGJhY2s7CisgICAgdGhpcy5hY2NlcHRDYWxs
YmFjayA9IGFjY2VwdENhbGxiYWNrOworICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IG51bGw7
CisgICAgdGhpcy5fYm91bmRPbktleURvd24gPSB0aGlzLl9vbktleURvd24uYmluZCh0aGlzKTsK
KyAgICB0aGlzLl9ib3VuZE9uU2Nyb2xsID0gdGhpcy5fb25zY3JvbGxyZXNpemUuYmluZCh0aGlz
LCB0cnVlKTsKKyAgICB0aGlzLl9ib3VuZE9uUmVzaXplID0gdGhpcy5fb25zY3JvbGxyZXNpemUu
YmluZCh0aGlzLCBmYWxzZSk7CisgICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigia2V5ZG93biIsIHRoaXMuX2JvdW5kT25LZXlEb3duLCB0cnVlKTsKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fYm91bmRPblNjcm9sbCwgdHJ1ZSk7CisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kT25SZXNpemUsIHRy
dWUpOworCisgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5wYXJlbnRFbGVtZW50LmNyZWF0ZUNoaWxk
KCJkaXYiLCAic3VnZ2VzdC1ib3ggIiArIChjbGFzc05hbWUgfHwgIiIpKTsKKyAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fb25ib3htb3VzZWRvd24u
YmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy5jb250YWluZXJFbGVtZW50ID0gdGhpcy5lbGVt
ZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiY29udGFpbmVyIik7CisgICAgdGhpcy5jb250ZW50RWxl
bWVudCA9IHRoaXMuY29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgImNvbnRlbnQi
KTsKKworICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKCk7CisgICAgdGhpcy51cGRhdGVTdWdn
ZXN0aW9uc1Nvb24oKTsKK30KKworV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlID0g
eworICAgIGdldCB2aXNpYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQu
aGFzU3R5bGVDbGFzcygidmlzaWJsZSIpOworICAgIH0sCisKKyAgICBnZXQgdGV4dCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgfSwK
KworICAgIHNldCB0ZXh0KHgpCisgICAgeworICAgICAgICBpZiAoIXgpIHsKKyAgICAgICAgICAg
IC8vIEFwcGVuZCBhIGJyZWFrIGVsZW1lbnQgaW5zdGVhZCBvZiBzZXR0aW5nIHRleHRDb250ZW50
IHRvIG1ha2Ugc3VyZSB0aGUgc2VsZWN0aW9uIGlzIGluc2lkZSB0aGUgcHJvbXB0LgorICAgICAg
ICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIHRo
aXMuaW5wdXRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnRleHRDb250
ZW50ID0geDsKKworICAgICAgICB0aGlzLm1vdmVDYXJldFRvRW5kT2ZQcm9tcHQoKTsKKyAgICB9
LAorCisgICAgZ2V0IGhhc1NlbGVjdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlz
Ll9zZWxlY3RlZEVsZW1lbnQ7CisgICAgfSwKKworICAgIF9vbnNjcm9sbHJlc2l6ZTogZnVuY3Rp
b24oaXNTY3JvbGwsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGlzU2Nyb2xsICYmIHRoaXMu
ZWxlbWVudC5hbmNlc3Rvck9mKGV2ZW50LnRhcmdldCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKCk7CisgICAgfSwKKworICAgIF91cGRhdGVC
b3hQb3NpdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGJvZHlFbGVtZW50ID0g
dGhpcy5pbnB1dEVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5OworICAgICAgICB2YXIgYW5jaG9y
RWxlbWVudCA9IHRoaXMuaW5wdXRFbGVtZW50OworICAgICAgICB2YXIgYW5jaG9yQm94ID0gYW5j
aG9yRWxlbWVudC5vZmZzZXRSZWxhdGl2ZVRvV2luZG93KHdpbmRvdyk7CisgICAgICAgIHZhciBw
YXJlbnRPZmZzZXQgPSB0aGlzLnBhcmVudEVsZW1lbnQub2Zmc2V0UmVsYXRpdmVUb1dpbmRvdyh3
aW5kb3cpOworICAgICAgICBhbmNob3JCb3gueCAtPSBwYXJlbnRPZmZzZXQueDsKKyAgICAgICAg
YW5jaG9yQm94LnkgLT0gcGFyZW50T2Zmc2V0Lnk7CisgICAgICAgIGFuY2hvckJveC53aWR0aCA9
IGFuY2hvckVsZW1lbnQub2Zmc2V0V2lkdGg7CisgICAgICAgIGFuY2hvckJveC5oZWlnaHQgPSBh
bmNob3JFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgd2hpbGUgKGFuY2hvckVsZW1lbnQg
IT09IHRoaXMucGFyZW50RWxlbWVudCAmJiBhbmNob3JFbGVtZW50ICE9PSBib2R5RWxlbWVudCkg
eworICAgICAgICAgICAgaWYgKGFuY2hvckVsZW1lbnQuc2Nyb2xsTGVmdCkKKyAgICAgICAgICAg
ICAgICBhbmNob3JCb3gueCAtPSBhbmNob3JFbGVtZW50LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICBpZiAoYW5jaG9yRWxlbWVudC5zY3JvbGxUb3ApCisgICAgICAgICAgICAgICAgYW5jaG9yQm94
LnkgLT0gYW5jaG9yRWxlbWVudC5zY3JvbGxUb3A7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50
ID0gYW5jaG9yRWxlbWVudC5wYXJlbnRFbGVtZW50OworICAgICAgICB9CisKKyAgICAgICAgLy8g
TWVhc3VyZSB0aGUgY29udGVudCBlbGVtZW50IGJveC4KKyAgICAgICAgdGhpcy5jb250ZW50RWxl
bWVudC5zdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RWxlbWVudCk7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQucG9zaXRpb25BdCgwLCAwKTsKKyAgICAgICAgdmFyIGNvbnRlbnRXaWR0aCA9IHRo
aXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7CisgICAgICAgIHZhciBjb250ZW50SGVpZ2h0
ID0gdGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CisKKyAgICAgICAgdGhpcy5jb250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOworCisgICAgICAgIGNv
bnN0IHN1Z2dlc3RCb3hQYWRkaW5nWCA9IDIxOworICAgICAgICBjb25zdCBzdWdnZXN0Qm94UGFk
ZGluZ1kgPSAxMjsKKyAgICAgICAgY29uc3Qgc3BhY2VyID0gNjsKKyAgICAgICAgY29uc3QgbWF4
V2lkdGggPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC0gYW5jaG9yQm94LnggLSBzcGFjZXI7
CisgICAgICAgIGNvbnN0IG1heEhlaWdodCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0IC0g
YW5jaG9yQm94LnkgLSBhbmNob3JCb3guaGVpZ2h0IC0gc3BhY2VyOworICAgICAgICAvLyBGSVhN
RTogYXR0ZW1wdCBvbmx5IHBvc2l0aW9uaW5nIGJlbG93IHRoZSBhbmNob3IgZm9yIGEgc3RhcnQu
CisgICAgICAgIHRoaXMuZWxlbWVudC5wb3NpdGlvbkF0KGFuY2hvckJveC54LCBhbmNob3JCb3gu
eSArIGFuY2hvckJveC5oZWlnaHQpOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGgg
PSAoTWF0aC5taW4oY29udGVudFdpZHRoLCBtYXhXaWR0aCAtIHN1Z2dlc3RCb3hQYWRkaW5nWCkg
KyBzdWdnZXN0Qm94UGFkZGluZ1gpICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxl
LmhlaWdodCA9IChNYXRoLm1pbihjb250ZW50SGVpZ2h0LCBtYXhIZWlnaHQgLSBzdWdnZXN0Qm94
UGFkZGluZ1kpICsgc3VnZ2VzdEJveFBhZGRpbmdZKSArICJweCI7CisgICAgfSwKKworICAgIF9y
ZW1lbWJlcklucHV0UmFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rp
b24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmIChzZWxlY3Rpb24ucmFuZ2VD
b3VudCkgeworICAgICAgICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7
CisgICAgICAgICAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQgPT09IHJhbmdlLmNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyIHx8IHRoaXMuaW5wdXRFbGVtZW50LmlzQW5jZXN0b3IocmFuZ2UuY29tbW9u
QW5jZXN0b3JDb250YWluZXIpKQorICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSYW5nZSA9IHJh
bmdlOworICAgICAgICB9CisgICAgfSwKKworICAgIF9vbmJveG1vdXNlZG93bjogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcmVt
ZW1iZXJJbnB1dFJhbmdlKCk7CisgICAgfSwKKworICAgIF9oaWRlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9jbGVhckF1dG9Db21wbGV0ZSgpOworICAgICAgICB0aGlzLmVsZW1l
bnQucmVtb3ZlU3R5bGVDbGFzcygidmlzaWJsZSIpOworICAgICAgICBkZWxldGUgdGhpcy5fc2Vs
ZWN0ZWRFbGVtZW50OworICAgIH0sCisKKyAgICByZW1vdmVGcm9tRWxlbWVudDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMuX2JvdW5kT25LZXlEb3duLCB0cnVlKTsKKyAgICAgICAgd2luZG93LnJl
bW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2JvdW5kT25TY3JvbGwsIHRydWUpOwor
ICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRP
blJlc2l6ZSwgdHJ1ZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92
ZUNoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgfSwKKworICAgIF9vbktleURvd246IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZGVmYXVsdEFjdGlvbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlU3VnZ2VzdGlvbnNTb29uKCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBzd2l0Y2ggKGV2ZW50LmtleUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNhc2UgIlVw
IjoKKyAgICAgICAgICAgICAgICB0aGlzLl9vblByZXZpb3VzSXRlbShldmVudCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJEb3duIjoKKyAgICAgICAgICAgICAg
ICB0aGlzLl9vbk5leHRJdGVtKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgIlUrMDAwOSI6IC8vIFRhYgorICAgICAgICAgICAgICAgIHRoaXMudGFiS2V5
UHJlc3NlZChldmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
ICJVKzAwMjAiOiAvLyBTcGFjZQorICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VLZXlQcmVzc2Vk
KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIlJpZ2h0
IjoKKyAgICAgICAgICAgIGNhc2UgIkVuZCI6CisgICAgICAgICAgICAgICAgdGhpcy5hY2NlcHRB
dXRvQ29tcGxldGUoZXZlbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAiRW50ZXIiOgorICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJLZXlQcmVzc2VkKGV2ZW50
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIlUrMDAxQiI6IC8v
IEVzYworICAgICAgICAgICAgICAgIHRoaXMuX2hpZGUoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgIkFsdCI6CisgICAgICAgICAgICBjYXNlICJNZXRhIjoKKyAg
ICAgICAgICAgIGNhc2UgIlNoaWZ0IjoKKyAgICAgICAgICAgIGNhc2UgIkNvbnRyb2wiOgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0QWN0aW9uLmNhbGwodGhpcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkgeworICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgICAgICB9CisgICAgfSwKKworICAgIF9hcHBseVN1Z2dlc3Rpb246IGZ1bmN0aW9uKHRleHQs
IGludGVybWVkaWF0ZVN1Z2dlc3Rpb24pCisgICAgeworICAgICAgICBpZiAoIXRoaXMudmlzaWJs
ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIXRoaXMuX3VzZXJF
bnRlcmVkUmFuZ2UgfHwgIXRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB2YXIgc3VnZ2VzdGlvbiA9IHRleHQgfHwgdGhpcy5fc2VsZWN0
ZWRFbGVtZW50LnRleHRDb250ZW50OworICAgICAgICBpZiAoIXN1Z2dlc3Rpb24pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fY2xlYXJBdXRvQ29tcGxldGUoKTsK
KyAgICAgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3VnZ2VzdGlv
bik7CisgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAg
ICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucHJ1bmVFbXB0eVRleHROb2RlcygpOworICAgICAgICB0
aGlzLl91c2VyRW50ZXJlZFJhbmdlLmluc2VydE5vZGUodGV4dE5vZGUpOworCisgICAgICAgIHZh
ciBmaW5hbFNlbGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAg
ZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgaW50ZXJtZWRpYXRlU3VnZ2Vz
dGlvbiA/IDAgOiBzdWdnZXN0aW9uLmxlbmd0aCk7CisgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFu
Z2Uuc2V0RW5kKHRleHROb2RlLCBzdWdnZXN0aW9uLmxlbmd0aCk7CisKKyAgICAgICAgdmFyIHNl
bGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsZWN0aW9uLnJlbW92
ZUFsbFJhbmdlcygpOworICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmluYWxTZWxlY3Rpb25S
YW5nZSk7CisgICAgICAgIHRoaXMuaW5wdXRSYW5nZSA9IGZpbmFsU2VsZWN0aW9uUmFuZ2U7Cisg
ICAgICAgIGlmIChpbnRlcm1lZGlhdGVTdWdnZXN0aW9uICYmIHRoaXMuYXBwbHlJdGVtQ2FsbGJh
Y2spCisgICAgICAgICAgICB0aGlzLmFwcGx5SXRlbUNhbGxiYWNrKCk7CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfSwKKworICAgIGFjY2VwdFN1Z2dlc3Rpb246IGZ1bmN0aW9uKHRleHQp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2FwcGx5U3VnZ2VzdGlvbih0ZXh0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0aGlzLl9oaWRlKCk7CisKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2U7CisgICAgICAgIGRlbGV0ZSB0aGlzLl91c2Vy
RW50ZXJlZFRleHQ7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICBh
Y2NlcHRBdXRvQ29tcGxldGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQgfHwgIXRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJl
bnROb2RlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciB0ZXh0ID0g
dGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnRleHRDb250ZW50OworICAgICAgICB2YXIgdGV4dE5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsKKyAgICAgICAgdGhpcy5hdXRvQ29t
cGxldGVFbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHRleHROb2RlLCB0aGlzLmF1dG9D
b21wbGV0ZUVsZW1lbnQpOworICAgICAgICBkZWxldGUgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50
OworCisgICAgICAgIHZhciBmaW5hbFNlbGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgdGV4
dC5sZW5ndGgpOworICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwg
dGV4dC5sZW5ndGgpOworCisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgc2Vs
ZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworICAgICAgICB0aGlzLl91cGRh
dGVVc2VyRW50cnkoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX29u
TmV4dEl0ZW06IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0g
dGhpcy5jb250ZW50RWxlbWVudC5jaGlsZE5vZGVzOworICAgICAgICBpZiAoIWNoaWxkcmVuLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRF
bGVtZW50KQorICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5fc2VsZWN0
ZWRFbGVtZW50Lm5leHRTaWJsaW5nIHx8IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGlsZDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5j
b250ZW50RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24o
KTsKKyAgICAgICAgdGhpcy5fYXBwbHlTdWdnZXN0aW9uKG51bGwsIHRydWUpOworICAgICAgICBl
dmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICB9LAorCisgICAgX29uUHJldmlvdXNJdGVtOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVs
ZW1lbnQuY2hpbGROb2RlczsKKyAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAg
ICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5wcmV2
aW91c1NpYmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1l
bnQubGFzdENoaWxkOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICAgICAg
dGhpcy5fYXBwbHlTdWdnZXN0aW9uKG51bGwsIHRydWUpOworICAgICAgICBldmVudC5oYW5kbGVk
ID0gdHJ1ZTsKKyAgICB9LAorCisgICAgdXBkYXRlU3VnZ2VzdGlvbnNTb29uOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoISgiX3N1Z2dlc3RUaW1lb3V0IiBpbiB0aGlzKSkKKyAgICAg
ICAgICAgIHRoaXMuX3N1Z2dlc3RUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnVwZGF0ZVN1Z2dl
c3Rpb25zLmJpbmQodGhpcyksIDEwKTsKKyAgICB9LAorCisgICAgdXBkYXRlU3VnZ2VzdGlvbnM6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgiX3N1Z2dlc3RUaW1lb3V0IiBpbiB0aGlz
KSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc3VnZ2VzdFRpbWVvdXQpOworICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3N1Z2dlc3RUaW1lb3V0OworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCAmJiB0aGlzLmF1dG9Db21wbGV0ZUVsZW1l
bnQucGFyZW50RWxlbWVudCkgeworICAgICAgICAgICAgdmFyIGF1dG9Db21wbGV0ZVBhcmVudCA9
IHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJlbnRFbGVtZW50OworICAgICAgICAgICAgdmFy
IGF1dG9Db21wbGV0ZVNpYmxpbmcgPSB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQubmV4dFNpYmxp
bmc7CisgICAgICAgICAgICBhdXRvQ29tcGxldGVQYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5hdXRv
Q29tcGxldGVFbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vdGhpcy5fY2xlYXJBdXRv
Q29tcGxldGUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3VwZGF0ZVVzZXJFbnRyeSgp
OworICAgICAgICBpZiAoYXV0b0NvbXBsZXRlUGFyZW50KQorICAgICAgICAgICAgYXV0b0NvbXBs
ZXRlUGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQsIGF1dG9Db21w
bGV0ZVNpYmxpbmcpOworCisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0aGlzLmNvbXBsZXRpb25zKHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UsIHRoaXMu
X2NvbXBsZXRpb25zUmVhZHkuYmluZCh0aGlzLCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpKTsKKyAg
ICB9LAorCisgICAgX3VwZGF0ZVVzZXJFbnRyeTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKCFzZWxl
Y3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0
aGlzLl91c2VyRW50ZXJlZFJhbmdlID0gc2VsZWN0aW9uLmZvY3VzTm9kZS5yYW5nZU9mV29yZChz
ZWxlY3Rpb24uZm9jdXNPZmZzZXQsIHRoaXMuY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzLCB0aGlz
LmlucHV0RWxlbWVudCwgImJvdGgiKTsKKyAgICAgICAgdGhpcy5fdXNlckVudGVyZWRUZXh0ID0g
dGhpcy5fdXNlckVudGVyZWRSYW5nZS50b1N0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9LAorCisgICAgX29uSXRlbU1vdXNlRG93bjogZnVuY3Rpb24odGV4dCwgZXZlbnQpCisg
ICAgeworICAgICAgICBmdW5jdGlvbiByZXNldEZvY3VzZWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWxldGUgdGhpcy5mb2N1c2VkOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hY2Nl
cHRTdWdnZXN0aW9uKHRleHQpOworCisgICAgICAgIC8vIEFsbG93IGZvciBhbGwgZXZlbnQgaGFu
ZGxlcnMgdG8gZmluaXNoIGJlZm9yZSByZXNldHRpbmcgdGhlIGZvY3VzZWQgc3RhdGUuCisgICAg
ICAgIHNldFRpbWVvdXQocmVzZXRGb2N1c2VkLmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAg
ICBfY3JlYXRlSXRlbUVsZW1lbnQ6IGZ1bmN0aW9uKHRleHQpCisgICAgeworICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50
LmNsYXNzTmFtZSA9ICJzdWdnZXN0LWJveC1jb250ZW50LWl0ZW0gc291cmNlLWNvZGUiOworICAg
ICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vbkl0ZW1Nb3VzZURvd24uYmluZCh0aGlzLCB0
ZXh0KSwgZmFsc2UpOworICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9LAorCisgICAgX3Vw
ZGF0ZUl0ZW1zOiBmdW5jdGlvbihpdGVtcykKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9
IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGRyZW47CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5k
ZXggPSBNYXRoLm1pbihjaGlsZHJlbi5sZW5ndGggLSAxLCB0aGlzLl9zZWxlY3RlZEluZGV4KTsK
KyAgICAgICAgdmFyIHNlbGVjdGVkSXRlbVRleHQgPSB0aGlzLl9zZWxlY3RlZEluZGV4ID49IDAg
PyBjaGlsZHJlblt0aGlzLl9zZWxlY3RlZEluZGV4XS50ZXh0Q29udGVudCA6IG51bGw7CisgICAg
ICAgIHZhciBpdGVtSW5kZXggPSAwOworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNvbnRlbnRF
bGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgIHZhciBjaGlsZFRleHQgPSBjaGlsZCA/IGNoaWxk
LnRleHRDb250ZW50IDogbnVsbDsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOworICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRFbGVtZW50OworCisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHZhciBpdGVtID0gaXRlbXNbaV07CisgICAgICAgICAgICB2YXIgY3VycmVudEl0ZW1FbGVtZW50
ID0gdGhpcy5fY3JlYXRlSXRlbUVsZW1lbnQoaXRlbSk7CisgICAgICAgICAgICB0aGlzLmNvbnRl
bnRFbGVtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRJdGVtRWxlbWVudCk7CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZVNl
bGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgY2hpbGQgPSB0aGlz
LmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJs
aW5nKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQgIT09IHRoaXMuX3NlbGVjdGVkRWxlbWVudCkK
KyAgICAgICAgICAgICAgICBjaGlsZC5yZW1vdmVTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOworICAg
ICAgICB9CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpIHsKKyAgICAgICAgICAg
IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOworICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2Up
OworICAgICAgICB9CisgICAgfSwKKworICAgIF9jbGVhckF1dG9Db21wbGV0ZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJl
bnROb2RlKQorICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQodGhpcy5hdXRvQ29tcGxldGVFbGVtZW50KTsKKyAgICAgICAgZGVsZXRlIHRo
aXMuYXV0b0NvbXBsZXRlRWxlbWVudDsKKyAgICB9LAorCisgICAgX2NvbXBsZXRpb25zUmVhZHk6
IGZ1bmN0aW9uKHNlbGVjdGlvbiwgY29tcGxldGlvbnMpCisgICAgeworICAgICAgICBpZiAoIWNv
bXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuX2hp
ZGUoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fY2xl
YXJBdXRvQ29tcGxldGUoKTsKKyAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9u
LmdldFJhbmdlQXQoMCk7CisKKyAgICAgICAgdmFyIGNvbW1vblByZWZpeCA9IGNvbXBsZXRpb25z
WzBdOworICAgICAgICB2YXIgd29yZFByZWZpeExlbmd0aCA9IHRoaXMuX3VzZXJFbnRlcmVkVGV4
dC5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcGxldGlvbnMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjb21wbGV0aW9uID0gY29tcGxldGlvbnNbaV07Cisg
ICAgICAgICAgICB2YXIgbGFzdEluZGV4ID0gTWF0aC5taW4oY29tbW9uUHJlZml4Lmxlbmd0aCwg
Y29tcGxldGlvbi5sZW5ndGgpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IHdvcmRQcmVmaXhM
ZW5ndGg7IGogPCBsYXN0SW5kZXg7ICsraikgeworICAgICAgICAgICAgICAgIGlmIChjb21tb25Q
cmVmaXhbal0gIT09IGNvbXBsZXRpb25bal0pIHsKKyAgICAgICAgICAgICAgICAgICAgY29tbW9u
UHJlZml4ID0gY29tbW9uUHJlZml4LnN1YnN0cigwLCBqKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGNvbW1vblByZWZpeCA9PT0gdGhpcy5fdXNlckVudGVyZWRUZXh0KSAvLyBTdG9wIG5vdyAtIHVz
ZXItZW50ZXJlZCBzdHJpbmcgaXMgdGhlIGNvbW1vbiBwcmVmaXguCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNvbXBsZXRpb25UZXh0ID0gY29tbW9uUHJl
Zml4OworICAgICAgICAgICAgCisgICAgICAgIHZhciBwcmVmaXhUZXh0ID0gY29tcGxldGlvblRl
eHQuc3Vic3RyaW5nKDAsIHdvcmRQcmVmaXhMZW5ndGgpOworICAgICAgICB2YXIgc3VmZml4VGV4
dCA9IGNvbXBsZXRpb25UZXh0LnN1YnN0cmluZyh3b3JkUHJlZml4TGVuZ3RoKTsKKworICAgICAg
ICB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5jbGFzc05hbWUgPSAiYXV0by1j
b21wbGV0ZS10ZXh0IjsKKyAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnRleHRDb250
ZW50ID0gc3VmZml4VGV4dDsKKworICAgICAgICB2YXIgYXV0b0NvbXBsZXRlU3RhcnRSYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIGF1dG9Db21wbGV0ZVN0YXJ0UmFuZ2Uu
c2V0U3RhcnQodGhpcy5fdXNlckVudGVyZWRSYW5nZS5lbmRDb250YWluZXIsIHRoaXMuX3VzZXJF
bnRlcmVkUmFuZ2UuZW5kT2Zmc2V0KTsKKyAgICAgICAgYXV0b0NvbXBsZXRlU3RhcnRSYW5nZS5z
ZXRFbmQodGhpcy5fdXNlckVudGVyZWRSYW5nZS5lbmRDb250YWluZXIsIHRoaXMuX3VzZXJFbnRl
cmVkUmFuZ2UuZW5kT2Zmc2V0KTsKKyAgICAgICAgYXV0b0NvbXBsZXRlU3RhcnRSYW5nZS5pbnNl
cnROb2RlKHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdXBkYXRl
SXRlbXMoY29tcGxldGlvbnMpOworICAgICAgICB0aGlzLl91cGRhdGVCb3hQb3NpdGlvbigpOwor
ICAgICAgICBpZiAodGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2aXNpYmxlIik7CisgICAgICAgICAg
ICBkZWxldGUgdGhpcy5mb2N1c2VkOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMu
X2hpZGUoKTsKKyAgICB9LAorCisgICAgaXNDYXJldEluc2lkZVByb21wdDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LmlzSW5zZXJ0aW9uQ2FyZXRJ
bnNpZGUoKTsKKyAgICB9LAorCisgICAgaXNDYXJldEF0RW5kT2ZQcm9tcHQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQgfHwgIXNlbGVjdGlvbi5pc0NvbGxhcHNl
ZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgc2VsZWN0aW9uUmFu
Z2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKyAgICAgICAgdmFyIG5vZGUgPSBzZWxlY3Rp
b25SYW5nZS5zdGFydENvbnRhaW5lcjsKKyAgICAgICAgaWYgKG5vZGUgIT09IHRoaXMuaW5wdXRF
bGVtZW50ICYmICFub2RlLmlzRGVzY2VuZGFudCh0aGlzLmlucHV0RWxlbWVudCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUu
VEVYVF9OT0RFICYmIHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0IDwgbm9kZS5ub2RlVmFsdWUu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBmb3VuZE5l
eHRUZXh0ID0gZmFsc2U7CisgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgICAgICBpZiAo
bm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3Ro
KSB7CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kTmV4dFRleHQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3VuZE5leHRUZXh0ID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm9kZSA9IG5vZGUudHJhdmVyc2VOZXh0Tm9k
ZSh0aGlzLmlucHV0RWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9LAorCisgICAgaXNDYXJldE9uRmlyc3RMaW5lOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICB2YXIg
Zm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTsKKyAgICAgICAgaWYgKCFmb2N1c05vZGUg
fHwgZm9jdXNOb2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSB8fCBmb2N1c05vZGUucGFy
ZW50Tm9kZSAhPT0gdGhpcy5pbnB1dEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICBpZiAoZm9jdXNOb2RlLnRleHRDb250ZW50LnN1YnN0cmluZygwLCBzZWxlY3Rp
b24uZm9jdXNPZmZzZXQpLmluZGV4T2YoIlxuIikgIT09IC0xKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBmb2N1c05vZGUgPSBmb2N1c05vZGUucHJldmlvdXNTaWJsaW5nOwor
CisgICAgICAgIHdoaWxlIChmb2N1c05vZGUpIHsKKyAgICAgICAgICAgIGlmIChmb2N1c05vZGUu
bm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgaWYgKGZvY3VzTm9kZS50ZXh0Q29udGVudC5pbmRleE9mKCJcbiIpICE9
PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb2N1c05v
ZGUgPSBmb2N1c05vZGUucHJldmlvdXNTaWJsaW5nOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfSwKKworICAgIGlzQ2FyZXRPbkxhc3RMaW5lOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
ICAgICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTsKKyAgICAgICAgaWYgKCFm
b2N1c05vZGUgfHwgZm9jdXNOb2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSB8fCBmb2N1
c05vZGUucGFyZW50Tm9kZSAhPT0gdGhpcy5pbnB1dEVsZW1lbnQpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBpZiAoZm9jdXNOb2RlLnRleHRDb250ZW50LnN1YnN0cmluZyhz
ZWxlY3Rpb24uZm9jdXNPZmZzZXQpLmluZGV4T2YoIlxuIikgIT09IC0xKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBmb2N1c05vZGUgPSBmb2N1c05vZGUubmV4dFNpYmxpbmc7
CisKKyAgICAgICAgd2hpbGUgKGZvY3VzTm9kZSkgeworICAgICAgICAgICAgaWYgKGZvY3VzTm9k
ZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBpZiAoZm9jdXNOb2RlLnRleHRDb250ZW50LmluZGV4T2YoIlxuIikg
IT09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvY3Vz
Tm9kZSA9IGZvY3VzTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0sCisKKyAgICBtb3ZlQ2FyZXRUb0VuZE9mUHJvbXB0OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
ICAgICAgICB2YXIgc2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworCisg
ICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLmlucHV0RWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsK
KyAgICAgICAgc2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQodGhpcy5pbnB1dEVsZW1lbnQsIG9mZnNl
dCk7CisgICAgICAgIHNlbGVjdGlvblJhbmdlLnNldEVuZCh0aGlzLmlucHV0RWxlbWVudCwgb2Zm
c2V0KTsKKworICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgIHNl
bGVjdGlvbi5hZGRSYW5nZShzZWxlY3Rpb25SYW5nZSk7CisgICAgfSwKKworICAgIGVudGVyS2V5
UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5hY2NlcHRT
dWdnZXN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmFjY2VwdENhbGxiYWNrKQorICAg
ICAgICAgICAgICAgIHRoaXMuYWNjZXB0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIGV2ZW50Lmhh
bmRsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfSwKKworICAgIHRhYktleVByZXNzZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuYWNjZXB0U3VnZ2VzdGlvbigp
KSB7CisgICAgICAgICAgICBpZiAodGhpcy5hY2NlcHRDYWxsYmFjaykKKyAgICAgICAgICAgICAg
ICB0aGlzLmFjY2VwdENhbGxiYWNrKCk7CisgICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBzcGFjZUtleVByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVTdWdnZXN0aW9uc1Nvb24oKTsKKyAgICB9
LAorCisgICAgdXBLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5pc0NhcmV0T25GaXJzdExpbmUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbW92ZUJhY2tJbkhpc3Rv
cnkoKTsKKyAgICB9LAorCisgICAgZG93bktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmlzQ2FyZXRPbkxhc3RMaW5lKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX21v
dmVGb3J3YXJkSW5IaXN0b3J5KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDI3NmJkYjcuLjUwYzYzYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
QEAgLTQwNjgsMyArNDA2OCwxNSBAQCBhLndvcmtlci1pdGVtOmhvdmVyIHsKICAgICBoZWlnaHQ6
IDEwMCU7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogfQorCisvKiBDU1MgcHJvcGVydHkgbmFt
ZS92YWx1ZSBzdWdnZXN0aW9uICJwb3B1cCIgc3R5bGUgKi8KKworLnN1Z2dlc3QtYm94LmNzcy1z
dWdnZXN0IHsKKyAgICBib3JkZXItcmFkaXVzOiAwIDVweCA1cHggNXB4OworICAgIG1hcmdpbi1s
ZWZ0OiAtMXB4OworICAgIGJvcmRlci1jb2xvcjogcmdiKDY2JSwgNjYlLCA2NiUpOworfQorCisu
c3VnZ2VzdC1ib3guY3NzLXN1Z2dlc3QgLmNvbnRlbnQgeworICAgIG1hcmdpbjogM3B4OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
aW5kZXggY2MxOTEzNy4uN2NjZGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0zOCw2ICszOCw3IEBAIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaW5zcGVjdG9y
U3ludGF4SGlnaGxpZ2h0LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0ibmV0d29ya1BhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscFNjcmVlbi5jc3MiPgorICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN1Z2dlc3RCb3guY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJwb3BvdmVyLmNz
cyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGV4
dFZpZXdlci5jc3MiPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InV0
aWxpdGllcy5qcyI+PC9zY3JpcHQ+CkBAIC01Miw2ICs1Myw3IEBAIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ2hlY2tib3guanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRleHRNZW51LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJLZXlib2Fy
ZFNob3J0Y3V0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJTdWdnZXN0Qm94LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJUZXh0UHJvbXB0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQb3BvdmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUYWJiZWRQYW5lLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5k
ZXggM2E5MjY1Yy4uMTdhZDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE0OTAsNiArMTQ5MCw3IEBAIFdlYkluc3BlY3Rvci5p
c0VkaXRpbmdBbnlGaWVsZCA9IGZ1bmN0aW9uKCkKIC8vIGNhbmNlbEhhbmRsZXI6IEZ1bmN0aW9u
IC0gaGFuZGxlcyBlZGl0aW5nICJjYW5jZWwiIG91dGNvbWUKIC8vIGN1c3RvbUZpbmlzaEhhbmRs
ZXI6IEZ1bmN0aW9uIC0gY3VzdG9tIGZpbmlzaCBoYW5kbGVyIGZvciB0aGUgZWRpdGluZyBzZXNz
aW9uIChpbnZva2VkIG9uIGtleWRvd24pCiAvLyBwYXN0ZUhhbmRsZXI6IEZ1bmN0aW9uIC0gaGFu
ZGxlcyB0aGUgInBhc3RlIiBldmVudCwgcmV0dXJuIHZhbHVlcyBhcmUgdGhlIHNhbWUgYXMgdGhv
c2UgZm9yIGN1c3RvbUZpbmlzaEhhbmRsZXIKKy8vIGZvY3VzUmVzdG9yZXI6IEZ1bmN0aW9uIC0g
cmV0dXJucyB0cnVlIGlmIHRoZSBibHVyIGNhbiBvY2N1ci4gT3RoZXJ3aXNlIHRoZSBmb2N1cyB3
aWxsIGJlIHJldGFpbmVkIGluc2lkZSB0aGUgZWRpdGVkIGVsZW1lbnQKIC8vIG11bHRpbGluZTog
Qm9vbGVhbiAtIHdoZXRoZXIgdGhlIGVkaXRlZCBlbGVtZW50IGlzIG11bHRpbGluZQogV2ViSW5z
cGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbmZpZykKIHsKQEAgLTE1
MDAsNiArMTUwMSw3IEBAIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVt
ZW50LCBjb25maWcpCiAgICAgdmFyIGNvbW1pdHRlZENhbGxiYWNrID0gY29uZmlnLmNvbW1pdEhh
bmRsZXI7CiAgICAgdmFyIGNhbmNlbGxlZENhbGxiYWNrID0gY29uZmlnLmNhbmNlbEhhbmRsZXI7
CiAgICAgdmFyIHBhc3RlQ2FsbGJhY2sgPSBjb25maWcucGFzdGVIYW5kbGVyOworICAgIHZhciBm
b2N1c1Jlc3RvcmVyID0gY29uZmlnLmZvY3VzUmVzdG9yZXI7CiAgICAgdmFyIGNvbnRleHQgPSBj
b25maWcuY29udGV4dDsKICAgICB2YXIgb2xkVGV4dCA9IGdldENvbnRlbnQoZWxlbWVudCk7CiAg
ICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKQEAgLTE1MTAsOCArMTUxMiwyMCBAQCBXZWJJbnNw
ZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29uZmlnKQogICAgIGlmIChl
bGVtZW50LnRhYkluZGV4IDwgMCkKICAgICAgICAgZWxlbWVudC50YWJJbmRleCA9IDA7CiAKLSAg
ICBmdW5jdGlvbiBibHVyRXZlbnRMaXN0ZW5lcigpIHsKLSAgICAgICAgZWRpdGluZ0NvbW1pdHRl
ZC5jYWxsKGVsZW1lbnQpOworICAgIGZ1bmN0aW9uIGJsdXJFdmVudExpc3RlbmVyKGV2ZW50KSB7
CisgICAgICAgIHZhciBvbGRSYW5nZTsKKyAgICAgICAgaWYgKGZvY3VzUmVzdG9yZXIpCisgICAg
ICAgICAgICBvbGRSYW5nZSA9IGZvY3VzUmVzdG9yZXIoZXZlbnQpOworCisgICAgICAgIGlmICgh
b2xkUmFuZ2UpCisgICAgICAgICAgICBlZGl0aW5nQ29tbWl0dGVkLmNhbGwoZWxlbWVudCk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgdmFyIHNlbGVjdGlv
biA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVB
bGxSYW5nZXMoKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShvbGRSYW5nZSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBmdW5jdGlvbiBnZXRDb250ZW50KGVsZW1lbnQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvc3VnZ2VzdEJveC5j
c3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3N1Z2dlc3RCb3guY3NzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMmY3MDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3N1Z2dlc3RCb3guY3NzCkBA
IC0wLDAgKzEsMTA3IEBACisuc3VnZ2VzdC1ib3ggeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOworICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgcGFkZGluZzogMnB4OworICAgIHotaW5kZXg6
IDEwMDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDEwcHggMTBweCA4cHggcmdiYSg0MCwgNDAs
IDQwLCAwLjQwKTsKK30KKworLnN1Z2dlc3QtYm94LnZpc2libGUgeworICAgIGRpc3BsYXk6IGJs
b2NrOworfQorCisuc3VnZ2VzdC1ib3ggLmNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRv
bTogMDsKKyAgICBtYXJnaW46IDJweCAwOworICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICBv
dmVyZmxvdy15OiBhdXRvOworfQorCisuc3VnZ2VzdC1ib3gtY29udGVudC1pdGVtIHsKKyAgICBw
YWRkaW5nOiAxcHg7CisgICAgbWFyZ2luOiAwOworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBv
dmVyZmxvdzogaGlkZGVuOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworICAgIGJvcmRl
cjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworfQorCisuc3VnZ2VzdC1ib3gtY29udGVudC1pdGVt
LnNlbGVjdGVkIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMCwgMCwgMCk7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDIzOCwgMjM4LCAyMzgpOworfQorCisuc3VnZ2VzdC1ib3gtY29u
dGVudC1pdGVtOmhvdmVyOm5vdCguc2VsZWN0ZWQpIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBy
Z2IoMjA0LCAyMDQsIDIwNCk7Cit9CisKKy5zdWdnZXN0LWJveCA6Oi13ZWJraXQtc2Nyb2xsYmFy
IHsKKyAgICB3aWR0aDogMTFweDsKKyAgICBoZWlnaHQ6IDExcHg7Cit9CisKKy5zdWdnZXN0LWJv
eCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
LnN1Z2dlc3QtYm94IDo6LXdlYmtpdC1yZXNpemVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQor
CisvKiBWZXJ0aWNhbCBTY3JvbGxiYXIgU3R5bGVzICovCisKKy5zdWdnZXN0LWJveCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyOnZlcnRpY2FsOmNvcm5lci1wcmVzZW50IHsKKyAgICBib3JkZXItYm90dG9t
LXdpZHRoOiAwOworfQorCisuc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2
ZXJ0aWNhbCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJWZXJ0
LnBuZykgMTEgMCAxMSAwOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9y
ZGVyLXdpZHRoOiAxMXB4IDA7CisgICAgbWluLWhlaWdodDogMjBweDsKK30KKworLnN1Z2dlc3Qt
Ym94IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92ZXIgeworICAgIC13ZWJr
aXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iSG92ZXJWZXJ0LnBuZykgMTEgMCAxMSAw
OworfQorCisuc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDph
Y3RpdmUgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZl
VmVydC5wbmcpIDExIDAgMTEgMDsKK30KKworCisuc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9s
bGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpzdGFydCB7CisgICAgbWFyZ2luLXRvcDogNXB4Owor
fQorCisuc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNh
bDplbmQgeworICAgIG1hcmdpbi1ib3R0b206IDVweDsKK30KKworLnN1Z2dlc3QtYm94IDo6LXdl
YmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZW5kOmNvcm5lci1wcmVzZW50IHsK
KyAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cit9CisKKy5zdWdnZXN0LWJveCA6Oi13ZWJraXQtc2Ny
b2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmRlY3JlbWVudCB7CisgICAgLXdlYmtpdC1ib3Jk
ZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBuZykgMTEgMCAxMSAwOworICAgIGJvcmRl
ci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRoOiAxMXB4IDAgMCAwOworfQor
Cisuc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpp
bmNyZW1lbnQgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrVmVy
dC5wbmcpIDExIDAgMTEgMDsKKyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJv
cmRlci13aWR0aDogMCAwIDExcHggMDsKK30KKworLyogRm9yY2VkIFNjcm9sbGJhciBNb2RlIFN0
eWxlcyAqLworCisuc3VnZ2VzdC1ib3ggOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24geworICAg
IGRpc3BsYXk6IG5vbmU7Cit9Cg==
</data>
<flag name="review"
          id="99306"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104048</attachid>
            <date>2011-08-16 08:20:20 -0700</date>
            <delta_ts>2011-10-25 04:48:44 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>58269</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGUyYWQ1YTk2NmFjYzBjN2Q0MTQzNDYzOGU2ZDE5NDBhYzUwMWQ5NjkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDQg
MTM6NTU6NTQgMjAxMSArMDQwMAoKICAgIEZpeAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjM2VkMzk1Li40MmVm
NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTEtMDgtMTYgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
dXRvY29tcGxldGUgY29tYm9ib3ggZm9yIENTUyBzdHlsZSBwcm9wZXJ0eSBuYW1lcy92YWx1ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTUxMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBOZXcgZmlsZXMgYWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6IE5ldyBmaWxlcyBhZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1BvcG92ZXIuanM6IEZvbGxvdyBDU1MgcnVsZXMgbW92ZSwgRWxlbWVudC5wcm90b3R5cGUuYm94
SW5XaW5kb3cgZXh0cmFjdGlvbi4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qb3BvdmVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZS5fcG9zaXRpb25FbGVtZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOiBDeWNs
aWMgQ1NTIGVkaXRvciB0YWJiaW5nLCBXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveCBiaW5kaW5ncy4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5u
ZXh0RWRpdGFibGVTaWJsaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZS5wcmV2aW91c0VkaXRhYmxlU2libGluZyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuc3RhcnRFZGl0aW5n
U2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUuc2VsZWN0RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91
c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uKToKKyAgICAgICAgKCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TdWdnZXN0Qm94LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdWdnZXN0Qm94KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnBy
b3RvdHlwZS5nZXQgdmlzaWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5w
cm90b3R5cGUuZ2V0IGhhc1NlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuX29uc2Nyb2xscmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dWdnZXN0Qm94LnByb3RvdHlwZS5fdXBkYXRlQm94UG9zaXRpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl9yZW1lbWJlcklucHV0UmFuZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl9vbmJveG1vdXNlZG93bik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUuX2hpZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLnJlbW92ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25LZXlEb3duKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5fYXBwbHlTdWdnZXN0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5hY2NlcHRT
dWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5h
Y2NlcHRBdXRvQ29tcGxldGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJv
dG90eXBlLl9vbk5leHRJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnBy
b3RvdHlwZS5fb25QcmV2aW91c0l0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RC
b3gucHJvdG90eXBlLnVwZGF0ZVN1Z2dlc3Rpb25zU29vbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUudXBkYXRlU3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl91cGRhdGVVc2VyRW50cnkpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl9vbkl0ZW1Nb3VzZURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jcmVhdGVJdGVtRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUuX3VwZGF0
ZUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlwZS5fdXBk
YXRlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LnByb3RvdHlw
ZS5fY2xlYXJBdXRvQ29tcGxldGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gu
cHJvdG90eXBlLl9jb21wbGV0aW9uc1JlYWR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdWdn
ZXN0Qm94LnByb3RvdHlwZS5lbnRlcktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN1Z2dlc3RCb3gucHJvdG90eXBlLnRhYktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlLnNwYWNlS2V5UHJlc3NlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOiBOZXcgZmlsZXMgYWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOiBDdXN0b20gc2Nyb2xsYmFyLXJlbGF0
ZWQgcnVsZXMgZXh0cmFjdGVkIGZyb20gcG9wb3Zlci5qcywgQ1NTIGVkaXRvciBzdWdnZXN0LWJv
eCBydWxlcyBhZGRlZC4KKyAgICAgICAgKC5zdWdnZXN0LWJveC5jc3Mtc3VnZ2VzdCk6CisgICAg
ICAgICguc3VnZ2VzdC1ib3guY3NzLXN1Z2dlc3QgLmNvbnRlbnQpOgorICAgICAgICAoLmN1c3Rv
bS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuY3VzdG9tLXBv
cHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyKToKKyAgICAgICAgKC5jdXN0
b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsIC5j
dXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyKToK
KyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXJlc2l6
ZXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1yZXNpemVyKToKKyAg
ICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJh
ci1idXR0b24sIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxi
YXItYnV0dG9uKToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjot
d2Via2l0LXNjcm9sbGJhcjpob3Jpem9udGFsOmNvcm5lci1wcmVzZW50KToKKyAgICAgICAgKC5j
dXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpo
b3Jpem9udGFsKToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjot
d2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmhvdmVyKToKKyAgICAgICAgKC5jdXN0
b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jp
em9udGFsOmFjdGl2ZSk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
IDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpzdGFydCk6CisgICAg
ICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXIt
dHJhY2stcGllY2U6aG9yaXpvbnRhbDplbmQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jp
em9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6
ZW5kOmNvcm5lci1wcmVzZW50KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1z
Y3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmRlY3JlbWVu
dCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1z
Y3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDppbmNyZW1lbnQpOgorICAgICAgICAoLmN1
c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhcjp2ZXJ0aWNhbDpj
b3JuZXItcHJlc2VudCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6
Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsKToKKyAgICAgICAgKC5jdXN0b20tcG9w
dXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92
ZXIpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNj
cm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12
ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpz
dGFydCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVuZCk6CisgICAgICAgICguY3VzdG9tLXBv
cHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRp
Y2FsOmVuZDpjb3JuZXItcHJlc2VudCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2Fs
LXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmRlY3JlbWVu
dCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Ny
b2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmluY3JlbWVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDogTmV3IGZpbGVzIGFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOiBXZWJJbnNwZWN0b3IuU3VnZ2VzdEJv
eC1yZWxhdGVkIGV4dGVuc2lvbi4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcu
Ymx1ckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zl
ci5jc3M6IEN1c3RvbSBzY3JvbGxiYXItcmVsYXRlZCBzdHlsZXMgbW92ZWQgaW50byBpbnNwZWN0
b3IuY3NzLgorICAgICAgICAoLnBvcG92ZXIucmlnaHQtYm90dG9tLWFycm93IC5hcnJvdyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9zdWdnZXN0Qm94LmNzczogQWRkZWQuCisgICAg
ICAgICguc3VnZ2VzdC1ib3gpOgorICAgICAgICAoLnN1Z2dlc3QtYm94LnZpc2libGUpOgorICAg
ICAgICAoLnN1Z2dlc3QtYm94IC5jb250YWluZXIpOgorICAgICAgICAoLnN1Z2dlc3QtYm94LWNv
bnRlbnQtaXRlbSk6CisgICAgICAgICguc3VnZ2VzdC1ib3gtY29udGVudC1pdGVtLnNlbGVjdGVk
KToKKyAgICAgICAgKC5zdWdnZXN0LWJveC1jb250ZW50LWl0ZW06aG92ZXI6bm90KC5zZWxlY3Rl
ZCkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzOiBFbGVtZW50
LnByb3RvdHlwZS5ib3hJbldpbmRvdyBleHRyYWN0ZWQgZnJvbSBXZWJJbnNwZWN0b3IuUG9wb3Zl
ci4KKyAgICAgICAgKHNldHVwUHJvdG90eXBlVXRpbGl0aWVzLkVsZW1lbnQucHJvdG90eXBlLmJv
eEluV2luZG93KToKKwogMjAxMS0wOC0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHI3MDU5OCk6IFtDaHJvbWl1bV0gU3R5bGUgY2hh
bmdlcyBpbiB0ZXh0SW5wdXQgZXZlbnQgY2FuIHByZXZlbnQgZnJvbSB1cGRhdGluZyA8dGV4dGFy
ZWE+IHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGRlNDA1OTIuLjc5NmFkMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTY0MzMsNiArNjQzMyw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VUb2tlbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvU3RhdHVzQmFyQnV0dG9uLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1N1Z2dlc3RCb3guanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVGFi
YmVkUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJv
bGxlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGln
aGxpZ2h0ZXIuanMnLApAQCAtNjQ2Miw2ICs2NDYzLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3RvclN5bnRheEhpZ2hsaWdodC5jc3MnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNzcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9wb3BvdmVyLmNzcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9zdWdnZXN0Qm94LmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC90ZXh0Vmlld2VyLmNzcycsCiAgICAgICAgICAgICAnPEAod2ViaW5zcGVjdG9yX3N0YW5kYWxv
bmVfY3NzX2ZpbGVzKScsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDZlOGQ1OGYuLjRmOGUwNWEgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02OTE0NSw2ICs2OTE0NSwx
NCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxTdWdnZXN0Qm94LmpzIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxz
dWdnZXN0Qm94LmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU3VtbWFyeUJhci5qcyIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zl
ci5qcwppbmRleCBmNWE3M2UzLi41MWI3ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCkBAIC0zMSw3ICszMSw3IEBACiBXZWJJbnNwZWN0b3Iu
UG9wb3ZlciA9IGZ1bmN0aW9uKGNvbnRlbnRFbGVtZW50KQogewogICAgIHRoaXMuZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc05h
bWUgPSAicG9wb3ZlciI7CisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1
c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
IjsKIAogICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFycm93
IjsKQEAgLTkxLDE3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOwogICAgICAgICBj
b25zdCB0b3RhbEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsKIAotICAgICAgICB2YXIgYW5j
aG9yQm94ID0gYW5jaG9yRWxlbWVudC5vZmZzZXRSZWxhdGl2ZVRvV2luZG93KHdpbmRvdyk7Ci0g
ICAgICAgIGFuY2hvckJveC53aWR0aCA9IGFuY2hvckVsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAg
ICAgIGFuY2hvckJveC5oZWlnaHQgPSBhbmNob3JFbGVtZW50Lm9mZnNldEhlaWdodDsKLSAgICAg
ICAgd2hpbGUgKGFuY2hvckVsZW1lbnQgIT09IGFuY2hvckVsZW1lbnQub3duZXJEb2N1bWVudC5i
b2R5KSB7Ci0gICAgICAgICAgICBpZiAoYW5jaG9yRWxlbWVudC5zY3JvbGxMZWZ0KQotICAgICAg
ICAgICAgICAgIGFuY2hvckJveC54IC09IGFuY2hvckVsZW1lbnQuc2Nyb2xsTGVmdDsKLSAgICAg
ICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9sbFRvcCkKLSAgICAgICAgICAgICAgICBhbmNo
b3JCb3gueSAtPSBhbmNob3JFbGVtZW50LnNjcm9sbFRvcDsKLSAgICAgICAgICAgIGFuY2hvckVs
ZW1lbnQgPSBhbmNob3JFbGVtZW50LnBhcmVudEVsZW1lbnQ7Ci0gICAgICAgIH0KLQorICAgICAg
ICB2YXIgYW5jaG9yQm94ID0gYW5jaG9yRWxlbWVudC5ib3hJbldpbmRvdyh3aW5kb3cpOwogICAg
ICAgICB2YXIgbmV3RWxlbWVudFBvc2l0aW9uID0geyB4OiAwLCB5OiAwLCB3aWR0aDogcHJlZmVy
cmVkV2lkdGggKyBzY3JvbGxlcldpZHRoLCBoZWlnaHQ6IHByZWZlcnJlZEhlaWdodCB9OwogCiAg
ICAgICAgIHZhciB2ZXJ0aWNhbEFsaWdubWVudDsKQEAgLTE0OSw3ICsxMzksNyBAQCBXZWJJbnNw
ZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wb3B1cEFycm93
RWxlbWVudC5zdHlsZS5sZWZ0ICs9IGFuY2hvckJveC53aWR0aCAvIDI7CiAgICAgICAgIH0KIAot
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInBvcG92ZXIgIiArIHZlcnRpY2FsQWxp
Z25tZW50ICsgIi0iICsgaG9yaXpvbnRhbEFsaWdubWVudCArICItYXJyb3ciOworICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInBvcG92ZXIgY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNj
cm9sbCBjdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgIiArIHZlcnRpY2FsQWxpZ25tZW50
ICsgIi0iICsgaG9yaXpvbnRhbEFsaWdubWVudCArICItYXJyb3ciOwogICAgICAgICB0aGlzLmVs
ZW1lbnQucG9zaXRpb25BdChuZXdFbGVtZW50UG9zaXRpb24ueCAtIGJvcmRlcldpZHRoLCBuZXdF
bGVtZW50UG9zaXRpb24ueSAtIGJvcmRlcldpZHRoKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnN0
eWxlLndpZHRoID0gbmV3RWxlbWVudFBvc2l0aW9uLndpZHRoICsgYm9yZGVyV2lkdGggKiAyICsg
InB4IjsKICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IG5ld0VsZW1lbnRQb3Np
dGlvbi5oZWlnaHQgKyBib3JkZXJXaWR0aCAqIDIgKyAicHgiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXgg
ZTI4MGFlYS4uYTRhMGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0xMDEsNyArMTAxLDcgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9ybWF0ID0gewogICAgIEhTTEE6ICJo
c2xhIgogfQogCi1XZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGlt
aXRlcnMgPSAiIFx0XG5cIic6OywvKCkiOworV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
LlN0eWxlVmFsdWVEZWxpbWl0ZXJzID0gIiBceEEwXHRcblwiJzo7LC8oIjsKIAogLy8gVGFrZW4g
ZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9wcm9waWR4Lmh0bWwuCiBXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUuSW5oZXJpdGVkUHJvcGVydGllcyA9IFsKQEAgLTkyNyw2ICs5
MjcsMTggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rpb24ubmV4dFNpYmxpbmc7CiAgICAg
ICAgIH0gd2hpbGUgKGN1clNlY3Rpb24gJiYgIWN1clNlY3Rpb24uZWRpdGFibGUpOwogCisgICAg
ICAgIGlmICghY3VyU2VjdGlvbikgeworICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZVNlY3Rpb24g
PSB0aGlzOworICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGNhbmRpZGF0ZVNlY3Rpb24ucHJldmlv
dXNTaWJsaW5nOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmIChjdXJTZWN0
aW9uICYmIGN1clNlY3Rpb24uZWRpdGFibGUpCisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0
ZVNlY3Rpb24gPSBjdXJTZWN0aW9uOworICAgICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjdXJT
ZWN0aW9uLnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgIH0gd2hpbGUgKGN1clNlY3Rpb24p
OworCisgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlU2VjdGlvbi5lZGl0YWJsZSA/IGNhbmRp
ZGF0ZVNlY3Rpb24gOiBudWxsOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGN1clNlY3Rp
b247CiAgICAgfSwKIApAQCAtOTM3LDYgKzk0OSwxOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9w
ZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjdXJTZWN0aW9uID0gY3Vy
U2VjdGlvbi5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgIH0gd2hpbGUgKGN1clNlY3Rpb24gJiYg
IWN1clNlY3Rpb24uZWRpdGFibGUpOwogCisgICAgICAgIGlmICghY3VyU2VjdGlvbikgeworICAg
ICAgICAgICAgdmFyIGNhbmRpZGF0ZVNlY3Rpb24gPSB0aGlzOworICAgICAgICAgICAgY3VyU2Vj
dGlvbiA9IGNhbmRpZGF0ZVNlY3Rpb24ubmV4dFNpYmxpbmc7CisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgaWYgKGN1clNlY3Rpb24gJiYgY3VyU2VjdGlvbi5lZGl0YWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlU2VjdGlvbiA9IGN1clNlY3Rpb247CisgICAgICAg
ICAgICAgICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rpb24ubmV4dFNpYmxpbmc7CisgICAgICAgICAg
ICB9IHdoaWxlIChjdXJTZWN0aW9uKTsKKworICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVNl
Y3Rpb24uZWRpdGFibGUgPyBjYW5kaWRhdGVTZWN0aW9uIDogbnVsbDsKKyAgICAgICAgfQorCiAg
ICAgICAgIHJldHVybiBjdXJTZWN0aW9uOwogICAgIH0sCiAKQEAgLTExMTIsNiArMTEzNiw3IEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGVsZW1lbnQpKQogICAgICAgICAgICAg
cmV0dXJuOwogCisgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5zY3JvbGxJbnRvVmlld0lm
TmVlZGVkKGZhbHNlKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0aGlzLl9z
ZWxlY3RvckVsZW1lbnQsIHsKICAgICAgICAgICAgIGNvbnRleHQ6IG51bGwsCiAgICAgICAgICAg
ICBjb21taXRIYW5kbGVyOiB0aGlzLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZC5iaW5kKHRoaXMp
LApAQCAtMTc4NywxOCArMTgxMiwzNSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSB8
fCBpc0ZpZWxkSW5wdXRUZXJtaW5hdGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gRW50ZXIgb3Ig
Y29sb24gKGZvciBuYW1lKS9zZW1pY29sb24gb3V0c2lkZSBvZiBzdHJpbmcgKGZvciB2YWx1ZSku
CiAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNFbnRlcktleShldmVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRW50ZXIg
c2hvdWxkIG9ubHkgYWNjZXB0IHRoZSBzdWdnZXN0aW9uIHdpdGhvdXQgY29tbWl0dGluZyB0aGUg
dmFsdWUgaWYgdGhlIHN1Z2dlc3QgYm94IGlzIHZpc2libGUuCisgICAgICAgICAgICAgICAgICAg
IGlmICh0aGlzLl9zdWdnZXN0Qm94LnZpc2libGUgJiYgdGhpcy5fc3VnZ2VzdEJveC5oYXNTZWxl
Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3guYWNjZXB0
U3VnZ2VzdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiAi
bW92ZS1mb3J3YXJkIjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0g
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSB8fCBldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiVSswMDFCIikKLSAgICAgICAgICAgICAgICByZXR1cm4gImNhbmNlbCI7
Ci0gICAgICAgICAgICBlbHNlIGlmICghaXNFZGl0aW5nTmFtZSAmJiB0aGlzLl9uZXdQcm9wZXJ0
eSAmJiBldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlz
LkJhY2tzcGFjZS5jb2RlKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUg
PT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMu
X3N1Z2dlc3RCb3gudmlzaWJsZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjYW5jZWwi
OyAvLyBPbmx5IGNhbmNlbCB0aGUgZWRpdG9yIHdoZW4gdGhlIHN1Z2dlc3QgYm94IGlzIG5vdCBh
Y3RpdmUuCisgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0VkaXRpbmdOYW1lICYmIHRoaXMuX25l
d1Byb3BlcnR5ICYmIGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleXMuQmFja3NwYWNlLmNvZGUpIHsKICAgICAgICAgICAgICAgICAvLyBGb3IgYSBuZXcg
cHJvcGVydHksIHdoZW4gQmFja3NwYWNlIGlzIHByZXNzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBu
ZXcgcHJvcGVydHkgdmFsdWUsIG1vdmUgYmFjayB0byB0aGUgcHJvcGVydHkgbmFtZS4KICAgICAg
ICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAg
ICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiYgIXNlbGVjdGlvbi5mb2N1c09m
ZnNldCkgewogICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtYmFja3dhcmQiOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAw
OSIpIC8vIFRhYiBrZXkuCisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZp
ZXIgPT09ICJVKzAwMDkiKSB7IC8vIFRhYiBrZXkuCisgICAgICAgICAgICAgICAgLy8gVGFiIGFj
Y2VwdHMgdGhlIHByb3BlcnR5IG5hbWUgc3VnZ2VzdGlvbi9jb21wbGV0aW9uIGFuZCB0cmFuc2l0
aW9ucyB0byB0aGUgdmFsdWUgZmllbGQuCisgICAgICAgICAgICAgICAgaWYgKGlzRWRpdGluZ05h
bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3gudmlzaWJsZSAm
JiB0aGlzLl9zdWdnZXN0Qm94Lmhhc1NlbGVjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX3N1Z2dlc3RCb3guYWNjZXB0U3VnZ2VzdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LmFjY2VwdEF1
dG9Db21wbGV0ZSgpOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHJldHVy
biAibW92ZS0iICsgKGV2ZW50LnNoaWZ0S2V5ID8gImJhY2t3YXJkIiA6ICJmb3J3YXJkIik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBwYXN0ZUhhbmRsZXIo
Y29udGV4dCwgZXZlbnQpCkBAIC0xODI2LDE4ICsxODY4LDI1IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJt
b3ZlLWZvcndhcmQiOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gZm9jdXNSZXN0b3Jl
cihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICh0aGlzLl9zdWdnZXN0Qm94
ICYmIHRoaXMuX3N1Z2dlc3RCb3guZm9jdXNlZCkgPyB0aGlzLl9zdWdnZXN0Qm94LmlucHV0UmFu
Z2UgOiBudWxsOworICAgICAgICB9CisKICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9w
ZXJ0eVRleHQ7CiAKICAgICAgICAgdGhpcy5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGUgPSB0
cnVlOworICAgICAgICBzZWxlY3RFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2Up
OwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAg
ICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0
aGlzLmVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKICAgICAgICAgICAgIGNhbmNlbEhhbmRs
ZXI6IHRoaXMuZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLAogICAgICAgICAgICAgY3VzdG9t
RmluaXNoSGFuZGxlcjogbmFtZVZhbHVlRmluaXNoSGFuZGxlci5iaW5kKHRoaXMsIGNvbnRleHQs
IGlzRWRpdGluZ05hbWUpLAotICAgICAgICAgICAgcGFzdGVIYW5kbGVyOiBpc0VkaXRpbmdOYW1l
ID8gcGFzdGVIYW5kbGVyLmJpbmQodGhpcywgY29udGV4dCkgOiBudWxsCisgICAgICAgICAgICBw
YXN0ZUhhbmRsZXI6IGlzRWRpdGluZ05hbWUgPyBwYXN0ZUhhbmRsZXIuYmluZCh0aGlzLCBjb250
ZXh0KSA6IG51bGwsCisgICAgICAgICAgICBmb2N1c1Jlc3RvcmVyOiBmb2N1c1Jlc3RvcmVyLmJp
bmQodGhpcykKICAgICAgICAgfSk7CiAKLSAgICAgICAgdGhpcy5fcHJvbXB0ID0gbmV3IFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdChzZWxlY3RFbGVtZW50
LCBpc0VkaXRpbmdOYW1lID8gV2ViSW5zcGVjdG9yLmNzc05hbWVDb21wbGV0aW9ucyA6IFdlYklu
c3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkodGhpcy5uYW1lRWxlbWVu
dC50ZXh0Q29udGVudCkpOworICAgICAgICB0aGlzLl9zdWdnZXN0Qm94ID0gbmV3IFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVN1Z2dlc3Qoc2VsZWN0RWxlbWVudCwg
aXNFZGl0aW5nTmFtZSA/IFdlYkluc3BlY3Rvci5jc3NOYW1lQ29tcGxldGlvbnMgOiBXZWJJbnNw
ZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHRoaXMubmFtZUVsZW1lbnQu
dGV4dENvbnRlbnQpLCB0aGlzLl9hcHBseUZyZWVGbG93U3R5bGVUZXh0RWRpdC5iaW5kKHRoaXMs
IHRydWUpKTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQo
c2VsZWN0RWxlbWVudCwgMCwgc2VsZWN0RWxlbWVudCwgMSk7CiAgICAgfSwKIApAQCAtMTk4NSwx
NyArMjAzNCwyNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIG1vdmVUbyA9IHRoaXM7CiAgICAgICAgIHZhciBtb3ZlVG9P
dGhlciA9IChpc0VkaXRpbmdOYW1lIF4gKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIikpOwog
ICAgICAgICB2YXIgYWJhbmRvbk5ld1Byb3BlcnR5ID0gdGhpcy5fbmV3UHJvcGVydHkgJiYgIXVz
ZXJJbnB1dCAmJiAobW92ZVRvT3RoZXIgfHwgaXNFZGl0aW5nTmFtZSk7CisgICAgICAgIHZhciB0
YXJnZXROZXdQcm9wZXJ0eVNlY3Rpb24gPSB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb247CiAgICAg
ICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgIWlzRWRpdGluZ05hbWUgfHwg
bW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIiAmJiBpc0VkaXRpbmdOYW1lKSB7CiAgICAgICAg
ICAgICBkbyB7CiAgICAgICAgICAgICAgICAgbW92ZVRvID0gKG1vdmVEaXJlY3Rpb24gPT09ICJm
b3J3YXJkIiA/IG1vdmVUby5uZXh0U2libGluZyA6IG1vdmVUby5wcmV2aW91c1NpYmxpbmcpOwog
ICAgICAgICAgICAgfSB3aGlsZShtb3ZlVG8gJiYgIW1vdmVUby5zZWxlY3RhYmxlKTsKIAotICAg
ICAgICAgICBpZiAobW92ZVRvKQorICAgICAgICAgICAgaWYgKG1vdmVUbykKICAgICAgICAgICAg
ICAgICBtb3ZlVG9Qcm9wZXJ0eU5hbWUgPSBtb3ZlVG8ubmFtZTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAmJiAoIXRoaXMuX25ld1Byb3BlcnR5IHx8
IHVzZXJJbnB1dCkpCiAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UHJvcGVydHkgPSB0cnVlOwot
ICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIiAmJiB0aGlz
LnRyZWVPdXRsaW5lLnNlY3Rpb24ucnVsZSkKLSAgICAgICAgICAgICAgICBtb3ZlVG9TZWxlY3Rv
ciA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dh
cmQiKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5ydWxl
KQorICAgICAgICAgICAgICAgICAgICBtb3ZlVG9TZWxlY3RvciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1NpYmxpbmcgPSB0
aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucHJldmlvdXNFZGl0YWJsZVNpYmxpbmcoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU2libGluZykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlTmV3UHJvcGVydHkgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0TmV3UHJvcGVydHlTZWN0aW9uID0gcHJldmlvdXNTaWJsaW5nOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gTWFrZSB0aGUgQ2hhbmdlcyBhbmQgdHJpZ2dlciB0aGUgbW92ZVRvTmV4dENh
bGxiYWNrIGFmdGVyIHVwZGF0aW5nLgpAQCAtMjAwNCw3ICsyMDYzLDcgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpc0Rp
cnR5VmlhUGFzdGUgPSBpc0RhdGFQYXN0ZWQgJiYgKHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRl
bnQgIT09IGNvbnRleHQub3JpZ2luYWxOYW1lIHx8IHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250
ZW50ICE9PSBjb250ZXh0Lm9yaWdpbmFsVmFsdWUpOwogICAgICAgICB2YXIgc2hvdWxkQ29tbWl0
TmV3UHJvcGVydHkgPSB0aGlzLl9uZXdQcm9wZXJ0eSAmJiAobW92ZVRvT3RoZXIgfHwgKCFtb3Zl
RGlyZWN0aW9uICYmICFpc0VkaXRpbmdOYW1lKSB8fCAoaXNFZGl0aW5nTmFtZSAmJiBibGFua0lu
cHV0KSk7CiAgICAgICAgIGlmICgoKHVzZXJJbnB1dCAhPT0gcHJldmlvdXNDb250ZW50IHx8IGlz
RGlydHlWaWFQYXN0ZSkgJiYgIXRoaXMuX25ld1Byb3BlcnR5KSB8fCBzaG91bGRDb21taXROZXdQ
cm9wZXJ0eSkgewotICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVw
ZGF0ZSA9IG1vdmVUb05leHRDYWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAh
YmxhbmtJbnB1dCwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKKyAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2FsbGJhY2suYmlu
ZCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgIWJsYW5rSW5wdXQsIHRoaXMudHJlZU91dGxpbmUu
c2VjdGlvbiwgdGFyZ2V0TmV3UHJvcGVydHlTZWN0aW9uKTsKICAgICAgICAgICAgIHZhciBwcm9w
ZXJ0eVRleHQ7CiAgICAgICAgICAgICBpZiAoYmxhbmtJbnB1dCB8fCAodGhpcy5fbmV3UHJvcGVy
dHkgJiYgL15ccyokLy50ZXN0KHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50KSkpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHlUZXh0ID0gIiI7CkBAIC0yMDE4LDEzICsyMDc3LDEzIEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFpc0RhdGFQYXN0ZWQgJiYgIXRoaXMuX25ld1By
b3BlcnR5KQogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKLSAgICAgICAgICAg
IG1vdmVUb05leHRDYWxsYmFjay5jYWxsKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKKyAgICAgICAgICAgIG1vdmVUb05leHRDYWxsYmFj
ay5jYWxsKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCBmYWxzZSwgdGhpcy50cmVlT3V0bGluZS5z
ZWN0aW9uLCB0YXJnZXROZXdQcm9wZXJ0eVNlY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAg
dmFyIG1vdmVUb0luZGV4ID0gbW92ZVRvICYmIHRoaXMudHJlZU91dGxpbmUgPyB0aGlzLnRyZWVP
dXRsaW5lLmNoaWxkcmVuLmluZGV4T2YobW92ZVRvKSA6IC0xOwogCiAgICAgICAgIC8vIFRoZSBD
YWxsYmFjayB0byBzdGFydCBlZGl0aW5nIHRoZSBuZXh0L3ByZXZpb3VzIHByb3BlcnR5L3NlbGVj
dG9yLgotICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2FsbGJhY2soYWxyZWFkeU5ldywgdmFs
dWVDaGFuZ2VkLCBzZWN0aW9uKQorICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2FsbGJhY2so
YWxyZWFkeU5ldywgdmFsdWVDaGFuZ2VkLCBzZWN0aW9uLCB0YXJnZXROZXdQcm9wZXJ0eVNlY3Rp
b24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yMDU4LDE0ICsyMTE3LDI3IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGlmIChh
bHJlYWR5TmV3ICYmICF2YWx1ZUNoYW5nZWQgJiYgKGlzRWRpdGluZ05hbWUgXiAobW92ZURpcmVj
dGlvbiA9PT0gImJhY2t3YXJkIikpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgICAgICBzZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmco
KTsKKyAgICAgICAgICAgICAgICB0YXJnZXROZXdQcm9wZXJ0eVNlY3Rpb24uYWRkTmV3QmxhbmtQ
cm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFiYW5kb25OZXdQcm9wZXJ0eSkgewogICAgICAg
ICAgICAgICAgIHZhciBzZWN0aW9uVG9FZGl0ID0gbW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJk
IiA/IHNlY3Rpb24gOiBzZWN0aW9uLm5leHRFZGl0YWJsZVNpYmxpbmcoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoc2VjdGlvblRvRWRpdCAmJiBzZWN0aW9uVG9FZGl0LnJ1bGUpCi0gICAgICAgICAg
ICAgICAgICAgIHNlY3Rpb25Ub0VkaXQuc3RhcnRFZGl0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2VjdGlvblRvRWRpdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc2Vj
dGlvblRvRWRpdC5ydWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRvRWRpdC5z
dGFydEVkaXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25Ub0VkaXQuYWRkTmV3QmxhbmtQcm9wZXJ0
eSgpLnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gc2VjdGlvblRvRWRpdC5wcm9w
ZXJ0aWVzVHJlZU91dGxpbmUgPyBzZWN0aW9uVG9FZGl0LnByb3BlcnRpZXNUcmVlT3V0bGluZS5j
aGlsZHJlbiA6IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVu
ICYmIGNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hp
bGRyZW5bMF0uc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uVG9FZGl0LmFkZE5ld0Js
YW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIwNzcsOSArMjE0OSw5IEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIF9yZW1vdmVQ
cm9tcHQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIEJVRyA1MzI0Mi4gVGhpcyBjYW5u
b3QgZ28gaW50byBlZGl0aW5nRW5kZWQoKSwgYXMgaXQgc2hvdWxkIGFsd2F5cyBoYXBwZW4gZmly
c3QgZm9yIGFueSBlZGl0aW5nIG91dGNvbWUuCi0gICAgICAgIGlmICh0aGlzLl9wcm9tcHQpIHsK
LSAgICAgICAgICAgIHRoaXMuX3Byb21wdC5yZW1vdmVGcm9tRWxlbWVudCgpOwotICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX3Byb21wdDsKKyAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3gpIHsK
KyAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3gucmVtb3ZlRnJvbUVsZW1lbnQoKTsKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zdWdnZXN0Qm94OwogICAgICAgICB9CiAgICAgfSwKIApAQCAt
MjE1Niw3NyArMjIyOCw0NiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQgPSBmdW5jdGlvbihlbGVtZW50
LCBjc3NDb21wbGV0aW9ucykKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9w
ZXJ0eVN1Z2dlc3QgPSBmdW5jdGlvbihpbnB1dEVsZW1lbnQsIGNzc0NvbXBsZXRpb25zLCBhcHBs
eUl0ZW1DYWxsYmFjaywgYWNjZXB0Q2FsbGJhY2spCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuY2FsbCh0aGlzLCBlbGVtZW50LCB0aGlzLl9idWlsZFByb3BlcnR5Q29tcGxldGlvbnMu
YmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxp
bWl0ZXJzLCB0cnVlKTsKICAgICB0aGlzLl9jc3NDb21wbGV0aW9ucyA9IGNzc0NvbXBsZXRpb25z
OworICAgIFdlYkluc3BlY3Rvci5TdWdnZXN0Qm94LmNhbGwodGhpcywgaW5wdXRFbGVtZW50LCAi
Y3NzLXN1Z2dlc3QiLCB0aGlzLl9idWlsZFByb3BlcnR5Q29tcGxldGlvbnMuYmluZCh0aGlzKSwg
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCBhcHBs
eUl0ZW1DYWxsYmFjaywgYWNjZXB0Q2FsbGJhY2spOwogfQogCi1XZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBlID0gewotICAgIHVwS2V5UHJl
c3NlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9oYW5kbGVOYW1lT3JW
YWx1ZVVwRG93bihldmVudCk7Ci0gICAgfSwKLQotICAgIGRvd25LZXlQcmVzc2VkOiBmdW5jdGlv
bihldmVudCkKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVN1Z2dl
c3QucHJvdG90eXBlID0geworICAgIGVudGVyS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewotICAgICAgICB0aGlzLl9oYW5kbGVOYW1lT3JWYWx1ZVVwRG93bihldmVudCk7CisgICAg
ICAgIGlmICh0aGlzLmFjY2VwdFN1Z2dlc3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKHRoaXMu
YWNjZXB0Q2FsbGJhY2spCisgICAgICAgICAgICAgICAgdGhpcy5hY2NlcHRDYWxsYmFjaygpOwor
ICAgICAgICB9CiAgICAgfSwKIAogICAgIHRhYktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKTsKLSAgICB9LAotCi0gICAg
X2hhbmRsZU5hbWVPclZhbHVlVXBEb3duOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHZhciByZXZlcnNlID0gZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIjsKLSAgICAgICAgaWYg
KHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCkKLSAgICAgICAgICAgIHRoaXMuY29tcGxldGUoZmFs
c2UsIHJldmVyc2UpOyAvLyBBY2NlcHQgdGhlIGN1cnJlbnQgc3VnZ2VzdGlvbiwgaWYgYW55Lgot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNlbGVjdCB0aGUgd29yZCBzdWZmaXggdG8g
YWZmZWN0IGl0IHdoZW4gY29tcHV0aW5nIHRoZSBzdWJzZXF1ZW50IHN1Z2dlc3Rpb24uCi0gICAg
ICAgICAgICB0aGlzLl9zZWxlY3RDdXJyZW50V29yZFN1ZmZpeCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5jb21wbGV0ZShmYWxzZSwgcmV2ZXJzZSk7IC8vIEFjdHVhbGx5IGluY3JlbWVu
dC9kZWNyZW1lbnQgdGhlIHN1Z2dlc3Rpb24uCi0gICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0cnVl
OworICAgICAgICAvL3RoaXMuX2NsZWFyQXV0b0NvbXBsZXRlKCk7CisgICAgICAgIHRoaXMuX2hp
ZGUoKTsKICAgICB9LAogCi0gICAgX3NlbGVjdEN1cnJlbnRXb3JkU3VmZml4OiBmdW5jdGlvbigp
CisgICAgc3BhY2VLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZh
ciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghc2VsZWN0
aW9uLnJhbmdlQ291bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNlbGVj
dGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAgICAgIGlmICghc2VsZWN0
aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNEZXNjZW5kYW50KHRoaXMuZWxlbWVu
dCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciB3b3JkU3VmZml4UmFuZ2UgPSBz
ZWxlY3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5z
dGFydE9mZnNldCwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxp
bWl0ZXJzLCB0aGlzLmVsZW1lbnQsICJmb3J3YXJkIik7Ci0gICAgICAgIGlmICghd29yZFN1ZmZp
eFJhbmdlLnRvU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNlbGVjdGlv
bi5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHdvcmRTdWZm
aXhSYW5nZSk7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQgJiYgdGhpcy5fc2Vs
ZWN0ZWRFbGVtZW50LnRleHRDb250ZW50KSB7CisgICAgICAgICAgICB0aGlzLmFjY2VwdFN1Z2dl
c3Rpb24odGhpcy5fc2VsZWN0ZWRFbGVtZW50LnRleHRDb250ZW50ICsgIiAiKTsKKyAgICAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuc3BhY2VLZXlQcmVzc2VkLmNhbGwodGhpcywgZXZlbnQpOwogICAgIH0s
CiAKLSAgICBfYnVpbGRQcm9wZXJ0eUNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGJl
c3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKKyAgICBfYnVpbGRQcm9wZXJ0
eUNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFj
aykKICAgICB7CiAgICAgICAgIHZhciBwcmVmaXggPSB3b3JkUmFuZ2UudG9TdHJpbmcoKS50b0xv
d2VyQ2FzZSgpOwotICAgICAgICBpZiAoIXByZWZpeCAmJiBiZXN0TWF0Y2hPbmx5KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciByZXN1bHRzOwotICAgICAgICBpZiAoYmVzdE1h
dGNoT25seSkgewotICAgICAgICAgICAgcmVzdWx0cyA9IFtdOwotICAgICAgICAgICAgdmFyIGZp
cnN0TWF0Y2ggPSB0aGlzLl9jc3NDb21wbGV0aW9ucy5maXJzdFN0YXJ0c1dpdGgocHJlZml4KTsK
LSAgICAgICAgICAgIGlmIChmaXJzdE1hdGNoKQotICAgICAgICAgICAgICAgIHJlc3VsdHMucHVz
aChmaXJzdE1hdGNoKTsKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uc1JlYWR5Q2FsbGJh
Y2socmVzdWx0cyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHRzID0gdGhpcy5fY3NzQ29t
cGxldGlvbnMuc3RhcnRzV2l0aChwcmVmaXgpOwotICAgICAgICBpZiAocmVzdWx0cykKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhyZXN1bHRzKTsKKyAgICAgICAgdmFyIHJl
c3VsdHMgPSB0aGlzLl9jc3NDb21wbGV0aW9ucy5zdGFydHNXaXRoKHByZWZpeCk7CisgICAgICAg
IC8vIEF2b2lkL2hpZGUgYSBzdWdnZXN0aW9uIGJveCBpZiB0aGUgY3VycmVudCBwcmVmaXggZXF1
YWxzIHRoZSBvbmx5IHN1Z2dlc3Rpb24uCisgICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMu
bGVuZ3RoID09PSAxICYmIHJlc3VsdHNbMF0ubWF0Y2gobmV3IFJlZ0V4cCgiXiIgKyBwcmVmaXgu
ZXNjYXBlRm9yUmVnRXhwKCkgKyAiJCIsICJpIikpKQorICAgICAgICAgICAgcmVzdWx0cyA9IG51
bGw7CisgICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhyZXN1bHRzKTsKICAgICB9CiB9
CiAKLVdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5U3VnZ2VzdC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN1Z2dlc3RCb3gucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdWdnZXN0Qm94LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdWdnZXN0Qm94LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NjVhNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N1Z2dlc3RCb3guanMKQEAgLTAsMCArMSw0
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveCA9IGZ1bmN0aW9uKGlucHV0RWxlbWVudCwg
Y2xhc3NOYW1lLCBjb21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMsIGFwcGx5SXRlbUNhbGxiYWNr
LCBhY2NlcHRDYWxsYmFjaykKK3sKKyAgICB0aGlzLnBhcmVudEVsZW1lbnQgPSBpbnB1dEVsZW1l
bnQub3duZXJEb2N1bWVudC5ib2R5OworICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gaW5wdXRFbGVt
ZW50OworICAgIHRoaXMuY29tcGxldGlvbnMgPSBjb21wbGV0aW9uczsKKyAgICB0aGlzLmNvbXBs
ZXRpb25TdG9wQ2hhcmFjdGVycyA9IHN0b3BDaGFyYWN0ZXJzOworICAgIHRoaXMuYXBwbHlJdGVt
Q2FsbGJhY2sgPSBhcHBseUl0ZW1DYWxsYmFjazsKKyAgICB0aGlzLmFjY2VwdENhbGxiYWNrID0g
YWNjZXB0Q2FsbGJhY2s7CisgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDsKKyAgICB0
aGlzLl9ib3VuZE9uS2V5RG93biA9IHRoaXMuX29uS2V5RG93bi5iaW5kKHRoaXMpOworICAgIHRo
aXMuX2JvdW5kT25TY3JvbGwgPSB0aGlzLl9vbnNjcm9sbHJlc2l6ZS5iaW5kKHRoaXMsIHRydWUp
OworICAgIHRoaXMuX2JvdW5kT25SZXNpemUgPSB0aGlzLl9vbnNjcm9sbHJlc2l6ZS5iaW5kKHRo
aXMsIGZhbHNlKTsKKyAgICB0aGlzLmlucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlk
b3duIiwgdGhpcy5fYm91bmRPbktleURvd24sIHRydWUpOworICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9ib3VuZE9uU2Nyb2xsLCB0cnVlKTsKKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRPblJlc2l6ZSwgdHJ1ZSk7CisK
KyAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLnBhcmVudEVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIs
ICJzdWdnZXN0LWJveCBjdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIGN1c3RvbS1wb3B1cC1o
b3Jpem9udGFsLXNjcm9sbCAiICsgKGNsYXNzTmFtZSB8fCAiIikpOworICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vbmJveG1vdXNlZG93bi5iaW5k
KHRoaXMpLCB0cnVlKTsKKyAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmVsZW1lbnQu
Y3JlYXRlQ2hpbGQoImRpdiIsICJjb250YWluZXIiKTsKKyAgICB0aGlzLmNvbnRlbnRFbGVtZW50
ID0gdGhpcy5jb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiY29udGVudCIpOwor
CisgICAgdGhpcy5fdXBkYXRlQm94UG9zaXRpb24oKTsKKyAgICB0aGlzLnVwZGF0ZVN1Z2dlc3Rp
b25zU29vbigpOworfQorCitXZWJJbnNwZWN0b3IuU3VnZ2VzdEJveC5wcm90b3R5cGUgPSB7Cisg
ICAgZ2V0IHZpc2libGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5oYXNT
dHlsZUNsYXNzKCJ2aXNpYmxlIik7CisgICAgfSwKKworICAgIGdldCBoYXNTZWxlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhdGhpcy5fc2VsZWN0ZWRFbGVtZW50OworICAgIH0sCisK
KyAgICBfb25zY3JvbGxyZXNpemU6IGZ1bmN0aW9uKGlzU2Nyb2xsLCBldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmIChpc1Njcm9sbCAmJiB0aGlzLmVsZW1lbnQuYW5jZXN0b3JPZihldmVudC50YXJn
ZXQpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl91cGRhdGVCb3hQb3NpdGlv
bigpOworICAgIH0sCisKKyAgICBfdXBkYXRlQm94UG9zaXRpb246IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIC8vIE1lYXN1cmUgdGhlIGNvbnRlbnQgZWxlbWVudCBib3guCisgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOworICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOworICAgICAg
ICB0aGlzLmNvbnRlbnRFbGVtZW50LnBvc2l0aW9uQXQoMCwgMCk7CisgICAgICAgIHZhciBjb250
ZW50V2lkdGggPSB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldFdpZHRoOworICAgICAgICB2YXIg
Y29udGVudEhlaWdodCA9IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgICAg
ICB0aGlzLmNvbnRlbnRFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgICAgICB0
aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RWxlbWVudCk7CisK
KyAgICAgICAgLy8gTGF5IG91dCB0aGUgc3VnZ2VzdC1ib3ggcmVsYXRpdmUgdG8gdGhlIGFuY2hv
ckJveC4KKyAgICAgICAgY29uc3QgYW5jaG9yQm94ID0gdGhpcy5pbnB1dEVsZW1lbnQuYm94SW5X
aW5kb3cod2luZG93LCB0aGlzLnBhcmVudEVsZW1lbnQpOworICAgICAgICBjb25zdCBzdWdnZXN0
Qm94UGFkZGluZ1ggPSAyMTsKKyAgICAgICAgY29uc3Qgc3VnZ2VzdEJveFBhZGRpbmdZID0gMTI7
CisgICAgICAgIGNvbnN0IHNwYWNlciA9IDY7CisgICAgICAgIGNvbnN0IG1heFdpZHRoID0gZG9j
dW1lbnQuYm9keS5vZmZzZXRXaWR0aCAtIGFuY2hvckJveC54IC0gc3BhY2VyOworICAgICAgICBj
b25zdCBtYXhIZWlnaHQgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCAtIGFuY2hvckJveC55
IC0gYW5jaG9yQm94LmhlaWdodCAtIHNwYWNlcjsKKyAgICAgICAgLy8gRklYTUU6IGF0dGVtcHQg
b25seSBwb3NpdGlvbmluZyBiZWxvdyB0aGUgYW5jaG9yIGZvciBhIHN0YXJ0LgorICAgICAgICB0
aGlzLmVsZW1lbnQucG9zaXRpb25BdChhbmNob3JCb3gueCwgYW5jaG9yQm94LnkgKyBhbmNob3JC
b3guaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gKE1hdGgubWlu
KGNvbnRlbnRXaWR0aCwgbWF4V2lkdGggLSBzdWdnZXN0Qm94UGFkZGluZ1gpICsgc3VnZ2VzdEJv
eFBhZGRpbmdYKSArICJweCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSAo
TWF0aC5taW4oY29udGVudEhlaWdodCwgbWF4SGVpZ2h0IC0gc3VnZ2VzdEJveFBhZGRpbmdZKSAr
IHN1Z2dlc3RCb3hQYWRkaW5nWSkgKyAicHgiOworICAgIH0sCisKKyAgICBfcmVtZW1iZXJJbnB1
dFJhbmdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93
LmdldFNlbGVjdGlvbigpOworICAgICAgICBpZiAoc2VsZWN0aW9uLnJhbmdlQ291bnQpIHsKKyAg
ICAgICAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgICAgICAg
ICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50ID09PSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5l
ciB8fCB0aGlzLmlucHV0RWxlbWVudC5pc0FuY2VzdG9yKHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29u
dGFpbmVyKSkKKyAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmFuZ2UgPSByYW5nZTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICBfb25ib3htb3VzZWRvd246IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3JlbWVtYmVySW5wdXRS
YW5nZSgpOworICAgIH0sCisKKyAgICBfaGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fY2xlYXJBdXRvQ29tcGxldGUoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZVN0
eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkRWxlbWVu
dDsKKyAgICB9LAorCisgICAgcmVtb3ZlRnJvbUVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0
aGlzLl9ib3VuZE9uS2V5RG93biwgdHJ1ZSk7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExp
c3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9ib3VuZE9uU2Nyb2xsLCB0cnVlKTsKKyAgICAgICAgd2lu
ZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kT25SZXNpemUsIHRy
dWUpOworICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlz
LmVsZW1lbnQpOworICAgIH0sCisKKyAgICBfb25LZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRBY3Rpb24oKQorICAgICAgICB7CisgICAgICAg
ICAgICB0aGlzLnVwZGF0ZVN1Z2dlc3Rpb25zU29vbigpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGV2ZW50LmhhbmRsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNo
IChldmVudC5rZXlJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBjYXNlICJVcCI6CisgICAgICAg
ICAgICAgICAgdGhpcy5fb25QcmV2aW91c0l0ZW0oZXZlbnQpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAiRG93biI6CisgICAgICAgICAgICAgICAgdGhpcy5fb25O
ZXh0SXRlbShldmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
ICJVKzAwMDkiOiAvLyBUYWIKKyAgICAgICAgICAgICAgICB0aGlzLnRhYktleVByZXNzZWQoZXZl
bnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiVSswMDIwIjog
Ly8gU3BhY2UKKyAgICAgICAgICAgICAgICB0aGlzLnNwYWNlS2V5UHJlc3NlZChldmVudCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJSaWdodCI6CisgICAgICAg
ICAgICBjYXNlICJFbmQiOgorICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRl
KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIkVudGVy
IjoKKyAgICAgICAgICAgICAgICB0aGlzLmVudGVyS2V5UHJlc3NlZChldmVudCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJVKzAwMUIiOiAvLyBFc2MKKyAgICAg
ICAgICAgICAgICB0aGlzLl9oaWRlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICJBbHQiOgorICAgICAgICAgICAgY2FzZSAiTWV0YSI6CisgICAgICAgICAgICBj
YXNlICJTaGlmdCI6CisgICAgICAgICAgICBjYXNlICJDb250cm9sIjoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZGVmYXVsdEFj
dGlvbi5jYWxsKHRoaXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGV2ZW50LmhhbmRsZWQpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICBfYXBwbHlTdWdnZXN0aW9uOiBmdW5jdGlvbih0ZXh0LCBpbnRlcm1lZGlh
dGVTdWdnZXN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCF0aGlzLl91c2VyRW50ZXJlZFJhbmdl
IHx8ICF0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgdmFyIHN1Z2dlc3Rpb24gPSB0ZXh0IHx8IHRoaXMuX3NlbGVjdGVkRWxlbWVudC50
ZXh0Q29udGVudDsKKyAgICAgICAgaWYgKCFzdWdnZXN0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHRoaXMuX2NsZWFyQXV0b0NvbXBsZXRlKCk7CisgICAgICAgIHZh
ciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN1Z2dlc3Rpb24pOworICAgICAg
ICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CisgICAgICAgIHRoaXMu
aW5wdXRFbGVtZW50LnBydW5lRW1wdHlUZXh0Tm9kZXMoKTsKKyAgICAgICAgdGhpcy5fdXNlckVu
dGVyZWRSYW5nZS5pbnNlcnROb2RlKHRleHROb2RlKTsKKworICAgICAgICB2YXIgZmluYWxTZWxl
Y3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIGZpbmFsU2VsZWN0
aW9uUmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIGludGVybWVkaWF0ZVN1Z2dlc3Rpb24gPyAwIDog
c3VnZ2VzdGlvbi5sZW5ndGgpOworICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZCh0
ZXh0Tm9kZSwgc3VnZ2VzdGlvbi5sZW5ndGgpOworCisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMo
KTsKKyAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworICAg
ICAgICB0aGlzLmlucHV0UmFuZ2UgPSBmaW5hbFNlbGVjdGlvblJhbmdlOworICAgICAgICBpZiAo
aW50ZXJtZWRpYXRlU3VnZ2VzdGlvbiAmJiB0aGlzLmFwcGx5SXRlbUNhbGxiYWNrKQorICAgICAg
ICAgICAgdGhpcy5hcHBseUl0ZW1DYWxsYmFjaygpOworCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0sCisKKyAgICBhY2NlcHRTdWdnZXN0aW9uOiBmdW5jdGlvbih0ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9hcHBseVN1Z2dlc3Rpb24odGV4dCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5faGlkZSgpOworCisgICAgICAgIGRlbGV0ZSB0aGlz
Ll91c2VyRW50ZXJlZFJhbmdlOworICAgICAgICBkZWxldGUgdGhpcy5fdXNlckVudGVyZWRUZXh0
OworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBhY2NlcHRBdXRvQ29tcGxl
dGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmF1dG9Db21wbGV0
ZUVsZW1lbnQgfHwgIXRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJlbnROb2RlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciB0ZXh0ID0gdGhpcy5hdXRvQ29tcGxl
dGVFbGVtZW50LnRleHRDb250ZW50OworICAgICAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSh0ZXh0KTsKKyAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnBh
cmVudE5vZGUucmVwbGFjZUNoaWxkKHRleHROb2RlLCB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQp
OworICAgICAgICBkZWxldGUgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50OworCisgICAgICAgIHZh
ciBmaW5hbFNlbGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAg
ZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgdGV4dC5sZW5ndGgpOworICAg
ICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgdGV4dC5sZW5ndGgpOwor
CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAg
IHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdl
KGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworICAgICAgICB0aGlzLl91cGRhdGVVc2VyRW50cnkoKTsK
KworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX29uTmV4dEl0ZW06IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jb250ZW50RWxl
bWVudC5jaGlsZE5vZGVzOworICAgICAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRFbGVtZW50KQorICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50Lm5leHRT
aWJsaW5nIHx8IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVudC5m
aXJzdENoaWxkOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICAgICAgdGhp
cy5fYXBwbHlTdWdnZXN0aW9uKG51bGwsIHRydWUpOworICAgICAgICBldmVudC5oYW5kbGVkID0g
dHJ1ZTsKKyAgICB9LAorCisgICAgX29uUHJldmlvdXNJdGVtOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGROb2Rl
czsKKyAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5wcmV2aW91c1NpYmxpbmcgfHwg
dGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQubGFzdENoaWxkOwor
ICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICAgICAgdGhpcy5fYXBwbHlTdWdn
ZXN0aW9uKG51bGwsIHRydWUpOworICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICB9
LAorCisgICAgdXBkYXRlU3VnZ2VzdGlvbnNTb29uOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAoISgiX3N1Z2dlc3RUaW1lb3V0IiBpbiB0aGlzKSkKKyAgICAgICAgICAgIHRoaXMuX3N1
Z2dlc3RUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnVwZGF0ZVN1Z2dlc3Rpb25zLmJpbmQodGhp
cyksIDEwKTsKKyAgICB9LAorCisgICAgdXBkYXRlU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICgiX3N1Z2dlc3RUaW1lb3V0IiBpbiB0aGlzKSB7CisgICAgICAgICAg
ICBjbGVhclRpbWVvdXQodGhpcy5fc3VnZ2VzdFRpbWVvdXQpOworICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX3N1Z2dlc3RUaW1lb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuYXV0
b0NvbXBsZXRlRWxlbWVudCAmJiB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQucGFyZW50RWxlbWVu
dCkgeworICAgICAgICAgICAgdmFyIGF1dG9Db21wbGV0ZVBhcmVudCA9IHRoaXMuYXV0b0NvbXBs
ZXRlRWxlbWVudC5wYXJlbnRFbGVtZW50OworICAgICAgICAgICAgdmFyIGF1dG9Db21wbGV0ZVNp
YmxpbmcgPSB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQubmV4dFNpYmxpbmc7CisgICAgICAgICAg
ICBhdXRvQ29tcGxldGVQYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5hdXRvQ29tcGxldGVFbGVtZW50
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vdGhpcy5fY2xlYXJBdXRvQ29tcGxldGUoKTsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3VwZGF0ZVVzZXJFbnRyeSgpOworICAgICAgICBpZiAo
YXV0b0NvbXBsZXRlUGFyZW50KQorICAgICAgICAgICAgYXV0b0NvbXBsZXRlUGFyZW50Lmluc2Vy
dEJlZm9yZSh0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQsIGF1dG9Db21wbGV0ZVNpYmxpbmcpOwor
CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlz
LmNvbXBsZXRpb25zKHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UsIHRoaXMuX2NvbXBsZXRpb25zUmVh
ZHkuYmluZCh0aGlzLCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpKTsKKyAgICB9LAorCisgICAgX3Vw
ZGF0ZVVzZXJFbnRyeTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3Vu
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0aGlzLl91c2VyRW50ZXJl
ZFJhbmdlID0gc2VsZWN0aW9uLmZvY3VzTm9kZS5yYW5nZU9mV29yZChzZWxlY3Rpb24uZm9jdXNP
ZmZzZXQsIHRoaXMuY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzLCB0aGlzLmlucHV0RWxlbWVudCwg
ImJvdGgiKTsKKyAgICAgICAgdGhpcy5fdXNlckVudGVyZWRUZXh0ID0gdGhpcy5fdXNlckVudGVy
ZWRSYW5nZS50b1N0cmluZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAg
X29uSXRlbU1vdXNlRG93bjogZnVuY3Rpb24odGV4dCwgZXZlbnQpCisgICAgeworICAgICAgICBm
dW5jdGlvbiByZXNldEZvY3VzZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgdGhp
cy5mb2N1c2VkOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hY2NlcHRTdWdnZXN0aW9uKHRl
eHQpOworCisgICAgICAgIC8vIEFsbG93IGZvciBhbGwgZXZlbnQgaGFuZGxlcnMgdG8gZmluaXNo
IGJlZm9yZSByZXNldHRpbmcgdGhlIGZvY3VzZWQgc3RhdGUuCisgICAgICAgIHNldFRpbWVvdXQo
cmVzZXRGb2N1c2VkLmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAgICBfY3JlYXRlSXRlbUVs
ZW1lbnQ6IGZ1bmN0aW9uKHRleHQpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJz
dWdnZXN0LWJveC1jb250ZW50LWl0ZW0gc291cmNlLWNvZGUiOworICAgICAgICBlbGVtZW50LnRl
eHRDb250ZW50ID0gdGV4dDsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLl9vbkl0ZW1Nb3VzZURvd24uYmluZCh0aGlzLCB0ZXh0KSwgZmFsc2UpOwor
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9LAorCisgICAgX3VwZGF0ZUl0ZW1zOiBmdW5j
dGlvbihpdGVtcykKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVs
ZW1lbnQuY2hpbGRyZW47CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBNYXRoLm1pbihj
aGlsZHJlbi5sZW5ndGggLSAxLCB0aGlzLl9zZWxlY3RlZEluZGV4KTsKKyAgICAgICAgdmFyIHNl
bGVjdGVkSXRlbVRleHQgPSB0aGlzLl9zZWxlY3RlZEluZGV4ID49IDAgPyBjaGlsZHJlblt0aGlz
Ll9zZWxlY3RlZEluZGV4XS50ZXh0Q29udGVudCA6IG51bGw7CisgICAgICAgIHZhciBpdGVtSW5k
ZXggPSAwOworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hp
bGQ7CisgICAgICAgIHZhciBjaGlsZFRleHQgPSBjaGlsZCA/IGNoaWxkLnRleHRDb250ZW50IDog
bnVsbDsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAg
ICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRFbGVtZW50OworCisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gaXRl
bXNbaV07CisgICAgICAgICAgICB2YXIgY3VycmVudEl0ZW1FbGVtZW50ID0gdGhpcy5fY3JlYXRl
SXRlbUVsZW1lbnQoaXRlbSk7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGN1cnJlbnRJdGVtRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl91
cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZVNlbGVjdGlvbjogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgY2hpbGQgPSB0aGlzLmNvbnRlbnRFbGVtZW50
LmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKSB7CisgICAgICAg
ICAgICBpZiAoY2hpbGQgIT09IHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAgICAg
ICBjaGlsZC5yZW1vdmVTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOworICAgICAgICB9CisgICAgICAg
IGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVk
RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOworICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9jbGVhckF1dG9Db21wbGV0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJlbnROb2RlKQorICAgICAg
ICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhp
cy5hdXRvQ29tcGxldGVFbGVtZW50KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuYXV0b0NvbXBsZXRl
RWxlbWVudDsKKyAgICB9LAorCisgICAgX2NvbXBsZXRpb25zUmVhZHk6IGZ1bmN0aW9uKHNlbGVj
dGlvbiwgY29tcGxldGlvbnMpCisgICAgeworICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFj
b21wbGV0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuX2hpZGUoKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fY2xlYXJBdXRvQ29tcGxldGUo
KTsKKyAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7
CisKKyAgICAgICAgdmFyIGNvbW1vblByZWZpeCA9IGNvbXBsZXRpb25zWzBdOworICAgICAgICB2
YXIgd29yZFByZWZpeExlbmd0aCA9IHRoaXMuX3VzZXJFbnRlcmVkVGV4dC5sZW5ndGg7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcGxldGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBjb21wbGV0aW9uID0gY29tcGxldGlvbnNbaV07CisgICAgICAgICAgICB2YXIg
bGFzdEluZGV4ID0gTWF0aC5taW4oY29tbW9uUHJlZml4Lmxlbmd0aCwgY29tcGxldGlvbi5sZW5n
dGgpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IHdvcmRQcmVmaXhMZW5ndGg7IGogPCBsYXN0
SW5kZXg7ICsraikgeworICAgICAgICAgICAgICAgIGlmIChjb21tb25QcmVmaXhbal0gIT09IGNv
bXBsZXRpb25bal0pIHsKKyAgICAgICAgICAgICAgICAgICAgY29tbW9uUHJlZml4ID0gY29tbW9u
UHJlZml4LnN1YnN0cigwLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbW1vblByZWZpeCA9
PT0gdGhpcy5fdXNlckVudGVyZWRUZXh0KSAvLyBTdG9wIG5vdyAtIHVzZXItZW50ZXJlZCBzdHJp
bmcgaXMgdGhlIGNvbW1vbiBwcmVmaXguCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIGNvbXBsZXRpb25UZXh0ID0gY29tbW9uUHJlZml4OworCisgICAgICAg
IHZhciBwcmVmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3RyaW5nKDAsIHdvcmRQcmVmaXhM
ZW5ndGgpOworICAgICAgICB2YXIgc3VmZml4VGV4dCA9IGNvbXBsZXRpb25UZXh0LnN1YnN0cmlu
Zyh3b3JkUHJlZml4TGVuZ3RoKTsKKworICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuYXV0b0NvbXBs
ZXRlRWxlbWVudC5jbGFzc05hbWUgPSAiYXV0by1jb21wbGV0ZS10ZXh0IjsKKyAgICAgICAgdGhp
cy5hdXRvQ29tcGxldGVFbGVtZW50LnRleHRDb250ZW50ID0gc3VmZml4VGV4dDsKKworICAgICAg
ICB2YXIgYXV0b0NvbXBsZXRlU3RhcnRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgICAgIGF1dG9Db21wbGV0ZVN0YXJ0UmFuZ2Uuc2V0U3RhcnQodGhpcy5fdXNlckVudGVyZWRS
YW5nZS5lbmRDb250YWluZXIsIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuZW5kT2Zmc2V0KTsKKyAg
ICAgICAgYXV0b0NvbXBsZXRlU3RhcnRSYW5nZS5zZXRFbmQodGhpcy5fdXNlckVudGVyZWRSYW5n
ZS5lbmRDb250YWluZXIsIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuZW5kT2Zmc2V0KTsKKyAgICAg
ICAgYXV0b0NvbXBsZXRlU3RhcnRSYW5nZS5pbnNlcnROb2RlKHRoaXMuYXV0b0NvbXBsZXRlRWxl
bWVudCk7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlSXRlbXMoY29tcGxldGlvbnMpOworICAgICAg
ICB0aGlzLl91cGRhdGVCb3hQb3NpdGlvbigpOworICAgICAgICBpZiAodGhpcy5jb250ZW50RWxl
bWVudC5jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJ2aXNpYmxlIik7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5mb2N1c2VkOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2hpZGUoKTsKKyAgICB9LAorCisgICAgZW50
ZXJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmFj
Y2VwdFN1Z2dlc3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKHRoaXMuYWNjZXB0Q2FsbGJhY2sp
CisgICAgICAgICAgICAgICAgdGhpcy5hY2NlcHRDYWxsYmFjaygpOworICAgICAgICAgICAgZXZl
bnQuaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgdGFiS2V5UHJlc3Nl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5hY2NlcHRTdWdnZXN0
aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmFjY2VwdENhbGxiYWNrKQorICAgICAgICAg
ICAgICAgIHRoaXMuYWNjZXB0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIGV2ZW50LmhhbmRsZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgfSwKKworICAgIHNwYWNlS2V5UHJlc3NlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnVwZGF0ZVN1Z2dlc3Rpb25zU29vbigpOwor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwppbmRleCAyZTNkYjRiLi5hYTFjZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xMTMsNiArMTEzLDcgQEAKICAgICA8ZmlsZT5Tb3Vy
Y2VUb2tlbml6ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+U3RhdHVzQmFyQnV0dG9uLmpzPC9maWxl
PgogICAgIDxmaWxlPlN0eWxlc1NpZGViYXJQYW5lLmpzPC9maWxlPgorICAgIDxmaWxlPlN1Z2dl
c3RCb3guanM8L2ZpbGU+CiAgICAgPGZpbGU+VGFiYmVkUGFuZS5qczwvZmlsZT4KICAgICA8Zmls
ZT5UZXN0Q29udHJvbGxlci5qczwvZmlsZT4KICAgICA8ZmlsZT5UZXh0RWRpdG9ySGlnaGxpZ2h0
ZXIuanM8L2ZpbGU+CkBAIC0xNDYsNiArMTQ3LDcgQEAKICAgICA8ZmlsZT5uZXR3b3JrTG9nVmll
dy5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+bmV0d29ya1BhbmVsLmNzczwvZmlsZT4KICAgICA8Zmls
ZT5wb3BvdmVyLmNzczwvZmlsZT4KKyAgICA8ZmlsZT5zdWdnZXN0Qm94LmNzczwvZmlsZT4KICAg
ICA8ZmlsZT50ZXh0Vmlld2VyLmNzczwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvYXBwbGljYXRp
b25DYWNoZS5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2JhY2sucG5nPC9maWxlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4
IGRkZGQxMGQuLjRlZDE1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTQxMDUsMyArNDEwNSwxMjUgQEAgYS53b3JrZXItaXRl
bTpob3ZlciB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDU2LCAxMjEsIDIxNyk7CiAgICAg
Y29sb3I6IHdoaXRlOwogfQorCisvKiBDU1MgcHJvcGVydHkgbmFtZS92YWx1ZSBzdWdnZXN0aW9u
ICJwb3B1cCIgc3R5bGUgKi8KKworLnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0IHsKKyAgICBib3Jk
ZXItcmFkaXVzOiAwIDVweCA1cHggNXB4OworICAgIG1hcmdpbi1sZWZ0OiAtMXB4OworICAgIGJv
cmRlci1jb2xvcjogcmdiKDY2JSwgNjYlLCA2NiUpOworfQorCisuc3VnZ2VzdC1ib3guY3NzLXN1
Z2dlc3QgLmNvbnRlbnQgeworICAgIG1hcmdpbjogM3B4OworfQorCisKKy8qIEN1c3RvbSBwb3B1
cCBzY3JvbGxlcnMgKi8KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Ny
b2xsYmFyIHsKKyAgICB3aWR0aDogMTFweDsKKyAgICBoZWlnaHQ6IDExcHg7Cit9CisKKy5jdXN0
b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsIC5j
dXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHsK
KyAgICBkaXNwbGF5OiBub25lOworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
IDo6LXdlYmtpdC1yZXNpemVyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJr
aXQtcmVzaXplciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jp
em9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiwgLmN1c3RvbS1wb3B1cC12
ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24geworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKKy8qIEN1c3RvbSBIb3Jpem9udGFsIFNjcm9sbGJhciBTdHlsZXMgKi8KKwor
LmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhvcml6
b250YWw6Y29ybmVyLXByZXNlbnQgeworICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKK30KKwor
LmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
Omhvcml6b250YWwgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1i
SG9yaXoucG5nKSAwIDExIDAgMTE7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAg
ICBib3JkZXItd2lkdGg6IDAgMTFweDsKKyAgICBtaW4td2lkdGg6IDIwcHg7Cit9CisKKy5jdXN0
b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jp
em9udGFsOmhvdmVyIHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVt
YkhvdmVySG9yaXoucG5nKSAwIDExIDAgMTE7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRh
bC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmFjdGl2ZSB7Cisg
ICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVIb3Jpei5wbmcp
IDAgMTEgMCAxMTsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6c3RhcnQgeworICAgIG1hcmdpbi1s
ZWZ0OiA1cHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0
LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZCB7CisgICAgbWFyZ2luLXJpZ2h0
OiA1cHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNj
cm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZDpjb3JuZXItcHJlc2VudCB7CisgICAg
bWFyZ2luLXJpZ2h0OiA0cHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwg
Ojotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmRlY3JlbWVudCB7Cisg
ICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tIb3Jpei5wbmcpIDAgMTEg
MCAxMTsKKyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJvcmRlci13aWR0aDog
MCAwIDAgMTFweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6aW5jcmVtZW50IHsKKyAgICAtd2Vi
a2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6LnBuZykgMCAxMSAwIDExOwor
ICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRoOiAwIDExcHgg
MCAwOworfQorCisvKiBDdXN0b20gVmVydGljYWwgU2Nyb2xsYmFyIFN0eWxlcyAqLworCisuY3Vz
dG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOnZlcnRpY2FsOmNv
cm5lci1wcmVzZW50IHsKKyAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOworfQorCisuY3VzdG9t
LXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2Fs
IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYlZlcnQucG5nKSAx
MSAwIDExIDA7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItd2lk
dGg6IDExcHggMDsKKyAgICBtaW4taGVpZ2h0OiAyMHB4OworfQorCisuY3VzdG9tLXBvcHVwLXZl
cnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyIHsK
KyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvdmVyVmVydC5wbmcp
IDExIDAgMTEgMDsKK30KKworLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0
LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgeworICAgIC13ZWJraXQtYm9yZGVyLWlt
YWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZlVmVydC5wbmcpIDExIDAgMTEgMDsKK30KKworLmN1
c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVj
ZTp2ZXJ0aWNhbDpzdGFydCB7CisgICAgbWFyZ2luLXRvcDogNXB4OworfQorCisuY3VzdG9tLXBv
cHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRp
Y2FsOmVuZCB7CisgICAgbWFyZ2luLWJvdHRvbTogNXB4OworfQorCisuY3VzdG9tLXBvcHVwLXZl
cnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVu
ZDpjb3JuZXItcHJlc2VudCB7CisgICAgbWFyZ2luLWJvdHRvbTogNHB4OworfQorCisuY3VzdG9t
LXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZl
cnRpY2FsOmRlY3JlbWVudCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMv
dHJhY2tWZXJ0LnBuZykgMTEgMCAxMSAwOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7
CisgICAgYm9yZGVyLXdpZHRoOiAxMXB4IDAgMCAwOworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRp
Y2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmluY3Jl
bWVudCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBu
ZykgMTEgMCAxMSAwOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVy
LXdpZHRoOiAwIDAgMTFweCAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggYzQxZjNiZC4uMGI2OTA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0z
OCw2ICszOCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iaW5zcGVjdG9yU3ludGF4SGlnaGxpZ2h0LmNzcyI+CiAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ibmV0d29ya1BhbmVsLmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscFNj
cmVlbi5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9InN1Z2dlc3RCb3guY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBocmVmPSJwb3BvdmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGV4dFZpZXdlci5jc3MiPgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9InV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CkBAIC01Myw2ICs1
NCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
Q29udGV4dE1lbnUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlNvZnRDb250ZXh0TWVudS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iS2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3VnZ2VzdEJveC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGV4dFByb21w
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
UG9wb3Zlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUGxhY2FyZC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGM1NDk2YTIuLjg5YTk3YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNTA3
LDYgKzE1MDcsNyBAQCBXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQgPSBmdW5jdGlvbigp
CiAvLyBjYW5jZWxIYW5kbGVyOiBGdW5jdGlvbiAtIGhhbmRsZXMgZWRpdGluZyAiY2FuY2VsIiBv
dXRjb21lCiAvLyBjdXN0b21GaW5pc2hIYW5kbGVyOiBGdW5jdGlvbiAtIGN1c3RvbSBmaW5pc2gg
aGFuZGxlciBmb3IgdGhlIGVkaXRpbmcgc2Vzc2lvbiAoaW52b2tlZCBvbiBrZXlkb3duKQogLy8g
cGFzdGVIYW5kbGVyOiBGdW5jdGlvbiAtIGhhbmRsZXMgdGhlICJwYXN0ZSIgZXZlbnQsIHJldHVy
biB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIHRob3NlIGZvciBjdXN0b21GaW5pc2hIYW5kbGVyCisv
LyBmb2N1c1Jlc3RvcmVyOiBGdW5jdGlvbiAtIHJldHVybnMgdHJ1ZSBpZiB0aGUgYmx1ciBjYW4g
b2NjdXIuIE90aGVyd2lzZSB0aGUgZm9jdXMgd2lsbCBiZSByZXRhaW5lZCBpbnNpZGUgdGhlIGVk
aXRlZCBlbGVtZW50CiAvLyBtdWx0aWxpbmU6IEJvb2xlYW4gLSB3aGV0aGVyIHRoZSBlZGl0ZWQg
ZWxlbWVudCBpcyBtdWx0aWxpbmUKIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlv
bihlbGVtZW50LCBjb25maWcpCiB7CkBAIC0xNTE3LDYgKzE1MTgsNyBAQCBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29uZmlnKQogICAgIHZhciBjb21taXR0
ZWRDYWxsYmFjayA9IGNvbmZpZy5jb21taXRIYW5kbGVyOwogICAgIHZhciBjYW5jZWxsZWRDYWxs
YmFjayA9IGNvbmZpZy5jYW5jZWxIYW5kbGVyOwogICAgIHZhciBwYXN0ZUNhbGxiYWNrID0gY29u
ZmlnLnBhc3RlSGFuZGxlcjsKKyAgICB2YXIgZm9jdXNSZXN0b3JlciA9IGNvbmZpZy5mb2N1c1Jl
c3RvcmVyOwogICAgIHZhciBjb250ZXh0ID0gY29uZmlnLmNvbnRleHQ7CiAgICAgdmFyIG9sZFRl
eHQgPSBnZXRDb250ZW50KGVsZW1lbnQpOwogICAgIHZhciBtb3ZlRGlyZWN0aW9uID0gIiI7CkBA
IC0xNTI3LDggKzE1MjksMjAgQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9u
KGVsZW1lbnQsIGNvbmZpZykKICAgICBpZiAoZWxlbWVudC50YWJJbmRleCA8IDApCiAgICAgICAg
IGVsZW1lbnQudGFiSW5kZXggPSAwOwogCi0gICAgZnVuY3Rpb24gYmx1ckV2ZW50TGlzdGVuZXIo
KSB7Ci0gICAgICAgIGVkaXRpbmdDb21taXR0ZWQuY2FsbChlbGVtZW50KTsKKyAgICBmdW5jdGlv
biBibHVyRXZlbnRMaXN0ZW5lcihldmVudCkgeworICAgICAgICB2YXIgb2xkUmFuZ2U7CisgICAg
ICAgIGlmIChmb2N1c1Jlc3RvcmVyKQorICAgICAgICAgICAgb2xkUmFuZ2UgPSBmb2N1c1Jlc3Rv
cmVyKGV2ZW50KTsKKworICAgICAgICBpZiAoIW9sZFJhbmdlKQorICAgICAgICAgICAgZWRpdGlu
Z0NvbW1pdHRlZC5jYWxsKGVsZW1lbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgICAgICBzZWxl
Y3Rpb24uYWRkUmFuZ2Uob2xkUmFuZ2UpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gZ2V0Q29udGVudChlbGVtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9wb3BvdmVyLmNzcwppbmRleCA3MzkyMWE3Li5jZjE0ZWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3MKQEAgLTg4LDExNCArODgs
MyBAQAogICAgIG1hcmdpbi1yaWdodDogLTI1cHg7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjog
MCAtNTdweDsKIH0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhciB7Ci0gICAgd2lkdGg6
IDExcHg7Ci0gICAgaGVpZ2h0OiAxMXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLWNvcm5lciB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0
LXJlc2l6ZXIgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS8qIEhvcml6b250YWwgU2Nyb2xs
YmFyIFN0eWxlcyAqLwotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhvcml6b250YWw6
Y29ybmVyLXByZXNlbnQgewotICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKLX0KLQotLnBvcG92
ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHsKLSAgICAtd2Via2l0LWJv
cmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvcml6LnBuZykgMCAxMSAwIDExOwotICAgIGJv
cmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAwIDExcHg7Ci0gICAg
bWluLXdpZHRoOiAyMHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
Omhvcml6b250YWw6aG92ZXIgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2Vz
L3RodW1iSG92ZXJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0
LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmFjdGl2ZSB7Ci0gICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLX0KLQot
LnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOnN0YXJ0
IHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kIHsKLSAgICBtYXJnaW4tcmlnaHQ6IDVweDsK
LX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFs
OmVuZDpjb3JuZXItcHJlc2VudCB7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7Ci19Ci0KLS5wb3Bv
dmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpkZWNyZW1lbnQg
ewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAw
IDExIDAgMTE7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lk
dGg6IDAgMCAwIDExcHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2st
cGllY2U6aG9yaXpvbnRhbDppbmNyZW1lbnQgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1
cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAwIDExIDAgMTE7Ci0gICAgYm9yZGVyLWNvbG9yOiB0
cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6IDAgMTFweCAwIDA7Ci19Ci0KLS8qIFZlcnRp
Y2FsIFNjcm9sbGJhciBTdHlsZXMgKi8KLQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFy
OnZlcnRpY2FsOmNvcm5lci1wcmVzZW50IHsKLSAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwot
fQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHsKLSAgICAt
d2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYlZlcnQucG5nKSAxMSAwIDExIDA7
Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6IDExcHgg
MDsKLSAgICBtaW4taGVpZ2h0OiAyMHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyIHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJs
KEltYWdlcy90aHVtYkhvdmVyVmVydC5wbmcpIDExIDAgMTEgMDsKLX0KLQotLnBvcG92ZXIgOjot
d2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgewotICAgIC13ZWJraXQtYm9y
ZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZlVmVydC5wbmcpIDExIDAgMTEgMDsKLX0K
LQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOnN0
YXJ0IHsKLSAgICBtYXJnaW4tdG9wOiA1cHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3Jv
bGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZW5kIHsKLSAgICBtYXJnaW4tYm90dG9tOiA1cHg7
Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6
ZW5kOmNvcm5lci1wcmVzZW50IHsKLSAgICBtYXJnaW4tYm90dG9tOiA0cHg7Ci19Ci0KLS5wb3Bv
dmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZGVjcmVtZW50IHsK
LSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja1ZlcnQucG5nKSAxMSAw
IDExIDA7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6
IDExcHggMCAwIDA7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGll
Y2U6dmVydGljYWw6aW5jcmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKElt
YWdlcy90cmFja1ZlcnQucG5nKSAxMSAwIDExIDA7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3Bh
cmVudDsKLSAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7Ci19Ci0KLS8qIEZvcmNlZCBTY3Jv
bGxiYXIgTW9kZSBTdHlsZXMgKi8KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci1idXR0
b24gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3N1Z2dlc3RCb3guY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9zdWdnZXN0Qm94LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44MDAxMzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9zdWdnZXN0Qm94LmNzcwpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnN1Z2dlc3QtYm94
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZG
RjsKKyAgICBkaXNwbGF5OiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAg
IHBhZGRpbmc6IDJweDsKKyAgICB6LWluZGV4OiAxMDA7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93
OiAxMHB4IDEwcHggOHB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5zdWdnZXN0LWJv
eC52aXNpYmxlIHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLnN1Z2dlc3QtYm94IC5jb250
YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDog
MDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbWFyZ2luOiAycHggMDsKKyAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgb3ZlcmZsb3cteTogYXV0bzsKK30KKworLnN1Z2dl
c3QtYm94LWNvbnRlbnQtaXRlbSB7CisgICAgcGFkZGluZzogMXB4OworICAgIG1hcmdpbjogMDsK
KyAgICBmb250LXNpemU6IDExcHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB0ZXh0LW92
ZXJmbG93OiBlbGxpcHNpczsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKK30K
KworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbS5zZWxlY3RlZCB7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgcmdiKDAsIDAsIDApOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzgsIDIzOCwg
MjM4KTsKK30KKworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbTpob3Zlcjpub3QoLnNlbGVjdGVk
KSB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCBiMWYz
MzE1Li4zMDU5MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwpAQCAtMjk1LDYgKzI5NSwzMSBAQCBFbGVtZW50LnByb3RvdHlwZS5vZmZz
ZXRSZWxhdGl2ZVRvV2luZG93ID0gZnVuY3Rpb24odGFyZ2V0V2luZG93KQogICAgIHJldHVybiBl
bGVtZW50T2Zmc2V0OwogfQogCitFbGVtZW50LnByb3RvdHlwZS5ib3hJbldpbmRvdyA9IGZ1bmN0
aW9uKHRhcmdldFdpbmRvdywgcmVsYXRpdmVQYXJlbnQpCit7CisgICAgdGFyZ2V0V2luZG93ID0g
dGFyZ2V0V2luZG93IHx8IHRoaXMub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsKKyAgICB2YXIg
Ym9keUVsZW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQuYm9keTsKKyAgICByZWxhdGl2ZVBhcmVu
dCA9IHJlbGF0aXZlUGFyZW50IHx8IGJvZHlFbGVtZW50OworCisgICAgdmFyIGFuY2hvckJveCA9
IHRoaXMub2Zmc2V0UmVsYXRpdmVUb1dpbmRvdyh3aW5kb3cpOworICAgIGFuY2hvckJveC53aWR0
aCA9IHRoaXMub2Zmc2V0V2lkdGg7CisgICAgYW5jaG9yQm94LmhlaWdodCA9IHRoaXMub2Zmc2V0
SGVpZ2h0OworCisgICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0aGlzOworICAgIHdoaWxlIChhbmNo
b3JFbGVtZW50ICYmIGFuY2hvckVsZW1lbnQgIT09IHJlbGF0aXZlUGFyZW50ICYmIGFuY2hvckVs
ZW1lbnQgIT09IGJvZHlFbGVtZW50KSB7CisgICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9s
bExlZnQpCisgICAgICAgICAgICBhbmNob3JCb3gueCAtPSBhbmNob3JFbGVtZW50LnNjcm9sbExl
ZnQ7CisgICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9sbFRvcCkKKyAgICAgICAgICAgIGFu
Y2hvckJveC55IC09IGFuY2hvckVsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICBhbmNob3JFbGVt
ZW50ID0gYW5jaG9yRWxlbWVudC5wYXJlbnRFbGVtZW50OworICAgIH0KKworICAgIHZhciBwYXJl
bnRPZmZzZXQgPSByZWxhdGl2ZVBhcmVudC5vZmZzZXRSZWxhdGl2ZVRvV2luZG93KHdpbmRvdyk7
CisgICAgYW5jaG9yQm94LnggLT0gcGFyZW50T2Zmc2V0Lng7CisgICAgYW5jaG9yQm94LnkgLT0g
cGFyZW50T2Zmc2V0Lnk7CisgICAgcmV0dXJuIGFuY2hvckJveDsKK30KKwogRWxlbWVudC5wcm90
b3R5cGUuc2V0VGV4dEFuZFRpdGxlID0gZnVuY3Rpb24odGV4dCkKIHsKICAgICB0aGlzLnRleHRD
b250ZW50ID0gdGV4dDsK
</data>
<flag name="review"
          id="99771"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112319</attachid>
            <date>2011-10-25 04:48:44 -0700</date>
            <delta_ts>2011-10-25 09:14:36 -0700</delta_ts>
            <desc>[PATCH] A major rewrite, which extends the TextPrompt functionality by aggregating SuggestBox</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>54315</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ2YWM5OWQ4YjhkM2IwNGFiOTAzOThkZmU1MmQwNThkMTU2MmE2ZmIKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDI1
IDE4OjI2OjU2IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjNDEyYS4uMWVl
YzJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMS0xMC0yNSAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGF1dG9jb21wbGV0ZSBjb21ib2JveCBmb3IgQ1NTIHN0eWxlIHByb3BlcnR5IG5hbWVzL3ZhbHVl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZS5jb21wbGV0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLl9jb21wbGV0aW9ucy5yZWNlaXZlZFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fY29tcGxldGlv
bnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fcmVwb3J0
Q29tcGxldGlvbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qb3BvdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
b3BvdmVyLnByb3RvdHlwZS5fcG9zaXRpb25FbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0RWxlbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVt
ZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlLnJlbW92ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fb25LZXlEb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmF1dG9Db21wbGV0ZVNvb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFk
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuYXBwbHlTdWdn
ZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2Nl
cHRTdWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZS5pc1N1Z2dlc3RCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LnByb3RvdHlwZS50YWJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJv
bXB0LnByb3RvdHlwZS5lbnRlcktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRl
eHRQcm9tcHQucHJvdG90eXBlLnVwS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFByb21wdC5wcm90b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgdmlzaWJsZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgaGFzU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLl9v
bnNjcm9sbHJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0
Qm94LnByb3RvdHlwZS5fdXBkYXRlQm94UG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX3JlbWVtYmVySW5wdXRSYW5nZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25i
b3htb3VzZWRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJv
eC5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdn
ZXN0Qm94LnByb3RvdHlwZS5yZW1vdmVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fYXBwbHlTdWdnZXN0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLmFjY2Vw
dFN1Z2dlc3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJv
eC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJldmlvdXNJdGVtKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnVwZGF0ZVN1Z2dlc3Rpb25z
U29vbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3Rv
dHlwZS51cGRhdGVTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21w
dC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25JdGVtTW91c2VEb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jcmVhdGVJdGVtRWxlbWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlw
ZS5fdXBkYXRlSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuX3VwZGF0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS51cEtleVBy
ZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90
b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQu
U3VnZ2VzdEJveC5wcm90b3R5cGUuZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnRhYktleVByZXNzZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuc3BhY2VL
ZXlQcmVzc2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRWRpdGluZ0NvbmZpZy5wcm90b3R5cGUuc2V0Q3VzdG9tRmluaXNoSGFuZGxlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZy5wcm90b3R5cGUuc2V0Rm9jdXNSZXN0b3Jl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmJsdXJFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAg
ICguc3VnZ2VzdC1ib3gpOgorICAgICAgICAoLnN1Z2dlc3QtYm94LnZpc2libGUpOgorICAgICAg
ICAoLnN1Z2dlc3QtYm94IC5jb250YWluZXIpOgorICAgICAgICAoLnN1Z2dlc3QtYm94LWNvbnRl
bnQtaXRlbSk6CisgICAgICAgICguc3VnZ2VzdC1ib3gtY29udGVudC1pdGVtIC5wcmVmaXgpOgor
ICAgICAgICAoLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbS5zZWxlY3RlZCk6CisgICAgICAgICgu
c3VnZ2VzdC1ib3gtY29udGVudC1pdGVtOmhvdmVyOm5vdCguc2VsZWN0ZWQpKToKKyAgICAgICAg
KC5zdWdnZXN0LWJveC5jc3Mtc3VnZ2VzdCk6CisgICAgICAgICguc3VnZ2VzdC1ib3guY3NzLXN1
Z2dlc3QuYWJvdmUtYW5jaG9yKToKKyAgICAgICAgKC5zdWdnZXN0LWJveC5jc3Mtc3VnZ2VzdCAu
Y29udGVudCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1z
Y3JvbGxiYXIpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjot
d2Via2l0LXNjcm9sbGJhci1jb3JuZXIpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9u
dGFsLXNjcm9sbCA6Oi13ZWJraXQtcmVzaXplciwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3Jv
bGwgOjotd2Via2l0LXJlc2l6ZXIpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFs
LXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNh
bC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24pOgorICAgICAgICAoLmN1c3RvbS1w
b3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhvcml6b250YWw6Y29y
bmVyLXByZXNlbnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6
Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwpOgorICAgICAgICAoLmN1c3RvbS1w
b3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250
YWw6aG92ZXIpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWw6YWN0aXZlKToKKyAgICAgICAgKC5jdXN0
b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVj
ZTpob3Jpem9udGFsOnN0YXJ0KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1z
Y3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZCk6Cisg
ICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxi
YXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDplbmQ6Y29ybmVyLXByZXNlbnQpOgorICAgICAgICAo
LmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNr
LXBpZWNlOmhvcml6b250YWw6ZGVjcmVtZW50KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9y
aXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFs
OmluY3JlbWVudCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyOnZlcnRpY2FsOmNvcm5lci1wcmVzZW50KToKKyAgICAgICAgKC5jdXN0
b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGlj
YWwpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNj
cm9sbGJhci10aHVtYjp2ZXJ0aWNhbDpob3Zlcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZl
cnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSk6
CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOnN0YXJ0KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAt
dmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6
ZW5kKToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1z
Y3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZW5kOmNvcm5lci1wcmVzZW50KToKKyAgICAg
ICAgKC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJh
Y2stcGllY2U6dmVydGljYWw6ZGVjcmVtZW50KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVy
dGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6aW5j
cmVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzOgorICAg
ICAgICAoLnBvcG92ZXIucmlnaHQtYm90dG9tLWFycm93IC5hcnJvdyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgIChzZXR1cFByb3RvdHlwZVV0
aWxpdGllcy5FbGVtZW50LnByb3RvdHlwZS5ib3hJbldpbmRvdyk6CisKIDIwMTEtMTAtMjEgIE5h
dCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUm91dGUg
Q29uc29sZTo6dGltZSBhbmQgQ29uc29sZTo6dGltZUVuZCB0byB0cmFjZV9ldmVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXgg
ZjRmODQzMi4uOTI0YzU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC02NSw3ICs2NSw3IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlVmlldyA9IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAgICAgdGhpcy5tZXNzYWdl
c0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9tcHRFbGVtZW50KTsKICAgICB0aGlzLm1lc3Nh
Z2VzRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKIAot
ICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJvbXB0
RWxlbWVudCwgdGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJh
Y3RlcnMgKyAiLiIpOworICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJv
bXB0KHRoaXMucHJvbXB0RWxlbWVudCwgdGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHBy
ZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAiLiIsIGZhbHNlLCB7IGNsYXNzTmFtZTogImNzcy1zdWdn
ZXN0IiB9KTsKICAgICB0aGlzLnByb21wdC5oaXN0b3J5ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNvbnNvbGVIaXN0b3J5LmdldCgpOwogCiAgICAgdGhpcy50b3BHcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29uc29sZUdyb3VwKG51bGwpOwpAQCAtMzMxLDE2ICszMzEsMTYgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJl
c2V0KCk7CiAgICAgfSwKIAotICAgIGNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGJl
c3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKKyAgICBjb21wbGV0aW9uczog
ZnVuY3Rpb24od29yZFJhbmdlLCBmb3JjZSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgLy8gUGFzcyBsZXNzIHN0b3AgY2hhcmFjdGVycyB0byByYW5nZU9mV29yZCBz
byB0aGUgcmFuZ2Ugd2lsbCBiZSBhIG1vcmUgY29tcGxldGUgZXhwcmVzc2lvbi4KICAgICAgICAg
dmFyIGV4cHJlc3Npb25SYW5nZSA9IHdvcmRSYW5nZS5zdGFydENvbnRhaW5lci5yYW5nZU9mV29y
ZCh3b3JkUmFuZ2Uuc3RhcnRPZmZzZXQsIEV4cHJlc3Npb25TdG9wQ2hhcmFjdGVycywgdGhpcy5w
cm9tcHRFbGVtZW50LCAiYmFja3dhcmQiKTsKICAgICAgICAgdmFyIGV4cHJlc3Npb25TdHJpbmcg
PSBleHByZXNzaW9uUmFuZ2UudG9TdHJpbmcoKTsKICAgICAgICAgdmFyIHByZWZpeCA9IHdvcmRS
YW5nZS50b1N0cmluZygpOwotICAgICAgICB0aGlzLl9jb21wbGV0aW9ucyhleHByZXNzaW9uU3Ry
aW5nLCBwcmVmaXgsIGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayk7Cisg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25zKGV4cHJlc3Npb25TdHJpbmcsIHByZWZpeCwgZm9yY2Us
IGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayk7CiAgICAgfSwKIAotICAgIF9jb21wbGV0aW9uczog
ZnVuY3Rpb24oZXhwcmVzc2lvblN0cmluZywgcHJlZml4LCBiZXN0TWF0Y2hPbmx5LCBjb21wbGV0
aW9uc1JlYWR5Q2FsbGJhY2spCisgICAgX2NvbXBsZXRpb25zOiBmdW5jdGlvbihleHByZXNzaW9u
U3RyaW5nLCBwcmVmaXgsIGZvcmNlLCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2spCiAgICAgewog
ICAgICAgICB2YXIgbGFzdEluZGV4ID0gZXhwcmVzc2lvblN0cmluZy5sZW5ndGggLSAxOwogCkBA
IC0zNTAsNiArMzUwLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKGRvdE5vdGF0aW9uIHx8IGJyYWNrZXROb3RhdGlvbikKICAgICAgICAgICAg
IGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3RyaW5nLnN1YnN0cigwLCBsYXN0SW5kZXgp
OwogCisgICAgICAgIGlmIChmb3JjZSAmJiAhZXhwcmVzc2lvblN0cmluZykKKyAgICAgICAgICAg
IGV4cHJlc3Npb25TdHJpbmcgPSAidGhpcyI7CisKICAgICAgICAgaWYgKCFleHByZXNzaW9uU3Ry
aW5nICYmICFwcmVmaXgpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhb
XSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MjQsMTEgKzQyNywxMSBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY29tbWFuZExpbmVBUEkubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXNbY29tbWFuZExpbmVBUElbaV1dID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRoaXMuX3JlcG9ydENvbXBsZXRpb25zKGJlc3RNYXRjaE9ubHksIGNvbXBs
ZXRpb25zUmVhZHlDYWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXROb3RhdGlvbiwgcHJlZml4
LCBPYmplY3Qua2V5cyhwcm9wZXJ0eU5hbWVzKSk7CisgICAgICAgICAgICB0aGlzLl9yZXBvcnRD
b21wbGV0aW9ucyhjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2ssIGRvdE5vdGF0aW9uLCBicmFja2V0
Tm90YXRpb24sIHByZWZpeCwgT2JqZWN0LmtleXMocHJvcGVydHlOYW1lcykpOwogICAgICAgICB9
CiAgICAgfSwKIAotICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rpb24oYmVzdE1hdGNoT25s
eSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwgYnJhY2tldE5vdGF0aW9u
LCBwcmVmaXgsIHByb3BlcnRpZXMpIHsKKyAgICBfcmVwb3J0Q29tcGxldGlvbnM6IGZ1bmN0aW9u
KGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXROb3RhdGlvbiwg
cHJlZml4LCBwcm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmIChicmFja2V0Tm90YXRpb24pIHsKICAg
ICAgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICYmIHByZWZpeFswXSA9PT0gIiciKQogICAgICAg
ICAgICAgICAgIHZhciBxdW90ZVVzZWQgPSAiJyI7CkBAIC00NTMsMTIgKzQ1NiwxMCBAQCBXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAocHJv
cGVydHkubGVuZ3RoIDwgcHJlZml4Lmxlbmd0aCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pbmRleE9mKHByZWZpeCkgIT09IDApCisgICAgICAg
ICAgICBpZiAocHJlZml4Lmxlbmd0aCAmJiBwcm9wZXJ0eS5pbmRleE9mKHByZWZpeCkgIT09IDAp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHJlc3VsdHMucHVzaChw
cm9wZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoYmVzdE1hdGNoT25seSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVz
dWx0cyk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9w
b3Zlci5qcwppbmRleCA2NGE5ZjcyMi4uNGJmZDZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwpAQCAtMzUsNyArMzUsNyBAQAogV2ViSW5zcGVj
dG9yLlBvcG92ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyKQogewogICAgIHRoaXMuZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5jbGFz
c05hbWUgPSAicG9wb3ZlciI7CisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVy
IGN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Ny
b2xsIjsKIAogICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFy
cm93IjsKQEAgLTExMywxNyArMTEzLDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBl
ID0gewogICAgICAgICBjb25zdCB0b3RhbFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CiAgICAg
ICAgIGNvbnN0IHRvdGFsSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogCi0gICAgICAgIHZh
ciBhbmNob3JCb3ggPSBhbmNob3JFbGVtZW50Lm9mZnNldFJlbGF0aXZlVG9XaW5kb3cod2luZG93
KTsKLSAgICAgICAgYW5jaG9yQm94LndpZHRoID0gYW5jaG9yRWxlbWVudC5vZmZzZXRXaWR0aDsK
LSAgICAgICAgYW5jaG9yQm94LmhlaWdodCA9IGFuY2hvckVsZW1lbnQub2Zmc2V0SGVpZ2h0Owot
ICAgICAgICB3aGlsZSAoYW5jaG9yRWxlbWVudCAmJiBhbmNob3JFbGVtZW50ICE9PSBhbmNob3JF
bGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keSkgewotICAgICAgICAgICAgaWYgKGFuY2hvckVsZW1l
bnQuc2Nyb2xsTGVmdCkKLSAgICAgICAgICAgICAgICBhbmNob3JCb3gueCAtPSBhbmNob3JFbGVt
ZW50LnNjcm9sbExlZnQ7Ci0gICAgICAgICAgICBpZiAoYW5jaG9yRWxlbWVudC5zY3JvbGxUb3Ap
Ci0gICAgICAgICAgICAgICAgYW5jaG9yQm94LnkgLT0gYW5jaG9yRWxlbWVudC5zY3JvbGxUb3A7
Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50ID0gYW5jaG9yRWxlbWVudC5wYXJlbnRFbGVtZW50
OwotICAgICAgICB9Ci0KKyAgICAgICAgdmFyIGFuY2hvckJveCA9IGFuY2hvckVsZW1lbnQuYm94
SW5XaW5kb3cod2luZG93KTsKICAgICAgICAgdmFyIG5ld0VsZW1lbnRQb3NpdGlvbiA9IHsgeDog
MCwgeTogMCwgd2lkdGg6IHByZWZlcnJlZFdpZHRoICsgc2Nyb2xsZXJXaWR0aCwgaGVpZ2h0OiBw
cmVmZXJyZWRIZWlnaHQgfTsKIAogICAgICAgICB2YXIgdmVydGljYWxBbGlnbm1lbnQ7CkBAIC0x
NzEsNyArMTYxLDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCArPSBhbmNob3JCb3gud2lk
dGggLyAyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJw
b3BvdmVyICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1lbnQg
KyAiLWFycm93IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1
c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
ICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1lbnQgKyAiLWFy
cm93IjsKICAgICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQobmV3RWxlbWVudFBvc2l0aW9u
LnggLSBib3JkZXJXaWR0aCwgbmV3RWxlbWVudFBvc2l0aW9uLnkgLSBib3JkZXJXaWR0aCk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0VsZW1lbnRQb3NpdGlvbi53aWR0
aCArIGJvcmRlcldpZHRoICogMiArICJweCI7CiAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5o
ZWlnaHQgPSBuZXdFbGVtZW50UG9zaXRpb24uaGVpZ2h0ICsgYm9yZGVyV2lkdGggKiAyICsgInB4
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzCmluZGV4IGE3YmI0MWMuLmFlZmFmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpA
QCAtMTA3LDcgKzEwNyw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Db2xvckZv
cm1hdCA9IHsKICAgICBIU0xBOiAiaHNsYSIKIH0KIAotV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzID0gIiBcdFxuXCInOjssLygpIjsKK1dlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5c
Iic6OywvKCI7CiAKIAogLy8gS2VlcCBpbiBzeW5jIHdpdGggUmVuZGVyU3R5bGVDb25zdGFudHMu
aCBQc2V1ZG9JZCBlbnVtLiBBcnJheSBiZWxvdyBjb250YWlucyBwc2V1ZG8gaWQgbmFtZXMgZm9y
IGNvcnJlc3BvbmRpbmcgZW51bSBpbmRleGVzLgpAQCAtMTg3NSwxOCArMTg3NSwzMSBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSB8fCBpc0ZpZWxkSW5wdXRUZXJtaW5hdGVkKSB7CiAg
ICAgICAgICAgICAgICAgLy8gRW50ZXIgb3IgY29sb24gKGZvciBuYW1lKS9zZW1pY29sb24gb3V0
c2lkZSBvZiBzdHJpbmcgKGZvciB2YWx1ZSkuCiAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNFbnRlcktleShldmVudCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRW50ZXIgc2hvdWxkIG9ubHkgYWNjZXB0IHRoZSBzdWdnZXN0
aW9uIHdpdGhvdXQgY29tbWl0dGluZyB0aGUgdmFsdWUgaWYgdGhlIHN1Z2dlc3QgYm94IGlzIHZp
c2libGUuCisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wcm9tcHQuaXNTdWdnZXN0Qm94
VmlzaWJsZSgpICYmIHRoaXMuX3Byb21wdC5zdWdnZXN0Qm94Lmhhc1NlbGVjdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvbXB0LnN1Z2dlc3RCb3guYWNjZXB0U3VnZ2Vz
dGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiAibW92ZS1m
b3J3YXJkIjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSB8fCBldmVudC5rZXlJZGVudGlm
aWVyID09PSAiVSswMDFCIikKLSAgICAgICAgICAgICAgICByZXR1cm4gImNhbmNlbCI7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghaXNFZGl0aW5nTmFtZSAmJiB0aGlzLl9uZXdQcm9wZXJ0eSAmJiBl
dmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkJhY2tz
cGFjZS5jb2RlKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwgZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIlUrMDAxQiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3Byb21w
dC5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2Fu
Y2VsIjsgLy8gT25seSBjYW5jZWwgdGhlIGVkaXRvciB3aGVuIHRoZSBzdWdnZXN0IGJveCBpcyBu
b3QgYWN0aXZlLgorICAgICAgICAgICAgfSBlbHNlIGlmICghaXNFZGl0aW5nTmFtZSAmJiB0aGlz
Ll9uZXdQcm9wZXJ0eSAmJiBldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXlzLkJhY2tzcGFjZS5jb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gRm9yIGEg
bmV3IHByb3BlcnR5LCB3aGVuIEJhY2tzcGFjZSBpcyBwcmVzc2VkIGF0IHRoZSBiZWdpbm5pbmcg
b2YgbmV3IHByb3BlcnR5IHZhbHVlLCBtb3ZlIGJhY2sgdG8gdGhlIHByb3BlcnR5IG5hbWUuCiAg
ICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAg
ICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmICFzZWxlY3Rpb24uZm9j
dXNPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWJhY2t3YXJkIjsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJV
KzAwMDkiKSAvLyBUYWIga2V5LgorICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVu
dGlmaWVyID09PSAiVSswMDA5IikgeyAvLyBUYWIga2V5LgorICAgICAgICAgICAgICAgIC8vIFRh
YiBhY2NlcHRzIHRoZSBwcm9wZXJ0eSBuYW1lIHN1Z2dlc3Rpb24vY29tcGxldGlvbiBhbmQgdHJh
bnNpdGlvbnMgdG8gdGhlIHZhbHVlIGZpZWxkLgorICAgICAgICAgICAgICAgIGlmIChpc0VkaXRp
bmdOYW1lKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9tcHQuc3VnZ2VzdEJveC5hY2Nl
cHRTdWdnZXN0aW9uKCk7CisKICAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChldmVu
dC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcGFzdGVIYW5kbGVyKGNvbnRleHQsIGV2ZW50KQpA
QCAtMTkxNCw2ICsxOTI3LDExIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWZvcndhcmQiOwogICAg
ICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gZm9jdXNSZXN0b3JlcihldmVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuICh0aGlzLl9wcm9tcHQgJiYgdGhpcy5fcHJvbXB0LnN1Z2dl
c3RCb3ggJiYgdGhpcy5fcHJvbXB0LnN1Z2dlc3RCb3guZm9jdXNlZCkgPyB0aGlzLl9wcm9tcHQu
c3VnZ2VzdEJveC5pbnB1dFJhbmdlIDogbnVsbDsKKyAgICAgICAgfQorCiAgICAgICAgIGRlbGV0
ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwogCiAgICAgICAgIHRoaXMuX3BhcmVudFBhbmUu
X2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKQEAgLTE5MjMsOSArMTk0MSwxMCBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNv
bmZpZyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyh0aGlzLmVkaXRpbmdDb21taXR0
ZWQuYmluZCh0aGlzKSwgdGhpcy5lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGNvbnRleHQp
OwogICAgICAgICBjb25maWcuc2V0Q3VzdG9tRmluaXNoSGFuZGxlcihuYW1lVmFsdWVGaW5pc2hI
YW5kbGVyLmJpbmQodGhpcywgY29udGV4dCwgaXNFZGl0aW5nTmFtZSkpOwogICAgICAgICBjb25m
aWcuc2V0UGFzdGVIYW5kbGVyKGlzRWRpdGluZ05hbWUgPyBwYXN0ZUhhbmRsZXIuYmluZCh0aGlz
LCBjb250ZXh0KSA6IG51bGwpOworICAgICAgICBjb25maWcuc2V0Rm9jdXNSZXN0b3Jlcihmb2N1
c1Jlc3RvcmVyLmJpbmQodGhpcykpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5n
KHNlbGVjdEVsZW1lbnQsIGNvbmZpZyk7CiAKLSAgICAgICAgdGhpcy5fcHJvbXB0ID0gbmV3IFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdChzZWxlY3RFbGVt
ZW50LCBpc0VkaXRpbmdOYW1lID8gV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVD
b21wbGV0aW9ucyA6IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVy
dHkodGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCkpOworICAgICAgICB0aGlzLl9wcm9tcHQg
PSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0KHNl
bGVjdEVsZW1lbnQsIGlzRWRpdGluZ05hbWUgPyBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMu
Y3NzTmFtZUNvbXBsZXRpb25zIDogV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQcm9wZXJ0eSh0aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50KSwgdGhpcy5fYXBwbHlGcmVl
Rmxvd1N0eWxlVGV4dEVkaXQuYmluZCh0aGlzLCB0cnVlKSwgdW5kZWZpbmVkKTsKICAgICAgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoc2VsZWN0RWxlbWVudCwgMCwg
c2VsZWN0RWxlbWVudCwgMSk7CiAgICAgfSwKIApAQCAtMjI1NiwyNiArMjI3NSwxOCBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBU
cmVlRWxlbWVudC5wcm90b3R5cAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlRleHRQcm9tcHR9CiAgKi8KLVdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5D
U1NQcm9wZXJ0eVByb21wdCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNzc0NvbXBsZXRpb25zKQorV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVuY3Rpb24o
ZWxlbWVudCwgY3NzQ29tcGxldGlvbnMsIGFwcGx5SXRlbUNhbGxiYWNrLCBhY2NlcHRDYWxsYmFj
aykKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5jYWxsKHRoaXMsIGVsZW1lbnQsIHRo
aXMuX2J1aWxkUHJvcGVydHlDb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMsIHRydWUpOworICAgIFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LmNhbGwodGhpcywgZWxlbWVudCwgdGhpcy5fYnVpbGRQcm9wZXJ0eUNv
bXBsZXRpb25zLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHls
ZVZhbHVlRGVsaW1pdGVycywgdHJ1ZSwgeyBhcHBseUNhbGxiYWNrOiBhcHBseUl0ZW1DYWxsYmFj
aywgYWNjZXB0Q2FsbGJhY2s6IGFjY2VwdENhbGxiYWNrLCBjbGFzc05hbWU6ICJjc3Mtc3VnZ2Vz
dCIgfSk7CiAgICAgdGhpcy5fY3NzQ29tcGxldGlvbnMgPSBjc3NDb21wbGV0aW9uczsKIH0KIAog
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0LnByb3RvdHlw
ZSA9IHsKLSAgICB1cEtleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy5faGFuZGxlTmFtZU9yVmFsdWVVcERvd24oZXZlbnQpOwotICAgIH0sCi0KLSAgICBkb3du
S2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9oYW5kbGVO
YW1lT3JWYWx1ZVVwRG93bihldmVudCk7Ci0gICAgfSwKLQogICAgIHRhYktleVByZXNzZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKTsK
KyAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuc3VnZ2VzdEJveC5hY2NlcHRTdWdnZXN0aW9uKCk7CisgICAgICAgIHJldHVybiB0
aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOwogICAgIH0sCiAKICAgICBfaGFuZGxlTmFtZU9yVmFs
dWVVcERvd246IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjMwOCwyNCArMjMxOSwxNCBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBlID0gewog
ICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2Uod29yZFN1ZmZpeFJhbmdlKTsKICAgICB9LAogCi0g
ICAgX2J1aWxkUHJvcGVydHlDb21wbGV0aW9uczogZnVuY3Rpb24od29yZFJhbmdlLCBiZXN0TWF0
Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2spCisgICAgX2J1aWxkUHJvcGVydHlDb21w
bGV0aW9uczogZnVuY3Rpb24od29yZFJhbmdlLCBmb3JjZSwgY29tcGxldGlvbnNSZWFkeUNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgdmFyIHByZWZpeCA9IHdvcmRSYW5nZS50b1N0cmluZygpLnRv
TG93ZXJDYXNlKCk7Ci0gICAgICAgIGlmICghcHJlZml4ICYmIGJlc3RNYXRjaE9ubHkpCisgICAg
ICAgIGlmICghcHJlZml4ICYmICFmb3JjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICB2YXIgcmVzdWx0czsKLSAgICAgICAgaWYgKGJlc3RNYXRjaE9ubHkpIHsKLSAgICAgICAgICAg
IHJlc3VsdHMgPSBbXTsKLSAgICAgICAgICAgIHZhciBmaXJzdE1hdGNoID0gdGhpcy5fY3NzQ29t
cGxldGlvbnMuZmlyc3RTdGFydHNXaXRoKHByZWZpeCk7Ci0gICAgICAgICAgICBpZiAoZmlyc3RN
YXRjaCkKLSAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goZmlyc3RNYXRjaCk7Ci0gICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKHJlc3VsdHMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmVzdWx0cyA9IHRoaXMuX2Nzc0NvbXBsZXRpb25zLnN0YXJ0c1dpdGgocHJl
Zml4KTsKLSAgICAgICAgaWYgKHJlc3VsdHMpCi0gICAgICAgICAgICBjb21wbGV0aW9uc1JlYWR5
Q2FsbGJhY2socmVzdWx0cyk7CisgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5fY3NzQ29tcGxl
dGlvbnMuc3RhcnRzV2l0aChwcmVmaXgpOworICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJh
Y2socmVzdWx0cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKaW5kZXggZmQwZGJiMC4uZjVkY2UxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcwpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOCArMzAs
OSBAQAogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7Ym9vbGVhbj19IG9taXRIaXN0
b3J5CisgKiBAcGFyYW0geyo9fSBzdWdnZXN0Qm94Q29uZmlnCiAgKi8KLVdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0ID0gZnVuY3Rpb24oZWxlbWVudCwgY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJz
LCBvbWl0SGlzdG9yeSkKK1dlYkluc3BlY3Rvci5UZXh0UHJvbXB0ID0gZnVuY3Rpb24oZWxlbWVu
dCwgY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJzLCBvbWl0SGlzdG9yeSwgc3VnZ2VzdEJveENv
bmZpZykKIHsKICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwogICAgIHRoaXMuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJ0ZXh0LXByb21wdCIpOwpAQCAtNDIsNiArNDQsMTEgQEAgV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQgPSBmdW5jdGlvbihlbGVtZW50LCBjb21wbGV0aW9ucywgc3RvcENoYXJh
Y3RlcnMsIG9taXRIaXMKICAgICB9CiAgICAgdGhpcy5fYm91bmRPbktleURvd24gPSB0aGlzLl9v
bktleURvd24uYmluZCh0aGlzKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMuX2JvdW5kT25LZXlEb3duLCB0cnVlKTsKKyAgICBpZiAoc3VnZ2VzdEJv
eENvbmZpZykgeworICAgICAgICB0aGlzLnN1Z2dlc3RCb3ggPSBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRQcm9tcHQuU3VnZ2VzdEJveCh0aGlzLCBlbGVtZW50LCBzdWdnZXN0Qm94Q29uZmlnLmNsYXNz
TmFtZSwgY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJzKTsKKyAgICAgICAgdGhpcy5fYXBwbHlD
YWxsYmFjayA9IHN1Z2dlc3RCb3hDb25maWcuYXBwbHlDYWxsYmFjazsKKyAgICAgICAgdGhpcy5f
YWNjZXB0Q2FsbGJhY2sgPSBzdWdnZXN0Qm94Q29uZmlnLmFjY2VwdENhbGxiYWNrOworICAgIH0K
IH0KIAogV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewpAQCAtNjYsMzYgKzcz
LDU0IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHRoaXMuY2xlYXJBdXRvQ29tcGxldGUodHJ1ZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRPbktleURvd24sIHRydWUp
OworICAgICAgICBpZiAodGhpcy5zdWdnZXN0Qm94KQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0
Qm94LnJlbW92ZUZyb21FbGVtZW50KCk7CiAgICAgfSwKIAogICAgIF9vbktleURvd246IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZGVmYXVsdEFjdGlvbigpCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBmb3JjZUF1dG9jb21wbGV0ZQor
ICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZGVmYXVsdEFjdGlvbihmb3JjZUF1dG9jb21w
bGV0ZSkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSgpOwot
ICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVTb29uKCk7CisgICAgICAgICAgICB0aGlzLmNs
ZWFyQXV0b0NvbXBsZXRlKHRydWUpOworICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVTb29u
KGZvcmNlQXV0b2NvbXBsZXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChldmVudC5oYW5k
bGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBoYW5kbGVkID0gZmFsc2U7
CisgICAgICAgIHZhciBoYW5kbGVkOwogCiAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5SWRlbnRp
ZmllcikgewogICAgICAgICAgICAgY2FzZSAiVXAiOgotICAgICAgICAgICAgICAgIHRoaXMudXBL
ZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy51cEtleVBy
ZXNzZWQoZXZlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAi
RG93biI6Ci0gICAgICAgICAgICAgICAgdGhpcy5kb3duS2V5UHJlc3NlZChldmVudCk7CisgICAg
ICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuZG93bktleVByZXNzZWQoZXZlbnQpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiVSswMDA5IjogLy8gVGFiCi0gICAg
ICAgICAgICAgICAgdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBo
YW5kbGVkID0gdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgIkVudGVyIjoKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0g
dGhpcy5lbnRlcktleVByZXNzZWQoZXZlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSAiUmlnaHQiOgogICAgICAgICAgICAgY2FzZSAiRW5kIjoKICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAiVSswMDFCIjogLy8gRXNjCisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
aXNTdWdnZXN0Qm94VmlzaWJsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VnZ2Vz
dEJveC5oaWRlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNhc2UgIlUrMDAyMCI6IC8vIFNwYWNlCisgICAgICAgICAgICAgICAg
aWYgKGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleSAmJiAh
ZXZlbnQuc2hpZnRLZXkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFjdGlvbi5jYWxs
KHRoaXMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlICJBbHQiOgogICAgICAgICAgICAgY2FzZSAiTWV0YSI6CiAg
ICAgICAgICAgICBjYXNlICJTaGlmdCI6CkBAIC0xMzUsNiArMTYwLDkgQEAgV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuYXV0b0NvbXBsZXRl
RWxlbWVudCB8fCAhdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnBhcmVudE5vZGUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJs
ZSgpKQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0Qm94LmFjY2VwdFN1Z2dlc3Rpb24oKTsKKwog
ICAgICAgICB2YXIgdGV4dCA9IHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC50ZXh0Q29udGVudDsK
ICAgICAgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAg
ICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0
ZXh0Tm9kZSwgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50KTsKQEAgLTE4OSwxMyArMjE3LDE5IEBA
IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRo
aXMuX3VzZXJFbnRlcmVkVGV4dDsKICAgICB9LAogCi0gICAgYXV0b0NvbXBsZXRlU29vbjogZnVu
Y3Rpb24oKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGZvcmNlCisgICAgICov
CisgICAgYXV0b0NvbXBsZXRlU29vbjogZnVuY3Rpb24oZm9yY2UpCiAgICAgewogICAgICAgICBp
ZiAoISgiX2NvbXBsZXRlVGltZW91dCIgaW4gdGhpcykpCi0gICAgICAgICAgICB0aGlzLl9jb21w
bGV0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY29tcGxldGUuYmluZCh0aGlzLCB0cnVlKSwg
MjUwKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlVGltZW91dCA9IHNldFRpbWVvdXQodGhp
cy5jb21wbGV0ZS5iaW5kKHRoaXMsIHRydWUsIGZvcmNlKSwgdGhpcy5pc1N1Z2dlc3RCb3hWaXNp
YmxlKCkgPyAwIDogMjUwKTsKICAgICB9LAogCi0gICAgY29tcGxldGU6IGZ1bmN0aW9uKGF1dG8s
IHJldmVyc2UpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gcmV2ZXJzZQorICAg
ICAqLworICAgIGNvbXBsZXRlOiBmdW5jdGlvbihhdXRvLCBmb3JjZSwgcmV2ZXJzZSkKICAgICB7
CiAgICAgICAgIHRoaXMuY2xlYXJBdXRvQ29tcGxldGUodHJ1ZSk7CiAgICAgICAgIHZhciBzZWxl
Y3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CkBAIC0yMDUsMjEgKzIzOSwzNSBAQCBXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3Rpb25S
YW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogICAgICAgICB2YXIgaXNFbXB0eUlucHV0
ID0gc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIgPT09IHRoaXMuZWxlbWVu
dDsgLy8gdGhpcy5lbGVtZW50IGhhcyBubyBjaGlsZCBUZXh0IG5vZGVzLgogCisgICAgICAgIHZh
ciBzaG91bGRFeGl0OworCiAgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIGF1dG8tY29tcGxl
dGUgYW4gZW1wdHkgaW5wdXQgaW4gdGhlIGF1dG8gbW9kZSAob25seSBvbiBkZW1hbmQpLgotICAg
ICAgICBpZiAoYXV0byAmJiBpc0VtcHR5SW5wdXQpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChhdXRvICYmIGlzRW1wdHlJbnB1dCAmJiAhZm9yY2UpCisgICAgICAgICAgICBzaG91
bGRFeGl0ID0gdHJ1ZTsKICAgICAgICAgaWYgKCFhdXRvICYmICFpc0VtcHR5SW5wdXQgJiYgIXNl
bGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVzY2VuZGFudCh0aGlzLmVs
ZW1lbnQpKQorICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CisgICAgICAgIGlmIChhdXRv
ICYmICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkgJiYgIWZvcmNlKQorICAgICAgICAgICAg
c2hvdWxkRXhpdCA9IHRydWU7CisKKyAgICAgICAgaWYgKHNob3VsZEV4aXQpIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKKyAgICAgICAgICAgICAgICB0aGlz
LnN1Z2dlc3RCb3guaGlkZSgpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYXV0
byAmJiAhdGhpcy5pc0NhcmV0QXRFbmRPZlByb21wdCgpKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIHZhciB3b3JkUHJlZml4UmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS5z
dGFydENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFydE9mZnNldCwgdGhp
cy5jb21wbGV0aW9uU3RvcENoYXJhY3RlcnMsIHRoaXMuZWxlbWVudCwgImJhY2t3YXJkIik7Ci0g
ICAgICAgIHRoaXMuY29tcGxldGlvbnMod29yZFByZWZpeFJhbmdlLCBhdXRvLCB0aGlzLl9jb21w
bGV0aW9uc1JlYWR5LmJpbmQodGhpcywgc2VsZWN0aW9uLCBhdXRvLCB3b3JkUHJlZml4UmFuZ2Us
IHJldmVyc2UpKTsKKyAgICAgICAgdGhpcy5jb21wbGV0aW9ucyh3b3JkUHJlZml4UmFuZ2UsIGZv
cmNlLCB0aGlzLl9jb21wbGV0aW9uc1JlYWR5LmJpbmQodGhpcywgc2VsZWN0aW9uLCBhdXRvLCB3
b3JkUHJlZml4UmFuZ2UsIHJldmVyc2UpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICovCiAgICAgX2NvbXBsZXRp
b25zUmVhZHk6IGZ1bmN0aW9uKHNlbGVjdGlvbiwgYXV0bywgb3JpZ2luYWxXb3JkUHJlZml4UmFu
Z2UsIHJldmVyc2UsIGNvbXBsZXRpb25zKQogICAgIHsKLSAgICAgICAgaWYgKCFjb21wbGV0aW9u
cyB8fCAhY29tcGxldGlvbnMubGVuZ3RoKQorICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFj
b21wbGV0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZp
c2libGUoKSkKKyAgICAgICAgICAgICAgICB0aGlzLnN1Z2dlc3RCb3guaGlkZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0g
c2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CiAKQEAgLTIzMCw2ICsyNzgsMTQgQEAgV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICBpZiAob3JpZ2luYWxXb3JkUHJl
Zml4UmFuZ2UudG9TdHJpbmcoKSArIHNlbGVjdGlvblJhbmdlLnRvU3RyaW5nKCkgIT0gZnVsbFdv
cmRSYW5nZS50b1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMu
X3VzZXJFbnRlcmVkUmFuZ2UgPSBmdWxsV29yZFJhbmdlOworICAgICAgICB0aGlzLl91c2VyRW50
ZXJlZFRleHQgPSBmdWxsV29yZFJhbmdlLnRvU3RyaW5nKCk7CisKKyAgICAgICAgaWYgKHRoaXMu
c3VnZ2VzdEJveCkgeworICAgICAgICAgICAgdGhpcy5zdWdnZXN0Qm94LnVwZGF0ZVN1Z2dlc3Rp
b25zKGNvbXBsZXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybjsgLy8gRG8gbm90aGluZywgdGhl
IHN1Z2dlc3QgYm94IGlzIGRyaXZpbmcgdXMuCisgICAgICAgIH0KKwogICAgICAgICB2YXIgd29y
ZFByZWZpeExlbmd0aCA9IG9yaWdpbmFsV29yZFByZWZpeFJhbmdlLnRvU3RyaW5nKCkubGVuZ3Ro
OwogCiAgICAgICAgIGlmIChhdXRvKQpAQCAtMjc0LDE1ICszMzAsMTEgQEAgV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5fdXNlckVudGVyZWRSYW5nZSA9IGZ1bGxXb3JkUmFuZ2U7Ci0gICAgICAgIHRo
aXMuX3VzZXJFbnRlcmVkVGV4dCA9IGZ1bGxXb3JkUmFuZ2UudG9TdHJpbmcoKTsKLQotICAgICAg
ICBmdWxsV29yZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5w
cnVuZUVtcHR5VGV4dE5vZGVzKCk7Ci0KLSAgICAgICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogCiAgICAgICAgIGlmIChhdXRvKSB7CisgICAgICAg
ICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQucHJ1bmVFbXB0eVRleHROb2RlcygpOworICAgICAgICAgICAgdmFyIGZp
bmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAg
dmFyIHByZWZpeFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcoMCwgd29yZFByZWZpeExl
bmd0aCk7CiAgICAgICAgICAgICB2YXIgc3VmZml4VGV4dCA9IGNvbXBsZXRpb25UZXh0LnN1YnN0
cmluZyh3b3JkUHJlZml4TGVuZ3RoKTsKIApAQCAtMjk3LDIwICszNDksNDcgQEAgV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBmaW5hbFNlbGVjdGlv
blJhbmdlLnNldFN0YXJ0KHByZWZpeFRleHROb2RlLCB3b3JkUHJlZml4TGVuZ3RoKTsKICAgICAg
ICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHByZWZpeFRleHROb2RlLCB3b3JkUHJl
Zml4TGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb21wbGV0aW9u
VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb21wbGV0aW9uVGV4dCk7Ci0gICAg
ICAgICAgICBmdWxsV29yZFJhbmdlLmluc2VydE5vZGUoY29tcGxldGlvblRleHROb2RlKTsKKyAg
ICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgICAgIHNlbGVj
dGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICB0aGlzLmFwcGx5U3VnZ2VzdGlvbihjb21wbGV0aW9uVGV4dCwgdHJ1ZSk7CisgICAg
fSwKIAotICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA+IDEpCi0gICAgICAgICAg
ICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChjb21wbGV0aW9uVGV4dE5vZGUsIHdv
cmRQcmVmaXhMZW5ndGgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZpbmFs
U2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoY29tcGxldGlvblRleHROb2RlLCBjb21wbGV0aW9uVGV4
dC5sZW5ndGgpOworICAgIGFwcGx5U3VnZ2VzdGlvbjogZnVuY3Rpb24oY29tcGxldGlvblRleHQs
IGlzSW50ZXJtZWRpYXRlU3VnZ2VzdGlvbikKKyAgICB7CisgICAgICAgIHRoaXMuX3VzZXJFbnRl
cmVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnBydW5lRW1w
dHlUZXh0Tm9kZXMoKTsKKyAgICAgICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgICAgICB2YXIgY29tcGxldGlvblRleHROb2RlID0gZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoY29tcGxldGlvblRleHQpOworICAgICAgICB0aGlzLl91c2VyRW50
ZXJlZFJhbmdlLmluc2VydE5vZGUoY29tcGxldGlvblRleHROb2RlKTsKIAotICAgICAgICAgICAg
ZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQoY29tcGxldGlvblRleHROb2RlLCBjb21wbGV0aW9u
VGV4dC5sZW5ndGgpOwotICAgICAgICB9CisgICAgICAgIHZhciB3b3JkUHJlZml4TGVuZ3RoID0g
dGhpcy5fdXNlckVudGVyZWRUZXh0ID8gdGhpcy5fdXNlckVudGVyZWRUZXh0Lmxlbmd0aCA6IDA7
CisKKyAgICAgICAgaWYgKGlzSW50ZXJtZWRpYXRlU3VnZ2VzdGlvbikKKyAgICAgICAgICAgIGZp
bmFsU2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoY29tcGxldGlvblRleHROb2RlLCB3b3JkUHJlZml4
TGVuZ3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5z
ZXRTdGFydChjb21wbGV0aW9uVGV4dE5vZGUsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCk7CiAKKyAg
ICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQoY29tcGxldGlvblRleHROb2RlLCBjb21w
bGV0aW9uVGV4dC5sZW5ndGgpOworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNl
bGVjdGlvbigpOwogICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAg
IHNlbGVjdGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKyAgICAgICAgaWYgKGlz
SW50ZXJtZWRpYXRlU3VnZ2VzdGlvbiAmJiB0aGlzLl9hcHBseUNhbGxiYWNrKQorICAgICAgICAg
ICAgdGhpcy5fYXBwbHlDYWxsYmFjaygpOworICAgIH0sCisKKyAgICBhY2NlcHRTdWdnZXN0aW9u
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOwor
ICAgICAgICBpZiAodGhpcy5zdWdnZXN0Qm94KQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0Qm94
LmhpZGUoKTsKKyAgICAgICAgaWYgKHRoaXMuX2FjY2VwdENhbGxiYWNrKQorICAgICAgICAgICAg
dGhpcy5fYWNjZXB0Q2FsbGJhY2soKTsKKyAgICB9LAorCisgICAgaXNTdWdnZXN0Qm94VmlzaWJs
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc3VnZ2VzdEJveCAmJiB0
aGlzLnN1Z2dlc3RCb3gudmlzaWJsZTsKICAgICB9LAogCiAgICAgaXNDYXJldEluc2lkZVByb21w
dDogZnVuY3Rpb24oKQpAQCAtNDA1LDI2ICs0ODQsNjQgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQucHJvdG90eXBlID0gewogCiAgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewotICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5jb21wbGV0
ZShmYWxzZSwgZXZlbnQuc2hpZnRLZXkpOworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hW
aXNpYmxlKCkpIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnN1Z2dlc3RCb3gudGFi
S2V5UHJlc3NlZChldmVudCk7CisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmNvbXBsZXRlKGZh
bHNlLCBmYWxzZSwgZXZlbnQuc2hpZnRLZXkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
LAorCisgICAgZW50ZXJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGlmIChldmVudC5oYW5kbGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlz
LnN1Z2dlc3RCb3guZW50ZXJLZXlQcmVzc2VkKGV2ZW50KTsKKworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfSwKIAogICAgIHVwS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewor
ICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQgPSB0aGlzLnN1Z2dlc3RCb3gudXBLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
fQorCiAgICAgICAgIGlmICghdGhpcy5pc0NhcmV0T25GaXJzdExpbmUoKSkKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBldmVudC5oYW5k
bGVkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fbW92ZUJhY2tJbkhpc3RvcnkoKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfSwKIAogICAgIGRvd25LZXlQcmVzc2VkOiBmdW5jdGlvbihldmVu
dCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc0NhcmV0T25MYXN0TGluZSgpKQotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsK
KyAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zdWdnZXN0Qm94LmRvd25LZXlQcmVzc2VkKGV2
ZW50KTsKKyAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgfQorCisgICAgICBpZiAoIXRoaXMuaXNDYXJldE9uTGFzdExpbmUoKSkKKyAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAgICAg
ICAgIHRoaXMuX21vdmVGb3J3YXJkSW5IaXN0b3J5KCk7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0sCiAKICAgICBfbW92ZUJhY2tJbkhpc3Rvcnk6IGZ1bmN0aW9uKCkKQEAgLTQ3NSwzICs1
OTIsMzE0IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CiAgICAgfQogfQorCisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3ggPSBmdW5j
dGlvbih0ZXh0UHJvbXB0LCBpbnB1dEVsZW1lbnQsIGNsYXNzTmFtZSwgY29tcGxldGlvbnMsIHN0
b3BDaGFyYWN0ZXJzKQoreworICAgIHRoaXMuX3RleHRQcm9tcHQgPSB0ZXh0UHJvbXB0OworICAg
IHRoaXMucGFyZW50RWxlbWVudCA9IGlucHV0RWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7Cisg
ICAgdGhpcy5pbnB1dEVsZW1lbnQgPSBpbnB1dEVsZW1lbnQ7CisgICAgdGhpcy5jb21wbGV0aW9u
cyA9IGNvbXBsZXRpb25zOworICAgIHRoaXMuY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzID0gc3Rv
cENoYXJhY3RlcnM7CisgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDsKKyAgICB0aGlz
Ll9ib3VuZE9uU2Nyb2xsID0gdGhpcy5fb25zY3JvbGxyZXNpemUuYmluZCh0aGlzLCB0cnVlKTsK
KyAgICB0aGlzLl9ib3VuZE9uUmVzaXplID0gdGhpcy5fb25zY3JvbGxyZXNpemUuYmluZCh0aGlz
LCBmYWxzZSk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2Jv
dW5kT25TY3JvbGwsIHRydWUpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUi
LCB0aGlzLl9ib3VuZE9uUmVzaXplLCB0cnVlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IHRoaXMu
cGFyZW50RWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInN1Z2dlc3QtYm94IGN1c3RvbS1wb3B1
cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsICIgKyAoY2xh
c3NOYW1lIHx8ICIiKSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIHRoaXMuX29uYm94bW91c2Vkb3duLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMu
Y29udGFpbmVyRWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgImNvbnRh
aW5lciIpOworICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lckVsZW1lbnQu
Y3JlYXRlQ2hpbGQoImRpdiIsICJjb250ZW50Iik7CisKKyAgICB0aGlzLl91cGRhdGVCb3hQb3Np
dGlvbigpOworfQorCitXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlw
ZSA9IHsKKyAgICBnZXQgdmlzaWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5lbGVt
ZW50Lmhhc1N0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICB9LAorCisgICAgZ2V0IGhhc1NlbGVj
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl9zZWxlY3RlZEVsZW1lbnQ7Cisg
ICAgfSwKKworICAgIF9vbnNjcm9sbHJlc2l6ZTogZnVuY3Rpb24oaXNTY3JvbGwsIGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKGlzU2Nyb2xsICYmIHRoaXMuZWxlbWVudC5pc0FuY2VzdG9yKGV2
ZW50LnRhcmdldCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3VwZGF0ZUJv
eFBvc2l0aW9uKCk7CisgICAgfSwKKworICAgIF91cGRhdGVCb3hQb3NpdGlvbjogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgLy8gTWVhc3VyZSB0aGUgY29udGVudCBlbGVtZW50IGJveC4KKyAg
ICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7
CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RWxlbWVudCk7
CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQucG9zaXRpb25BdCgwLCAwKTsKKyAgICAgICAg
dmFyIGNvbnRlbnRXaWR0aCA9IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7CisgICAg
ICAgIHZhciBjb250ZW50SGVpZ2h0ID0gdGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7
CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cisg
ICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVt
ZW50KTsKKworICAgICAgICAvLyBMYXkgb3V0IHRoZSBzdWdnZXN0LWJveCByZWxhdGl2ZSB0byB0
aGUgYW5jaG9yQm94LgorICAgICAgICBjb25zdCBhbmNob3JCb3ggPSB0aGlzLmlucHV0RWxlbWVu
dC5ib3hJbldpbmRvdyh3aW5kb3csIHRoaXMucGFyZW50RWxlbWVudCk7CisgICAgICAgIGNvbnN0
IHN1Z2dlc3RCb3hQYWRkaW5nWCA9IDIxOworICAgICAgICBjb25zdCBzdWdnZXN0Qm94UGFkZGlu
Z1kgPSAxMjsKKyAgICAgICAgY29uc3Qgc3BhY2VyID0gNjsKKyAgICAgICAgY29uc3QgbWluSGVp
Z2h0ID0gNTA7CisgICAgICAgIGNvbnN0IG1heFdpZHRoID0gZG9jdW1lbnQuYm9keS5vZmZzZXRX
aWR0aCAtIGFuY2hvckJveC54IC0gc3BhY2VyOworICAgICAgICBjb25zdCB3aWR0aCA9IE1hdGgu
bWluKGNvbnRlbnRXaWR0aCwgbWF4V2lkdGggLSBzdWdnZXN0Qm94UGFkZGluZ1gpICsgc3VnZ2Vz
dEJveFBhZGRpbmdYOworCisgICAgICAgIHZhciBtYXhIZWlnaHQgPSBkb2N1bWVudC5ib2R5Lm9m
ZnNldEhlaWdodCAtIGFuY2hvckJveC55IC0gYW5jaG9yQm94LmhlaWdodCAtIHNwYWNlcjsKKyAg
ICAgICAgdmFyIHBhZGRlZEhlaWdodCA9IGNvbnRlbnRIZWlnaHQgKyBzdWdnZXN0Qm94UGFkZGlu
Z1k7CisgICAgICAgIHZhciBoZWlnaHQgPSBNYXRoLm1pbihwYWRkZWRIZWlnaHQsIG1heEhlaWdo
dCk7CisgICAgICAgIGlmIChoZWlnaHQgPj0gbWluSGVpZ2h0IHx8IGhlaWdodCA9PT0gcGFkZGVk
SGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBMb2NhdGUgdGhlIHN1Z2dlc3QgYm94IHVuZGVyIHRo
ZSBhbmNob3JCb3guCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucG9zaXRpb25BdChhbmNob3JC
b3gueCwgYW5jaG9yQm94LnkgKyBhbmNob3JCb3guaGVpZ2h0KTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJhYm92ZS1hbmNob3IiKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIExvY2F0ZSB0aGUgc3VnZ2VzdCBib3ggYWJvdmUgdGhlIGFuY2hv
ckJveC4KKyAgICAgICAgICAgIG1heEhlaWdodCA9IGFuY2hvckJveC55IC0gc3BhY2VyOworICAg
ICAgICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oY29udGVudEhlaWdodCwgbWF4SGVpZ2h0IC0gc3Vn
Z2VzdEJveFBhZGRpbmdZKSArIHN1Z2dlc3RCb3hQYWRkaW5nWTsKKyAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5wb3NpdGlvbkF0KGFuY2hvckJveC54LCBhbmNob3JCb3gueSAtIGhlaWdodCk7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiYWJvdmUtYW5jaG9yIik7Cisg
ICAgICAgIH0KKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAicHgi
OworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsKKyAg
ICB9LAorCisgICAgX3JlbWVtYmVySW5wdXRSYW5nZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKHNl
bGVjdGlvbi5yYW5nZUNvdW50KSB7CisgICAgICAgICAgICB2YXIgcmFuZ2UgPSBzZWxlY3Rpb24u
Z2V0UmFuZ2VBdCgwKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCA9PT0gcmFu
Z2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIgfHwgdGhpcy5pbnB1dEVsZW1lbnQuaXNBbmNlc3Rv
cihyYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgdGhpcy5p
bnB1dFJhbmdlID0gcmFuZ2U7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX29uYm94bW91c2Vk
b3duOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlOworICAg
ICAgICB0aGlzLl9yZW1lbWJlcklucHV0UmFuZ2UoKTsKKyAgICB9LAorCisgICAgaGlkZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInZpc2libGUi
KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkRWxlbWVudDsKKyAgICB9LAorCisgICAg
cmVtb3ZlRnJvbUVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9ib3VuZE9uU2Nyb2xsLCB0cnVlKTsKKyAg
ICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kT25S
ZXNpemUsIHRydWUpOworICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVD
aGlsZCh0aGlzLmVsZW1lbnQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZz19IHRleHQKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0ludGVybWVkaWF0ZVN1Z2dl
c3Rpb24KKyAgICAgKi8KKyAgICBfYXBwbHlTdWdnZXN0aW9uOiBmdW5jdGlvbih0ZXh0LCBpc0lu
dGVybWVkaWF0ZVN1Z2dlc3Rpb24pCisgICAgeworICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSB8
fCAhdGhpcy5fc2VsZWN0ZWRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHZhciBzdWdnZXN0aW9uID0gdGV4dCB8fCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQudGV4
dENvbnRlbnQ7CisgICAgICAgIGlmICghc3VnZ2VzdGlvbikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICB0aGlzLl90ZXh0UHJvbXB0LmFwcGx5U3VnZ2VzdGlvbihzdWdnZXN0
aW9uLCBpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSB0ZXh0CisgICAgICovCisg
ICAgYWNjZXB0U3VnZ2VzdGlvbjogZnVuY3Rpb24odGV4dCkKKyAgICB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSB0aGlzLl9hcHBseVN1Z2dlc3Rpb24odGV4dCwgZmFsc2UpOworICAgICAgICB0aGlz
LmhpZGUoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgdGhpcy5fdGV4dFByb21wdC5hY2NlcHRTdWdnZXN0aW9uKCk7CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9vbk5leHRJdGVtOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVsZW1lbnQuY2hp
bGROb2RlczsKKyAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5uZXh0U2li
bGluZyB8fCB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmly
c3RDaGlsZDsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMu
X2FwcGx5U3VnZ2VzdGlvbih1bmRlZmluZWQsIHRydWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9LAorCisgICAgX29uUHJldmlvdXNJdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGROb2RlczsKKyAg
ICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5wcmV2aW91c1NpYmxpbmcgfHwg
dGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQubGFzdENoaWxkOwor
ICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICAgICAgdGhpcy5fYXBwbHlTdWdn
ZXN0aW9uKHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAg
ICAgKi8KKyAgICB1cGRhdGVTdWdnZXN0aW9uc1Nvb246IGZ1bmN0aW9uKGNvbXBsZXRpb25zKQor
ICAgIHsKKyAgICAgICAgaWYgKCEoIl9zdWdnZXN0VGltZW91dCIgaW4gdGhpcykpCisgICAgICAg
ICAgICB0aGlzLl9zdWdnZXN0VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy51cGRhdGVTdWdnZXN0
aW9ucy5iaW5kKHRoaXMsIGNvbXBsZXRpb25zKSwgMTApOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKi8KKyAgICB1
cGRhdGVTdWdnZXN0aW9uczogZnVuY3Rpb24oY29tcGxldGlvbnMpCisgICAgeworICAgICAgICBp
ZiAoIl9zdWdnZXN0VGltZW91dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0
KHRoaXMuX3N1Z2dlc3RUaW1lb3V0KTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zdWdnZXN0
VGltZW91dDsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9jb21wbGV0aW9uc1JlYWR5KGNvbXBs
ZXRpb25zKTsKKyAgICB9LAorCisgICAgX29uSXRlbU1vdXNlRG93bjogZnVuY3Rpb24odGV4dCwg
ZXZlbnQpCisgICAgeworICAgICAgICBmdW5jdGlvbiByZXNldEZvY3VzZWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5mb2N1c2VkOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5hY2NlcHRTdWdnZXN0aW9uKHRleHQpOworCisgICAgICAgIC8vIEFsbG93IGFsbCBldmVu
dCBoYW5kbGVycyB0byBmaW5pc2ggYmVmb3JlIHJlc2V0dGluZyB0aGUgZm9jdXNlZCBzdGF0ZS4K
KyAgICAgICAgc2V0VGltZW91dChyZXNldEZvY3VzZWQuYmluZCh0aGlzKSwgMCk7CisgICAgfSwK
KworICAgIF9jcmVhdGVJdGVtRWxlbWVudDogZnVuY3Rpb24ocHJlZml4LCB0ZXh0KQorICAgIHsK
KyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAic3VnZ2VzdC1ib3gtY29udGVudC1pdGVtIHNvdXJj
ZS1jb2RlIjsKKyAgICAgICAgaWYgKHByZWZpeCAmJiBwcmVmaXgubGVuZ3RoICYmICF0ZXh0Lmlu
ZGV4T2YocHJlZml4KSkgeworICAgICAgICAgICAgdmFyIHByZWZpeEVsZW1lbnQgPSBlbGVtZW50
LmNyZWF0ZUNoaWxkKCJzcGFuIiwgInByZWZpeCIpOworICAgICAgICAgICAgcHJlZml4RWxlbWVu
dC50ZXh0Q29udGVudCA9IHByZWZpeDsKKyAgICAgICAgICAgIHZhciBzdWZmaXhFbGVtZW50ID0g
ZWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzdWZmaXgiKTsKKyAgICAgICAgICAgIHN1ZmZp
eEVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBzdWZmaXhFbGVtZW50ID0gZWxlbWVudC5j
cmVhdGVDaGlsZCgic3BhbiIsICJzdWZmaXgiKTsKKyAgICAgICAgICAgIHN1ZmZpeEVsZW1lbnQu
dGV4dENvbnRlbnQgPSB0ZXh0OworICAgICAgICB9CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fb25JdGVtTW91c2VEb3duLmJpbmQodGhpcywgdGV4
dCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfSwKKworICAgIF91cGRh
dGVJdGVtczogZnVuY3Rpb24oaXRlbXMpCisgICAgeworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0
aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuOworICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4
ID0gTWF0aC5taW4oY2hpbGRyZW4ubGVuZ3RoIC0gMSwgdGhpcy5fc2VsZWN0ZWRJbmRleCk7Cisg
ICAgICAgIHZhciBzZWxlY3RlZEl0ZW1UZXh0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleCA+PSAwID8g
Y2hpbGRyZW5bdGhpcy5fc2VsZWN0ZWRJbmRleF0udGV4dENvbnRlbnQgOiBudWxsOworICAgICAg
ICB2YXIgaXRlbUluZGV4ID0gMDsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxl
bWVudC5maXJzdENoaWxkOworICAgICAgICB2YXIgY2hpbGRUZXh0ID0gY2hpbGQgPyBjaGlsZC50
ZXh0Q29udGVudCA6IG51bGw7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkRWxlbWVudDsKKworICAgICAg
ICB2YXIgdXNlckVudGVyZWRUZXh0ID0gdGhpcy5fdGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICB2YXIgaXRlbSA9IGl0ZW1zW2ldOworICAgICAgICAgICAgdmFyIGN1cnJlbnRJdGVt
RWxlbWVudCA9IHRoaXMuX2NyZWF0ZUl0ZW1FbGVtZW50KHVzZXJFbnRlcmVkVGV4dCwgaXRlbSk7
CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRJdGVt
RWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsK
KyAgICB9LAorCisgICAgX3VwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgLy8gRklYTUU6IG1pZ2h0IHdhbnQgc29tZSBvcHRpbWl6YXRpb24gaWYgYmVjb21lcyBhIGJv
dHRsZW5lY2suCisgICAgICAgIGZvciAodmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5m
aXJzdENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykgeworICAgICAgICAg
ICAgaWYgKGNoaWxkICE9PSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCisgICAgICAgICAgICAgICAg
Y2hpbGQucmVtb3ZlU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVj
dGVkRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlv
bnMKKyAgICAgKi8KKyAgICBfY29tcGxldGlvbnNSZWFkeTogZnVuY3Rpb24oY29tcGxldGlvbnMp
CisgICAgeworICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgp
IHsKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl91cGRhdGVJdGVtcyhjb21wbGV0aW9ucyk7CisgICAgICAgIHRo
aXMuX3VwZGF0ZUJveFBvc2l0aW9uKCk7CisgICAgICAgIGlmICh0aGlzLmNvbnRlbnRFbGVtZW50
LmNoaWxkcmVuLmxlbmd0aCAmJiAodGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGgg
PiAxIHx8IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGRyZW5bMF0udGV4dENvbnRlbnQubGVuZ3Ro
ICE9PSB0aGlzLl90ZXh0UHJvbXB0Ll91c2VyRW50ZXJlZFRleHQubGVuZ3RoKSkgeworICAgICAg
ICAgICAgLy8gV2lsbCBub3QgYmUgc2hvd24gaWYgYSBzb2xlIHN1Z2dlc3Rpb24gaXMgZXF1YWwg
dG8gdGhlIHVzZXIgaW5wdXQuCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFz
cygidmlzaWJsZSIpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuZm9jdXNlZDsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICB9LAorCisgICAgdXBLZXlQcmVz
c2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vblByZXZp
b3VzSXRlbShldmVudCk7CisgICAgfSwKKworICAgIGRvd25LZXlQcmVzc2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vbk5leHRJdGVtKGV2ZW50KTsKKyAg
ICB9LAorCisgICAgZW50ZXJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLmFjY2VwdFN1Z2dlc3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgdGFiS2V5UHJlc3NlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBzcGFjZUtleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVTdWdnZXN0aW9uc1Nvb24oKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVV0aWxzLmpzCmluZGV4IGZmN2ViMjMuLjNhMDQ5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKQEAgLTIyMCw2ICsyMjAsMTIgQEAg
V2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcgPSBmdW5jdGlvbihjb21taXRIYW5kbGVyLCBjYW5j
ZWxIYW5kbGVyLCBjb250ZXh0KQogICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVtZW50LCopfHVu
ZGVmaW5lZH0KICAgICAgKi8KICAgICB0aGlzLmN1c3RvbUZpbmlzaEhhbmRsZXI7CisKKyAgICAv
KioKKyAgICAgKiBIYW5kbGVzIHRoZSBmb2N1cyBsb3NzICgiYmx1ciIgZXZlbnQpLCBvcHRpb25h
bGx5IHJlc3RvcmluZyB0aGUgZm9jdXMgd2hlbmV2ZXIgbmVjZXNzYXJ5CisgICAgICogQHR5cGUg
e2Z1bmN0aW9uKEV2ZW50PSl8dW5kZWZpbmVkfQorICAgICAqLworICAgIHRoaXMuZm9jdXNSZXN0
b3JlcjsKIH0KIAogV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcucHJvdG90eXBlID0gewpAQCAt
MjM2LDYgKzI0MiwxMSBAQCBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZy5wcm90b3R5cGUgPSB7
CiAgICAgc2V0Q3VzdG9tRmluaXNoSGFuZGxlcjogZnVuY3Rpb24oY3VzdG9tRmluaXNoSGFuZGxl
cikKICAgICB7CiAgICAgICAgIHRoaXMuY3VzdG9tRmluaXNoSGFuZGxlciA9IGN1c3RvbUZpbmlz
aEhhbmRsZXI7CisgICAgfSwKKworICAgIHNldEZvY3VzUmVzdG9yZXI6IGZ1bmN0aW9uKGZvY3Vz
UmVzdG9yZXIpCisgICAgeworICAgICAgICB0aGlzLmZvY3VzUmVzdG9yZXIgPSBmb2N1c1Jlc3Rv
cmVyOwogICAgIH0KIH0KIApAQCAtMjUyLDYgKzI2Myw3IEBAIFdlYkluc3BlY3Rvci5zdGFydEVk
aXRpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBjb25maWcpCiAgICAgdmFyIGNvbW1pdHRlZENhbGxi
YWNrID0gY29uZmlnLmNvbW1pdEhhbmRsZXI7CiAgICAgdmFyIGNhbmNlbGxlZENhbGxiYWNrID0g
Y29uZmlnLmNhbmNlbEhhbmRsZXI7CiAgICAgdmFyIHBhc3RlQ2FsbGJhY2sgPSBjb25maWcucGFz
dGVIYW5kbGVyOworICAgIHZhciBmb2N1c1Jlc3RvcmVyID0gY29uZmlnLmZvY3VzUmVzdG9yZXI7
CiAgICAgdmFyIGNvbnRleHQgPSBjb25maWcuY29udGV4dDsKICAgICB2YXIgb2xkVGV4dCA9IGdl
dENvbnRlbnQoZWxlbWVudCk7CiAgICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKQEAgLTI2Miw4
ICsyNzQsMjUgQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQs
IGNvbmZpZykKICAgICBpZiAoZWxlbWVudC50YWJJbmRleCA8IDApCiAgICAgICAgIGVsZW1lbnQu
dGFiSW5kZXggPSAwOwogCi0gICAgZnVuY3Rpb24gYmx1ckV2ZW50TGlzdGVuZXIoKSB7Ci0gICAg
ICAgIGVkaXRpbmdDb21taXR0ZWQuY2FsbChlbGVtZW50KTsKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0V2ZW50PX0gZXZlbnQKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBibHVyRXZlbnRMaXN0ZW5l
cihldmVudCkgeworICAgICAgICB2YXIgb2xkUmFuZ2U7CisgICAgICAgIGlmIChmb2N1c1Jlc3Rv
cmVyKQorICAgICAgICAgICAgb2xkUmFuZ2UgPSBmb2N1c1Jlc3RvcmVyKGV2ZW50KTsKKworICAg
ICAgICBpZiAoIW9sZFJhbmdlKQorICAgICAgICAgICAgZWRpdGluZ0NvbW1pdHRlZC5jYWxsKGVs
ZW1lbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChldmVudCkgeworICAgICAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc2VsZWN0
aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92
ZUFsbFJhbmdlcygpOworICAgICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKG9sZFJhbmdlKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGdldENvbnRlbnQoZWxlbWVudCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmlu
ZGV4IGY4N2I0NjcuLjc3OTU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTI1MDEsMyArMjUwMSwxODAgQEAgYS53b3JrZXIt
aXRlbTpob3ZlciB7CiAgICAgcGFkZGluZzogMTBweDsKICAgICB3aGl0ZS1zcGFjZTogcHJlLXdy
YXA7CiB9CisKKy8qIFN1Z2dlc3QgQm94ICovCisKKy5zdWdnZXN0LWJveCB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7CisgICAgZGlzcGxh
eTogbm9uZTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBwYWRkaW5nOiAycHg7
CisgICAgei1pbmRleDogMTAwOworICAgIC13ZWJraXQtYm94LXNoYWRvdzogMTBweCAxMHB4IDhw
eCByZ2JhKDQwLCA0MCwgNDAsIDAuNDApOworfQorCisuc3VnZ2VzdC1ib3gudmlzaWJsZSB7Cisg
ICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy5zdWdnZXN0LWJveCAuY29udGFpbmVyIHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6
IDA7CisgICAgYm90dG9tOiAwOworICAgIG1hcmdpbjogMnB4IDA7CisgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgIG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5zdWdnZXN0LWJveC1jb250ZW50
LWl0ZW0geworICAgIHBhZGRpbmc6IDFweDsKKyAgICBtYXJnaW46IDA7CisgICAgZm9udC1zaXpl
OiAxMXB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBz
aXM7CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cit9CisKKy5zdWdnZXN0LWJv
eC1jb250ZW50LWl0ZW0gLnByZWZpeCB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5z
dWdnZXN0LWJveC1jb250ZW50LWl0ZW0uc2VsZWN0ZWQgeworICAgIGJvcmRlcjogMXB4IHNvbGlk
IHJnYigwLCAwLCAwKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7
Cit9CisKKy5zdWdnZXN0LWJveC1jb250ZW50LWl0ZW06aG92ZXI6bm90KC5zZWxlY3RlZCkgewor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsKK30KKworLyogQ1NTIHBy
b3BlcnR5IG5hbWUvdmFsdWUgc3VnZ2VzdGlvbiAicG9wdXAiIHN0eWxlICovCisKKy5zdWdnZXN0
LWJveC5jc3Mtc3VnZ2VzdCB7CisgICAgYm9yZGVyLXJhZGl1czogMCA1cHggNXB4IDVweDsKKyAg
ICBtYXJnaW4tbGVmdDogLTFweDsKKyAgICBib3JkZXItY29sb3I6IHJnYig2NiUsIDY2JSwgNjYl
KTsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDhweCA4cHggNnB4IHJnYmEoNDAsIDQwLCA0MCwg
MC40MCk7Cit9CisKKy5zdWdnZXN0LWJveC5jc3Mtc3VnZ2VzdC5hYm92ZS1hbmNob3IgeworICAg
Ym9yZGVyLXJhZGl1czogNXB4IDVweCA1cHggMDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDhw
eCAtOHB4IDZweCByZ2JhKDQwLCA0MCwgNDAsIDAuNDApOworfQorCisuc3VnZ2VzdC1ib3guY3Nz
LXN1Z2dlc3QgLmNvbnRlbnQgeworICAgIG1hcmdpbjogM3B4OworfQorCisKKy8qIEN1c3RvbSBw
b3B1cCBzY3JvbGxlcnMgKi8KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQt
c2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMTFweDsKKyAgICBoZWlnaHQ6IDExcHg7Cit9CisKKy5j
dXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIs
IC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVy
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Ny
b2xsIDo6LXdlYmtpdC1yZXNpemVyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13
ZWJraXQtcmVzaXplciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLmN1c3RvbS1wb3B1cC1o
b3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiwgLmN1c3RvbS1wb3B1
cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24geworICAgIGRpc3Bs
YXk6IG5vbmU7Cit9CisKKy8qIEN1c3RvbSBIb3Jpem9udGFsIFNjcm9sbGJhciBTdHlsZXMgKi8K
KworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhv
cml6b250YWw6Y29ybmVyLXByZXNlbnQgeworICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKK30K
KworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRo
dW1iOmhvcml6b250YWwgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3Ro
dW1iSG9yaXoucG5nKSAwIDExIDAgMTE7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsK
KyAgICBib3JkZXItd2lkdGg6IDAgMTFweDsKKyAgICBtaW4td2lkdGg6IDIwcHg7Cit9CisKKy5j
dXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpo
b3Jpem9udGFsOmhvdmVyIHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
aHVtYkhvdmVySG9yaXoucG5nKSAwIDExIDAgMTE7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpv
bnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmFjdGl2ZSB7
CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVIb3Jpei5w
bmcpIDAgMTEgMCAxMTsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6c3RhcnQgeworICAgIG1hcmdp
bi1sZWZ0OiA1cHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Vi
a2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZCB7CisgICAgbWFyZ2luLXJp
Z2h0OiA1cHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0
LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZDpjb3JuZXItcHJlc2VudCB7Cisg
ICAgbWFyZ2luLXJpZ2h0OiA0cHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3Jv
bGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmRlY3JlbWVudCB7
CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tIb3Jpei5wbmcpIDAg
MTEgMCAxMTsKKyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJvcmRlci13aWR0
aDogMCAwIDAgMTFweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6aW5jcmVtZW50IHsKKyAgICAt
d2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6LnBuZykgMCAxMSAwIDEx
OworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRoOiAwIDEx
cHggMCAwOworfQorCisvKiBDdXN0b20gVmVydGljYWwgU2Nyb2xsYmFyIFN0eWxlcyAqLworCisu
Y3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOnZlcnRpY2Fs
OmNvcm5lci1wcmVzZW50IHsKKyAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOworfQorCisuY3Vz
dG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRp
Y2FsIHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYlZlcnQucG5n
KSAxMSAwIDExIDA7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXIt
d2lkdGg6IDExcHggMDsKKyAgICBtaW4taGVpZ2h0OiAyMHB4OworfQorCisuY3VzdG9tLXBvcHVw
LXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmhvdmVy
IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvdmVyVmVydC5w
bmcpIDExIDAgMTEgMDsKK30KKworLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Vi
a2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgeworICAgIC13ZWJraXQtYm9yZGVy
LWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZlVmVydC5wbmcpIDExIDAgMTEgMDsKK30KKwor
LmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1w
aWVjZTp2ZXJ0aWNhbDpzdGFydCB7CisgICAgbWFyZ2luLXRvcDogNXB4OworfQorCisuY3VzdG9t
LXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZl
cnRpY2FsOmVuZCB7CisgICAgbWFyZ2luLWJvdHRvbTogNXB4OworfQorCisuY3VzdG9tLXBvcHVw
LXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2Fs
OmVuZDpjb3JuZXItcHJlc2VudCB7CisgICAgbWFyZ2luLWJvdHRvbTogNHB4OworfQorCisuY3Vz
dG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNl
OnZlcnRpY2FsOmRlY3JlbWVudCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFn
ZXMvdHJhY2tWZXJ0LnBuZykgMTEgMCAxMSAwOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJl
bnQ7CisgICAgYm9yZGVyLXdpZHRoOiAxMXB4IDAgMCAwOworfQorCisuY3VzdG9tLXBvcHVwLXZl
cnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmlu
Y3JlbWVudCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0
LnBuZykgMTEgMCAxMSAwOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9y
ZGVyLXdpZHRoOiAwIDAgMTFweCAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9wb3BvdmVyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvcG9wb3Zlci5jc3MKaW5kZXggNzM5MjFhNy4uY2YxNGVkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9wb3BvdmVyLmNzcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzCkBAIC04OCwxMTQgKzg4
LDMgQEAKICAgICBtYXJnaW4tcmlnaHQ6IC0yNXB4OwogICAgIGJhY2tncm91bmQtcG9zaXRpb246
IDAgLTU3cHg7CiB9Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXIgewotICAgIHdpZHRo
OiAxMXB4OwotICAgIGhlaWdodDogMTFweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9s
bGJhci1jb3JuZXIgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtp
dC1yZXNpemVyIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0vKiBIb3Jpem9udGFsIFNjcm9s
bGJhciBTdHlsZXMgKi8KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhcjpob3Jpem9udGFs
OmNvcm5lci1wcmVzZW50IHsKLSAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7Ci19Ci0KLS5wb3Bv
dmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7Ci0gICAgLXdlYmtpdC1i
b3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLSAgICBi
b3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwotICAgIGJvcmRlci13aWR0aDogMCAxMXB4OwotICAg
IG1pbi13aWR0aDogMjBweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVt
Yjpob3Jpem9udGFsOmhvdmVyIHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdl
cy90aHVtYkhvdmVySG9yaXoucG5nKSAwIDExIDAgMTE7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtp
dC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbDphY3RpdmUgewotICAgIC13ZWJraXQtYm9yZGVy
LWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZlSG9yaXoucG5nKSAwIDExIDAgMTE7Ci19Ci0K
LS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpzdGFy
dCB7Ci0gICAgbWFyZ2luLWxlZnQ6IDVweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9s
bGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZCB7Ci0gICAgbWFyZ2luLXJpZ2h0OiA1cHg7
Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRh
bDplbmQ6Y29ybmVyLXByZXNlbnQgewotICAgIG1hcmdpbi1yaWdodDogNHB4OwotfQotCi0ucG9w
b3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZGVjcmVtZW50
IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6LnBuZykg
MCAxMSAwIDExOwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdp
ZHRoOiAwIDAgMCAxMXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNr
LXBpZWNlOmhvcml6b250YWw6aW5jcmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTog
dXJsKEltYWdlcy90cmFja0hvcml6LnBuZykgMCAxMSAwIDExOwotICAgIGJvcmRlci1jb2xvcjog
dHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAwIDExcHggMCAwOwotfQotCi0vKiBWZXJ0
aWNhbCBTY3JvbGxiYXIgU3R5bGVzICovCi0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJh
cjp2ZXJ0aWNhbDpjb3JuZXItcHJlc2VudCB7Ci0gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsK
LX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7Ci0gICAg
LXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJWZXJ0LnBuZykgMTEgMCAxMSAw
OwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAxMXB4
IDA7Ci0gICAgbWluLWhlaWdodDogMjBweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9s
bGJhci10aHVtYjp2ZXJ0aWNhbDpob3ZlciB7Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVy
bChJbWFnZXMvdGh1bWJIb3ZlclZlcnQucG5nKSAxMSAwIDExIDA7Ci19Ci0KLS5wb3BvdmVyIDo6
LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlIHsKLSAgICAtd2Via2l0LWJv
cmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkFjdGl2ZVZlcnQucG5nKSAxMSAwIDExIDA7Ci19
Ci0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpz
dGFydCB7Ci0gICAgbWFyZ2luLXRvcDogNXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Ny
b2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVuZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogNXB4
OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2Fs
OmVuZDpjb3JuZXItcHJlc2VudCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogNHB4OwotfQotCi0ucG9w
b3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmRlY3JlbWVudCB7
Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBuZykgMTEg
MCAxMSAwOwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRo
OiAxMXB4IDAgMCAwOwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBp
ZWNlOnZlcnRpY2FsOmluY3JlbWVudCB7Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJ
bWFnZXMvdHJhY2tWZXJ0LnBuZykgMTEgMCAxMSAwOwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNw
YXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAwIDAgMTFweCAwOwotfQotCi0vKiBGb3JjZWQgU2Ny
b2xsYmFyIE1vZGUgU3R5bGVzICovCi0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0
dG9uIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCBiMzIxMzRiLi40YzcyMzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtMzAx
LDYgKzMwMSwzMSBAQCBFbGVtZW50LnByb3RvdHlwZS5vZmZzZXRSZWxhdGl2ZVRvV2luZG93ID0g
ZnVuY3Rpb24odGFyZ2V0V2luZG93KQogICAgIHJldHVybiBlbGVtZW50T2Zmc2V0OwogfQogCitF
bGVtZW50LnByb3RvdHlwZS5ib3hJbldpbmRvdyA9IGZ1bmN0aW9uKHRhcmdldFdpbmRvdywgcmVs
YXRpdmVQYXJlbnQpCit7CisgICAgdGFyZ2V0V2luZG93ID0gdGFyZ2V0V2luZG93IHx8IHRoaXMu
b3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsKKyAgICB2YXIgYm9keUVsZW1lbnQgPSB0aGlzLm93
bmVyRG9jdW1lbnQuYm9keTsKKyAgICByZWxhdGl2ZVBhcmVudCA9IHJlbGF0aXZlUGFyZW50IHx8
IGJvZHlFbGVtZW50OworCisgICAgdmFyIGFuY2hvckJveCA9IHRoaXMub2Zmc2V0UmVsYXRpdmVU
b1dpbmRvdyh3aW5kb3cpOworICAgIGFuY2hvckJveC53aWR0aCA9IHRoaXMub2Zmc2V0V2lkdGg7
CisgICAgYW5jaG9yQm94LmhlaWdodCA9IHRoaXMub2Zmc2V0SGVpZ2h0OworCisgICAgdmFyIGFu
Y2hvckVsZW1lbnQgPSB0aGlzOworICAgIHdoaWxlIChhbmNob3JFbGVtZW50ICYmIGFuY2hvckVs
ZW1lbnQgIT09IHJlbGF0aXZlUGFyZW50ICYmIGFuY2hvckVsZW1lbnQgIT09IGJvZHlFbGVtZW50
KSB7CisgICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9sbExlZnQpCisgICAgICAgICAgICBh
bmNob3JCb3gueCAtPSBhbmNob3JFbGVtZW50LnNjcm9sbExlZnQ7CisgICAgICAgIGlmIChhbmNo
b3JFbGVtZW50LnNjcm9sbFRvcCkKKyAgICAgICAgICAgIGFuY2hvckJveC55IC09IGFuY2hvckVs
ZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICBhbmNob3JFbGVtZW50ID0gYW5jaG9yRWxlbWVudC5w
YXJlbnRFbGVtZW50OworICAgIH0KKworICAgIHZhciBwYXJlbnRPZmZzZXQgPSByZWxhdGl2ZVBh
cmVudC5vZmZzZXRSZWxhdGl2ZVRvV2luZG93KHdpbmRvdyk7CisgICAgYW5jaG9yQm94LnggLT0g
cGFyZW50T2Zmc2V0Lng7CisgICAgYW5jaG9yQm94LnkgLT0gcGFyZW50T2Zmc2V0Lnk7CisgICAg
cmV0dXJuIGFuY2hvckJveDsKK30KKwogRWxlbWVudC5wcm90b3R5cGUuc2V0VGV4dEFuZFRpdGxl
ID0gZnVuY3Rpb24odGV4dCkKIHsKICAgICB0aGlzLnRleHRDb250ZW50ID0gdGV4dDsK
</data>
<flag name="review"
          id="110380"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112344</attachid>
            <date>2011-10-25 09:14:36 -0700</date>
            <delta_ts>2011-10-26 06:16:58 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>60102</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDA1MjY5MjNjOTU4ZWQ3YjlkNTEyZGFmYmUwZmJiNjAxOTRjOGI3NTgKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDI1
IDE4OjI2OjU2IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFiNjA5MC4uZGQ4
NGM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExMyBAQAogMjAxMS0xMC0yNSAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGF1dG9jb21wbGV0ZSBjb21ib2JveCBmb3IgQ1NTIHN0eWxlIHByb3BlcnR5IG5hbWVzL3ZhbHVl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuY29tcGxldGlvbnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fY29tcGxldGlvbnMucmVjZWl2ZWRQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUu
X2NvbXBsZXRpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUuX3JlcG9ydENvbXBsZXRpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlLl9wb3NpdGlvbkVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3RFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlLmhhbmRsZUtleURvd24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQucHJvdG90eXBlLnJlbW92ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fb25LZXlEb3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmF1dG9Db21wbGV0ZVNvb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNS
ZWFkeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuYXBwbHlT
dWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5h
Y2NlcHRTdWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3Rv
dHlwZS5pc1N1Z2dlc3RCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJv
bXB0LnByb3RvdHlwZS50YWJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LnByb3RvdHlwZS5lbnRlcktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlLnVwS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5wcm90b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgdmlzaWJsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgaGFzU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBl
Ll9vbnNjcm9sbHJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdn
ZXN0Qm94LnByb3RvdHlwZS5fdXBkYXRlQm94UG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX3JlbWVtYmVySW5wdXRSYW5nZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5f
b25ib3htb3VzZWRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5T
dWdnZXN0Qm94LnByb3RvdHlwZS5yZW1vdmVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fYXBwbHlTdWdnZXN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLmFj
Y2VwdFN1Z2dlc3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJldmlvdXNJdGVtKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnVwZGF0ZVN1Z2dlc3Rp
b25zU29vbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnBy
b3RvdHlwZS51cGRhdGVTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25JdGVtTW91c2VEb3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jcmVhdGVJdGVtRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3Rv
dHlwZS5fdXBkYXRlSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3Vn
Z2VzdEJveC5wcm90b3R5cGUuX3VwZGF0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS51cEtl
eVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5w
cm90b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnRhYktleVByZXNzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuc3Bh
Y2VLZXlQcmVzc2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWRpdGluZ0NvbmZpZy5wcm90b3R5cGUuc2V0Q3VzdG9tRmluaXNoSGFuZGxlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZy5wcm90b3R5cGUuc2V0Rm9jdXNSZXN0
b3Jlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmJsdXJFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAoLnN1Z2dlc3Qt
Ym94LmNzcy1zdWdnZXN0KToKKyAgICAgICAgKC5zdWdnZXN0LWJveC5jc3Mtc3VnZ2VzdC5hYm92
ZS1hbmNob3IpOgorICAgICAgICAoLnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0IC5jb250ZW50KToK
KyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9s
bGJhciwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhcik6
CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3Jv
bGxiYXItY29ybmVyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Ny
b2xsYmFyLWNvcm5lcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
IDo6LXdlYmtpdC1yZXNpemVyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJr
aXQtcmVzaXplcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6
LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6
Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6
b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXI6aG9yaXpvbnRhbDpjb3JuZXItcHJlc2Vu
dCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1z
Y3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6
b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbDpob3Zlcik6
CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWI6aG9yaXpvbnRhbDphY3RpdmUpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1o
b3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250
YWw6c3RhcnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kKToKKyAgICAgICAgKC5j
dXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1w
aWVjZTpob3Jpem9udGFsOmVuZDpjb3JuZXItcHJlc2VudCk6CisgICAgICAgICguY3VzdG9tLXBv
cHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9y
aXpvbnRhbDpkZWNyZW1lbnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNj
cm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6aW5jcmVtZW50
KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3Jv
bGxiYXI6dmVydGljYWw6Y29ybmVyLXByZXNlbnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12
ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCk6CisgICAg
ICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRo
dW1iOnZlcnRpY2FsOmhvdmVyKToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Ny
b2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlKToKKyAgICAgICAg
KC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2st
cGllY2U6dmVydGljYWw6c3RhcnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1z
Y3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDplbmQpOgorICAg
ICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10
cmFjay1waWVjZTp2ZXJ0aWNhbDplbmQ6Y29ybmVyLXByZXNlbnQpOgorICAgICAgICAoLmN1c3Rv
bS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2
ZXJ0aWNhbDpkZWNyZW1lbnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3Jv
bGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDppbmNyZW1lbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3M6CisgICAgICAgICgucG9w
b3Zlci5yaWdodC1ib3R0b20tYXJyb3cgLmFycm93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL3RleHRQcm9tcHQuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5zdWdnZXN0LWJveCk6Cisg
ICAgICAgICguc3VnZ2VzdC1ib3gudmlzaWJsZSk6CisgICAgICAgICguc3VnZ2VzdC1ib3ggLmNv
bnRhaW5lcik6CisgICAgICAgICguc3VnZ2VzdC1ib3gtY29udGVudC1pdGVtKToKKyAgICAgICAg
KC5zdWdnZXN0LWJveC1jb250ZW50LWl0ZW0gLnByZWZpeCk6CisgICAgICAgICguc3VnZ2VzdC1i
b3gtY29udGVudC1pdGVtLnNlbGVjdGVkKToKKyAgICAgICAgKC5zdWdnZXN0LWJveC1jb250ZW50
LWl0ZW06aG92ZXI6bm90KC5zZWxlY3RlZCkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvdXRpbGl0aWVzLmpzOgorICAgICAgICAoc2V0dXBQcm90b3R5cGVVdGlsaXRpZXMuRWxlbWVu
dC5wcm90b3R5cGUuYm94SW5XaW5kb3cpOgorCisyMDExLTEwLTI1ICBBbGV4YW5kZXIgUGF2bG92
ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0Nocm9t
aXVtXSBBdWRpdHMgcGFuZWwgY29udGV4dCBtZW51IGZvciBsaW5rcyBub3Qgd29ya2luZyBwcm9w
ZXJseQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4
MTMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZjYWZjYjkuLmIyOWJhNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTYzOTIsNiArNjM5Miw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9yZXNvdXJjZVZpZXcuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3Jl
c291cmNlc1BhbmVsLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9zY3Jp
cHRzUGFuZWwuY3NzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRQcm9t
cHQuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3Nz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3RpbWVsaW5lUGFuZWwuY3NzJywK
ICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggZjU5ODA2OS4uZmQzNzUzYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY4ODk3LDYgKzY4ODk3LDEwIEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXHRleHRQcm9tcHQuY3NzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUZXh0UHJvbXB0LmpzIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggZjRmODQzMi4uMDc3MzIyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC02NSw3
ICs2NSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGhpZGVDb250ZXh0
U2VsZWN0b3IpCiAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9t
cHRFbGVtZW50KTsKICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpKTsKIAotICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0KHRoaXMucHJvbXB0RWxlbWVudCwgdGhpcy5jb21wbGV0aW9ucy5iaW5k
KHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAiLiIpOworICAgIHRoaXMucHJvbXB0
ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJvbXB0RWxlbWVudCwgdGhpcy5j
b21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAiLiIsIGZh
bHNlLCBmYWxzZSwgeyBjbGFzc05hbWU6ICJjc3Mtc3VnZ2VzdCIgfSk7CiAgICAgdGhpcy5wcm9t
cHQuaGlzdG9yeSA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb25zb2xlSGlzdG9yeS5nZXQoKTsK
IAogICAgIHRoaXMudG9wR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cChudWxs
KTsKQEAgLTEwMyw2ICsxMDMsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcgPSBmdW5jdGlv
bihoaWRlQ29udGV4dFNlbGVjdG9yKQogCiAgICAgdGhpcy5maWx0ZXIodGhpcy5hbGxFbGVtZW50
LCBmYWxzZSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKKyAgICB0aGlzLnJlZ2lz
dGVyUmVxdWlyZWRDU1MoInRleHRQcm9tcHQuY3NzIik7CiAKICAgICB0aGlzLm1lc3NhZ2VzRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRN
ZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCkBAIC0zMzEsMTYgKzMzMiwxNiBAQCBXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9saW5raWZp
ZXIucmVzZXQoKTsKICAgICB9LAogCi0gICAgY29tcGxldGlvbnM6IGZ1bmN0aW9uKHdvcmRSYW5n
ZSwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQorICAgIGNvbXBsZXRp
b25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGZvcmNlLCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2sp
CiAgICAgewogICAgICAgICAvLyBQYXNzIGxlc3Mgc3RvcCBjaGFyYWN0ZXJzIHRvIHJhbmdlT2ZX
b3JkIHNvIHRoZSByYW5nZSB3aWxsIGJlIGEgbW9yZSBjb21wbGV0ZSBleHByZXNzaW9uLgogICAg
ICAgICB2YXIgZXhwcmVzc2lvblJhbmdlID0gd29yZFJhbmdlLnN0YXJ0Q29udGFpbmVyLnJhbmdl
T2ZXb3JkKHdvcmRSYW5nZS5zdGFydE9mZnNldCwgRXhwcmVzc2lvblN0b3BDaGFyYWN0ZXJzLCB0
aGlzLnByb21wdEVsZW1lbnQsICJiYWNrd2FyZCIpOwogICAgICAgICB2YXIgZXhwcmVzc2lvblN0
cmluZyA9IGV4cHJlc3Npb25SYW5nZS50b1N0cmluZygpOwogICAgICAgICB2YXIgcHJlZml4ID0g
d29yZFJhbmdlLnRvU3RyaW5nKCk7Ci0gICAgICAgIHRoaXMuX2NvbXBsZXRpb25zKGV4cHJlc3Np
b25TdHJpbmcsIHByZWZpeCwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNr
KTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMoZXhwcmVzc2lvblN0cmluZywgcHJlZml4LCBm
b3JjZSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKTsKICAgICB9LAogCi0gICAgX2NvbXBsZXRp
b25zOiBmdW5jdGlvbihleHByZXNzaW9uU3RyaW5nLCBwcmVmaXgsIGJlc3RNYXRjaE9ubHksIGNv
bXBsZXRpb25zUmVhZHlDYWxsYmFjaykKKyAgICBfY29tcGxldGlvbnM6IGZ1bmN0aW9uKGV4cHJl
c3Npb25TdHJpbmcsIHByZWZpeCwgZm9yY2UsIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIHZhciBsYXN0SW5kZXggPSBleHByZXNzaW9uU3RyaW5nLmxlbmd0aCAtIDE7
CiAKQEAgLTM1MCwxMiArMzUxLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKGRvdE5vdGF0aW9uIHx8IGJyYWNrZXROb3RhdGlvbikKICAgICAg
ICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3RyaW5nLnN1YnN0cigwLCBsYXN0
SW5kZXgpOwogCi0gICAgICAgIGlmICghZXhwcmVzc2lvblN0cmluZyAmJiAhcHJlZml4KSB7Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2soW10pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhcnNlSW50KGV4cHJlc3Npb25TdHJpbmcs
IDEwKSA9PSBleHByZXNzaW9uU3RyaW5nKSB7CisgICAgICAgIGlmIChleHByZXNzaW9uU3RyaW5n
ICYmIHBhcnNlSW50KGV4cHJlc3Npb25TdHJpbmcsIDEwKSA9PSBleHByZXNzaW9uU3RyaW5nKSB7
CiAgICAgICAgICAgICAvLyBVc2VyIGlzIGVudGVyaW5nIGZsb2F0IHZhbHVlLCBkbyBub3Qgc3Vn
Z2VzdCBhbnl0aGluZy4KICAgICAgICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhbXSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MjQsMTEgKzQyMCwxMSBAQCBXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY29tbWFuZExpbmVBUEkubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXNbY29tbWFuZExpbmVBUElbaV1dID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHRoaXMuX3JlcG9ydENvbXBsZXRpb25zKGJlc3RNYXRjaE9ubHksIGNvbXBsZXRp
b25zUmVhZHlDYWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXROb3RhdGlvbiwgcHJlZml4LCBP
YmplY3Qua2V5cyhwcm9wZXJ0eU5hbWVzKSk7CisgICAgICAgICAgICB0aGlzLl9yZXBvcnRDb21w
bGV0aW9ucyhjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2ssIGRvdE5vdGF0aW9uLCBicmFja2V0Tm90
YXRpb24sIHByZWZpeCwgT2JqZWN0LmtleXMocHJvcGVydHlOYW1lcykpOwogICAgICAgICB9CiAg
ICAgfSwKIAotICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rpb24oYmVzdE1hdGNoT25seSwg
Y29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwgYnJhY2tldE5vdGF0aW9uLCBw
cmVmaXgsIHByb3BlcnRpZXMpIHsKKyAgICBfcmVwb3J0Q29tcGxldGlvbnM6IGZ1bmN0aW9uKGNv
bXBsZXRpb25zUmVhZHlDYWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXROb3RhdGlvbiwgcHJl
Zml4LCBwcm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmIChicmFja2V0Tm90YXRpb24pIHsKICAgICAg
ICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICYmIHByZWZpeFswXSA9PT0gIiciKQogICAgICAgICAg
ICAgICAgIHZhciBxdW90ZVVzZWQgPSAiJyI7CkBAIC00NTMsMTIgKzQ0OSwxMCBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAocHJvcGVy
dHkubGVuZ3RoIDwgcHJlZml4Lmxlbmd0aCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS5pbmRleE9mKHByZWZpeCkgIT09IDApCisgICAgICAgICAg
ICBpZiAocHJlZml4Lmxlbmd0aCAmJiBwcm9wZXJ0eS5pbmRleE9mKHByZWZpeCkgIT09IDApCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHJlc3VsdHMucHVzaChwcm9w
ZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoYmVzdE1hdGNoT25seSkKLSAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0
cyk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNQYW5lbC5qcwppbmRleCAxNzRmMDAwLi40MmM5MWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0zNiw2
ICszNiw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rpb24oKQogewogICAg
IFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJlbGVtZW50cyIpOwogICAgIHRoaXMucmVn
aXN0ZXJSZXF1aXJlZENTUygiZWxlbWVudHNQYW5lbC5jc3MiKTsKKyAgICB0aGlzLnJlZ2lzdGVy
UmVxdWlyZWRDU1MoInRleHRQcm9tcHQuY3NzIik7CiAgICAgdGhpcy5zZXRIaWRlT25EZXRhY2go
KTsKIAogICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9w
b3Zlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwpp
bmRleCA2NGE5ZjcyMi4uNGJmZDZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUG9wb3Zlci5qcwpAQCAtMzUsNyArMzUsNyBAQAogV2ViSW5zcGVjdG9yLlBvcG92
ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyKQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAi
cG9wb3ZlciI7CisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1c3RvbS1w
b3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIjsKIAog
ICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFycm93IjsKQEAg
LTExMywxNyArMTEzLDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAg
ICAgICBjb25zdCB0b3RhbFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CiAgICAgICAgIGNvbnN0
IHRvdGFsSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogCi0gICAgICAgIHZhciBhbmNob3JC
b3ggPSBhbmNob3JFbGVtZW50Lm9mZnNldFJlbGF0aXZlVG9XaW5kb3cod2luZG93KTsKLSAgICAg
ICAgYW5jaG9yQm94LndpZHRoID0gYW5jaG9yRWxlbWVudC5vZmZzZXRXaWR0aDsKLSAgICAgICAg
YW5jaG9yQm94LmhlaWdodCA9IGFuY2hvckVsZW1lbnQub2Zmc2V0SGVpZ2h0OwotICAgICAgICB3
aGlsZSAoYW5jaG9yRWxlbWVudCAmJiBhbmNob3JFbGVtZW50ICE9PSBhbmNob3JFbGVtZW50Lm93
bmVyRG9jdW1lbnQuYm9keSkgewotICAgICAgICAgICAgaWYgKGFuY2hvckVsZW1lbnQuc2Nyb2xs
TGVmdCkKLSAgICAgICAgICAgICAgICBhbmNob3JCb3gueCAtPSBhbmNob3JFbGVtZW50LnNjcm9s
bExlZnQ7Ci0gICAgICAgICAgICBpZiAoYW5jaG9yRWxlbWVudC5zY3JvbGxUb3ApCi0gICAgICAg
ICAgICAgICAgYW5jaG9yQm94LnkgLT0gYW5jaG9yRWxlbWVudC5zY3JvbGxUb3A7Ci0gICAgICAg
ICAgICBhbmNob3JFbGVtZW50ID0gYW5jaG9yRWxlbWVudC5wYXJlbnRFbGVtZW50OwotICAgICAg
ICB9Ci0KKyAgICAgICAgdmFyIGFuY2hvckJveCA9IGFuY2hvckVsZW1lbnQuYm94SW5XaW5kb3co
d2luZG93KTsKICAgICAgICAgdmFyIG5ld0VsZW1lbnRQb3NpdGlvbiA9IHsgeDogMCwgeTogMCwg
d2lkdGg6IHByZWZlcnJlZFdpZHRoICsgc2Nyb2xsZXJXaWR0aCwgaGVpZ2h0OiBwcmVmZXJyZWRI
ZWlnaHQgfTsKIAogICAgICAgICB2YXIgdmVydGljYWxBbGlnbm1lbnQ7CkBAIC0xNzEsNyArMTYx
LDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhp
cy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCArPSBhbmNob3JCb3gud2lkdGggLyAyOwog
ICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyICIg
KyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1lbnQgKyAiLWFycm93
IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyIGN1c3RvbS1wb3B1
cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsICIgKyB2ZXJ0
aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1lbnQgKyAiLWFycm93IjsKICAg
ICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQobmV3RWxlbWVudFBvc2l0aW9uLnggLSBib3Jk
ZXJXaWR0aCwgbmV3RWxlbWVudFBvc2l0aW9uLnkgLSBib3JkZXJXaWR0aCk7CiAgICAgICAgIHRo
aXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0VsZW1lbnRQb3NpdGlvbi53aWR0aCArIGJvcmRl
cldpZHRoICogMiArICJweCI7CiAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBu
ZXdFbGVtZW50UG9zaXRpb24uaGVpZ2h0ICsgYm9yZGVyV2lkdGggKiAyICsgInB4IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzCmluZGV4IGE3YmI0MWMuLjNiYTM0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTA3LDcg
KzEwNyw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Db2xvckZvcm1hdCA9IHsK
ICAgICBIU0xBOiAiaHNsYSIKIH0KIAotV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0
eWxlVmFsdWVEZWxpbWl0ZXJzID0gIiBcdFxuXCInOjssLygpIjsKK1dlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCki
OwogCiAKIC8vIEtlZXAgaW4gc3luYyB3aXRoIFJlbmRlclN0eWxlQ29uc3RhbnRzLmggUHNldWRv
SWQgZW51bS4gQXJyYXkgYmVsb3cgY29udGFpbnMgcHNldWRvIGlkIG5hbWVzIGZvciBjb3JyZXNw
b25kaW5nIGVudW0gaW5kZXhlcy4KQEAgLTE4NzUsMTggKzE4NzUsMzEgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAo
aXNFbnRlcktleShldmVudCkgfHwgaXNGaWVsZElucHV0VGVybWluYXRlZCkgewogICAgICAgICAg
ICAgICAgIC8vIEVudGVyIG9yIGNvbG9uIChmb3IgbmFtZSkvc2VtaWNvbG9uIG91dHNpZGUgb2Yg
c3RyaW5nIChmb3IgdmFsdWUpLgogICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIHRoaXMuX3Byb21w
dC5oYW5kbGVLZXlEb3duKGV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWZvcndhcmQiOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlz
LkVzYy5jb2RlIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMUIiKQotICAgICAgICAg
ICAgICAgIHJldHVybiAiY2FuY2VsIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFpc0VkaXRpbmdO
YW1lICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmIGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0LktleXMuQmFja3NwYWNlLmNvZGUpIHsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
S2V5cy5Fc2MuY29kZSB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDFCIikgeworICAg
ICAgICAgICAgICAgIGlmICh0aGlzLl9wcm9tcHQuaGFuZGxlS2V5RG93bihldmVudCkpIC8vIEhp
ZGUgc3VnZ2VzdCBib3ggLSBkbyBub3QgY2FuY2VsLgorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICByZXR1cm4gImNhbmNlbCI7IC8vIE9ubHkgY2FuY2VsIHRo
ZSBlZGl0b3Igd2hlbiB0aGUgc3VnZ2VzdCBib3ggaXMgbm90IGFjdGl2ZS4KKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoIWlzRWRpdGluZ05hbWUgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgZXZlbnQu
a2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5CYWNrc3BhY2Uu
Y29kZSkgewogICAgICAgICAgICAgICAgIC8vIEZvciBhIG5ldyBwcm9wZXJ0eSwgd2hlbiBCYWNr
c3BhY2UgaXMgcHJlc3NlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIG5ldyBwcm9wZXJ0eSB2YWx1ZSwg
bW92ZSBiYWNrIHRvIHRoZSBwcm9wZXJ0eSBuYW1lLgogICAgICAgICAgICAgICAgIHZhciBzZWxl
Y3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dGlvbi5pc0NvbGxhcHNlZCAmJiAhc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAibW92ZS1iYWNrd2FyZCI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDA5IikgLy8gVGFiIGtleS4KKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAwOSIpIHsg
Ly8gVGFiIGtleS4KKyAgICAgICAgICAgICAgICAvLyBUYWIgYWNjZXB0cyB0aGUgcHJvcGVydHkg
bmFtZSBzdWdnZXN0aW9uL2NvbXBsZXRpb24gYW5kIHRyYW5zaXRpb25zIHRvIHRoZSB2YWx1ZSBm
aWVsZC4KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJvbXB0LmhhbmRsZUtleURvd24oZXZl
bnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAgICByZXR1
cm4gIm1vdmUtIiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9wcm9tcHQuaGFuZGxlS2V5RG93bihl
dmVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBwYXN0ZUhhbmRsZXIoY29udGV4
dCwgZXZlbnQpCkBAIC0xOTE0LDYgKzE5MjcsMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gIm1vdmUtZm9y
d2FyZCI7CiAgICAgICAgIH0KIAorICAgICAgICBmdW5jdGlvbiBmb2N1c1Jlc3RvcmVyKGV2ZW50
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKHRoaXMuX3Byb21wdCAmJiB0aGlzLl9w
cm9tcHQuc3VnZ2VzdEJveCAmJiB0aGlzLl9wcm9tcHQuc3VnZ2VzdEJveC5mb2N1c2VkKSA/IHRo
aXMuX3Byb21wdC5zdWdnZXN0Qm94LmlucHV0UmFuZ2UgOiBudWxsOworICAgICAgICB9CisKICAg
ICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRleHQ7CiAKICAgICAgICAgdGhpcy5f
cGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGUgPSB0cnVlOwpAQCAtMTkyMyw5ICsxOTQxLDEwIEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgY29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmlnKHRoaXMuZWRp
dGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLmVkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlz
KSwgY29udGV4dCk7CiAgICAgICAgIGNvbmZpZy5zZXRDdXN0b21GaW5pc2hIYW5kbGVyKG5hbWVW
YWx1ZUZpbmlzaEhhbmRsZXIuYmluZCh0aGlzLCBjb250ZXh0LCBpc0VkaXRpbmdOYW1lKSk7CiAg
ICAgICAgIGNvbmZpZy5zZXRQYXN0ZUhhbmRsZXIoaXNFZGl0aW5nTmFtZSA/IHBhc3RlSGFuZGxl
ci5iaW5kKHRoaXMsIGNvbnRleHQpIDogbnVsbCk7CisgICAgICAgIGNvbmZpZy5zZXRGb2N1c1Jl
c3RvcmVyKGZvY3VzUmVzdG9yZXIuYmluZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5z
dGFydEVkaXRpbmcoc2VsZWN0RWxlbWVudCwgY29uZmlnKTsKIAotICAgICAgICB0aGlzLl9wcm9t
cHQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0
KHNlbGVjdEVsZW1lbnQsIGlzRWRpdGluZ05hbWUgPyBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMuY3NzTmFtZUNvbXBsZXRpb25zIDogV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JQcm9wZXJ0eSh0aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50KSk7CisgICAgICAgIHRo
aXMuX3Byb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVy
dHlQcm9tcHQoc2VsZWN0RWxlbWVudCwgaXNFZGl0aW5nTmFtZSwgaXNFZGl0aW5nTmFtZSA/IFdl
Ykluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgOiBXZWJJbnNwZWN0
b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHRoaXMubmFtZUVsZW1lbnQudGV4
dENvbnRlbnQpLCB0aGlzLl9hcHBseUZyZWVGbG93U3R5bGVUZXh0RWRpdC5iaW5kKHRoaXMsIHRy
dWUpLCB1bmRlZmluZWQpOwogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFu
ZEV4dGVudChzZWxlY3RFbGVtZW50LCAwLCBzZWxlY3RFbGVtZW50LCAxKTsKICAgICB9LAogCkBA
IC0yMjU2LDI2ICsyMjc1LDIxIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwCiAgKiBAY29uc3Ry
dWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVGV4dFByb21wdH0KICAqLwotV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVuY3Rpb24oZWxl
bWVudCwgY3NzQ29tcGxldGlvbnMpCitXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NT
UHJvcGVydHlQcm9tcHQgPSBmdW5jdGlvbihlbGVtZW50LCBpc0VkaXRpbmdOYW1lLCBjc3NDb21w
bGV0aW9ucywgYXBwbHlJdGVtQ2FsbGJhY2ssIGFjY2VwdENhbGxiYWNrKQogewotICAgIFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LmNhbGwodGhpcywgZWxlbWVudCwgdGhpcy5fYnVpbGRQcm9wZXJ0
eUNvbXBsZXRpb25zLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5T
dHlsZVZhbHVlRGVsaW1pdGVycywgdHJ1ZSk7CisgICAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQu
Y2FsbCh0aGlzLCBlbGVtZW50LCB0aGlzLl9idWlsZFByb3BlcnR5Q29tcGxldGlvbnMuYmluZCh0
aGlzKSwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJz
LCB0cnVlLCB0cnVlLCB7IGFwcGx5Q2FsbGJhY2s6IGFwcGx5SXRlbUNhbGxiYWNrLCBhY2NlcHRD
YWxsYmFjazogYWNjZXB0Q2FsbGJhY2ssIGNsYXNzTmFtZTogImNzcy1zdWdnZXN0IiB9KTsKKyAg
ICB0aGlzLl9pc0VkaXRpbmdOYW1lID0gaXNFZGl0aW5nTmFtZTsKICAgICB0aGlzLl9jc3NDb21w
bGV0aW9ucyA9IGNzc0NvbXBsZXRpb25zOwogfQogCiBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBlID0gewotICAgIHVwS2V5UHJlc3NlZDog
ZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9oYW5kbGVOYW1lT3JWYWx1ZVVw
RG93bihldmVudCk7Ci0gICAgfSwKLQotICAgIGRvd25LZXlQcmVzc2VkOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2hhbmRsZU5hbWVPclZhbHVlVXBEb3duKGV2ZW50KTsK
LSAgICB9LAotCiAgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAg
ICAgICB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOworICAgICAgICBpZiAodGhpcy5pc1N1Z2dl
c3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3guYWNjZXB0U3Vn
Z2VzdGlvbigpOworICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9pc0VkaXRpbmdOYW1lOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOwogICAgIH0s
CiAKICAgICBfaGFuZGxlTmFtZU9yVmFsdWVVcERvd246IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjMw
OCwyNCArMjMyMiwxNCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVy
dHlQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2Uod29yZFN1
ZmZpeFJhbmdlKTsKICAgICB9LAogCi0gICAgX2J1aWxkUHJvcGVydHlDb21wbGV0aW9uczogZnVu
Y3Rpb24od29yZFJhbmdlLCBiZXN0TWF0Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2sp
CisgICAgX2J1aWxkUHJvcGVydHlDb21wbGV0aW9uczogZnVuY3Rpb24od29yZFJhbmdlLCBmb3Jj
ZSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIHByZWZpeCA9
IHdvcmRSYW5nZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGlmICghcHJlZml4
ICYmIGJlc3RNYXRjaE9ubHkpCisgICAgICAgIGlmICghcHJlZml4ICYmICFmb3JjZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgcmVzdWx0czsKLSAgICAgICAgaWYgKGJlc3RN
YXRjaE9ubHkpIHsKLSAgICAgICAgICAgIHJlc3VsdHMgPSBbXTsKLSAgICAgICAgICAgIHZhciBm
aXJzdE1hdGNoID0gdGhpcy5fY3NzQ29tcGxldGlvbnMuZmlyc3RTdGFydHNXaXRoKHByZWZpeCk7
Ci0gICAgICAgICAgICBpZiAoZmlyc3RNYXRjaCkKLSAgICAgICAgICAgICAgICByZXN1bHRzLnB1
c2goZmlyc3RNYXRjaCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbnNSZWFkeUNhbGxi
YWNrKHJlc3VsdHMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0cyA9IHRoaXMuX2Nzc0Nv
bXBsZXRpb25zLnN0YXJ0c1dpdGgocHJlZml4KTsKLSAgICAgICAgaWYgKHJlc3VsdHMpCi0gICAg
ICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0cyk7CisgICAgICAgIHZhciBy
ZXN1bHRzID0gdGhpcy5fY3NzQ29tcGxldGlvbnMuc3RhcnRzV2l0aChwcmVmaXgpOworICAgICAg
ICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0cyk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKaW5kZXggZmQw
ZGJiMC4uMDNmOGRkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dFByb21wdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRQcm9tcHQuanMKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDE5ICszMCwyOCBAQAogLyoqCiAgKiBAY29uc3RydWN0b3IKICAq
IEBwYXJhbSB7Ym9vbGVhbj19IG9taXRIaXN0b3J5CisgKiBAcGFyYW0ge2Jvb2xlYW49fSBlbGVt
ZW50SGFzRXh0ZXJuYWxLZXlEb3duSGFuZGxlcgorICogQHBhcmFtIHsqPX0gc3VnZ2VzdEJveENv
bmZpZwogICovCi1XZWJJbnNwZWN0b3IuVGV4dFByb21wdCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNv
bXBsZXRpb25zLCBzdG9wQ2hhcmFjdGVycywgb21pdEhpc3RvcnkpCitXZWJJbnNwZWN0b3IuVGV4
dFByb21wdCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbXBsZXRpb25zLCBzdG9wQ2hhcmFjdGVycywg
b21pdEhpc3RvcnksIGVsZW1lbnRIYXNFeHRlcm5hbEtleURvd25IYW5kbGVyLCBzdWdnZXN0Qm94
Q29uZmlnKQogewogICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoInRleHQtcHJvbXB0Iik7Ci0gICAgdGhpcy5jb21wbGV0aW9ucyA9IGNv
bXBsZXRpb25zOwotICAgIHRoaXMuY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzID0gc3RvcENoYXJh
Y3RlcnM7CisgICAgdGhpcy5fY29tcGxldGlvbnMgPSBjb21wbGV0aW9uczsKKyAgICB0aGlzLl9j
b21wbGV0aW9uU3RvcENoYXJhY3RlcnMgPSBzdG9wQ2hhcmFjdGVyczsKICAgICBpZiAoIW9taXRI
aXN0b3J5KSB7CiAgICAgICAgIHRoaXMuaGlzdG9yeSA9IFtdOwogICAgICAgICB0aGlzLmhpc3Rv
cnlPZmZzZXQgPSAwOwogICAgIH0KLSAgICB0aGlzLl9ib3VuZE9uS2V5RG93biA9IHRoaXMuX29u
S2V5RG93bi5iaW5kKHRoaXMpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJr
ZXlkb3duIiwgdGhpcy5fYm91bmRPbktleURvd24sIHRydWUpOworICAgIGlmICghZWxlbWVudEhh
c0V4dGVybmFsS2V5RG93bkhhbmRsZXIpIHsKKyAgICAgICAgdGhpcy5fYm91bmRPbktleURvd24g
PSB0aGlzLl9vbktleURvd24uYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3VuZE9uS2V5RG93biwgdHJ1ZSk7CisgICAg
fQorICAgIGlmIChzdWdnZXN0Qm94Q29uZmlnKSB7CisgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3gg
PSBuZXcgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveCh0aGlzLCBlbGVtZW50LCBz
dWdnZXN0Qm94Q29uZmlnLmNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2FwcGx5Q2FsbGJhY2sg
PSBzdWdnZXN0Qm94Q29uZmlnLmFwcGx5Q2FsbGJhY2s7CisgICAgICAgIHRoaXMuX2FjY2VwdENh
bGxiYWNrID0gc3VnZ2VzdEJveENvbmZpZy5hY2NlcHRDYWxsYmFjazsKKyAgICB9CiB9CiAKIFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKQEAgLTYyLDQwICs3Miw2OCBAQCBX
ZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMubW92ZUNh
cmV0VG9FbmRPZlByb21wdCgpOwogICAgIH0sCiAKKyAgICBoYW5kbGVLZXlEb3duOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vbktleURvd24oZXZlbnQpOwor
ICAgIH0sCisKICAgICByZW1vdmVGcm9tRWxlbWVudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSh0cnVlKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9ib3VuZE9uS2V5RG93biwgdHJ1ZSk7
CisgICAgICAgIGlmICh0aGlzLl9ib3VuZE9uS2V5RG93bikKKyAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRPbktleURvd24s
IHRydWUpOworICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdEJveCkKKyAgICAgICAgICAgIHRoaXMu
X3N1Z2dlc3RCb3gucmVtb3ZlRnJvbUVsZW1lbnQoKTsKICAgICB9LAogCiAgICAgX29uS2V5RG93
bjogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBkZWZhdWx0QWN0aW9u
KCkKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGZvcmNlQXV0b2Nv
bXBsZXRlCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBkZWZhdWx0QWN0aW9uKGZvcmNl
QXV0b2NvbXBsZXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmNsZWFyQXV0b0NvbXBs
ZXRlKCk7Ci0gICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZVNvb24oKTsKKyAgICAgICAgICAg
IHRoaXMuY2xlYXJBdXRvQ29tcGxldGUodHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmF1dG9Db21w
bGV0ZVNvb24oZm9yY2VBdXRvY29tcGxldGUpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV2
ZW50LmhhbmRsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgICAgdmFyIGhhbmRsZWQ7CiAKICAgICAgICAgc3dpdGNoIChldmVudC5r
ZXlJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYXNlICJVcCI6Ci0gICAgICAgICAgICAgICAg
dGhpcy51cEtleVByZXNzZWQoZXZlbnQpOworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlz
LnVwS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlICJEb3duIjoKLSAgICAgICAgICAgICAgICB0aGlzLmRvd25LZXlQcmVzc2VkKGV2ZW50
KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5kb3duS2V5UHJlc3NlZChldmVudCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJVKzAwMDkiOiAvLyBU
YWIKLSAgICAgICAgICAgICAgICB0aGlzLnRhYktleVByZXNzZWQoZXZlbnQpOworICAgICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0aGlzLnRhYktleVByZXNzZWQoZXZlbnQpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiRW50ZXIiOgorICAgICAgICAgICAgICAgIGhh
bmRsZWQgPSB0aGlzLmVudGVyS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlICJSaWdodCI6CiAgICAgICAgICAgICBjYXNlICJFbmQiOgog
ICAgICAgICAgICAgICAgIGlmICghdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKSkKICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVTb29uKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICJVKzAwMUIiOiAvLyBFc2MKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fc3VnZ2VzdEJveC5oaWRlKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlICJVKzAwMjAiOiAvLyBTcGFjZQorICAgICAgICAgICAgICAgIGlmIChldmVudC5j
dHJsS2V5ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LnNoaWZ0
S2V5KSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRBY3Rpb24uY2FsbCh0aGlzLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkgeworICAgICAgICAgICAgICAgICAgICBoYW5k
bGVkID0gdGhpcy5fc3VnZ2VzdEJveC5zcGFjZUtleVByZXNzZWQoZXZlbnQpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICJB
bHQiOgogICAgICAgICAgICAgY2FzZSAiTWV0YSI6CiAgICAgICAgICAgICBjYXNlICJTaGlmdCI6
CkBAIC0xMjgsNiArMTY2LDggQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGhhbmRsZWQ7
CiAgICAgfSwKIAogICAgIGFjY2VwdEF1dG9Db21wbGV0ZTogZnVuY3Rpb24oKQpAQCAtMTM1LDYg
KzE3NSw5IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKCF0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQgfHwgIXRoaXMuYXV0b0NvbXBsZXRlRWxlbWVu
dC5wYXJlbnROb2RlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICh0
aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKKyAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3gu
YWNjZXB0U3VnZ2VzdGlvbigpOworCiAgICAgICAgIHZhciB0ZXh0ID0gdGhpcy5hdXRvQ29tcGxl
dGVFbGVtZW50LnRleHRDb250ZW50OwogICAgICAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSh0ZXh0KTsKICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnBh
cmVudE5vZGUucmVwbGFjZUNoaWxkKHRleHROb2RlLCB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQp
OwpAQCAtMTg5LDEzICsyMzIsMTkgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBl
ID0gewogICAgICAgICBkZWxldGUgdGhpcy5fdXNlckVudGVyZWRUZXh0OwogICAgIH0sCiAKLSAg
ICBhdXRvQ29tcGxldGVTb29uOiBmdW5jdGlvbigpCisgICAgLyoqCisgICAgICogQHBhcmFtIHti
b29sZWFuPX0gZm9yY2UKKyAgICAgKi8KKyAgICBhdXRvQ29tcGxldGVTb29uOiBmdW5jdGlvbihm
b3JjZSkKICAgICB7CiAgICAgICAgIGlmICghKCJfY29tcGxldGVUaW1lb3V0IiBpbiB0aGlzKSkK
LSAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlVGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jb21w
bGV0ZS5iaW5kKHRoaXMsIHRydWUpLCAyNTApOworICAgICAgICAgICAgdGhpcy5fY29tcGxldGVU
aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLmNvbXBsZXRlLmJpbmQodGhpcywgdHJ1ZSwgZm9yY2Up
LCB0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSA/IDAgOiAyNTApOwogICAgIH0sCiAKLSAgICBj
b21wbGV0ZTogZnVuY3Rpb24oYXV0bywgcmV2ZXJzZSkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW49fSByZXZlcnNlCisgICAgICovCisgICAgY29tcGxldGU6IGZ1bmN0aW9uKGF1dG8s
IGZvcmNlLCByZXZlcnNlKQogICAgIHsKICAgICAgICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSh0
cnVlKTsKICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKQEAg
LTIwNSwyMSArMjU0LDM1IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CiAg
ICAgICAgIHZhciBpc0VtcHR5SW5wdXQgPSBzZWxlY3Rpb25SYW5nZS5jb21tb25BbmNlc3RvckNv
bnRhaW5lciA9PT0gdGhpcy5lbGVtZW50OyAvLyB0aGlzLmVsZW1lbnQgaGFzIG5vIGNoaWxkIFRl
eHQgbm9kZXMuCiAKKyAgICAgICAgdmFyIHNob3VsZEV4aXQ7CisKICAgICAgICAgLy8gRG8gbm90
IGF0dGVtcHQgdG8gYXV0by1jb21wbGV0ZSBhbiBlbXB0eSBpbnB1dCBpbiB0aGUgYXV0byBtb2Rl
IChvbmx5IG9uIGRlbWFuZCkuCi0gICAgICAgIGlmIChhdXRvICYmIGlzRW1wdHlJbnB1dCkKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGF1dG8gJiYgaXNFbXB0eUlucHV0ICYmICFm
b3JjZSkKKyAgICAgICAgICAgIHNob3VsZEV4aXQgPSB0cnVlOwogICAgICAgICBpZiAoIWF1dG8g
JiYgIWlzRW1wdHlJbnB1dCAmJiAhc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWlu
ZXIuaXNEZXNjZW5kYW50KHRoaXMuZWxlbWVudCkpCisgICAgICAgICAgICBzaG91bGRFeGl0ID0g
dHJ1ZTsKKyAgICAgICAgaWYgKGF1dG8gJiYgIXRoaXMuaXNDYXJldEF0RW5kT2ZQcm9tcHQoKSAm
JiAhZm9yY2UpCisgICAgICAgICAgICBzaG91bGRFeGl0ID0gdHJ1ZTsKKworICAgICAgICBpZiAo
c2hvdWxkRXhpdCkgeworICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgp
KQorICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3guaGlkZSgpOwogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBpZiAoYXV0byAmJiAhdGhpcy5pc0NhcmV0QXRFbmRPZlByb21wdCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgd29yZFByZWZpeFJhbmdlID0gc2Vs
ZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0aW9uUmFuZ2Uuc3Rh
cnRPZmZzZXQsIHRoaXMuY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzLCB0aGlzLmVsZW1lbnQsICJi
YWNrd2FyZCIpOwotICAgICAgICB0aGlzLmNvbXBsZXRpb25zKHdvcmRQcmVmaXhSYW5nZSwgYXV0
bywgdGhpcy5fY29tcGxldGlvbnNSZWFkeS5iaW5kKHRoaXMsIHNlbGVjdGlvbiwgYXV0bywgd29y
ZFByZWZpeFJhbmdlLCByZXZlcnNlKSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHdvcmRQcmVm
aXhSYW5nZSA9IHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHNlbGVj
dGlvblJhbmdlLnN0YXJ0T2Zmc2V0LCB0aGlzLl9jb21wbGV0aW9uU3RvcENoYXJhY3RlcnMsIHRo
aXMuZWxlbWVudCwgImJhY2t3YXJkIik7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25zKHdvcmRQ
cmVmaXhSYW5nZSwgZm9yY2UsIHRoaXMuX2NvbXBsZXRpb25zUmVhZHkuYmluZCh0aGlzLCBzZWxl
Y3Rpb24sIGF1dG8sIHdvcmRQcmVmaXhSYW5nZSwgcmV2ZXJzZSkpOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKi8K
ICAgICBfY29tcGxldGlvbnNSZWFkeTogZnVuY3Rpb24oc2VsZWN0aW9uLCBhdXRvLCBvcmlnaW5h
bFdvcmRQcmVmaXhSYW5nZSwgcmV2ZXJzZSwgY29tcGxldGlvbnMpCiAgICAgewotICAgICAgICBp
ZiAoIWNvbXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgpCisgICAgICAgIGlmICghY29t
cGxldGlvbnMgfHwgIWNvbXBsZXRpb25zLmxlbmd0aCkgeworICAgICAgICAgICAgaWYgKHRoaXMu
aXNTdWdnZXN0Qm94VmlzaWJsZSgpKQorICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3gu
aGlkZSgpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgdmFyIHNl
bGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CiAKQEAgLTIzMCw2ICsyOTMs
MTQgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
b3JpZ2luYWxXb3JkUHJlZml4UmFuZ2UudG9TdHJpbmcoKSArIHNlbGVjdGlvblJhbmdlLnRvU3Ry
aW5nKCkgIT0gZnVsbFdvcmRSYW5nZS50b1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuOwog
CisgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UgPSBmdWxsV29yZFJhbmdlOworICAgICAg
ICB0aGlzLl91c2VyRW50ZXJlZFRleHQgPSBmdWxsV29yZFJhbmdlLnRvU3RyaW5nKCk7CisKKyAg
ICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3gpIHsKKyAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RC
b3gudXBkYXRlU3VnZ2VzdGlvbnMoY29tcGxldGlvbnMpOworICAgICAgICAgICAgcmV0dXJuOyAv
LyBEbyBub3RoaW5nLCB0aGUgc3VnZ2VzdCBib3ggaXMgZHJpdmluZyB1cy4KKyAgICAgICAgfQor
CiAgICAgICAgIHZhciB3b3JkUHJlZml4TGVuZ3RoID0gb3JpZ2luYWxXb3JkUHJlZml4UmFuZ2Uu
dG9TdHJpbmcoKS5sZW5ndGg7CiAKICAgICAgICAgaWYgKGF1dG8pCkBAIC0yNzQsMTUgKzM0NSwx
MSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlID0gZnVsbFdvcmRS
YW5nZTsKLSAgICAgICAgdGhpcy5fdXNlckVudGVyZWRUZXh0ID0gZnVsbFdvcmRSYW5nZS50b1N0
cmluZygpOwotCi0gICAgICAgIGZ1bGxXb3JkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKLSAgICAg
ICAgdGhpcy5lbGVtZW50LnBydW5lRW1wdHlUZXh0Tm9kZXMoKTsKLQotICAgICAgICB2YXIgZmlu
YWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAKICAgICAgICAgaWYg
KGF1dG8pIHsKKyAgICAgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuZGVsZXRlQ29udGVu
dHMoKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wcnVuZUVtcHR5VGV4dE5vZGVzKCk7Cisg
ICAgICAgICAgICB2YXIgZmluYWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CiAgICAgICAgICAgICB2YXIgcHJlZml4VGV4dCA9IGNvbXBsZXRpb25UZXh0LnN1YnN0cmlu
ZygwLCB3b3JkUHJlZml4TGVuZ3RoKTsKICAgICAgICAgICAgIHZhciBzdWZmaXhUZXh0ID0gY29t
cGxldGlvblRleHQuc3Vic3RyaW5nKHdvcmRQcmVmaXhMZW5ndGgpOwogCkBAIC0yOTcsMjAgKzM2
NCw0NyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
ICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQocHJlZml4VGV4dE5vZGUsIHdvcmRQcmVm
aXhMZW5ndGgpOwogICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQocHJlZml4
VGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgdmFyIGNvbXBsZXRpb25UZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbXBs
ZXRpb25UZXh0KTsKLSAgICAgICAgICAgIGZ1bGxXb3JkUmFuZ2UuaW5zZXJ0Tm9kZShjb21wbGV0
aW9uVGV4dE5vZGUpOworICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwor
ICAgICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuYXBwbHlTdWdnZXN0aW9uKGNvbXBsZXRpb25U
ZXh0LCB0cnVlKTsKKyAgICB9LAogCi0gICAgICAgICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3Ro
ID4gMSkKLSAgICAgICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KGNvbXBs
ZXRpb25UZXh0Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChjb21wbGV0aW9uVGV4dE5v
ZGUsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCk7CisgICAgYXBwbHlTdWdnZXN0aW9uOiBmdW5jdGlv
bihjb21wbGV0aW9uVGV4dCwgaXNJbnRlcm1lZGlhdGVTdWdnZXN0aW9uKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fdXNlckVudGVyZWRSYW5nZS5kZWxldGVDb250ZW50cygpOworICAgICAgICB0aGlz
LmVsZW1lbnQucHJ1bmVFbXB0eVRleHROb2RlcygpOworICAgICAgICB2YXIgZmluYWxTZWxlY3Rp
b25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIHZhciBjb21wbGV0aW9u
VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb21wbGV0aW9uVGV4dCk7CisgICAg
ICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuaW5zZXJ0Tm9kZShjb21wbGV0aW9uVGV4dE5vZGUp
OwogCi0gICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZChjb21wbGV0aW9uVGV4
dE5vZGUsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCk7Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIHdv
cmRQcmVmaXhMZW5ndGggPSB0aGlzLl91c2VyRW50ZXJlZFRleHQgPyB0aGlzLl91c2VyRW50ZXJl
ZFRleHQubGVuZ3RoIDogMDsKKworICAgICAgICBpZiAoaXNJbnRlcm1lZGlhdGVTdWdnZXN0aW9u
KQorICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChjb21wbGV0aW9uVGV4
dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaW5h
bFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KGNvbXBsZXRpb25UZXh0Tm9kZSwgY29tcGxldGlvblRl
eHQubGVuZ3RoKTsKIAorICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZChjb21wbGV0
aW9uVGV4dE5vZGUsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCk7CisgICAgICAgIHZhciBzZWxlY3Rp
b24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxS
YW5nZXMoKTsKICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2Up
OworICAgICAgICBpZiAoaXNJbnRlcm1lZGlhdGVTdWdnZXN0aW9uICYmIHRoaXMuX2FwcGx5Q2Fs
bGJhY2spCisgICAgICAgICAgICB0aGlzLl9hcHBseUNhbGxiYWNrKCk7CisgICAgfSwKKworICAg
IGFjY2VwdFN1Z2dlc3Rpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuYWNjZXB0
QXV0b0NvbXBsZXRlKCk7CisgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0Qm94KQorICAgICAgICAg
ICAgdGhpcy5fc3VnZ2VzdEJveC5oaWRlKCk7CisgICAgICAgIGlmICh0aGlzLl9hY2NlcHRDYWxs
YmFjaykKKyAgICAgICAgICAgIHRoaXMuX2FjY2VwdENhbGxiYWNrKCk7CisgICAgfSwKKworICAg
IGlzU3VnZ2VzdEJveFZpc2libGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9zdWdnZXN0Qm94ICYmIHRoaXMuX3N1Z2dlc3RCb3gudmlzaWJsZTsKICAgICB9LAogCiAg
ICAgaXNDYXJldEluc2lkZVByb21wdDogZnVuY3Rpb24oKQpAQCAtNDA1LDI2ICs0OTksNjQgQEAg
V2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgdGFiS2V5UHJlc3Nl
ZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsK
LSAgICAgICAgdGhpcy5jb21wbGV0ZShmYWxzZSwgZXZlbnQuc2hpZnRLZXkpOworICAgICAgICBp
ZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBp
ZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQg
PSB0aGlzLl9zdWdnZXN0Qm94LnRhYktleVByZXNzZWQoZXZlbnQpOworICAgICAgICAgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5jb21wbGV0ZShmYWxzZSwgZmFsc2UsIGV2ZW50LnNoaWZ0S2V5KTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIGVudGVyS2V5UHJlc3NlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC5lbnRlcktleVByZXNzZWQoZXZlbnQp
OworCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCiAgICAgdXBLZXlQcmVzc2VkOiBm
dW5jdGlvbihldmVudCkKICAgICB7CisgICAgICAgIGlmIChldmVudC5oYW5kbGVkKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2li
bGUoKSkgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3N1Z2dlc3RCb3gudXBLZXlQ
cmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghdGhpcy5pc0NhcmV0T25G
aXJzdExpbmUoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fbW92ZUJh
Y2tJbkhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAogICAgIGRvd25L
ZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc0Nh
cmV0T25MYXN0TGluZSgpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZXZlbnQu
aGFuZGxlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAodGhpcy5p
c1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc3Vn
Z2VzdEJveC5kb3duS2V5UHJlc3NlZChldmVudCk7CisgICAgICAgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKworICAgICAgaWYgKCF0aGlzLmlz
Q2FyZXRPbkxhc3RMaW5lKCkpCisgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGV2
ZW50LmhhbmRsZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl9tb3ZlRm9yd2FyZEluSGlzdG9yeSgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCiAgICAgX21vdmVCYWNrSW5IaXN0b3J5
OiBmdW5jdGlvbigpCkBAIC00NzUsMyArNjA3LDMwOCBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21w
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5zY3JvbGxJbnRvVmlldygpOwog
ICAgIH0KIH0KKworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94ID0gZnVuY3Rpb24odGV4dFByb21wdCwgaW5wdXRFbGVtZW50LCBj
bGFzc05hbWUpCit7CisgICAgdGhpcy5fdGV4dFByb21wdCA9IHRleHRQcm9tcHQ7CisgICAgdGhp
cy5fcGFyZW50RWxlbWVudCA9IGlucHV0RWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7CisgICAg
dGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50OworICAgIHRoaXMuX3NlbGVjdGVkRWxl
bWVudCA9IG51bGw7CisgICAgdGhpcy5fYm91bmRPblNjcm9sbCA9IHRoaXMuX29uc2Nyb2xscmVz
aXplLmJpbmQodGhpcywgdHJ1ZSk7CisgICAgdGhpcy5fYm91bmRPblJlc2l6ZSA9IHRoaXMuX29u
c2Nyb2xscmVzaXplLmJpbmQodGhpcywgZmFsc2UpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJzY3JvbGwiLCB0aGlzLl9ib3VuZE9uU2Nyb2xsLCB0cnVlKTsKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5fYm91bmRPblJlc2l6ZSwgdHJ1ZSk7CisKKyAg
ICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9wYXJlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAi
c3VnZ2VzdC1ib3ggY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCBjdXN0b20tcG9wdXAtaG9y
aXpvbnRhbC1zY3JvbGwgIiArIChjbGFzc05hbWUgfHwgIiIpKTsKKyAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fb25ib3htb3VzZWRvd24uYmluZCh0
aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy5jb250YWluZXJFbGVtZW50ID0gdGhpcy5lbGVtZW50LmNy
ZWF0ZUNoaWxkKCJkaXYiLCAiY29udGFpbmVyIik7CisgICAgdGhpcy5jb250ZW50RWxlbWVudCA9
IHRoaXMuY29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgImNvbnRlbnQiKTsKKwor
ICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKCk7Cit9CisKK1dlYkluc3BlY3Rvci5UZXh0UHJv
bXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0geworICAgIGdldCB2aXNpYmxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuaGFzU3R5bGVDbGFzcygidmlzaWJsZSIpOworICAg
IH0sCisKKyAgICBnZXQgaGFzU2VsZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRo
aXMuX3NlbGVjdGVkRWxlbWVudDsKKyAgICB9LAorCisgICAgX29uc2Nyb2xscmVzaXplOiBmdW5j
dGlvbihpc1Njcm9sbCwgZXZlbnQpCisgICAgeworICAgICAgICBpZiAoaXNTY3JvbGwgJiYgdGhp
cy5lbGVtZW50LmlzQW5jZXN0b3IoZXZlbnQudGFyZ2V0KSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdGhpcy5fdXBkYXRlQm94UG9zaXRpb24oKTsKKyAgICB9LAorCisgICAgX3VwZGF0
ZUJveFBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBNZWFzdXJlIHRoZSBj
b250ZW50IGVsZW1lbnQgYm94LgorICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LnN0eWxlLmRp
c3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5wb3Np
dGlvbkF0KDAsIDApOworICAgICAgICB2YXIgY29udGVudFdpZHRoID0gdGhpcy5jb250ZW50RWxl
bWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgdmFyIGNvbnRlbnRIZWlnaHQgPSB0aGlzLmNvbnRl
bnRFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5zdHls
ZS5kaXNwbGF5ID0gImJsb2NrIjsKKyAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOworCisgICAgICAgIC8vIExheSBvdXQgdGhlIHN1
Z2dlc3QtYm94IHJlbGF0aXZlIHRvIHRoZSBhbmNob3JCb3guCisgICAgICAgIGNvbnN0IGFuY2hv
ckJveCA9IHRoaXMuX2lucHV0RWxlbWVudC5ib3hJbldpbmRvdyh3aW5kb3csIHRoaXMuX3BhcmVu
dEVsZW1lbnQpOworICAgICAgICBjb25zdCBzdWdnZXN0Qm94UGFkZGluZ1ggPSAyMTsKKyAgICAg
ICAgY29uc3Qgc3VnZ2VzdEJveFBhZGRpbmdZID0gMTI7CisgICAgICAgIGNvbnN0IHNwYWNlciA9
IDY7CisgICAgICAgIGNvbnN0IG1pbkhlaWdodCA9IDUwOworICAgICAgICBjb25zdCBtYXhXaWR0
aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLSBhbmNob3JCb3gueCAtIHNwYWNlcjsKKyAg
ICAgICAgY29uc3Qgd2lkdGggPSBNYXRoLm1pbihjb250ZW50V2lkdGgsIG1heFdpZHRoIC0gc3Vn
Z2VzdEJveFBhZGRpbmdYKSArIHN1Z2dlc3RCb3hQYWRkaW5nWDsKKworICAgICAgICB2YXIgbWF4
SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgLSBhbmNob3JCb3gueSAtIGFuY2hv
ckJveC5oZWlnaHQgLSBzcGFjZXI7CisgICAgICAgIHZhciBwYWRkZWRIZWlnaHQgPSBjb250ZW50
SGVpZ2h0ICsgc3VnZ2VzdEJveFBhZGRpbmdZOworICAgICAgICB2YXIgaGVpZ2h0ID0gTWF0aC5t
aW4ocGFkZGVkSGVpZ2h0LCBtYXhIZWlnaHQpOworICAgICAgICBpZiAoaGVpZ2h0ID49IG1pbkhl
aWdodCB8fCBoZWlnaHQgPT09IHBhZGRlZEhlaWdodCkgeworICAgICAgICAgICAgLy8gTG9jYXRl
IHRoZSBzdWdnZXN0IGJveCB1bmRlciB0aGUgYW5jaG9yQm94LgorICAgICAgICAgICAgdGhpcy5l
bGVtZW50LnBvc2l0aW9uQXQoYW5jaG9yQm94LngsIGFuY2hvckJveC55ICsgYW5jaG9yQm94Lmhl
aWdodCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiYWJvdmUt
YW5jaG9yIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMb2NhdGUgdGhlIHN1
Z2dlc3QgYm94IGFib3ZlIHRoZSBhbmNob3JCb3guCisgICAgICAgICAgICBtYXhIZWlnaHQgPSBh
bmNob3JCb3gueSAtIHNwYWNlcjsKKyAgICAgICAgICAgIGhlaWdodCA9IE1hdGgubWluKGNvbnRl
bnRIZWlnaHQsIG1heEhlaWdodCAtIHN1Z2dlc3RCb3hQYWRkaW5nWSkgKyBzdWdnZXN0Qm94UGFk
ZGluZ1k7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucG9zaXRpb25BdChhbmNob3JCb3gueCwg
YW5jaG9yQm94LnkgLSBoZWlnaHQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImFib3ZlLWFuY2hvciIpOworICAgICAgICB9CisgICAgICAgIHRoaXMuZWxlbWVudC5z
dHlsZS53aWR0aCA9IHdpZHRoICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhl
aWdodCA9IGhlaWdodCArICJweCI7CisgICAgfSwKKworICAgIF9yZW1lbWJlcklucHV0UmFuZ2U6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CisgICAgICAgIGlmIChzZWxlY3Rpb24ucmFuZ2VDb3VudCkgeworICAgICAgICAg
ICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgICAgICBpZiAo
dGhpcy5faW5wdXRFbGVtZW50ID09PSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lciB8fCB0
aGlzLl9pbnB1dEVsZW1lbnQuaXNBbmNlc3RvcihyYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5l
cikpCisgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJhbmdlID0gcmFuZ2U7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgX29uYm94bW91c2Vkb3duOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLmZvY3VzZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9yZW1lbWJlcklucHV0UmFuZ2Uo
KTsKKyAgICB9LAorCisgICAgaGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLnZpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5lbGVtZW50
LnJlbW92ZVN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVj
dGVkRWxlbWVudDsKKyAgICB9LAorCisgICAgcmVtb3ZlRnJvbUVsZW1lbnQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlz
Ll9ib3VuZE9uU2Nyb2xsLCB0cnVlKTsKKyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kT25SZXNpemUsIHRydWUpOworICAgICAgICB0aGlzLmVs
ZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IHRleHQKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW49fSBpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24KKyAgICAgKi8KKyAgICBfYXBwbHlTdWdn
ZXN0aW9uOiBmdW5jdGlvbih0ZXh0LCBpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24pCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy5fc2VsZWN0ZWRFbGVtZW50KQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBzdWdnZXN0aW9uID0gdGV4dCB8
fCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIGlmICghc3VnZ2Vz
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0aGlzLl90ZXh0UHJv
bXB0LmFwcGx5U3VnZ2VzdGlvbihzdWdnZXN0aW9uLCBpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24p
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmc9fSB0ZXh0CisgICAgICovCisgICAgYWNjZXB0U3VnZ2VzdGlvbjogZnVuY3Rpb24o
dGV4dCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9hcHBseVN1Z2dlc3Rpb24o
dGV4dCwgZmFsc2UpOworICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fdGV4dFByb21wdC5h
Y2NlcHRTdWdnZXN0aW9uKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAg
IF9vbk5leHRJdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJl
biA9IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGROb2RlczsKKyAgICAgICAgaWYgKCFjaGlsZHJl
bi5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRo
aXMuX3NlbGVjdGVkRWxlbWVudC5uZXh0U2libGluZyB8fCB0aGlzLmNvbnRlbnRFbGVtZW50LmZp
cnN0Q2hpbGQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVu
dCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICAgICAgdGhpcy5fdXBkYXRl
U2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMuX2FwcGx5U3VnZ2VzdGlvbih1bmRlZmluZWQsIHRy
dWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX29uUHJldmlvdXNJdGVt
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29u
dGVudEVsZW1lbnQuY2hpbGROb2RlczsKKyAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxl
bWVudCkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVk
RWxlbWVudC5wcmV2aW91c1NpYmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMu
Y29udGVudEVsZW1lbnQubGFzdENoaWxkOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24o
KTsKKyAgICAgICAgdGhpcy5fYXBwbHlTdWdnZXN0aW9uKHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5
LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKi8KKyAgICB1cGRhdGVTdWdnZXN0aW9uc1Nv
b246IGZ1bmN0aW9uKGNvbXBsZXRpb25zKQorICAgIHsKKyAgICAgICAgaWYgKCEoIl9zdWdnZXN0
VGltZW91dCIgaW4gdGhpcykpCisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0VGltZW91dCA9IHNl
dFRpbWVvdXQodGhpcy51cGRhdGVTdWdnZXN0aW9ucy5iaW5kKHRoaXMsIGNvbXBsZXRpb25zKSwg
MTApOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0g
Y29tcGxldGlvbnMKKyAgICAgKi8KKyAgICB1cGRhdGVTdWdnZXN0aW9uczogZnVuY3Rpb24oY29t
cGxldGlvbnMpCisgICAgeworICAgICAgICBpZiAoIl9zdWdnZXN0VGltZW91dCIgaW4gdGhpcykg
eworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N1Z2dlc3RUaW1lb3V0KTsKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zdWdnZXN0VGltZW91dDsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9jb21wbGV0aW9uc1JlYWR5KGNvbXBsZXRpb25zKTsKKyAgICB9LAorCisgICAgX29uSXRl
bU1vdXNlRG93bjogZnVuY3Rpb24odGV4dCwgZXZlbnQpCisgICAgeworICAgICAgICBmdW5jdGlv
biByZXNldEZvY3VzZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5mb2N1
c2VkOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hY2NlcHRTdWdnZXN0aW9uKHRleHQpOwor
CisgICAgICAgIC8vIEFsbG93IGFsbCBldmVudCBoYW5kbGVycyB0byBmaW5pc2ggYmVmb3JlIHJl
c2V0dGluZyB0aGUgZm9jdXNlZCBzdGF0ZS4KKyAgICAgICAgc2V0VGltZW91dChyZXNldEZvY3Vz
ZWQuYmluZCh0aGlzKSwgMCk7CisgICAgfSwKKworICAgIF9jcmVhdGVJdGVtRWxlbWVudDogZnVu
Y3Rpb24ocHJlZml4LCB0ZXh0KQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAic3Vn
Z2VzdC1ib3gtY29udGVudC1pdGVtIHNvdXJjZS1jb2RlIjsKKyAgICAgICAgaWYgKHByZWZpeCAm
JiBwcmVmaXgubGVuZ3RoICYmICF0ZXh0LmluZGV4T2YocHJlZml4KSkgeworICAgICAgICAgICAg
dmFyIHByZWZpeEVsZW1lbnQgPSBlbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwgInByZWZpeCIp
OworICAgICAgICAgICAgcHJlZml4RWxlbWVudC50ZXh0Q29udGVudCA9IHByZWZpeDsKKyAgICAg
ICAgICAgIHZhciBzdWZmaXhFbGVtZW50ID0gZWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJz
dWZmaXgiKTsKKyAgICAgICAgICAgIHN1ZmZpeEVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0LnN1
YnN0cmluZyhwcmVmaXgubGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZh
ciBzdWZmaXhFbGVtZW50ID0gZWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJzdWZmaXgiKTsK
KyAgICAgICAgICAgIHN1ZmZpeEVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OworICAgICAgICB9
CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fb25J
dGVtTW91c2VEb3duLmJpbmQodGhpcywgdGV4dCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgfSwKKworICAgIF91cGRhdGVJdGVtczogZnVuY3Rpb24oaXRlbXMpCisgICAg
eworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuOwor
ICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gTWF0aC5taW4oY2hpbGRyZW4ubGVuZ3RoIC0g
MSwgdGhpcy5fc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIHZhciBzZWxlY3RlZEl0ZW1UZXh0ID0g
dGhpcy5fc2VsZWN0ZWRJbmRleCA+PSAwID8gY2hpbGRyZW5bdGhpcy5fc2VsZWN0ZWRJbmRleF0u
dGV4dENvbnRlbnQgOiBudWxsOworICAgICAgICB2YXIgaXRlbUluZGV4ID0gMDsKKyAgICAgICAg
dmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICB2YXIg
Y2hpbGRUZXh0ID0gY2hpbGQgPyBjaGlsZC50ZXh0Q29udGVudCA6IG51bGw7CisgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgZGVsZXRlIHRoaXMu
X3NlbGVjdGVkRWxlbWVudDsKKworICAgICAgICB2YXIgdXNlckVudGVyZWRUZXh0ID0gdGhpcy5f
dGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IGl0ZW1zW2ldOwor
ICAgICAgICAgICAgdmFyIGN1cnJlbnRJdGVtRWxlbWVudCA9IHRoaXMuX2NyZWF0ZUl0ZW1FbGVt
ZW50KHVzZXJFbnRlcmVkVGV4dCwgaXRlbSk7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVt
ZW50LmFwcGVuZENoaWxkKGN1cnJlbnRJdGVtRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZVNlbGVjdGlv
bjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IG1pZ2h0IHdhbnQgc29tZSBv
cHRpbWl6YXRpb24gaWYgYmVjb21lcyBhIGJvdHRsZW5lY2suCisgICAgICAgIGZvciAodmFyIGNo
aWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC5uZXh0U2libGluZykgeworICAgICAgICAgICAgaWYgKGNoaWxkICE9PSB0aGlzLl9zZWxlY3Rl
ZEVsZW1lbnQpCisgICAgICAgICAgICAgICAgY2hpbGQucmVtb3ZlU3R5bGVDbGFzcygic2VsZWN0
ZWQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSB7Cisg
ICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2VsZWN0ZWQi
KTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVl
ZGVkKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKi8KKyAgICBfY29tcGxldGlvbnNS
ZWFkeTogZnVuY3Rpb24oY29tcGxldGlvbnMpCisgICAgeworICAgICAgICBpZiAoIWNvbXBsZXRp
b25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl91cGRhdGVJdGVt
cyhjb21wbGV0aW9ucyk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKCk7CisgICAg
ICAgIGlmICh0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAmJiAodGhpcy5jb250
ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAxIHx8IHRoaXMuY29udGVudEVsZW1lbnQuY2hp
bGRyZW5bMF0udGV4dENvbnRlbnQubGVuZ3RoICE9PSB0aGlzLl90ZXh0UHJvbXB0Ll91c2VyRW50
ZXJlZFRleHQubGVuZ3RoKSkgeworICAgICAgICAgICAgLy8gV2lsbCBub3QgYmUgc2hvd24gaWYg
YSBzb2xlIHN1Z2dlc3Rpb24gaXMgZXF1YWwgdG8gdGhlIHVzZXIgaW5wdXQuCisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygidmlzaWJsZSIpOworICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuZm9jdXNlZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmhpZGUo
KTsKKyAgICB9LAorCisgICAgdXBLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9vblByZXZpb3VzSXRlbShldmVudCk7CisgICAgfSwKKworICAg
IGRvd25LZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9vbk5leHRJdGVtKGV2ZW50KTsKKyAgICB9LAorCisgICAgZW50ZXJLZXlQcmVzc2VkOiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmFjY2VwdFN1Z2dlc3Rp
b24oKTsKKyAgICB9LAorCisgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5lbnRlcktleVByZXNzZWQoZXZlbnQpOworICAgIH0sCisK
KyAgICBzcGFjZUtleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhp
cy5hY2NlcHRTdWdnZXN0aW9uKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRG8gbm90IGlu
aGliaXQgYSB3aGl0ZXNwYWNlIGVudHJ5IGFmdGVyIHRoZSBzdWdnZXN0aW9uLgorICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcwppbmRleCBm
ZjdlYjIzLi4zYTA0OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1VJVXRpbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9VSVV0aWxzLmpzCkBAIC0yMjAsNiArMjIwLDEyIEBAIFdlYkluc3BlY3Rvci5FZGl0aW5nQ29u
ZmlnID0gZnVuY3Rpb24oY29tbWl0SGFuZGxlciwgY2FuY2VsSGFuZGxlciwgY29udGV4dCkKICAg
ICAgKiBAdHlwZSB7ZnVuY3Rpb24oRWxlbWVudCwqKXx1bmRlZmluZWR9CiAgICAgICovCiAgICAg
dGhpcy5jdXN0b21GaW5pc2hIYW5kbGVyOworCisgICAgLyoqCisgICAgICogSGFuZGxlcyB0aGUg
Zm9jdXMgbG9zcyAoImJsdXIiIGV2ZW50KSwgb3B0aW9uYWxseSByZXN0b3JpbmcgdGhlIGZvY3Vz
IHdoZW5ldmVyIG5lY2Vzc2FyeQorICAgICAqIEB0eXBlIHtmdW5jdGlvbihFdmVudD0pfHVuZGVm
aW5lZH0KKyAgICAgKi8KKyAgICB0aGlzLmZvY3VzUmVzdG9yZXI7CiB9CiAKIFdlYkluc3BlY3Rv
ci5FZGl0aW5nQ29uZmlnLnByb3RvdHlwZSA9IHsKQEAgLTIzNiw2ICsyNDIsMTEgQEAgV2ViSW5z
cGVjdG9yLkVkaXRpbmdDb25maWcucHJvdG90eXBlID0gewogICAgIHNldEN1c3RvbUZpbmlzaEhh
bmRsZXI6IGZ1bmN0aW9uKGN1c3RvbUZpbmlzaEhhbmRsZXIpCiAgICAgewogICAgICAgICB0aGlz
LmN1c3RvbUZpbmlzaEhhbmRsZXIgPSBjdXN0b21GaW5pc2hIYW5kbGVyOworICAgIH0sCisKKyAg
ICBzZXRGb2N1c1Jlc3RvcmVyOiBmdW5jdGlvbihmb2N1c1Jlc3RvcmVyKQorICAgIHsKKyAgICAg
ICAgdGhpcy5mb2N1c1Jlc3RvcmVyID0gZm9jdXNSZXN0b3JlcjsKICAgICB9CiB9CiAKQEAgLTI1
Miw2ICsyNjMsNyBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVu
dCwgY29uZmlnKQogICAgIHZhciBjb21taXR0ZWRDYWxsYmFjayA9IGNvbmZpZy5jb21taXRIYW5k
bGVyOwogICAgIHZhciBjYW5jZWxsZWRDYWxsYmFjayA9IGNvbmZpZy5jYW5jZWxIYW5kbGVyOwog
ICAgIHZhciBwYXN0ZUNhbGxiYWNrID0gY29uZmlnLnBhc3RlSGFuZGxlcjsKKyAgICB2YXIgZm9j
dXNSZXN0b3JlciA9IGNvbmZpZy5mb2N1c1Jlc3RvcmVyOwogICAgIHZhciBjb250ZXh0ID0gY29u
ZmlnLmNvbnRleHQ7CiAgICAgdmFyIG9sZFRleHQgPSBnZXRDb250ZW50KGVsZW1lbnQpOwogICAg
IHZhciBtb3ZlRGlyZWN0aW9uID0gIiI7CkBAIC0yNjIsOCArMjc0LDI1IEBAIFdlYkluc3BlY3Rv
ci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBjb25maWcpCiAgICAgaWYgKGVsZW1l
bnQudGFiSW5kZXggPCAwKQogICAgICAgICBlbGVtZW50LnRhYkluZGV4ID0gMDsKIAotICAgIGZ1
bmN0aW9uIGJsdXJFdmVudExpc3RlbmVyKCkgewotICAgICAgICBlZGl0aW5nQ29tbWl0dGVkLmNh
bGwoZWxlbWVudCk7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtFdmVudD19IGV2ZW50CisgICAg
ICovCisgICAgZnVuY3Rpb24gYmx1ckV2ZW50TGlzdGVuZXIoZXZlbnQpIHsKKyAgICAgICAgdmFy
IG9sZFJhbmdlOworICAgICAgICBpZiAoZm9jdXNSZXN0b3JlcikKKyAgICAgICAgICAgIG9sZFJh
bmdlID0gZm9jdXNSZXN0b3JlcihldmVudCk7CisKKyAgICAgICAgaWYgKCFvbGRSYW5nZSkKKyAg
ICAgICAgICAgIGVkaXRpbmdDb21taXR0ZWQuY2FsbChlbGVtZW50KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBpZiAoZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAg
ICAgIHNlbGVjdGlvbi5hZGRSYW5nZShvbGRSYW5nZSk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBmdW5jdGlvbiBnZXRDb250ZW50KGVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBiZGM0ZDZhLi5jMDZjYTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xNjYsNiAr
MTY2LDcgQEAKICAgICA8ZmlsZT5yZXNvdXJjZVZpZXcuY3NzPC9maWxlPgogICAgIDxmaWxlPnJl
c291cmNlc1BhbmVsLmNzczwvZmlsZT4KICAgICA8ZmlsZT5zY3JpcHRzUGFuZWwuY3NzPC9maWxl
PgorICAgIDxmaWxlPnRleHRQcm9tcHQuY3NzPC9maWxlPgogICAgIDxmaWxlPnRleHRWaWV3ZXIu
Y3NzPC9maWxlPgogICAgIDxmaWxlPnRpbWVsaW5lUGFuZWwuY3NzPC9maWxlPgogICAgIDxmaWxl
PkltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZzwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBmODdiNDY3Li44MDU3NTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCkBAIC0yNTAxLDMgKzI1MDEsMTMxIEBAIGEud29ya2VyLWl0ZW06aG92ZXIgewogICAgIHBh
ZGRpbmc6IDEwcHg7CiAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQorCisvKiBDU1MgcHJv
cGVydHkgbmFtZS92YWx1ZSBzdWdnZXN0aW9uICJwb3B1cCIgc3R5bGUgKi8KKworLnN1Z2dlc3Qt
Ym94LmNzcy1zdWdnZXN0IHsKKyAgICBib3JkZXItcmFkaXVzOiAwIDVweCA1cHggNXB4OworICAg
IG1hcmdpbi1sZWZ0OiAtMXB4OworICAgIGJvcmRlci1jb2xvcjogcmdiKDY2JSwgNjYlLCA2NiUp
OworICAgIC13ZWJraXQtYm94LXNoYWRvdzogOHB4IDhweCA2cHggcmdiYSg0MCwgNDAsIDQwLCAw
LjQwKTsKK30KKworLnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0LmFib3ZlLWFuY2hvciB7CisgICBi
b3JkZXItcmFkaXVzOiA1cHggNXB4IDVweCAwOworICAgIC13ZWJraXQtYm94LXNoYWRvdzogOHB4
IC04cHggNnB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5zdWdnZXN0LWJveC5jc3Mt
c3VnZ2VzdCAuY29udGVudCB7CisgICAgbWFyZ2luOiAzcHg7Cit9CisKKworLyogQ3VzdG9tIHBv
cHVwIHNjcm9sbGVycyAqLworCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1z
Y3JvbGxiYXIgeworICAgIHdpZHRoOiAxMXB4OworICAgIGhlaWdodDogMTFweDsKK30KKworLmN1
c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciwg
LmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIg
eworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3Jv
bGwgOjotd2Via2l0LXJlc2l6ZXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdl
YmtpdC1yZXNpemVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisuY3VzdG9tLXBvcHVwLWhv
cml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uLCAuY3VzdG9tLXBvcHVw
LXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworLyogQ3VzdG9tIEhvcml6b250YWwgU2Nyb2xsYmFyIFN0eWxlcyAqLwor
CisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXI6aG9y
aXpvbnRhbDpjb3JuZXItcHJlc2VudCB7CisgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOworfQor
CisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1
bWI6aG9yaXpvbnRhbCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1
bWJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKKyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owor
ICAgIGJvcmRlci13aWR0aDogMCAxMXB4OworICAgIG1pbi13aWR0aDogMjBweDsKK30KKworLmN1
c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhv
cml6b250YWw6aG92ZXIgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3Ro
dW1iSG92ZXJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9u
dGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWw6YWN0aXZlIHsK
KyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkFjdGl2ZUhvcml6LnBu
ZykgMCAxMSAwIDExOworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpzdGFydCB7CisgICAgbWFyZ2lu
LWxlZnQ6IDVweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kIHsKKyAgICBtYXJnaW4tcmln
aHQ6IDVweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kOmNvcm5lci1wcmVzZW50IHsKKyAg
ICBtYXJnaW4tcmlnaHQ6IDRweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9s
bCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZGVjcmVtZW50IHsK
KyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6LnBuZykgMCAx
MSAwIDExOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRo
OiAwIDAgMCAxMXB4OworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDppbmNyZW1lbnQgeworICAgIC13
ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAwIDExIDAgMTE7
CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItd2lkdGg6IDAgMTFw
eCAwIDA7Cit9CisKKy8qIEN1c3RvbSBWZXJ0aWNhbCBTY3JvbGxiYXIgU3R5bGVzICovCisKKy5j
dXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXI6dmVydGljYWw6
Y29ybmVyLXByZXNlbnQgeworICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Cit9CisKKy5jdXN0
b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGlj
YWwgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iVmVydC5wbmcp
IDExIDAgMTEgMDsKKyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJvcmRlci13
aWR0aDogMTFweCAwOworICAgIG1pbi1oZWlnaHQ6IDIwcHg7Cit9CisKKy5jdXN0b20tcG9wdXAt
dmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92ZXIg
eworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iSG92ZXJWZXJ0LnBu
ZykgMTEgMCAxMSAwOworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSB7CisgICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVWZXJ0LnBuZykgMTEgMCAxMSAwOworfQorCisu
Y3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBp
ZWNlOnZlcnRpY2FsOnN0YXJ0IHsKKyAgICBtYXJnaW4tdG9wOiA1cHg7Cit9CisKKy5jdXN0b20t
cG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVy
dGljYWw6ZW5kIHsKKyAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cit9CisKKy5jdXN0b20tcG9wdXAt
dmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6
ZW5kOmNvcm5lci1wcmVzZW50IHsKKyAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cit9CisKKy5jdXN0
b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6
dmVydGljYWw6ZGVjcmVtZW50IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdl
cy90cmFja1ZlcnQucG5nKSAxMSAwIDExIDA7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVu
dDsKKyAgICBib3JkZXItd2lkdGg6IDExcHggMCAwIDA7Cit9CisKKy5jdXN0b20tcG9wdXAtdmVy
dGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6aW5j
cmVtZW50IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja1ZlcnQu
cG5nKSAxMSAwIDExIDA7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3Jk
ZXItd2lkdGg6IDAgMCAxMXB4IDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9wb3BvdmVyLmNzcwppbmRleCA3MzkyMWE3Li5jZjE0ZWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3MKQEAgLTg4LDExNCArODgs
MyBAQAogICAgIG1hcmdpbi1yaWdodDogLTI1cHg7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjog
MCAtNTdweDsKIH0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhciB7Ci0gICAgd2lkdGg6
IDExcHg7Ci0gICAgaGVpZ2h0OiAxMXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLWNvcm5lciB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0
LXJlc2l6ZXIgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS8qIEhvcml6b250YWwgU2Nyb2xs
YmFyIFN0eWxlcyAqLwotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhvcml6b250YWw6
Y29ybmVyLXByZXNlbnQgewotICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKLX0KLQotLnBvcG92
ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHsKLSAgICAtd2Via2l0LWJv
cmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvcml6LnBuZykgMCAxMSAwIDExOwotICAgIGJv
cmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAwIDExcHg7Ci0gICAg
bWluLXdpZHRoOiAyMHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
Omhvcml6b250YWw6aG92ZXIgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2Vz
L3RodW1iSG92ZXJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0
LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmFjdGl2ZSB7Ci0gICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLX0KLQot
LnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFsOnN0YXJ0
IHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kIHsKLSAgICBtYXJnaW4tcmlnaHQ6IDVweDsK
LX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9udGFs
OmVuZDpjb3JuZXItcHJlc2VudCB7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7Ci19Ci0KLS5wb3Bv
dmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpkZWNyZW1lbnQg
ewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAw
IDExIDAgMTE7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lk
dGg6IDAgMCAwIDExcHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2st
cGllY2U6aG9yaXpvbnRhbDppbmNyZW1lbnQgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1
cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAwIDExIDAgMTE7Ci0gICAgYm9yZGVyLWNvbG9yOiB0
cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6IDAgMTFweCAwIDA7Ci19Ci0KLS8qIFZlcnRp
Y2FsIFNjcm9sbGJhciBTdHlsZXMgKi8KLQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFy
OnZlcnRpY2FsOmNvcm5lci1wcmVzZW50IHsKLSAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwot
fQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHsKLSAgICAt
d2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYlZlcnQucG5nKSAxMSAwIDExIDA7
Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6IDExcHgg
MDsKLSAgICBtaW4taGVpZ2h0OiAyMHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyIHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJs
KEltYWdlcy90aHVtYkhvdmVyVmVydC5wbmcpIDExIDAgMTEgMDsKLX0KLQotLnBvcG92ZXIgOjot
d2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgewotICAgIC13ZWJraXQtYm9y
ZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZlVmVydC5wbmcpIDExIDAgMTEgMDsKLX0K
LQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOnN0
YXJ0IHsKLSAgICBtYXJnaW4tdG9wOiA1cHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3Jv
bGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZW5kIHsKLSAgICBtYXJnaW4tYm90dG9tOiA1cHg7
Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6
ZW5kOmNvcm5lci1wcmVzZW50IHsKLSAgICBtYXJnaW4tYm90dG9tOiA0cHg7Ci19Ci0KLS5wb3Bv
dmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZGVjcmVtZW50IHsK
LSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja1ZlcnQucG5nKSAxMSAw
IDExIDA7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6
IDExcHggMCAwIDA7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGll
Y2U6dmVydGljYWw6aW5jcmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKElt
YWdlcy90cmFja1ZlcnQucG5nKSAxMSAwIDExIDA7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3Bh
cmVudDsKLSAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7Ci19Ci0KLS8qIEZvcmNlZCBTY3Jv
bGxiYXIgTW9kZSBTdHlsZXMgKi8KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci1idXR0
b24gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3RleHRQcm9tcHQuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC90ZXh0UHJvbXB0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iY2Y1YzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC90ZXh0UHJvbXB0LmNzcwpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnN1Z2dlc3QtYm94
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZG
RjsKKyAgICBkaXNwbGF5OiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAg
IHBhZGRpbmc6IDJweDsKKyAgICB6LWluZGV4OiAxMDA7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93
OiAxMHB4IDEwcHggOHB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5zdWdnZXN0LWJv
eC52aXNpYmxlIHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLnN1Z2dlc3QtYm94IC5jb250
YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDog
MDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbWFyZ2luOiAycHggMDsKKyAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgb3ZlcmZsb3cteTogYXV0bzsKK30KKworLnN1Z2dl
c3QtYm94LWNvbnRlbnQtaXRlbSB7CisgICAgcGFkZGluZzogMXB4OworICAgIG1hcmdpbjogMDsK
KyAgICBmb250LXNpemU6IDExcHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB0ZXh0LW92
ZXJmbG93OiBlbGxpcHNpczsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKK30K
KworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbSAucHJlZml4IHsKKyAgICBmb250LXdlaWdodDog
Ym9sZDsKK30KKworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbS5zZWxlY3RlZCB7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgcmdiKDAsIDAsIDApOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigy
MzgsIDIzOCwgMjM4KTsKK30KKworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbTpob3Zlcjpub3Qo
LnNlbGVjdGVkKSB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpp
bmRleCBiMzIxMzRiLi40YzcyMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtMzAxLDYgKzMwMSwzMSBAQCBFbGVtZW50LnByb3Rv
dHlwZS5vZmZzZXRSZWxhdGl2ZVRvV2luZG93ID0gZnVuY3Rpb24odGFyZ2V0V2luZG93KQogICAg
IHJldHVybiBlbGVtZW50T2Zmc2V0OwogfQogCitFbGVtZW50LnByb3RvdHlwZS5ib3hJbldpbmRv
dyA9IGZ1bmN0aW9uKHRhcmdldFdpbmRvdywgcmVsYXRpdmVQYXJlbnQpCit7CisgICAgdGFyZ2V0
V2luZG93ID0gdGFyZ2V0V2luZG93IHx8IHRoaXMub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsK
KyAgICB2YXIgYm9keUVsZW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQuYm9keTsKKyAgICByZWxh
dGl2ZVBhcmVudCA9IHJlbGF0aXZlUGFyZW50IHx8IGJvZHlFbGVtZW50OworCisgICAgdmFyIGFu
Y2hvckJveCA9IHRoaXMub2Zmc2V0UmVsYXRpdmVUb1dpbmRvdyh3aW5kb3cpOworICAgIGFuY2hv
ckJveC53aWR0aCA9IHRoaXMub2Zmc2V0V2lkdGg7CisgICAgYW5jaG9yQm94LmhlaWdodCA9IHRo
aXMub2Zmc2V0SGVpZ2h0OworCisgICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0aGlzOworICAgIHdo
aWxlIChhbmNob3JFbGVtZW50ICYmIGFuY2hvckVsZW1lbnQgIT09IHJlbGF0aXZlUGFyZW50ICYm
IGFuY2hvckVsZW1lbnQgIT09IGJvZHlFbGVtZW50KSB7CisgICAgICAgIGlmIChhbmNob3JFbGVt
ZW50LnNjcm9sbExlZnQpCisgICAgICAgICAgICBhbmNob3JCb3gueCAtPSBhbmNob3JFbGVtZW50
LnNjcm9sbExlZnQ7CisgICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9sbFRvcCkKKyAgICAg
ICAgICAgIGFuY2hvckJveC55IC09IGFuY2hvckVsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICBh
bmNob3JFbGVtZW50ID0gYW5jaG9yRWxlbWVudC5wYXJlbnRFbGVtZW50OworICAgIH0KKworICAg
IHZhciBwYXJlbnRPZmZzZXQgPSByZWxhdGl2ZVBhcmVudC5vZmZzZXRSZWxhdGl2ZVRvV2luZG93
KHdpbmRvdyk7CisgICAgYW5jaG9yQm94LnggLT0gcGFyZW50T2Zmc2V0Lng7CisgICAgYW5jaG9y
Qm94LnkgLT0gcGFyZW50T2Zmc2V0Lnk7CisgICAgcmV0dXJuIGFuY2hvckJveDsKK30KKwogRWxl
bWVudC5wcm90b3R5cGUuc2V0VGV4dEFuZFRpdGxlID0gZnVuY3Rpb24odGV4dCkKIHsKICAgICB0
aGlzLnRleHRDb250ZW50ID0gdGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112494</attachid>
            <date>2011-10-26 06:16:58 -0700</date>
            <delta_ts>2011-11-01 07:37:34 -0700</delta_ts>
            <desc>[PATCH] Got rid of FocusRestorer</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>56691</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDA3OGVkZTE2ZDU3YjQyY2IxZDdiMjg1ODVjYzljODY0MTJhMDZiNTgKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDI1
IDE4OjI2OjU2IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ2MTMwNS4uZGM0
ODg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMS0xMC0yNiAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGF1dG9jb21wbGV0ZSBjb21ib2JveCBmb3IgQ1NTIHN0eWxlIHByb3BlcnR5IG5hbWVzL3ZhbHVl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuY29tcGxldGlvbnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fY29tcGxldGlvbnMucmVjZWl2ZWRQcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUu
X2NvbXBsZXRpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUuX3JlcG9ydENvbXBsZXRpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlLl9wb3NpdGlvbkVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3RFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlLmhhbmRsZUtleURvd24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQucHJvdG90eXBlLnJlbW92ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fb25LZXlEb3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmF1dG9Db21wbGV0ZVNvb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNS
ZWFkeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuYXBwbHlT
dWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5h
Y2NlcHRTdWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3Rv
dHlwZS5pc1N1Z2dlc3RCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJv
bXB0LnByb3RvdHlwZS50YWJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LnByb3RvdHlwZS5lbnRlcktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlLnVwS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5wcm90b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgdmlzaWJsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5nZXQgaGFzU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBl
Ll9vbnNjcm9sbHJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdn
ZXN0Qm94LnByb3RvdHlwZS5fdXBkYXRlQm94UG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX3JlbWVtYmVySW5wdXRSYW5nZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5f
b25ib3htb3VzZWRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5T
dWdnZXN0Qm94LnByb3RvdHlwZS5yZW1vdmVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fYXBwbHlTdWdnZXN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLmFj
Y2VwdFN1Z2dlc3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJldmlvdXNJdGVtKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnVwZGF0ZVN1Z2dlc3Rp
b25zU29vbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnBy
b3RvdHlwZS51cGRhdGVTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25JdGVtTW91c2VEb3duKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jcmVhdGVJdGVtRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3Rv
dHlwZS5fdXBkYXRlSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3Vn
Z2VzdEJveC5wcm90b3R5cGUuX3VwZGF0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS51cEtl
eVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5w
cm90b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnRhYktleVByZXNzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuc3Bh
Y2VLZXlQcmVzc2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAo
LnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0KToKKyAgICAgICAgKC5zdWdnZXN0LWJveC5jc3Mtc3Vn
Z2VzdC5hYm92ZS1hbmNob3IpOgorICAgICAgICAoLnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0IC5j
b250ZW50KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Vi
a2l0LXNjcm9sbGJhciwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNj
cm9sbGJhcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXItY29ybmVyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250
YWwtc2Nyb2xsIDo6LXdlYmtpdC1yZXNpemVyLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9s
bCA6Oi13ZWJraXQtcmVzaXplcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwt
c2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uLCAuY3VzdG9tLXBvcHVwLXZlcnRpY2Fs
LXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbik6CisgICAgICAgICguY3VzdG9tLXBv
cHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXI6aG9yaXpvbnRhbDpjb3Ju
ZXItcHJlc2VudCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6
LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbCk6CisgICAgICAgICguY3VzdG9tLXBv
cHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRh
bDpob3Zlcik6CisgICAgICAgICguY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXItdGh1bWI6aG9yaXpvbnRhbDphY3RpdmUpOgorICAgICAgICAoLmN1c3Rv
bS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNl
Omhvcml6b250YWw6c3RhcnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNj
cm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kKToKKyAg
ICAgICAgKC5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJh
ci10cmFjay1waWVjZTpob3Jpem9udGFsOmVuZDpjb3JuZXItcHJlc2VudCk6CisgICAgICAgICgu
Y3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2st
cGllY2U6aG9yaXpvbnRhbDpkZWNyZW1lbnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC1ob3Jp
em9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6
aW5jcmVtZW50KToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdl
YmtpdC1zY3JvbGxiYXI6dmVydGljYWw6Y29ybmVyLXByZXNlbnQpOgorICAgICAgICAoLmN1c3Rv
bS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNh
bCk6CisgICAgICAgICguY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Ny
b2xsYmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyKToKKyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVy
dGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6YWN0aXZlKToK
KyAgICAgICAgKC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxi
YXItdHJhY2stcGllY2U6dmVydGljYWw6c3RhcnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12
ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpl
bmQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNj
cm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDplbmQ6Y29ybmVyLXByZXNlbnQpOgorICAgICAg
ICAoLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFj
ay1waWVjZTp2ZXJ0aWNhbDpkZWNyZW1lbnQpOgorICAgICAgICAoLmN1c3RvbS1wb3B1cC12ZXJ0
aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDppbmNy
ZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3M6CisgICAg
ICAgICgucG9wb3Zlci5yaWdodC1ib3R0b20tYXJyb3cgLmFycm93KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL3RleHRQcm9tcHQuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5zdWdnZXN0
LWJveCk6CisgICAgICAgICguc3VnZ2VzdC1ib3gudmlzaWJsZSk6CisgICAgICAgICguc3VnZ2Vz
dC1ib3ggLmNvbnRhaW5lcik6CisgICAgICAgICguc3VnZ2VzdC1ib3gtY29udGVudC1pdGVtKToK
KyAgICAgICAgKC5zdWdnZXN0LWJveC1jb250ZW50LWl0ZW0gLnByZWZpeCk6CisgICAgICAgICgu
c3VnZ2VzdC1ib3gtY29udGVudC1pdGVtLnNlbGVjdGVkKToKKyAgICAgICAgKC5zdWdnZXN0LWJv
eC1jb250ZW50LWl0ZW06aG92ZXI6bm90KC5zZWxlY3RlZCkpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzOgorICAgICAgICAoc2V0dXBQcm90b3R5cGVVdGlsaXRp
ZXMuRWxlbWVudC5wcm90b3R5cGUuYm94SW5XaW5kb3cpOgorCiAyMDExLTEwLTI2ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByOTgzOTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGZhOTY5Mi4uZTIwMmJj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM5Niw2ICs2Mzk2LDcgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlVmlldy5jc3MnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL3NjcmlwdHNQYW5lbC5jc3MnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvdGV4dFByb21wdC5jc3MnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvdGV4dFZpZXdlci5jc3MnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvdGlt
ZWxpbmVQYW5lbC5jc3MnLAogICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBmMWMyMzg5Li5kZmY2YTNhIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjg5MDUsNiArNjg5MDUs
MTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcdGV4dFByb21wdC5jc3MiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XFRleHRQcm9tcHQuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCA3NWY0OGI5Li40ZDUy
M2ZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNv
bGVWaWV3LmpzCkBAIC02NSw3ICs2NSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1
bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5wcm9tcHRFbGVtZW50KTsKICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKIAotICAgIHRoaXMucHJv
bXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJvbXB0RWxlbWVudCwgdGhp
cy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAiLiIp
OworICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJv
bXB0RWxlbWVudCwgdGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENo
YXJhY3RlcnMgKyAiLiIsIGZhbHNlLCBmYWxzZSwgeyBjbGFzc05hbWU6ICJjc3Mtc3VnZ2VzdCIg
fSk7CiAgICAgdGhpcy5wcm9tcHQuaGlzdG9yeSA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb25z
b2xlSGlzdG9yeS5nZXQoKTsKIAogICAgIHRoaXMudG9wR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnNvbGVHcm91cChudWxsKTsKQEAgLTEwMyw2ICsxMDMsNyBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcgPSBmdW5jdGlvbihoaWRlQ29udGV4dFNlbGVjdG9yKQogCiAgICAgdGhpcy5maWx0
ZXIodGhpcy5hbGxFbGVtZW50LCBmYWxzZSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMo
KTsKKyAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInRleHRQcm9tcHQuY3NzIik7CiAKICAg
ICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRo
aXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCkBAIC0zMzEs
MTYgKzMzMiwxNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKICAgICB9LAogCi0gICAgY29tcGxldGlvbnM6
IGZ1bmN0aW9uKHdvcmRSYW5nZSwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxi
YWNrKQorICAgIGNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGZvcmNlLCBjb21wbGV0
aW9uc1JlYWR5Q2FsbGJhY2spCiAgICAgewogICAgICAgICAvLyBQYXNzIGxlc3Mgc3RvcCBjaGFy
YWN0ZXJzIHRvIHJhbmdlT2ZXb3JkIHNvIHRoZSByYW5nZSB3aWxsIGJlIGEgbW9yZSBjb21wbGV0
ZSBleHByZXNzaW9uLgogICAgICAgICB2YXIgZXhwcmVzc2lvblJhbmdlID0gd29yZFJhbmdlLnN0
YXJ0Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHdvcmRSYW5nZS5zdGFydE9mZnNldCwgRXhwcmVzc2lv
blN0b3BDaGFyYWN0ZXJzLCB0aGlzLnByb21wdEVsZW1lbnQsICJiYWNrd2FyZCIpOwogICAgICAg
ICB2YXIgZXhwcmVzc2lvblN0cmluZyA9IGV4cHJlc3Npb25SYW5nZS50b1N0cmluZygpOwogICAg
ICAgICB2YXIgcHJlZml4ID0gd29yZFJhbmdlLnRvU3RyaW5nKCk7Ci0gICAgICAgIHRoaXMuX2Nv
bXBsZXRpb25zKGV4cHJlc3Npb25TdHJpbmcsIHByZWZpeCwgYmVzdE1hdGNoT25seSwgY29tcGxl
dGlvbnNSZWFkeUNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMoZXhwcmVzc2lv
blN0cmluZywgcHJlZml4LCBmb3JjZSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKTsKICAgICB9
LAogCi0gICAgX2NvbXBsZXRpb25zOiBmdW5jdGlvbihleHByZXNzaW9uU3RyaW5nLCBwcmVmaXgs
IGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKKyAgICBfY29tcGxldGlv
bnM6IGZ1bmN0aW9uKGV4cHJlc3Npb25TdHJpbmcsIHByZWZpeCwgZm9yY2UsIGNvbXBsZXRpb25z
UmVhZHlDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBsYXN0SW5kZXggPSBleHByZXNzaW9u
U3RyaW5nLmxlbmd0aCAtIDE7CiAKQEAgLTM1MCwxMiArMzUxLDcgQEAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGRvdE5vdGF0aW9uIHx8IGJyYWNr
ZXROb3RhdGlvbikKICAgICAgICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3Ry
aW5nLnN1YnN0cigwLCBsYXN0SW5kZXgpOwogCi0gICAgICAgIGlmICghZXhwcmVzc2lvblN0cmlu
ZyAmJiAhcHJlZml4KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2soW10p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhcnNlSW50
KGV4cHJlc3Npb25TdHJpbmcsIDEwKSA9PSBleHByZXNzaW9uU3RyaW5nKSB7CisgICAgICAgIGlm
IChleHByZXNzaW9uU3RyaW5nICYmIHBhcnNlSW50KGV4cHJlc3Npb25TdHJpbmcsIDEwKSA9PSBl
eHByZXNzaW9uU3RyaW5nKSB7CiAgICAgICAgICAgICAvLyBVc2VyIGlzIGVudGVyaW5nIGZsb2F0
IHZhbHVlLCBkbyBub3Qgc3VnZ2VzdCBhbnl0aGluZy4KICAgICAgICAgICAgIGNvbXBsZXRpb25z
UmVhZHlDYWxsYmFjayhbXSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MjQsMTEgKzQyMCwx
MSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tbWFuZExpbmVBUEkubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNbY29tbWFuZExpbmVBUElbaV1dID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuX3JlcG9ydENvbXBsZXRpb25zKGJlc3RN
YXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXRO
b3RhdGlvbiwgcHJlZml4LCBPYmplY3Qua2V5cyhwcm9wZXJ0eU5hbWVzKSk7CisgICAgICAgICAg
ICB0aGlzLl9yZXBvcnRDb21wbGV0aW9ucyhjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2ssIGRvdE5v
dGF0aW9uLCBicmFja2V0Tm90YXRpb24sIHByZWZpeCwgT2JqZWN0LmtleXMocHJvcGVydHlOYW1l
cykpOwogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rp
b24oYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwg
YnJhY2tldE5vdGF0aW9uLCBwcmVmaXgsIHByb3BlcnRpZXMpIHsKKyAgICBfcmVwb3J0Q29tcGxl
dGlvbnM6IGZ1bmN0aW9uKGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaywgZG90Tm90YXRpb24sIGJy
YWNrZXROb3RhdGlvbiwgcHJlZml4LCBwcm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmIChicmFja2V0
Tm90YXRpb24pIHsKICAgICAgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICYmIHByZWZpeFswXSA9
PT0gIiciKQogICAgICAgICAgICAgICAgIHZhciBxdW90ZVVzZWQgPSAiJyI7CkBAIC00NTMsMTIg
KzQ0OSwxMCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgICAgICBpZiAocHJvcGVydHkubGVuZ3RoIDwgcHJlZml4Lmxlbmd0aCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pbmRleE9mKHByZWZpeCkg
IT09IDApCisgICAgICAgICAgICBpZiAocHJlZml4Lmxlbmd0aCAmJiBwcm9wZXJ0eS5pbmRleE9m
KHByZWZpeCkgIT09IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IHJlc3VsdHMucHVzaChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoYmVzdE1hdGNoT25seSkK
LSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uc1Jl
YWR5Q2FsbGJhY2socmVzdWx0cyk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAxNzRmMDAwLi40MmM5MWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzCkBAIC0zNiw2ICszNiw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0g
ZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJlbGVtZW50
cyIpOwogICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygiZWxlbWVudHNQYW5lbC5jc3MiKTsK
KyAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInRleHRQcm9tcHQuY3NzIik7CiAgICAgdGhp
cy5zZXRIaWRlT25EZXRhY2goKTsKIAogICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUG9wb3Zlci5qcwppbmRleCA2NGE5ZjcyMi4uNGJmZDZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwpAQCAtMzUsNyArMzUsNyBAQAog
V2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihwb3BvdmVySGVscGVyKQogewogICAgIHRo
aXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxl
bWVudC5jbGFzc05hbWUgPSAicG9wb3ZlciI7CisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9
ICJwb3BvdmVyIGN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6
b250YWwtc2Nyb2xsIjsKIAogICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuY2xhc3NO
YW1lID0gImFycm93IjsKQEAgLTExMywxNyArMTEzLDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIu
cHJvdG90eXBlID0gewogICAgICAgICBjb25zdCB0b3RhbFdpZHRoID0gd2luZG93LmlubmVyV2lk
dGg7CiAgICAgICAgIGNvbnN0IHRvdGFsSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogCi0g
ICAgICAgIHZhciBhbmNob3JCb3ggPSBhbmNob3JFbGVtZW50Lm9mZnNldFJlbGF0aXZlVG9XaW5k
b3cod2luZG93KTsKLSAgICAgICAgYW5jaG9yQm94LndpZHRoID0gYW5jaG9yRWxlbWVudC5vZmZz
ZXRXaWR0aDsKLSAgICAgICAgYW5jaG9yQm94LmhlaWdodCA9IGFuY2hvckVsZW1lbnQub2Zmc2V0
SGVpZ2h0OwotICAgICAgICB3aGlsZSAoYW5jaG9yRWxlbWVudCAmJiBhbmNob3JFbGVtZW50ICE9
PSBhbmNob3JFbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keSkgewotICAgICAgICAgICAgaWYgKGFu
Y2hvckVsZW1lbnQuc2Nyb2xsTGVmdCkKLSAgICAgICAgICAgICAgICBhbmNob3JCb3gueCAtPSBh
bmNob3JFbGVtZW50LnNjcm9sbExlZnQ7Ci0gICAgICAgICAgICBpZiAoYW5jaG9yRWxlbWVudC5z
Y3JvbGxUb3ApCi0gICAgICAgICAgICAgICAgYW5jaG9yQm94LnkgLT0gYW5jaG9yRWxlbWVudC5z
Y3JvbGxUb3A7Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50ID0gYW5jaG9yRWxlbWVudC5wYXJl
bnRFbGVtZW50OwotICAgICAgICB9Ci0KKyAgICAgICAgdmFyIGFuY2hvckJveCA9IGFuY2hvckVs
ZW1lbnQuYm94SW5XaW5kb3cod2luZG93KTsKICAgICAgICAgdmFyIG5ld0VsZW1lbnRQb3NpdGlv
biA9IHsgeDogMCwgeTogMCwgd2lkdGg6IHByZWZlcnJlZFdpZHRoICsgc2Nyb2xsZXJXaWR0aCwg
aGVpZ2h0OiBwcmVmZXJyZWRIZWlnaHQgfTsKIAogICAgICAgICB2YXIgdmVydGljYWxBbGlnbm1l
bnQ7CkBAIC0xNzEsNyArMTYxLDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCArPSBhbmNo
b3JCb3gud2lkdGggLyAyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TmFtZSA9ICJwb3BvdmVyICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxB
bGlnbm1lbnQgKyAiLWFycm93IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJw
b3BvdmVyIGN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250
YWwtc2Nyb2xsICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxBbGlnbm1l
bnQgKyAiLWFycm93IjsKICAgICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQobmV3RWxlbWVu
dFBvc2l0aW9uLnggLSBib3JkZXJXaWR0aCwgbmV3RWxlbWVudFBvc2l0aW9uLnkgLSBib3JkZXJX
aWR0aCk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0VsZW1lbnRQb3Np
dGlvbi53aWR0aCArIGJvcmRlcldpZHRoICogMiArICJweCI7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5zdHlsZS5oZWlnaHQgPSBuZXdFbGVtZW50UG9zaXRpb24uaGVpZ2h0ICsgYm9yZGVyV2lkdGgg
KiAyICsgInB4IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGQ5YWRlYjQuLmI2NzhiYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwpAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFu
ZS5Db2xvckZvcm1hdCA9IHsKICAgICBIU0xBOiAiaHNsYSIKIH0KIAotV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzID0gIiBcdFxuXCInOjssLygpIjsK
K1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIg
XHhBMFx0XG5cIic6OywvKCkiOwogCiAKIC8vIEtlZXAgaW4gc3luYyB3aXRoIFJlbmRlclN0eWxl
Q29uc3RhbnRzLmggUHNldWRvSWQgZW51bS4gQXJyYXkgYmVsb3cgY29udGFpbnMgcHNldWRvIGlk
IG5hbWVzIGZvciBjb3JyZXNwb25kaW5nIGVudW0gaW5kZXhlcy4KQEAgLTE4NzUsMTggKzE4NzUs
MzEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBpZiAoaXNFbnRlcktleShldmVudCkgfHwgaXNGaWVsZElucHV0VGVybWlu
YXRlZCkgewogICAgICAgICAgICAgICAgIC8vIEVudGVyIG9yIGNvbG9uIChmb3IgbmFtZSkvc2Vt
aWNvbG9uIG91dHNpZGUgb2Ygc3RyaW5nIChmb3IgdmFsdWUpLgogICAgICAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZl
bnQpICYmIHRoaXMuX3Byb21wdC5oYW5kbGVLZXlEb3duKGV2ZW50KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWZvcndhcmQiOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlzLkVzYy5jb2RlIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJV
KzAwMUIiKQotICAgICAgICAgICAgICAgIHJldHVybiAiY2FuY2VsIjsKLSAgICAgICAgICAgIGVs
c2UgaWYgKCFpc0VkaXRpbmdOYW1lICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmIGV2ZW50LmtleUNv
ZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuQmFja3NwYWNlLmNvZGUp
IHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSB8fCBldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVSswMDFCIikgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wcm9tcHQuaGFuZGxlS2V5
RG93bihldmVudCkpIC8vIEhpZGUgc3VnZ2VzdCBib3ggLSBkbyBub3QgY2FuY2VsLgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICByZXR1cm4gImNhbmNlbCI7
IC8vIE9ubHkgY2FuY2VsIHRoZSBlZGl0b3Igd2hlbiB0aGUgc3VnZ2VzdCBib3ggaXMgbm90IGFj
dGl2ZS4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRWRpdGluZ05hbWUgJiYgdGhpcy5fbmV3
UHJvcGVydHkgJiYgZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuS2V5cy5CYWNrc3BhY2UuY29kZSkgewogICAgICAgICAgICAgICAgIC8vIEZvciBhIG5ldyBw
cm9wZXJ0eSwgd2hlbiBCYWNrc3BhY2UgaXMgcHJlc3NlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIG5l
dyBwcm9wZXJ0eSB2YWx1ZSwgbW92ZSBiYWNrIHRvIHRoZSBwcm9wZXJ0eSBuYW1lLgogICAgICAg
ICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiAhc2VsZWN0aW9uLmZvY3VzT2Zm
c2V0KSB7CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAibW92ZS1iYWNrd2FyZCI7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDA5
IikgLy8gVGFiIGtleS4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIlUrMDAwOSIpIHsgLy8gVGFiIGtleS4KKyAgICAgICAgICAgICAgICAvLyBUYWIgYWNj
ZXB0cyB0aGUgcHJvcGVydHkgbmFtZSBzdWdnZXN0aW9uL2NvbXBsZXRpb24gYW5kIHRyYW5zaXRp
b25zIHRvIHRoZSB2YWx1ZSBmaWVsZC4KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJvbXB0
LmhhbmRsZUtleURvd24oZXZlbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2Fy
ZCIgOiAiZm9yd2FyZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9wcm9t
cHQuaGFuZGxlS2V5RG93bihldmVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBw
YXN0ZUhhbmRsZXIoY29udGV4dCwgZXZlbnQpCkBAIC0xOTI1LDcgKzE5MzgsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29u
ZmlnLnNldFBhc3RlSGFuZGxlcihpc0VkaXRpbmdOYW1lID8gcGFzdGVIYW5kbGVyLmJpbmQodGhp
cywgY29udGV4dCkgOiBudWxsKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhz
ZWxlY3RFbGVtZW50LCBjb25maWcpOwogCi0gICAgICAgIHRoaXMuX3Byb21wdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQoc2VsZWN0RWxlbWVu
dCwgaXNFZGl0aW5nTmFtZSA/IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29t
cGxldGlvbnMgOiBXZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5
KHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRlbnQpKTsKKyAgICAgICAgdGhpcy5fcHJvbXB0ID0g
bmV3IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdChzZWxl
Y3RFbGVtZW50LCBpc0VkaXRpbmdOYW1lLCBpc0VkaXRpbmdOYW1lID8gV2ViSW5zcGVjdG9yLkNT
U0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA6IFdlYkluc3BlY3Rvci5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuZm9yUHJvcGVydHkodGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCksIHRo
aXMuX2FwcGx5RnJlZUZsb3dTdHlsZVRleHRFZGl0LmJpbmQodGhpcywgdHJ1ZSksIHVuZGVmaW5l
ZCk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHNlbGVj
dEVsZW1lbnQsIDAsIHNlbGVjdEVsZW1lbnQsIDEpOwogICAgIH0sCiAKQEAgLTIyNTYsMjYgKzIy
NjksMjEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUu
X19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXAKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5UZXh0UHJvbXB0fQogICovCi1XZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQgPSBmdW5jdGlvbihlbGVtZW50LCBjc3NDb21w
bGV0aW9ucykKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21w
dCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGlzRWRpdGluZ05hbWUsIGNzc0NvbXBsZXRpb25zLCBhcHBs
eUl0ZW1DYWxsYmFjaywgYWNjZXB0Q2FsbGJhY2spCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuY2FsbCh0aGlzLCBlbGVtZW50LCB0aGlzLl9idWlsZFByb3BlcnR5Q29tcGxldGlvbnMu
YmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxp
bWl0ZXJzLCB0cnVlKTsKKyAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5jYWxsKHRoaXMsIGVs
ZW1lbnQsIHRoaXMuX2J1aWxkUHJvcGVydHlDb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMsIHRydWUsIHRydWUs
IHsgYXBwbHlDYWxsYmFjazogYXBwbHlJdGVtQ2FsbGJhY2ssIGFjY2VwdENhbGxiYWNrOiBhY2Nl
cHRDYWxsYmFjaywgY2xhc3NOYW1lOiAiY3NzLXN1Z2dlc3QiIH0pOworICAgIHRoaXMuX2lzRWRp
dGluZ05hbWUgPSBpc0VkaXRpbmdOYW1lOwogICAgIHRoaXMuX2Nzc0NvbXBsZXRpb25zID0gY3Nz
Q29tcGxldGlvbnM7CiB9CiAKIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9w
ZXJ0eVByb21wdC5wcm90b3R5cGUgPSB7Ci0gICAgdXBLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2hhbmRsZU5hbWVPclZhbHVlVXBEb3duKGV2ZW50KTsK
LSAgICB9LAotCi0gICAgZG93bktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgdGhpcy5faGFuZGxlTmFtZU9yVmFsdWVVcERvd24oZXZlbnQpOwotICAgIH0sCi0KICAg
ICB0YWJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuYWNj
ZXB0QXV0b0NvbXBsZXRlKCk7CisgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUo
KSkgeworICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5hY2NlcHRTdWdnZXN0aW9uKCk7Cisg
ICAgICAgICAgICByZXR1cm4gIXRoaXMuX2lzRWRpdGluZ05hbWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7CiAgICAgfSwKIAogICAgIF9oYW5k
bGVOYW1lT3JWYWx1ZVVwRG93bjogZnVuY3Rpb24oZXZlbnQpCkBAIC0yMzA4LDI0ICsyMzE2LDE0
IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZSh3b3JkU3VmZml4UmFuZ2UpOwog
ICAgIH0sCiAKLSAgICBfYnVpbGRQcm9wZXJ0eUNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFu
Z2UsIGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKKyAgICBfYnVpbGRQ
cm9wZXJ0eUNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGZvcmNlLCBjb21wbGV0aW9u
c1JlYWR5Q2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgcHJlZml4ID0gd29yZFJhbmdlLnRv
U3RyaW5nKCkudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgaWYgKCFwcmVmaXggJiYgYmVzdE1hdGNo
T25seSkKKyAgICAgICAgaWYgKCFwcmVmaXggJiYgIWZvcmNlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHZhciByZXN1bHRzOwotICAgICAgICBpZiAoYmVzdE1hdGNoT25seSkgewot
ICAgICAgICAgICAgcmVzdWx0cyA9IFtdOwotICAgICAgICAgICAgdmFyIGZpcnN0TWF0Y2ggPSB0
aGlzLl9jc3NDb21wbGV0aW9ucy5maXJzdFN0YXJ0c1dpdGgocHJlZml4KTsKLSAgICAgICAgICAg
IGlmIChmaXJzdE1hdGNoKQotICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChmaXJzdE1hdGNo
KTsKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0cyk7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHRzID0gdGhpcy5fY3NzQ29tcGxldGlvbnMuc3Rh
cnRzV2l0aChwcmVmaXgpOwotICAgICAgICBpZiAocmVzdWx0cykKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25zUmVhZHlDYWxsYmFjayhyZXN1bHRzKTsKKyAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlz
Ll9jc3NDb21wbGV0aW9ucy5zdGFydHNXaXRoKHByZWZpeCk7CisgICAgICAgIGNvbXBsZXRpb25z
UmVhZHlDYWxsYmFjayhyZXN1bHRzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcwppbmRleCBmZDBkYmIwLi45MDc1ZmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9t
cHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0
LmpzCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSwxOSArMzAsMjggQEAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge2Jvb2xl
YW49fSBvbWl0SGlzdG9yeQorICogQHBhcmFtIHtib29sZWFuPX0gZWxlbWVudEhhc0V4dGVybmFs
S2V5RG93bkhhbmRsZXIKKyAqIEBwYXJhbSB7Kj19IHN1Z2dlc3RCb3hDb25maWcKICAqLwotV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQgPSBmdW5jdGlvbihlbGVtZW50LCBjb21wbGV0aW9ucywgc3Rv
cENoYXJhY3RlcnMsIG9taXRIaXN0b3J5KQorV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQgPSBmdW5j
dGlvbihlbGVtZW50LCBjb21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMsIG9taXRIaXN0b3J5LCBl
bGVtZW50SGFzRXh0ZXJuYWxLZXlEb3duSGFuZGxlciwgc3VnZ2VzdEJveENvbmZpZykKIHsKICAg
ICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJ0ZXh0LXByb21wdCIpOwotICAgIHRoaXMuY29tcGxldGlvbnMgPSBjb21wbGV0aW9uczsKLSAg
ICB0aGlzLmNvbXBsZXRpb25TdG9wQ2hhcmFjdGVycyA9IHN0b3BDaGFyYWN0ZXJzOworICAgIHRo
aXMuX2NvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CisgICAgdGhpcy5fY29tcGxldGlvblN0b3BD
aGFyYWN0ZXJzID0gc3RvcENoYXJhY3RlcnM7CiAgICAgaWYgKCFvbWl0SGlzdG9yeSkgewogICAg
ICAgICB0aGlzLmhpc3RvcnkgPSBbXTsKICAgICAgICAgdGhpcy5oaXN0b3J5T2Zmc2V0ID0gMDsK
ICAgICB9Ci0gICAgdGhpcy5fYm91bmRPbktleURvd24gPSB0aGlzLl9vbktleURvd24uYmluZCh0
aGlzKTsKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMu
X2JvdW5kT25LZXlEb3duLCB0cnVlKTsKKyAgICBpZiAoIWVsZW1lbnRIYXNFeHRlcm5hbEtleURv
d25IYW5kbGVyKSB7CisgICAgICAgIHRoaXMuX2JvdW5kT25LZXlEb3duID0gdGhpcy5fb25LZXlE
b3duLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJr
ZXlkb3duIiwgdGhpcy5fYm91bmRPbktleURvd24sIHRydWUpOworICAgIH0KKyAgICBpZiAoc3Vn
Z2VzdEJveENvbmZpZykgeworICAgICAgICB0aGlzLl9zdWdnZXN0Qm94ID0gbmV3IFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3godGhpcywgZWxlbWVudCwgc3VnZ2VzdEJveENvbmZp
Zy5jbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hcHBseUNhbGxiYWNrID0gc3VnZ2VzdEJveENv
bmZpZy5hcHBseUNhbGxiYWNrOworICAgICAgICB0aGlzLl9hY2NlcHRDYWxsYmFjayA9IHN1Z2dl
c3RCb3hDb25maWcuYWNjZXB0Q2FsbGJhY2s7CisgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5wcm90b3R5cGUgPSB7CkBAIC02Miw0MCArNzIsNjggQEAgV2ViSW5zcGVjdG9yLlRl
eHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLm1vdmVDYXJldFRvRW5kT2ZQcm9t
cHQoKTsKICAgICB9LAogCisgICAgaGFuZGxlS2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fb25LZXlEb3duKGV2ZW50KTsKKyAgICB9LAorCiAgICAg
cmVtb3ZlRnJvbUVsZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuY2xlYXJB
dXRvQ29tcGxldGUodHJ1ZSk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRPbktleURvd24sIHRydWUpOworICAgICAgICBpZiAo
dGhpcy5fYm91bmRPbktleURvd24pCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2JvdW5kT25LZXlEb3duLCB0cnVlKTsKKyAgICAg
ICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3gpCisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LnJl
bW92ZUZyb21FbGVtZW50KCk7CiAgICAgfSwKIAogICAgIF9vbktleURvd246IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZGVmYXVsdEFjdGlvbigpCisgICAgICAgIC8q
KgorICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBmb3JjZUF1dG9jb21wbGV0ZQorICAgICAg
ICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZGVmYXVsdEFjdGlvbihmb3JjZUF1dG9jb21wbGV0ZSkK
ICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSgpOwotICAgICAg
ICAgICAgdGhpcy5hdXRvQ29tcGxldGVTb29uKCk7CisgICAgICAgICAgICB0aGlzLmNsZWFyQXV0
b0NvbXBsZXRlKHRydWUpOworICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVTb29uKGZvcmNl
QXV0b2NvbXBsZXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChldmVudC5oYW5kbGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBoYW5kbGVkID0gZmFsc2U7CisgICAg
ICAgIHZhciBoYW5kbGVkOwogCiAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5SWRlbnRpZmllcikg
ewogICAgICAgICAgICAgY2FzZSAiVXAiOgotICAgICAgICAgICAgICAgIHRoaXMudXBLZXlQcmVz
c2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy51cEtleVByZXNzZWQo
ZXZlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiRG93biI6
Ci0gICAgICAgICAgICAgICAgdGhpcy5kb3duS2V5UHJlc3NlZChldmVudCk7CisgICAgICAgICAg
ICAgICAgaGFuZGxlZCA9IHRoaXMuZG93bktleVByZXNzZWQoZXZlbnQpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAiVSswMDA5IjogLy8gVGFiCi0gICAgICAgICAg
ICAgICAgdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgIkVudGVyIjoKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5l
bnRlcktleVByZXNzZWQoZXZlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSAiUmlnaHQiOgogICAgICAgICAgICAgY2FzZSAiRW5kIjoKICAgICAgICAgICAgICAg
ICBpZiAoIXRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRo
aXMuYXV0b0NvbXBsZXRlU29vbigpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAiVSswMDFCIjogLy8gRXNjCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdn
ZXN0Qm94VmlzaWJsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3gu
aGlkZSgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAiVSsw
MDIwIjogLy8gU3BhY2UKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAhZXZl
bnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleSkgeworICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0QWN0aW9uLmNhbGwodGhpcywgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1N1Z2dl
c3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuX3N1
Z2dlc3RCb3guc3BhY2VLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSAiQWx0IjoKICAgICAgICAg
ICAgIGNhc2UgIk1ldGEiOgogICAgICAgICAgICAgY2FzZSAiU2hpZnQiOgpAQCAtMTI4LDYgKzE2
Niw4IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoYW5kbGVkOwogICAgIH0sCiAKICAg
ICBhY2NlcHRBdXRvQ29tcGxldGU6IGZ1bmN0aW9uKCkKQEAgLTEzNSw2ICsxNzUsOSBAQCBXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5hdXRv
Q29tcGxldGVFbGVtZW50IHx8ICF0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQucGFyZW50Tm9kZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RC
b3hWaXNpYmxlKCkpCisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LmFjY2VwdFN1Z2dlc3Rp
b24oKTsKKwogICAgICAgICB2YXIgdGV4dCA9IHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC50ZXh0
Q29udGVudDsKICAgICAgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
dGV4dCk7CiAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5wYXJlbnROb2RlLnJlcGxh
Y2VDaGlsZCh0ZXh0Tm9kZSwgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50KTsKQEAgLTE4OSwxMyAr
MjMyLDE5IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX3VzZXJFbnRlcmVkVGV4dDsKICAgICB9LAogCi0gICAgYXV0b0NvbXBsZXRl
U29vbjogZnVuY3Rpb24oKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGZvcmNl
CisgICAgICovCisgICAgYXV0b0NvbXBsZXRlU29vbjogZnVuY3Rpb24oZm9yY2UpCiAgICAgewog
ICAgICAgICBpZiAoISgiX2NvbXBsZXRlVGltZW91dCIgaW4gdGhpcykpCi0gICAgICAgICAgICB0
aGlzLl9jb21wbGV0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY29tcGxldGUuYmluZCh0aGlz
LCB0cnVlKSwgMjUwKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlVGltZW91dCA9IHNldFRp
bWVvdXQodGhpcy5jb21wbGV0ZS5iaW5kKHRoaXMsIHRydWUsIGZvcmNlKSwgdGhpcy5pc1N1Z2dl
c3RCb3hWaXNpYmxlKCkgPyAwIDogMjUwKTsKICAgICB9LAogCi0gICAgY29tcGxldGU6IGZ1bmN0
aW9uKGF1dG8sIHJldmVyc2UpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gcmV2
ZXJzZQorICAgICAqLworICAgIGNvbXBsZXRlOiBmdW5jdGlvbihhdXRvLCBmb3JjZSwgcmV2ZXJz
ZSkKICAgICB7CiAgICAgICAgIHRoaXMuY2xlYXJBdXRvQ29tcGxldGUodHJ1ZSk7CiAgICAgICAg
IHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CkBAIC0yMDUsMjEgKzI1NCwz
NSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBz
ZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogICAgICAgICB2YXIgaXNF
bXB0eUlucHV0ID0gc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIgPT09IHRo
aXMuZWxlbWVudDsgLy8gdGhpcy5lbGVtZW50IGhhcyBubyBjaGlsZCBUZXh0IG5vZGVzLgogCisg
ICAgICAgIHZhciBzaG91bGRFeGl0OworCiAgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIGF1
dG8tY29tcGxldGUgYW4gZW1wdHkgaW5wdXQgaW4gdGhlIGF1dG8gbW9kZSAob25seSBvbiBkZW1h
bmQpLgotICAgICAgICBpZiAoYXV0byAmJiBpc0VtcHR5SW5wdXQpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChhdXRvICYmIGlzRW1wdHlJbnB1dCAmJiAhZm9yY2UpCisgICAgICAg
ICAgICBzaG91bGRFeGl0ID0gdHJ1ZTsKICAgICAgICAgaWYgKCFhdXRvICYmICFpc0VtcHR5SW5w
dXQgJiYgIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVzY2VuZGFu
dCh0aGlzLmVsZW1lbnQpKQorICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CisgICAgICAg
IGlmIChhdXRvICYmICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkgJiYgIWZvcmNlKQorICAg
ICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CisKKyAgICAgICAgaWYgKHNob3VsZEV4aXQpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKKyAgICAgICAgICAg
ICAgICB0aGlzLl9zdWdnZXN0Qm94LmhpZGUoKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgaWYgKGF1dG8gJiYgIXRoaXMuaXNDYXJldEF0RW5kT2ZQcm9tcHQoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgdmFyIHdvcmRQcmVmaXhSYW5nZSA9IHNlbGVjdGlvblJhbmdlLnN0
YXJ0Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0LCB0aGlz
LmNvbXBsZXRpb25TdG9wQ2hhcmFjdGVycywgdGhpcy5lbGVtZW50LCAiYmFja3dhcmQiKTsKLSAg
ICAgICAgdGhpcy5jb21wbGV0aW9ucyh3b3JkUHJlZml4UmFuZ2UsIGF1dG8sIHRoaXMuX2NvbXBs
ZXRpb25zUmVhZHkuYmluZCh0aGlzLCBzZWxlY3Rpb24sIGF1dG8sIHdvcmRQcmVmaXhSYW5nZSwg
cmV2ZXJzZSkpOworICAgICAgICB9CisgICAgICAgIHZhciB3b3JkUHJlZml4UmFuZ2UgPSBzZWxl
Y3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFy
dE9mZnNldCwgdGhpcy5fY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzLCB0aGlzLmVsZW1lbnQsICJi
YWNrd2FyZCIpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9ucyh3b3JkUHJlZml4UmFuZ2UsIGZv
cmNlLCB0aGlzLl9jb21wbGV0aW9uc1JlYWR5LmJpbmQodGhpcywgc2VsZWN0aW9uLCBhdXRvLCB3
b3JkUHJlZml4UmFuZ2UsIHJldmVyc2UpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICovCiAgICAgX2NvbXBsZXRp
b25zUmVhZHk6IGZ1bmN0aW9uKHNlbGVjdGlvbiwgYXV0bywgb3JpZ2luYWxXb3JkUHJlZml4UmFu
Z2UsIHJldmVyc2UsIGNvbXBsZXRpb25zKQogICAgIHsKLSAgICAgICAgaWYgKCFjb21wbGV0aW9u
cyB8fCAhY29tcGxldGlvbnMubGVuZ3RoKQorICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFj
b21wbGV0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZp
c2libGUoKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LmhpZGUoKTsKICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIHZhciBzZWxlY3Rpb25SYW5nZSA9
IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogCkBAIC0yMzAsNiArMjkzLDE0IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG9yaWdpbmFsV29yZFBy
ZWZpeFJhbmdlLnRvU3RyaW5nKCkgKyBzZWxlY3Rpb25SYW5nZS50b1N0cmluZygpICE9IGZ1bGxX
b3JkUmFuZ2UudG9TdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB0aGlz
Ll91c2VyRW50ZXJlZFJhbmdlID0gZnVsbFdvcmRSYW5nZTsKKyAgICAgICAgdGhpcy5fdXNlckVu
dGVyZWRUZXh0ID0gZnVsbFdvcmRSYW5nZS50b1N0cmluZygpOworCisgICAgICAgIGlmICh0aGlz
Ll9zdWdnZXN0Qm94KSB7CisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LnVwZGF0ZVN1Z2dl
c3Rpb25zKGNvbXBsZXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybjsgLy8gRG8gbm90aGluZywg
dGhlIHN1Z2dlc3QgYm94IGlzIGRyaXZpbmcgdXMuCisgICAgICAgIH0KKwogICAgICAgICB2YXIg
d29yZFByZWZpeExlbmd0aCA9IG9yaWdpbmFsV29yZFByZWZpeFJhbmdlLnRvU3RyaW5nKCkubGVu
Z3RoOwogCiAgICAgICAgIGlmIChhdXRvKQpAQCAtMjc0LDE1ICszNDUsMTEgQEAgV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5fdXNlckVudGVyZWRSYW5nZSA9IGZ1bGxXb3JkUmFuZ2U7Ci0gICAgICAg
IHRoaXMuX3VzZXJFbnRlcmVkVGV4dCA9IGZ1bGxXb3JkUmFuZ2UudG9TdHJpbmcoKTsKLQotICAg
ICAgICBmdWxsV29yZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgICAgIHRoaXMuZWxlbWVu
dC5wcnVuZUVtcHR5VGV4dE5vZGVzKCk7Ci0KLSAgICAgICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogCiAgICAgICAgIGlmIChhdXRvKSB7CisgICAg
ICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CisgICAgICAg
ICAgICB0aGlzLmVsZW1lbnQucHJ1bmVFbXB0eVRleHROb2RlcygpOworICAgICAgICAgICAgdmFy
IGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAg
ICAgdmFyIHByZWZpeFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcoMCwgd29yZFByZWZp
eExlbmd0aCk7CiAgICAgICAgICAgICB2YXIgc3VmZml4VGV4dCA9IGNvbXBsZXRpb25UZXh0LnN1
YnN0cmluZyh3b3JkUHJlZml4TGVuZ3RoKTsKIApAQCAtMjk3LDIwICszNjQsNDcgQEAgV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBmaW5hbFNlbGVj
dGlvblJhbmdlLnNldFN0YXJ0KHByZWZpeFRleHROb2RlLCB3b3JkUHJlZml4TGVuZ3RoKTsKICAg
ICAgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHByZWZpeFRleHROb2RlLCB3b3Jk
UHJlZml4TGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb21wbGV0
aW9uVGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb21wbGV0aW9uVGV4dCk7Ci0g
ICAgICAgICAgICBmdWxsV29yZFJhbmdlLmluc2VydE5vZGUoY29tcGxldGlvblRleHROb2RlKTsK
KyAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgICAgIHNl
bGVjdGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB0aGlzLmFwcGx5U3VnZ2VzdGlvbihjb21wbGV0aW9uVGV4dCwgdHJ1ZSk7Cisg
ICAgfSwKIAotICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA+IDEpCi0gICAgICAg
ICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChjb21wbGV0aW9uVGV4dE5vZGUs
IHdvcmRQcmVmaXhMZW5ndGgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZp
bmFsU2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoY29tcGxldGlvblRleHROb2RlLCBjb21wbGV0aW9u
VGV4dC5sZW5ndGgpOworICAgIGFwcGx5U3VnZ2VzdGlvbjogZnVuY3Rpb24oY29tcGxldGlvblRl
eHQsIGlzSW50ZXJtZWRpYXRlU3VnZ2VzdGlvbikKKyAgICB7CisgICAgICAgIHRoaXMuX3VzZXJF
bnRlcmVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnBydW5l
RW1wdHlUZXh0Tm9kZXMoKTsKKyAgICAgICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICB2YXIgY29tcGxldGlvblRleHROb2RlID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoY29tcGxldGlvblRleHQpOworICAgICAgICB0aGlzLl91c2Vy
RW50ZXJlZFJhbmdlLmluc2VydE5vZGUoY29tcGxldGlvblRleHROb2RlKTsKIAotICAgICAgICAg
ICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQoY29tcGxldGlvblRleHROb2RlLCBjb21wbGV0
aW9uVGV4dC5sZW5ndGgpOwotICAgICAgICB9CisgICAgICAgIHZhciB3b3JkUHJlZml4TGVuZ3Ro
ID0gdGhpcy5fdXNlckVudGVyZWRUZXh0ID8gdGhpcy5fdXNlckVudGVyZWRUZXh0Lmxlbmd0aCA6
IDA7CiAKKyAgICAgICAgaWYgKGlzSW50ZXJtZWRpYXRlU3VnZ2VzdGlvbikKKyAgICAgICAgICAg
IGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoY29tcGxldGlvblRleHROb2RlLCB3b3JkUHJl
Zml4TGVuZ3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5n
ZS5zZXRTdGFydChjb21wbGV0aW9uVGV4dE5vZGUsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCk7CisK
KyAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQoY29tcGxldGlvblRleHROb2RlLCBj
b21wbGV0aW9uVGV4dC5sZW5ndGgpOworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93Lmdl
dFNlbGVjdGlvbigpOwogICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAg
ICAgIHNlbGVjdGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKyAgICAgICAgaWYg
KGlzSW50ZXJtZWRpYXRlU3VnZ2VzdGlvbiAmJiB0aGlzLl9hcHBseUNhbGxiYWNrKQorICAgICAg
ICAgICAgdGhpcy5fYXBwbHlDYWxsYmFjaygpOworICAgIH0sCisKKyAgICBhY2NlcHRTdWdnZXN0
aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgp
OworICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdEJveCkKKyAgICAgICAgICAgIHRoaXMuX3N1Z2dl
c3RCb3guaGlkZSgpOworICAgICAgICBpZiAodGhpcy5fYWNjZXB0Q2FsbGJhY2spCisgICAgICAg
ICAgICB0aGlzLl9hY2NlcHRDYWxsYmFjaygpOworICAgIH0sCisKKyAgICBpc1N1Z2dlc3RCb3hW
aXNpYmxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJv
eCAmJiB0aGlzLl9zdWdnZXN0Qm94LnZpc2libGU7CiAgICAgfSwKIAogICAgIGlzQ2FyZXRJbnNp
ZGVQcm9tcHQ6IGZ1bmN0aW9uKCkKQEAgLTQwNSwyNiArNDk5LDY0IEBAIFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKIAogICAgIHRhYktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMu
Y29tcGxldGUoZmFsc2UsIGV2ZW50LnNoaWZ0S2V5KTsKKyAgICAgICAgaWYgKGV2ZW50LmhhbmRs
ZWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuaXNTdWdn
ZXN0Qm94VmlzaWJsZSgpKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc3VnZ2Vz
dEJveC50YWJLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuY29t
cGxldGUoZmFsc2UsIGZhbHNlLCBldmVudC5zaGlmdEtleSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0sCisKKyAgICBlbnRlcktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50LmhhbmRsZWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX3N1Z2dlc3RCb3guZW50ZXJLZXlQcmVzc2VkKGV2ZW50KTsKKworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfSwKIAogICAgIHVwS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgeworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKKyAgICAg
ICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9zdWdnZXN0Qm94LnVwS2V5UHJlc3NlZChldmVudCk7
CisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIXRoaXMuaXNDYXJldE9uRmlyc3RMaW5lKCkpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
ZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAgICAgICAgIHRoaXMuX21vdmVCYWNrSW5IaXN0b3J5KCk7
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKICAgICBkb3duS2V5UHJlc3NlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuaXNDYXJldE9uTGFzdExpbmUo
KSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGV2ZW50LmhhbmRsZWQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94Vmlz
aWJsZSgpKSB7CisgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3N1Z2dlc3RCb3guZG93bktl
eVByZXNzZWQoZXZlbnQpOworICAgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICB9CisKKyAgICAgIGlmICghdGhpcy5pc0NhcmV0T25MYXN0TGlu
ZSgpKQorICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBldmVudC5oYW5kbGVkID0g
dHJ1ZTsKICAgICAgICAgdGhpcy5fbW92ZUZvcndhcmRJbkhpc3RvcnkoKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSwKIAogICAgIF9tb3ZlQmFja0luSGlzdG9yeTogZnVuY3Rpb24oKQpA
QCAtNDc1LDMgKzYwNywzMDEgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKICAgICB9CiB9CisKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveCA9IGZ1bmN0aW9uKHRleHRQcm9tcHQsIGlucHV0RWxlbWVudCwgY2xhc3NOYW1lKQorewor
ICAgIHRoaXMuX3RleHRQcm9tcHQgPSB0ZXh0UHJvbXB0OworICAgIHRoaXMuX3BhcmVudEVsZW1l
bnQgPSBpbnB1dEVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5OworICAgIHRoaXMuX2lucHV0RWxl
bWVudCA9IGlucHV0RWxlbWVudDsKKyAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSBudWxsOwor
ICAgIHRoaXMuX2JvdW5kT25TY3JvbGwgPSB0aGlzLl9vbnNjcm9sbHJlc2l6ZS5iaW5kKHRoaXMs
IHRydWUpOworICAgIHRoaXMuX2JvdW5kT25SZXNpemUgPSB0aGlzLl9vbnNjcm9sbHJlc2l6ZS5i
aW5kKHRoaXMsIGZhbHNlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwg
dGhpcy5fYm91bmRPblNjcm9sbCwgdHJ1ZSk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
InJlc2l6ZSIsIHRoaXMuX2JvdW5kT25SZXNpemUsIHRydWUpOworCisgICAgdGhpcy5lbGVtZW50
ID0gdGhpcy5fcGFyZW50RWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInN1Z2dlc3QtYm94IGN1
c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xs
ICIgKyAoY2xhc3NOYW1lIHx8ICIiKSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX29uYm94bW91c2Vkb3duLmJpbmQodGhpcyksIHRydWUpOwor
ICAgIHRoaXMuY29udGFpbmVyRWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2
IiwgImNvbnRhaW5lciIpOworICAgIHRoaXMuY29udGVudEVsZW1lbnQgPSB0aGlzLmNvbnRhaW5l
ckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJjb250ZW50Iik7CisKKyAgICB0aGlzLl91cGRh
dGVCb3hQb3NpdGlvbigpOworfQorCitXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94
LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgdmlzaWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5lbGVtZW50Lmhhc1N0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICB9LAorCisgICAgZ2V0
IGhhc1NlbGVjdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl9zZWxlY3RlZEVs
ZW1lbnQ7CisgICAgfSwKKworICAgIF9vbnNjcm9sbHJlc2l6ZTogZnVuY3Rpb24oaXNTY3JvbGws
IGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGlzU2Nyb2xsICYmIHRoaXMuZWxlbWVudC5pc0Fu
Y2VzdG9yKGV2ZW50LnRhcmdldCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMu
X3VwZGF0ZUJveFBvc2l0aW9uKCk7CisgICAgfSwKKworICAgIF91cGRhdGVCb3hQb3NpdGlvbjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gTWVhc3VyZSB0aGUgY29udGVudCBlbGVtZW50
IGJveC4KKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gImlubGlu
ZS1ibG9jayI7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50
RWxlbWVudCk7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQucG9zaXRpb25BdCgwLCAwKTsK
KyAgICAgICAgdmFyIGNvbnRlbnRXaWR0aCA9IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lk
dGg7CisgICAgICAgIHZhciBjb250ZW50SGVpZ2h0ID0gdGhpcy5jb250ZW50RWxlbWVudC5vZmZz
ZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJi
bG9jayI7CisgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNv
bnRlbnRFbGVtZW50KTsKKworICAgICAgICAvLyBMYXkgb3V0IHRoZSBzdWdnZXN0LWJveCByZWxh
dGl2ZSB0byB0aGUgYW5jaG9yQm94LgorICAgICAgICBjb25zdCBhbmNob3JCb3ggPSB0aGlzLl9p
bnB1dEVsZW1lbnQuYm94SW5XaW5kb3cod2luZG93LCB0aGlzLl9wYXJlbnRFbGVtZW50KTsKKyAg
ICAgICAgY29uc3Qgc3VnZ2VzdEJveFBhZGRpbmdYID0gMjE7CisgICAgICAgIGNvbnN0IHN1Z2dl
c3RCb3hQYWRkaW5nWSA9IDEyOworICAgICAgICBjb25zdCBzcGFjZXIgPSA2OworICAgICAgICBj
b25zdCBtaW5IZWlnaHQgPSA1MDsKKyAgICAgICAgY29uc3QgbWF4V2lkdGggPSBkb2N1bWVudC5i
b2R5Lm9mZnNldFdpZHRoIC0gYW5jaG9yQm94LnggLSBzcGFjZXI7CisgICAgICAgIGNvbnN0IHdp
ZHRoID0gTWF0aC5taW4oY29udGVudFdpZHRoLCBtYXhXaWR0aCAtIHN1Z2dlc3RCb3hQYWRkaW5n
WCkgKyBzdWdnZXN0Qm94UGFkZGluZ1g7CisKKyAgICAgICAgdmFyIG1heEhlaWdodCA9IGRvY3Vt
ZW50LmJvZHkub2Zmc2V0SGVpZ2h0IC0gYW5jaG9yQm94LnkgLSBhbmNob3JCb3guaGVpZ2h0IC0g
c3BhY2VyOworICAgICAgICB2YXIgcGFkZGVkSGVpZ2h0ID0gY29udGVudEhlaWdodCArIHN1Z2dl
c3RCb3hQYWRkaW5nWTsKKyAgICAgICAgdmFyIGhlaWdodCA9IE1hdGgubWluKHBhZGRlZEhlaWdo
dCwgbWF4SGVpZ2h0KTsKKyAgICAgICAgaWYgKGhlaWdodCA+PSBtaW5IZWlnaHQgfHwgaGVpZ2h0
ID09PSBwYWRkZWRIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIExvY2F0ZSB0aGUgc3VnZ2VzdCBi
b3ggdW5kZXIgdGhlIGFuY2hvckJveC4KKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wb3NpdGlv
bkF0KGFuY2hvckJveC54LCBhbmNob3JCb3gueSArIGFuY2hvckJveC5oZWlnaHQpOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImFib3ZlLWFuY2hvciIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTG9jYXRlIHRoZSBzdWdnZXN0IGJveCBhYm92
ZSB0aGUgYW5jaG9yQm94LgorICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYW5jaG9yQm94LnkgLSBz
cGFjZXI7CisgICAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1pbihjb250ZW50SGVpZ2h0LCBtYXhI
ZWlnaHQgLSBzdWdnZXN0Qm94UGFkZGluZ1kpICsgc3VnZ2VzdEJveFBhZGRpbmdZOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQoYW5jaG9yQm94LngsIGFuY2hvckJveC55IC0g
aGVpZ2h0KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJhYm92ZS1h
bmNob3IiKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB3
aWR0aCArICJweCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQg
KyAicHgiOworICAgIH0sCisKKyAgICBfcmVtZW1iZXJJbnB1dFJhbmdlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
ICAgICBpZiAoc2VsZWN0aW9uLnJhbmdlQ291bnQpIHsKKyAgICAgICAgICAgIHZhciByYW5nZSA9
IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0RWxl
bWVudCA9PT0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIgfHwgdGhpcy5faW5wdXRFbGVt
ZW50LmlzQW5jZXN0b3IocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIpKQorICAgICAgICAg
ICAgICAgIHRoaXMuaW5wdXRSYW5nZSA9IHJhbmdlOworICAgICAgICB9CisgICAgfSwKKworICAg
IF9vbmJveG1vdXNlZG93bjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtZW1i
ZXJJbnB1dFJhbmdlKCk7CisgICAgfSwKKworICAgIGhpZGU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJ2aXNpYmxlIik7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ7CisgICAgfSwKKworICAgIHJlbW92ZUZyb21FbGVtZW50
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
c2Nyb2xsIiwgdGhpcy5fYm91bmRPblNjcm9sbCwgdHJ1ZSk7CisgICAgICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9ib3VuZE9uUmVzaXplLCB0cnVlKTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSB0ZXh0CisgICAg
ICogQHBhcmFtIHtib29sZWFuPX0gaXNJbnRlcm1lZGlhdGVTdWdnZXN0aW9uCisgICAgICovCisg
ICAgX2FwcGx5U3VnZ2VzdGlvbjogZnVuY3Rpb24odGV4dCwgaXNJbnRlcm1lZGlhdGVTdWdnZXN0
aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnZpc2libGUgfHwgISh0ZXh0IHx8IHRoaXMu
X3NlbGVjdGVkRWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICB2YXIgc3VnZ2VzdGlvbiA9IHRleHQgfHwgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LnRl
eHRDb250ZW50OworICAgICAgICBpZiAoIXN1Z2dlc3Rpb24pCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgdGhpcy5fdGV4dFByb21wdC5hcHBseVN1Z2dlc3Rpb24oc3VnZ2Vz
dGlvbiwgaXNJbnRlcm1lZGlhdGVTdWdnZXN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gdGV4dAorICAgICAqLwor
ICAgIGFjY2VwdFN1Z2dlc3Rpb246IGZ1bmN0aW9uKHRleHQpCisgICAgeworICAgICAgICB2YXIg
cmVzdWx0ID0gdGhpcy5fYXBwbHlTdWdnZXN0aW9uKHRleHQsIGZhbHNlKTsKKyAgICAgICAgdGhp
cy5oaWRlKCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHRoaXMuX3RleHRQcm9tcHQuYWNjZXB0U3VnZ2VzdGlvbigpOworCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBfb25OZXh0SXRlbTogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNo
aWxkTm9kZXM7CisgICAgICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCisgICAgICAg
ICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQubmV4dFNp
YmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlzLmNvbnRlbnRFbGVtZW50LmZp
cnN0Q2hpbGQ7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbigpOworICAgICAgICB0aGlz
Ll9hcHBseVN1Z2dlc3Rpb24odW5kZWZpbmVkLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfSwKKworICAgIF9vblByZXZpb3VzSXRlbTogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkTm9kZXM7Cisg
ICAgICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCisgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQucHJldmlvdXNTaWJsaW5nIHx8
IHRoaXMuY29udGVudEVsZW1lbnQubGFzdENoaWxkOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlzLmNvbnRlbnRFbGVtZW50Lmxhc3RDaGlsZDsK
KyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMuX2FwcGx5U3Vn
Z2VzdGlvbih1bmRlZmluZWQsIHRydWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisg
ICAgICovCisgICAgdXBkYXRlU3VnZ2VzdGlvbnNTb29uOiBmdW5jdGlvbihjb21wbGV0aW9ucykK
KyAgICB7CisgICAgICAgIGlmICghKCJfc3VnZ2VzdFRpbWVvdXQiIGluIHRoaXMpKQorICAgICAg
ICAgICAgdGhpcy5fc3VnZ2VzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMudXBkYXRlU3VnZ2Vz
dGlvbnMuYmluZCh0aGlzLCBjb21wbGV0aW9ucyksIDEwKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICovCisgICAg
dXBkYXRlU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uKGNvbXBsZXRpb25zKQorICAgIHsKKyAgICAgICAg
aWYgKCJfc3VnZ2VzdFRpbWVvdXQiIGluIHRoaXMpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aGlzLl9zdWdnZXN0VGltZW91dCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc3VnZ2Vz
dFRpbWVvdXQ7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnNSZWFkeShjb21w
bGV0aW9ucyk7CisgICAgfSwKKworICAgIF9vbkl0ZW1Nb3VzZURvd246IGZ1bmN0aW9uKHRleHQs
IGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5hY2NlcHRTdWdnZXN0aW9uKHRleHQpOworICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZUl0ZW1FbGVtZW50OiBmdW5jdGlvbihwcmVmaXgs
IHRleHQpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJzdWdnZXN0LWJveC1jb250
ZW50LWl0ZW0gc291cmNlLWNvZGUiOworICAgICAgICBlbGVtZW50LnRhYkluZGV4ID0gLTE7Cisg
ICAgICAgIGlmIChwcmVmaXggJiYgcHJlZml4Lmxlbmd0aCAmJiAhdGV4dC5pbmRleE9mKHByZWZp
eCkpIHsKKyAgICAgICAgICAgIHZhciBwcmVmaXhFbGVtZW50ID0gZWxlbWVudC5jcmVhdGVDaGls
ZCgic3BhbiIsICJwcmVmaXgiKTsKKyAgICAgICAgICAgIHByZWZpeEVsZW1lbnQudGV4dENvbnRl
bnQgPSBwcmVmaXg7CisgICAgICAgICAgICB2YXIgc3VmZml4RWxlbWVudCA9IGVsZW1lbnQuY3Jl
YXRlQ2hpbGQoInNwYW4iLCAic3VmZml4Iik7CisgICAgICAgICAgICBzdWZmaXhFbGVtZW50LnRl
eHRDb250ZW50ID0gdGV4dC5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB2YXIgc3VmZml4RWxlbWVudCA9IGVsZW1lbnQuY3JlYXRlQ2hpbGQo
InNwYW4iLCAic3VmZml4Iik7CisgICAgICAgICAgICBzdWZmaXhFbGVtZW50LnRleHRDb250ZW50
ID0gdGV4dDsKKyAgICAgICAgfQorICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlZG93biIsIHRoaXMuX29uSXRlbU1vdXNlRG93bi5iaW5kKHRoaXMsIHRleHQpLCBmYWxzZSk7
CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0sCisKKyAgICBfdXBkYXRlSXRlbXM6IGZ1
bmN0aW9uKGl0ZW1zKQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jb250ZW50
RWxlbWVudC5jaGlsZHJlbjsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IE1hdGgubWlu
KGNoaWxkcmVuLmxlbmd0aCAtIDEsIHRoaXMuX3NlbGVjdGVkSW5kZXgpOworICAgICAgICB2YXIg
c2VsZWN0ZWRJdGVtVGV4dCA9IHRoaXMuX3NlbGVjdGVkSW5kZXggPj0gMCA/IGNoaWxkcmVuW3Ro
aXMuX3NlbGVjdGVkSW5kZXhdLnRleHRDb250ZW50IDogbnVsbDsKKyAgICAgICAgdmFyIGl0ZW1J
bmRleCA9IDA7CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RD
aGlsZDsKKyAgICAgICAgdmFyIGNoaWxkVGV4dCA9IGNoaWxkID8gY2hpbGQudGV4dENvbnRlbnQg
OiBudWxsOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ7CisKKyAgICAgICAgdmFyIHVzZXJF
bnRlcmVkVGV4dCA9IHRoaXMuX3RleHRQcm9tcHQuX3VzZXJFbnRlcmVkVGV4dDsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IGl0ZW0gPSBpdGVtc1tpXTsKKyAgICAgICAgICAgIHZhciBjdXJyZW50SXRlbUVsZW1lbnQgPSB0
aGlzLl9jcmVhdGVJdGVtRWxlbWVudCh1c2VyRW50ZXJlZFRleHQsIGl0ZW0pOworICAgICAgICAg
ICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50SXRlbUVsZW1lbnQpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CisgICAgfSwKKwor
ICAgIF91cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtaWdodCB3YW50IHNvbWUgb3B0aW1pemF0aW9uIGlmIGJlY29tZXMgYSBib3R0bGVuZWNrLgor
ICAgICAgICBmb3IgKHZhciBjaGlsZCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGlsZDsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmcpIHsKKyAgICAgICAgICAgIGlmIChjaGls
ZCAhPT0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50KQorICAgICAgICAgICAgICAgIGNoaWxkLnJlbW92
ZVN0eWxlQ2xhc3MoInNlbGVjdGVkIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX3Nl
bGVjdGVkRWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInNlbGVjdGVkIik7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQu
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICov
CisgICAgX2NvbXBsZXRpb25zUmVhZHk6IGZ1bmN0aW9uKGNvbXBsZXRpb25zKQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb21wbGV0aW9ucyB8fCAhY29tcGxldGlvbnMubGVuZ3RoKSB7CisgICAgICAg
ICAgICB0aGlzLmhpZGUoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fdXBkYXRlSXRlbXMoY29tcGxldGlvbnMpOworICAgICAgICB0aGlzLl91cGRhdGVC
b3hQb3NpdGlvbigpOworICAgICAgICBpZiAodGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5s
ZW5ndGggJiYgKHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMSB8fCB0aGlz
LmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuWzBdLnRleHRDb250ZW50Lmxlbmd0aCAhPT0gdGhpcy5f
dGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0Lmxlbmd0aCkpIHsKKyAgICAgICAgICAgIC8vIFdp
bGwgbm90IGJlIHNob3duIGlmIGEgc29sZSBzdWdnZXN0aW9uIGlzIGVxdWFsIHRvIHRoZSB1c2Vy
IGlucHV0LgorICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpc2libGUi
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICB9LAorCisg
ICAgdXBLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9vblByZXZpb3VzSXRlbShldmVudCk7CisgICAgfSwKKworICAgIGRvd25LZXlQcmVzc2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vbk5leHRJdGVt
KGV2ZW50KTsKKyAgICB9LAorCisgICAgZW50ZXJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmFjY2VwdFN1Z2dlc3Rpb24oKTsKKyAgICB9LAor
CisgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5lbnRlcktleVByZXNzZWQoZXZlbnQpOworICAgIH0sCisKKyAgICBzcGFjZUtleVBy
ZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5hY2NlcHRTdWdnZXN0
aW9uKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRG8gbm90IGluaGliaXQgYSB3aGl0ZXNw
YWNlIGVudHJ5IGFmdGVyIHRoZSBzdWdnZXN0aW9uLgorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBiZGM0ZDZhLi5jMDZjYTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBA
IC0xNjYsNiArMTY2LDcgQEAKICAgICA8ZmlsZT5yZXNvdXJjZVZpZXcuY3NzPC9maWxlPgogICAg
IDxmaWxlPnJlc291cmNlc1BhbmVsLmNzczwvZmlsZT4KICAgICA8ZmlsZT5zY3JpcHRzUGFuZWwu
Y3NzPC9maWxlPgorICAgIDxmaWxlPnRleHRQcm9tcHQuY3NzPC9maWxlPgogICAgIDxmaWxlPnRl
eHRWaWV3ZXIuY3NzPC9maWxlPgogICAgIDxmaWxlPnRpbWVsaW5lUGFuZWwuY3NzPC9maWxlPgog
ICAgIDxmaWxlPkltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZzwvZmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBmODdiNDY3
Li44MDU3NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzCkBAIC0yNTAxLDMgKzI1MDEsMTMxIEBAIGEud29ya2VyLWl0ZW06aG92ZXIg
ewogICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQorCisv
KiBDU1MgcHJvcGVydHkgbmFtZS92YWx1ZSBzdWdnZXN0aW9uICJwb3B1cCIgc3R5bGUgKi8KKwor
LnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0IHsKKyAgICBib3JkZXItcmFkaXVzOiAwIDVweCA1cHgg
NXB4OworICAgIG1hcmdpbi1sZWZ0OiAtMXB4OworICAgIGJvcmRlci1jb2xvcjogcmdiKDY2JSwg
NjYlLCA2NiUpOworICAgIC13ZWJraXQtYm94LXNoYWRvdzogOHB4IDhweCA2cHggcmdiYSg0MCwg
NDAsIDQwLCAwLjQwKTsKK30KKworLnN1Z2dlc3QtYm94LmNzcy1zdWdnZXN0LmFib3ZlLWFuY2hv
ciB7CisgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDVweCAwOworICAgIC13ZWJraXQtYm94LXNo
YWRvdzogOHB4IC04cHggNnB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5zdWdnZXN0
LWJveC5jc3Mtc3VnZ2VzdCAuY29udGVudCB7CisgICAgbWFyZ2luOiAzcHg7Cit9CisKKworLyog
Q3VzdG9tIHBvcHVwIHNjcm9sbGVycyAqLworCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Ny
b2xsIDo6LXdlYmtpdC1zY3JvbGxiYXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6
LXdlYmtpdC1zY3JvbGxiYXIgeworICAgIHdpZHRoOiAxMXB4OworICAgIGhlaWdodDogMTFweDsK
K30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFy
LWNvcm5lciwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJh
ci1jb3JuZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpv
bnRhbC1zY3JvbGwgOjotd2Via2l0LXJlc2l6ZXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Ny
b2xsIDo6LXdlYmtpdC1yZXNpemVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisuY3VzdG9t
LXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uLCAuY3Vz
dG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKworLyogQ3VzdG9tIEhvcml6b250YWwgU2Nyb2xsYmFyIFN0
eWxlcyAqLworCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3Jv
bGxiYXI6aG9yaXpvbnRhbDpjb3JuZXItcHJlc2VudCB7CisgICAgYm9yZGVyLXJpZ2h0LXdpZHRo
OiAwOworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWI6aG9yaXpvbnRhbCB7CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJ
bWFnZXMvdGh1bWJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKKyAgICBib3JkZXItY29sb3I6IHRyYW5z
cGFyZW50OworICAgIGJvcmRlci13aWR0aDogMCAxMXB4OworICAgIG1pbi13aWR0aDogMjBweDsK
K30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFy
LXRodW1iOmhvcml6b250YWw6aG92ZXIgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwo
SW1hZ2VzL3RodW1iSG92ZXJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKK30KKworLmN1c3RvbS1wb3B1
cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWw6
YWN0aXZlIHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkFjdGl2
ZUhvcml6LnBuZykgMCAxMSAwIDExOworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Ny
b2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpzdGFydCB7Cisg
ICAgbWFyZ2luLWxlZnQ6IDVweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9s
bCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kIHsKKyAgICBt
YXJnaW4tcmlnaHQ6IDVweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6
Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kOmNvcm5lci1wcmVz
ZW50IHsKKyAgICBtYXJnaW4tcmlnaHQ6IDRweDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9u
dGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZGVj
cmVtZW50IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6
LnBuZykgMCAxMSAwIDExOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9y
ZGVyLXdpZHRoOiAwIDAgMCAxMXB4OworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Ny
b2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDppbmNyZW1lbnQg
eworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAw
IDExIDAgMTE7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItd2lk
dGg6IDAgMTFweCAwIDA7Cit9CisKKy8qIEN1c3RvbSBWZXJ0aWNhbCBTY3JvbGxiYXIgU3R5bGVz
ICovCisKKy5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXI6
dmVydGljYWw6Y29ybmVyLXByZXNlbnQgeworICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Cit9
CisKKy5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1
bWI6dmVydGljYWwgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1i
VmVydC5wbmcpIDExIDAgMTEgMDsKKyAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OworICAg
IGJvcmRlci13aWR0aDogMTFweCAwOworICAgIG1pbi1oZWlnaHQ6IDIwcHg7Cit9CisKKy5jdXN0
b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGlj
YWw6aG92ZXIgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iSG92
ZXJWZXJ0LnBuZykgMTEgMCAxMSAwOworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9s
bCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSB7CisgICAgLXdlYmtp
dC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVWZXJ0LnBuZykgMTEgMCAxMSAw
OworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFy
LXRyYWNrLXBpZWNlOnZlcnRpY2FsOnN0YXJ0IHsKKyAgICBtYXJnaW4tdG9wOiA1cHg7Cit9CisK
Ky5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2st
cGllY2U6dmVydGljYWw6ZW5kIHsKKyAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cit9CisKKy5jdXN0
b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6
dmVydGljYWw6ZW5kOmNvcm5lci1wcmVzZW50IHsKKyAgICBtYXJnaW4tYm90dG9tOiA0cHg7Cit9
CisKKy5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJh
Y2stcGllY2U6dmVydGljYWw6ZGVjcmVtZW50IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTog
dXJsKEltYWdlcy90cmFja1ZlcnQucG5nKSAxMSAwIDExIDA7CisgICAgYm9yZGVyLWNvbG9yOiB0
cmFuc3BhcmVudDsKKyAgICBib3JkZXItd2lkdGg6IDExcHggMCAwIDA7Cit9CisKKy5jdXN0b20t
cG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVy
dGljYWw6aW5jcmVtZW50IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
cmFja1ZlcnQucG5nKSAxMSAwIDExIDA7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsK
KyAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9wb3BvdmVyLmNzcwppbmRleCA3MzkyMWE3Li5jZjE0ZWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3BvcG92ZXIuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3MKQEAgLTg4
LDExNCArODgsMyBAQAogICAgIG1hcmdpbi1yaWdodDogLTI1cHg7CiAgICAgYmFja2dyb3VuZC1w
b3NpdGlvbjogMCAtNTdweDsKIH0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhciB7Ci0g
ICAgd2lkdGg6IDExcHg7Ci0gICAgaGVpZ2h0OiAxMXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLWNvcm5lciB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnBvcG92ZXIg
Ojotd2Via2l0LXJlc2l6ZXIgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS8qIEhvcml6b250
YWwgU2Nyb2xsYmFyIFN0eWxlcyAqLwotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhv
cml6b250YWw6Y29ybmVyLXByZXNlbnQgewotICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKLX0K
LQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsIHsKLSAgICAt
d2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvcml6LnBuZykgMCAxMSAwIDEx
OwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAwIDEx
cHg7Ci0gICAgbWluLXdpZHRoOiAyMHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRodW1iOmhvcml6b250YWw6aG92ZXIgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1
cmwoSW1hZ2VzL3RodW1iSG92ZXJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLX0KLQotLnBvcG92ZXIg
Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmFjdGl2ZSB7Ci0gICAgLXdlYmtp
dC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVIb3Jpei5wbmcpIDAgMTEgMCAx
MTsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jpem9u
dGFsOnN0YXJ0IHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZW5kIHsKLSAgICBtYXJnaW4tcmln
aHQ6IDVweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpo
b3Jpem9udGFsOmVuZDpjb3JuZXItcHJlc2VudCB7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7Ci19
Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpk
ZWNyZW1lbnQgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrSG9y
aXoucG5nKSAwIDExIDAgMTE7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBi
b3JkZXItd2lkdGg6IDAgMCAwIDExcHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxi
YXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDppbmNyZW1lbnQgewotICAgIC13ZWJraXQtYm9yZGVy
LWltYWdlOiB1cmwoSW1hZ2VzL3RyYWNrSG9yaXoucG5nKSAwIDExIDAgMTE7Ci0gICAgYm9yZGVy
LWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6IDAgMTFweCAwIDA7Ci19Ci0K
LS8qIFZlcnRpY2FsIFNjcm9sbGJhciBTdHlsZXMgKi8KLQotCi0ucG9wb3ZlciA6Oi13ZWJraXQt
c2Nyb2xsYmFyOnZlcnRpY2FsOmNvcm5lci1wcmVzZW50IHsKLSAgICBib3JkZXItYm90dG9tLXdp
ZHRoOiAwOwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2Fs
IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYlZlcnQucG5nKSAx
MSAwIDExIDA7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lk
dGg6IDExcHggMDsKLSAgICBtaW4taGVpZ2h0OiAyMHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyIHsKLSAgICAtd2Via2l0LWJvcmRlci1p
bWFnZTogdXJsKEltYWdlcy90aHVtYkhvdmVyVmVydC5wbmcpIDExIDAgMTEgMDsKLX0KLQotLnBv
cG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUgewotICAgIC13
ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iQWN0aXZlVmVydC5wbmcpIDExIDAg
MTEgMDsKLX0KLQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZl
cnRpY2FsOnN0YXJ0IHsKLSAgICBtYXJnaW4tdG9wOiA1cHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdl
YmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZW5kIHsKLSAgICBtYXJnaW4tYm90
dG9tOiA1cHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6
dmVydGljYWw6ZW5kOmNvcm5lci1wcmVzZW50IHsKLSAgICBtYXJnaW4tYm90dG9tOiA0cHg7Ci19
Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6dmVydGljYWw6ZGVj
cmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja1ZlcnQu
cG5nKSAxMSAwIDExIDA7Ci0gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgICBib3Jk
ZXItd2lkdGg6IDExcHggMCAwIDA7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXIt
dHJhY2stcGllY2U6dmVydGljYWw6aW5jcmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFn
ZTogdXJsKEltYWdlcy90cmFja1ZlcnQucG5nKSAxMSAwIDExIDA7Ci0gICAgYm9yZGVyLWNvbG9y
OiB0cmFuc3BhcmVudDsKLSAgICBib3JkZXItd2lkdGg6IDAgMCAxMXB4IDA7Ci19Ci0KLS8qIEZv
cmNlZCBTY3JvbGxiYXIgTW9kZSBTdHlsZXMgKi8KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9s
bGJhci1idXR0b24gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRQcm9tcHQuY3NzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0UHJvbXB0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iY2Y1YzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0UHJvbXB0LmNzcwpAQCAtMCwwICsxLDc2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnN1
Z2dlc3QtYm94IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogI0ZGRkZGRjsKKyAgICBkaXNwbGF5OiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOworICAgIHBhZGRpbmc6IDJweDsKKyAgICB6LWluZGV4OiAxMDA7CisgICAgLXdlYmtpdC1i
b3gtc2hhZG93OiAxMHB4IDEwcHggOHB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5z
dWdnZXN0LWJveC52aXNpYmxlIHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKworLnN1Z2dlc3Qt
Ym94IC5jb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7Cisg
ICAgbGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbWFyZ2luOiAy
cHggMDsKKyAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgb3ZlcmZsb3cteTogYXV0bzsKK30K
KworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbSB7CisgICAgcGFkZGluZzogMXB4OworICAgIG1h
cmdpbjogMDsKKyAgICBmb250LXNpemU6IDExcHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
ICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3Bh
cmVudDsKK30KKworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbSAucHJlZml4IHsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKK30KKworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbS5zZWxlY3RlZCB7
CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDAsIDAsIDApOworICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYigyMzgsIDIzOCwgMjM4KTsKK30KKworLnN1Z2dlc3QtYm94LWNvbnRlbnQtaXRlbTpo
b3Zlcjpub3QoLnNlbGVjdGVkKSB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0
LCAyMDQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxp
dGllcy5qcwppbmRleCBiMzIxMzRiLi40YzcyMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtMzAxLDYgKzMwMSwzMSBAQCBFbGVt
ZW50LnByb3RvdHlwZS5vZmZzZXRSZWxhdGl2ZVRvV2luZG93ID0gZnVuY3Rpb24odGFyZ2V0V2lu
ZG93KQogICAgIHJldHVybiBlbGVtZW50T2Zmc2V0OwogfQogCitFbGVtZW50LnByb3RvdHlwZS5i
b3hJbldpbmRvdyA9IGZ1bmN0aW9uKHRhcmdldFdpbmRvdywgcmVsYXRpdmVQYXJlbnQpCit7Cisg
ICAgdGFyZ2V0V2luZG93ID0gdGFyZ2V0V2luZG93IHx8IHRoaXMub3duZXJEb2N1bWVudC5kZWZh
dWx0VmlldzsKKyAgICB2YXIgYm9keUVsZW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQuYm9keTsK
KyAgICByZWxhdGl2ZVBhcmVudCA9IHJlbGF0aXZlUGFyZW50IHx8IGJvZHlFbGVtZW50OworCisg
ICAgdmFyIGFuY2hvckJveCA9IHRoaXMub2Zmc2V0UmVsYXRpdmVUb1dpbmRvdyh3aW5kb3cpOwor
ICAgIGFuY2hvckJveC53aWR0aCA9IHRoaXMub2Zmc2V0V2lkdGg7CisgICAgYW5jaG9yQm94Lmhl
aWdodCA9IHRoaXMub2Zmc2V0SGVpZ2h0OworCisgICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0aGlz
OworICAgIHdoaWxlIChhbmNob3JFbGVtZW50ICYmIGFuY2hvckVsZW1lbnQgIT09IHJlbGF0aXZl
UGFyZW50ICYmIGFuY2hvckVsZW1lbnQgIT09IGJvZHlFbGVtZW50KSB7CisgICAgICAgIGlmIChh
bmNob3JFbGVtZW50LnNjcm9sbExlZnQpCisgICAgICAgICAgICBhbmNob3JCb3gueCAtPSBhbmNo
b3JFbGVtZW50LnNjcm9sbExlZnQ7CisgICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9sbFRv
cCkKKyAgICAgICAgICAgIGFuY2hvckJveC55IC09IGFuY2hvckVsZW1lbnQuc2Nyb2xsVG9wOwor
ICAgICAgICBhbmNob3JFbGVtZW50ID0gYW5jaG9yRWxlbWVudC5wYXJlbnRFbGVtZW50OworICAg
IH0KKworICAgIHZhciBwYXJlbnRPZmZzZXQgPSByZWxhdGl2ZVBhcmVudC5vZmZzZXRSZWxhdGl2
ZVRvV2luZG93KHdpbmRvdyk7CisgICAgYW5jaG9yQm94LnggLT0gcGFyZW50T2Zmc2V0Lng7Cisg
ICAgYW5jaG9yQm94LnkgLT0gcGFyZW50T2Zmc2V0Lnk7CisgICAgcmV0dXJuIGFuY2hvckJveDsK
K30KKwogRWxlbWVudC5wcm90b3R5cGUuc2V0VGV4dEFuZFRpdGxlID0gZnVuY3Rpb24odGV4dCkK
IHsKICAgICB0aGlzLnRleHRDb250ZW50ID0gdGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113170</attachid>
            <date>2011-11-01 07:37:34 -0700</date>
            <delta_ts>2011-11-03 04:13:31 -0700</delta_ts>
            <desc>[PATCH] Rebased on the refactored TextPrompt</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>55351</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGJkNmRkNDQ5NmVhZWQ5OWNmNzZhYWU2NDU3Y2Q1NjdhZjk3ZmVhZjEKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDI1
IDE4OjI2OjU2IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBhOTgzNi4uNGRl
NWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDExLTExLTAxICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YXV0b2NvbXBsZXRlIGNvbWJvYm94IGZvciBDU1Mgc3R5bGUgcHJvcGVydHkgbmFtZXMvdmFsdWVz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1MTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5w
cm90b3R5cGUuY29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZS5fY29tcGxldGlvbnMucmVjZWl2ZWRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2NvbXBsZXRpb25zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX3JlcG9ydENvbXBsZXRpb25z
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlBvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlLl9w
b3NpdGlvbkVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lk
ZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvVGV4dFByb21wdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fYXR0YWNoSW50ZXJuYWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9yZW1vdmVGcm9t
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuZGVm
YXVsdEtleUhhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90
eXBlLm9uS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5
cGUuYWNjZXB0QXV0b0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LnByb3RvdHlwZS5hdXRvQ29tcGxldGVTb29uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LnByb3RvdHlwZS5jb21wbGV0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5wcm90b3R5cGUuX2NvbXBsZXRpb25zUmVhZHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQucHJvdG90eXBlLmFwcGx5U3VnZ2VzdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuYWNjZXB0U3VnZ2VzdGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuaXNTdWdnZXN0Qm94VmlzaWJsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUubW92ZUNhcmV0VG9FbmRP
ZlByb21wdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUudGFi
S2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUu
ZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3Rv
dHlwZS51cEtleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJv
dG90eXBlLmRvd25LZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LlN1Z2dlc3RCb3hDb25maWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHRXaXRo
SGlzdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdFdpdGhIaXN0b3J5LnBy
b3RvdHlwZS5kZWZhdWx0S2V5SGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5TdWdnZXN0Qm94KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dl
c3RCb3gucHJvdG90eXBlLmdldCB2aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLmdldCBoYXNTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uc2Nyb2xscmVz
aXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90
eXBlLl91cGRhdGVCb3hQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21w
dC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25ib3htb3VzZWRvd24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuaGlkZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5yZW1vdmVGcm9tRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3Rv
dHlwZS5fYXBwbHlTdWdnZXN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LlN1Z2dlc3RCb3gucHJvdG90eXBlLmFjY2VwdFN1Z2dlc3Rpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJl
dmlvdXNJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gu
cHJvdG90eXBlLnVwZGF0ZVN1Z2dlc3Rpb25zU29vbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS51cGRhdGVTdWdnZXN0aW9ucyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fb25JdGVt
TW91c2VEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gu
cHJvdG90eXBlLl9jcmVhdGVJdGVtRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fdXBkYXRlSXRlbXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX3VwZGF0ZVNlbGVjdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlw
ZS5fY29tcGxldGlvbnNSZWFkeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5T
dWdnZXN0Qm94LnByb3RvdHlwZS51cEtleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuZG93bktleVByZXNzZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuZW50ZXJLZXlQ
cmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJv
dG90eXBlLnRhYktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQu
U3VnZ2VzdEJveC5wcm90b3R5cGUuc3BhY2VLZXlQcmVzc2VkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3M6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0UHJvbXB0LmNzczogQWRkZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgIChzZXR1
cFByb3RvdHlwZVV0aWxpdGllcy5FbGVtZW50LnByb3RvdHlwZS5ib3hJbldpbmRvdyk6CisKIDIw
MTEtMTEtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5ODg0Ny4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCAwNmE2NzViLi5iOWI0ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02NDE2LDYgKzY0MTYsNyBA
QAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VWaWV3LmNzcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvc2NyaXB0c1BhbmVsLmNzcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0UHJvbXB0LmNzcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC90aW1lbGluZVBhbmVsLmNzcycsCiAgICAgICAgIF0sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDNiYTdiNTIuLjkwMWFh
YTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC02OTA5Myw2ICs2OTA5MywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFx0ZXh0UHJvbXB0LmNzcyIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcVGV4dFByb21wdC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmlu
ZGV4IDg0ODQ4ZmIuLmU1YzUzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtMTAwLDYgKzEwMCw3IEBAIFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAKICAgICB0aGlz
LmZpbHRlcih0aGlzLmFsbEVsZW1lbnQsIGZhbHNlKTsKICAgICB0aGlzLl9yZWdpc3RlclNob3J0
Y3V0cygpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygidGV4dFByb21wdC5jc3MiKTsK
IAogICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51
IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAg
LTExMCw3ICsxMTEsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcgPSBmdW5jdGlvbihoaWRl
Q29udGV4dFNlbGVjdG9yKQogCiAgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CiAKLSAgICB0aGlzLnBy
b21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFByb21wdFdpdGhIaXN0b3J5KHRoaXMuY29tcGxl
dGlvbnMuYmluZCh0aGlzKSwgRXhwcmVzc2lvblN0b3BDaGFyYWN0ZXJzICsgIi4iKTsKKyAgICBj
b25zdCBzdWdnZXN0Qm94Q29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dl
c3RCb3hDb25maWcoImNzcy1zdWdnZXN0Iik7CisgICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHRXaXRoSGlzdG9yeSh0aGlzLmNvbXBsZXRpb25zLmJpbmQodGhpcyks
IEV4cHJlc3Npb25TdG9wQ2hhcmFjdGVycyArICIuIiwgc3VnZ2VzdEJveENvbmZpZyk7CiAgICAg
dGhpcy5wcm9tcHQuYXR0YWNoKHRoaXMucHJvbXB0RWxlbWVudCk7CiAgICAgdGhpcy5wcm9tcHQu
c2V0SGlzdG9yeURhdGEoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbnNvbGVIaXN0b3J5LmdldCgp
KTsKIH0KQEAgLTMzMiwxNiArMzM0LDE2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2xpbmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKLSAg
ICBjb21wbGV0aW9uczogZnVuY3Rpb24od29yZFJhbmdlLCBiZXN0TWF0Y2hPbmx5LCBjb21wbGV0
aW9uc1JlYWR5Q2FsbGJhY2spCisgICAgY29tcGxldGlvbnM6IGZ1bmN0aW9uKHdvcmRSYW5nZSwg
Zm9yY2UsIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKICAgICB7CiAgICAgICAgIC8vIFBhc3Mg
bGVzcyBzdG9wIGNoYXJhY3RlcnMgdG8gcmFuZ2VPZldvcmQgc28gdGhlIHJhbmdlIHdpbGwgYmUg
YSBtb3JlIGNvbXBsZXRlIGV4cHJlc3Npb24uCiAgICAgICAgIHZhciBleHByZXNzaW9uUmFuZ2Ug
PSB3b3JkUmFuZ2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQod29yZFJhbmdlLnN0YXJ0T2Zm
c2V0LCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMsIHRoaXMucHJvbXB0RWxlbWVudCwgImJhY2t3
YXJkIik7CiAgICAgICAgIHZhciBleHByZXNzaW9uU3RyaW5nID0gZXhwcmVzc2lvblJhbmdlLnRv
U3RyaW5nKCk7CiAgICAgICAgIHZhciBwcmVmaXggPSB3b3JkUmFuZ2UudG9TdHJpbmcoKTsKLSAg
ICAgICAgdGhpcy5fY29tcGxldGlvbnMoZXhwcmVzc2lvblN0cmluZywgcHJlZml4LCBiZXN0TWF0
Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2spOworICAgICAgICB0aGlzLl9jb21wbGV0
aW9ucyhleHByZXNzaW9uU3RyaW5nLCBwcmVmaXgsIGZvcmNlLCBjb21wbGV0aW9uc1JlYWR5Q2Fs
bGJhY2spOwogICAgIH0sCiAKLSAgICBfY29tcGxldGlvbnM6IGZ1bmN0aW9uKGV4cHJlc3Npb25T
dHJpbmcsIHByZWZpeCwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQor
ICAgIF9jb21wbGV0aW9uczogZnVuY3Rpb24oZXhwcmVzc2lvblN0cmluZywgcHJlZml4LCBmb3Jj
ZSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIGxhc3RJbmRl
eCA9IGV4cHJlc3Npb25TdHJpbmcubGVuZ3RoIC0gMTsKIApAQCAtMzUxLDE3ICszNTMsMTIgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGRvdE5v
dGF0aW9uIHx8IGJyYWNrZXROb3RhdGlvbikKICAgICAgICAgICAgIGV4cHJlc3Npb25TdHJpbmcg
PSBleHByZXNzaW9uU3RyaW5nLnN1YnN0cigwLCBsYXN0SW5kZXgpOwogCi0gICAgICAgIGlmICgh
ZXhwcmVzc2lvblN0cmluZyAmJiAhcHJlZml4KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uc1Jl
YWR5Q2FsbGJhY2soW10pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHBhcnNlSW50KGV4cHJlc3Npb25TdHJpbmcsIDEwKSA9PSBleHByZXNzaW9uU3RyaW5n
KSB7CisgICAgICAgIGlmIChleHByZXNzaW9uU3RyaW5nICYmIHBhcnNlSW50KGV4cHJlc3Npb25T
dHJpbmcsIDEwKSA9PSBleHByZXNzaW9uU3RyaW5nKSB7CiAgICAgICAgICAgICAvLyBVc2VyIGlz
IGVudGVyaW5nIGZsb2F0IHZhbHVlLCBkbyBub3Qgc3VnZ2VzdCBhbnl0aGluZy4KICAgICAgICAg
ICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhbXSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFleHByZXNzaW9uU3RyaW5nICYmIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBhdXNlZCkKICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmdldFNlbGVjdGVkQ2FsbEZy
YW1lVmFyaWFibGVzKHJlY2VpdmVkUHJvcGVydHlOYW1lcy5iaW5kKHRoaXMpKTsKICAgICAgICAg
ZWxzZQpAQCAtNDI1LDExICs0MjIsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRMaW5l
QVBJLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzW2NvbW1h
bmRMaW5lQVBJW2ldXSA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9y
ZXBvcnRDb21wbGV0aW9ucyhiZXN0TWF0Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2ss
IGRvdE5vdGF0aW9uLCBicmFja2V0Tm90YXRpb24sIHByZWZpeCwgT2JqZWN0LmtleXMocHJvcGVy
dHlOYW1lcykpOworICAgICAgICAgICAgdGhpcy5fcmVwb3J0Q29tcGxldGlvbnMoY29tcGxldGlv
bnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwgYnJhY2tldE5vdGF0aW9uLCBwcmVmaXgsIE9i
amVjdC5rZXlzKHByb3BlcnR5TmFtZXMpKTsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfcmVw
b3J0Q29tcGxldGlvbnM6IGZ1bmN0aW9uKGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlD
YWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXROb3RhdGlvbiwgcHJlZml4LCBwcm9wZXJ0aWVz
KSB7CisgICAgX3JlcG9ydENvbXBsZXRpb25zOiBmdW5jdGlvbihjb21wbGV0aW9uc1JlYWR5Q2Fs
bGJhY2ssIGRvdE5vdGF0aW9uLCBicmFja2V0Tm90YXRpb24sIHByZWZpeCwgcHJvcGVydGllcykg
ewogICAgICAgICBpZiAoYnJhY2tldE5vdGF0aW9uKSB7CiAgICAgICAgICAgICBpZiAocHJlZml4
Lmxlbmd0aCAmJiBwcmVmaXhbMF0gPT09ICInIikKICAgICAgICAgICAgICAgICB2YXIgcXVvdGVV
c2VkID0gIiciOwpAQCAtNDU0LDEyICs0NTEsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYgKHByb3BlcnR5Lmxlbmd0aCA8IHByZWZp
eC5sZW5ndGgpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAocHJv
cGVydHkuaW5kZXhPZihwcmVmaXgpICE9PSAwKQorICAgICAgICAgICAgaWYgKHByZWZpeC5sZW5n
dGggJiYgcHJvcGVydHkuaW5kZXhPZihwcmVmaXgpICE9PSAwKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkpOwotICAgICAgICAg
ICAgaWYgKGJlc3RNYXRjaE9ubHkpCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKHJlc3VsdHMpOwogICAgIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMK
aW5kZXggMTc0ZjAwMC4uNDJjOTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMzYsNiArMzYsNyBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFu
ZWwuY2FsbCh0aGlzLCAiZWxlbWVudHMiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1Mo
ImVsZW1lbnRzUGFuZWwuY3NzIik7CisgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJ0ZXh0
UHJvbXB0LmNzcyIpOwogICAgIHRoaXMuc2V0SGlkZU9uRGV0YWNoKCk7CiAKICAgICB0aGlzLmNv
bnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKaW5kZXggNjRhOWY3MjIuLjRi
ZmQ2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9w
b3Zlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIu
anMKQEAgLTM1LDcgKzM1LDcgQEAKIFdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24ocG9w
b3ZlckhlbHBlcikKIHsKICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInBvcG92ZXIiOworICAgIHRo
aXMuZWxlbWVudC5jbGFzc05hbWUgPSAicG9wb3ZlciBjdXN0b20tcG9wdXAtdmVydGljYWwtc2Ny
b2xsIGN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCI7CiAKICAgICB0aGlzLl9wb3B1cEFy
cm93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX3Bv
cHVwQXJyb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJhcnJvdyI7CkBAIC0xMTMsMTcgKzExMyw3IEBA
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc3QgdG90YWxX
aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOwogICAgICAgICBjb25zdCB0b3RhbEhlaWdodCA9IHdp
bmRvdy5pbm5lckhlaWdodDsKIAotICAgICAgICB2YXIgYW5jaG9yQm94ID0gYW5jaG9yRWxlbWVu
dC5vZmZzZXRSZWxhdGl2ZVRvV2luZG93KHdpbmRvdyk7Ci0gICAgICAgIGFuY2hvckJveC53aWR0
aCA9IGFuY2hvckVsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgICAgIGFuY2hvckJveC5oZWlnaHQg
PSBhbmNob3JFbGVtZW50Lm9mZnNldEhlaWdodDsKLSAgICAgICAgd2hpbGUgKGFuY2hvckVsZW1l
bnQgJiYgYW5jaG9yRWxlbWVudCAhPT0gYW5jaG9yRWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkp
IHsKLSAgICAgICAgICAgIGlmIChhbmNob3JFbGVtZW50LnNjcm9sbExlZnQpCi0gICAgICAgICAg
ICAgICAgYW5jaG9yQm94LnggLT0gYW5jaG9yRWxlbWVudC5zY3JvbGxMZWZ0OwotICAgICAgICAg
ICAgaWYgKGFuY2hvckVsZW1lbnQuc2Nyb2xsVG9wKQotICAgICAgICAgICAgICAgIGFuY2hvckJv
eC55IC09IGFuY2hvckVsZW1lbnQuc2Nyb2xsVG9wOwotICAgICAgICAgICAgYW5jaG9yRWxlbWVu
dCA9IGFuY2hvckVsZW1lbnQucGFyZW50RWxlbWVudDsKLSAgICAgICAgfQotCisgICAgICAgIHZh
ciBhbmNob3JCb3ggPSBhbmNob3JFbGVtZW50LmJveEluV2luZG93KHdpbmRvdyk7CiAgICAgICAg
IHZhciBuZXdFbGVtZW50UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiBwcmVmZXJyZWRX
aWR0aCArIHNjcm9sbGVyV2lkdGgsIGhlaWdodDogcHJlZmVycmVkSGVpZ2h0IH07CiAKICAgICAg
ICAgdmFyIHZlcnRpY2FsQWxpZ25tZW50OwpAQCAtMTcxLDcgKzE2MSw3IEBAIFdlYkluc3BlY3Rv
ci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVt
ZW50LnN0eWxlLmxlZnQgKz0gYW5jaG9yQm94LndpZHRoIC8gMjsKICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAicG9wb3ZlciAiICsgdmVydGljYWxBbGlnbm1l
bnQgKyAiLSIgKyBob3Jpem9udGFsQWxpZ25tZW50ICsgIi1hcnJvdyI7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc05hbWUgPSAicG9wb3ZlciBjdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xs
IGN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCAiICsgdmVydGljYWxBbGlnbm1lbnQgKyAi
LSIgKyBob3Jpem9udGFsQWxpZ25tZW50ICsgIi1hcnJvdyI7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5wb3NpdGlvbkF0KG5ld0VsZW1lbnRQb3NpdGlvbi54IC0gYm9yZGVyV2lkdGgsIG5ld0VsZW1l
bnRQb3NpdGlvbi55IC0gYm9yZGVyV2lkdGgpOwogICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUu
d2lkdGggPSBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGggKyBib3JkZXJXaWR0aCAqIDIgKyAicHgi
OwogICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbmV3RWxlbWVudFBvc2l0aW9u
LmhlaWdodCArIGJvcmRlcldpZHRoICogMiArICJweCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBmYjk3
YzhmLi41NmM2NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQgPSB7CiAgICAgSFNMQTogImhzbGEi
CiB9CiAKLVdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVy
cyA9ICIgXHRcblwiJzo7LC8oKSI7CitXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5
bGVWYWx1ZURlbGltaXRlcnMgPSAiIFx4QTBcdFxuXCInOjssLygpIjsKIAogCiAvLyBLZWVwIGlu
IHN5bmMgd2l0aCBSZW5kZXJTdHlsZUNvbnN0YW50cy5oIFBzZXVkb0lkIGVudW0uIEFycmF5IGJl
bG93IGNvbnRhaW5zIHBzZXVkbyBpZCBuYW1lcyBmb3IgY29ycmVzcG9uZGluZyBlbnVtIGluZGV4
ZXMuCkBAIC0xODcxLDcgKzE4NzEsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQucGFyZW50RWxl
bWVudCkKICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVudC5zY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKGZhbHNlKTsKIAotICAgICAgICB0aGlzLl9wcm9tcHQgPSBuZXcgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0KGlzRWRpdGluZ05hbWUg
PyBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zIDogV2ViSW5z
cGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eSh0aGlzLm5hbWVFbGVtZW50
LnRleHRDb250ZW50KSwgdGhpcywgaXNFZGl0aW5nTmFtZSk7CisgICAgICAgIHZhciBhcHBseUl0
ZW1DYWxsYmFjayA9ICFpc0VkaXRpbmdOYW1lID8gdGhpcy5fYXBwbHlGcmVlRmxvd1N0eWxlVGV4
dEVkaXQuYmluZCh0aGlzLCB0cnVlKSA6IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fcHJvbXB0
ID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdChp
c0VkaXRpbmdOYW1lID8gV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0
aW9ucyA6IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkodGhp
cy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCksIHRoaXMsIGlzRWRpdGluZ05hbWUsIGFwcGx5SXRl
bUNhbGxiYWNrKTsKICAgICAgICAgdmFyIHByb3h5RWxlbWVudCA9IHRoaXMuX3Byb21wdC5hdHRh
Y2hBbmRTdGFydEVkaXRpbmcoc2VsZWN0RWxlbWVudCwgYmx1ckxpc3RlbmVyLmJpbmQodGhpcywg
Y29udGV4dCkpOwogCiAgICAgICAgIHByb3h5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlk
b3duIiwgdGhpcy5lZGl0aW5nTmFtZVZhbHVlS2V5RG93bi5iaW5kKHRoaXMsIGNvbnRleHQpLCBm
YWxzZSk7CkBAIC0xOTM4LDcgKzE5MzksMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFpc0VkaXRpbmdOYW1lKQorICAgICAgICAgICAgdGhpcy5fYXBwbHlGcmVl
Rmxvd1N0eWxlVGV4dEVkaXQoZmFsc2UpOwogICAgIH0sCiAKICAgICBfYXBwbHlGcmVlRmxvd1N0
eWxlVGV4dEVkaXQ6IGZ1bmN0aW9uKG5vdykKQEAgLTIxOTQsMTAgKzIxOTksMTMgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gVHJl
ZUVsZW1lbnQucHJvdG90eXAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHR9CisgKiBAcGFyYW0ge2Z1bmN0aW9uKCopPX0gYWNjZXB0Q2Fs
bGJhY2sKICAqLwotV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJv
bXB0ID0gZnVuY3Rpb24oY3NzQ29tcGxldGlvbnMsIHNpZGViYXJQYW5lLCBpc0VkaXRpbmdOYW1l
KQorV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVu
Y3Rpb24oY3NzQ29tcGxldGlvbnMsIHNpZGViYXJQYW5lLCBpc0VkaXRpbmdOYW1lLCBhY2NlcHRD
YWxsYmFjaykKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5jYWxsKHRoaXMsIHRoaXMu
X2J1aWxkUHJvcGVydHlDb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMpOworICAgIC8vIFVzZSB0aGUgc2FtZSBj
YWxsYmFjayBib3RoIGZvciBhcHBseUl0ZW1DYWxsYmFjayBhbmQgYWNjZXB0SXRlbUNhbGxiYWNr
LgorICAgIGNvbnN0IHN1Z2dlc3RCb3hDb25maWcgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQuU3VnZ2VzdEJveENvbmZpZygiY3NzLXN1Z2dlc3QiLCBhY2NlcHRDYWxsYmFjaywgYWNjZXB0
Q2FsbGJhY2spOworICAgIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LmNhbGwodGhpcywgdGhpcy5f
YnVpbGRQcm9wZXJ0eUNvbXBsZXRpb25zLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycywgc3VnZ2VzdEJveENvbmZpZyk7CiAgICAg
dGhpcy5fY3NzQ29tcGxldGlvbnMgPSBjc3NDb21wbGV0aW9uczsKICAgICB0aGlzLl9zaWRlYmFy
UGFuZSA9IHNpZGViYXJQYW5lOwogICAgIHRoaXMuX2lzRWRpdGluZ05hbWUgPSBpc0VkaXRpbmdO
YW1lOwpAQCAtMjIxNyw4ICsyMjI1LDExIEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFu
ZS5DU1NQcm9wZXJ0eVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSswMDA5IjoKLSAgICAgICAgICAgIHRoaXMuYWNj
ZXB0QXV0b0NvbXBsZXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAo
dGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zdWdn
ZXN0Qm94LmFjY2VwdFN1Z2dlc3Rpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMu
X2lzRWRpdGluZ05hbWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGhpcy5h
Y2NlcHRBdXRvQ29tcGxldGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LnByb3RvdHlwZS5vbktleURvd24uY2FsbCh0aGlzLCBldmVudCk7CkBAIC0yMjI2
LDE5ICsyMjM3LDExIEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0
eVByb21wdC5wcm90b3R5cGUgPSB7CiAKICAgICBfaGFuZGxlTmFtZU9yVmFsdWVVcERvd246IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKKyAgICAgICAgLy8gSGFuZGxlIG51bWVyaWMgdmFsdWUgaW5j
cmVtZW50L2RlY3JlbWVudCBmaXJzdC4KICAgICAgICAgaWYgKCF0aGlzLl9pc0VkaXRpbmdOYW1l
ICYmIHRoaXMuX2hhbmRsZVVwT3JEb3duVmFsdWUoZXZlbnQpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgdmFyIHJldmVyc2UgPSBldmVudC5rZXlJZGVudGlmaWVyID09PSAi
VXAiOwotICAgICAgICBpZiAodGhpcy5hdXRvQ29tcGxldGVFbGVtZW50KQotICAgICAgICAgICAg
dGhpcy5jb21wbGV0ZShmYWxzZSwgcmV2ZXJzZSk7IC8vIEFjY2VwdCB0aGUgY3VycmVudCBzdWdn
ZXN0aW9uLCBpZiBhbnkuCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gU2VsZWN0IHRo
ZSB3b3JkIHN1ZmZpeCB0byBhZmZlY3QgaXQgd2hlbiBjb21wdXRpbmcgdGhlIHN1YnNlcXVlbnQg
c3VnZ2VzdGlvbi4KLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdEN1cnJlbnRXb3JkU3VmZml4KCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmNvbXBsZXRlKGZhbHNlLCByZXZlcnNlKTsgLy8g
QWN0dWFsbHkgaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgc3VnZ2VzdGlvbi4KLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCiAgICAgX2hhbmRsZVVw
T3JEb3duVmFsdWU6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjMwOCw0MCArMjMxMSwxNCBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAotICAgIF9zZWxlY3RDdXJyZW50V29y
ZFN1ZmZpeDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTsKLSAgICAgICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgc2VsZWN0aW9uUmFuZ2UgPSBzZWxlY3Rp
b24uZ2V0UmFuZ2VBdCgwKTsKLSAgICAgICAgaWYgKCFzZWxlY3Rpb25SYW5nZS5jb21tb25BbmNl
c3RvckNvbnRhaW5lci5pc0Rlc2NlbmRhbnQodGhpcy5fZWxlbWVudCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHZhciB3b3JkU3VmZml4UmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS5zdGFy
dENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFydE9mZnNldCwgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCB0aGlzLl9lbGVt
ZW50LCAiZm9yd2FyZCIpOwotICAgICAgICBpZiAoIXdvcmRTdWZmaXhSYW5nZS50b1N0cmluZygp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2Vz
KCk7Ci0gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZSh3b3JkU3VmZml4UmFuZ2UpOwotICAgIH0s
Ci0KLSAgICBfYnVpbGRQcm9wZXJ0eUNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGJl
c3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKKyAgICBfYnVpbGRQcm9wZXJ0
eUNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGZvcmNlLCBjb21wbGV0aW9uc1JlYWR5
Q2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgcHJlZml4ID0gd29yZFJhbmdlLnRvU3RyaW5n
KCkudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgaWYgKCFwcmVmaXggJiYgYmVzdE1hdGNoT25seSkK
KyAgICAgICAgaWYgKCFwcmVmaXggJiYgIWZvcmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHZhciByZXN1bHRzOwotICAgICAgICBpZiAoYmVzdE1hdGNoT25seSkgewotICAgICAg
ICAgICAgcmVzdWx0cyA9IFtdOwotICAgICAgICAgICAgdmFyIGZpcnN0TWF0Y2ggPSB0aGlzLl9j
c3NDb21wbGV0aW9ucy5maXJzdFN0YXJ0c1dpdGgocHJlZml4KTsKLSAgICAgICAgICAgIGlmIChm
aXJzdE1hdGNoKQotICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChmaXJzdE1hdGNoKTsKLSAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uc1JlYWR5Q2FsbGJhY2socmVzdWx0cyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXN1bHRzID0gdGhpcy5fY3NzQ29tcGxldGlvbnMuc3RhcnRzV2l0
aChwcmVmaXgpOwotICAgICAgICBpZiAocmVzdWx0cykKLSAgICAgICAgICAgIGNvbXBsZXRpb25z
UmVhZHlDYWxsYmFjayhyZXN1bHRzKTsKKyAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLl9jc3ND
b21wbGV0aW9ucy5zdGFydHNXaXRoKHByZWZpeCk7CisgICAgICAgIGNvbXBsZXRpb25zUmVhZHlD
YWxsYmFjayhyZXN1bHRzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcwppbmRleCAzNWFmZGU4Li4xMTA3MzRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCkBA
IC0zMSw4ICszMSw5IEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7ZnVuY3Rpb24oUmFu
Z2UsIGJvb2xlYW4sIGZ1bmN0aW9uKCopKX0gY29tcGxldGlvbnMKICAqIEBwYXJhbSB7c3RyaW5n
fSBzdG9wQ2hhcmFjdGVycworICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdn
ZXN0Qm94Q29uZmlnPX0gc3VnZ2VzdEJveENvbmZpZwogICovCi1XZWJJbnNwZWN0b3IuVGV4dFBy
b21wdCA9IGZ1bmN0aW9uKGNvbXBsZXRpb25zLCBzdG9wQ2hhcmFjdGVycykKK1dlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0ID0gZnVuY3Rpb24oY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJzLCBzdWdn
ZXN0Qm94Q29uZmlnKQogewogICAgIC8qKgogICAgICAqIEB0eXBlIHtFbGVtZW50fHVuZGVmaW5l
ZH0KQEAgLTQwLDYgKzQxLDggQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQgPSBmdW5jdGlvbihj
b21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMpCiAgICAgdGhpcy5fcHJveHlFbGVtZW50OwogICAg
IHRoaXMuX2xvYWRDb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOwogICAgIHRoaXMuX2NvbXBsZXRp
b25TdG9wQ2hhcmFjdGVycyA9IHN0b3BDaGFyYWN0ZXJzOworICAgIHRoaXMuX3N1Z2dlc3RCb3hD
b25maWcgPSBzdWdnZXN0Qm94Q29uZmlnOworICAgIHRoaXMuX3N1Z2dlc3RGb3JjZWFibGUgPSB0
cnVlOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CkBAIC00OCw2
ICs1MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9wcm94eUVsZW1lbnQ7CiAgICAgfSwKIAorICAgIHNldFN1Z2dlc3RGb3Jj
ZWFibGU6IGZ1bmN0aW9uKHgpCisgICAgeworICAgICAgICB0aGlzLl9zdWdnZXN0Rm9yY2VhYmxl
ID0geDsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQ2xpZW50cyBzaG91bGQgbmV2ZXIgYXR0
YWNoIGFueSBldmVudCBsaXN0ZW5lcnMgdG8gdGhlIHxlbGVtZW50fC4gSW5zdGVhZCwKICAgICAg
KiB0aGV5IHNob3VsZCB1c2UgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCB0byBhdHRhY2ggbGlz
dGVuZXJzIGZvciBidWJibGluZyBldmVudHMuCkBAIC05MCw2ICs5OCwxMiBAQCBXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkU3R5
bGVDbGFzcygidGV4dC1wcm9tcHQiKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fYm91bmRPbktleURvd24sIHRydWUpOwogICAgICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IiwgdGhpcy5fc2VsZWN0
U3RhcnQuYmluZCh0aGlzKSwgZmFsc2UpOworCisgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0Qm94
Q29uZmlnKSB7CisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94ID0gbmV3IFdlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3godGhpcywgdGhpcy5fZWxlbWVudCwgdGhpcy5fc3VnZ2Vz
dEJveENvbmZpZy5zdHlsZUNsYXNzKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2FsbGJhY2sg
PSB0aGlzLl9zdWdnZXN0Qm94Q29uZmlnLmFwcGx5SXRlbUNhbGxiYWNrOworICAgICAgICAgICAg
dGhpcy5fYWNjZXB0Q2FsbGJhY2sgPSB0aGlzLl9zdWdnZXN0Qm94Q29uZmlnLmFjY2VwdEl0ZW1D
YWxsYmFjazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhpcy5wcm94eUVsZW1lbnQ7CiAg
ICAgfSwKIApAQCAtMTI5LDYgKzE0Myw4IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxl
Y3RzdGFydCIsIHRoaXMuX2JvdW5kU2VsZWN0U3RhcnQsIGZhbHNlKTsKICAgICAgICAgaWYgKHRo
aXMuX2lzRWRpdGluZykKICAgICAgICAgICAgIHRoaXMuX3N0b3BFZGl0aW5nKCk7CisgICAgICAg
IGlmICh0aGlzLl9zdWdnZXN0Qm94KQorICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5yZW1v
dmVGcm9tRWxlbWVudCgpOwogICAgIH0sCiAKICAgICBfc3RhcnRFZGl0aW5nOiBmdW5jdGlvbihi
bHVyTGlzdGVuZXIpCkBAIC0xNzUsNDEgKzE5MSw3MCBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21w
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlbGVjdGlvblRpbWVvdXQgPSBzZXRUaW1l
b3V0KG1vdmVCYWNrSWZPdXRzaWRlLmJpbmQodGhpcyksIDEwMCk7CiAgICAgfSwKIAotICAgIGRl
ZmF1bHRLZXlIYW5kbGVyOiBmdW5jdGlvbihldmVudCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW49fSBmb3JjZQorICAgICAqLworICAgIGRlZmF1bHRLZXlIYW5kbGVyOiBmdW5jdGlv
bihldmVudCwgZm9yY2UpCiAgICAgewogICAgICAgICB0aGlzLmNsZWFyQXV0b0NvbXBsZXRlKCk7
Ci0gICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigpOworICAgICAgICB0aGlzLmF1dG9Db21w
bGV0ZVNvb24oZm9yY2UpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAogICAgIG9u
S2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgaGFuZGxlZCA9IGZh
bHNlOworICAgICAgICB2YXIgZGVmYXVsdEludm9rZWQ7CiAKICAgICAgICAgc3dpdGNoIChldmVu
dC5rZXlJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYXNlICJVKzAwMDkiOiAvLyBUYWIKLSAg
ICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlKGZhbHNlLCBldmVudC5zaGlmdEtleSk7CisgICAg
ICAgIGNhc2UgIlVwIjoKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnVwS2V5UHJlc3NlZChl
dmVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiRG93biI6CisgICAgICAg
ICAgICBoYW5kbGVkID0gdGhpcy5kb3duS2V5UHJlc3NlZChldmVudCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAiVSswMDA5IjogLy8gVGFiCisgICAgICAgICAgICBoYW5kbGVk
ID0gdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlICJFbnRlciI6CisgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5lbnRlcktleVByZXNz
ZWQoZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlJpZ2h0IjoKKyAg
ICAgICAgY2FzZSAiRW5kIjoKKyAgICAgICAgICAgIGlmICghdGhpcy5hY2NlcHRBdXRvQ29tcGxl
dGUoKSkKKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZVNvb24oKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICJVKzAwMUIiOiAvLyBFc2MKKyAgICAgICAgICAgIGlm
ICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3N1
Z2dlc3RCb3guaGlkZSgpOwogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiUmlnaHQiOgotICAgICAgICAgICAg
Y2FzZSAiRW5kIjoKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYWNjZXB0QXV0b0NvbXBsZXRl
KCkpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiQWx0IjoKLSAgICAgICAgICAgIGNh
c2UgIk1ldGEiOgotICAgICAgICAgICAgY2FzZSAiU2hpZnQiOgotICAgICAgICAgICAgY2FzZSAi
Q29udHJvbCI6CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgIlUrMDAyMCI6IC8vIFNwYWNl
CisgICAgICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdEZvcmNlYWJsZSAmJiBldmVudC5jdHJsS2V5
ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7
CisgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0S2V5SGFuZGxlcihldmVudCwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLmRlZmF1
bHRLZXlIYW5kbGVyKGV2ZW50KQorICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU3VnZ2Vz
dEJveFZpc2libGUoKSkgeworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLl9zdWdnZXN0
Qm94LnNwYWNlS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIGNhc2UgIkFsdCI6CisgICAgICAgIGNhc2UgIk1ldGEiOgorICAg
ICAgICBjYXNlICJTaGlmdCI6CisgICAgICAgIGNhc2UgIkNvbnRyb2wiOgorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIWhhbmRsZWQpCisgICAgICAgICAgICBo
YW5kbGVkID0gdGhpcy5kZWZhdWx0S2V5SGFuZGxlcihldmVudCk7CisKICAgICAgICAgaWYgKGhh
bmRsZWQpIHsKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBo
YW5kbGVkOwogICAgIH0sCiAKICAgICBhY2NlcHRBdXRvQ29tcGxldGU6IGZ1bmN0aW9uKCkKQEAg
LTIxNyw2ICsyNjIsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50IHx8ICF0aGlzLmF1dG9Db21wbGV0
ZUVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAg
ICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpCisgICAgICAgICAgICB0aGlzLl9zdWdn
ZXN0Qm94LmFjY2VwdFN1Z2dlc3Rpb24oKTsKKwogICAgICAgICB2YXIgdGV4dCA9IHRoaXMuYXV0
b0NvbXBsZXRlRWxlbWVudC50ZXh0Q29udGVudDsKICAgICAgICAgdmFyIHRleHROb2RlID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxl
bWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0ZXh0Tm9kZSwgdGhpcy5hdXRvQ29tcGxldGVF
bGVtZW50KTsKQEAgLTI3MSwxMyArMzE5LDE5IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3VzZXJFbnRlcmVkVGV4dDsKICAgICB9
LAogCi0gICAgYXV0b0NvbXBsZXRlU29vbjogZnVuY3Rpb24oKQorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Ym9vbGVhbj19IGZvcmNlCisgICAgICovCisgICAgYXV0b0NvbXBsZXRlU29vbjogZnVu
Y3Rpb24oZm9yY2UpCiAgICAgewogICAgICAgICBpZiAoISgiX2NvbXBsZXRlVGltZW91dCIgaW4g
dGhpcykpCi0gICAgICAgICAgICB0aGlzLl9jb21wbGV0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRo
aXMuY29tcGxldGUuYmluZCh0aGlzLCB0cnVlKSwgMjUwKTsKKyAgICAgICAgICAgIHRoaXMuX2Nv
bXBsZXRlVGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jb21wbGV0ZS5iaW5kKHRoaXMsIHRydWUs
IGZvcmNlKSwgdGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkgPyAwIDogMjUwKTsKICAgICB9LAog
Ci0gICAgY29tcGxldGU6IGZ1bmN0aW9uKGF1dG8sIHJldmVyc2UpCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtib29sZWFuPX0gcmV2ZXJzZQorICAgICAqLworICAgIGNvbXBsZXRlOiBmdW5jdGlv
bihhdXRvLCBmb3JjZSwgcmV2ZXJzZSkKICAgICB7CiAgICAgICAgIHRoaXMuY2xlYXJBdXRvQ29t
cGxldGUodHJ1ZSk7CiAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CkBAIC0yODcsMjEgKzM0MSwzNSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0
KDApOwogICAgICAgICB2YXIgaXNFbXB0eUlucHV0ID0gc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5j
ZXN0b3JDb250YWluZXIgPT09IHRoaXMuX2VsZW1lbnQ7IC8vIHRoaXMuX2VsZW1lbnQgaGFzIG5v
IGNoaWxkIFRleHQgbm9kZXMuCiAKKyAgICAgICAgdmFyIHNob3VsZEV4aXQ7CisKICAgICAgICAg
Ly8gRG8gbm90IGF0dGVtcHQgdG8gYXV0by1jb21wbGV0ZSBhbiBlbXB0eSBpbnB1dCBpbiB0aGUg
YXV0byBtb2RlIChvbmx5IG9uIGRlbWFuZCkuCi0gICAgICAgIGlmIChhdXRvICYmIGlzRW1wdHlJ
bnB1dCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGF1dG8gJiYgaXNFbXB0eUlu
cHV0ICYmICFmb3JjZSkKKyAgICAgICAgICAgIHNob3VsZEV4aXQgPSB0cnVlOwogICAgICAgICBp
ZiAoIWF1dG8gJiYgIWlzRW1wdHlJbnB1dCAmJiAhc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0
b3JDb250YWluZXIuaXNEZXNjZW5kYW50KHRoaXMuX2VsZW1lbnQpKQorICAgICAgICAgICAgc2hv
dWxkRXhpdCA9IHRydWU7CisgICAgICAgIGlmIChhdXRvICYmICF0aGlzLmlzQ2FyZXRBdEVuZE9m
UHJvbXB0KCkgJiYgIWZvcmNlKQorICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CisgICAg
ICAgIGlmIChzaG91bGRFeGl0KSB7CisgICAgICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hW
aXNpYmxlKCkpCisgICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5oaWRlKCk7CiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhdXRvICYmICF0aGlzLmlzQ2FyZXRBdEVuZE9m
UHJvbXB0KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICB2YXIg
d29yZFByZWZpeFJhbmdlID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldv
cmQoc2VsZWN0aW9uUmFuZ2Uuc3RhcnRPZmZzZXQsIHRoaXMuX2NvbXBsZXRpb25TdG9wQ2hhcmFj
dGVycywgdGhpcy5fZWxlbWVudCwgImJhY2t3YXJkIik7CiAgICAgICAgIHRoaXMuX2xvYWRDb21w
bGV0aW9ucyh3b3JkUHJlZml4UmFuZ2UsIGF1dG8sIHRoaXMuX2NvbXBsZXRpb25zUmVhZHkuYmlu
ZCh0aGlzLCBzZWxlY3Rpb24sIGF1dG8sIHdvcmRQcmVmaXhSYW5nZSwgcmV2ZXJzZSkpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlv
bnMKKyAgICAgKi8KICAgICBfY29tcGxldGlvbnNSZWFkeTogZnVuY3Rpb24oc2VsZWN0aW9uLCBh
dXRvLCBvcmlnaW5hbFdvcmRQcmVmaXhSYW5nZSwgcmV2ZXJzZSwgY29tcGxldGlvbnMpCiAgICAg
ewotICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgpCisgICAg
ICAgIGlmICghY29tcGxldGlvbnMgfHwgIWNvbXBsZXRpb25zLmxlbmd0aCkgeworICAgICAgICAg
ICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQorICAgICAgICAgICAgICAgIHRoaXMu
X3N1Z2dlc3RCb3guaGlkZSgpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAg
ICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CiAKQEAg
LTMxMiw2ICszODAsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAob3JpZ2luYWxXb3JkUHJlZml4UmFuZ2UudG9TdHJpbmcoKSArIHNlbGVjdGlv
blJhbmdlLnRvU3RyaW5nKCkgIT0gZnVsbFdvcmRSYW5nZS50b1N0cmluZygpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UgPSBmdWxsV29yZFJh
bmdlOworICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFRleHQgPSBmdWxsV29yZFJhbmdlLnRvU3Ry
aW5nKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3gpIHsKKyAgICAgICAgICAgIHRo
aXMuX3N1Z2dlc3RCb3gudXBkYXRlU3VnZ2VzdGlvbnMoY29tcGxldGlvbnMpOworICAgICAgICAg
ICAgcmV0dXJuOyAvLyBEbyBub3RoaW5nLCB0aGUgc3VnZ2VzdCBib3ggaXMgZHJpdmluZyB1cy4K
KyAgICAgICAgfQorCiAgICAgICAgIHZhciB3b3JkUHJlZml4TGVuZ3RoID0gb3JpZ2luYWxXb3Jk
UHJlZml4UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7CiAKICAgICAgICAgaWYgKGF1dG8pCkBAIC0z
NTYsMTUgKzQzMiwxMCBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdl
ID0gZnVsbFdvcmRSYW5nZTsKLSAgICAgICAgdGhpcy5fdXNlckVudGVyZWRUZXh0ID0gZnVsbFdv
cmRSYW5nZS50b1N0cmluZygpOwotCi0gICAgICAgIGZ1bGxXb3JkUmFuZ2UuZGVsZXRlQ29udGVu
dHMoKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5wcnVuZUVtcHR5VGV4dE5vZGVzKCk7Ci0KLSAg
ICAgICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwot
CiAgICAgICAgIGlmIChhdXRvKSB7CisgICAgICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdl
LmRlbGV0ZUNvbnRlbnRzKCk7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnBydW5lRW1wdHlU
ZXh0Tm9kZXMoKTsKKyAgICAgICAgICAgIHZhciBmaW5hbFNlbGVjdGlvblJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgIHZhciBwcmVmaXhUZXh0ID0gY29tcGxldGlv
blRleHQuc3Vic3RyaW5nKDAsIHdvcmRQcmVmaXhMZW5ndGgpOwogICAgICAgICAgICAgdmFyIHN1
ZmZpeFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcod29yZFByZWZpeExlbmd0aCk7CiAK
QEAgLTM3OSwyMCArNDUwLDQ3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChwcmVmaXhUZXh0
Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7CiAgICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdl
LnNldEVuZChwcmVmaXhUZXh0Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICB2YXIgY29tcGxldGlvblRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoY29tcGxldGlvblRleHQpOwotICAgICAgICAgICAgZnVsbFdvcmRSYW5nZS5pbnNl
cnROb2RlKGNvbXBsZXRpb25UZXh0Tm9kZSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3Zl
QWxsUmFuZ2VzKCk7CisgICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmluYWxTZWxlY3Rp
b25SYW5nZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5hcHBseVN1Z2dlc3Rp
b24oY29tcGxldGlvblRleHQsIHRydWUpOworICAgIH0sCisKKyAgICBhcHBseVN1Z2dlc3Rpb246
IGZ1bmN0aW9uKGNvbXBsZXRpb25UZXh0LCBpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24pCisgICAg
eworICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQucHJ1bmVFbXB0eVRleHROb2RlcygpOworICAgICAgICB2YXIgZmlu
YWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIHZhciBj
b21wbGV0aW9uVGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb21wbGV0aW9uVGV4
dCk7CisgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuaW5zZXJ0Tm9kZShjb21wbGV0aW9u
VGV4dE5vZGUpOwogCi0gICAgICAgICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID4gMSkKLSAg
ICAgICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KGNvbXBsZXRpb25UZXh0
Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChjb21wbGV0aW9uVGV4dE5vZGUsIGNvbXBs
ZXRpb25UZXh0Lmxlbmd0aCk7CisgICAgICAgIHZhciB3b3JkUHJlZml4TGVuZ3RoID0gdGhpcy5f
dXNlckVudGVyZWRUZXh0ID8gdGhpcy5fdXNlckVudGVyZWRUZXh0Lmxlbmd0aCA6IDA7CiAKLSAg
ICAgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKGNvbXBsZXRpb25UZXh0Tm9kZSwg
Y29tcGxldGlvblRleHQubGVuZ3RoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoaXNJbnRlcm1l
ZGlhdGVTdWdnZXN0aW9uKQorICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFy
dChjb21wbGV0aW9uVGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KGNvbXBsZXRpb25UZXh0Tm9k
ZSwgY29tcGxldGlvblRleHQubGVuZ3RoKTsKIAorICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdl
LnNldEVuZChjb21wbGV0aW9uVGV4dE5vZGUsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCk7CisgICAg
ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgIHNlbGVj
dGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFs
U2VsZWN0aW9uUmFuZ2UpOworICAgICAgICBpZiAoaXNJbnRlcm1lZGlhdGVTdWdnZXN0aW9uICYm
IHRoaXMuX2FwcGx5Q2FsbGJhY2spCisgICAgICAgICAgICB0aGlzLl9hcHBseUNhbGxiYWNrKCk7
CisgICAgfSwKKworICAgIGFjY2VwdFN1Z2dlc3Rpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7CisgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0
Qm94KQorICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5oaWRlKCk7CisgICAgICAgIGlmICh0
aGlzLl9hY2NlcHRDYWxsYmFjaykKKyAgICAgICAgICAgIHRoaXMuX2FjY2VwdENhbGxiYWNrKCk7
CisgICAgfSwKKworICAgIGlzU3VnZ2VzdEJveFZpc2libGU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0Qm94ICYmIHRoaXMuX3N1Z2dlc3RCb3gudmlzaWJs
ZTsKICAgICB9LAogCiAgICAgaXNDYXJldEluc2lkZVByb21wdDogZnVuY3Rpb24oKQpAQCAtNDgz
LDE4ICs1ODEsNjUgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgc2VsZWN0aW9uLmFk
ZFJhbmdlKHNlbGVjdGlvblJhbmdlKTsKKyAgICB9LAorCisgICAgdGFiS2V5UHJlc3NlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxl
KCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC50YWJLZXlQcmVzc2VkKGV2
ZW50KTsKKworICAgICAgICB0aGlzLmNvbXBsZXRlKGZhbHNlLCBmYWxzZSwgZXZlbnQuc2hpZnRL
ZXkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgZW50ZXJLZXlQcmVzc2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZp
c2libGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0Qm94LmVudGVyS2V5UHJl
c3NlZChldmVudCk7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICB1cEtl
eVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaXNTdWdn
ZXN0Qm94VmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3RCb3gudXBL
ZXlQcmVzc2VkKGV2ZW50KTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAg
IGRvd25LZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LmlzU3VnZ2VzdEJveFZpc2libGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0
Qm94LmRvd25LZXlQcmVzc2VkKGV2ZW50KTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmc9fSBzdHlsZUNs
YXNzCisgKiBAcGFyYW0ge2Z1bmN0aW9uKCopPX0gYXBwbHlJdGVtQ2FsbGJhY2sKKyAqIEBwYXJh
bSB7ZnVuY3Rpb24oKik9fSBhY2NlcHRJdGVtQ2FsbGJhY2sKKyAqLworV2ViSW5zcGVjdG9yLlRl
eHRQcm9tcHQuU3VnZ2VzdEJveENvbmZpZyA9IGZ1bmN0aW9uKHN0eWxlQ2xhc3MsIGFwcGx5SXRl
bUNhbGxiYWNrLCBhY2NlcHRJdGVtQ2FsbGJhY2spCit7CisgICAgdGhpcy5zdHlsZUNsYXNzID0g
c3R5bGVDbGFzczsKKyAgICB0aGlzLmFwcGx5SXRlbUNhbGxiYWNrID0gYXBwbHlJdGVtQ2FsbGJh
Y2s7CisgICAgdGhpcy5hY2NlcHRJdGVtQ2FsbGJhY2sgPSBhY2NlcHRJdGVtQ2FsbGJhY2s7Cit9
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHR9CiAgKiBAcGFyYW0ge2Z1bmN0aW9uKFJhbmdlLCBib29sZWFuLCBmdW5jdGlvbigqKSl9
IGNvbXBsZXRpb25zCiAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcENoYXJhY3RlcnMKKyAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveENvbmZpZz19IHN1Z2dlc3RCb3hD
b25maWcKICAqLwotV2ViSW5zcGVjdG9yLlRleHRQcm9tcHRXaXRoSGlzdG9yeSA9IGZ1bmN0aW9u
KGNvbXBsZXRpb25zLCBzdG9wQ2hhcmFjdGVycykKK1dlYkluc3BlY3Rvci5UZXh0UHJvbXB0V2l0
aEhpc3RvcnkgPSBmdW5jdGlvbihjb21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMsIHN1Z2dlc3RC
b3hDb25maWcpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuY2FsbCh0aGlzLCBjb21w
bGV0aW9ucywgc3RvcENoYXJhY3RlcnMpOworICAgIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LmNh
bGwodGhpcywgY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJzLCBzdWdnZXN0Qm94Q29uZmlnKTsK
IAogICAgIC8qKgogICAgICAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KQEAgLTU5Myw3ICs3Mzgs
MTAgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHRXaXRoSGlzdG9yeS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9kYXRhW3RoaXMuX2RhdGEubGVuZ3RoIC0gdGhpcy5faGlzdG9y
eU9mZnNldF07CiAgICAgfSwKIAotICAgIGRlZmF1bHRLZXlIYW5kbGVyOiBmdW5jdGlvbihldmVu
dCkKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKi8KKyAgICBkZWZhdWx0S2V5SGFu
ZGxlcjogZnVuY3Rpb24oZXZlbnQsIGZvcmNlKQogICAgIHsKICAgICAgICAgdmFyIG5ld1RleHQ7
CiAgICAgICAgIHZhciBpc1ByZXZpb3VzOwpAQCAtNjQ2LDggKzc5NCwyOTUgQEAgV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHRXaXRoSGlzdG9yeS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5wcm90b3R5cGUuZGVmYXVsdEtleUhhbmRsZXIuY2FsbCh0aGlzLCBldmVudCk7CisgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuZGVmYXVsdEtleUhh
bmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0V2l0aEhpc3RvcnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveCA9IGZ1bmN0aW9uKHRleHRQcm9tcHQsIGlucHV0
RWxlbWVudCwgY2xhc3NOYW1lKQoreworICAgIHRoaXMuX3RleHRQcm9tcHQgPSB0ZXh0UHJvbXB0
OworICAgIHRoaXMuX3BhcmVudEVsZW1lbnQgPSBpbnB1dEVsZW1lbnQub3duZXJEb2N1bWVudC5i
b2R5OworICAgIHRoaXMuX2lucHV0RWxlbWVudCA9IGlucHV0RWxlbWVudDsKKyAgICB0aGlzLl9z
ZWxlY3RlZEVsZW1lbnQgPSBudWxsOworICAgIHRoaXMuX2JvdW5kT25TY3JvbGwgPSB0aGlzLl9v
bnNjcm9sbHJlc2l6ZS5iaW5kKHRoaXMsIHRydWUpOworICAgIHRoaXMuX2JvdW5kT25SZXNpemUg
PSB0aGlzLl9vbnNjcm9sbHJlc2l6ZS5iaW5kKHRoaXMsIGZhbHNlKTsKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fYm91bmRPblNjcm9sbCwgdHJ1ZSk7CisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kT25SZXNpemUsIHRy
dWUpOworCisgICAgdGhpcy5fZWxlbWVudCA9IHRoaXMuX3BhcmVudEVsZW1lbnQuY3JlYXRlQ2hp
bGQoImRpdiIsICJzdWdnZXN0LWJveCBjdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIGN1c3Rv
bS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCAiICsgKGNsYXNzTmFtZSB8fCAiIikpOworICAgIHRo
aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fb25ib3htb3Vz
ZWRvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy5jb250YWluZXJFbGVtZW50ID0gdGhp
cy5fZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgImNvbnRhaW5lciIpOworICAgIHRoaXMuY29u
dGVudEVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJj
b250ZW50Iik7CisKKyAgICB0aGlzLl91cGRhdGVCb3hQb3NpdGlvbigpOworfQorCitXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgdmlzaWJs
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJ2
aXNpYmxlIik7CisgICAgfSwKKworICAgIGdldCBoYXNTZWxlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhdGhpcy5fc2VsZWN0ZWRFbGVtZW50OworICAgIH0sCisKKyAgICBfb25zY3Jv
bGxyZXNpemU6IGZ1bmN0aW9uKGlzU2Nyb2xsLCBldmVudCkKKyAgICB7CisgICAgICAgIGlmIChp
c1Njcm9sbCAmJiB0aGlzLl9lbGVtZW50LmlzQW5jZXN0b3IoZXZlbnQudGFyZ2V0KSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fdXBkYXRlQm94UG9zaXRpb24oKTsKKyAgICB9
LAorCisgICAgX3VwZGF0ZUJveFBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAv
LyBNZWFzdXJlIHRoZSBjb250ZW50IGVsZW1lbnQgYm94LgorICAgICAgICB0aGlzLmNvbnRlbnRF
bGVtZW50LnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250
ZW50RWxlbWVudC5wb3NpdGlvbkF0KDAsIDApOworICAgICAgICB2YXIgY29udGVudFdpZHRoID0g
dGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgdmFyIGNvbnRlbnRIZWln
aHQgPSB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5jb250
ZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKKyAgICAgICAgdGhpcy5jb250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOworCisgICAgICAgIC8v
IExheSBvdXQgdGhlIHN1Z2dlc3QtYm94IHJlbGF0aXZlIHRvIHRoZSBhbmNob3JCb3guCisgICAg
ICAgIGNvbnN0IGFuY2hvckJveCA9IHRoaXMuX2lucHV0RWxlbWVudC5ib3hJbldpbmRvdyh3aW5k
b3csIHRoaXMuX3BhcmVudEVsZW1lbnQpOworICAgICAgICBjb25zdCBzdWdnZXN0Qm94UGFkZGlu
Z1ggPSAyMTsKKyAgICAgICAgY29uc3Qgc3VnZ2VzdEJveFBhZGRpbmdZID0gMTI7CisgICAgICAg
IGNvbnN0IHNwYWNlciA9IDY7CisgICAgICAgIGNvbnN0IG1pbkhlaWdodCA9IDUwOworICAgICAg
ICBjb25zdCBtYXhXaWR0aCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLSBhbmNob3JCb3gu
eCAtIHNwYWNlcjsKKyAgICAgICAgY29uc3Qgd2lkdGggPSBNYXRoLm1pbihjb250ZW50V2lkdGgs
IG1heFdpZHRoIC0gc3VnZ2VzdEJveFBhZGRpbmdYKSArIHN1Z2dlc3RCb3hQYWRkaW5nWDsKKwor
ICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgLSBhbmNo
b3JCb3gueSAtIGFuY2hvckJveC5oZWlnaHQgLSBzcGFjZXI7CisgICAgICAgIHZhciBwYWRkZWRI
ZWlnaHQgPSBjb250ZW50SGVpZ2h0ICsgc3VnZ2VzdEJveFBhZGRpbmdZOworICAgICAgICB2YXIg
aGVpZ2h0ID0gTWF0aC5taW4ocGFkZGVkSGVpZ2h0LCBtYXhIZWlnaHQpOworICAgICAgICBpZiAo
aGVpZ2h0ID49IG1pbkhlaWdodCB8fCBoZWlnaHQgPT09IHBhZGRlZEhlaWdodCkgeworICAgICAg
ICAgICAgLy8gTG9jYXRlIHRoZSBzdWdnZXN0IGJveCB1bmRlciB0aGUgYW5jaG9yQm94LgorICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5wb3NpdGlvbkF0KGFuY2hvckJveC54LCBhbmNob3JCb3gu
eSArIGFuY2hvckJveC5oZWlnaHQpOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVT
dHlsZUNsYXNzKCJhYm92ZS1hbmNob3IiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIExvY2F0ZSB0aGUgc3VnZ2VzdCBib3ggYWJvdmUgdGhlIGFuY2hvckJveC4KKyAgICAgICAg
ICAgIG1heEhlaWdodCA9IGFuY2hvckJveC55IC0gc3BhY2VyOworICAgICAgICAgICAgaGVpZ2h0
ID0gTWF0aC5taW4oY29udGVudEhlaWdodCwgbWF4SGVpZ2h0IC0gc3VnZ2VzdEJveFBhZGRpbmdZ
KSArIHN1Z2dlc3RCb3hQYWRkaW5nWTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucG9zaXRp
b25BdChhbmNob3JCb3gueCwgYW5jaG9yQm94LnkgLSBoZWlnaHQpOworICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJhYm92ZS1hbmNob3IiKTsKKyAgICAgICAgfQorICAg
ICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAicHgiOworICAgICAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CisgICAgfSwKKworICAg
IF9vbmJveG1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgIH0sCisKKyAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICAgICAgZGVs
ZXRlIHRoaXMuX3NlbGVjdGVkRWxlbWVudDsKKyAgICB9LAorCisgICAgcmVtb3ZlRnJvbUVsZW1l
bnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy
KCJzY3JvbGwiLCB0aGlzLl9ib3VuZE9uU2Nyb2xsLCB0cnVlKTsKKyAgICAgICAgd2luZG93LnJl
bW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX2JvdW5kT25SZXNpemUsIHRydWUpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fZWxl
bWVudCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gdGV4dAor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzSW50ZXJtZWRpYXRlU3VnZ2VzdGlvbgorICAgICAq
LworICAgIF9hcHBseVN1Z2dlc3Rpb246IGZ1bmN0aW9uKHRleHQsIGlzSW50ZXJtZWRpYXRlU3Vn
Z2VzdGlvbikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy52aXNpYmxlIHx8ICEodGV4dCB8fCB0
aGlzLl9zZWxlY3RlZEVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIHZhciBzdWdnZXN0aW9uID0gdGV4dCB8fCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQudGV4dENv
bnRlbnQ7CisgICAgICAgIGlmICghc3VnZ2VzdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB0aGlzLl90ZXh0UHJvbXB0LmFwcGx5U3VnZ2VzdGlvbihzdWdnZXN0aW9u
LCBpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSB0ZXh0CisgICAgICovCisgICAg
YWNjZXB0U3VnZ2VzdGlvbjogZnVuY3Rpb24odGV4dCkKKyAgICB7CisgICAgICAgIHZhciByZXN1
bHQgPSB0aGlzLl9hcHBseVN1Z2dlc3Rpb24odGV4dCwgZmFsc2UpOworICAgICAgICB0aGlzLmhp
ZGUoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgdGhpcy5fdGV4dFByb21wdC5hY2NlcHRTdWdnZXN0aW9uKCk7CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9vbk5leHRJdGVtOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGRO
b2RlczsKKyAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAg
IHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5uZXh0U2libGlu
ZyB8fCB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RD
aGlsZDsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMuX2Fw
cGx5U3VnZ2VzdGlvbih1bmRlZmluZWQsIHRydWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LAorCisgICAgX29uUHJldmlvdXNJdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudEVsZW1lbnQuY2hpbGROb2RlczsKKyAgICAg
ICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVj
dGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5wcmV2aW91c1NpYmxpbmcgfHwgdGhp
cy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQubGFzdENoaWxkOworICAg
ICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICAgICAgdGhpcy5fYXBwbHlTdWdnZXN0
aW9uKHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAg
Ki8KKyAgICB1cGRhdGVTdWdnZXN0aW9uc1Nvb246IGZ1bmN0aW9uKGNvbXBsZXRpb25zKQorICAg
IHsKKyAgICAgICAgaWYgKCEoIl9zdWdnZXN0VGltZW91dCIgaW4gdGhpcykpCisgICAgICAgICAg
ICB0aGlzLl9zdWdnZXN0VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy51cGRhdGVTdWdnZXN0aW9u
cy5iaW5kKHRoaXMsIGNvbXBsZXRpb25zKSwgMTApOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKi8KKyAgICB1cGRh
dGVTdWdnZXN0aW9uczogZnVuY3Rpb24oY29tcGxldGlvbnMpCisgICAgeworICAgICAgICBpZiAo
Il9zdWdnZXN0VGltZW91dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuX3N1Z2dlc3RUaW1lb3V0KTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zdWdnZXN0VGlt
ZW91dDsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9jb21wbGV0aW9uc1JlYWR5KGNvbXBsZXRp
b25zKTsKKyAgICB9LAorCisgICAgX29uSXRlbU1vdXNlRG93bjogZnVuY3Rpb24odGV4dCwgZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLmFjY2VwdFN1Z2dlc3Rpb24odGV4dCk7CisgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OworICAgIH0sCisKKyAgICBfY3JlYXRlSXRlbUVsZW1lbnQ6IGZ1bmN0aW9uKHByZWZpeCwgdGV4
dCkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gInN1Z2dlc3QtYm94LWNvbnRlbnQt
aXRlbSBzb3VyY2UtY29kZSI7CisgICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSAtMTsKKyAgICAg
ICAgaWYgKHByZWZpeCAmJiBwcmVmaXgubGVuZ3RoICYmICF0ZXh0LmluZGV4T2YocHJlZml4KSkg
eworICAgICAgICAgICAgdmFyIHByZWZpeEVsZW1lbnQgPSBlbGVtZW50LmNyZWF0ZUNoaWxkKCJz
cGFuIiwgInByZWZpeCIpOworICAgICAgICAgICAgcHJlZml4RWxlbWVudC50ZXh0Q29udGVudCA9
IHByZWZpeDsKKyAgICAgICAgICAgIHZhciBzdWZmaXhFbGVtZW50ID0gZWxlbWVudC5jcmVhdGVD
aGlsZCgic3BhbiIsICJzdWZmaXgiKTsKKyAgICAgICAgICAgIHN1ZmZpeEVsZW1lbnQudGV4dENv
bnRlbnQgPSB0ZXh0LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHZhciBzdWZmaXhFbGVtZW50ID0gZWxlbWVudC5jcmVhdGVDaGlsZCgic3Bh
biIsICJzdWZmaXgiKTsKKyAgICAgICAgICAgIHN1ZmZpeEVsZW1lbnQudGV4dENvbnRlbnQgPSB0
ZXh0OworICAgICAgICB9CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5fb25JdGVtTW91c2VEb3duLmJpbmQodGhpcywgdGV4dCksIGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfSwKKworICAgIF91cGRhdGVJdGVtczogZnVuY3Rp
b24oaXRlbXMpCisgICAgeworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVt
ZW50LmNoaWxkcmVuOworICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gTWF0aC5taW4oY2hp
bGRyZW4ubGVuZ3RoIC0gMSwgdGhpcy5fc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIHZhciBzZWxl
Y3RlZEl0ZW1UZXh0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleCA+PSAwID8gY2hpbGRyZW5bdGhpcy5f
c2VsZWN0ZWRJbmRleF0udGV4dENvbnRlbnQgOiBudWxsOworICAgICAgICB2YXIgaXRlbUluZGV4
ID0gMDsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxk
OworICAgICAgICB2YXIgY2hpbGRUZXh0ID0gY2hpbGQgPyBjaGlsZC50ZXh0Q29udGVudCA6IG51
bGw7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkRWxlbWVudDsKKworICAgICAgICB2YXIgdXNlckVudGVy
ZWRUZXh0ID0gdGhpcy5fdGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0OworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgaXRl
bSA9IGl0ZW1zW2ldOworICAgICAgICAgICAgdmFyIGN1cnJlbnRJdGVtRWxlbWVudCA9IHRoaXMu
X2NyZWF0ZUl0ZW1FbGVtZW50KHVzZXJFbnRlcmVkVGV4dCwgaXRlbSk7CisgICAgICAgICAgICB0
aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRJdGVtRWxlbWVudCk7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAg
X3VwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IG1p
Z2h0IHdhbnQgc29tZSBvcHRpbWl6YXRpb24gaWYgYmVjb21lcyBhIGJvdHRsZW5lY2suCisgICAg
ICAgIGZvciAodmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykgeworICAgICAgICAgICAgaWYgKGNoaWxkICE9
PSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCisgICAgICAgICAgICAgICAgY2hpbGQucmVtb3ZlU3R5
bGVDbGFzcygic2VsZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0
ZWRFbGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQuYWRkU3R5bGVD
bGFzcygic2VsZWN0ZWQiKTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudC5zY3Jv
bGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKi8KKyAg
ICBfY29tcGxldGlvbnNSZWFkeTogZnVuY3Rpb24oY29tcGxldGlvbnMpCisgICAgeworICAgICAg
ICBpZiAoIWNvbXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAg
IHRoaXMuaGlkZSgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl91cGRhdGVJdGVtcyhjb21wbGV0aW9ucyk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUJveFBv
c2l0aW9uKCk7CisgICAgICAgIGlmICh0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0
aCAmJiAodGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAxIHx8IHRoaXMuY29u
dGVudEVsZW1lbnQuY2hpbGRyZW5bMF0udGV4dENvbnRlbnQubGVuZ3RoICE9PSB0aGlzLl90ZXh0
UHJvbXB0Ll91c2VyRW50ZXJlZFRleHQubGVuZ3RoKSkgeworICAgICAgICAgICAgLy8gV2lsbCBu
b3QgYmUgc2hvd24gaWYgYSBzb2xlIHN1Z2dlc3Rpb24gaXMgZXF1YWwgdG8gdGhlIHVzZXIgaW5w
dXQuCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpc2libGUiKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICB9LAorCisgICAg
dXBLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9vblByZXZpb3VzSXRlbShldmVudCk7CisgICAgfSwKKworICAgIGRvd25LZXlQcmVzc2VkOiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vbk5leHRJdGVtKGV2
ZW50KTsKKyAgICB9LAorCisgICAgZW50ZXJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLmFjY2VwdFN1Z2dlc3Rpb24oKTsKKyAgICB9LAorCisg
ICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5lbnRlcktleVByZXNzZWQoZXZlbnQpOworICAgIH0sCisKKyAgICBzcGFjZUtleVByZXNz
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5hY2NlcHRTdWdnZXN0aW9u
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRG8gbm90IGluaGliaXQgYSB3aGl0ZXNwYWNl
IGVudHJ5IGFmdGVyIHRoZSBzdWdnZXN0aW9uLgorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA4OGEyMmFjLi5hODBiZmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0x
NjgsNiArMTY4LDcgQEAKICAgICA8ZmlsZT5yZXNvdXJjZVZpZXcuY3NzPC9maWxlPgogICAgIDxm
aWxlPnJlc291cmNlc1BhbmVsLmNzczwvZmlsZT4KICAgICA8ZmlsZT5zY3JpcHRzUGFuZWwuY3Nz
PC9maWxlPgorICAgIDxmaWxlPnRleHRQcm9tcHQuY3NzPC9maWxlPgogICAgIDxmaWxlPnRleHRW
aWV3ZXIuY3NzPC9maWxlPgogICAgIDxmaWxlPnRpbWVsaW5lUGFuZWwuY3NzPC9maWxlPgogICAg
IDxmaWxlPkltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZzwvZmlsZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBhZmYzYjBlLi44
YTEwMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0yMzMyLDcgKzIzMzIsNyBAQCBhLndvcmtlci1pdGVtOmhvdmVyIHsKICAg
ICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogI0VCRUJFQjsKICAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JCQjsKLSAgICAKKwogICAgIGZvbnQtc2l6ZTog
MTFweDsKIH0KIApAQCAtMjQ4Nyw3ICsyNDg3LDcgQEAgYm9keS5wbGF0Zm9ybS1tYWMgI2RyYXdl
ci1zdGF0dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7CiAKICNzZWFyY2gtcmVz
dWx0cy1wYW5lLWZpbGUtYmFzZWQgLnNlYXJjaC1tYXRjaCAuc2VhcmNoLW1hdGNoLWNvbnRlbnQg
ewogICAgIGNvbG9yOiAjMDAwOwotICAgIHdoaXRlLXNwYWNlOiBwcmU7ICAgIAorICAgIHdoaXRl
LXNwYWNlOiBwcmU7CiB9CiAKIC5yZWNvcmQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBo
IHsKQEAgLTI1MTYsMyArMjUxNiwxMzEgQEAgYm9keS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0
dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7CiAgICAgcGFkZGluZzogMTBweDsK
ICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CisKKy8qIENTUyBwcm9wZXJ0eSBuYW1lL3Zh
bHVlIHN1Z2dlc3QgYm94IHN0eWxlICovCisKKy5zdWdnZXN0LWJveC5jc3Mtc3VnZ2VzdCB7Cisg
ICAgYm9yZGVyLXJhZGl1czogMCA1cHggNXB4IDVweDsKKyAgICBtYXJnaW4tbGVmdDogLTFweDsK
KyAgICBib3JkZXItY29sb3I6IHJnYig2NiUsIDY2JSwgNjYlKTsKKyAgICAtd2Via2l0LWJveC1z
aGFkb3c6IDhweCA4cHggNnB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5zdWdnZXN0
LWJveC5jc3Mtc3VnZ2VzdC5hYm92ZS1hbmNob3IgeworICAgYm9yZGVyLXJhZGl1czogNXB4IDVw
eCA1cHggMDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDhweCAtOHB4IDZweCByZ2JhKDQwLCA0
MCwgNDAsIDAuNDApOworfQorCisuc3VnZ2VzdC1ib3guY3NzLXN1Z2dlc3QgLmNvbnRlbnQgewor
ICAgIG1hcmdpbjogM3B4OworfQorCisKKy8qIEN1c3RvbSBwb3B1cCBzY3JvbGxlcnMgKi8KKwor
LmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuY3Vz
dG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0
aDogMTFweDsKKyAgICBoZWlnaHQ6IDExcHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRh
bC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsIC5jdXN0b20tcG9wdXAtdmVydGlj
YWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHsKKyAgICBkaXNwbGF5OiBub25l
OworfQorCisuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtpdC1yZXNpemVy
LCAuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtcmVzaXplciB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiwgLmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjot
d2Via2l0LXNjcm9sbGJhci1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy8qIEN1
c3RvbSBIb3Jpem9udGFsIFNjcm9sbGJhciBTdHlsZXMgKi8KKworLmN1c3RvbS1wb3B1cC1ob3Jp
em9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOmhvcml6b250YWw6Y29ybmVyLXByZXNl
bnQgeworICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKK30KKworLmN1c3RvbS1wb3B1cC1ob3Jp
em9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwgeworICAg
IC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RodW1iSG9yaXoucG5nKSAwIDExIDAg
MTE7CisgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItd2lkdGg6IDAg
MTFweDsKKyAgICBtaW4td2lkdGg6IDIwcHg7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRh
bC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmhvdmVyIHsKKyAg
ICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvdmVySG9yaXoucG5nKSAw
IDExIDAgMTE7Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0
LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmFjdGl2ZSB7CisgICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdGh1bWJBY3RpdmVIb3Jpei5wbmcpIDAgMTEgMCAxMTsKK30KKwor
LmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNr
LXBpZWNlOmhvcml6b250YWw6c3RhcnQgeworICAgIG1hcmdpbi1sZWZ0OiA1cHg7Cit9CisKKy5j
dXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1w
aWVjZTpob3Jpem9udGFsOmVuZCB7CisgICAgbWFyZ2luLXJpZ2h0OiA1cHg7Cit9CisKKy5jdXN0
b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVj
ZTpob3Jpem9udGFsOmVuZDpjb3JuZXItcHJlc2VudCB7CisgICAgbWFyZ2luLXJpZ2h0OiA0cHg7
Cit9CisKKy5jdXN0b20tcG9wdXAtaG9yaXpvbnRhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJh
ci10cmFjay1waWVjZTpob3Jpem9udGFsOmRlY3JlbWVudCB7CisgICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdHJhY2tIb3Jpei5wbmcpIDAgMTEgMCAxMTsKKyAgICBib3JkZXIt
Y29sb3I6IHRyYW5zcGFyZW50OworICAgIGJvcmRlci13aWR0aDogMCAwIDAgMTFweDsKK30KKwor
LmN1c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNr
LXBpZWNlOmhvcml6b250YWw6aW5jcmVtZW50IHsKKyAgICAtd2Via2l0LWJvcmRlci1pbWFnZTog
dXJsKEltYWdlcy90cmFja0hvcml6LnBuZykgMCAxMSAwIDExOworICAgIGJvcmRlci1jb2xvcjog
dHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRoOiAwIDExcHggMCAwOworfQorCisvKiBDdXN0
b20gVmVydGljYWwgU2Nyb2xsYmFyIFN0eWxlcyAqLworCisuY3VzdG9tLXBvcHVwLXZlcnRpY2Fs
LXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyOnZlcnRpY2FsOmNvcm5lci1wcmVzZW50IHsKKyAg
ICBib3JkZXItYm90dG9tLXdpZHRoOiAwOworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNj
cm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsIHsKKyAgICAtd2Via2l0LWJv
cmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYlZlcnQucG5nKSAxMSAwIDExIDA7CisgICAgYm9y
ZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItd2lkdGg6IDExcHggMDsKKyAgICBt
aW4taGVpZ2h0OiAyMHB4OworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmhvdmVyIHsKKyAgICAtd2Via2l0LWJvcmRl
ci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvdmVyVmVydC5wbmcpIDExIDAgMTEgMDsKK30KKwor
LmN1c3RvbS1wb3B1cC12ZXJ0aWNhbC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2
ZXJ0aWNhbDphY3RpdmUgeworICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3Ro
dW1iQWN0aXZlVmVydC5wbmcpIDExIDAgMTEgMDsKK30KKworLmN1c3RvbS1wb3B1cC12ZXJ0aWNh
bC1zY3JvbGwgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpzdGFydCB7
CisgICAgbWFyZ2luLXRvcDogNXB4OworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9s
bCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVuZCB7CisgICAgbWFy
Z2luLWJvdHRvbTogNXB4OworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVuZDpjb3JuZXItcHJlc2VudCB7
CisgICAgbWFyZ2luLWJvdHRvbTogNHB4OworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNj
cm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmRlY3JlbWVudCB7
CisgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBuZykgMTEg
MCAxMSAwOworICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRo
OiAxMXB4IDAgMCAwOworfQorCisuY3VzdG9tLXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmluY3JlbWVudCB7CisgICAgLXdlYmtp
dC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBuZykgMTEgMCAxMSAwOworICAg
IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXdpZHRoOiAwIDAgMTFweCAw
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9wb3Bv
dmVyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcG9wb3Zlci5jc3MK
aW5kZXggNzM5MjFhNy4uY2YxNGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9wb3BvdmVyLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3BvcG92ZXIuY3NzCkBAIC04OCwxMTQgKzg4LDMgQEAKICAgICBtYXJnaW4tcmln
aHQ6IC0yNXB4OwogICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTU3cHg7CiB9Ci0KLS5wb3Bv
dmVyIDo6LXdlYmtpdC1zY3JvbGxiYXIgewotICAgIHdpZHRoOiAxMXB4OwotICAgIGhlaWdodDog
MTFweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIgewotICAgIGRp
c3BsYXk6IG5vbmU7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1yZXNpemVyIHsKLSAgICBkaXNw
bGF5OiBub25lOwotfQotCi0vKiBIb3Jpem9udGFsIFNjcm9sbGJhciBTdHlsZXMgKi8KLQotLnBv
cG92ZXIgOjotd2Via2l0LXNjcm9sbGJhcjpob3Jpem9udGFsOmNvcm5lci1wcmVzZW50IHsKLSAg
ICBib3JkZXItcmlnaHQtd2lkdGg6IDA7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxi
YXItdGh1bWI6aG9yaXpvbnRhbCB7Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFn
ZXMvdGh1bWJIb3Jpei5wbmcpIDAgMTEgMCAxMTsKLSAgICBib3JkZXItY29sb3I6IHRyYW5zcGFy
ZW50OwotICAgIGJvcmRlci13aWR0aDogMCAxMXB4OwotICAgIG1pbi13aWR0aDogMjBweDsKLX0K
LQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Jpem9udGFsOmhvdmVyIHsK
LSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90aHVtYkhvdmVySG9yaXoucG5n
KSAwIDExIDAgMTE7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9y
aXpvbnRhbDphY3RpdmUgewotICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3Ro
dW1iQWN0aXZlSG9yaXoucG5nKSAwIDExIDAgMTE7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1z
Y3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDpzdGFydCB7Ci0gICAgbWFyZ2luLWxlZnQ6
IDVweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZTpob3Jp
em9udGFsOmVuZCB7Ci0gICAgbWFyZ2luLXJpZ2h0OiA1cHg7Ci19Ci0KLS5wb3BvdmVyIDo6LXdl
YmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2U6aG9yaXpvbnRhbDplbmQ6Y29ybmVyLXByZXNlbnQg
ewotICAgIG1hcmdpbi1yaWdodDogNHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6ZGVjcmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRl
ci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6LnBuZykgMCAxMSAwIDExOwotICAgIGJvcmRl
ci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAwIDAgMCAxMXB4OwotfQot
Ci0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOmhvcml6b250YWw6aW5j
cmVtZW50IHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90cmFja0hvcml6
LnBuZykgMCAxMSAwIDExOwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9y
ZGVyLXdpZHRoOiAwIDExcHggMCAwOwotfQotCi0vKiBWZXJ0aWNhbCBTY3JvbGxiYXIgU3R5bGVz
ICovCi0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhcjp2ZXJ0aWNhbDpjb3JuZXItcHJl
c2VudCB7Ci0gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKLX0KLQotLnBvcG92ZXIgOjotd2Vi
a2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbCB7Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6
IHVybChJbWFnZXMvdGh1bWJWZXJ0LnBuZykgMTEgMCAxMSAwOwotICAgIGJvcmRlci1jb2xvcjog
dHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAxMXB4IDA7Ci0gICAgbWluLWhlaWdodDog
MjBweDsKLX0KLQotLnBvcG92ZXIgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDpo
b3ZlciB7Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGh1bWJIb3ZlclZl
cnQucG5nKSAxMSAwIDExIDA7Ci19Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1
bWI6dmVydGljYWw6YWN0aXZlIHsKLSAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdl
cy90aHVtYkFjdGl2ZVZlcnQucG5nKSAxMSAwIDExIDA7Ci19Ci0KLQotLnBvcG92ZXIgOjotd2Vi
a2l0LXNjcm9sbGJhci10cmFjay1waWVjZTp2ZXJ0aWNhbDpzdGFydCB7Ci0gICAgbWFyZ2luLXRv
cDogNXB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZl
cnRpY2FsOmVuZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogNXB4OwotfQotCi0ucG9wb3ZlciA6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmVuZDpjb3JuZXItcHJlc2VudCB7
Ci0gICAgbWFyZ2luLWJvdHRvbTogNHB4OwotfQotCi0ucG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xs
YmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmRlY3JlbWVudCB7Ci0gICAgLXdlYmtpdC1ib3JkZXIt
aW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBuZykgMTEgMCAxMSAwOwotICAgIGJvcmRlci1j
b2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdpZHRoOiAxMXB4IDAgMCAwOwotfQotCi0u
cG9wb3ZlciA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlOnZlcnRpY2FsOmluY3JlbWVu
dCB7Ci0gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdHJhY2tWZXJ0LnBuZykg
MTEgMCAxMSAwOwotICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgYm9yZGVyLXdp
ZHRoOiAwIDAgMTFweCAwOwotfQotCi0vKiBGb3JjZWQgU2Nyb2xsYmFyIE1vZGUgU3R5bGVzICov
Ci0KLS5wb3BvdmVyIDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uIHsKLSAgICBkaXNwbGF5OiBu
b25lOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90
ZXh0UHJvbXB0LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFBy
b21wdC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNmNWM1MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFBy
b21wdC5jc3MKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zdWdnZXN0LWJveCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7CisgICAgZGlzcGxheTogbm9u
ZTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBwYWRkaW5nOiAycHg7CisgICAg
ei1pbmRleDogMTAwOworICAgIC13ZWJraXQtYm94LXNoYWRvdzogMTBweCAxMHB4IDhweCByZ2Jh
KDQwLCA0MCwgNDAsIDAuNDApOworfQorCisuc3VnZ2VzdC1ib3gudmlzaWJsZSB7CisgICAgZGlz
cGxheTogYmxvY2s7Cit9CisKKy5zdWdnZXN0LWJveCAuY29udGFpbmVyIHsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7Cisg
ICAgYm90dG9tOiAwOworICAgIG1hcmdpbjogMnB4IDA7CisgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgIG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5zdWdnZXN0LWJveC1jb250ZW50LWl0ZW0g
eworICAgIHBhZGRpbmc6IDFweDsKKyAgICBtYXJnaW46IDA7CisgICAgZm9udC1zaXplOiAxMXB4
OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cisg
ICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cit9CisKKy5zdWdnZXN0LWJveC1jb250
ZW50LWl0ZW0gLnByZWZpeCB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5zdWdnZXN0
LWJveC1jb250ZW50LWl0ZW0uc2VsZWN0ZWQgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigw
LCAwLCAwKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7Cit9CisK
Ky5zdWdnZXN0LWJveC1jb250ZW50LWl0ZW06aG92ZXI6bm90KC5zZWxlY3RlZCkgeworICAgIGJv
cmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5kZXggY2VlMDdlNy4uMmJmNmFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMu
anMKQEAgLTMwMSw2ICszMDEsMzEgQEAgRWxlbWVudC5wcm90b3R5cGUub2Zmc2V0UmVsYXRpdmVU
b1dpbmRvdyA9IGZ1bmN0aW9uKHRhcmdldFdpbmRvdykKICAgICByZXR1cm4gZWxlbWVudE9mZnNl
dDsKIH0KIAorRWxlbWVudC5wcm90b3R5cGUuYm94SW5XaW5kb3cgPSBmdW5jdGlvbih0YXJnZXRX
aW5kb3csIHJlbGF0aXZlUGFyZW50KQoreworICAgIHRhcmdldFdpbmRvdyA9IHRhcmdldFdpbmRv
dyB8fCB0aGlzLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7CisgICAgdmFyIGJvZHlFbGVtZW50
ID0gdGhpcy5vd25lckRvY3VtZW50LmJvZHk7CisgICAgcmVsYXRpdmVQYXJlbnQgPSByZWxhdGl2
ZVBhcmVudCB8fCBib2R5RWxlbWVudDsKKworICAgIHZhciBhbmNob3JCb3ggPSB0aGlzLm9mZnNl
dFJlbGF0aXZlVG9XaW5kb3cod2luZG93KTsKKyAgICBhbmNob3JCb3gud2lkdGggPSB0aGlzLm9m
ZnNldFdpZHRoOworICAgIGFuY2hvckJveC5oZWlnaHQgPSB0aGlzLm9mZnNldEhlaWdodDsKKwor
ICAgIHZhciBhbmNob3JFbGVtZW50ID0gdGhpczsKKyAgICB3aGlsZSAoYW5jaG9yRWxlbWVudCAm
JiBhbmNob3JFbGVtZW50ICE9PSByZWxhdGl2ZVBhcmVudCAmJiBhbmNob3JFbGVtZW50ICE9PSBi
b2R5RWxlbWVudCkgeworICAgICAgICBpZiAoYW5jaG9yRWxlbWVudC5zY3JvbGxMZWZ0KQorICAg
ICAgICAgICAgYW5jaG9yQm94LnggLT0gYW5jaG9yRWxlbWVudC5zY3JvbGxMZWZ0OworICAgICAg
ICBpZiAoYW5jaG9yRWxlbWVudC5zY3JvbGxUb3ApCisgICAgICAgICAgICBhbmNob3JCb3gueSAt
PSBhbmNob3JFbGVtZW50LnNjcm9sbFRvcDsKKyAgICAgICAgYW5jaG9yRWxlbWVudCA9IGFuY2hv
ckVsZW1lbnQucGFyZW50RWxlbWVudDsKKyAgICB9CisKKyAgICB2YXIgcGFyZW50T2Zmc2V0ID0g
cmVsYXRpdmVQYXJlbnQub2Zmc2V0UmVsYXRpdmVUb1dpbmRvdyh3aW5kb3cpOworICAgIGFuY2hv
ckJveC54IC09IHBhcmVudE9mZnNldC54OworICAgIGFuY2hvckJveC55IC09IHBhcmVudE9mZnNl
dC55OworICAgIHJldHVybiBhbmNob3JCb3g7Cit9CisKIEVsZW1lbnQucHJvdG90eXBlLnNldFRl
eHRBbmRUaXRsZSA9IGZ1bmN0aW9uKHRleHQpCiB7CiAgICAgdGhpcy50ZXh0Q29udGVudCA9IHRl
eHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113459</attachid>
            <date>2011-11-03 04:13:31 -0700</date>
            <delta_ts>2011-11-07 01:59:45 -0800</delta_ts>
            <desc>[PATCH] Rebased on the committed SuggestBox</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>8595</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDgzN2JjNzYxMTc0NTAxM2IzODIyOWQ4NzlkNDFlMzgyNjQ1MjUyZjkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDI1
IDE4OjI2OjU2IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI1ZTVjYS4uMWNl
ZDU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDExLTExLTAzICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YXV0b2NvbXBsZXRlIGNvbWJvYm94IGZvciBTdHlsZXMgc2lkZWJhciBhbmQgQ29uc29sZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVW
aWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUpOgorICAgICAgICAoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3M6CisgICAgICAgICguc3VnZ2VzdC1ib3guZ2VuZXJpYy1zdWdnZXN0KToKKyAgICAgICAg
KC5zdWdnZXN0LWJveC5nZW5lcmljLXN1Z2dlc3QuYWJvdmUtYW5jaG9yKToKKyAgICAgICAgKC5z
dWdnZXN0LWJveC5nZW5lcmljLXN1Z2dlc3QgLmNvbnRlbnQpOgorCisyMDExLTExLTAzICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW50cm9kdWNlIFN1Z2dlc3RCb3ggZm9yIFRleHRQcm9tcHQKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMjg4CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGU1OWM4YmEu
LjhiZWIyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwpAQCAtMTExLDcgKzExMSw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dyA9IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAKICAgICB0aGlzLl9saW5raWZpZXIg
PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIo
KTsKIAotICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0V2l0aEhp
c3RvcnkodGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3Rl
cnMgKyAiLiIpOworICAgIGNvbnN0IHN1Z2dlc3RCb3hDb25maWcgPSBuZXcgV2ViSW5zcGVjdG9y
LlRleHRQcm9tcHQuU3VnZ2VzdEJveENvbmZpZygiZ2VuZXJpYy1zdWdnZXN0Iik7CisgICAgdGhp
cy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHRXaXRoSGlzdG9yeSh0aGlzLmNv
bXBsZXRpb25zLmJpbmQodGhpcyksIEV4cHJlc3Npb25TdG9wQ2hhcmFjdGVycyArICIuIiwgc3Vn
Z2VzdEJveENvbmZpZyk7CiAgICAgdGhpcy5wcm9tcHQuYXR0YWNoKHRoaXMucHJvbXB0RWxlbWVu
dCk7CiAgICAgdGhpcy5wcm9tcHQuc2V0SGlzdG9yeURhdGEoV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNvbnNvbGVIaXN0b3J5LmdldCgpKTsKIH0KQEAgLTM1MiwxMiArMzUzLDcgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGRvdE5vdGF0aW9uIHx8
IGJyYWNrZXROb3RhdGlvbikKICAgICAgICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNz
aW9uU3RyaW5nLnN1YnN0cigwLCBsYXN0SW5kZXgpOwogCi0gICAgICAgIGlmICghZXhwcmVzc2lv
blN0cmluZyAmJiAhcHJlZml4KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uc1JlYWR5Q2FsbGJh
Y2soW10pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBh
cnNlSW50KGV4cHJlc3Npb25TdHJpbmcsIDEwKSA9PSBleHByZXNzaW9uU3RyaW5nKSB7CisgICAg
ICAgIGlmIChleHByZXNzaW9uU3RyaW5nICYmIHBhcnNlSW50KGV4cHJlc3Npb25TdHJpbmcsIDEw
KSA9PSBleHByZXNzaW9uU3RyaW5nKSB7CiAgICAgICAgICAgICAvLyBVc2VyIGlzIGVudGVyaW5n
IGZsb2F0IHZhbHVlLCBkbyBub3Qgc3VnZ2VzdCBhbnl0aGluZy4KICAgICAgICAgICAgIGNvbXBs
ZXRpb25zUmVhZHlDYWxsYmFjayhbXSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5q
cwppbmRleCAzZDg0NDcwLi43MDMzNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTEwNyw3ICsxMDcs
NyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ29sb3JGb3JtYXQgPSB7CiAgICAg
SFNMQTogImhzbGEiCiB9CiAKLVdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZh
bHVlRGVsaW1pdGVycyA9ICIgXHRcblwiJzo7LC8oKSI7CitXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMgPSAiIFx4QTBcdFxuXCInOjssLygpIjsKIAog
CiAvLyBLZWVwIGluIHN5bmMgd2l0aCBSZW5kZXJTdHlsZUNvbnN0YW50cy5oIFBzZXVkb0lkIGVu
dW0uIEFycmF5IGJlbG93IGNvbnRhaW5zIHBzZXVkbyBpZCBuYW1lcyBmb3IgY29ycmVzcG9uZGlu
ZyBlbnVtIGluZGV4ZXMuCkBAIC0xODc1LDcgKzE4NzUsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHNlbGVjdEVsZW1l
bnQucGFyZW50RWxlbWVudCkKICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVu
dC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKIAotICAgICAgICB0aGlzLl9wcm9tcHQg
PSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0KGlz
RWRpdGluZ05hbWUgPyBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRp
b25zIDogV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eSh0aGlz
Lm5hbWVFbGVtZW50LnRleHRDb250ZW50KSwgdGhpcywgaXNFZGl0aW5nTmFtZSk7CisgICAgICAg
IHZhciBhcHBseUl0ZW1DYWxsYmFjayA9ICFpc0VkaXRpbmdOYW1lID8gdGhpcy5fYXBwbHlGcmVl
Rmxvd1N0eWxlVGV4dEVkaXQuYmluZCh0aGlzLCB0cnVlKSA6IHVuZGVmaW5lZDsKKyAgICAgICAg
dGhpcy5fcHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9w
ZXJ0eVByb21wdChpc0VkaXRpbmdOYW1lID8gV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNz
c05hbWVDb21wbGV0aW9ucyA6IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9y
UHJvcGVydHkodGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCksIHRoaXMsIGlzRWRpdGluZ05h
bWUsIGFwcGx5SXRlbUNhbGxiYWNrKTsKICAgICAgICAgdmFyIHByb3h5RWxlbWVudCA9IHRoaXMu
X3Byb21wdC5hdHRhY2hBbmRTdGFydEVkaXRpbmcoc2VsZWN0RWxlbWVudCwgYmx1ckxpc3RlbmVy
LmJpbmQodGhpcywgY29udGV4dCkpOwogCiAgICAgICAgIHByb3h5RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgdGhpcy5lZGl0aW5nTmFtZVZhbHVlS2V5RG93bi5iaW5kKHRoaXMs
IGNvbnRleHQpLCBmYWxzZSk7CkBAIC0yMjAyLDEwICsyMjAzLDEzIEBAIFdlYkluc3BlY3Rvci5T
dHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50
LnByb3RvdHlwCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0fQorICogQHBhcmFtIHtmdW5jdGlvbigqKT19IGFjY2VwdENhbGxiYWNrCiAg
Ki8KLVdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdCA9IGZ1
bmN0aW9uKGNzc0NvbXBsZXRpb25zLCBzaWRlYmFyUGFuZSwgaXNFZGl0aW5nTmFtZSkKK1dlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdCA9IGZ1bmN0aW9uKGNz
c0NvbXBsZXRpb25zLCBzaWRlYmFyUGFuZSwgaXNFZGl0aW5nTmFtZSwgYWNjZXB0Q2FsbGJhY2sp
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuY2FsbCh0aGlzLCB0aGlzLl9idWlsZFBy
b3BlcnR5Q29tcGxldGlvbnMuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzKTsKKyAgICAvLyBVc2UgdGhlIHNhbWUgY2FsbGJhY2sg
Ym90aCBmb3IgYXBwbHlJdGVtQ2FsbGJhY2sgYW5kIGFjY2VwdEl0ZW1DYWxsYmFjay4KKyAgICBj
b25zdCBzdWdnZXN0Qm94Q29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dl
c3RCb3hDb25maWcoImdlbmVyaWMtc3VnZ2VzdCIsIGFjY2VwdENhbGxiYWNrLCBhY2NlcHRDYWxs
YmFjayk7CisgICAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuY2FsbCh0aGlzLCB0aGlzLl9idWls
ZFByb3BlcnR5Q29tcGxldGlvbnMuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCBzdWdnZXN0Qm94Q29uZmlnKTsKICAgICB0aGlz
Ll9jc3NDb21wbGV0aW9ucyA9IGNzc0NvbXBsZXRpb25zOwogICAgIHRoaXMuX3NpZGViYXJQYW5l
ID0gc2lkZWJhclBhbmU7CiAgICAgdGhpcy5faXNFZGl0aW5nTmFtZSA9IGlzRWRpdGluZ05hbWU7
CkBAIC0yMjI1LDggKzIyMjksMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNT
U1Byb3BlcnR5UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlICJVKzAwMDkiOgotICAgICAgICAgICAgdGhpcy5hY2NlcHRB
dXRvQ29tcGxldGUoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh0aGlz
LmlzU3VnZ2VzdEJveFZpc2libGUoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RC
b3guYWNjZXB0U3VnZ2VzdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5faXNF
ZGl0aW5nTmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0aGlzLmFjY2Vw
dEF1dG9Db21wbGV0ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQucHJvdG90eXBlLm9uS2V5RG93bi5jYWxsKHRoaXMsIGV2ZW50KTsKQEAgLTIyMzQsMTkg
KzIyNDEsMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJv
bXB0LnByb3RvdHlwZSA9IHsKIAogICAgIF9oYW5kbGVOYW1lT3JWYWx1ZVVwRG93bjogZnVuY3Rp
b24oZXZlbnQpCiAgICAgeworICAgICAgICAvLyBIYW5kbGUgbnVtZXJpYyB2YWx1ZSBpbmNyZW1l
bnQvZGVjcmVtZW50IG9ubHkgYXQgdGhpcyBwb2ludC4KICAgICAgICAgaWYgKCF0aGlzLl9pc0Vk
aXRpbmdOYW1lICYmIHRoaXMuX2hhbmRsZVVwT3JEb3duVmFsdWUoZXZlbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgdmFyIHJldmVyc2UgPSBldmVudC5rZXlJZGVudGlm
aWVyID09PSAiVXAiOwotICAgICAgICBpZiAodGhpcy5hdXRvQ29tcGxldGVFbGVtZW50KQotICAg
ICAgICAgICAgdGhpcy5jb21wbGV0ZShmYWxzZSwgdHJ1ZSwgcmV2ZXJzZSk7IC8vIEFjY2VwdCB0
aGUgY3VycmVudCBzdWdnZXN0aW9uLCBpZiBhbnkuCi0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgLy8gU2VsZWN0IHRoZSB3b3JkIHN1ZmZpeCB0byBhZmZlY3QgaXQgd2hlbiBjb21wdXRpbmcg
dGhlIHN1YnNlcXVlbnQgc3VnZ2VzdGlvbi4KLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdEN1cnJl
bnRXb3JkU3VmZml4KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmNvbXBsZXRlKGZhbHNl
LCB0cnVlLCByZXZlcnNlKTsgLy8gQWN0dWFsbHkgaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgc3Vn
Z2VzdGlvbi4KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9LAogCiAgICAgX2hhbmRsZVVwT3JEb3duVmFsdWU6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjMx
NiwyMiArMjMxNSw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0
eVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0g
ICAgX3NlbGVjdEN1cnJlbnRXb3JkU3VmZml4OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2
YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAoIXNlbGVj
dGlvbi5yYW5nZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBzZWxl
Y3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAgICBpZiAoIXNlbGVj
dGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVzY2VuZGFudCh0aGlzLl9lbGVt
ZW50KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHdvcmRTdWZmaXhSYW5nZSA9
IHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHNlbGVjdGlvblJhbmdl
LnN0YXJ0T2Zmc2V0LCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURl
bGltaXRlcnMsIHRoaXMuX2VsZW1lbnQsICJmb3J3YXJkIik7Ci0gICAgICAgIGlmICghd29yZFN1
ZmZpeFJhbmdlLnRvU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNlbGVj
dGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHdvcmRT
dWZmaXhSYW5nZSk7Ci0gICAgfSwKLQogICAgIF9idWlsZFByb3BlcnR5Q29tcGxldGlvbnM6IGZ1
bmN0aW9uKHdvcmRSYW5nZSwgZm9yY2UsIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKICAgICB7
CiAgICAgICAgIHZhciBwcmVmaXggPSB3b3JkUmFuZ2UudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
CmluZGV4IGIzZGNmMjEuLjkwNjlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTI1MTcsNiArMjUxNywyNCBAQCBib2R5LnBs
YXRmb3JtLW1hYyAjZHJhd2VyLXN0YXR1cy1iYXIgLnNlYXJjaC1zdGF0dXMtYmFyLXByb2dyZXNz
IHsKICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKKy8qIEdlbmVyaWMgc3VnZ2VzdCBi
b3ggc3R5bGUgKi8KKworLnN1Z2dlc3QtYm94LmdlbmVyaWMtc3VnZ2VzdCB7CisgICAgYm9yZGVy
LXJhZGl1czogMCA1cHggNXB4IDVweDsKKyAgICBtYXJnaW4tbGVmdDogLTFweDsKKyAgICBib3Jk
ZXItY29sb3I6IHJnYig2NiUsIDY2JSwgNjYlKTsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDhw
eCA4cHggNnB4IHJnYmEoNDAsIDQwLCA0MCwgMC40MCk7Cit9CisKKy5zdWdnZXN0LWJveC5nZW5l
cmljLXN1Z2dlc3QuYWJvdmUtYW5jaG9yIHsKKyAgIGJvcmRlci1yYWRpdXM6IDVweCA1cHggNXB4
IDA7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiA4cHggLThweCA2cHggcmdiYSg0MCwgNDAsIDQw
LCAwLjQwKTsKK30KKworLnN1Z2dlc3QtYm94LmdlbmVyaWMtc3VnZ2VzdCAuY29udGVudCB7Cisg
ICAgbWFyZ2luOiAzcHg7Cit9CisKIC8qIEN1c3RvbSBwb3B1cCBzY3JvbGxlcnMgKi8KIAogLmN1
c3RvbS1wb3B1cC1ob3Jpem9udGFsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuY3VzdG9t
LXBvcHVwLXZlcnRpY2FsLXNjcm9sbCA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsK
</data>
<flag name="review"
          id="111839"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113835</attachid>
            <date>2011-11-07 01:59:45 -0800</date>
            <delta_ts>2011-11-07 04:27:28 -0800</delta_ts>
            <desc>[PATCH] Got rid of SuggestBoxConfig</desc>
            <filename>autocompletecss.patch</filename>
            <type>text/plain</type>
            <size>12548</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGYyNzlmZTY0OTZlNmUyMzBkMjM0ZDhiOTM1Y2E1YzcwZTM3MzEzMTkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgQXVnIDI1
IDE4OjI2OjU2IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQxMjE1Mi4uMTJm
NDVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTAzICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YXV0b2NvbXBsZXRlIGNvbWJvYm94IGZvciBTdHlsZXMgc2lkZWJhciBhbmQgQ29uc29sZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVW
aWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUpOgorICAgICAgICAoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3M6CisgICAgICAgICguc3VnZ2VzdC1ib3guZ2VuZXJpYy1zdWdnZXN0KToKKyAgICAgICAg
KC5zdWdnZXN0LWJveC5nZW5lcmljLXN1Z2dlc3QuYWJvdmUtYW5jaG9yKToKKyAgICAgICAgKC5z
dWdnZXN0LWJveC5nZW5lcmljLXN1Z2dlc3QgLmNvbnRlbnQpOgorCiAyMDExLTExLTA2ICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBGaXggc29tZSBzdHls
ZSBpc3N1ZXMgaW4gSW1hZ2VCdWZmZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggZTU5YzhiYS4uMGQ0OThlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBA
IC0xMTIsNiArMTEyLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0gZnVuY3Rpb24oaGlk
ZUNvbnRleHRTZWxlY3RvcikKICAgICB0aGlzLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKIAogICAgIHRoaXMucHJv
bXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0V2l0aEhpc3RvcnkodGhpcy5jb21wbGV0
aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAiLiIpOworICAgIHRo
aXMucHJvbXB0LnNldFN1Z2dlc3RCb3hFbmFibGVkKCJnZW5lcmljLXN1Z2dlc3QiKTsKICAgICB0
aGlzLnByb21wdC5hdHRhY2godGhpcy5wcm9tcHRFbGVtZW50KTsKICAgICB0aGlzLnByb21wdC5z
ZXRIaXN0b3J5RGF0YShXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29sZUhpc3RvcnkuZ2V0KCkp
OwogfQpAQCAtMzUyLDEyICszNTMsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoZG90Tm90YXRpb24gfHwgYnJhY2tldE5vdGF0aW9uKQogICAg
ICAgICAgICAgZXhwcmVzc2lvblN0cmluZyA9IGV4cHJlc3Npb25TdHJpbmcuc3Vic3RyKDAsIGxh
c3RJbmRleCk7CiAKLSAgICAgICAgaWYgKCFleHByZXNzaW9uU3RyaW5nICYmICFwcmVmaXgpIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhbXSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGFyc2VJbnQoZXhwcmVzc2lvblN0cmlu
ZywgMTApID09IGV4cHJlc3Npb25TdHJpbmcpIHsKKyAgICAgICAgaWYgKGV4cHJlc3Npb25TdHJp
bmcgJiYgcGFyc2VJbnQoZXhwcmVzc2lvblN0cmluZywgMTApID09IGV4cHJlc3Npb25TdHJpbmcp
IHsKICAgICAgICAgICAgIC8vIFVzZXIgaXMgZW50ZXJpbmcgZmxvYXQgdmFsdWUsIGRvIG5vdCBz
dWdnZXN0IGFueXRoaW5nLgogICAgICAgICAgICAgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKFtd
KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGNmNDdjZGUuLjI5YmJk
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5Db2xvckZvcm1hdCA9IHsKICAgICBIU0xBOiAiaHNsYSIKIH0KIAotV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzID0gIiBcdFxu
XCInOjssLygpIjsKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVs
aW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCkiOwogCiAKIC8vIEtlZXAgaW4gc3luYyB3aXRo
IFJlbmRlclN0eWxlQ29uc3RhbnRzLmggUHNldWRvSWQgZW51bS4gQXJyYXkgYmVsb3cgY29udGFp
bnMgcHNldWRvIGlkIG5hbWVzIGZvciBjb3JyZXNwb25kaW5nIGVudW0gaW5kZXhlcy4KQEAgLTE4
NzIsNyArMTg3MiwxMiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVudCkKICAg
ICAgICAgICAgIHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVl
ZGVkKGZhbHNlKTsKIAorICAgICAgICB2YXIgYXBwbHlJdGVtQ2FsbGJhY2sgPSAhaXNFZGl0aW5n
TmFtZSA/IHRoaXMuX2FwcGx5RnJlZUZsb3dTdHlsZVRleHRFZGl0LmJpbmQodGhpcywgdHJ1ZSkg
OiB1bmRlZmluZWQ7CiAgICAgICAgIHRoaXMuX3Byb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQoaXNFZGl0aW5nTmFtZSA/IFdlYkluc3Bl
Y3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgOiBXZWJJbnNwZWN0b3IuQ1NT
S2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRl
bnQpLCB0aGlzLCBpc0VkaXRpbmdOYW1lKTsKKyAgICAgICAgaWYgKGFwcGx5SXRlbUNhbGxiYWNr
KSB7CisgICAgICAgICAgICB0aGlzLl9wcm9tcHQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5FdmVudHMuSXRlbUFwcGxpZWQsIGFwcGx5SXRlbUNhbGxiYWNrLCB0aGlz
KTsKKyAgICAgICAgICAgIHRoaXMuX3Byb21wdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0LkV2ZW50cy5JdGVtQWNjZXB0ZWQsIGFwcGx5SXRlbUNhbGxiYWNrLCB0aGlz
KTsKKyAgICAgICAgfQogICAgICAgICB2YXIgcHJveHlFbGVtZW50ID0gdGhpcy5fcHJvbXB0LmF0
dGFjaEFuZFN0YXJ0RWRpdGluZyhzZWxlY3RFbGVtZW50LCBibHVyTGlzdGVuZXIuYmluZCh0aGlz
LCBjb250ZXh0KSk7CiAKICAgICAgICAgcHJveHlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCB0aGlzLmVkaXRpbmdOYW1lVmFsdWVLZXlEb3duLmJpbmQodGhpcywgY29udGV4dCks
IGZhbHNlKTsKQEAgLTIxOTksMTAgKzIyMDQsMTMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXAK
IC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlRleHRQcm9t
cHR9CisgKiBAcGFyYW0ge2Z1bmN0aW9uKCopPX0gYWNjZXB0Q2FsbGJhY2sKICAqLwotV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVuY3Rpb24oY3Nz
Q29tcGxldGlvbnMsIHNpZGViYXJQYW5lLCBpc0VkaXRpbmdOYW1lKQorV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVuY3Rpb24oY3NzQ29tcGxldGlv
bnMsIHNpZGViYXJQYW5lLCBpc0VkaXRpbmdOYW1lLCBhY2NlcHRDYWxsYmFjaykKIHsKKyAgICAv
LyBVc2UgdGhlIHNhbWUgY2FsbGJhY2sgYm90aCBmb3IgYXBwbHlJdGVtQ2FsbGJhY2sgYW5kIGFj
Y2VwdEl0ZW1DYWxsYmFjay4KICAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5jYWxsKHRoaXMs
IHRoaXMuX2J1aWxkUHJvcGVydHlDb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMpOworICAgIHRoaXMuc2V0U3Vn
Z2VzdEJveEVuYWJsZWQoImdlbmVyaWMtc3VnZ2VzdCIpOwogICAgIHRoaXMuX2Nzc0NvbXBsZXRp
b25zID0gY3NzQ29tcGxldGlvbnM7CiAgICAgdGhpcy5fc2lkZWJhclBhbmUgPSBzaWRlYmFyUGFu
ZTsKICAgICB0aGlzLl9pc0VkaXRpbmdOYW1lID0gaXNFZGl0aW5nTmFtZTsKQEAgLTIyMjIsOCAr
MjIzMCwxMSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9t
cHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgIlUrMDAwOSI6Ci0gICAgICAgICAgICB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94
VmlzaWJsZSgpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5hY2NlcHRTdWdn
ZXN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9pc0VkaXRpbmdOYW1lOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRl
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5
cGUub25LZXlEb3duLmNhbGwodGhpcywgZXZlbnQpOwpAQCAtMjIzMSwxOSArMjI0MiwxMSBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBl
ID0gewogCiAgICAgX2hhbmRsZU5hbWVPclZhbHVlVXBEb3duOiBmdW5jdGlvbihldmVudCkKICAg
ICB7CisgICAgICAgIC8vIEhhbmRsZSBudW1lcmljIHZhbHVlIGluY3JlbWVudC9kZWNyZW1lbnQg
b25seSBhdCB0aGlzIHBvaW50LgogICAgICAgICBpZiAoIXRoaXMuX2lzRWRpdGluZ05hbWUgJiYg
dGhpcy5faGFuZGxlVXBPckRvd25WYWx1ZShldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgICAgICB2YXIgcmV2ZXJzZSA9IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCI7
Ci0gICAgICAgIGlmICh0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQpCi0gICAgICAgICAgICB0aGlz
LmNvbXBsZXRlKGZhbHNlLCB0cnVlLCByZXZlcnNlKTsgLy8gQWNjZXB0IHRoZSBjdXJyZW50IHN1
Z2dlc3Rpb24sIGlmIGFueS4KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBTZWxlY3Qg
dGhlIHdvcmQgc3VmZml4IHRvIGFmZmVjdCBpdCB3aGVuIGNvbXB1dGluZyB0aGUgc3Vic2VxdWVu
dCBzdWdnZXN0aW9uLgotICAgICAgICAgICAgdGhpcy5fc2VsZWN0Q3VycmVudFdvcmRTdWZmaXgo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY29tcGxldGUoZmFsc2UsIHRydWUsIHJldmVy
c2UpOyAvLyBBY3R1YWxseSBpbmNyZW1lbnQvZGVjcmVtZW50IHRoZSBzdWdnZXN0aW9uLgotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKICAgICBf
aGFuZGxlVXBPckRvd25WYWx1ZTogZnVuY3Rpb24oZXZlbnQpCkBAIC0yMzEzLDIyICsyMzE2LDYg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKLSAgICBfc2VsZWN0Q3Vy
cmVudFdvcmRTdWZmaXg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3Rpb24g
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291
bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0g
c2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAgICAgIGlmICghc2VsZWN0aW9uUmFuZ2UuY29t
bW9uQW5jZXN0b3JDb250YWluZXIuaXNEZXNjZW5kYW50KHRoaXMuX2VsZW1lbnQpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgd29yZFN1ZmZpeFJhbmdlID0gc2VsZWN0aW9uUmFu
Z2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0aW9uUmFuZ2Uuc3RhcnRPZmZzZXQs
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycywgdGhp
cy5fZWxlbWVudCwgImZvcndhcmQiKTsKLSAgICAgICAgaWYgKCF3b3JkU3VmZml4UmFuZ2UudG9T
dHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFs
bFJhbmdlcygpOwotICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2Uod29yZFN1ZmZpeFJhbmdlKTsK
LSAgICB9LAotCiAgICAgX2J1aWxkUHJvcGVydHlDb21wbGV0aW9uczogZnVuY3Rpb24od29yZFJh
bmdlLCBmb3JjZSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFy
IHByZWZpeCA9IHdvcmRSYW5nZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKaW5kZXggNjA5Zjll
ZS4uYTZiMjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0UHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGV4dFByb21wdC5qcwpAQCAtMjksMTEgKzI5LDExIEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgKiBAcGFyYW0ge2Z1bmN0aW9uKFJh
bmdlLCBib29sZWFuLCBmdW5jdGlvbigqKSl9IGNvbXBsZXRpb25zCiAgKiBAcGFyYW0ge3N0cmlu
Z30gc3RvcENoYXJhY3RlcnMKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3Vn
Z2VzdEJveENvbmZpZz19IHN1Z2dlc3RCb3hDb25maWcKICAqLwotV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQgPSBmdW5jdGlvbihjb21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMsIHN1Z2dlc3RCb3hD
b25maWcpCitXZWJJbnNwZWN0b3IuVGV4dFByb21wdCA9IGZ1bmN0aW9uKGNvbXBsZXRpb25zLCBz
dG9wQ2hhcmFjdGVycykKIHsKICAgICAvKioKICAgICAgKiBAdHlwZSB7RWxlbWVudHx1bmRlZmlu
ZWR9CkBAIC00MSwxMCArNDEsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQgPSBmdW5jdGlv
bihjb21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMsIHN1Z2dlc3RCb3hDb25maWcKICAgICB0aGlz
Ll9wcm94eUVsZW1lbnQ7CiAgICAgdGhpcy5fbG9hZENvbXBsZXRpb25zID0gY29tcGxldGlvbnM7
CiAgICAgdGhpcy5fY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzID0gc3RvcENoYXJhY3RlcnM7Ci0g
ICAgdGhpcy5fc3VnZ2VzdEJveENvbmZpZyA9IHN1Z2dlc3RCb3hDb25maWc7CiAgICAgdGhpcy5f
c3VnZ2VzdEZvcmNlYWJsZSA9IHRydWU7CiB9CiAKK1dlYkluc3BlY3Rvci5UZXh0UHJvbXB0LkV2
ZW50cyA9IHsKKyAgICBJdGVtQXBwbGllZDogInRleHQtcHJvbXB0LWl0ZW0tYXBwbGllZCIsCisg
ICAgSXRlbUFjY2VwdGVkOiAidGV4dC1wcm9tcHQtaXRlbS1hY2NlcHRlZCIKK307CisKIFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICBnZXQgcHJveHlFbGVtZW50KCkK
ICAgICB7CkBAIC01Niw2ICs2MCwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3N1Z2dlc3RGb3JjZWFibGUgPSB4OwogICAgIH0sCiAKKyAg
ICBzZXRTdWdnZXN0Qm94RW5hYmxlZDogZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fc3VnZ2VzdEJveENsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICB9LAorCiAgICAg
LyoqCiAgICAgICogQ2xpZW50cyBzaG91bGQgbmV2ZXIgYXR0YWNoIGFueSBldmVudCBsaXN0ZW5l
cnMgdG8gdGhlIHxlbGVtZW50fC4gSW5zdGVhZCwKICAgICAgKiB0aGV5IHNob3VsZCB1c2UgdGhl
IHJlc3VsdCBvZiB0aGlzIG1ldGhvZCB0byBhdHRhY2ggbGlzdGVuZXJzIGZvciBidWJibGluZyBl
dmVudHMuCkBAIC05OSwxMSArMTA4LDkgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9ib3VuZE9uS2V5RG93biwgdHJ1ZSk7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCB0aGlzLl9zZWxlY3RTdGFydC5iaW5kKHRoaXMp
LCBmYWxzZSk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3hDb25maWcpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3N1Z2dlc3RCb3ggPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3Vn
Z2VzdEJveCh0aGlzLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9zdWdnZXN0Qm94Q29uZmlnLnN0eWxl
Q2xhc3MpOwotICAgICAgICAgICAgdGhpcy5fYXBwbHlDYWxsYmFjayA9IHRoaXMuX3N1Z2dlc3RC
b3hDb25maWcuYXBwbHlJdGVtQ2FsbGJhY2s7Ci0gICAgICAgICAgICB0aGlzLl9hY2NlcHRDYWxs
YmFjayA9IHRoaXMuX3N1Z2dlc3RCb3hDb25maWcuYWNjZXB0SXRlbUNhbGxiYWNrOwotICAgICAg
ICB9CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fc3VnZ2VzdEJveENsYXNzTmFtZSA9PT0gInN0
cmluZyIpCisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94ID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LlN1Z2dlc3RCb3godGhpcywgdGhpcy5fZWxlbWVudCwgdGhpcy5fc3VnZ2VzdEJv
eENsYXNzTmFtZSk7CisKICAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFbGVtZW50OwogICAgIH0s
CiAKQEAgLTQ4Miw4ICs0ODksOCBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAg
ICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgc2VsZWN0aW9uLmFkZFJh
bmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOwotICAgICAgICBpZiAoaXNJbnRlcm1lZGlhdGVTdWdn
ZXN0aW9uICYmIHRoaXMuX2FwcGx5Q2FsbGJhY2spCi0gICAgICAgICAgICB0aGlzLl9hcHBseUNh
bGxiYWNrKCk7CisgICAgICAgIGlmIChpc0ludGVybWVkaWF0ZVN1Z2dlc3Rpb24pCisgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4dFByb21w
dC5FdmVudHMuSXRlbUFwcGxpZWQsIHsgaXRlbVRleHQ6IGNvbXBsZXRpb25UZXh0IH0pOwogICAg
IH0sCiAKICAgICBhY2NlcHRTdWdnZXN0aW9uOiBmdW5jdGlvbigpCkBAIC00OTEsOCArNDk4LDcg
QEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmFj
Y2VwdEF1dG9Db21wbGV0ZSgpOwogICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdEJveCkKICAgICAg
ICAgICAgIHRoaXMuX3N1Z2dlc3RCb3guaGlkZSgpOwotICAgICAgICBpZiAodGhpcy5fYWNjZXB0
Q2FsbGJhY2spCi0gICAgICAgICAgICB0aGlzLl9hY2NlcHRDYWxsYmFjaygpOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5FdmVu
dHMuSXRlbUFjY2VwdGVkKTsKICAgICB9LAogCiAgICAgaXNTdWdnZXN0Qm94VmlzaWJsZTogZnVu
Y3Rpb24oKQpAQCAtNjI0LDI5ICs2MzAsMTcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJv
dG90eXBlID0gewogICAgIH0KIH0KIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7
c3RyaW5nPX0gc3R5bGVDbGFzcwotICogQHBhcmFtIHtmdW5jdGlvbigqKT19IGFwcGx5SXRlbUNh
bGxiYWNrCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKCopPX0gYWNjZXB0SXRlbUNhbGxiYWNrCi0gKi8K
LVdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3hDb25maWcgPSBmdW5jdGlvbihzdHls
ZUNsYXNzLCBhcHBseUl0ZW1DYWxsYmFjaywgYWNjZXB0SXRlbUNhbGxiYWNrKQotewotICAgIHRo
aXMuc3R5bGVDbGFzcyA9IHN0eWxlQ2xhc3M7Ci0gICAgdGhpcy5hcHBseUl0ZW1DYWxsYmFjayA9
IGFwcGx5SXRlbUNhbGxiYWNrOwotICAgIHRoaXMuYWNjZXB0SXRlbUNhbGxiYWNrID0gYWNjZXB0
SXRlbUNhbGxiYWNrOwotfQorV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogCiAvKioKICAqIEBjb25zdHJ1
Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5UZXh0UHJvbXB0fQogICogQHBhcmFtIHtm
dW5jdGlvbihSYW5nZSwgYm9vbGVhbiwgZnVuY3Rpb24oKikpfSBjb21wbGV0aW9ucwogICogQHBh
cmFtIHtzdHJpbmd9IHN0b3BDaGFyYWN0ZXJzCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LlN1Z2dlc3RCb3hDb25maWc9fSBzdWdnZXN0Qm94Q29uZmlnCiAgKi8KLVdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0V2l0aEhpc3RvcnkgPSBmdW5jdGlvbihjb21wbGV0aW9ucywgc3RvcENo
YXJhY3RlcnMsIHN1Z2dlc3RCb3hDb25maWcpCitXZWJJbnNwZWN0b3IuVGV4dFByb21wdFdpdGhI
aXN0b3J5ID0gZnVuY3Rpb24oY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0ZXJzKQogewotICAgIFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LmNhbGwodGhpcywgY29tcGxldGlvbnMsIHN0b3BDaGFyYWN0
ZXJzLCBzdWdnZXN0Qm94Q29uZmlnKTsKKyAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5jYWxs
KHRoaXMsIGNvbXBsZXRpb25zLCBzdG9wQ2hhcmFjdGVycyk7CiAKICAgICAvKioKICAgICAgKiBA
dHlwZSB7QXJyYXkuPHN0cmluZz59CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggYjNkY2YyMS4uOTA2OWZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMjUxNyw2
ICsyNTE3LDI0IEBAIGJvZHkucGxhdGZvcm0tbWFjICNkcmF3ZXItc3RhdHVzLWJhciAuc2VhcmNo
LXN0YXR1cy1iYXItcHJvZ3Jlc3MgewogICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKIH0KIAor
LyogR2VuZXJpYyBzdWdnZXN0IGJveCBzdHlsZSAqLworCisuc3VnZ2VzdC1ib3guZ2VuZXJpYy1z
dWdnZXN0IHsKKyAgICBib3JkZXItcmFkaXVzOiAwIDVweCA1cHggNXB4OworICAgIG1hcmdpbi1s
ZWZ0OiAtMXB4OworICAgIGJvcmRlci1jb2xvcjogcmdiKDY2JSwgNjYlLCA2NiUpOworICAgIC13
ZWJraXQtYm94LXNoYWRvdzogOHB4IDhweCA2cHggcmdiYSg0MCwgNDAsIDQwLCAwLjQwKTsKK30K
KworLnN1Z2dlc3QtYm94LmdlbmVyaWMtc3VnZ2VzdC5hYm92ZS1hbmNob3IgeworICAgYm9yZGVy
LXJhZGl1czogNXB4IDVweCA1cHggMDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDhweCAtOHB4
IDZweCByZ2JhKDQwLCA0MCwgNDAsIDAuNDApOworfQorCisuc3VnZ2VzdC1ib3guZ2VuZXJpYy1z
dWdnZXN0IC5jb250ZW50IHsKKyAgICBtYXJnaW46IDNweDsKK30KKwogLyogQ3VzdG9tIHBvcHVw
IHNjcm9sbGVycyAqLwogCiAuY3VzdG9tLXBvcHVwLWhvcml6b250YWwtc2Nyb2xsIDo6LXdlYmtp
dC1zY3JvbGxiYXIsIC5jdXN0b20tcG9wdXAtdmVydGljYWwtc2Nyb2xsIDo6LXdlYmtpdC1zY3Jv
bGxiYXIgewo=
</data>
<flag name="review"
          id="112322"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>