<?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>59688</bug_id>
          
          <creation_ts>2011-04-28 04:12:09 -0700</creation_ts>
          <short_desc>Web Inspector: TextEditor should support editing a range.</short_desc>
          <delta_ts>2011-05-13 11:00:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (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>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>aandrey</cc>
    
    <cc>aandrey</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</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>394351</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-28 04:12:09 -0700</bug_when>
    <thetext>Web Inspector: TextEditor should support editing a range.

This is needed for editing scripts inlined in html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394355</commentid>
    <comment_count>1</comment_count>
      <attachid>91468</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-28 04:14:47 -0700</bug_when>
    <thetext>Created attachment 91468
Patch.

Add support for editing a range of lines rather then entire content in TextViewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394368</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-04-28 04:59:54 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=91468&amp;action=review

&gt; Source/WebCore/inspector/front-end/SourceFile.js:251
&gt; +                endLine += 1;

++endLine;

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:885
&gt; +        this._textViewer.setReadOnly(false, range);

Maybe use this._setReadOnly(true|false, range) to enforce the invariant that this._textViewer.setReadOnly() &amp;&amp; WebInspector.markBeingEdited() should be called together.

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:893
&gt; +            this._setReadOnly(true);

Otherwise, this method does not accept any arguments right now. Also check elsewhere.

&gt; Source/WebCore/inspector/front-end/TextViewer.js:72
&gt;          if (this._mainPanel.readOnly === readOnly)

Now this check will not work when after a call setReadOnly(false, null) you would call setReadOnly(false, new WebInspector.TextRange(...))

&gt; Source/WebCore/inspector/front-end/TextViewer.js:246
&gt; +        this._delegate.doubleClick(lineRow.lineNumber);

IMO we should rename doubleClick to smth like triggerEditing or whatever. Or even better I suggest moving the double-click logic outside of this class all together.

&gt; Source/WebCore/inspector/front-end/TextViewer.js:461
&gt;              var prefixChunk = this._createNewChunk(oldChunk.startLine, lineNumber);

Optional: maybe introduce a &quot;readOnly&quot; argument to the method this._createNewChunk()

&gt; Source/WebCore/inspector/front-end/TextViewer.js:917
&gt; +            this._splitChunkOnALine(startLine, firstChunkNumber);

Being strict, this is not exactly the right method to use here, as it splits a chunk into 3 chunks. You need splitting into two.

If you decide to go this way, at least, make the this._splitChunkOnALine() return the new chunk, so that you should not call:
    firstChunkNumber = this._chunkNumberForLine(startLine);

&gt; Source/WebCore/inspector/front-end/TextViewer.js:1937
&gt; +            this._updateElementReadOnlyState(this.element);

You should always execute this statement, no matter of the this._expandedLineRows variable.

&gt; Source/WebCore/inspector/front-end/TextViewer.js:1975
&gt; +            lineRow.addStyleClass(&quot;text-editor-read-only&quot;);

The lineRows from the cache may already have the className set, so you should also call lineRow.removeStyleClass() in the else{...} branch. Just call:
    this._updateElementReadOnlyState(lineRow);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394395</commentid>
    <comment_count>3</comment_count>
      <attachid>91480</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-28 06:30:02 -0700</bug_when>
    <thetext>Created attachment 91480
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394396</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-28 06:34:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91468&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:251
&gt; &gt; +                endLine += 1;
&gt; 
&gt; ++endLine;
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFrame.js:885
&gt; &gt; +        this._textViewer.setReadOnly(false, range);
&gt; 
&gt; Maybe use this._setReadOnly(true|false, range) to enforce the invariant that this._textViewer.setReadOnly() &amp;&amp; WebInspector.markBeingEdited() should be called together.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFrame.js:893
&gt; &gt; +            this._setReadOnly(true);
&gt; 
&gt; Otherwise, this method does not accept any arguments right now. Also check elsewhere.

Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:72
&gt; &gt;          if (this._mainPanel.readOnly === readOnly)
&gt; 
&gt; Now this check will not work when after a call setReadOnly(false, null) you would call setReadOnly(false, new WebInspector.TextRange(...))

This was intentional. Editable range is not supposed to be changed on the fly. You should commit editing and start again.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:246
&gt; &gt; +        this._delegate.doubleClick(lineRow.lineNumber);
&gt; 
&gt; IMO we should rename doubleClick to smth like triggerEditing or whatever. Or even better I suggest moving the double-click logic outside of this class all together.

Renamed delegate&apos;s method to startEditing (existing startEditing renamed to beforeTextChanged).

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:461
&gt; &gt;              var prefixChunk = this._createNewChunk(oldChunk.startLine, lineNumber);
&gt; 
&gt; Optional: maybe introduce a &quot;readOnly&quot; argument to the method this._createNewChunk()
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:917
&gt; &gt; +            this._splitChunkOnALine(startLine, firstChunkNumber);
&gt; 
&gt; Being strict, this is not exactly the right method to use here, as it splits a chunk into 3 chunks. You need splitting into two.
&gt; 
&gt; If you decide to go this way, at least, make the this._splitChunkOnALine() return the new chunk, so that you should not call:
&gt;     firstChunkNumber = this._chunkNumberForLine(startLine);

Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:1937
&gt; &gt; +            this._updateElementReadOnlyState(this.element);
&gt; 
&gt; You should always execute this statement, no matter of the this._expandedLineRows variable.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:1975
&gt; &gt; +            lineRow.addStyleClass(&quot;text-editor-read-only&quot;);
&gt; 
&gt; The lineRows from the cache may already have the className set, so you should also call lineRow.removeStyleClass() in the else{...} branch. Just call:
&gt;     this._updateElementReadOnlyState(lineRow);

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395156</commentid>
    <comment_count>5</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-04-29 00:16:19 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=91480&amp;action=review

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:945
&gt; +            this._delegate.setScriptSourceIsBeingEdited(false);

Don&apos;t you need to execute it for readOnly===false also?

&gt; Source/WebCore/inspector/front-end/TextViewer.js:475
&gt; +        if (createSuffixChunk &amp;&amp; oldChunk.startLine + oldChunk.linesCount &gt; lineNumber + 1) {

Replace (lineNumber + 1) with endLine here and below, and remove the createSuffixChunk flag check.

&gt; Source/WebCore/inspector/front-end/TextViewer.js:919
&gt; +            firstChunkNumber += 1;

++firstChunkNumber;

&gt; Source/WebCore/inspector/front-end/TextViewer.js:928
&gt; +                lastChunkNumber += 1;

Replace all &quot;+= 1&quot; with &quot;++&quot; to be consistent.

&gt; Source/WebCore/inspector/front-end/TextViewer.js:1736
&gt; +            newChunk.readOnly = false;

Can we drop this line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395193</commentid>
    <comment_count>6</comment_count>
      <attachid>91659</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-29 03:21:07 -0700</bug_when>
    <thetext>Created attachment 91659
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395197</commentid>
    <comment_count>7</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-04-29 03:28:06 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=91659&amp;action=review

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:943
&gt; +            this._delegate.setScriptSourceIsBeingEdited(false);

Don&apos;t you need to execute it for readOnly===false also? (x2)

&gt; Source/WebCore/inspector/front-end/TextViewer.js:477
&gt; +            suffixChunk.readOnly = suffixChunk.readOnly;

suffixChunk.readOnly = oldChunk.readOnly;

&gt; Source/WebCore/inspector/front-end/TextViewer.js:928
&gt; +                lastChunkNumber += 1;

Replace all &quot;+= 1&quot; with &quot;++&quot; to be consistent. (x2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395199</commentid>
    <comment_count>8</comment_count>
      <attachid>91661</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-29 03:35:46 -0700</bug_when>
    <thetext>Created attachment 91661
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395200</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-29 03:36:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91659&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFrame.js:943
&gt; &gt; +            this._delegate.setScriptSourceIsBeingEdited(false);
&gt; 
&gt; Don&apos;t you need to execute it for readOnly===false also? (x2)

No, setScriptSourceIsBeingEdited is called only when the text is actually changed.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:477
&gt; &gt; +            suffixChunk.readOnly = suffixChunk.readOnly;
&gt; 
&gt; suffixChunk.readOnly = oldChunk.readOnly;

Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TextViewer.js:928
&gt; &gt; +                lastChunkNumber += 1;
&gt; 
&gt; Replace all &quot;+= 1&quot; with &quot;++&quot; to be consistent. (x2)

I prefer to use &quot;+= x&quot; form for &quot;increase variable by x&quot; even when x == 1, because I find it more readable. &quot;++&quot; usually means increment a counter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395210</commentid>
    <comment_count>10</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-04-29 04:44:15 -0700</bug_when>
    <thetext>Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398684</commentid>
    <comment_count>11</comment_count>
      <attachid>91661</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-05 06:22:38 -0700</bug_when>
    <thetext>Comment on attachment 91661
Patch.

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

&gt; Source/WebCore/inspector/front-end/ResourceView.js:141
&gt; +        if (!this._resource.isEditable())

This looks weird. This method should not be called for read-only resources.

&gt; Source/WebCore/inspector/front-end/SourceFile.js:241
&gt; +        if (!WebInspector.debugMode) {

Remove this?

&gt; Source/WebCore/inspector/front-end/SourceFile.js:247
&gt; +            script = this._scripts[i];

script -&gt; var script, r- for this.

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:992
&gt; +        // Should be implemented by subclasses.

Add return null; ?

&gt; Source/WebCore/inspector/front-end/textViewer.css:47
&gt; +    -webkit-user-modify: read-only;

This will turn background of almost all resources into grey when content editing is disabled in Preferences, not sure this is what we want to achieve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398718</commentid>
    <comment_count>12</comment_count>
      <attachid>92416</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-05-05 08:16:38 -0700</bug_when>
    <thetext>Created attachment 92416
Patch.

This patch only touches internal TextViewer details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398719</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-05-05 08:18:41 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/inspector/front-end/textViewer.css:47
&gt; &gt; +    -webkit-user-modify: read-only;
&gt; 
&gt; This will turn background of almost all resources into grey when content editing is disabled in Preferences, not sure this is what we want to achieve.

Lines can only have &quot;text-editor-read-only&quot; style class when editing html (thus impossible in Safari). Read-only state of the viewer is still controlled by &quot;text-editor-editable&quot; style class of the lines container.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398724</commentid>
    <comment_count>14</comment_count>
      <attachid>92417</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-05-05 08:23:12 -0700</bug_when>
    <thetext>Created attachment 92417
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403480</commentid>
    <comment_count>15</comment_count>
      <attachid>92417</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-13 04:59:44 -0700</bug_when>
    <thetext>Comment on attachment 92417
Patch.

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

&gt; Source/WebCore/ChangeLog:5
&gt; +        Web Inspector: TextEditor should support editing a range.

Is there a usage for this or a test for the functionality?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403672</commentid>
    <comment_count>16</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-05-13 11:00:50 -0700</bug_when>
    <thetext>Committed r86446: &lt;http://trac.webkit.org/changeset/86446&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91468</attachid>
            <date>2011-04-28 04:14:47 -0700</date>
            <delta_ts>2011-04-28 06:30:02 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19655</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZGJjMDQxLi5hNmNiNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTEtMDQtMjggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdGV4dCBlZGl0b3Igc2hvdWxkIHN1cHBvcnQgZWRpdGluZyBhIHJhbmdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2ODgKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgZWRpdGluZyBhIHJhbmdlIG9mIGxpbmVzIHJhdGhlciB0aGVu
IGVudGlyZSBjb250ZW50IGluIFRleHRWaWV3ZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuY2Fu
U2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUu
ZG91YmxlQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJldmlzaW9uU291cmNlRnJhbWUu
cHJvdG90eXBlLmRvdWJsZUNsaWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLmVkaXRTb3Vy
Y2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJv
dG90eXBlLmVkaXRhYmxlUmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRmlsZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5f
aGFzUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnBy
b3RvdHlwZS5lZGl0YWJsZVJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxl
LnByb3RvdHlwZS5fc2NyaXB0RW5kTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlLmRvdWJsZUNsaWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUuY29tbWl0RWRpdGluZy5kaWRFZGl0Q29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmNvbW1pdEVkaXRpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jYW5jZWxFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX3NldFJlYWRPbmx5KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlLnByb3RvdHlwZS5lZGl0YWJs
ZVJhbmdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuc2V0UmVhZE9ubHkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlLl9kb3VibGVDbGljayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuX2NvbW1pdEVkaXRp
bmcuZGlkQ29tbWl0RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5w
cm90b3R5cGUuX2NvbW1pdEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXIucHJvdG90eXBlLl9jYW5jZWxFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmRvdWJsZUNsaWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZS5fc3BsaXRDaHVua09uQUxpbmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLnNl
dEVkaXRhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFu
ZWwucHJvdG90eXBlLmNsZWFyRWRpdGFibGVSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2FwcGx5RG9tVXBkYXRlcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUNodW5r
c0ZvclJhbmdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUuc2V0
IHJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnBy
b3RvdHlwZS5nZXQgcmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmsucHJvdG90eXBlLl91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUuX2NyZWF0ZVJvdyk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzczoKKyAgICAgICAg
KC50ZXh0LWVkaXRvci1yZWFkLW9ubHkpOgorCiAyMDExLTA0LTI4ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggMTA2ZDYyZi4uOTk3ZTQyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMTMwLDE0ICsxMzAsNiBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9icmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGUuaWRdOwogICAgIH0sCiAK
LSAgICBjYW5FZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCi0gICAgewot
ICAgICAgICBpZiAoIVByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgfHwgdGhpcy5fZm9y
bWF0U291cmNlRmlsZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhciBz
Y3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VGaWxlSWQoc291cmNlRmlsZUlkKTsKLSAgICAg
ICAgcmV0dXJuICFzY3JpcHQubGluZU9mZnNldCAmJiAhc2NyaXB0LmNvbHVtbk9mZnNldDsKLSAg
ICB9LAotCiAgICAgZWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBuZXdT
b3VyY2UsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3Njcmlw
dEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwpAQCAtNzE3LDEwICs3MDksNyBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZyA9IGZ1bmN0
aW9uKG1vZGVsKQogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJj
ZUJpbmRpbmcucHJvdG90eXBlID0gewogICAgIGNhblNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291
cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVzZW50YXRpb25N
b2RlbC5fc291cmNlRmlsZUZvclNjcmlwdChyZXNvdXJjZS51cmwpCi0gICAgICAgIGlmICghc291
cmNlRmlsZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2Uoc291cmNlRmlsZS5pZCk7Cisg
ICAgICAgIHJldHVybiByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5TY3JpcHQ7CiAgICAgfSwKIAogICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBj
b250ZW50LCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCBhM2QyYjQyLi4wMzk0
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVmlldy5qcwpAQCAtMTM2LDkgKzEzNiwxMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKICAg
ICB9LAogCi0gICAgaXNDb250ZW50RWRpdGFibGU6IGZ1bmN0aW9uKCkKKyAgICBkb3VibGVDbGlj
azogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNv
dXJjZS5pc0VkaXRhYmxlKCk7CisgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UuaXNFZGl0YWJs
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnNldFJl
YWRPbmx5KGZhbHNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlz
Ll90ZXh0Vmlld2VyLmVsZW1lbnQsIHRydWUpOwogICAgIH0sCiAKICAgICBlZGl0Q29udGVudDog
ZnVuY3Rpb24obmV3VGV4dCwgY2FsbGJhY2spCkBAIC0xOTYsOSArMTk5LDggQEAgV2ViSW5zcGVj
dG9yLlJldmlzaW9uU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fcmV2aXNpb24ucmVzb3VyY2U7CiAgICAgfSwKIAotICAgIGlzQ29udGVudEVkaXRhYmxlOiBm
dW5jdGlvbigpCisgICAgZG91YmxlQ2xpY2s6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAogICAgIHJlcXVlc3RDb250ZW50OiBmdW5j
dGlvbihjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHQuanMKaW5kZXggOWU3NWQ4My4uZTU1NTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTU1LDggKzU1LDEwIEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZGlkRWRpdFNjcmlw
dFNvdXJjZShlcnJvciwgY2FsbEZyYW1lcykKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFl
cnJvcikKKyAgICAgICAgICAgIGlmICghZXJyb3IpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9z
b3VyY2UgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPSBuZXdTb3Vy
Y2UubGVuZ3RoOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIGNh
bGxGcmFtZXMpOwogICAgICAgICB9CiAgICAgICAgIERlYnVnZ2VyQWdlbnQuZWRpdFNjcmlwdFNv
dXJjZSh0aGlzLnNvdXJjZUlELCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0
aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c1BhbmVsLmpzCmluZGV4IDlkZmI2MGMuLjMxN2NmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xMDU5LDkgKzEwNTks
OSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNjcmlwdHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21vZGVsLmNvbnRpbnVlVG9MaW5lKHRoaXMuX3NvdXJj
ZUZpbGVJZCwgbGluZU51bWJlcik7CiAgICAgfSwKIAotICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6
IGZ1bmN0aW9uKCkKKyAgICBlZGl0YWJsZVJhbmdlOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2UodGhpcy5f
c291cmNlRmlsZUlkKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsLnNvdXJjZUZpbGUodGhp
cy5fc291cmNlRmlsZUlkKS5lZGl0YWJsZVJhbmdlKGxpbmVOdW1iZXIpOwogICAgIH0sCiAKICAg
ICBlZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbih0ZXh0LCBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCAxYWM3ZTgx
Li45MDJjODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGaWxlLmpzCkBAIC0yMzEsNiArMjMxLDM1IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxl
LnByb3RvdHlwZSA9IHsKICAgICBfaGFzUGVuZGluZ1Jlc291cmNlOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UgJiYgIXRoaXMuX3Jlc291cmNlLmZpbmlz
aGVkOworICAgIH0sCisKKyAgICBlZGl0YWJsZVJhbmdlOiBmdW5jdGlvbihsaW5lTnVtYmVyKQor
ICAgIHsKKyAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghUHJlZmVyZW5jZXMuZGVidWdNb2RlKSB7
CisgICAgICAgICAgICBpZiAodGhpcy5fc2NyaXB0cy5sZW5ndGggPiAxIHx8IHRoaXMuX3Njcmlw
dHNbMF0ubGluZU9mZnNldCB8fCB0aGlzLl9zY3JpcHRzWzBdLmNvbHVtbk9mZnNldCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX3NjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHNjcmlwdCA9IHRo
aXMuX3NjcmlwdHNbaV07CisgICAgICAgICAgICB2YXIgZW5kTG9jYXRpb24gPSB0aGlzLl9zY3Jp
cHRFbmRMb2NhdGlvbihzY3JpcHQpOworICAgICAgICAgICAgdmFyIGVuZExpbmUgPSBlbmRMb2Nh
dGlvbi5saW5lTnVtYmVyOworICAgICAgICAgICAgaWYgKGVuZExvY2F0aW9uLmNvbHVtbk51bWJl
cikKKyAgICAgICAgICAgICAgICBlbmRMaW5lICs9IDE7CisgICAgICAgICAgICBpZiAoc2NyaXB0
LmxpbmVPZmZzZXQgPD0gbGluZU51bWJlciAmJiBsaW5lTnVtYmVyIDwgZW5kTGluZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc2NyaXB0LmxpbmVP
ZmZzZXQsIHNjcmlwdC5jb2x1bW5PZmZzZXQsIGVuZExvY2F0aW9uLmxpbmVOdW1iZXIsIGVuZExv
Y2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3NjcmlwdEVu
ZExvY2F0aW9uOiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgbGluZUVuZGlu
Z3MgPSB0aGlzLl9jb250ZW50LmxpbmVFbmRpbmdzKCk7CisgICAgICAgIHZhciBzdGFydFBvc2l0
aW9uID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24obGlu
ZUVuZGluZ3MsIHsgbGluZU51bWJlcjogc2NyaXB0LmxpbmVPZmZzZXQsIGNvbHVtbk51bWJlcjog
c2NyaXB0LmNvbHVtbk9mZnNldCB9KTsKKyAgICAgICAgdmFyIGVuZFBvc2l0aW9uID0gc3RhcnRQ
b3NpdGlvbiArIHNjcmlwdC5sZW5ndGg7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU2Ny
aXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlvbihsaW5lRW5kaW5ncywgZW5kUG9zaXRpb24p
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWUuanMKaW5kZXggYTJkNjIzNi4uYjUwM2Y4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC0yMzMsMTYgKzIz
Myw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRl
bGV0ZSB0aGlzLl92aWV3ZXJTdGF0ZTsKICAgICB9LAogCi0gICAgaXNDb250ZW50RWRpdGFibGU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5jYW5FZGl0
U2NyaXB0U291cmNlKCk7Ci0gICAgfSwKLQotICAgIHJlYWRPbmx5U3RhdGVDaGFuZ2VkOiBmdW5j
dGlvbihyZWFkT25seSkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0
ZWQodGhpcy5fdGV4dFZpZXdlci5lbGVtZW50LCAhcmVhZE9ubHkpOwotICAgIH0sCi0KICAgICBz
dGFydEVkaXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdmlld2Vy
U3RhdGUpIHsKQEAgLTg4NSwxMSArODc1LDIyIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVzaXplKCk7CiAgICAgfSwK
IAorICAgIGRvdWJsZUNsaWNrOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAg
dmFyIHJhbmdlID0gdGhpcy5fZGVsZWdhdGUuZWRpdGFibGVSYW5nZShsaW5lTnVtYmVyKTsKKyAg
ICAgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFyYW5n
ZS5zdGFydExpbmUgJiYgIXJhbmdlLnN0YXJ0Q29sdW1uKQorICAgICAgICAgICAgcmFuZ2UgPSBu
dWxsOworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnNldFJlYWRPbmx5KGZhbHNlLCByYW5nZSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQodGhpcy5fdGV4dFZpZXdlci5l
bGVtZW50LCB0cnVlKTsKKyAgICB9LAorCiAgICAgY29tbWl0RWRpdGluZzogZnVuY3Rpb24oY2Fs
bGJhY2spCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3ZpZXdlclN0YXRlKSB7CiAgICAgICAg
ICAgICAvLyBObyBlZGl0aW5nIHdhcyBhY3R1YWxseSBkb25lLgotICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGUuc2V0U2NyaXB0U291cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7CisgICAgICAgICAg
ICB0aGlzLl9zZXRSZWFkT25seSh0cnVlKTsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTkyMCw4ICs5MjEsNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBkZWxldGUgdGhpcy5fdmlld2VyU3RhdGU7Ci0gICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5z
ZXRTY3JpcHRTb3VyY2VJc0JlaW5nRWRpdGVkKGZhbHNlKTsKLQorICAgICAgICAgICAgdGhpcy5f
c2V0UmVhZE9ubHkodHJ1ZSk7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAg
ICAgICAgIHRoaXMuZWRpdENvbnRlbnQodGhpcy5fdGV4dE1vZGVsLnRleHQsIGRpZEVkaXRDb250
ZW50LmJpbmQodGhpcykpOwpAQCAtOTM1LDYgKzkzNSwxMyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlID0gewogICAgIGNhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVWaWV3ZXJTdGF0ZSgpOworICAgICAgICB0aGlzLl9zZXRS
ZWFkT25seSh0cnVlKTsKKyAgICB9LAorCisgICAgX3NldFJlYWRPbmx5OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnNldFJlYWRPbmx5KHRydWUpOworICAgICAg
ICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudCwg
ZmFsc2UpOwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zZXRTY3JpcHRTb3VyY2VJc0JlaW5nRWRp
dGVkKGZhbHNlKTsKICAgICB9CiB9CkBAIC05ODIsOSArOTg5LDkgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lRGVsZWdhdGUucHJvdG90eXBlID0gewogICAgICAgICAvLyBTaG91bGQgYmUgaW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9LAogCi0gICAgY2FuRWRpdFNjcmlwdFNvdXJj
ZTogZnVuY3Rpb24oKQorICAgIGVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0sCiAKICAgICBlZGl0U2NyaXB0U291cmNlOiBmdW5j
dGlvbih0ZXh0LCBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dFZpZXdlci5qcwppbmRleCA4MTc4NzI2Li4wZDIyYmRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCkBAIC02NywxMiAr
NjcsMTkgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9tYWluUGFuZWwubWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICB9LAogCi0gICAgc2V0IHJl
YWRPbmx5KHJlYWRPbmx5KQorICAgIHNldFJlYWRPbmx5OiBmdW5jdGlvbihyZWFkT25seSwgcmFu
Z2UpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID09PSByZWFk
T25seSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbWFpblBhbmVsLnJlYWRP
bmx5ID0gcmVhZE9ubHk7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnJlYWRPbmx5U3RhdGVDaGFu
Z2VkKHJlYWRPbmx5KTsKKyAgICAgICAgaWYgKCFyZWFkT25seSkgeworICAgICAgICAgICAgaWYg
KHJhbmdlKQorICAgICAgICAgICAgICAgIHRoaXMuX21haW5QYW5lbC5zZXRFZGl0YWJsZVJhbmdl
KHJhbmdlLnN0YXJ0TGluZSwgcmFuZ2UuZW5kTGluZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGhpcy5fbWFpblBhbmVsLnNldEVkaXRhYmxlUmFuZ2UoMCwgdGhpcy5fdGV4
dE1vZGVsLmxpbmVzQ291bnQpOworICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmNv
bGxhcHNlVG9TdGFydCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX21haW5Q
YW5lbC5jbGVhckVkaXRhYmxlUmFuZ2UoKTsKICAgICB9LAogCiAgICAgZ2V0IHJlYWRPbmx5KCkK
QEAgLTIzNiwxMSArMjQzLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIWxpbmVSb3cpCiAgICAgICAgICAgICByZXR1cm47ICAvLyBEbyBub3Qg
dHJpZ2dlciBlZGl0aW5nIGZyb20gbGluZSBudW1iZXJzLgogCi0gICAgICAgIGlmICghdGhpcy5f
ZGVsZWdhdGUuaXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5jb2xsYXBzZVRvU3RhcnQoKTsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuZG91YmxlQ2xpY2so
bGluZVJvdy5saW5lTnVtYmVyKTsKICAgICB9LAogCiAgICAgX3JlZ2lzdGVyU2hvcnRjdXRzOiBm
dW5jdGlvbigpCkBAIC0zMDEsMTIgKzMwNCwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIHRoaXMucmVhZE9ubHkgPSB0cnVlOworICAgICAgICB0aGlz
Ll9tYWluUGFuZWwucmVhZE9ubHkgPSB0cnVlOwogICAgICAgICBmdW5jdGlvbiBkaWRDb21taXRF
ZGl0aW5nKGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLl9jb21taXRFZGl0aW5n
SW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
ICAgIHRoaXMucmVhZE9ubHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9tYWluUGFu
ZWwucmVhZE9ubHkgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9jb21taXRFZGl0
aW5nSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbW1pdEVkaXRp
bmcoZGlkQ29tbWl0RWRpdGluZy5iaW5kKHRoaXMpKTsKQEAgLTMxOCw3ICszMjEsNiBAQCBXZWJJ
bnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRP
bmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHRoaXMucmVhZE9ubHkg
PSB0cnVlOwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jYW5jZWxFZGl0aW5nKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMzMSwxMiArMzMzLDcgQEAgV2ViSW5zcGVjdG9yLlRl
eHRWaWV3ZXJEZWxlZ2F0ZSA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXJEZWxlZ2F0ZS5wcm90b3R5cGUgPSB7Ci0gICAgaXNDb250ZW50RWRpdGFibGU6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2Vz
LgotICAgIH0sCi0KLSAgICByZWFkT25seVN0YXRlQ2hhbmdlZDogZnVuY3Rpb24ocmVhZE9ubHkp
CisgICAgZG91YmxlQ2xpY2s6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICAv
LyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9LApAQCAtNDYyLDE4
ICs0NTksMjEgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAvLyBQcmVmaXggY2h1bmsuCiAgICAgICAgIGlmIChsaW5lTnVtYmVyID4g
b2xkQ2h1bmsuc3RhcnRMaW5lKSB7CiAgICAgICAgICAgICB2YXIgcHJlZml4Q2h1bmsgPSB0aGlz
Ll9jcmVhdGVOZXdDaHVuayhvbGRDaHVuay5zdGFydExpbmUsIGxpbmVOdW1iZXIpOworICAgICAg
ICAgICAgcHJlZml4Q2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAgICAg
ICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4KyssIDAsIHByZWZpeENodW5r
KTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUocHJlZml4Q2h1bmsu
ZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBMaW5l
IGNodW5rLgogICAgICAgICB2YXIgbGluZUNodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsobGlu
ZU51bWJlciwgbGluZU51bWJlciArIDEpOworICAgICAgICBsaW5lQ2h1bmsucmVhZE9ubHkgPSBv
bGRDaHVuay5yZWFkT25seTsKICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0
SW5kZXgrKywgMCwgbGluZUNodW5rKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyLmluc2VydEJl
Zm9yZShsaW5lQ2h1bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAKICAgICAgICAgLy8g
U3VmZml4IGNodW5rLgogICAgICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsu
bGluZXNDb3VudCA+IGxpbmVOdW1iZXIgKyAxKSB7CiAgICAgICAgICAgICB2YXIgc3VmZml4Q2h1
bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhsaW5lTnVtYmVyICsgMSwgb2xkQ2h1bmsuc3RhcnRM
aW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCk7CisgICAgICAgICAgICBzdWZmaXhDaHVuay5yZWFk
T25seSA9IHN1ZmZpeENodW5rLnJlYWRPbmx5OwogICAgICAgICAgICAgdGhpcy5fdGV4dENodW5r
cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHN1ZmZpeENodW5rKTsKICAgICAgICAgICAgIHRoaXMu
X2NvbnRhaW5lci5pbnNlcnRCZWZvcmUoc3VmZml4Q2h1bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxl
bWVudCk7CiAgICAgICAgIH0KQEAgLTkwNyw2ICs5MDcsNDMgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9u
bHk7CiAgICAgfSwKIAorICAgIHNldEVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKHN0YXJ0TGluZSwg
ZW5kTGluZSkKKyAgICB7CisgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7CisKKyAgICAg
ICAgdmFyIGZpcnN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxpbmUoc3RhcnRM
aW5lKTsKKyAgICAgICAgdmFyIGZpcnN0Q2h1bmsgPSB0aGlzLl90ZXh0Q2h1bmtzW2ZpcnN0Q2h1
bmtOdW1iZXJdOworICAgICAgICBpZiAoZmlyc3RDaHVuay5zdGFydExpbmUgIT09IHN0YXJ0TGlu
ZSkgeworICAgICAgICAgICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUoc3RhcnRMaW5lLCBmaXJz
dENodW5rTnVtYmVyKTsKKyAgICAgICAgICAgIGZpcnN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVu
a051bWJlckZvckxpbmUoc3RhcnRMaW5lKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBsYXN0
Q2h1bmtOdW1iZXIgPSB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsKKyAgICAgICAgaWYgKGVuZExp
bmUgIT09IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50KSB7CisgICAgICAgICAgICBsYXN0Q2h1
bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxpbmUoZW5kTGluZSk7CisgICAgICAgICAg
ICB2YXIgbGFzdENodW5rID0gdGhpcy5fdGV4dENodW5rc1tsYXN0Q2h1bmtOdW1iZXJdOworICAg
ICAgICAgICAgaWYgKGxhc3RDaHVuayAmJiBsYXN0Q2h1bmsuc3RhcnRMaW5lICE9PSBlbmRMaW5l
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUoZW5kTGluZSwgbGFz
dENodW5rTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9j
aHVua051bWJlckZvckxpbmUoZW5kTGluZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IDA7IGNodW5rTnVtYmVyIDwgZmlyc3RDaHVu
a051bWJlcjsgKytjaHVua051bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1
bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIg
PSBmaXJzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IGxhc3RDaHVua051bWJlcjsgKytjaHVu
a051bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRP
bmx5ID0gZmFsc2U7CisgICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gbGFzdENodW5rTnVt
YmVyOyBjaHVua051bWJlciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyArK2NodW5rTnVtYmVy
KQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSB0
cnVlOworCisgICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOworICAgIH0sCisKKyAgICBjbGVh
ckVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGNodW5r
TnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsgKytjaHVu
a051bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRP
bmx5ID0gZmFsc2U7CisgICAgfSwKKwogICAgIG1hcmtBbmRSZXZlYWxSYW5nZTogZnVuY3Rpb24o
cmFuZ2UpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmFuZ2VUb01hcmspIHsKQEAgLTE1Nzgs
NyArMTYxNSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
KHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUgLSAxLCBlbmRDb2x1bW4pOwogCiAgICAg
ICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX3NldFRleHQob2xkUmFuZ2UsIGxpbmVzLmpvaW4oIlxu
IikpOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUp
OwogICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAKQEAgLTE2OTUs
NiArMTczMiw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSBmaXJzdENodW5rTnVtYmVyOyBsaW5l
c0NvdW50ID4gMDsgKytjaHVua051bWJlcikgewogICAgICAgICAgICAgdmFyIGNodW5rTGluZXND
b3VudCA9IE1hdGgubWluKHRoaXMuX2RlZmF1bHRDaHVua1NpemUsIGxpbmVzQ291bnQpOwogICAg
ICAgICAgICAgdmFyIG5ld0NodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsoc3RhcnRMaW5lLCBz
dGFydExpbmUgKyBjaHVua0xpbmVzQ291bnQpOworICAgICAgICAgICAgbmV3Q2h1bmsucmVhZE9u
bHkgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUobmV3
Q2h1bmsuZWxlbWVudCwgZmlyc3RVbm1vZGlmaWVkTGluZVJvdyk7CiAKICAgICAgICAgICAgIGlm
IChjaHVua051bWJlciA8PSBsYXN0Q2h1bmtOdW1iZXIpCkBAIC0xNzc2LDYgKzE4MTQsNyBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuayA9IGZ1bmN0aW9uKHRleHRWaWV3ZXIsIHN0
YXJ0TGluZSwgZW5kTGluZSkKICAgICB0aGlzLmxpbmVzQ291bnQgPSBlbmRMaW5lIC0gc3RhcnRM
aW5lOwogCiAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKKyAgICB0aGlzLl9yZWFkT25seSA9
IGZhbHNlOwogCiAgICAgdGhpcy51cGRhdGVDb2xsYXBzZWRMaW5lUm93KCk7CiB9CkBAIC0xODg4
LDYgKzE5MjcsMzMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVuZERvbVVwZGF0ZXMoKTsKICAgICB9LAog
CisgICAgc2V0IHJlYWRPbmx5KHJlYWRPbmx5KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Jl
YWRPbmx5ID09PSByZWFkT25seSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9yZWFkT25seSA9IHJlYWRPbmx5OworICAgICAgICBpZiAoIXRoaXMuX2V4cGFuZGVkTGluZVJv
d3MpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLmVs
ZW1lbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fZXhwYW5kZWRMaW5lUm93cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLl9leHBhbmRlZExpbmVSb3dzW2ldKTsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICBnZXQgcmVhZE9ubHkoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3JlYWRPbmx5OworICAgIH0sCisKKyAgICBfdXBkYXRlRWxlbWVudFJlYWRP
bmx5U3RhdGU6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVh
ZE9ubHkpCisgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRleHQtZWRpdG9yLXJl
YWQtb25seSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoInRleHQtZWRpdG9yLXJlYWQtb25seSIpOworICAgIH0sCisKICAgICBnZXQgaGVpZ2h0
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZXhwYW5kZWRMaW5lUm93cykKQEAgLTE5MDUs
NiArMTk3MSw4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGxpbmVSb3cgPSB0aGlzLl90ZXh0Vmlld2VyLl9jYWNoZWRSb3dzLnBv
cCgpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBsaW5lUm93Lmxp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOwogICAgICAgICBsaW5lUm93LmNsYXNzTmFtZSA9ICJ3ZWJr
aXQtbGluZS1jb250ZW50IjsKKyAgICAgICAgaWYgKHRoaXMuX3JlYWRPbmx5KQorICAgICAgICAg
ICAgbGluZVJvdy5hZGRTdHlsZUNsYXNzKCJ0ZXh0LWVkaXRvci1yZWFkLW9ubHkiKTsKICAgICAg
ICAgbGluZVJvdy5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIHRoaXMuX3RleHRW
aWV3ZXIuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwogICAgICAgICBsaW5lUm93
LnRleHRDb250ZW50ID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CiAgICAgICAg
IGlmICghbGluZVJvdy50ZXh0Q29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3NzCmluZGV4IDU5ZjJhNDMwLi5iODYxOTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3Nz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3MK
QEAgLTQzLDYgKzQzLDExIEBACiAgICAgLXdlYmtpdC11c2VyLW1vZGlmeTogcmVhZC13cml0ZS1w
bGFpbnRleHQtb25seTsKIH0KIAorLnRleHQtZWRpdG9yLXJlYWQtb25seSB7CisgICAgLXdlYmtp
dC11c2VyLW1vZGlmeTogcmVhZC1vbmx5OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDAs
IDI0MCwgMjQwKTsKK30KKwogLndlYmtpdC1saW5lLWRlY29yYXRpb25zIHsKICAgICBwb2ludGVy
LWV2ZW50czogbm9uZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91480</attachid>
            <date>2011-04-28 06:30:02 -0700</date>
            <delta_ts>2011-04-29 03:21:07 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22878</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZGJjMDQxLi41YTVjM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTEtMDQtMjggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdGV4dCBlZGl0b3Igc2hvdWxkIHN1cHBvcnQgZWRpdGluZyBhIHJhbmdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2ODgKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgZWRpdGluZyBhIHJhbmdlIG9mIGxpbmVzIHJhdGhlciB0aGVu
IGVudGlyZSBjb250ZW50IGluIFRleHRWaWV3ZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuY2Fu
U2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUu
c3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvblNvdXJjZUZyYW1l
LnByb3RvdHlwZS5zdGFydEVkaXRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuZWRpdFNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuZWRpdGFibGVSYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBl
Ll9oYXNQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUu
cHJvdG90eXBlLmVkaXRhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGUucHJvdG90eXBlLl9zY3JpcHRFbmRMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUuYmVmb3JlVGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5hZnRlclRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuY29tbWl0RWRpdGluZy5kaWRFZGl0Q29udGVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmNvbW1pdEVk
aXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jYW5j
ZWxFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUu
X3NldFJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRl
LnByb3RvdHlwZS5lZGl0YWJsZVJhbmdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRWaWV3ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5
cGUuc2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90
eXBlLl9lbnRlckludGVybmFsVGV4dENoYW5nZU1vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRWaWV3ZXIucHJvdG90eXBlLl9leGl0SW50ZXJuYWxUZXh0Q2hhbmdlTW9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuX2RvdWJsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fY29tbWl0RWRpdGluZy5k
aWRDb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3Rv
dHlwZS5fY29tbWl0RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5w
cm90b3R5cGUuX2NhbmNlbEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXJEZWxlZ2F0ZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmFmdGVyVGV4dENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJv
dG90eXBlLm1ha2VMaW5lQUNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
Q2h1bmtlZFBhbmVsLnByb3RvdHlwZS5fc3BsaXRDaHVua09uQUxpbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLnNldEVkaXRhYmxlUmFuZ2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmNs
ZWFyRWRpdGFibGVSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1bmtPbkFMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlEb21VcGRhdGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fdXBkYXRlQ2h1
bmtzRm9yUmFuZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5r
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5z
ZXQgZXhwYW5kZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsu
cHJvdG90eXBlLnNldCByZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5DaHVuay5wcm90b3R5cGUuZ2V0IHJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5fdXBkYXRlRWxlbWVudFJlYWRPbmx5U3Rh
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3M6CisgICAg
ICAgICgudGV4dC1lZGl0b3ItcmVhZC1vbmx5KToKKwogMjAxMS0wNC0yOCAgSm9uIExlZSAgPGpv
bmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCmluZGV4IDEwNmQ2MmYuLjk5N2U0MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTEzMCwxNCArMTMwLDYgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUg
dGhpcy5fYnJlYWtwb2ludHNXaXRob3V0U291cmNlRmlsZVtzb3VyY2VGaWxlLmlkXTsKICAgICB9
LAogCi0gICAgY2FuRWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc291cmNlRmlsZUlkKQotICAg
IHsKLSAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlIHx8IHRoaXMu
X2Zvcm1hdFNvdXJjZUZpbGVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2
YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7Ci0g
ICAgICAgIHJldHVybiAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1bW5PZmZzZXQ7
Ci0gICAgfSwKLQogICAgIGVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwg
bmV3U291cmNlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9z
Y3JpcHRGb3JTb3VyY2VGaWxlSWQoc291cmNlRmlsZUlkKTsKQEAgLTcxNywxMCArNzA5LDcgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcgPSBm
dW5jdGlvbihtb2RlbCkKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVz
b3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICBjYW5TZXRDb250ZW50OiBmdW5jdGlvbihy
ZXNvdXJjZSkKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0
aW9uTW9kZWwuX3NvdXJjZUZpbGVGb3JTY3JpcHQocmVzb3VyY2UudXJsKQotICAgICAgICBpZiAo
IXNvdXJjZUZpbGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5jYW5FZGl0U2NyaXB0U291cmNlKHNvdXJjZUZpbGUuaWQp
OworICAgICAgICByZXR1cm4gcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU2NyaXB0OwogICAgIH0sCiAKICAgICBzZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJj
ZSwgY29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggYTNkMmI0Mi4u
YmMzZGM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanMKQEAgLTEzNiw5ICsxMzYsMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7
CiAgICAgfSwKIAotICAgIGlzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbigpCisgICAgc3RhcnRF
ZGl0aW5nOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc291cmNlLmlzRWRpdGFibGUoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZS5pc0Vk
aXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIu
c2V0UmVhZE9ubHkoZmFsc2UpOworICAgICAgICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVk
KHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudCwgdHJ1ZSk7CiAgICAgfSwKIAogICAgIGVkaXRDb250
ZW50OiBmdW5jdGlvbihuZXdUZXh0LCBjYWxsYmFjaykKQEAgLTE0OCw3ICsxNTEsNyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlLnNldENvbnRlbnQobmV3VGV4dCwgbWFqb3JDaGFuZ2UsIGNhbGxiYWNrKTsKICAg
ICB9LAogCi0gICAgZW5kRWRpdGluZzogZnVuY3Rpb24ob2xkUmFuZ2UsIG5ld1JhbmdlKQorICAg
IGFmdGVyVGV4dENoYW5nZWQ6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkKICAgICB7CiAg
ICAgICAgIGZ1bmN0aW9uIGNvbW1pdEluY3JlbWVudGFsRWRpdCgpCiAgICAgICAgIHsKQEAgLTE5
Niw5ICsxOTksOCBAQCBXZWJJbnNwZWN0b3IuUmV2aXNpb25Tb3VyY2VGcmFtZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXZpc2lvbi5yZXNvdXJjZTsKICAgICB9LAogCi0g
ICAgaXNDb250ZW50RWRpdGFibGU6IGZ1bmN0aW9uKCkKKyAgICBzdGFydEVkaXRpbmc6IGZ1bmN0
aW9uKGxpbmVOdW1iZXIpCiAgICAgewotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAog
ICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKaW5kZXggOWU3NWQ4My4uZTU1NTE3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTU1LDgg
KzU1LDEwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgZnVuY3Rpb24gZGlkRWRpdFNjcmlwdFNvdXJjZShlcnJvciwgY2FsbEZyYW1lcykKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAgICAgICAgICAgIGlmICghZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2UgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAg
ICAgdGhpcy5sZW5ndGggPSBuZXdTb3VyY2UubGVuZ3RoOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIGNhbGxGcmFtZXMpOwogICAgICAgICB9CiAgICAgICAgIERl
YnVnZ2VyQWdlbnQuZWRpdFNjcmlwdFNvdXJjZSh0aGlzLnNvdXJjZUlELCBuZXdTb3VyY2UsIGRp
ZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDlkZmI2MGMuLjMxN2NmYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzCkBAIC0xMDU5LDkgKzEwNTksOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxl
Z2F0ZUZvclNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21vZGVsLmNv
bnRpbnVlVG9MaW5lKHRoaXMuX3NvdXJjZUZpbGVJZCwgbGluZU51bWJlcik7CiAgICAgfSwKIAot
ICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKCkKKyAgICBlZGl0YWJsZVJhbmdlOiBm
dW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsLmNh
bkVkaXRTY3JpcHRTb3VyY2UodGhpcy5fc291cmNlRmlsZUlkKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX21vZGVsLnNvdXJjZUZpbGUodGhpcy5fc291cmNlRmlsZUlkKS5lZGl0YWJsZVJhbmdlKGxp
bmVOdW1iZXIpOwogICAgIH0sCiAKICAgICBlZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbih0ZXh0
LCBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRmlsZS5qcwppbmRleCAxYWM3ZTgxLi4wYzE3ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC0yMzEsNiArMjMxLDMzIEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZSA9IHsKICAgICBfaGFzUGVuZGluZ1Jl
c291cmNlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2Ug
JiYgIXRoaXMuX3Jlc291cmNlLmZpbmlzaGVkOworICAgIH0sCisKKyAgICBlZGl0YWJsZVJhbmdl
OiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy5j
YW5FZGl0U2NyaXB0U291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLmRlYnVnTW9kZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmlwdHMu
bGVuZ3RoID4gMSB8fCB0aGlzLl9zY3JpcHRzWzBdLmxpbmVPZmZzZXQgfHwgdGhpcy5fc2NyaXB0
c1swXS5jb2x1bW5PZmZzZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zY3JpcHRzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBzY3JpcHQgPSB0aGlzLl9zY3JpcHRzW2ldOworICAgICAgICAgICAgdmFy
IGVuZExvY2F0aW9uID0gdGhpcy5fc2NyaXB0RW5kTG9jYXRpb24oc2NyaXB0KTsKKyAgICAgICAg
ICAgIHZhciBlbmRMaW5lID0gZW5kTG9jYXRpb24ubGluZU51bWJlciArIDE7CisgICAgICAgICAg
ICBpZiAoc2NyaXB0LmxpbmVPZmZzZXQgPD0gbGluZU51bWJlciAmJiBsaW5lTnVtYmVyIDwgZW5k
TGluZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uo
c2NyaXB0LmxpbmVPZmZzZXQsIHNjcmlwdC5jb2x1bW5PZmZzZXQsIGVuZExvY2F0aW9uLmxpbmVO
dW1iZXIsIGVuZExvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgX3NjcmlwdEVuZExvY2F0aW9uOiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2
YXIgbGluZUVuZGluZ3MgPSB0aGlzLl9jb250ZW50LmxpbmVFbmRpbmdzKCk7CisgICAgICAgIHZh
ciBzdGFydFBvc2l0aW9uID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRv
UG9zaXRpb24obGluZUVuZGluZ3MsIHsgbGluZU51bWJlcjogc2NyaXB0LmxpbmVPZmZzZXQsIGNv
bHVtbk51bWJlcjogc2NyaXB0LmNvbHVtbk9mZnNldCB9KTsKKyAgICAgICAgdmFyIGVuZFBvc2l0
aW9uID0gc3RhcnRQb3NpdGlvbiArIHNjcmlwdC5sZW5ndGg7CisgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlvbihsaW5lRW5kaW5ncywg
ZW5kUG9zaXRpb24pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggYTJkNjIzNi4uYzUyOWZkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBA
IC0yMzMsMTcgKzIzMyw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGRlbGV0ZSB0aGlzLl92aWV3ZXJTdGF0ZTsKICAgICB9LAogCi0gICAgaXNDb250
ZW50RWRpdGFibGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kZWxl
Z2F0ZS5jYW5FZGl0U2NyaXB0U291cmNlKCk7Ci0gICAgfSwKLQotICAgIHJlYWRPbmx5U3RhdGVD
aGFuZ2VkOiBmdW5jdGlvbihyZWFkT25seSkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5t
YXJrQmVpbmdFZGl0ZWQodGhpcy5fdGV4dFZpZXdlci5lbGVtZW50LCAhcmVhZE9ubHkpOwotICAg
IH0sCi0KLSAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKCkKKyAgICBiZWZvcmVUZXh0Q2hhbmdl
ZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl92aWV3ZXJTdGF0ZSkgewog
ICAgICAgICAgICAgdGhpcy5fc2F2ZVZpZXdlclN0YXRlKCk7CkBAIC0yNTQsNyArMjQ0LDcgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jbGVh
ck1lc3NhZ2VzKCk7CiAgICAgfSwKIAotICAgIGVuZEVkaXRpbmc6IGZ1bmN0aW9uKG9sZFJhbmdl
LCBuZXdSYW5nZSkKKyAgICBhZnRlclRleHRDaGFuZ2VkOiBmdW5jdGlvbihvbGRSYW5nZSwgbmV3
UmFuZ2UpCiAgICAgewogICAgICAgICBpZiAoIW9sZFJhbmdlIHx8ICFuZXdSYW5nZSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTg4NSwxMSArODc1LDIxIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVzaXplKCk7CiAg
ICAgfSwKIAorICAgIHN0YXJ0RWRpdGluZzogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7Cisg
ICAgICAgIHZhciByYW5nZSA9IHRoaXMuX2RlbGVnYXRlLmVkaXRhYmxlUmFuZ2UobGluZU51bWJl
cik7CisgICAgICAgIGlmICghcmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICghcmFuZ2Uuc3RhcnRMaW5lICYmICFyYW5nZS5zdGFydENvbHVtbikKKyAgICAgICAgICAgIHJh
bmdlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2V0UmVhZE9ubHkoZmFsc2UsIHJhbmdlKTsKKyAg
ICB9LAorCiAgICAgY29tbWl0RWRpdGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX3ZpZXdlclN0YXRlKSB7CiAgICAgICAgICAgICAvLyBObyBlZGl0aW5n
IHdhcyBhY3R1YWxseSBkb25lLgotICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2V0U2NyaXB0
U291cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7CisgICAgICAgICAgICB0aGlzLl9zZXRSZWFkT25s
eSh0cnVlKTsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTkyMCw4ICs5MjAsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJv
dG90eXBlID0gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdmll
d2VyU3RhdGU7Ci0gICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zZXRTY3JpcHRTb3VyY2VJc0Jl
aW5nRWRpdGVkKGZhbHNlKTsKLQorICAgICAgICAgICAgdGhpcy5fc2V0UmVhZE9ubHkodHJ1ZSk7
CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuZWRpdENv
bnRlbnQodGhpcy5fdGV4dE1vZGVsLnRleHQsIGRpZEVkaXRDb250ZW50LmJpbmQodGhpcykpOwpA
QCAtOTM1LDcgKzkzNCwxNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0g
ewogICAgIGNhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jl
c3RvcmVWaWV3ZXJTdGF0ZSgpOwotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zZXRTY3JpcHRTb3Vy
Y2VJc0JlaW5nRWRpdGVkKGZhbHNlKTsKKyAgICAgICAgdGhpcy5fc2V0UmVhZE9ubHkodHJ1ZSk7
CisgICAgfSwKKworICAgIF9zZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHksIHJhbmdlKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5zZXRSZWFkT25seShyZWFkT25seSwgcmFu
Z2UpOworICAgICAgICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKHRoaXMuX3RleHRWaWV3
ZXIuZWxlbWVudCwgIXJlYWRPbmx5KTsKKyAgICAgICAgaWYgKHJlYWRPbmx5KQorICAgICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUuc2V0U2NyaXB0U291cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7CiAg
ICAgfQogfQogCkBAIC05ODIsOSArOTg5LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVs
ZWdhdGUucHJvdG90eXBlID0gewogICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkg
c3ViY2xhc3Nlcy4KICAgICB9LAogCi0gICAgY2FuRWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rpb24o
KQorICAgIGVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgogICAgIH0sCiAKICAgICBlZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbih0ZXh0LCBj
YWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGV4dFZpZXdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZp
ZXdlci5qcwppbmRleCA4MTc4NzI2Li4wMGRkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCkBAIC02NywxMiArNjcsMTkgQEAgV2Vi
SW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9tYWluUGFu
ZWwubWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICB9LAogCi0gICAgc2V0IHJlYWRPbmx5KHJlYWRP
bmx5KQorICAgIHNldFJlYWRPbmx5OiBmdW5jdGlvbihyZWFkT25seSwgcmFuZ2UpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID09PSByZWFkT25seSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID0gcmVhZE9u
bHk7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnJlYWRPbmx5U3RhdGVDaGFuZ2VkKHJlYWRPbmx5
KTsKKyAgICAgICAgaWYgKCFyZWFkT25seSkgeworICAgICAgICAgICAgaWYgKHJhbmdlKQorICAg
ICAgICAgICAgICAgIHRoaXMuX21haW5QYW5lbC5zZXRFZGl0YWJsZVJhbmdlKHJhbmdlLnN0YXJ0
TGluZSwgcmFuZ2UuZW5kTGluZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGhpcy5fbWFpblBhbmVsLnNldEVkaXRhYmxlUmFuZ2UoMCwgdGhpcy5fdGV4dE1vZGVsLmxpbmVz
Q291bnQpOworICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9TdGFy
dCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX21haW5QYW5lbC5jbGVhckVk
aXRhYmxlUmFuZ2UoKTsKICAgICB9LAogCiAgICAgZ2V0IHJlYWRPbmx5KCkKQEAgLTE3NywxMyAr
MTg0LDEzIEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICBfZW50
ZXJJbnRlcm5hbFRleHRDaGFuZ2VNb2RlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlz
Ll9pbnRlcm5hbFRleHRDaGFuZ2VNb2RlID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUu
c3RhcnRFZGl0aW5nKCk7CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJlZm9yZVRleHRDaGFuZ2Vk
KCk7CiAgICAgfSwKIAogICAgIF9leGl0SW50ZXJuYWxUZXh0Q2hhbmdlTW9kZTogZnVuY3Rpb24o
b2xkUmFuZ2UsIG5ld1JhbmdlKQogICAgIHsKICAgICAgICAgdGhpcy5faW50ZXJuYWxUZXh0Q2hh
bmdlTW9kZSA9IGZhbHNlOwotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5lbmRFZGl0aW5nKG9sZFJh
bmdlLCBuZXdSYW5nZSk7CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmFmdGVyVGV4dENoYW5nZWQo
b2xkUmFuZ2UsIG5ld1JhbmdlKTsKICAgICB9LAogCiAgICAgX3VwZGF0ZVBhbmVsT2Zmc2V0czog
ZnVuY3Rpb24oKQpAQCAtMjM2LDExICsyNDMsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghbGluZVJvdykKICAgICAgICAgICAgIHJldHVybjsg
IC8vIERvIG5vdCB0cmlnZ2VyIGVkaXRpbmcgZnJvbSBsaW5lIG51bWJlcnMuCiAKLSAgICAgICAg
aWYgKCF0aGlzLl9kZWxlZ2F0ZS5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHRoaXMucmVhZE9ubHkgPSBmYWxzZTsKLSAgICAgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmNvbGxhcHNlVG9TdGFydCgpOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5z
dGFydEVkaXRpbmcobGluZVJvdy5saW5lTnVtYmVyKTsKICAgICB9LAogCiAgICAgX3JlZ2lzdGVy
U2hvcnRjdXRzOiBmdW5jdGlvbigpCkBAIC0zMDEsMTIgKzMwNCwxMiBAQCBXZWJJbnNwZWN0b3Iu
VGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHRoaXMucmVhZE9ubHkgPSB0cnVlOwor
ICAgICAgICB0aGlzLl9tYWluUGFuZWwucmVhZE9ubHkgPSB0cnVlOwogICAgICAgICBmdW5jdGlv
biBkaWRDb21taXRFZGl0aW5nKGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLl9j
b21taXRFZGl0aW5nSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKGVycm9yKQot
ICAgICAgICAgICAgICAgIHRoaXMucmVhZE9ubHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9tYWluUGFuZWwucmVhZE9ubHkgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICB0aGlz
Ll9jb21taXRFZGl0aW5nSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRl
LmNvbW1pdEVkaXRpbmcoZGlkQ29tbWl0RWRpdGluZy5iaW5kKHRoaXMpKTsKQEAgLTMxOCw3ICsz
MjEsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLnJlYWRPbmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHRo
aXMucmVhZE9ubHkgPSB0cnVlOwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jYW5jZWxFZGl0aW5n
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMzMSwyMiArMzMzLDE3IEBAIFdl
Ykluc3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGUgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3Bl
Y3Rvci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlID0gewotICAgIGlzQ29udGVudEVkaXRh
YmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3Nlcy4KLSAgICB9LAotCi0gICAgcmVhZE9ubHlTdGF0ZUNoYW5nZWQ6IGZ1bmN0
aW9uKHJlYWRPbmx5KQorICAgIHN0YXJ0RWRpdGluZzogZnVuY3Rpb24obGluZU51bWJlcikKICAg
ICB7CiAgICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAg
IH0sCiAKLSAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKCkKKyAgICBiZWZvcmVUZXh0Q2hhbmdl
ZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCiAgICAgfSwKIAotICAgIGVuZEVkaXRpbmc6IGZ1bmN0aW9uKG9sZFJhbmdl
LCBuZXdSYW5nZSkKKyAgICBhZnRlclRleHRDaGFuZ2VkOiBmdW5jdGlvbihvbGRSYW5nZSwgbmV3
UmFuZ2UpCiAgICAgewogICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KICAgICB9LApAQCAtNDQ2LDEwICs0NDMsMTAgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAob2xkQ2h1bmsubGluZXND
b3VudCA9PT0gMSkKICAgICAgICAgICAgIHJldHVybiBvbGRDaHVuazsKIAotICAgICAgICByZXR1
cm4gdGhpcy5fc3BsaXRDaHVua09uQUxpbmUobGluZU51bWJlciwgY2h1bmtOdW1iZXIpOworICAg
ICAgICByZXR1cm4gdGhpcy5fc3BsaXRDaHVua09uQUxpbmUobGluZU51bWJlciwgY2h1bmtOdW1i
ZXIsIHRydWUpOwogICAgIH0sCiAKLSAgICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIGNodW5rTnVtYmVyKQorICAgIF9zcGxpdENodW5rT25BTGluZTogZnVuY3Rpb24o
bGluZU51bWJlciwgY2h1bmtOdW1iZXIsIGNyZWF0ZVN1ZmZpeENodW5rKQogICAgIHsKICAgICAg
ICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKIApAQCAtNDYyLDE4ICs0NTksMjIgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyBQ
cmVmaXggY2h1bmsuCiAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gb2xkQ2h1bmsuc3RhcnRMaW5l
KSB7CiAgICAgICAgICAgICB2YXIgcHJlZml4Q2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhv
bGRDaHVuay5zdGFydExpbmUsIGxpbmVOdW1iZXIpOworICAgICAgICAgICAgcHJlZml4Q2h1bmsu
cmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAgICAgICAgIHRoaXMuX3RleHRDaHVu
a3Muc3BsaWNlKGluc2VydEluZGV4KyssIDAsIHByZWZpeENodW5rKTsKICAgICAgICAgICAgIHRo
aXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUocHJlZml4Q2h1bmsuZWxlbWVudCwgb2xkQ2h1bmsu
ZWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBMaW5lIGNodW5rLgotICAgICAgICB2
YXIgbGluZUNodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsobGluZU51bWJlciwgbGluZU51bWJl
ciArIDEpOworICAgICAgICB2YXIgZW5kTGluZSA9IGNyZWF0ZVN1ZmZpeENodW5rID8gbGluZU51
bWJlciArIDEgOiBvbGRDaHVuay5zdGFydExpbmUgKyBvbGRDaHVuay5saW5lc0NvdW50OworICAg
ICAgICB2YXIgbGluZUNodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsobGluZU51bWJlciwgZW5k
TGluZSk7CisgICAgICAgIGxpbmVDaHVuay5yZWFkT25seSA9IG9sZENodW5rLnJlYWRPbmx5Owog
ICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzLnNwbGljZShpbnNlcnRJbmRleCsrLCAwLCBsaW5lQ2h1
bmspOwogICAgICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3JlKGxpbmVDaHVuay5lbGVt
ZW50LCBvbGRDaHVuay5lbGVtZW50KTsKIAogICAgICAgICAvLyBTdWZmaXggY2h1bmsuCi0gICAg
ICAgIGlmIChvbGRDaHVuay5zdGFydExpbmUgKyBvbGRDaHVuay5saW5lc0NvdW50ID4gbGluZU51
bWJlciArIDEpIHsKKyAgICAgICAgaWYgKGNyZWF0ZVN1ZmZpeENodW5rICYmIG9sZENodW5rLnN0
YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQgPiBsaW5lTnVtYmVyICsgMSkgewogICAgICAg
ICAgICAgdmFyIHN1ZmZpeENodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsobGluZU51bWJlciAr
IDEsIG9sZENodW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQpOworICAgICAgICAg
ICAgc3VmZml4Q2h1bmsucmVhZE9ubHkgPSBzdWZmaXhDaHVuay5yZWFkT25seTsKICAgICAgICAg
ICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4LCAwLCBzdWZmaXhDaHVuayk7
CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3JlKHN1ZmZpeENodW5rLmVs
ZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CkBAIC05MDcsNiArOTA4LDQzIEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3JlYWRPbmx5OwogICAgIH0sCiAKKyAgICBzZXRFZGl0YWJsZVJhbmdlOiBm
dW5jdGlvbihzdGFydExpbmUsIGVuZExpbmUpCisgICAgeworICAgICAgICB0aGlzLmJlZ2luRG9t
VXBkYXRlcygpOworCisgICAgICAgIHZhciBmaXJzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtO
dW1iZXJGb3JMaW5lKHN0YXJ0TGluZSk7CisgICAgICAgIHZhciBmaXJzdENodW5rID0gdGhpcy5f
dGV4dENodW5rc1tmaXJzdENodW5rTnVtYmVyXTsKKyAgICAgICAgaWYgKGZpcnN0Q2h1bmsuc3Rh
cnRMaW5lICE9PSBzdGFydExpbmUpIHsKKyAgICAgICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFM
aW5lKHN0YXJ0TGluZSwgZmlyc3RDaHVua051bWJlcik7CisgICAgICAgICAgICBmaXJzdENodW5r
TnVtYmVyICs9IDE7CisgICAgICAgIH0KKworICAgICAgICB2YXIgbGFzdENodW5rTnVtYmVyID0g
dGhpcy5fdGV4dENodW5rcy5sZW5ndGg7CisgICAgICAgIGlmIChlbmRMaW5lICE9PSB0aGlzLl90
ZXh0TW9kZWwubGluZXNDb3VudCkgeworICAgICAgICAgICAgbGFzdENodW5rTnVtYmVyID0gdGhp
cy5fY2h1bmtOdW1iZXJGb3JMaW5lKGVuZExpbmUpOworICAgICAgICAgICAgdmFyIGxhc3RDaHVu
ayA9IHRoaXMuX3RleHRDaHVua3NbbGFzdENodW5rTnVtYmVyXTsKKyAgICAgICAgICAgIGlmIChs
YXN0Q2h1bmsgJiYgbGFzdENodW5rLnN0YXJ0TGluZSAhPT0gZW5kTGluZSkgeworICAgICAgICAg
ICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGVuZExpbmUsIGxhc3RDaHVua051bWJlcik7
CisgICAgICAgICAgICAgICAgbGFzdENodW5rTnVtYmVyICs9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IDA7IGNodW5rTnVtYmVy
IDwgZmlyc3RDaHVua051bWJlcjsgKytjaHVua051bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIg
Y2h1bmtOdW1iZXIgPSBmaXJzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IGxhc3RDaHVua051
bWJlcjsgKytjaHVua051bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtO
dW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7CisgICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0g
bGFzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyAr
K2NodW5rTnVtYmVyKQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0u
cmVhZE9ubHkgPSB0cnVlOworCisgICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOworICAgIH0s
CisKKyAgICBjbGVhckVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZv
ciAodmFyIGNodW5rTnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxl
bmd0aDsgKytjaHVua051bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtO
dW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7CisgICAgfSwKKwogICAgIG1hcmtBbmRSZXZlYWxSYW5n
ZTogZnVuY3Rpb24ocmFuZ2UpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmFuZ2VUb01hcmsp
IHsKQEAgLTEwMTAsMTAgKzEwNDgsMTAgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCi0gICAgX3Nw
bGl0Q2h1bmtPbkFMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjaHVua051bWJlcikKKyAgICBf
c3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBjcmVh
dGVTdWZmaXhDaHVuaykKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9nZXRT
ZWxlY3Rpb24oKTsKLSAgICAgICAgdmFyIGNodW5rID0gV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JD
aHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENodW5rT25BTGluZS5jYWxsKHRoaXMsIGxpbmVO
dW1iZXIsIGNodW5rTnVtYmVyKTsKKyAgICAgICAgdmFyIGNodW5rID0gV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENodW5rT25BTGluZS5jYWxsKHRo
aXMsIGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBjcmVhdGVTdWZmaXhDaHVuayk7CiAgICAgICAg
IHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGNodW5r
OwogICAgIH0sCkBAIC0xNTc4LDcgKzE2MTYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lIC0gMSwg
ZW5kQ29sdW1uKTsKIAogICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0aGlzLl9zZXRUZXh0KG9sZFJh
bmdlLCBsaW5lcy5qb2luKCJcbiIpKTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fcGFpbnRT
Y2hlZHVsZWRMaW5lcyh0cnVlKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihzZWxl
Y3Rpb24pOwogCkBAIC0xNjk1LDYgKzE3MzMsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gZmly
c3RDaHVua051bWJlcjsgbGluZXNDb3VudCA+IDA7ICsrY2h1bmtOdW1iZXIpIHsKICAgICAgICAg
ICAgIHZhciBjaHVua0xpbmVzQ291bnQgPSBNYXRoLm1pbih0aGlzLl9kZWZhdWx0Q2h1bmtTaXpl
LCBsaW5lc0NvdW50KTsKICAgICAgICAgICAgIHZhciBuZXdDaHVuayA9IHRoaXMuX2NyZWF0ZU5l
d0NodW5rKHN0YXJ0TGluZSwgc3RhcnRMaW5lICsgY2h1bmtMaW5lc0NvdW50KTsKKyAgICAgICAg
ICAgIG5ld0NodW5rLnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXIuaW5zZXJ0QmVmb3JlKG5ld0NodW5rLmVsZW1lbnQsIGZpcnN0VW5tb2RpZmllZExpbmVSb3cp
OwogCiAgICAgICAgICAgICBpZiAoY2h1bmtOdW1iZXIgPD0gbGFzdENodW5rTnVtYmVyKQpAQCAt
MTc3Niw2ICsxODE1LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsgPSBmdW5j
dGlvbih0ZXh0Vmlld2VyLCBzdGFydExpbmUsIGVuZExpbmUpCiAgICAgdGhpcy5saW5lc0NvdW50
ID0gZW5kTGluZSAtIHN0YXJ0TGluZTsKIAogICAgIHRoaXMuX2V4cGFuZGVkID0gZmFsc2U7Cisg
ICAgdGhpcy5fcmVhZE9ubHkgPSBmYWxzZTsKIAogICAgIHRoaXMudXBkYXRlQ29sbGFwc2VkTGlu
ZVJvdygpOwogfQpAQCAtMTg2Myw2ICsxOTAzLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmsucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSB0
aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudDsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlz
LnN0YXJ0TGluZTsgaSA8IHRoaXMuc3RhcnRMaW5lICsgdGhpcy5saW5lc0NvdW50OyArK2kpIHsK
ICAgICAgICAgICAgICAgICB2YXIgbGluZVJvdyA9IHRoaXMuX2NyZWF0ZVJvdyhpKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZShsaW5lUm93KTsKICAg
ICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShsaW5lUm93LCB0aGlzLmVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkTGluZVJvd3MucHVzaChsaW5l
Um93KTsKICAgICAgICAgICAgIH0KQEAgLTE4ODgsNiArMTkyOSwzMiBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3
ZXIuZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKKyAgICBzZXQgcmVhZE9ubHkocmVhZE9ubHkp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkgPT09IHJlYWRPbmx5KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3JlYWRPbmx5ID0gcmVhZE9ubHk7CisgICAg
ICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRSZWFkT25seVN0YXRlKHRoaXMuZWxlbWVudCk7CisgICAg
ICAgIGlmICh0aGlzLl9leHBhbmRlZExpbmVSb3dzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX2V4cGFuZGVkTGluZVJvd3MubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFJlYWRPbmx5U3RhdGUodGhpcy5fZXhwYW5kZWRMaW5l
Um93c1tpXSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZ2V0IHJlYWRPbmx5KCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUVs
ZW1lbnRSZWFkT25seVN0YXRlOiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX3JlYWRPbmx5KQorICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ0ZXh0
LWVkaXRvci1yZWFkLW9ubHkiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudC5y
ZW1vdmVTdHlsZUNsYXNzKCJ0ZXh0LWVkaXRvci1yZWFkLW9ubHkiKTsKKyAgICB9LAorCiAgICAg
Z2V0IGhlaWdodCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2V4cGFuZGVkTGluZVJvd3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3
ZXIuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNz
cwppbmRleCA1OWYyYTQzMC4uYjg2MTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3NzCkBAIC00Myw2ICs0MywxMSBAQAogICAgIC13
ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHk7CiB9CiAKKy50ZXh0
LWVkaXRvci1yZWFkLW9ubHkgeworICAgIC13ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtb25seTsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQwLCAyNDAsIDI0MCk7Cit9CisKIC53ZWJraXQt
bGluZS1kZWNvcmF0aW9ucyB7CiAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogbm9uZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91659</attachid>
            <date>2011-04-29 03:21:07 -0700</date>
            <delta_ts>2011-04-29 03:35:46 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22462</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZTMzNTlmLi5jMTUyMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTEtMDQtMjggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdGV4dCBlZGl0b3Igc2hvdWxkIHN1cHBvcnQgZWRpdGluZyBhIHJhbmdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2ODgKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgZWRpdGluZyBhIHJhbmdlIG9mIGxpbmVzIHJhdGhlciB0aGVu
IGVudGlyZSBjb250ZW50IGluIFRleHRWaWV3ZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuY2Fu
U2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUu
c3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvblNvdXJjZUZyYW1l
LnByb3RvdHlwZS5zdGFydEVkaXRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuZWRpdFNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuZWRpdGFibGVSYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBl
Ll9oYXNQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUu
cHJvdG90eXBlLmVkaXRhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGUucHJvdG90eXBlLl9zY3JpcHRFbmRMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUuYmVmb3JlVGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5hZnRlclRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuY29tbWl0RWRpdGluZy5kaWRFZGl0Q29udGVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmNvbW1pdEVk
aXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jYW5j
ZWxFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUu
X3NldFJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRl
LnByb3RvdHlwZS5lZGl0YWJsZVJhbmdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRWaWV3ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5
cGUuc2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90
eXBlLl9lbnRlckludGVybmFsVGV4dENoYW5nZU1vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRWaWV3ZXIucHJvdG90eXBlLl9leGl0SW50ZXJuYWxUZXh0Q2hhbmdlTW9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuX2RvdWJsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fY29tbWl0RWRpdGluZy5k
aWRDb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3Rv
dHlwZS5fY29tbWl0RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5w
cm90b3R5cGUuX2NhbmNlbEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXJEZWxlZ2F0ZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmFmdGVyVGV4dENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJv
dG90eXBlLm1ha2VMaW5lQUNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
Q2h1bmtlZFBhbmVsLnByb3RvdHlwZS5fc3BsaXRDaHVua09uQUxpbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLnNldEVkaXRhYmxlUmFuZ2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmNs
ZWFyRWRpdGFibGVSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1bmtPbkFMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlEb21VcGRhdGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fdXBkYXRlQ2h1
bmtzRm9yUmFuZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5r
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5z
ZXQgZXhwYW5kZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsu
cHJvdG90eXBlLnNldCByZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5DaHVuay5wcm90b3R5cGUuZ2V0IHJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5fdXBkYXRlRWxlbWVudFJlYWRPbmx5U3Rh
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3M6CisgICAg
ICAgICgudGV4dC1lZGl0b3ItcmVhZC1vbmx5KToKKwogMjAxMS0wNC0yOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCAyY2VmMjNkLi5hOGFiYTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0xMzAsMTQgKzEzMCw2IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNvdXJjZUZpbGVbc291cmNlRmlsZS5pZF07
CiAgICAgfSwKIAotICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJ
ZCkKLSAgICB7Ci0gICAgICAgIGlmICghUHJlZmVyZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSB8
fCB0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3NjcmlwdEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxl
SWQpOwotICAgICAgICByZXR1cm4gIXNjcmlwdC5saW5lT2Zmc2V0ICYmICFzY3JpcHQuY29sdW1u
T2Zmc2V0OwotICAgIH0sCi0KICAgICBlZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2VG
aWxlSWQsIG5ld1NvdXJjZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0g
dGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7CkBAIC03MTUsMTAgKzcw
Nyw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5k
aW5nID0gZnVuY3Rpb24obW9kZWwpCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgY2FuU2V0Q29udGVudDogZnVu
Y3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLl9zb3VyY2VGaWxlRm9yU2NyaXB0KHJlc291cmNlLnVybCkKLSAgICAg
ICAgaWYgKCFzb3VyY2VGaWxlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuY2FuRWRpdFNjcmlwdFNvdXJjZShzb3VyY2VG
aWxlLmlkKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICB9LAogCiAgICAgc2V0Q29udGVudDogZnVuY3Rpb24o
cmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IGEz
ZDJiNDIuLmJjM2RjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC0xMzYsOSArMTM2LDEyIEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c291cmNlOwogICAgIH0sCiAKLSAgICBpc0NvbnRlbnRFZGl0YWJsZTogZnVuY3Rpb24oKQorICAg
IHN0YXJ0RWRpdGluZzogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9yZXNvdXJjZS5pc0VkaXRhYmxlKCk7CisgICAgICAgIGlmICghdGhpcy5fcmVzb3Vy
Y2UuaXNFZGl0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl90ZXh0
Vmlld2VyLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWlu
Z0VkaXRlZCh0aGlzLl90ZXh0Vmlld2VyLmVsZW1lbnQsIHRydWUpOwogICAgIH0sCiAKICAgICBl
ZGl0Q29udGVudDogZnVuY3Rpb24obmV3VGV4dCwgY2FsbGJhY2spCkBAIC0xNDgsNyArMTUxLDcg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9yZXNvdXJjZS5zZXRDb250ZW50KG5ld1RleHQsIG1ham9yQ2hhbmdlLCBjYWxsYmFj
ayk7CiAgICAgfSwKIAotICAgIGVuZEVkaXRpbmc6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5n
ZSkKKyAgICBhZnRlclRleHRDaGFuZ2VkOiBmdW5jdGlvbihvbGRSYW5nZSwgbmV3UmFuZ2UpCiAg
ICAgewogICAgICAgICBmdW5jdGlvbiBjb21taXRJbmNyZW1lbnRhbEVkaXQoKQogICAgICAgICB7
CkBAIC0xOTYsOSArMTk5LDggQEAgV2ViSW5zcGVjdG9yLlJldmlzaW9uU291cmNlRnJhbWUucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmV2aXNpb24ucmVzb3VyY2U7CiAgICAg
fSwKIAotICAgIGlzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbigpCisgICAgc3RhcnRFZGl0aW5n
OiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0sCiAKICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IDllNzVkODMuLmU1NTUx
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCkBA
IC01NSw4ICs1NSwxMCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJyb3IsIGNhbGxGcmFtZXMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBpZiAoIWVy
cm9yKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlID0gbmV3U291cmNlOworICAgICAg
ICAgICAgICAgIHRoaXMubGVuZ3RoID0gbmV3U291cmNlLmxlbmd0aDsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBjYWxsRnJhbWVzKTsKICAgICAgICAgfQogICAg
ICAgICBEZWJ1Z2dlckFnZW50LmVkaXRTY3JpcHRTb3VyY2UodGhpcy5zb3VyY2VJRCwgbmV3U291
cmNlLCBkaWRFZGl0U2NyaXB0U291cmNlLmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBiMGRhNjM5Li41
M2E2OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtMTA3MCw5ICsxMDcwLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9t
b2RlbC5jb250aW51ZVRvTGluZSh0aGlzLl9zb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOwogICAg
IH0sCiAKLSAgICBjYW5FZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbigpCisgICAgZWRpdGFibGVS
YW5nZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9t
b2RlbC5jYW5FZGl0U2NyaXB0U291cmNlKHRoaXMuX3NvdXJjZUZpbGVJZCk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9tb2RlbC5zb3VyY2VGaWxlKHRoaXMuX3NvdXJjZUZpbGVJZCkuZWRpdGFibGVS
YW5nZShsaW5lTnVtYmVyKTsKICAgICB9LAogCiAgICAgZWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rp
b24odGV4dCwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanMKaW5kZXggMWFjN2U4MS4uMGMxN2UwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwpAQCAtMjMxLDYgKzIz
MSwzMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5cGUgPSB7CiAgICAgX2hhc1Bl
bmRpbmdSZXNvdXJjZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c291cmNlICYmICF0aGlzLl9yZXNvdXJjZS5maW5pc2hlZDsKKyAgICB9LAorCisgICAgZWRpdGFi
bGVSYW5nZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIGlmICghUHJlZmVy
ZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1Z01vZGUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9z
Y3JpcHRzLmxlbmd0aCA+IDEgfHwgdGhpcy5fc2NyaXB0c1swXS5saW5lT2Zmc2V0IHx8IHRoaXMu
X3NjcmlwdHNbMF0uY29sdW1uT2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0cy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgc2NyaXB0ID0gdGhpcy5fc2NyaXB0c1tpXTsKKyAgICAgICAg
ICAgIHZhciBlbmRMb2NhdGlvbiA9IHRoaXMuX3NjcmlwdEVuZExvY2F0aW9uKHNjcmlwdCk7Cisg
ICAgICAgICAgICB2YXIgZW5kTGluZSA9IGVuZExvY2F0aW9uLmxpbmVOdW1iZXIgKyAxOworICAg
ICAgICAgICAgaWYgKHNjcmlwdC5saW5lT2Zmc2V0IDw9IGxpbmVOdW1iZXIgJiYgbGluZU51bWJl
ciA8IGVuZExpbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlKHNjcmlwdC5saW5lT2Zmc2V0LCBzY3JpcHQuY29sdW1uT2Zmc2V0LCBlbmRMb2NhdGlv
bi5saW5lTnVtYmVyLCBlbmRMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworICAgICAgICB9CisgICAg
fSwKKworICAgIF9zY3JpcHRFbmRMb2NhdGlvbjogZnVuY3Rpb24oc2NyaXB0KQorICAgIHsKKyAg
ICAgICAgdmFyIGxpbmVFbmRpbmdzID0gdGhpcy5fY29udGVudC5saW5lRW5kaW5ncygpOworICAg
ICAgICB2YXIgc3RhcnRQb3NpdGlvbiA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9j
YXRpb25Ub1Bvc2l0aW9uKGxpbmVFbmRpbmdzLCB7IGxpbmVOdW1iZXI6IHNjcmlwdC5saW5lT2Zm
c2V0LCBjb2x1bW5OdW1iZXI6IHNjcmlwdC5jb2x1bW5PZmZzZXQgfSk7CisgICAgICAgIHZhciBl
bmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBzY3JpcHQubGVuZ3RoOworICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24obGluZUVu
ZGluZ3MsIGVuZFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IGUwODgzNzQuLjdmMDVkNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJh
bWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcwpAQCAtMjMzLDE3ICsyMzMsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fdmlld2VyU3RhdGU7CiAgICAgfSwKIAotICAg
IGlzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZGVsZWdhdGUuY2FuRWRpdFNjcmlwdFNvdXJjZSgpOwotICAgIH0sCi0KLSAgICByZWFkT25s
eVN0YXRlQ2hhbmdlZDogZnVuY3Rpb24ocmVhZE9ubHkpCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IubWFya0JlaW5nRWRpdGVkKHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudCwgIXJlYWRPbmx5
KTsKLSAgICB9LAotCi0gICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbigpCisgICAgYmVmb3JlVGV4
dENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdmlld2VyU3Rh
dGUpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVWaWV3ZXJTdGF0ZSgpOwpAQCAtMjU0LDcgKzI0
NCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuY2xlYXJNZXNzYWdlcygpOwogICAgIH0sCiAKLSAgICBlbmRFZGl0aW5nOiBmdW5jdGlvbihv
bGRSYW5nZSwgbmV3UmFuZ2UpCisgICAgYWZ0ZXJUZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xkUmFu
Z2UsIG5ld1JhbmdlKQogICAgIHsKICAgICAgICAgaWYgKCFvbGRSYW5nZSB8fCAhbmV3UmFuZ2Up
CiAgICAgICAgICAgICByZXR1cm47CkBAIC04ODMsMTEgKzg3MywyMSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6
ZSgpOwogICAgIH0sCiAKKyAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCisg
ICAgeworICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9kZWxlZ2F0ZS5lZGl0YWJsZVJhbmdlKGxp
bmVOdW1iZXIpOworICAgICAgICBpZiAoIXJhbmdlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoIXJhbmdlLnN0YXJ0TGluZSAmJiAhcmFuZ2Uuc3RhcnRDb2x1bW4pCisgICAgICAg
ICAgICByYW5nZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3NldFJlYWRPbmx5KGZhbHNlLCByYW5n
ZSk7CisgICAgfSwKKwogICAgIGNvbW1pdEVkaXRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl92aWV3ZXJTdGF0ZSkgewogICAgICAgICAgICAgLy8gTm8g
ZWRpdGluZyB3YXMgYWN0dWFsbHkgZG9uZS4KLSAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNl
dFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQoZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fc2V0
UmVhZE9ubHkodHJ1ZSk7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC05MTgsOCArOTE4LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGVsZXRlIHRo
aXMuX3ZpZXdlclN0YXRlOwotICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2V0U2NyaXB0U291
cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7Ci0KKyAgICAgICAgICAgIHRoaXMuX3NldFJlYWRPbmx5
KHRydWUpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogICAgICAgICB0aGlz
LmVkaXRDb250ZW50KHRoaXMuX3RleHRNb2RlbC50ZXh0LCBkaWRFZGl0Q29udGVudC5iaW5kKHRo
aXMpKTsKQEAgLTkzMyw3ICs5MzIsMTUgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICBjYW5jZWxFZGl0aW5nOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9yZXN0b3JlVmlld2VyU3RhdGUoKTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2V0U2Ny
aXB0U291cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7CisgICAgICAgIHRoaXMuX3NldFJlYWRPbmx5
KHRydWUpOworICAgIH0sCisKKyAgICBfc2V0UmVhZE9ubHk6IGZ1bmN0aW9uKHJlYWRPbmx5LCBy
YW5nZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuc2V0UmVhZE9ubHkocmVhZE9u
bHksIHJhbmdlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLl90
ZXh0Vmlld2VyLmVsZW1lbnQsICFyZWFkT25seSk7CisgICAgICAgIGlmIChyZWFkT25seSkKKyAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQoZmFs
c2UpOwogICAgIH0KIH0KIApAQCAtOTgwLDkgKzk4Nyw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZURlbGVnYXRlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAotICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1
bmN0aW9uKCkKKyAgICBlZGl0YWJsZVJhbmdlOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3Nlcy4KICAgICB9LAogCiAgICAgZWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rpb24o
dGV4dCwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RleHRWaWV3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRWaWV3ZXIuanMKaW5kZXggODE3ODcyNi4uNzY2MjJmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcwpAQCAtNjcsMTIgKzY3LDE5
IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
bWFpblBhbmVsLm1pbWVUeXBlID0gbWltZVR5cGU7CiAgICAgfSwKIAotICAgIHNldCByZWFkT25s
eShyZWFkT25seSkKKyAgICBzZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHksIHJhbmdlKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX21haW5QYW5lbC5yZWFkT25seSA9PT0gcmVhZE9ubHkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX21haW5QYW5lbC5yZWFkT25seSA9
IHJlYWRPbmx5OwotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5yZWFkT25seVN0YXRlQ2hhbmdlZChy
ZWFkT25seSk7CisgICAgICAgIGlmICghcmVhZE9ubHkpIHsKKyAgICAgICAgICAgIGlmIChyYW5n
ZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9tYWluUGFuZWwuc2V0RWRpdGFibGVSYW5nZShyYW5n
ZS5zdGFydExpbmUsIHJhbmdlLmVuZExpbmUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRoaXMuX21haW5QYW5lbC5zZXRFZGl0YWJsZVJhbmdlKDAsIHRoaXMuX3RleHRNb2Rl
bC5saW5lc0NvdW50KTsKKyAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5jb2xsYXBz
ZVRvU3RhcnQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9tYWluUGFuZWwu
Y2xlYXJFZGl0YWJsZVJhbmdlKCk7CiAgICAgfSwKIAogICAgIGdldCByZWFkT25seSgpCkBAIC0x
NzcsMTMgKzE4NCwxMyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAg
ICAgX2VudGVySW50ZXJuYWxUZXh0Q2hhbmdlTW9kZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgdGhpcy5faW50ZXJuYWxUZXh0Q2hhbmdlTW9kZSA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2Rl
bGVnYXRlLnN0YXJ0RWRpdGluZygpOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5iZWZvcmVUZXh0
Q2hhbmdlZCgpOwogICAgIH0sCiAKICAgICBfZXhpdEludGVybmFsVGV4dENoYW5nZU1vZGU6IGZ1
bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2ludGVybmFs
VGV4dENoYW5nZU1vZGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuZW5kRWRpdGlu
ZyhvbGRSYW5nZSwgbmV3UmFuZ2UpOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5hZnRlclRleHRD
aGFuZ2VkKG9sZFJhbmdlLCBuZXdSYW5nZSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVQYW5lbE9m
ZnNldHM6IGZ1bmN0aW9uKCkKQEAgLTIzNiwxMSArMjQzLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRW
aWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWxpbmVSb3cpCiAgICAgICAgICAgICBy
ZXR1cm47ICAvLyBEbyBub3QgdHJpZ2dlciBlZGl0aW5nIGZyb20gbGluZSBudW1iZXJzLgogCi0g
ICAgICAgIGlmICghdGhpcy5fZGVsZWdhdGUuaXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvU3RhcnQoKTsKKyAgICAgICAgdGhpcy5fZGVs
ZWdhdGUuc3RhcnRFZGl0aW5nKGxpbmVSb3cubGluZU51bWJlcik7CiAgICAgfSwKIAogICAgIF9y
ZWdpc3RlclNob3J0Y3V0czogZnVuY3Rpb24oKQpAQCAtMzAxLDEyICszMDQsMTIgQEAgV2ViSW5z
cGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5yZWFkT25s
eSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB0aGlzLnJlYWRPbmx5ID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgICAg
ZnVuY3Rpb24gZGlkQ29tbWl0RWRpdGluZyhlcnJvcikKICAgICAgICAgewogICAgICAgICAgICAg
dGhpcy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChl
cnJvcikKLSAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgdGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgdGhpcy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5jb21taXRFZGl0aW5nKGRpZENvbW1pdEVkaXRpbmcuYmluZCh0aGlzKSk7CkBAIC0z
MTgsNyArMzIxLDYgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAodGhpcy5yZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY2FuY2Vs
RWRpdGluZygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMzEsMjIgKzMzMywx
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlID0gZnVuY3Rpb24oKQogfQogCiBX
ZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlLnByb3RvdHlwZSA9IHsKLSAgICBpc0NvbnRl
bnRFZGl0YWJsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKLQotICAgIHJlYWRPbmx5U3RhdGVDaGFuZ2Vk
OiBmdW5jdGlvbihyZWFkT25seSkKKyAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIpCiAgICAgewogICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KICAgICB9LAogCi0gICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbigpCisgICAgYmVmb3JlVGV4
dENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0sCiAKLSAgICBlbmRFZGl0aW5nOiBmdW5jdGlvbihv
bGRSYW5nZSwgbmV3UmFuZ2UpCisgICAgYWZ0ZXJUZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xkUmFu
Z2UsIG5ld1JhbmdlKQogICAgIHsKICAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCiAgICAgfSwKQEAgLTQ0NiwxMCArNDQzLDEwIEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG9sZENodW5r
LmxpbmVzQ291bnQgPT09IDEpCiAgICAgICAgICAgICByZXR1cm4gb2xkQ2h1bms7CiAKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVy
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGxpbmVOdW1iZXIsIGNo
dW5rTnVtYmVyLCB0cnVlKTsKICAgICB9LAogCi0gICAgX3NwbGl0Q2h1bmtPbkFMaW5lOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjaHVua051bWJlcikKKyAgICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1
bmN0aW9uKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBjcmVhdGVTdWZmaXhDaHVuaykKICAgICB7
CiAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7CiAKQEAgLTQ2MiwxOCArNDU5LDIyIEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gUHJlZml4IGNodW5rLgogICAgICAgICBpZiAobGluZU51bWJlciA+IG9sZENodW5rLnN0
YXJ0TGluZSkgewogICAgICAgICAgICAgdmFyIHByZWZpeENodW5rID0gdGhpcy5fY3JlYXRlTmV3
Q2h1bmsob2xkQ2h1bmsuc3RhcnRMaW5lLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHByZWZp
eENodW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgICAgICB0aGlzLl90
ZXh0Q2h1bmtzLnNwbGljZShpbnNlcnRJbmRleCsrLCAwLCBwcmVmaXhDaHVuayk7CiAgICAgICAg
ICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3JlKHByZWZpeENodW5rLmVsZW1lbnQsIG9s
ZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTGluZSBjaHVuay4KLSAg
ICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1iZXIsIGxp
bmVOdW1iZXIgKyAxKTsKKyAgICAgICAgdmFyIGVuZExpbmUgPSBjcmVhdGVTdWZmaXhDaHVuayA/
IGxpbmVOdW1iZXIgKyAxIDogb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3Vu
dDsKKyAgICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1i
ZXIsIGVuZExpbmUpOworICAgICAgICBsaW5lQ2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFk
T25seTsKICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0SW5kZXgrKywgMCwg
bGluZUNodW5rKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShsaW5lQ2h1
bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAKICAgICAgICAgLy8gU3VmZml4IGNodW5r
LgotICAgICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCA+
IGxpbmVOdW1iZXIgKyAxKSB7Ci0gICAgICAgICAgICB2YXIgc3VmZml4Q2h1bmsgPSB0aGlzLl9j
cmVhdGVOZXdDaHVuayhsaW5lTnVtYmVyICsgMSwgb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1
bmsubGluZXNDb3VudCk7CisgICAgICAgIGlmIChvbGRDaHVuay5zdGFydExpbmUgKyBvbGRDaHVu
ay5saW5lc0NvdW50ID4gZW5kTGluZSkgeworICAgICAgICAgICAgdmFyIHN1ZmZpeENodW5rID0g
dGhpcy5fY3JlYXRlTmV3Q2h1bmsoZW5kTGluZSwgb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1
bmsubGluZXNDb3VudCk7CisgICAgICAgICAgICBzdWZmaXhDaHVuay5yZWFkT25seSA9IHN1ZmZp
eENodW5rLnJlYWRPbmx5OwogICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5z
ZXJ0SW5kZXgsIDAsIHN1ZmZpeENodW5rKTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5p
bnNlcnRCZWZvcmUoc3VmZml4Q2h1bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAgICAg
ICAgIH0KQEAgLTkwNyw2ICs5MDgsNDMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7CiAgICAgfSwK
IAorICAgIHNldEVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKHN0YXJ0TGluZSwgZW5kTGluZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7CisKKyAgICAgICAgdmFyIGZpcnN0
Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxpbmUoc3RhcnRMaW5lKTsKKyAgICAg
ICAgdmFyIGZpcnN0Q2h1bmsgPSB0aGlzLl90ZXh0Q2h1bmtzW2ZpcnN0Q2h1bmtOdW1iZXJdOwor
ICAgICAgICBpZiAoZmlyc3RDaHVuay5zdGFydExpbmUgIT09IHN0YXJ0TGluZSkgeworICAgICAg
ICAgICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUoc3RhcnRMaW5lLCBmaXJzdENodW5rTnVtYmVy
KTsKKyAgICAgICAgICAgIGZpcnN0Q2h1bmtOdW1iZXIgKz0gMTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsKKyAgICAg
ICAgaWYgKGVuZExpbmUgIT09IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50KSB7CisgICAgICAg
ICAgICBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxpbmUoZW5kTGluZSk7
CisgICAgICAgICAgICB2YXIgbGFzdENodW5rID0gdGhpcy5fdGV4dENodW5rc1tsYXN0Q2h1bmtO
dW1iZXJdOworICAgICAgICAgICAgaWYgKGxhc3RDaHVuayAmJiBsYXN0Q2h1bmsuc3RhcnRMaW5l
ICE9PSBlbmRMaW5lKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUo
ZW5kTGluZSwgbGFzdENodW5rTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBsYXN0Q2h1bmtOdW1i
ZXIgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGNo
dW5rTnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCBmaXJzdENodW5rTnVtYmVyOyArK2NodW5rTnVt
YmVyKQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkg
PSB0cnVlOworICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IGZpcnN0Q2h1bmtOdW1iZXI7
IGNodW5rTnVtYmVyIDwgbGFzdENodW5rTnVtYmVyOyArK2NodW5rTnVtYmVyKQorICAgICAgICAg
ICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSBmYWxzZTsKKyAgICAg
ICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSBsYXN0Q2h1bmtOdW1iZXI7IGNodW5rTnVtYmVyIDwg
dGhpcy5fdGV4dENodW5rcy5sZW5ndGg7ICsrY2h1bmtOdW1iZXIpCisgICAgICAgICAgICB0aGlz
Ll90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9IHRydWU7CisKKyAgICAgICAgdGhp
cy5lbmREb21VcGRhdGVzKCk7CisgICAgfSwKKworICAgIGNsZWFyRWRpdGFibGVSYW5nZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSAwOyBjaHVua051
bWJlciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyArK2NodW5rTnVtYmVyKQorICAgICAgICAg
ICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSBmYWxzZTsKKyAgICB9
LAorCiAgICAgbWFya0FuZFJldmVhbFJhbmdlOiBmdW5jdGlvbihyYW5nZSkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9yYW5nZVRvTWFyaykgewpAQCAtMTAxMCwxMCArMTA0OCwxMCBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0sCiAKLSAgICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxpbmVO
dW1iZXIsIGNodW5rTnVtYmVyKQorICAgIF9zcGxpdENodW5rT25BTGluZTogZnVuY3Rpb24obGlu
ZU51bWJlciwgY2h1bmtOdW1iZXIsIGNyZWF0ZVN1ZmZpeENodW5rKQogICAgIHsKICAgICAgICAg
dmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVjdGlvbigpOwotICAgICAgICB2YXIgY2h1bmsg
PSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1
bmtPbkFMaW5lLmNhbGwodGhpcywgbGluZU51bWJlciwgY2h1bmtOdW1iZXIpOworICAgICAgICB2
YXIgY2h1bmsgPSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUu
X3NwbGl0Q2h1bmtPbkFMaW5lLmNhbGwodGhpcywgbGluZU51bWJlciwgY2h1bmtOdW1iZXIsIGNy
ZWF0ZVN1ZmZpeENodW5rKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihzZWxlY3Rp
b24pOwogICAgICAgICByZXR1cm4gY2h1bms7CiAgICAgfSwKQEAgLTE1NzgsNyArMTYxNiw3IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHZhciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4sIGVuZExpbmUgLSAxLCBlbmRDb2x1bW4pOwogCiAgICAgICAgIHZhciBuZXdS
YW5nZSA9IHRoaXMuX3NldFRleHQob2xkUmFuZ2UsIGxpbmVzLmpvaW4oIlxuIikpOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwogICAgICAgICB0
aGlzLl9yZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAKQEAgLTE3NzYsNiArMTgxNCw3IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rID0gZnVuY3Rpb24odGV4dFZpZXdlciwg
c3RhcnRMaW5lLCBlbmRMaW5lKQogICAgIHRoaXMubGluZXNDb3VudCA9IGVuZExpbmUgLSBzdGFy
dExpbmU7CiAKICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOworICAgIHRoaXMuX3JlYWRPbmx5
ID0gZmFsc2U7CiAKICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlZExpbmVSb3coKTsKIH0KQEAgLTE4
NjMsNiArMTkwMiw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LnBhcmVu
dEVsZW1lbnQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFydExpbmU7IGkgPCB0
aGlzLnN0YXJ0TGluZSArIHRoaXMubGluZXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAg
dmFyIGxpbmVSb3cgPSB0aGlzLl9jcmVhdGVSb3coaSk7CisgICAgICAgICAgICAgICAgdGhpcy5f
dXBkYXRlRWxlbWVudFJlYWRPbmx5U3RhdGUobGluZVJvdyk7CiAgICAgICAgICAgICAgICAgcGFy
ZW50RWxlbWVudC5pbnNlcnRCZWZvcmUobGluZVJvdywgdGhpcy5lbGVtZW50KTsKICAgICAgICAg
ICAgICAgICB0aGlzLl9leHBhbmRlZExpbmVSb3dzLnB1c2gobGluZVJvdyk7CiAgICAgICAgICAg
ICB9CkBAIC0xODg4LDYgKzE5MjgsMzIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1
bmsucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVuZERvbVVwZGF0ZXMo
KTsKICAgICB9LAogCisgICAgc2V0IHJlYWRPbmx5KHJlYWRPbmx5KQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX3JlYWRPbmx5ID09PSByZWFkT25seSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5OworICAgICAgICB0aGlzLl91cGRhdGVF
bGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLmVsZW1lbnQpOworICAgICAgICBpZiAodGhpcy5fZXhw
YW5kZWRMaW5lUm93cykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9l
eHBhbmRlZExpbmVSb3dzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZUVsZW1lbnRSZWFkT25seVN0YXRlKHRoaXMuX2V4cGFuZGVkTGluZVJvd3NbaV0pOworICAgICAg
ICB9CisgICAgfSwKKworICAgIGdldCByZWFkT25seSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fcmVhZE9ubHk7CisgICAgfSwKKworICAgIF91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0
ZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZWFkT25seSkK
KyAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVhZC1vbmx5
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygi
dGV4dC1lZGl0b3ItcmVhZC1vbmx5Iik7CisgICAgfSwKKwogICAgIGdldCBoZWlnaHQoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9leHBhbmRlZExpbmVSb3dzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3MKaW5kZXggNTlmMmE0MzAu
LmI4NjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
dGV4dFZpZXdlci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90
ZXh0Vmlld2VyLmNzcwpAQCAtNDMsNiArNDMsMTEgQEAKICAgICAtd2Via2l0LXVzZXItbW9kaWZ5
OiByZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5OwogfQogCisudGV4dC1lZGl0b3ItcmVhZC1vbmx5
IHsKKyAgICAtd2Via2l0LXVzZXItbW9kaWZ5OiByZWFkLW9ubHk7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDI0MCwgMjQwLCAyNDApOworfQorCiAud2Via2l0LWxpbmUtZGVjb3JhdGlvbnMg
ewogICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5v
bmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91661</attachid>
            <date>2011-04-29 03:35:46 -0700</date>
            <delta_ts>2011-05-05 08:16:38 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22459</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZTMzNTlmLi5jMTUyMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTEtMDQtMjggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdGV4dCBlZGl0b3Igc2hvdWxkIHN1cHBvcnQgZWRpdGluZyBhIHJhbmdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2ODgKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgZWRpdGluZyBhIHJhbmdlIG9mIGxpbmVzIHJhdGhlciB0aGVu
IGVudGlyZSBjb250ZW50IGluIFRleHRWaWV3ZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuY2Fu
U2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUu
c3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvblNvdXJjZUZyYW1l
LnByb3RvdHlwZS5zdGFydEVkaXRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuZWRpdFNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuZWRpdGFibGVSYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBl
Ll9oYXNQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUu
cHJvdG90eXBlLmVkaXRhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGUucHJvdG90eXBlLl9zY3JpcHRFbmRMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUuYmVmb3JlVGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5hZnRlclRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuY29tbWl0RWRpdGluZy5kaWRFZGl0Q29udGVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmNvbW1pdEVk
aXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jYW5j
ZWxFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUu
X3NldFJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRl
LnByb3RvdHlwZS5lZGl0YWJsZVJhbmdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRWaWV3ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5
cGUuc2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90
eXBlLl9lbnRlckludGVybmFsVGV4dENoYW5nZU1vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRWaWV3ZXIucHJvdG90eXBlLl9leGl0SW50ZXJuYWxUZXh0Q2hhbmdlTW9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuX2RvdWJsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fY29tbWl0RWRpdGluZy5k
aWRDb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3Rv
dHlwZS5fY29tbWl0RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5w
cm90b3R5cGUuX2NhbmNlbEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXJEZWxlZ2F0ZS5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlLmFmdGVyVGV4dENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJv
dG90eXBlLm1ha2VMaW5lQUNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
Q2h1bmtlZFBhbmVsLnByb3RvdHlwZS5fc3BsaXRDaHVua09uQUxpbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLnNldEVkaXRhYmxlUmFuZ2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmNs
ZWFyRWRpdGFibGVSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1bmtPbkFMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlEb21VcGRhdGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fdXBkYXRlQ2h1
bmtzRm9yUmFuZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5r
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5z
ZXQgZXhwYW5kZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsu
cHJvdG90eXBlLnNldCByZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5DaHVuay5wcm90b3R5cGUuZ2V0IHJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5fdXBkYXRlRWxlbWVudFJlYWRPbmx5U3Rh
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3M6CisgICAg
ICAgICgudGV4dC1lZGl0b3ItcmVhZC1vbmx5KToKKwogMjAxMS0wNC0yOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCAyY2VmMjNkLi5hOGFiYTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0xMzAsMTQgKzEzMCw2IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNvdXJjZUZpbGVbc291cmNlRmlsZS5pZF07
CiAgICAgfSwKIAotICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJ
ZCkKLSAgICB7Ci0gICAgICAgIGlmICghUHJlZmVyZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSB8
fCB0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3NjcmlwdEZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxl
SWQpOwotICAgICAgICByZXR1cm4gIXNjcmlwdC5saW5lT2Zmc2V0ICYmICFzY3JpcHQuY29sdW1u
T2Zmc2V0OwotICAgIH0sCi0KICAgICBlZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2VG
aWxlSWQsIG5ld1NvdXJjZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0g
dGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7CkBAIC03MTUsMTAgKzcw
Nyw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5k
aW5nID0gZnVuY3Rpb24obW9kZWwpCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgY2FuU2V0Q29udGVudDogZnVu
Y3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLl9zb3VyY2VGaWxlRm9yU2NyaXB0KHJlc291cmNlLnVybCkKLSAgICAg
ICAgaWYgKCFzb3VyY2VGaWxlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuY2FuRWRpdFNjcmlwdFNvdXJjZShzb3VyY2VG
aWxlLmlkKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICB9LAogCiAgICAgc2V0Q29udGVudDogZnVuY3Rpb24o
cmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IGEz
ZDJiNDIuLmJjM2RjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC0xMzYsOSArMTM2LDEyIEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c291cmNlOwogICAgIH0sCiAKLSAgICBpc0NvbnRlbnRFZGl0YWJsZTogZnVuY3Rpb24oKQorICAg
IHN0YXJ0RWRpdGluZzogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9yZXNvdXJjZS5pc0VkaXRhYmxlKCk7CisgICAgICAgIGlmICghdGhpcy5fcmVzb3Vy
Y2UuaXNFZGl0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl90ZXh0
Vmlld2VyLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWlu
Z0VkaXRlZCh0aGlzLl90ZXh0Vmlld2VyLmVsZW1lbnQsIHRydWUpOwogICAgIH0sCiAKICAgICBl
ZGl0Q29udGVudDogZnVuY3Rpb24obmV3VGV4dCwgY2FsbGJhY2spCkBAIC0xNDgsNyArMTUxLDcg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9yZXNvdXJjZS5zZXRDb250ZW50KG5ld1RleHQsIG1ham9yQ2hhbmdlLCBjYWxsYmFj
ayk7CiAgICAgfSwKIAotICAgIGVuZEVkaXRpbmc6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5n
ZSkKKyAgICBhZnRlclRleHRDaGFuZ2VkOiBmdW5jdGlvbihvbGRSYW5nZSwgbmV3UmFuZ2UpCiAg
ICAgewogICAgICAgICBmdW5jdGlvbiBjb21taXRJbmNyZW1lbnRhbEVkaXQoKQogICAgICAgICB7
CkBAIC0xOTYsOSArMTk5LDggQEAgV2ViSW5zcGVjdG9yLlJldmlzaW9uU291cmNlRnJhbWUucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmV2aXNpb24ucmVzb3VyY2U7CiAgICAg
fSwKIAotICAgIGlzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbigpCisgICAgc3RhcnRFZGl0aW5n
OiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0sCiAKICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IDllNzVkODMuLmU1NTUx
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCkBA
IC01NSw4ICs1NSwxMCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJyb3IsIGNhbGxGcmFtZXMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBpZiAoIWVy
cm9yKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlID0gbmV3U291cmNlOworICAgICAg
ICAgICAgICAgIHRoaXMubGVuZ3RoID0gbmV3U291cmNlLmxlbmd0aDsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBjYWxsRnJhbWVzKTsKICAgICAgICAgfQogICAg
ICAgICBEZWJ1Z2dlckFnZW50LmVkaXRTY3JpcHRTb3VyY2UodGhpcy5zb3VyY2VJRCwgbmV3U291
cmNlLCBkaWRFZGl0U2NyaXB0U291cmNlLmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBiMGRhNjM5Li41
M2E2OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtMTA3MCw5ICsxMDcwLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9t
b2RlbC5jb250aW51ZVRvTGluZSh0aGlzLl9zb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOwogICAg
IH0sCiAKLSAgICBjYW5FZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbigpCisgICAgZWRpdGFibGVS
YW5nZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9t
b2RlbC5jYW5FZGl0U2NyaXB0U291cmNlKHRoaXMuX3NvdXJjZUZpbGVJZCk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9tb2RlbC5zb3VyY2VGaWxlKHRoaXMuX3NvdXJjZUZpbGVJZCkuZWRpdGFibGVS
YW5nZShsaW5lTnVtYmVyKTsKICAgICB9LAogCiAgICAgZWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rp
b24odGV4dCwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanMKaW5kZXggMWFjN2U4MS4uMGMxN2UwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwpAQCAtMjMxLDYgKzIz
MSwzMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5cGUgPSB7CiAgICAgX2hhc1Bl
bmRpbmdSZXNvdXJjZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c291cmNlICYmICF0aGlzLl9yZXNvdXJjZS5maW5pc2hlZDsKKyAgICB9LAorCisgICAgZWRpdGFi
bGVSYW5nZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIGlmICghUHJlZmVy
ZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1Z01vZGUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9z
Y3JpcHRzLmxlbmd0aCA+IDEgfHwgdGhpcy5fc2NyaXB0c1swXS5saW5lT2Zmc2V0IHx8IHRoaXMu
X3NjcmlwdHNbMF0uY29sdW1uT2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0cy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgc2NyaXB0ID0gdGhpcy5fc2NyaXB0c1tpXTsKKyAgICAgICAg
ICAgIHZhciBlbmRMb2NhdGlvbiA9IHRoaXMuX3NjcmlwdEVuZExvY2F0aW9uKHNjcmlwdCk7Cisg
ICAgICAgICAgICB2YXIgZW5kTGluZSA9IGVuZExvY2F0aW9uLmxpbmVOdW1iZXIgKyAxOworICAg
ICAgICAgICAgaWYgKHNjcmlwdC5saW5lT2Zmc2V0IDw9IGxpbmVOdW1iZXIgJiYgbGluZU51bWJl
ciA8IGVuZExpbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlKHNjcmlwdC5saW5lT2Zmc2V0LCBzY3JpcHQuY29sdW1uT2Zmc2V0LCBlbmRMb2NhdGlv
bi5saW5lTnVtYmVyLCBlbmRMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworICAgICAgICB9CisgICAg
fSwKKworICAgIF9zY3JpcHRFbmRMb2NhdGlvbjogZnVuY3Rpb24oc2NyaXB0KQorICAgIHsKKyAg
ICAgICAgdmFyIGxpbmVFbmRpbmdzID0gdGhpcy5fY29udGVudC5saW5lRW5kaW5ncygpOworICAg
ICAgICB2YXIgc3RhcnRQb3NpdGlvbiA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9j
YXRpb25Ub1Bvc2l0aW9uKGxpbmVFbmRpbmdzLCB7IGxpbmVOdW1iZXI6IHNjcmlwdC5saW5lT2Zm
c2V0LCBjb2x1bW5OdW1iZXI6IHNjcmlwdC5jb2x1bW5PZmZzZXQgfSk7CisgICAgICAgIHZhciBl
bmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBzY3JpcHQubGVuZ3RoOworICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24obGluZUVu
ZGluZ3MsIGVuZFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IGUwODgzNzQuLjdmMDVkNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJh
bWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcwpAQCAtMjMzLDE3ICsyMzMsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fdmlld2VyU3RhdGU7CiAgICAgfSwKIAotICAg
IGlzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZGVsZWdhdGUuY2FuRWRpdFNjcmlwdFNvdXJjZSgpOwotICAgIH0sCi0KLSAgICByZWFkT25s
eVN0YXRlQ2hhbmdlZDogZnVuY3Rpb24ocmVhZE9ubHkpCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IubWFya0JlaW5nRWRpdGVkKHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudCwgIXJlYWRPbmx5
KTsKLSAgICB9LAotCi0gICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbigpCisgICAgYmVmb3JlVGV4
dENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdmlld2VyU3Rh
dGUpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVWaWV3ZXJTdGF0ZSgpOwpAQCAtMjU0LDcgKzI0
NCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuY2xlYXJNZXNzYWdlcygpOwogICAgIH0sCiAKLSAgICBlbmRFZGl0aW5nOiBmdW5jdGlvbihv
bGRSYW5nZSwgbmV3UmFuZ2UpCisgICAgYWZ0ZXJUZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xkUmFu
Z2UsIG5ld1JhbmdlKQogICAgIHsKICAgICAgICAgaWYgKCFvbGRSYW5nZSB8fCAhbmV3UmFuZ2Up
CiAgICAgICAgICAgICByZXR1cm47CkBAIC04ODMsMTEgKzg3MywyMSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6
ZSgpOwogICAgIH0sCiAKKyAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCisg
ICAgeworICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9kZWxlZ2F0ZS5lZGl0YWJsZVJhbmdlKGxp
bmVOdW1iZXIpOworICAgICAgICBpZiAoIXJhbmdlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoIXJhbmdlLnN0YXJ0TGluZSAmJiAhcmFuZ2Uuc3RhcnRDb2x1bW4pCisgICAgICAg
ICAgICByYW5nZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3NldFJlYWRPbmx5KGZhbHNlLCByYW5n
ZSk7CisgICAgfSwKKwogICAgIGNvbW1pdEVkaXRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl92aWV3ZXJTdGF0ZSkgewogICAgICAgICAgICAgLy8gTm8g
ZWRpdGluZyB3YXMgYWN0dWFsbHkgZG9uZS4KLSAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNl
dFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQoZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fc2V0
UmVhZE9ubHkodHJ1ZSk7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC05MTgsOCArOTE4LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGVsZXRlIHRo
aXMuX3ZpZXdlclN0YXRlOwotICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2V0U2NyaXB0U291
cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7Ci0KKyAgICAgICAgICAgIHRoaXMuX3NldFJlYWRPbmx5
KHRydWUpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogICAgICAgICB0aGlz
LmVkaXRDb250ZW50KHRoaXMuX3RleHRNb2RlbC50ZXh0LCBkaWRFZGl0Q29udGVudC5iaW5kKHRo
aXMpKTsKQEAgLTkzMyw3ICs5MzIsMTUgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICBjYW5jZWxFZGl0aW5nOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9yZXN0b3JlVmlld2VyU3RhdGUoKTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2V0U2Ny
aXB0U291cmNlSXNCZWluZ0VkaXRlZChmYWxzZSk7CisgICAgICAgIHRoaXMuX3NldFJlYWRPbmx5
KHRydWUpOworICAgIH0sCisKKyAgICBfc2V0UmVhZE9ubHk6IGZ1bmN0aW9uKHJlYWRPbmx5LCBy
YW5nZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuc2V0UmVhZE9ubHkocmVhZE9u
bHksIHJhbmdlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLl90
ZXh0Vmlld2VyLmVsZW1lbnQsICFyZWFkT25seSk7CisgICAgICAgIGlmIChyZWFkT25seSkKKyAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQoZmFs
c2UpOwogICAgIH0KIH0KIApAQCAtOTgwLDkgKzk4Nyw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZURlbGVnYXRlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAotICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1
bmN0aW9uKCkKKyAgICBlZGl0YWJsZVJhbmdlOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3Nlcy4KICAgICB9LAogCiAgICAgZWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rpb24o
dGV4dCwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RleHRWaWV3ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRWaWV3ZXIuanMKaW5kZXggODE3ODcyNi4uNDQ3MGMxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcwpAQCAtNjcsMTIgKzY3LDE5
IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
bWFpblBhbmVsLm1pbWVUeXBlID0gbWltZVR5cGU7CiAgICAgfSwKIAotICAgIHNldCByZWFkT25s
eShyZWFkT25seSkKKyAgICBzZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHksIHJhbmdlKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX21haW5QYW5lbC5yZWFkT25seSA9PT0gcmVhZE9ubHkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX21haW5QYW5lbC5yZWFkT25seSA9
IHJlYWRPbmx5OwotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5yZWFkT25seVN0YXRlQ2hhbmdlZChy
ZWFkT25seSk7CisgICAgICAgIGlmICghcmVhZE9ubHkpIHsKKyAgICAgICAgICAgIGlmIChyYW5n
ZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9tYWluUGFuZWwuc2V0RWRpdGFibGVSYW5nZShyYW5n
ZS5zdGFydExpbmUsIHJhbmdlLmVuZExpbmUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRoaXMuX21haW5QYW5lbC5zZXRFZGl0YWJsZVJhbmdlKDAsIHRoaXMuX3RleHRNb2Rl
bC5saW5lc0NvdW50KTsKKyAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5jb2xsYXBz
ZVRvU3RhcnQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9tYWluUGFuZWwu
Y2xlYXJFZGl0YWJsZVJhbmdlKCk7CiAgICAgfSwKIAogICAgIGdldCByZWFkT25seSgpCkBAIC0x
NzcsMTMgKzE4NCwxMyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAg
ICAgX2VudGVySW50ZXJuYWxUZXh0Q2hhbmdlTW9kZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgdGhpcy5faW50ZXJuYWxUZXh0Q2hhbmdlTW9kZSA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2Rl
bGVnYXRlLnN0YXJ0RWRpdGluZygpOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5iZWZvcmVUZXh0
Q2hhbmdlZCgpOwogICAgIH0sCiAKICAgICBfZXhpdEludGVybmFsVGV4dENoYW5nZU1vZGU6IGZ1
bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2ludGVybmFs
VGV4dENoYW5nZU1vZGUgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuZW5kRWRpdGlu
ZyhvbGRSYW5nZSwgbmV3UmFuZ2UpOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5hZnRlclRleHRD
aGFuZ2VkKG9sZFJhbmdlLCBuZXdSYW5nZSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVQYW5lbE9m
ZnNldHM6IGZ1bmN0aW9uKCkKQEAgLTIzNiwxMSArMjQzLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRW
aWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWxpbmVSb3cpCiAgICAgICAgICAgICBy
ZXR1cm47ICAvLyBEbyBub3QgdHJpZ2dlciBlZGl0aW5nIGZyb20gbGluZSBudW1iZXJzLgogCi0g
ICAgICAgIGlmICghdGhpcy5fZGVsZWdhdGUuaXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvU3RhcnQoKTsKKyAgICAgICAgdGhpcy5fZGVs
ZWdhdGUuc3RhcnRFZGl0aW5nKGxpbmVSb3cubGluZU51bWJlcik7CiAgICAgfSwKIAogICAgIF9y
ZWdpc3RlclNob3J0Y3V0czogZnVuY3Rpb24oKQpAQCAtMzAxLDEyICszMDQsMTIgQEAgV2ViSW5z
cGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5yZWFkT25s
eSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB0aGlzLnJlYWRPbmx5ID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgICAg
ZnVuY3Rpb24gZGlkQ29tbWl0RWRpdGluZyhlcnJvcikKICAgICAgICAgewogICAgICAgICAgICAg
dGhpcy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChl
cnJvcikKLSAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgdGhpcy5fbWFpblBhbmVsLnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgdGhpcy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5jb21taXRFZGl0aW5nKGRpZENvbW1pdEVkaXRpbmcuYmluZCh0aGlzKSk7CkBAIC0z
MTgsNyArMzIxLDYgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAodGhpcy5yZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY2FuY2Vs
RWRpdGluZygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMzEsMjIgKzMzMywx
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlID0gZnVuY3Rpb24oKQogfQogCiBX
ZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlLnByb3RvdHlwZSA9IHsKLSAgICBpc0NvbnRl
bnRFZGl0YWJsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKLQotICAgIHJlYWRPbmx5U3RhdGVDaGFuZ2Vk
OiBmdW5jdGlvbihyZWFkT25seSkKKyAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIpCiAgICAgewogICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KICAgICB9LAogCi0gICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbigpCisgICAgYmVmb3JlVGV4
dENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0sCiAKLSAgICBlbmRFZGl0aW5nOiBmdW5jdGlvbihv
bGRSYW5nZSwgbmV3UmFuZ2UpCisgICAgYWZ0ZXJUZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xkUmFu
Z2UsIG5ld1JhbmdlKQogICAgIHsKICAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCiAgICAgfSwKQEAgLTQ0NiwxMCArNDQzLDEwIEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG9sZENodW5r
LmxpbmVzQ291bnQgPT09IDEpCiAgICAgICAgICAgICByZXR1cm4gb2xkQ2h1bms7CiAKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVy
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGxpbmVOdW1iZXIsIGNo
dW5rTnVtYmVyLCB0cnVlKTsKICAgICB9LAogCi0gICAgX3NwbGl0Q2h1bmtPbkFMaW5lOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjaHVua051bWJlcikKKyAgICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1
bmN0aW9uKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBjcmVhdGVTdWZmaXhDaHVuaykKICAgICB7
CiAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7CiAKQEAgLTQ2MiwxOCArNDU5LDIyIEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gUHJlZml4IGNodW5rLgogICAgICAgICBpZiAobGluZU51bWJlciA+IG9sZENodW5rLnN0
YXJ0TGluZSkgewogICAgICAgICAgICAgdmFyIHByZWZpeENodW5rID0gdGhpcy5fY3JlYXRlTmV3
Q2h1bmsob2xkQ2h1bmsuc3RhcnRMaW5lLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHByZWZp
eENodW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgICAgICB0aGlzLl90
ZXh0Q2h1bmtzLnNwbGljZShpbnNlcnRJbmRleCsrLCAwLCBwcmVmaXhDaHVuayk7CiAgICAgICAg
ICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3JlKHByZWZpeENodW5rLmVsZW1lbnQsIG9s
ZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTGluZSBjaHVuay4KLSAg
ICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1iZXIsIGxp
bmVOdW1iZXIgKyAxKTsKKyAgICAgICAgdmFyIGVuZExpbmUgPSBjcmVhdGVTdWZmaXhDaHVuayA/
IGxpbmVOdW1iZXIgKyAxIDogb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3Vu
dDsKKyAgICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1i
ZXIsIGVuZExpbmUpOworICAgICAgICBsaW5lQ2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFk
T25seTsKICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0SW5kZXgrKywgMCwg
bGluZUNodW5rKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShsaW5lQ2h1
bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAKICAgICAgICAgLy8gU3VmZml4IGNodW5r
LgotICAgICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCA+
IGxpbmVOdW1iZXIgKyAxKSB7Ci0gICAgICAgICAgICB2YXIgc3VmZml4Q2h1bmsgPSB0aGlzLl9j
cmVhdGVOZXdDaHVuayhsaW5lTnVtYmVyICsgMSwgb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1
bmsubGluZXNDb3VudCk7CisgICAgICAgIGlmIChvbGRDaHVuay5zdGFydExpbmUgKyBvbGRDaHVu
ay5saW5lc0NvdW50ID4gZW5kTGluZSkgeworICAgICAgICAgICAgdmFyIHN1ZmZpeENodW5rID0g
dGhpcy5fY3JlYXRlTmV3Q2h1bmsoZW5kTGluZSwgb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1
bmsubGluZXNDb3VudCk7CisgICAgICAgICAgICBzdWZmaXhDaHVuay5yZWFkT25seSA9IG9sZENo
dW5rLnJlYWRPbmx5OwogICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0
SW5kZXgsIDAsIHN1ZmZpeENodW5rKTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5pbnNl
cnRCZWZvcmUoc3VmZml4Q2h1bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAgICAgICAg
IH0KQEAgLTkwNyw2ICs5MDgsNDMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7CiAgICAgfSwKIAor
ICAgIHNldEVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKHN0YXJ0TGluZSwgZW5kTGluZSkKKyAgICB7
CisgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7CisKKyAgICAgICAgdmFyIGZpcnN0Q2h1
bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxpbmUoc3RhcnRMaW5lKTsKKyAgICAgICAg
dmFyIGZpcnN0Q2h1bmsgPSB0aGlzLl90ZXh0Q2h1bmtzW2ZpcnN0Q2h1bmtOdW1iZXJdOworICAg
ICAgICBpZiAoZmlyc3RDaHVuay5zdGFydExpbmUgIT09IHN0YXJ0TGluZSkgeworICAgICAgICAg
ICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUoc3RhcnRMaW5lLCBmaXJzdENodW5rTnVtYmVyKTsK
KyAgICAgICAgICAgIGZpcnN0Q2h1bmtOdW1iZXIgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsKKyAgICAgICAg
aWYgKGVuZExpbmUgIT09IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50KSB7CisgICAgICAgICAg
ICBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxpbmUoZW5kTGluZSk7Cisg
ICAgICAgICAgICB2YXIgbGFzdENodW5rID0gdGhpcy5fdGV4dENodW5rc1tsYXN0Q2h1bmtOdW1i
ZXJdOworICAgICAgICAgICAgaWYgKGxhc3RDaHVuayAmJiBsYXN0Q2h1bmsuc3RhcnRMaW5lICE9
PSBlbmRMaW5lKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUoZW5k
TGluZSwgbGFzdENodW5rTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBsYXN0Q2h1bmtOdW1iZXIg
Kz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGNodW5r
TnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCBmaXJzdENodW5rTnVtYmVyOyArK2NodW5rTnVtYmVy
KQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSB0
cnVlOworICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IGZpcnN0Q2h1bmtOdW1iZXI7IGNo
dW5rTnVtYmVyIDwgbGFzdENodW5rTnVtYmVyOyArK2NodW5rTnVtYmVyKQorICAgICAgICAgICAg
dGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSBmYWxzZTsKKyAgICAgICAg
Zm9yICh2YXIgY2h1bmtOdW1iZXIgPSBsYXN0Q2h1bmtOdW1iZXI7IGNodW5rTnVtYmVyIDwgdGhp
cy5fdGV4dENodW5rcy5sZW5ndGg7ICsrY2h1bmtOdW1iZXIpCisgICAgICAgICAgICB0aGlzLl90
ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9IHRydWU7CisKKyAgICAgICAgdGhpcy5l
bmREb21VcGRhdGVzKCk7CisgICAgfSwKKworICAgIGNsZWFyRWRpdGFibGVSYW5nZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSAwOyBjaHVua051bWJl
ciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyArK2NodW5rTnVtYmVyKQorICAgICAgICAgICAg
dGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSBmYWxzZTsKKyAgICB9LAor
CiAgICAgbWFya0FuZFJldmVhbFJhbmdlOiBmdW5jdGlvbihyYW5nZSkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9yYW5nZVRvTWFyaykgewpAQCAtMTAxMCwxMCArMTA0OCwxMCBAQCBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0sCiAKLSAgICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIsIGNodW5rTnVtYmVyKQorICAgIF9zcGxpdENodW5rT25BTGluZTogZnVuY3Rpb24obGluZU51
bWJlciwgY2h1bmtOdW1iZXIsIGNyZWF0ZVN1ZmZpeENodW5rKQogICAgIHsKICAgICAgICAgdmFy
IHNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVjdGlvbigpOwotICAgICAgICB2YXIgY2h1bmsgPSBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1bmtP
bkFMaW5lLmNhbGwodGhpcywgbGluZU51bWJlciwgY2h1bmtOdW1iZXIpOworICAgICAgICB2YXIg
Y2h1bmsgPSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUuX3Nw
bGl0Q2h1bmtPbkFMaW5lLmNhbGwodGhpcywgbGluZU51bWJlciwgY2h1bmtOdW1iZXIsIGNyZWF0
ZVN1ZmZpeENodW5rKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihzZWxlY3Rpb24p
OwogICAgICAgICByZXR1cm4gY2h1bms7CiAgICAgfSwKQEAgLTE1NzgsNyArMTYxNiw3IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHZhciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSwgc3Rh
cnRDb2x1bW4sIGVuZExpbmUgLSAxLCBlbmRDb2x1bW4pOwogCiAgICAgICAgIHZhciBuZXdSYW5n
ZSA9IHRoaXMuX3NldFRleHQob2xkUmFuZ2UsIGxpbmVzLmpvaW4oIlxuIikpOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwogICAgICAgICB0aGlz
Ll9yZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAKQEAgLTE3NzYsNiArMTgxNCw3IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rID0gZnVuY3Rpb24odGV4dFZpZXdlciwgc3Rh
cnRMaW5lLCBlbmRMaW5lKQogICAgIHRoaXMubGluZXNDb3VudCA9IGVuZExpbmUgLSBzdGFydExp
bmU7CiAKICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOworICAgIHRoaXMuX3JlYWRPbmx5ID0g
ZmFsc2U7CiAKICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlZExpbmVSb3coKTsKIH0KQEAgLTE4NjMs
NiArMTkwMiw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudEVs
ZW1lbnQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFydExpbmU7IGkgPCB0aGlz
LnN0YXJ0TGluZSArIHRoaXMubGluZXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFy
IGxpbmVSb3cgPSB0aGlzLl9jcmVhdGVSb3coaSk7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBk
YXRlRWxlbWVudFJlYWRPbmx5U3RhdGUobGluZVJvdyk7CiAgICAgICAgICAgICAgICAgcGFyZW50
RWxlbWVudC5pbnNlcnRCZWZvcmUobGluZVJvdywgdGhpcy5lbGVtZW50KTsKICAgICAgICAgICAg
ICAgICB0aGlzLl9leHBhbmRlZExpbmVSb3dzLnB1c2gobGluZVJvdyk7CiAgICAgICAgICAgICB9
CkBAIC0xODg4LDYgKzE5MjgsMzIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVuZERvbVVwZGF0ZXMoKTsK
ICAgICB9LAogCisgICAgc2V0IHJlYWRPbmx5KHJlYWRPbmx5KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX3JlYWRPbmx5ID09PSByZWFkT25seSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5OworICAgICAgICB0aGlzLl91cGRhdGVFbGVt
ZW50UmVhZE9ubHlTdGF0ZSh0aGlzLmVsZW1lbnQpOworICAgICAgICBpZiAodGhpcy5fZXhwYW5k
ZWRMaW5lUm93cykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9leHBh
bmRlZExpbmVSb3dzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUVs
ZW1lbnRSZWFkT25seVN0YXRlKHRoaXMuX2V4cGFuZGVkTGluZVJvd3NbaV0pOworICAgICAgICB9
CisgICAgfSwKKworICAgIGdldCByZWFkT25seSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fcmVhZE9ubHk7CisgICAgfSwKKworICAgIF91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZTog
ZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZWFkT25seSkKKyAg
ICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVhZC1vbmx5Iik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygidGV4
dC1lZGl0b3ItcmVhZC1vbmx5Iik7CisgICAgfSwKKwogICAgIGdldCBoZWlnaHQoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9leHBhbmRlZExpbmVSb3dzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3MKaW5kZXggNTlmMmE0MzAuLmI4
NjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4
dFZpZXdlci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0
Vmlld2VyLmNzcwpAQCAtNDMsNiArNDMsMTEgQEAKICAgICAtd2Via2l0LXVzZXItbW9kaWZ5OiBy
ZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5OwogfQogCisudGV4dC1lZGl0b3ItcmVhZC1vbmx5IHsK
KyAgICAtd2Via2l0LXVzZXItbW9kaWZ5OiByZWFkLW9ubHk7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDI0MCwgMjQwLCAyNDApOworfQorCiAud2Via2l0LWxpbmUtZGVjb3JhdGlvbnMgewog
ICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7
Cg==
</data>
<flag name="review"
          id="84523"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92416</attachid>
            <date>2011-05-05 08:16:38 -0700</date>
            <delta_ts>2011-05-05 08:23:12 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6540</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdl
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcwpp
bmRleCBhYjBjZDNmLi5iZjE1ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCkBAIC00NDYsMTAgKzQzNSwxMCBAQCBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChvbGRD
aHVuay5saW5lc0NvdW50ID09PSAxKQogICAgICAgICAgICAgcmV0dXJuIG9sZENodW5rOwogCi0g
ICAgICAgIHJldHVybiB0aGlzLl9zcGxpdENodW5rT25BTGluZShsaW5lTnVtYmVyLCBjaHVua051
bWJlcik7CisgICAgICAgIHJldHVybiB0aGlzLl9zcGxpdENodW5rT25BTGluZShsaW5lTnVtYmVy
LCBjaHVua051bWJlciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIF9zcGxpdENodW5rT25BTGluZTog
ZnVuY3Rpb24obGluZU51bWJlciwgY2h1bmtOdW1iZXIpCisgICAgX3NwbGl0Q2h1bmtPbkFMaW5l
OiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjaHVua051bWJlciwgY3JlYXRlU3VmZml4Q2h1bmspCiAg
ICAgewogICAgICAgICB0aGlzLmJlZ2luRG9tVXBkYXRlcygpOwogCkBAIC00NjIsMTggKzQ1MSwy
MiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIC8vIFByZWZpeCBjaHVuay4KICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPiBvbGRDaHVu
ay5zdGFydExpbmUpIHsKICAgICAgICAgICAgIHZhciBwcmVmaXhDaHVuayA9IHRoaXMuX2NyZWF0
ZU5ld0NodW5rKG9sZENodW5rLnN0YXJ0TGluZSwgbGluZU51bWJlcik7CisgICAgICAgICAgICBw
cmVmaXhDaHVuay5yZWFkT25seSA9IG9sZENodW5rLnJlYWRPbmx5OwogICAgICAgICAgICAgdGhp
cy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0SW5kZXgrKywgMCwgcHJlZml4Q2h1bmspOwogICAg
ICAgICAgICAgdGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShwcmVmaXhDaHVuay5lbGVtZW50
LCBvbGRDaHVuay5lbGVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIExpbmUgY2h1bmsu
Ci0gICAgICAgIHZhciBsaW5lQ2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhsaW5lTnVtYmVy
LCBsaW5lTnVtYmVyICsgMSk7CisgICAgICAgIHZhciBlbmRMaW5lID0gY3JlYXRlU3VmZml4Q2h1
bmsgPyBsaW5lTnVtYmVyICsgMSA6IG9sZENodW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVz
Q291bnQ7CisgICAgICAgIHZhciBsaW5lQ2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhsaW5l
TnVtYmVyLCBlbmRMaW5lKTsKKyAgICAgICAgbGluZUNodW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsu
cmVhZE9ubHk7CiAgICAgICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4Kyss
IDAsIGxpbmVDaHVuayk7CiAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUobGlu
ZUNodW5rLmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogCiAgICAgICAgIC8vIFN1ZmZpeCBj
aHVuay4KLSAgICAgICAgaWYgKG9sZENodW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291
bnQgPiBsaW5lTnVtYmVyICsgMSkgewotICAgICAgICAgICAgdmFyIHN1ZmZpeENodW5rID0gdGhp
cy5fY3JlYXRlTmV3Q2h1bmsobGluZU51bWJlciArIDEsIG9sZENodW5rLnN0YXJ0TGluZSArIG9s
ZENodW5rLmxpbmVzQ291bnQpOworICAgICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xk
Q2h1bmsubGluZXNDb3VudCA+IGVuZExpbmUpIHsKKyAgICAgICAgICAgIHZhciBzdWZmaXhDaHVu
ayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGVuZExpbmUsIG9sZENodW5rLnN0YXJ0TGluZSArIG9s
ZENodW5rLmxpbmVzQ291bnQpOworICAgICAgICAgICAgc3VmZml4Q2h1bmsucmVhZE9ubHkgPSBv
bGRDaHVuay5yZWFkT25seTsKICAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGlu
c2VydEluZGV4LCAwLCBzdWZmaXhDaHVuayk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIu
aW5zZXJ0QmVmb3JlKHN1ZmZpeENodW5rLmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogICAg
ICAgICB9CkBAIC05MDcsNiArOTAwLDQzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5OwogICAgIH0s
CiAKKyAgICBzZXRFZGl0YWJsZVJhbmdlOiBmdW5jdGlvbihzdGFydExpbmUsIGVuZExpbmUpCisg
ICAgeworICAgICAgICB0aGlzLmJlZ2luRG9tVXBkYXRlcygpOworCisgICAgICAgIHZhciBmaXJz
dENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtOdW1iZXJGb3JMaW5lKHN0YXJ0TGluZSk7CisgICAg
ICAgIHZhciBmaXJzdENodW5rID0gdGhpcy5fdGV4dENodW5rc1tmaXJzdENodW5rTnVtYmVyXTsK
KyAgICAgICAgaWYgKGZpcnN0Q2h1bmsuc3RhcnRMaW5lICE9PSBzdGFydExpbmUpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKHN0YXJ0TGluZSwgZmlyc3RDaHVua051bWJl
cik7CisgICAgICAgICAgICBmaXJzdENodW5rTnVtYmVyICs9IDE7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgbGFzdENodW5rTnVtYmVyID0gdGhpcy5fdGV4dENodW5rcy5sZW5ndGg7CisgICAg
ICAgIGlmIChlbmRMaW5lICE9PSB0aGlzLl90ZXh0TW9kZWwubGluZXNDb3VudCkgeworICAgICAg
ICAgICAgbGFzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtOdW1iZXJGb3JMaW5lKGVuZExpbmUp
OworICAgICAgICAgICAgdmFyIGxhc3RDaHVuayA9IHRoaXMuX3RleHRDaHVua3NbbGFzdENodW5r
TnVtYmVyXTsKKyAgICAgICAgICAgIGlmIChsYXN0Q2h1bmsgJiYgbGFzdENodW5rLnN0YXJ0TGlu
ZSAhPT0gZW5kTGluZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5l
KGVuZExpbmUsIGxhc3RDaHVua051bWJlcik7CisgICAgICAgICAgICAgICAgbGFzdENodW5rTnVt
YmVyICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBj
aHVua051bWJlciA9IDA7IGNodW5rTnVtYmVyIDwgZmlyc3RDaHVua051bWJlcjsgKytjaHVua051
bWJlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5
ID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSBmaXJzdENodW5rTnVtYmVy
OyBjaHVua051bWJlciA8IGxhc3RDaHVua051bWJlcjsgKytjaHVua051bWJlcikKKyAgICAgICAg
ICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7CisgICAg
ICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gbGFzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8
IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyArK2NodW5rTnVtYmVyKQorICAgICAgICAgICAgdGhp
cy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVhZE9ubHkgPSB0cnVlOworCisgICAgICAgIHRo
aXMuZW5kRG9tVXBkYXRlcygpOworICAgIH0sCisKKyAgICBjbGVhckVkaXRhYmxlUmFuZ2U6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gMDsgY2h1bmtO
dW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsgKytjaHVua051bWJlcikKKyAgICAgICAg
ICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7CisgICAg
fSwKKwogICAgIG1hcmtBbmRSZXZlYWxSYW5nZTogZnVuY3Rpb24ocmFuZ2UpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fcmFuZ2VUb01hcmspIHsKQEAgLTEwMTAsMTAgKzEwNDAsMTAgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9LAogCi0gICAgX3NwbGl0Q2h1bmtPbkFMaW5lOiBmdW5jdGlvbihsaW5l
TnVtYmVyLCBjaHVua051bWJlcikKKyAgICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIGNodW5rTnVtYmVyLCBjcmVhdGVTdWZmaXhDaHVuaykKICAgICB7CiAgICAgICAg
IHZhciBzZWxlY3Rpb24gPSB0aGlzLl9nZXRTZWxlY3Rpb24oKTsKLSAgICAgICAgdmFyIGNodW5r
ID0gV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENo
dW5rT25BTGluZS5jYWxsKHRoaXMsIGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyKTsKKyAgICAgICAg
dmFyIGNodW5rID0gV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBl
Ll9zcGxpdENodW5rT25BTGluZS5jYWxsKHRoaXMsIGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBj
cmVhdGVTdWZmaXhDaHVuayk7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oc2VsZWN0
aW9uKTsKICAgICAgICAgcmV0dXJuIGNodW5rOwogICAgIH0sCkBAIC0xNTc4LDcgKzE2MDgsNyBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lIC0gMSwgZW5kQ29sdW1uKTsKIAogICAgICAgICB2YXIgbmV3
UmFuZ2UgPSB0aGlzLl9zZXRUZXh0KG9sZFJhbmdlLCBsaW5lcy5qb2luKCJcbiIpKTsKLSAgICAg
ICAgCisKICAgICAgICAgdGhpcy5fcGFpbnRTY2hlZHVsZWRMaW5lcyh0cnVlKTsKICAgICAgICAg
dGhpcy5fcmVzdG9yZVNlbGVjdGlvbihzZWxlY3Rpb24pOwogCkBAIC0xNzc2LDYgKzE4MDYsNyBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuayA9IGZ1bmN0aW9uKHRleHRWaWV3ZXIs
IHN0YXJ0TGluZSwgZW5kTGluZSkKICAgICB0aGlzLmxpbmVzQ291bnQgPSBlbmRMaW5lIC0gc3Rh
cnRMaW5lOwogCiAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKKyAgICB0aGlzLl9yZWFkT25s
eSA9IGZhbHNlOwogCiAgICAgdGhpcy51cGRhdGVDb2xsYXBzZWRMaW5lUm93KCk7CiB9CkBAIC0x
ODYzLDYgKzE4OTQsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudC5wYXJl
bnRFbGVtZW50OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuc3RhcnRMaW5lOyBpIDwg
dGhpcy5zdGFydExpbmUgKyB0aGlzLmxpbmVzQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAg
IHZhciBsaW5lUm93ID0gdGhpcy5fY3JlYXRlUm93KGkpOworICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUVsZW1lbnRSZWFkT25seVN0YXRlKGxpbmVSb3cpOwogICAgICAgICAgICAgICAgIHBh
cmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGxpbmVSb3csIHRoaXMuZWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgdGhpcy5fZXhwYW5kZWRMaW5lUm93cy5wdXNoKGxpbmVSb3cpOwogICAgICAgICAg
ICAgfQpAQCAtMTg4OCw2ICsxOTIwLDMyIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNo
dW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5lbmREb21VcGRhdGVz
KCk7CiAgICAgfSwKIAorICAgIHNldCByZWFkT25seShyZWFkT25seSkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9yZWFkT25seSA9PT0gcmVhZE9ubHkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTsKKyAgICAgICAgdGhpcy5fdXBkYXRl
RWxlbWVudFJlYWRPbmx5U3RhdGUodGhpcy5lbGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX2V4
cGFuZGVkTGluZVJvd3MpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
ZXhwYW5kZWRMaW5lUm93cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVFbGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLl9leHBhbmRlZExpbmVSb3dzW2ldKTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICBnZXQgcmVhZE9ubHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3JlYWRPbmx5OworICAgIH0sCisKKyAgICBfdXBkYXRlRWxlbWVudFJlYWRPbmx5U3Rh
dGU6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkp
CisgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRleHQtZWRpdG9yLXJlYWQtb25s
eSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3Mo
InRleHQtZWRpdG9yLXJlYWQtb25seSIpOworICAgIH0sCisKICAgICBnZXQgaGVpZ2h0KCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fZXhwYW5kZWRMaW5lUm93cykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92417</attachid>
            <date>2011-05-05 08:23:12 -0700</date>
            <delta_ts>2011-05-13 04:59:44 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8461</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3Y2E4OGQ2Li5kOTFkOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDUtMDUgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogVGV4dEVkaXRvciBzaG91bGQgc3VwcG9ydCBlZGl0aW5nIGEgcmFuZ2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTY4OAorCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLm1ha2VMaW5lQUNodW5rKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZS5f
c3BsaXRDaHVua09uQUxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWlu
UGFuZWwucHJvdG90eXBlLnNldEVkaXRhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmNsZWFyRWRpdGFibGVSYW5nZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1
bmtPbkFMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fYXBwbHlEb21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpbkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5r
LnByb3RvdHlwZS5zZXQgZXhwYW5kZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluQ2h1bmsucHJvdG90eXBlLnNldCByZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUuZ2V0IHJlYWRPbmx5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZS5fdXBkYXRlRWxlbWVu
dFJlYWRPbmx5U3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdl
ci5jc3M6CisgICAgICAgICgudGV4dC1lZGl0b3ItcmVhZC1vbmx5KToKKwogMjAxMS0wNS0wNCAg
WXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0Vmlld2VyLmpzCmluZGV4IGFiMGNkM2YuLjBiNDhhMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKQEAgLTQ0NiwxMCAr
NDQ2LDEwIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKG9sZENodW5rLmxpbmVzQ291bnQgPT09IDEpCiAgICAgICAgICAgICBy
ZXR1cm4gb2xkQ2h1bms7CiAKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5l
KGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0Q2h1
bmtPbkFMaW5lKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCB0cnVlKTsKICAgICB9LAogCi0gICAg
X3NwbGl0Q2h1bmtPbkFMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjaHVua051bWJlcikKKyAg
ICBfc3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBj
cmVhdGVTdWZmaXhDaHVuaykKICAgICB7CiAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7
CiAKQEAgLTQ2MiwxOCArNDYyLDIyIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJlZml4IGNodW5rLgogICAgICAgICBpZiAo
bGluZU51bWJlciA+IG9sZENodW5rLnN0YXJ0TGluZSkgewogICAgICAgICAgICAgdmFyIHByZWZp
eENodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsob2xkQ2h1bmsuc3RhcnRMaW5lLCBsaW5lTnVt
YmVyKTsKKyAgICAgICAgICAgIHByZWZpeENodW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9u
bHk7CiAgICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzLnNwbGljZShpbnNlcnRJbmRleCsrLCAw
LCBwcmVmaXhDaHVuayk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3Jl
KHByZWZpeENodW5rLmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gTGluZSBjaHVuay4KLSAgICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0
ZU5ld0NodW5rKGxpbmVOdW1iZXIsIGxpbmVOdW1iZXIgKyAxKTsKKyAgICAgICAgdmFyIGVuZExp
bmUgPSBjcmVhdGVTdWZmaXhDaHVuayA/IGxpbmVOdW1iZXIgKyAxIDogb2xkQ2h1bmsuc3RhcnRM
aW5lICsgb2xkQ2h1bmsubGluZXNDb3VudDsKKyAgICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMu
X2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1iZXIsIGVuZExpbmUpOworICAgICAgICBsaW5lQ2h1bmsu
cmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5z
cGxpY2UoaW5zZXJ0SW5kZXgrKywgMCwgbGluZUNodW5rKTsKICAgICAgICAgdGhpcy5fY29udGFp
bmVyLmluc2VydEJlZm9yZShsaW5lQ2h1bmsuZWxlbWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAK
ICAgICAgICAgLy8gU3VmZml4IGNodW5rLgotICAgICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5l
ICsgb2xkQ2h1bmsubGluZXNDb3VudCA+IGxpbmVOdW1iZXIgKyAxKSB7Ci0gICAgICAgICAgICB2
YXIgc3VmZml4Q2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhsaW5lTnVtYmVyICsgMSwgb2xk
Q2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCk7CisgICAgICAgIGlmIChvbGRD
aHVuay5zdGFydExpbmUgKyBvbGRDaHVuay5saW5lc0NvdW50ID4gZW5kTGluZSkgeworICAgICAg
ICAgICAgdmFyIHN1ZmZpeENodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsoZW5kTGluZSwgb2xk
Q2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCk7CisgICAgICAgICAgICBzdWZm
aXhDaHVuay5yZWFkT25seSA9IG9sZENodW5rLnJlYWRPbmx5OwogICAgICAgICAgICAgdGhpcy5f
dGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHN1ZmZpeENodW5rKTsKICAgICAgICAg
ICAgIHRoaXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUoc3VmZml4Q2h1bmsuZWxlbWVudCwgb2xk
Q2h1bmsuZWxlbWVudCk7CiAgICAgICAgIH0KQEAgLTkwNyw2ICs5MTEsNDMgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVhZE9ubHk7CiAgICAgfSwKIAorICAgIHNldEVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKHN0
YXJ0TGluZSwgZW5kTGluZSkKKyAgICB7CisgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7
CisKKyAgICAgICAgdmFyIGZpcnN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVua051bWJlckZvckxp
bmUoc3RhcnRMaW5lKTsKKyAgICAgICAgdmFyIGZpcnN0Q2h1bmsgPSB0aGlzLl90ZXh0Q2h1bmtz
W2ZpcnN0Q2h1bmtOdW1iZXJdOworICAgICAgICBpZiAoZmlyc3RDaHVuay5zdGFydExpbmUgIT09
IHN0YXJ0TGluZSkgeworICAgICAgICAgICAgdGhpcy5fc3BsaXRDaHVua09uQUxpbmUoc3RhcnRM
aW5lLCBmaXJzdENodW5rTnVtYmVyKTsKKyAgICAgICAgICAgIGZpcnN0Q2h1bmtOdW1iZXIgKz0g
MTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl90ZXh0
Q2h1bmtzLmxlbmd0aDsKKyAgICAgICAgaWYgKGVuZExpbmUgIT09IHRoaXMuX3RleHRNb2RlbC5s
aW5lc0NvdW50KSB7CisgICAgICAgICAgICBsYXN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9jaHVua051
bWJlckZvckxpbmUoZW5kTGluZSk7CisgICAgICAgICAgICB2YXIgbGFzdENodW5rID0gdGhpcy5f
dGV4dENodW5rc1tsYXN0Q2h1bmtOdW1iZXJdOworICAgICAgICAgICAgaWYgKGxhc3RDaHVuayAm
JiBsYXN0Q2h1bmsuc3RhcnRMaW5lICE9PSBlbmRMaW5lKSB7CisgICAgICAgICAgICAgICAgdGhp
cy5fc3BsaXRDaHVua09uQUxpbmUoZW5kTGluZSwgbGFzdENodW5rTnVtYmVyKTsKKyAgICAgICAg
ICAgICAgICBsYXN0Q2h1bmtOdW1iZXIgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCBmaXJzdENo
dW5rTnVtYmVyOyArK2NodW5rTnVtYmVyKQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tj
aHVua051bWJlcl0ucmVhZE9ubHkgPSB0cnVlOworICAgICAgICBmb3IgKHZhciBjaHVua051bWJl
ciA9IGZpcnN0Q2h1bmtOdW1iZXI7IGNodW5rTnVtYmVyIDwgbGFzdENodW5rTnVtYmVyOyArK2No
dW5rTnVtYmVyKQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVh
ZE9ubHkgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSBsYXN0Q2h1bmtO
dW1iZXI7IGNodW5rTnVtYmVyIDwgdGhpcy5fdGV4dENodW5rcy5sZW5ndGg7ICsrY2h1bmtOdW1i
ZXIpCisgICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9
IHRydWU7CisKKyAgICAgICAgdGhpcy5lbmREb21VcGRhdGVzKCk7CisgICAgfSwKKworICAgIGNs
ZWFyRWRpdGFibGVSYW5nZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgY2h1
bmtOdW1iZXIgPSAwOyBjaHVua051bWJlciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyArK2No
dW5rTnVtYmVyKQorICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0ucmVh
ZE9ubHkgPSBmYWxzZTsKKyAgICB9LAorCiAgICAgbWFya0FuZFJldmVhbFJhbmdlOiBmdW5jdGlv
bihyYW5nZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9yYW5nZVRvTWFyaykgewpAQCAtMTAx
MCwxMCArMTA1MSwxMCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBfc3BsaXRDaHVua09u
QUxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyKQorICAgIF9zcGxpdENodW5r
T25BTGluZTogZnVuY3Rpb24obGluZU51bWJlciwgY2h1bmtOdW1iZXIsIGNyZWF0ZVN1ZmZpeENo
dW5rKQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVjdGlvbigp
OwotICAgICAgICB2YXIgY2h1bmsgPSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5l
bC5wcm90b3R5cGUuX3NwbGl0Q2h1bmtPbkFMaW5lLmNhbGwodGhpcywgbGluZU51bWJlciwgY2h1
bmtOdW1iZXIpOworICAgICAgICB2YXIgY2h1bmsgPSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNo
dW5rZWRQYW5lbC5wcm90b3R5cGUuX3NwbGl0Q2h1bmtPbkFMaW5lLmNhbGwodGhpcywgbGluZU51
bWJlciwgY2h1bmtOdW1iZXIsIGNyZWF0ZVN1ZmZpeENodW5rKTsKICAgICAgICAgdGhpcy5fcmVz
dG9yZVNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgICAgICByZXR1cm4gY2h1bms7CiAgICAgfSwK
QEAgLTE1NzgsNyArMTYxOSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUgLSAxLCBlbmRDb2x1bW4p
OwogCiAgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX3NldFRleHQob2xkUmFuZ2UsIGxpbmVz
LmpvaW4oIlxuIikpOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExp
bmVzKHRydWUpOwogICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAK
QEAgLTE3NzYsNiArMTgxNyw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rID0g
ZnVuY3Rpb24odGV4dFZpZXdlciwgc3RhcnRMaW5lLCBlbmRMaW5lKQogICAgIHRoaXMubGluZXND
b3VudCA9IGVuZExpbmUgLSBzdGFydExpbmU7CiAKICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNl
OworICAgIHRoaXMuX3JlYWRPbmx5ID0gZmFsc2U7CiAKICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNl
ZExpbmVSb3coKTsKIH0KQEAgLTE4NjMsNiArMTkwNSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpbkNodW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwYXJlbnRFbGVtZW50
ID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0g
dGhpcy5zdGFydExpbmU7IGkgPCB0aGlzLnN0YXJ0TGluZSArIHRoaXMubGluZXNDb3VudDsgKytp
KSB7CiAgICAgICAgICAgICAgICAgdmFyIGxpbmVSb3cgPSB0aGlzLl9jcmVhdGVSb3coaSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFJlYWRPbmx5U3RhdGUobGluZVJvdyk7
CiAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUobGluZVJvdywgdGhp
cy5lbGVtZW50KTsKICAgICAgICAgICAgICAgICB0aGlzLl9leHBhbmRlZExpbmVSb3dzLnB1c2go
bGluZVJvdyk7CiAgICAgICAgICAgICB9CkBAIC0xODg4LDYgKzE5MzEsMzIgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0
Vmlld2VyLmVuZERvbVVwZGF0ZXMoKTsKICAgICB9LAogCisgICAgc2V0IHJlYWRPbmx5KHJlYWRP
bmx5KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3JlYWRPbmx5ID09PSByZWFkT25seSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5Owor
ICAgICAgICB0aGlzLl91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLmVsZW1lbnQpOwor
ICAgICAgICBpZiAodGhpcy5fZXhwYW5kZWRMaW5lUm93cykgeworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLl9leHBhbmRlZExpbmVSb3dzLmxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRSZWFkT25seVN0YXRlKHRoaXMuX2V4cGFuZGVk
TGluZVJvd3NbaV0pOworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCByZWFkT25seSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7CisgICAgfSwKKworICAgIF91cGRh
dGVFbGVtZW50UmVhZE9ubHlTdGF0ZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9yZWFkT25seSkKKyAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
dGV4dC1lZGl0b3ItcmVhZC1vbmx5Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsZW1l
bnQucmVtb3ZlU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVhZC1vbmx5Iik7CisgICAgfSwKKwog
ICAgIGdldCBoZWlnaHQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9leHBhbmRlZExpbmVS
b3dzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0
Vmlld2VyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdl
ci5jc3MKaW5kZXggNTlmMmE0MzAuLmI4NjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcwpAQCAtNDMsNiArNDMsMTEgQEAKICAg
ICAtd2Via2l0LXVzZXItbW9kaWZ5OiByZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5OwogfQogCisu
dGV4dC1lZGl0b3ItcmVhZC1vbmx5IHsKKyAgICAtd2Via2l0LXVzZXItbW9kaWZ5OiByZWFkLW9u
bHk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MCwgMjQwLCAyNDApOworfQorCiAud2Vi
a2l0LWxpbmUtZGVjb3JhdGlvbnMgewogICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgIC13
ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cg==
</data>
<flag name="review"
          id="85391"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>