<?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>182069</bug_id>
          
          <creation_ts>2018-01-24 15:37:04 -0800</creation_ts>
          <short_desc>Web Inspector: Replace isAncestor and isDescendant with native DOM contains method</short_desc>
          <delta_ts>2018-02-06 19:30:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1392809</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2018-01-24 15:37:04 -0800</bug_when>
    <thetext>Instead of traversing the DOM manually we should use Node.prototype.contains.

Utilities.js:
Object.defineProperty(Node.prototype, &quot;isAncestor&quot;, ...
Object.defineProperty(Node.prototype, &quot;isDescendant&quot;, ...
Object.defineProperty(Node.prototype, &quot;isSelfOrAncestor&quot;, ...
Object.defineProperty(Node.prototype, &quot;isSelfOrDescendant&quot;, ...

https://developer.mozilla.org/en-US/docs/Web/API/Node/contains</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392906</commentid>
    <comment_count>1</comment_count>
      <attachid>332224</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-01-24 20:15:52 -0800</bug_when>
    <thetext>Created attachment 332224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393334</commentid>
    <comment_count>2</comment_count>
      <attachid>332224</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2018-01-25 16:02:45 -0800</bug_when>
    <thetext>Comment on attachment 332224
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:994
&gt; -    if (element &amp;&amp; element.isSelfOrAncestor(this.currentFocusElement))
&gt; +    if (element &amp;&amp; element.contains(this.currentFocusElement))

Huh, I didn&apos;t realize element.contains(element) returns true.

element.isAncestor(element) and element.isDescendant(element) ruturn true (thus we have isSelfOr* methods).
We should look be careful replacing isAncestor/isDescendant with contains and look case-by-case that it didn&apos;t break anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394594</commentid>
    <comment_count>3</comment_count>
      <attachid>332224</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-01-30 09:47:33 -0800</bug_when>
    <thetext>Comment on attachment 332224
Patch

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

r=me

Please test manually before landing. in particular, the descendant checks previously null-checked the node argument, but now we are unconditionally calling .contains on the node receiver which could throw an exception if it was null.

&gt; Source/WebInspectorUI/UserInterface/Views/BoxModelDetailsSectionRow.js:308
&gt; +        if (!element.contains(selectionRange.commonAncestorContainer))

This seems unlikely to be nil. Can you add a console assertion?

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:710
&gt; +        if (event.relatedTarget &amp;&amp; this.element.contains(event.relatedTarget)) {

We should always have this.element.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:331
&gt; +        if (nodeUnderMouse &amp;&amp; this.element.contains(nodeUnderMouse))

We should always have this.element.

&gt; Source/WebInspectorUI/UserInterface/Views/EditingSupport.js:284
&gt; +    if (!element.contains(range.commonAncestorContainer))

We already unconditionally call a method on element.

&gt; Source/WebInspectorUI/UserInterface/Views/LogContentView.js:451
&gt; +        if (this._selectedMessages.length &amp;&amp; !this._selectedMessages.some(element =&gt; element.contains(event.target))) {

Ugh, this is not good style in existing code. Sometime, _selectedMessages should either be renamed to _selectedMessageElements, or store a non-Node type to be less ambiguous. This change seems fine, though.

&gt; Source/WebInspectorUI/UserInterface/Views/ShaderProgramTreeElement.js:45
&gt; +        if (this._statusElement.contains(event.target))

this._statusElement should be generated by setting this.status in the constructor.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:55
&gt; +            if (focusedElement &amp;&amp; this.element.contains(focusedElement))

Should always exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394615</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-01-30 10:37:25 -0800</bug_when>
    <thetext>I don&apos;t see this test updated:

LayoutTests/inspector/view/basics.html
50:            InspectorTest.expectThat(child.isDescendantOf(parent), &quot;Child should be a descendant of the parent.&quot;);
59:            InspectorTest.expectThat(grandchild.isDescendantOf(child.parentView), &quot;Grandchild should be a descendant of it&apos;s grandparent.&quot;);
73:            InspectorTest.expectThat(!child.isDescendantOf(parent), &quot;Removed view should not be a descendant of the parent.&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394667</commentid>
    <comment_count>5</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-01-30 12:14:09 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #4)
&gt; I don&apos;t see this test updated:
&gt; 
&gt; LayoutTests/inspector/view/basics.html
&gt; 50:            InspectorTest.expectThat(child.isDescendantOf(parent), &quot;Child
&gt; should be a descendant of the parent.&quot;);
&gt; 59:           
&gt; InspectorTest.expectThat(grandchild.isDescendantOf(child.parentView),
&gt; &quot;Grandchild should be a descendant of it&apos;s grandparent.&quot;);
&gt; 73:            InspectorTest.expectThat(!child.isDescendantOf(parent),
&gt; &quot;Removed view should not be a descendant of the parent.&quot;);
`isDescendantOf` is a function on WI.View, which is unrelated to this change, as it doesn&apos;t even use the DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397043</commentid>
    <comment_count>6</comment_count>
      <attachid>333250</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-02-06 18:36:55 -0800</bug_when>
    <thetext>Created attachment 333250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397069</commentid>
    <comment_count>7</comment_count>
      <attachid>333250</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-06 19:27:05 -0800</bug_when>
    <thetext>Comment on attachment 333250
Patch

Clearing flags on attachment: 333250

Committed r228216: &lt;https://trac.webkit.org/changeset/228216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397070</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-06 19:27:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397071</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-06 19:30:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/37298898&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332224</attachid>
            <date>2018-01-24 20:15:52 -0800</date>
            <delta_ts>2018-02-06 18:36:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182069-20180124201551.patch</filename>
            <type>text/plain</type>
            <size>15164</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQ0NDI5OTY1NGFiZmZiNDc3NmNhOGRmNWFjNmEz
NGYwMDBiMWJmNGIuLjU5ZGZmZWVmYmRmYjhlY2ZmYTg3ZGNkNGFiNGQ0ZTgyNWZjMTg4NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAxLTI0ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlcGxhY2UgaXNBbmNlc3RvciBhbmQgaXNEZXNjZW5kYW50IHdpdGggbmF0aXZlIERPTSBj
b250YWlucyBtZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MjA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6CisgICAgICAgIChXSS5yZXN0b3Jl
Rm9jdXNGcm9tRWxlbWVudCk6CisgICAgICAgIChXSS5fbW91c2VEb3duKToKKyAgICAgICAgKFdJ
Ll9mb2N1c2VkQ29udGVudEJyb3dzZXIpOgorICAgICAgICAoV0kuX2ZvY3VzZWRDb250ZW50Vmll
dyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAg
KE5vZGUucHJvdG90eXBlLnRyYXZlcnNlTmV4dE5vZGUpOgorICAgICAgICAoTm9kZS5wcm90b3R5
cGUuaXNBbmNlc3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChOb2RlLnByb3RvdHlwZS5pc0Rlc2Nl
bmRhbnQpOiBEZWxldGVkLgorICAgICAgICAoTm9kZS5wcm90b3R5cGUuaXNTZWxmT3JBbmNlc3Rv
cik6IERlbGV0ZWQuCisgICAgICAgIChOb2RlLnByb3RvdHlwZS5pc1NlbGZPckRlc2NlbmRhbnQp
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxz
U2VjdGlvblJvdy5qczoKKyAgICAgICAgKFdJLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJv
dG90eXBlLl9oYW5kbGVLZXlEb3duKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzOgorICAgICAgICAoV0kuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24ucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RvclBhc3RlKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJl
ZU91dGxpbmUucHJvdG90eXBlLl9vbm1vdXNlb3V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzOgorICAgICAgICAoV0kuRGV0YWlsc1NlY3Rpb24ucHJv
dG90eXBlLl9oZWFkZXJFbGVtZW50Q2xpY2tlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9FZGl0aW5nU3VwcG9ydC5qczoKKyAgICAgICAgKFdJLmluY3JlbWVudEVsZW1lbnRWYWx1
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdJLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1lbnVFdmVu
dCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1l
bnQuanM6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQucHJvdG90eXBlLnNl
bGVjdE9uTW91c2VEb3duKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvZnRDb250
ZXh0TWVudS5qczoKKyAgICAgICAgKFdJLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUuX21lbnVJ
dGVtTW91c2VPdXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRD
U1NTdHlsZURlY2xhcmF0aW9uRWRpdG9yLmpzOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRDU1NT
dHlsZURlY2xhcmF0aW9uRWRpdG9yLnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qczoKKyAgICAgICAgKFdJLlRhYkJhci5wcm90
b3R5cGUuaW5zZXJ0VGFiQmFySXRlbSk6CisKIDIwMTgtMDEtMjIgIE5pa2l0YSBWYXNpbHlldiAg
PG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzIFJl
ZGVzaWduOiBkYXRhIGNvcnJ1cHRpb24gd2hlbiB1cGRhdGluZyB2YWx1ZXMgcXVpY2tseQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4
IDZkZjFjMDc3MGRhMWFkYmI1YzBlZDY2MTAyMTI0ZjAxNWM0MzhiOWUuLmQzYTI5OGNiNjBhM2E3
MjFhMGQ0ZmE4MzMyYTRmYjQzNTViNjljYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTk5MSw3ICs5OTEsNyBAQCBXSS5pbmRl
bnRTdHJpbmcgPSBmdW5jdGlvbigpCiAKIFdJLnJlc3RvcmVGb2N1c0Zyb21FbGVtZW50ID0gZnVu
Y3Rpb24oZWxlbWVudCkKIHsKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmlzU2VsZk9yQW5j
ZXN0b3IodGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50KSkKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVt
ZW50LmNvbnRhaW5zKHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCkpCiAgICAgICAgIHRoaXMucHJl
dmlvdXNGb2N1c0VsZW1lbnQuZm9jdXMoKTsKIH07CiAKQEAgLTE0NDYsNyArMTQ0Niw3IEBAIFdJ
Ll93aW5kb3dLZXlVcCA9IGZ1bmN0aW9uKGV2ZW50KQogCiBXSS5fbW91c2VEb3duID0gZnVuY3Rp
b24oZXZlbnQpCiB7Ci0gICAgaWYgKHRoaXMudG9vbGJhci5lbGVtZW50LmlzU2VsZk9yQW5jZXN0
b3IoZXZlbnQudGFyZ2V0KSkKKyAgICBpZiAodGhpcy50b29sYmFyLmVsZW1lbnQuY29udGFpbnMo
ZXZlbnQudGFyZ2V0KSkKICAgICAgICAgdGhpcy5fdG9vbGJhck1vdXNlRG93bihldmVudCk7CiB9
OwogCkBAIC0xODYzLDE1ICsxODYzLDE1IEBAIFdJLl9mb2N1c2VkQ29udGVudEJyb3dzZXIgPSBm
dW5jdGlvbigpCiAgICAgICAgICAgICByZXR1cm4gY29udGVudEJyb3dzZXJFbGVtZW50Ll9fdmll
dzsKICAgICB9CiAKLSAgICBpZiAodGhpcy50YWJCcm93c2VyLmVsZW1lbnQuaXNTZWxmT3JBbmNl
c3Rvcih0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT09IGRvY3VtZW50LmJvZHkpIHsKKyAgICBpZiAodGhpcy50YWJCcm93c2VyLmVsZW1lbnQuY29u
dGFpbnModGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50KSB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50
ID09PSBkb2N1bWVudC5ib2R5KSB7CiAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMu
dGFiQnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3OwogICAgICAgICBpZiAodGFiQ29udGVu
dFZpZXcuY29udGVudEJyb3dzZXIpCiAgICAgICAgICAgICByZXR1cm4gdGFiQ29udGVudFZpZXcu
Y29udGVudEJyb3dzZXI7CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAgIGlmICh0
aGlzLmNvbnNvbGVEcmF3ZXIuZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKHRoaXMuY3VycmVudEZv
Y3VzRWxlbWVudCkKLSAgICAgICAgfHwgKFdJLmlzU2hvd2luZ1NwbGl0Q29uc29sZSgpICYmIHRo
aXMucXVpY2tDb25zb2xlLmVsZW1lbnQuaXNTZWxmT3JBbmNlc3Rvcih0aGlzLmN1cnJlbnRGb2N1
c0VsZW1lbnQpKSkKKyAgICBpZiAodGhpcy5jb25zb2xlRHJhd2VyLmVsZW1lbnQuY29udGFpbnMo
dGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50KQorICAgICAgICB8fCAoV0kuaXNTaG93aW5nU3BsaXRD
b25zb2xlKCkgJiYgdGhpcy5xdWlja0NvbnNvbGUuZWxlbWVudC5jb250YWlucyh0aGlzLmN1cnJl
bnRGb2N1c0VsZW1lbnQpKSkKICAgICAgICAgcmV0dXJuIHRoaXMuY29uc29sZURyYXdlcjsKIAog
ICAgIHJldHVybiBudWxsOwpAQCAtMTg3OSwxNSArMTg3OSwxNSBAQCBXSS5fZm9jdXNlZENvbnRl
bnRCcm93c2VyID0gZnVuY3Rpb24oKQogCiBXSS5fZm9jdXNlZENvbnRlbnRWaWV3ID0gZnVuY3Rp
b24oKQogewotICAgIGlmICh0aGlzLnRhYkJyb3dzZXIuZWxlbWVudC5pc1NlbGZPckFuY2VzdG9y
KHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCkgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0g
ZG9jdW1lbnQuYm9keSkgeworICAgIGlmICh0aGlzLnRhYkJyb3dzZXIuZWxlbWVudC5jb250YWlu
cyh0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09
IGRvY3VtZW50LmJvZHkpIHsKICAgICAgICAgdmFyIHRhYkNvbnRlbnRWaWV3ID0gdGhpcy50YWJC
cm93c2VyLnNlbGVjdGVkVGFiQ29udGVudFZpZXc7CiAgICAgICAgIGlmICh0YWJDb250ZW50Vmll
dy5jb250ZW50QnJvd3NlcikKICAgICAgICAgICAgIHJldHVybiB0YWJDb250ZW50Vmlldy5jb250
ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiB0YWJDb250ZW50
VmlldzsKICAgICB9CiAKLSAgICBpZiAodGhpcy5jb25zb2xlRHJhd2VyLmVsZW1lbnQuaXNTZWxm
T3JBbmNlc3Rvcih0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQpCi0gICAgICAgIHx8IChXSS5pc1No
b3dpbmdTcGxpdENvbnNvbGUoKSAmJiB0aGlzLnF1aWNrQ29uc29sZS5lbGVtZW50LmlzU2VsZk9y
QW5jZXN0b3IodGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50KSkpCisgICAgaWYgKHRoaXMuY29uc29s
ZURyYXdlci5lbGVtZW50LmNvbnRhaW5zKHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCkKKyAgICAg
ICAgfHwgKFdJLmlzU2hvd2luZ1NwbGl0Q29uc29sZSgpICYmIHRoaXMucXVpY2tDb25zb2xlLmVs
ZW1lbnQuY29udGFpbnModGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50KSkpCiAgICAgICAgIHJldHVy
biB0aGlzLmNvbnNvbGVEcmF3ZXIuY3VycmVudENvbnRlbnRWaWV3OwogCiAgICAgcmV0dXJuIG51
bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
VXRpbGl0aWVzLmpzCmluZGV4IGQxNzQwMmZmNmM0OWQyY2Q2MDNlMDkwMmFmMTAyMzQ0MjhlNjdi
M2EuLmNlNWY0NDFkN2EzM2JjNjk5N2NjZWI4NDI3M2Q2ZWRjYThiMzE0MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpz
CkBAIC0xNzQsNTAgKzE3NCw2IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlw
ZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUiLAogICAgIH0KIH0pOwogCi1PYmpl
Y3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJpc0FuY2VzdG9yIiwKLXsKLSAgICB2
YWx1ZShub2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKLSAg
ICAgICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7Ci0gICAgICAgICAgICBpZiAodGhpcyA9PT0gY3Vy
cmVudE5vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBjdXJy
ZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnBy
b3RvdHlwZSwgImlzRGVzY2VuZGFudCIsCi17Ci0gICAgdmFsdWUoZGVzY2VuZGFudCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhIWRlc2NlbmRhbnQgJiYgZGVzY2VuZGFudC5pc0FuY2VzdG9yKHRo
aXMpOwotICAgIH0KLX0pOwotCi0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlw
ZSwgImlzU2VsZk9yQW5jZXN0b3IiLAotewotICAgIHZhbHVlKG5vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gISFub2RlICYmIChub2RlID09PSB0aGlzIHx8IHRoaXMuaXNBbmNlc3Rvcihub2Rl
KSk7Ci0gICAgfQotfSk7Ci0KLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBl
LCAiaXNTZWxmT3JEZXNjZW5kYW50IiwKLXsKLSAgICB2YWx1ZShub2RlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEhbm9kZSAmJiAobm9kZSA9PT0gdGhpcyB8fCB0aGlzLmlzRGVzY2VuZGFudChu
b2RlKSk7Ci0gICAgfQotfSk7Ci0KIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlw
ZSwgInRyYXZlcnNlTmV4dE5vZGUiLAogewogICAgIHZhbHVlKHN0YXlXaXRoaW4pCkBAIC00MDgs
NyArMzY0LDcgQEAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCAiaXNJ
bnNlcnRpb25DYXJldEluc2lkZSIsCiAgICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQg
fHwgIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAg
ICAgIHJldHVybiBzZWxlY3Rpb25SYW5nZS5zdGFydENvbnRhaW5lciA9PT0gdGhpcyB8fCBzZWxl
Y3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5pc0Rlc2NlbmRhbnQodGhpcyk7CisgICAgICAgIHJl
dHVybiBzZWxlY3Rpb25SYW5nZS5zdGFydENvbnRhaW5lciA9PT0gdGhpcyB8fCB0aGlzLmNvbnRh
aW5zKHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29udGFpbmVyKTsKICAgICB9CiB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxE
ZXRhaWxzU2VjdGlvblJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuanMKaW5kZXggYjEyNjFmMjE4YjQ1Nzll
N2NjZjg0ZjJlNjMxM2NiZmRiOTJkYjM5MS4uZjQ5YjYwMWZlZTg5ZDM2YjFiYTAyYjA4NjczZjI2
ZDk0ODY2YzU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93Lmpz
CkBAIC0zMDUsNyArMzA1LDcgQEAgV0kuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdyA9IGNsYXNz
IEJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cgZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB2YXIgc2VsZWN0aW9uUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFu
Z2VBdCgwKTsKLSAgICAgICAgaWYgKCFzZWxlY3Rpb25SYW5nZS5jb21tb25BbmNlc3RvckNvbnRh
aW5lci5pc1NlbGZPckRlc2NlbmRhbnQoZWxlbWVudCkpCisgICAgICAgIGlmICghZWxlbWVudC5j
b250YWlucyhzZWxlY3Rpb25SYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcikpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBlbGVtZW50LnRleHRD
b250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwppbmRl
eCA2NmY3Y2M1YTlhMmZkNjEyY2JiZmEzYTEwNzE5NGU2OWM5ZWU5YTNhLi5kYTNmYzk3ZTdjZTdk
NzAyY2U5Y2RkOWUxZmM1ZjZiYWZmMzFiNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5qcwpAQCAtNzA3LDcgKzcwNyw3IEBAIFdJLkNTU1N0eWxlRGVjbGFy
YXRpb25TZWN0aW9uID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gZXh0ZW5kcyBX
SS5PYmplCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZXZl
bnQucmVsYXRlZFRhcmdldCAmJiBldmVudC5yZWxhdGVkVGFyZ2V0LmlzRGVzY2VuZGFudCh0aGlz
LmVsZW1lbnQpKSB7CisgICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ICYmIHRoaXMuZWxl
bWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkgewogICAgICAgICAgICAgdGhpcy5f
ZWRpdG9yQWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCA4YjFiNzZiY2Y4MTFmNGNhNGZmMTgxNWMzYzBk
ZDVlMWI1MzkzOTI3Li5iNjI3ZTBjZDk0ZDIyMGJiZDA3Yzc2NjhkNDU1MGJhZjA5MWQyM2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMzI4LDcgKzMyOCw3IEBAIFdJLkRPTVRyZWVPdXRs
aW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5UcmVlT3V0bGluZQogICAgIF9v
bm1vdXNlb3V0KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGVVbmRlck1vdXNlID0gZG9j
dW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwotICAgICAg
ICBpZiAobm9kZVVuZGVyTW91c2UgJiYgbm9kZVVuZGVyTW91c2UuaXNEZXNjZW5kYW50KHRoaXMu
ZWxlbWVudCkpCisgICAgICAgIGlmIChub2RlVW5kZXJNb3VzZSAmJiB0aGlzLmVsZW1lbnQuY29u
dGFpbnMobm9kZVVuZGVyTW91c2UpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
ICh0aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCmlu
ZGV4IDMwYWExM2U4NmI5NzNhNjRjZDYwZGY0M2NlMmQ5ZjhlODRmNDk1ZjEuLmFhM2IxOGY3ODk2
OGJiOWM0ZWIzYWQ1ZjgwMDg3NDYwMGE0MjEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCkBA
IC0xMzksNyArMTM5LDcgQEAgV0kuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRhaWxzU2VjdGlv
biBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2hlYWRlckVsZW1lbnRDbGlja2VkKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQodGhpcy5f
b3B0aW9uc0VsZW1lbnQpKQorICAgICAgICBpZiAodGhpcy5fb3B0aW9uc0VsZW1lbnQgJiYgdGhp
cy5fb3B0aW9uc0VsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICB2YXIgY29sbGFwc2VkID0gdGhpcy5jb2xsYXBzZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3Vw
cG9ydC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRp
bmdTdXBwb3J0LmpzCmluZGV4IDk1MTBiODk4YTI5ZjQ4ZmFiM2Y3YTFlYzE5ZGRiYTRkYTM2MjFl
YWYuLmM3ODcxOWFiYzFiNDEyMzVmNTg4MmFiYzc1MDczOGRiMmI1MWFiMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRp
bmdTdXBwb3J0LmpzCkBAIC0yODEsNyArMjgxLDcgQEAgV0kuaW5jcmVtZW50RWxlbWVudFZhbHVl
ID0gZnVuY3Rpb24oZWxlbWVudCwgZGVsdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGxldCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgIGlmICghcmFuZ2UuY29t
bW9uQW5jZXN0b3JDb250YWluZXIuaXNTZWxmT3JEZXNjZW5kYW50KGVsZW1lbnQpKQorICAgIGlm
ICghZWxlbWVudC5jb250YWlucyhyYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGxldCB3b3JkUmFuZ2UgPSByYW5nZS5zdGFydENvbnRh
aW5lci5yYW5nZU9mV29yZChyYW5nZS5zdGFydE9mZnNldCwgV0kuRWRpdGluZ1N1cHBvcnQuU3R5
bGVWYWx1ZURlbGltaXRlcnMsIGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwppbmRleCA0
YTI3NjVkNmVjOWRlYjc3MmNhYzE3YmZhN2YxZWQ5NWE3NjJiYWVjLi4zYzg2ZjllZTM1Mzg4YmY3
MDIzMTc2ZWI5YTU5YjgxODhhZjhlMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtNDQ4
LDcgKzQ0OCw3IEBAIFdJLkxvZ0NvbnRlbnRWaWV3ID0gY2xhc3MgTG9nQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhlcmUg
YXJlIHNlbGVjdGVkIG1lc3NhZ2VzLCBvbmx5IGNsZWFyIHRoYXQgc2VsZWN0aW9uIGlmIHRoZSBy
aWdodC1jbGljawogICAgICAgICAvLyBpcyBub3Qgb24gdGhlIGVsZW1lbnQgb3IgZGVzY2VuZGFu
dHMgb2YgdGhlIHNlbGVjdGVkIG1lc3NhZ2VzLgotICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRN
ZXNzYWdlcy5sZW5ndGggJiYgIXRoaXMuX3NlbGVjdGVkTWVzc2FnZXMuc29tZShlbGVtZW50ID0+
IGV2ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQoZWxlbWVudCkpKSB7CisgICAgICAgIGlm
ICh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCAmJiAhdGhpcy5fc2VsZWN0ZWRNZXNzYWdl
cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSkgewogICAg
ICAgICAgICAgdGhpcy5fY2xlYXJNZXNzYWdlc1NlbGVjdGlvbigpOwogICAgICAgICAgICAgdGhp
cy5fbW91c2Vkb3duKGV2ZW50KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3Jh
bVRyZWVFbGVtZW50LmpzCmluZGV4IGRjOWUwOGI4N2Y2ZTlhZDRlOTcwZDAzZWQ2M2UyNTQ0ZjAz
Y2I2NmMuLjc5ZDRkMGYwN2Q2YjFjNDBiNGJlNDZjYzE0YzRkYjIwNTU5ODU0NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dy
YW1UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMKQEAgLTQyLDcgKzQyLDcgQEAgV0ku
U2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50ID0gY2xhc3MgU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50
IGV4dGVuZHMgV0kuR2VuZXJhbFQKIAogICAgIHNlbGVjdE9uTW91c2VEb3duKGV2ZW50KQogICAg
IHsKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQodGhpcy5fc3Rh
dHVzRWxlbWVudCkpCisgICAgICAgIGlmICh0aGlzLl9zdGF0dXNFbGVtZW50LmNvbnRhaW5zKGV2
ZW50LnRhcmdldCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgc3VwZXIuc2VsZWN0
T25Nb3VzZURvd24oZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU29mdENvbnRleHRNZW51LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU29mdENvbnRleHRNZW51LmpzCmluZGV4IGI4M2YwOWU1
ZWUyNDU4NjgxODY3NGJiNzBiNTU4MjBmN2ZjYmRlMDkuLjY0YzVlY2JmYjRkMGY2MGFhNDllYjY3
YWJhM2RjNjE5YzQxMGU1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvZnRDb250ZXh0TWVudS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb2Z0Q29udGV4dE1lbnUuanMKQEAgLTIxNiw3ICsy
MTYsNyBAQCBXSS5Tb2Z0Q29udGV4dE1lbnUgPSBjbGFzcyBTb2Z0Q29udGV4dE1lbnUKICAgICBf
bWVudUl0ZW1Nb3VzZU91dChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnN0IHNob3VsZFVuaGln
aGxpZ2h0ID0gIXRoaXMuX3N1Yk1lbnUgfHwgIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwKLSAgICAg
ICAgICAgIHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKGV2ZW50LnJl
bGF0ZWRUYXJnZXQpIHx8CisgICAgICAgICAgICB0aGlzLl9jb250ZXh0TWVudUVsZW1lbnQuY29u
dGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkgfHwKICAgICAgICAgICAgIGV2ZW50LnJlbGF0ZWRU
YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzb2Z0LWNvbnRleHQtbWVudS1nbGFzcy1wYW5lIik7
CiAKICAgICAgICAgaWYgKHNob3VsZFVuaGlnaGxpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRDU1NTdHlsZURlY2xh
cmF0aW9uRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRDU1NTdHlsZURlY2xhcmF0aW9uRWRpdG9yLmpzCmluZGV4IDQ4YmNiZmFj
NGE3MzUwYzE4NDkxNTIzYjZkNGEwOTdhMmUxZWYzYTQuLjdlOGVjNzkzZTI0YTcyNGZlY2VmMzFi
ZTg5MGFhZDkzNTc2MDQ1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvbkVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dENTU1N0eWxlRGVjbGFyYXRpb25FZGl0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgV0kuU3ByZWFk
c2hlZXRDU1NTdHlsZURlY2xhcmF0aW9uRWRpdG9yID0gY2xhc3MgU3ByZWFkc2hlZXRDU1NTdHls
ZURlY2xhcmF0aW9uRWQKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZv
Y3VzIiwgKCkgPT4geyB0aGlzLmZvY3VzZWQgPSB0cnVlOyB9LCB0cnVlKTsKICAgICAgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCAoZXZlbnQpID0+IHsKICAgICAgICAg
ICAgIGxldCBmb2N1c2VkRWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7Ci0gICAgICAgICAg
ICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgZm9jdXNlZEVsZW1lbnQuaXNEZXNjZW5kYW50KHRoaXMu
ZWxlbWVudCkpCisgICAgICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgdGhpcy5lbGVtZW50
LmNvbnRhaW5zKGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IDQyY2RmODZhNjg1NTMw
ZWIyNTk4NTNiNGMxZDE5NWVmOTcwYmFmNjMuLjgxN2UzY2Y0NDhmNjc3YWQ5YzM4ODI0YjRlNjNh
NDMwYjQ3MjBlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCYXIuanMKQEAgLTEwNiw3ICsxMDYsNyBAQCBXSS5UYWJCYXIgPSBjbGFz
cyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMu
X3RhYkJhckl0ZW1zW2luZGV4ICsgMV07CiAgICAgICAgIGxldCBuZXh0U2libGluZ0VsZW1lbnQg
PSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiB0aGlzLl90YWJCYXJJdGVtcy5s
YXN0VmFsdWUuZWxlbWVudDsKIAotICAgICAgICBpZiAodGhpcy5lbGVtZW50LmlzQW5jZXN0b3Io
bmV4dFNpYmxpbmdFbGVtZW50KSkKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb250YWlucyhu
ZXh0U2libGluZ0VsZW1lbnQpKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9y
ZSh0YWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJCYXJJdGVtLmVsZW1lbnQp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333250</attachid>
            <date>2018-02-06 18:36:55 -0800</date>
            <delta_ts>2018-02-06 19:27:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182069-20180206183654.patch</filename>
            <type>text/plain</type>
            <size>15295</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRhMTRkZmE4NDA0MmI0ZjBhNTdkMzVmZTkzNjAz
M2U3Zjg1OTY4MGUuLmJlNGEwYjg5YTQ4Yjc0ZGE4ZjI0NTZiODM4NDlmOGJkZWI4MDM1YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAyLTA2ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlcGxhY2UgaXNBbmNlc3RvciBhbmQgaXNEZXNjZW5kYW50IHdpdGggbmF0aXZlIERPTSBj
b250YWlucyBtZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MjA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLnJlc3RvcmVGb2N1
c0Zyb21FbGVtZW50KToKKyAgICAgICAgKFdJLl9tb3VzZURvd24pOgorICAgICAgICAoV0kuX2Zv
Y3VzZWRDb250ZW50QnJvd3Nlcik6CisgICAgICAgIChXSS5fZm9jdXNlZENvbnRlbnRWaWV3KToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzOgorICAgICAgICAoTm9k
ZS5wcm90b3R5cGUudHJhdmVyc2VOZXh0Tm9kZSk6CisgICAgICAgIChOb2RlLnByb3RvdHlwZS5p
c0FuY2VzdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKE5vZGUucHJvdG90eXBlLmlzRGVzY2VuZGFu
dCk6IERlbGV0ZWQuCisgICAgICAgIChOb2RlLnByb3RvdHlwZS5pc1NlbGZPckFuY2VzdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKE5vZGUucHJvdG90eXBlLmlzU2VsZk9yRGVzY2VuZGFudCk6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0
aW9uUm93LmpzOgorICAgICAgICAoV0kuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5
cGUuX2hhbmRsZUtleURvd24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZWNsYXJhdGlvblNlY3Rpb24uanM6CisgICAgICAgIChXSS5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5wcm90b3R5cGUuX2hhbmRsZVNlbGVjdG9yUGFzdGUpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXSS5ET01UcmVlT3V0
bGluZS5wcm90b3R5cGUuX29ubW91c2VvdXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRGV0YWlsc1NlY3Rpb24uanM6CisgICAgICAgIChXSS5EZXRhaWxzU2VjdGlvbi5wcm90b3R5
cGUuX2hlYWRlckVsZW1lbnRDbGlja2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0VkaXRpbmdTdXBwb3J0LmpzOgorICAgICAgICAoV0kuaW5jcmVtZW50RWxlbWVudFZhbHVlKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzOgorICAgICAg
ICAoV0kuTG9nQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1UcmVlRWxlbWVudC5q
czoKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0
T25Nb3VzZURvd24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU29mdENvbnRleHRN
ZW51LmpzOgorICAgICAgICAoV0kuU29mdENvbnRleHRNZW51LnByb3RvdHlwZS5fbWVudUl0ZW1N
b3VzZU91dCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldENTU1N0
eWxlRGVjbGFyYXRpb25FZGl0b3IuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldENTU1N0eWxl
RGVjbGFyYXRpb25FZGl0b3IucHJvdG90eXBlLmluaXRpYWxMYXlvdXQpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlw
ZS5pbnNlcnRUYWJCYXJJdGVtKToKKwogMjAxOC0wMi0wMiAgRGV2aW4gUm91c3NvICA8d2Via2l0
QGRldmlucm91c3NvLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdHlsZXMgUmVkZXNp
Z246IFBhc3RpbmcgbXVsdGlwbGUgcHJvcGVydGllcyBzaG91bGQgY3JlYXRlIHByb3BlcnRpZXMg
aW5zdGVhZCBvZiBhIGJhZCBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDZiODYwMTRkNWYwNDU0MDRkYzQ4NzNkNTdk
YmIyNjJkMzM1YzYzZjkuLmQwN2I5YmVkYzE3YmMxYjRlNGFmYmJmZWUyNTlhNmRlODJhMDVjMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKQEAgLTk5Nyw3ICs5OTcsNyBAQCBXSS5pbmRlbnRTdHJpbmcgPSBmdW5jdGlvbigpCiAKIFdJ
LnJlc3RvcmVGb2N1c0Zyb21FbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkKIHsKLSAgICBpZiAo
ZWxlbWVudCAmJiBlbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IodGhpcy5jdXJyZW50Rm9jdXNFbGVt
ZW50KSkKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbnRhaW5zKHRoaXMuY3VycmVudEZv
Y3VzRWxlbWVudCkpCiAgICAgICAgIHRoaXMucHJldmlvdXNGb2N1c0VsZW1lbnQuZm9jdXMoKTsK
IH07CiAKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIFdJLl93aW5kb3dLZXlVcCA9IGZ1bmN0aW9uKGV2
ZW50KQogCiBXSS5fbW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgaWYgKHRoaXMu
dG9vbGJhci5lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IoZXZlbnQudGFyZ2V0KSkKKyAgICBpZiAo
dGhpcy50b29sYmFyLmVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkKICAgICAgICAgdGhp
cy5fdG9vbGJhck1vdXNlRG93bihldmVudCk7CiB9OwogCkBAIC0xODczLDE1ICsxODczLDE1IEBA
IFdJLl9mb2N1c2VkQ29udGVudEJyb3dzZXIgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICByZXR1
cm4gY29udGVudEJyb3dzZXJFbGVtZW50Ll9fdmlldzsKICAgICB9CiAKLSAgICBpZiAodGhpcy50
YWJCcm93c2VyLmVsZW1lbnQuaXNTZWxmT3JBbmNlc3Rvcih0aGlzLmN1cnJlbnRGb2N1c0VsZW1l
bnQpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmJvZHkpIHsKKyAgICBp
ZiAodGhpcy50YWJCcm93c2VyLmVsZW1lbnQuY29udGFpbnModGhpcy5jdXJyZW50Rm9jdXNFbGVt
ZW50KSB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7CiAgICAg
ICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMudGFiQnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRl
bnRWaWV3OwogICAgICAgICBpZiAodGFiQ29udGVudFZpZXcuY29udGVudEJyb3dzZXIpCiAgICAg
ICAgICAgICByZXR1cm4gdGFiQ29udGVudFZpZXcuY29udGVudEJyb3dzZXI7CiAgICAgICAgIHJl
dHVybiBudWxsOwogICAgIH0KIAotICAgIGlmICh0aGlzLmNvbnNvbGVEcmF3ZXIuZWxlbWVudC5p
c1NlbGZPckFuY2VzdG9yKHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCkKLSAgICAgICAgfHwgKFdJ
LmlzU2hvd2luZ1NwbGl0Q29uc29sZSgpICYmIHRoaXMucXVpY2tDb25zb2xlLmVsZW1lbnQuaXNT
ZWxmT3JBbmNlc3Rvcih0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQpKSkKKyAgICBpZiAodGhpcy5j
b25zb2xlRHJhd2VyLmVsZW1lbnQuY29udGFpbnModGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50KQor
ICAgICAgICB8fCAoV0kuaXNTaG93aW5nU3BsaXRDb25zb2xlKCkgJiYgdGhpcy5xdWlja0NvbnNv
bGUuZWxlbWVudC5jb250YWlucyh0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQpKSkKICAgICAgICAg
cmV0dXJuIHRoaXMuY29uc29sZURyYXdlcjsKIAogICAgIHJldHVybiBudWxsOwpAQCAtMTg4OSwx
NSArMTg4OSwxNSBAQCBXSS5fZm9jdXNlZENvbnRlbnRCcm93c2VyID0gZnVuY3Rpb24oKQogCiBX
SS5fZm9jdXNlZENvbnRlbnRWaWV3ID0gZnVuY3Rpb24oKQogewotICAgIGlmICh0aGlzLnRhYkJy
b3dzZXIuZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCkg
fHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYm9keSkgeworICAgIGlmICh0
aGlzLnRhYkJyb3dzZXIuZWxlbWVudC5jb250YWlucyh0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQp
IHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmJvZHkpIHsKICAgICAgICAg
dmFyIHRhYkNvbnRlbnRWaWV3ID0gdGhpcy50YWJCcm93c2VyLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXc7CiAgICAgICAgIGlmICh0YWJDb250ZW50Vmlldy5jb250ZW50QnJvd3NlcikKICAgICAgICAg
ICAgIHJldHVybiB0YWJDb250ZW50Vmlldy5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZp
ZXc7CiAgICAgICAgIHJldHVybiB0YWJDb250ZW50VmlldzsKICAgICB9CiAKLSAgICBpZiAodGhp
cy5jb25zb2xlRHJhd2VyLmVsZW1lbnQuaXNTZWxmT3JBbmNlc3Rvcih0aGlzLmN1cnJlbnRGb2N1
c0VsZW1lbnQpCi0gICAgICAgIHx8IChXSS5pc1Nob3dpbmdTcGxpdENvbnNvbGUoKSAmJiB0aGlz
LnF1aWNrQ29uc29sZS5lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IodGhpcy5jdXJyZW50Rm9jdXNF
bGVtZW50KSkpCisgICAgaWYgKHRoaXMuY29uc29sZURyYXdlci5lbGVtZW50LmNvbnRhaW5zKHRo
aXMuY3VycmVudEZvY3VzRWxlbWVudCkKKyAgICAgICAgfHwgKFdJLmlzU2hvd2luZ1NwbGl0Q29u
c29sZSgpICYmIHRoaXMucXVpY2tDb25zb2xlLmVsZW1lbnQuY29udGFpbnModGhpcy5jdXJyZW50
Rm9jdXNFbGVtZW50KSkpCiAgICAgICAgIHJldHVybiB0aGlzLmNvbnNvbGVEcmF3ZXIuY3VycmVu
dENvbnRlbnRWaWV3OwogCiAgICAgcmV0dXJuIG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IDY5MWRkOGVi
ZjZiYzYxNWRiMDJmOTRhYWVhODQxNThlYmNiNzhmYjkuLjBhODJlNmE4NjQ4N2YwMDU4M2EzOWQz
NzA4MzI5NGE3OGZmOWQxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC0xNjAsNTAgKzE2MCw2IEBAIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRo
Tm9kZU5hbWUiLAogICAgIH0KIH0pOwogCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90
b3R5cGUsICJpc0FuY2VzdG9yIiwKLXsKLSAgICB2YWx1ZShub2RlKQotICAgIHsKLSAgICAgICAg
aWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciBjdXJy
ZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7
Ci0gICAgICAgICAgICBpZiAodGhpcyA9PT0gY3VycmVudE5vZGUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVu
dE5vZGU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfSk7Ci0K
LU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgImlzRGVzY2VuZGFudCIsCi17
Ci0gICAgdmFsdWUoZGVzY2VuZGFudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhIWRlc2NlbmRh
bnQgJiYgZGVzY2VuZGFudC5pc0FuY2VzdG9yKHRoaXMpOwotICAgIH0KLX0pOwotCi0KLU9iamVj
dC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgImlzU2VsZk9yQW5jZXN0b3IiLAotewot
ICAgIHZhbHVlKG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gISFub2RlICYmIChub2RlID09
PSB0aGlzIHx8IHRoaXMuaXNBbmNlc3Rvcihub2RlKSk7Ci0gICAgfQotfSk7Ci0KLQotT2JqZWN0
LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiaXNTZWxmT3JEZXNjZW5kYW50IiwKLXsK
LSAgICB2YWx1ZShub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhbm9kZSAmJiAobm9kZSA9
PT0gdGhpcyB8fCB0aGlzLmlzRGVzY2VuZGFudChub2RlKSk7Ci0gICAgfQotfSk7Ci0KIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZlcnNlTmV4dE5vZGUiLAogewog
ICAgIHZhbHVlKHN0YXlXaXRoaW4pCkBAIC0zOTQsNyArMzUwLDcgQEAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCAiaXNJbnNlcnRpb25DYXJldEluc2lkZSIsCiAgICAg
ICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQgfHwgIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0g
c2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAgICAgIHJldHVybiBzZWxlY3Rpb25SYW5nZS5z
dGFydENvbnRhaW5lciA9PT0gdGhpcyB8fCBzZWxlY3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5p
c0Rlc2NlbmRhbnQodGhpcyk7CisgICAgICAgIHJldHVybiBzZWxlY3Rpb25SYW5nZS5zdGFydENv
bnRhaW5lciA9PT0gdGhpcyB8fCB0aGlzLmNvbnRhaW5zKHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29u
dGFpbmVyKTsKICAgICB9CiB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3cuanMKaW5kZXggYjEyNjFmMjE4YjQ1NzllN2NjZjg0ZjJlNjMxM2NiZmRiOTJkYjM5MS4u
MGE2ZGNjMTViNTM0NDcyMjU1NzhmN2Y0MTllZGU4MTI3OTczZDMyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzCkBAIC0zMDUsNyArMzA1LDggQEAgV0kuQm94
TW9kZWxEZXRhaWxzU2VjdGlvblJvdyA9IGNsYXNzIEJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cg
ZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgc2Vs
ZWN0aW9uUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKLSAgICAgICAgaWYgKCFzZWxl
Y3Rpb25SYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lci5pc1NlbGZPckRlc2NlbmRhbnQoZWxl
bWVudCkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGlvblJhbmdlLCAiV2Ugc2hvdWxk
IGhhdmUgYSByYW5nZSBpZiB3ZSBhcmUgaGFuZGxpbmcgYSBrZXkgZG93biBldmVudCIpOworICAg
ICAgICBpZiAoIWVsZW1lbnQuY29udGFpbnMoc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JD
b250YWluZXIpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBvcmlnaW5hbFZh
bHVlID0gZWxlbWVudC50ZXh0Q29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMKaW5kZXggNjZmN2NjNWE5YTJmZDYxMmNiYmZhM2ExMDcxOTRlNjljOWVl
OWEzYS4uZGEzZmM5N2U3Y2U3ZDcwMmNlOWNkZDllMWZjNWY2YmFmZjMxYjUzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTcwNyw3ICs3MDcsNyBA
QCBXSS5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uIGV4dGVuZHMgV0kuT2JqZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgJiYgZXZlbnQucmVsYXRlZFRhcmdl
dC5pc0Rlc2NlbmRhbnQodGhpcy5lbGVtZW50KSkgeworICAgICAgICBpZiAoZXZlbnQucmVsYXRl
ZFRhcmdldCAmJiB0aGlzLmVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHsK
ICAgICAgICAgICAgIHRoaXMuX2VkaXRvckFjdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICB0aGlz
LmZvY3VzKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggOGIxYjc2YmNm
ODExZjRjYTRmZjE4MTVjM2MwZGQ1ZTFiNTM5MzkyNy4uYjYyN2UwY2Q5NGQyMjBiYmQwN2M3NjY4
ZDQ1NTBiYWYwOTFkMjNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTMyOCw3ICszMjgs
NyBAQCBXSS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0ku
VHJlZU91dGxpbmUKICAgICBfb25tb3VzZW91dChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBu
b2RlVW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQucGFnZVgsIGV2
ZW50LnBhZ2VZKTsKLSAgICAgICAgaWYgKG5vZGVVbmRlck1vdXNlICYmIG5vZGVVbmRlck1vdXNl
LmlzRGVzY2VuZGFudCh0aGlzLmVsZW1lbnQpKQorICAgICAgICBpZiAobm9kZVVuZGVyTW91c2Ug
JiYgdGhpcy5lbGVtZW50LmNvbnRhaW5zKG5vZGVVbmRlck1vdXNlKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWls
c1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2VjdGlvbi5qcwppbmRleCAzMGFhMTNlODZiOTczYTY0Y2Q2MGRmNDNjZTJkOWY4ZTg0
ZjQ5NWYxLi5hYTNiMThmNzg5NjhiYjljNGViM2FkNWY4MDA4NzQ2MDBhNDIxMGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2Vj
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2VjdGlvbi5qcwpAQCAtMTM5LDcgKzEzOSw3IEBAIFdJLkRldGFpbHNTZWN0aW9uID0g
Y2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9oZWFkZXJFbGVt
ZW50Q2xpY2tlZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxm
T3JEZXNjZW5kYW50KHRoaXMuX29wdGlvbnNFbGVtZW50KSkKKyAgICAgICAgaWYgKHRoaXMuX29w
dGlvbnNFbGVtZW50ICYmIHRoaXMuX29wdGlvbnNFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdl
dCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIGNvbGxhcHNlZCA9IHRoaXMu
Y29sbGFwc2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRWRpdGluZ1N1cHBvcnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9ydC5qcwppbmRleCA5NTEwYjg5OGEyOWY0OGZhYjNm
N2ExZWMxOWRkYmE0ZGEzNjIxZWFmLi5jNzg3MTlhYmMxYjQxMjM1ZjU4ODJhYmM3NTA3MzhkYjJi
NTFhYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FZGl0aW5nU3VwcG9ydC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9ydC5qcwpAQCAtMjgxLDcgKzI4MSw3IEBAIFdJLmlu
Y3JlbWVudEVsZW1lbnRWYWx1ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGRlbHRhKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBsZXQgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsK
LSAgICBpZiAoIXJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzU2VsZk9yRGVzY2VuZGFu
dChlbGVtZW50KSkKKyAgICBpZiAoIWVsZW1lbnQuY29udGFpbnMocmFuZ2UuY29tbW9uQW5jZXN0
b3JDb250YWluZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBsZXQgd29yZFJhbmdl
ID0gcmFuZ2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQocmFuZ2Uuc3RhcnRPZmZzZXQsIFdJ
LkVkaXRpbmdTdXBwb3J0LlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCBlbGVtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29u
dGVudFZpZXcuanMKaW5kZXggNGEyNzY1ZDZlYzlkZWI3NzJjYWMxN2JmYTdmMWVkOTVhNzYyYmFl
Yy4uM2M4NmY5ZWUzNTM4OGJmNzAyMzE3NmViOWE1OWI4MTg4YWY4ZTI3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29u
dGVudFZpZXcuanMKQEAgLTQ0OCw3ICs0NDgsNyBAQCBXSS5Mb2dDb250ZW50VmlldyA9IGNsYXNz
IExvZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAgICAvLyBJbiB0
aGUgY2FzZSB0aGF0IHRoZXJlIGFyZSBzZWxlY3RlZCBtZXNzYWdlcywgb25seSBjbGVhciB0aGF0
IHNlbGVjdGlvbiBpZiB0aGUgcmlnaHQtY2xpY2sKICAgICAgICAgLy8gaXMgbm90IG9uIHRoZSBl
bGVtZW50IG9yIGRlc2NlbmRhbnRzIG9mIHRoZSBzZWxlY3RlZCBtZXNzYWdlcy4KLSAgICAgICAg
aWYgKHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMubGVuZ3RoICYmICF0aGlzLl9zZWxlY3RlZE1lc3Nh
Z2VzLnNvbWUoZWxlbWVudCA9PiBldmVudC50YXJnZXQuaXNTZWxmT3JEZXNjZW5kYW50KGVsZW1l
bnQpKSkgeworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGggJiYgIXRo
aXMuX3NlbGVjdGVkTWVzc2FnZXMuc29tZShlbGVtZW50ID0+IGVsZW1lbnQuY29udGFpbnMoZXZl
bnQudGFyZ2V0KSkpIHsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNTZWxlY3Rpb24o
KTsKICAgICAgICAgICAgIHRoaXMuX21vdXNlZG93bihldmVudCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclBy
b2dyYW1UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NoYWRlclByb2dyYW1UcmVlRWxlbWVudC5qcwppbmRleCBkYzllMDhiODdmNmU5YWQ0
ZTk3MGQwM2VkNjNlMjU0NGYwM2NiNjZjLi43OWQ0ZDBmMDdkNmIxYzQwYjRiZTQ2Y2MxNGM0ZGIy
MDU1OTg1NDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaGFkZXJQcm9ncmFtVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbVRyZWVFbGVtZW50LmpzCkBA
IC00Miw3ICs0Miw3IEBAIFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVudCA9IGNsYXNzIFNoYWRl
clByb2dyYW1UcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUCiAKICAgICBzZWxlY3RPbk1v
dXNlRG93bihldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JE
ZXNjZW5kYW50KHRoaXMuX3N0YXR1c0VsZW1lbnQpKQorICAgICAgICBpZiAodGhpcy5fc3RhdHVz
RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHN1cGVyLnNlbGVjdE9uTW91c2VEb3duKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvZnRDb250ZXh0TWVudS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvZnRDb250ZXh0TWVu
dS5qcwppbmRleCBiODNmMDllNWVlMjQ1ODY4MTg2NzRiYjcwYjU1ODIwZjdmY2JkZTA5Li42NGM1
ZWNiZmI0ZDBmNjBhYTQ5ZWI2N2FiYTNkYzYxOWM0MTBlNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb2Z0Q29udGV4dE1lbnUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU29mdENvbnRleHRN
ZW51LmpzCkBAIC0yMTYsNyArMjE2LDcgQEAgV0kuU29mdENvbnRleHRNZW51ID0gY2xhc3MgU29m
dENvbnRleHRNZW51CiAgICAgX21lbnVJdGVtTW91c2VPdXQoZXZlbnQpCiAgICAgewogICAgICAg
ICBjb25zdCBzaG91bGRVbmhpZ2hsaWdodCA9ICF0aGlzLl9zdWJNZW51IHx8ICFldmVudC5yZWxh
dGVkVGFyZ2V0IHx8Ci0gICAgICAgICAgICB0aGlzLl9jb250ZXh0TWVudUVsZW1lbnQuaXNTZWxm
T3JBbmNlc3RvcihldmVudC5yZWxhdGVkVGFyZ2V0KSB8fAorICAgICAgICAgICAgdGhpcy5fY29u
dGV4dE1lbnVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpIHx8CiAgICAgICAg
ICAgICBldmVudC5yZWxhdGVkVGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygic29mdC1jb250ZXh0
LW1lbnUtZ2xhc3MtcGFuZSIpOwogCiAgICAgICAgIGlmIChzaG91bGRVbmhpZ2hsaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVh
ZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvbkVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvbkVkaXRv
ci5qcwppbmRleCBhMzEzNGI1OGRjNmZkYmQ5Y2RkZDUxMDM4N2RjODhiNjMzMGU3ZmEwLi41NzI1
NmQ3ZThjNGI1MDc2OTk0NDEwMmNlMzdiNDFlYWUxZTU1MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldENTU1N0eWxlRGVj
bGFyYXRpb25FZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRDU1NTdHlsZURlY2xhcmF0aW9uRWRpdG9yLmpzCkBAIC01Myw3
ICs1Myw3IEBAIFdJLlNwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvbkVkaXRvciA9IGNsYXNz
IFNwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvbkVkCiAgICAgICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsICgpID0+IHsgdGhpcy5mb2N1c2VkID0gdHJ1ZTsgfSwg
dHJ1ZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgKGV2
ZW50KSA9PiB7CiAgICAgICAgICAgICBsZXQgZm9jdXNlZEVsZW1lbnQgPSBldmVudC5yZWxhdGVk
VGFyZ2V0OwotICAgICAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIGZvY3VzZWRFbGVtZW50
LmlzRGVzY2VuZGFudCh0aGlzLmVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmIHRoaXMuZWxlbWVudC5jb250YWlucyhmb2N1c2VkRWxlbWVudCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwpp
bmRleCA3NDA0MzFiMGUxNDdjNWI4OGIzODJmM2E1ZTAzZWFiNWViNTFmYmFjLi4wZWFkYzk4YWRi
NDYxZjhhMmUxNzkyOWRhMTVlNDQyMzUyZDcyOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCkBAIC05OSw3ICs5OSw3IEBA
IFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgdmFyIG5l
eHRTaWJsaW5nID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXggKyAxXTsKICAgICAgICAgbGV0IG5l
eHRTaWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6IHRo
aXMuX3RhYkJhckl0ZW1zLmxhc3RWYWx1ZS5lbGVtZW50OwogCi0gICAgICAgIGlmICh0aGlzLmVs
ZW1lbnQuaXNBbmNlc3RvcihuZXh0U2libGluZ0VsZW1lbnQpKQorICAgICAgICBpZiAodGhpcy5l
bGVtZW50LmNvbnRhaW5zKG5leHRTaWJsaW5nRWxlbWVudCkpCiAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRh
YkJhckl0ZW0uZWxlbWVudCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>