<?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>194724</bug_id>
          
          <creation_ts>2019-02-15 15:13:02 -0800</creation_ts>
          <short_desc>Web Inspector: Move CSS completion logic from SpreadsheetTextField to SpreadsheetStyleProperty</short_desc>
          <delta_ts>2019-02-17 16:08:59 -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>DoNotImportToRadar</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="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506794</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-15 15:13:02 -0800</bug_when>
    <thetext>This CSS value completion logic shouldn&apos;t be in SpreadsheetTextField:

    _getCompletionPrefix(prefix)
    {
        // For &quot;border: 1px so|&quot;, we want to suggest &quot;solid&quot; based on &quot;so&quot; prefix.
        let match = prefix.match(/[a-z0-9()-]+$/i);

1. It doesn&apos;t make sense for CSS property names.
2. I plan to use SpreadsheetTextField for CSS selectors as well, e.g. remove SpreadsheetSelectorField and use SpreadsheetTextField instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506801</commentid>
    <comment_count>1</comment_count>
      <attachid>362166</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-15 15:21:31 -0800</bug_when>
    <thetext>Created attachment 362166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507056</commentid>
    <comment_count>2</comment_count>
      <attachid>362166</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-16 18:02:15 -0800</bug_when>
    <thetext>Comment on attachment 362166
Patch

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

Why is this patch necessary?  Is it purely a design decision (e.g. we should keep CSS related &quot;things&quot; inside CSS classes), or is something going to build on this?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:715
&gt; +            completionPrefix: prefix,

NIT: I think just `prefix` is enough.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:756
&gt; +            return {completions: [], completionPrefix: &quot;&quot;};

Ditto (&gt;715).

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:758
&gt; +        let completionPrefix = match[0];

Ditto (&gt;715).

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:761
&gt; +        return {completionPrefix, completions};

NIT: you can inline the values.

    let prefix = match[0];
    return {
        prefix,
        completions: WI.CSSKeywordCompletions.forProperty(propertyName).startsWith(prefix),
    };

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:125
&gt; +        this._completionPrefix = &quot;&quot;;

I don&apos;t think we should set this here.  We should only clear this when we update completions, as technically `hide` doesn&apos;t clear the completions from the `_suggestionsView`.  We should only do this when `_suggestionsView.update` is called.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:369
&gt; +        let {completions, completionPrefix} = this._completionProvider(prefix);
&gt; +        this._completionPrefix = completionPrefix;

Ditto (&gt;SpreadsheetStyleProperty.js:715).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507058</commentid>
    <comment_count>3</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-16 18:34:27 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #2)
&gt; Comment on attachment 362166 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=362166&amp;action=review
&gt; 
&gt; Why is this patch necessary?  Is it purely a design decision (e.g. we should
&gt; keep CSS related &quot;things&quot; inside CSS classes), or is something going to
&gt; build on this?

It&apos;s mostly what I mentioned in the description:

&quot;2. I plan to use SpreadsheetTextField for CSS selectors as well, e.g. remove SpreadsheetSelectorField and use SpreadsheetTextField instead.&quot;

Unifying SpreadsheetTextField and SpreadsheetSelectorField would resolve a few inconsistencies between the two.
For example, CSS selector fields start editing on mousedown but CSS name/value fields on mouse up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507059</commentid>
    <comment_count>4</comment_count>
      <attachid>362224</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-16 18:56:04 -0800</bug_when>
    <thetext>Created attachment 362224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507114</commentid>
    <comment_count>5</comment_count>
      <attachid>362224</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-17 11:39:10 -0800</bug_when>
    <thetext>Comment on attachment 362224
Patch

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

r=me, nice work :)

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:714
&gt; +        return {prefix, completions: WI.CSSCompletions.cssNameCompletions.startsWith(prefix)};

Style: when there are non-simple keys/values, please put all keys/values on separate lines.

    return {
        prefix,
        completions: WI.CSSCompletions.cssNameCompletions.startsWith(prefix),
    };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507164</commentid>
    <comment_count>6</comment_count>
      <attachid>362259</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-02-17 15:42:21 -0800</bug_when>
    <thetext>Created attachment 362259
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507167</commentid>
    <comment_count>7</comment_count>
      <attachid>362259</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-17 16:08:58 -0800</bug_when>
    <thetext>Comment on attachment 362259
Patch for landing

Clearing flags on attachment: 362259

Committed r241653: &lt;https://trac.webkit.org/changeset/241653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507168</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-17 16:08:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362166</attachid>
            <date>2019-02-15 15:21:31 -0800</date>
            <delta_ts>2019-02-16 18:56:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6402</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg4MDY2NmY5Y2IzLi5mZGIyZDBlNzcwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDItMTUgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogTW92ZSBDU1MgY29tcGxldGlvbiBsb2dpYyBmcm9tIFNwcmVhZHNoZWV0VGV4dEZpZWxkIHRv
IFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBDU1MgdmFsdWUgY29tcGxldGlvbiBsb2dpYyBmcm9tIFNw
cmVhZHNoZWV0VGV4dEZpZWxkLCBhIGdlbmVyaWMgdGV4dCBmaWVsZCwKKyAgICAgICAgdG8gU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9T
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkucHJvdG90eXBlLl9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl92YWx1ZUNvbXBsZXRpb25E
YXRhUHJvdmlkZXIpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFRleHRGaWVsZC5qczoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkKToKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5kaXNjYXJkQ29tcGxldGlvbik6
CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1
Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxldGlvbik6
CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX3VwZGF0ZUNvbXBs
ZXRpb25zKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fc2hv
d1N1Z2dlc3Rpb25zVmlldyk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90
b3R5cGUuX2dldENvbXBsZXRpb25QcmVmaXgpOiBEZWxldGVkLgorCiAyMDE5LTAyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
YW52YXM6IGFsbCBhY3Rpb25zIGFmdGVyIGFuIG9mZnNjcmVlbiBwYXRoIG1vZGlmaWNhdGlvbiBh
cmUgbWFya2VkIGFzIG9mZnNjcmVlbiBwYXRoIGVycm9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hl
ZXRTdHlsZVByb3BlcnR5LmpzCmluZGV4IGFmNmMwNjk5ZDAwLi4wMjI5YWZlMmY1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hl
ZXRTdHlsZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtNzExLDcgKzcxMSwxMCBA
QCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRl
cihwcmVmaXgpCiAgICAgewotICAgICAgICByZXR1cm4gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFt
ZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgocHJlZml4KTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25QcmVmaXg6IHByZWZpeCwKKyAgICAgICAgICAgIGNvbXBsZXRpb25z
OiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0aChwcmVmaXgp
CisgICAgICAgIH07CiAgICAgfQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3JlSW5wdXQoZXZlbnQp
CkBAIC03NDcsOCArNzUwLDE1IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNz
IFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX3ZhbHVl
Q29tcGxldGlvbkRhdGFQcm92aWRlcihwcmVmaXgpCiAgICAgeworICAgICAgICAvLyBGb3IgImJv
cmRlcjogMXB4IHNvfCIsIHdlIHdhbnQgdG8gc3VnZ2VzdCAic29saWQiIGJhc2VkIG9uICJzbyIg
cHJlZml4LgorICAgICAgICBsZXQgbWF0Y2ggPSBwcmVmaXgubWF0Y2goL1thLXowLTkoKS1dKyQv
aSk7CisgICAgICAgIGlmICghbWF0Y2gpCisgICAgICAgICAgICByZXR1cm4ge2NvbXBsZXRpb25z
OiBbXSwgY29tcGxldGlvblByZWZpeDogIiJ9OworCisgICAgICAgIGxldCBjb21wbGV0aW9uUHJl
Zml4ID0gbWF0Y2hbMF07CiAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSB0aGlzLl9uYW1lRWxl
bWVudC50ZXh0Q29udGVudC50cmltKCk7Ci0gICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29t
cGxldGlvbnMuZm9yUHJvcGVydHkocHJvcGVydHlOYW1lKS5zdGFydHNXaXRoKHByZWZpeCk7Cisg
ICAgICAgIGxldCBjb21wbGV0aW9ucyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWUpLnN0YXJ0c1dpdGgoY29tcGxldGlvblByZWZpeCk7CisgICAgICAg
IHJldHVybiB7Y29tcGxldGlvblByZWZpeCwgY29tcGxldGlvbnN9OwogICAgIH0KIAogICAgIF9z
ZXR1cEp1bXBUb1N5bWJvbChlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5q
cwppbmRleCA5NzQyNjRlNTIyMy4uMmYzMmJhMmQ4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
VGV4dEZpZWxkLmpzCkBAIC00OCw2ICs0OCw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0g
Y2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICB0aGlzLl9lZGl0aW5nID0gZmFs
c2U7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyA9ICIiOworICAgICAgICB0aGlz
Ll9jb21wbGV0aW9uUHJlZml4ID0gIiI7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xMjEs
NiArMTIyLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRl
eHRGaWVsZAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25z
Vmlldy5oaWRlKCk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSAiIjsKIAogICAg
ICAgICBsZXQgaGFkU3VnZ2VzdGlvbkhpbnQgPSAhIXRoaXMuc3VnZ2VzdGlvbkhpbnQ7CiAgICAg
ICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSAiIjsKQEAgLTEzOCwxMCArMTQwLDcgQEAgV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgY29t
cGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKHN1Z2dlc3Rpb25zVmlldywgc2Vs
ZWN0ZWRUZXh0ID0gIiIpCiAgICAgewotICAgICAgICBsZXQgcHJlZml4ID0gdGhpcy52YWx1ZVdp
dGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBjb21wbGV0aW9uUHJlZml4ID0gdGhpcy5f
Z2V0Q29tcGxldGlvblByZWZpeChwcmVmaXgpOwotCi0gICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhp
bnQgPSBzZWxlY3RlZFRleHQuc2xpY2UoY29tcGxldGlvblByZWZpeC5sZW5ndGgpOworICAgICAg
ICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0gc2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRp
b25QcmVmaXgubGVuZ3RoKTsKIAogICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50
KCk7CiAKQEAgLTE2NCw4ICsxNjMsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNz
IFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIC8vICAgICAgICBuZXdQcmVmaXg6ICAxcHgg
c29saWQKICAgICAgICAgLy8gICAgIHNlbGVjdGVkVGV4dDogICAgICAgICAgICByb3N5YnJvd24K
ICAgICAgICAgbGV0IHByZWZpeCA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOwotICAg
ICAgICBsZXQgY29tcGxldGlvblByZWZpeCA9IHRoaXMuX2dldENvbXBsZXRpb25QcmVmaXgocHJl
Zml4KTsKLSAgICAgICAgbGV0IG5ld1ByZWZpeCA9IHByZWZpeC5zbGljZSgwLCAtY29tcGxldGlv
blByZWZpeC5sZW5ndGgpOworICAgICAgICBsZXQgbmV3UHJlZml4ID0gcHJlZml4LnNsaWNlKDAs
IC10aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CiAKICAgICAgICAgdGhpcy5fZWxlbWVu
dC50ZXh0Q29udGVudCA9IG5ld1ByZWZpeCArIHNlbGVjdGVkVGV4dDsKIApAQCAtMzY3LDggKzM2
NSw4IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0Rmll
bGQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgcHJlZml4ID0gdGhpcy52YWx1
ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBjb21wbGV0aW9uUHJlZml4ID0gdGhp
cy5fZ2V0Q29tcGxldGlvblByZWZpeChwcmVmaXgpOwotICAgICAgICBsZXQgY29tcGxldGlvbnMg
PSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIoY29tcGxldGlvblByZWZpeCk7CisgICAgICAgIGxl
dCB7Y29tcGxldGlvbnMsIGNvbXBsZXRpb25QcmVmaXh9ID0gdGhpcy5fY29tcGxldGlvblByb3Zp
ZGVyKHByZWZpeCk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSBjb21wbGV0aW9u
UHJlZml4OwogCiAgICAgICAgIGlmICghY29tcGxldGlvbnMubGVuZ3RoKSB7CiAgICAgICAgICAg
ICB0aGlzLmRpc2NhcmRDb21wbGV0aW9uKCk7CkBAIC00MDYsOCArNDA0LDcgQEAgV0kuU3ByZWFk
c2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgIF9zaG93U3Vn
Z2VzdGlvbnNWaWV3KCkKICAgICB7CiAgICAgICAgIGxldCBwcmVmaXggPSB0aGlzLnZhbHVlV2l0
aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IGNvbXBsZXRpb25QcmVmaXggPSB0aGlzLl9n
ZXRDb21wbGV0aW9uUHJlZml4KHByZWZpeCk7Ci0gICAgICAgIGxldCBzdGFydE9mZnNldCA9IHBy
ZWZpeC5sZW5ndGggLSBjb21wbGV0aW9uUHJlZml4Lmxlbmd0aDsKKyAgICAgICAgbGV0IHN0YXJ0
T2Zmc2V0ID0gcHJlZml4Lmxlbmd0aCAtIHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoOwog
ICAgICAgICBsZXQgY2FyZXRSZWN0ID0gdGhpcy5fZ2V0Q2FyZXRSZWN0KHN0YXJ0T2Zmc2V0KTsK
IAogICAgICAgICAvLyBIaWRlIGNvbXBsZXRpb24gcG9wb3ZlciB3aGVuIHRoZSBhbmNob3IgZWxl
bWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS4KQEAgLTQ0NywxNiArNDQ0LDYgQEAgV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBy
ZXR1cm4gbmV3IFdJLlJlY3QoY2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcsIGNsaWVudFJl
Y3QudG9wLCBjbGllbnRSZWN0LndpZHRoLCBjbGllbnRSZWN0LmhlaWdodCk7CiAgICAgfQogCi0g
ICAgX2dldENvbXBsZXRpb25QcmVmaXgocHJlZml4KQotICAgIHsKLSAgICAgICAgLy8gRm9yICJi
b3JkZXI6IDFweCBzb3wiLCB3ZSB3YW50IHRvIHN1Z2dlc3QgInNvbGlkIiBiYXNlZCBvbiAic28i
IHByZWZpeC4KLSAgICAgICAgbGV0IG1hdGNoID0gcHJlZml4Lm1hdGNoKC9bYS16MC05KCktXSsk
L2kpOwotICAgICAgICBpZiAobWF0Y2gpCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2hbMF07Ci0K
LSAgICAgICAgcmV0dXJuIHByZWZpeDsKLSAgICB9Ci0KICAgICBfYXBwbHlDb21wbGV0aW9uSGlu
dCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25Qcm92aWRlciB8fCAhdGhp
cy5zdWdnZXN0aW9uSGludCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362224</attachid>
            <date>2019-02-16 18:56:04 -0800</date>
            <delta_ts>2019-02-17 15:42:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6891</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDBhMDMxOTk0MmRiLi5iODBhMjRlODhlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDItMTYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogTW92ZSBDU1MgY29tcGxldGlvbiBsb2dpYyBmcm9tIFNwcmVhZHNoZWV0VGV4dEZpZWxkIHRv
IFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBDU1MgdmFsdWUgY29tcGxldGlvbiBsb2dpYyBmcm9tIFNw
cmVhZHNoZWV0VGV4dEZpZWxkLCBhIGdlbmVyaWMgdGV4dCBmaWVsZCwKKyAgICAgICAgdG8gU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9T
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkucHJvdG90eXBlLl9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl92YWx1ZUNvbXBsZXRpb25E
YXRhUHJvdmlkZXIpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFRleHRGaWVsZC5qczoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkKToKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlv
bnNTZWxlY3RlZENvbXBsZXRpb24pOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
cHJvdG90eXBlLmNvbXBsZXRpb25TdWdnZXN0aW9uc0NsaWNrZWRDb21wbGV0aW9uKToKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fdXBkYXRlQ29tcGxldGlvbnMp
OgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9zaG93U3VnZ2Vz
dGlvbnNWaWV3KToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5f
Z2V0Q29tcGxldGlvblByZWZpeCk6IERlbGV0ZWQuCisKIDIwMTktMDItMTUgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBMb2dn
aW5nIGEgbmF0aXZlIGZ1bmN0aW9uIHRvIHRoZSBjb25zb2xlLCBzdWNoIGFzIGBhbGVydGAsIHBy
b2R1Y2VzIHVuaGFuZGxlZCByZWplY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQ
cm9wZXJ0eS5qcwppbmRleCBhZjZjMDY5OWQwMC4uZDkwZTViNjEwNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQ
cm9wZXJ0eS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKQEAgLTcxMSw3ICs3MTEsNyBAQCBXSS5TcHJl
YWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcihwcmVmaXgp
CiAgICAgewotICAgICAgICByZXR1cm4gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRp
b25zLnN0YXJ0c1dpdGgocHJlZml4KTsKKyAgICAgICAgcmV0dXJuIHtwcmVmaXgsIGNvbXBsZXRp
b25zOiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0aChwcmVm
aXgpfTsKICAgICB9CiAKICAgICBfaGFuZGxlVmFsdWVCZWZvcmVJbnB1dChldmVudCkKQEAgLTc0
Nyw4ICs3NDcsMTcgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFk
c2hlZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfdmFsdWVDb21wbGV0
aW9uRGF0YVByb3ZpZGVyKHByZWZpeCkKICAgICB7CisgICAgICAgIC8vIEZvciAiYm9yZGVyOiAx
cHggc298Iiwgd2Ugd2FudCB0byBzdWdnZXN0ICJzb2xpZCIgYmFzZWQgb24gInNvIiBwcmVmaXgu
CisgICAgICAgIGxldCBtYXRjaCA9IHByZWZpeC5tYXRjaCgvW2EtejAtOSgpLV0rJC9pKTsKKyAg
ICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgIHJldHVybiB7Y29tcGxldGlvbnM6IFtdLCBw
cmVmaXg6ICIifTsKKworICAgICAgICBwcmVmaXggPSBtYXRjaFswXTsKICAgICAgICAgbGV0IHBy
b3BlcnR5TmFtZSA9IHRoaXMuX25hbWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKTsKLSAgICAg
ICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5h
bWUpLnN0YXJ0c1dpdGgocHJlZml4KTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHBy
ZWZpeCwKKyAgICAgICAgICAgIGNvbXBsZXRpb25zOiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
Zm9yUHJvcGVydHkocHJvcGVydHlOYW1lKS5zdGFydHNXaXRoKHByZWZpeCkKKyAgICAgICAgfTsK
ICAgICB9CiAKICAgICBfc2V0dXBKdW1wVG9TeW1ib2woZWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZp
ZWxkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFk
c2hlZXRUZXh0RmllbGQuanMKaW5kZXggOTc0MjY0ZTUyMjMuLmNhNWE4NGE1NTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFRleHRGaWVsZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcwpAQCAtNDgsNiArNDgsNyBAQCBXSS5TcHJlYWRz
aGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgdGhp
cy5fZWRpdGluZyA9IGZhbHNlOwogICAgICAgICB0aGlzLl92YWx1ZUJlZm9yZUVkaXRpbmcgPSAi
IjsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvblByZWZpeCA9ICIiOwogICAgIH0KIAogICAgIC8v
IFB1YmxpYwpAQCAtMTM4LDEwICsxMzksNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNs
YXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxl
Y3RlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQgPSAiIikKICAgICB7
Ci0gICAgICAgIGxldCBwcmVmaXggPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAg
ICAgICAgbGV0IGNvbXBsZXRpb25QcmVmaXggPSB0aGlzLl9nZXRDb21wbGV0aW9uUHJlZml4KHBy
ZWZpeCk7Ci0KLSAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVkVGV4dC5zbGlj
ZShjb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQg
PSBzZWxlY3RlZFRleHQuc2xpY2UodGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGgpOwogCiAg
ICAgICAgIHRoaXMuX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKIApAQCAtMTY0LDggKzE2Miw3
IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQK
ICAgICAgICAgLy8gICAgICAgIG5ld1ByZWZpeDogIDFweCBzb2xpZAogICAgICAgICAvLyAgICAg
c2VsZWN0ZWRUZXh0OiAgICAgICAgICAgIHJvc3licm93bgogICAgICAgICBsZXQgcHJlZml4ID0g
dGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBjb21wbGV0aW9uUHJl
Zml4ID0gdGhpcy5fZ2V0Q29tcGxldGlvblByZWZpeChwcmVmaXgpOwotICAgICAgICBsZXQgbmV3
UHJlZml4ID0gcHJlZml4LnNsaWNlKDAsIC1jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CisgICAg
ICAgIGxldCBuZXdQcmVmaXggPSBwcmVmaXguc2xpY2UoMCwgLXRoaXMuX2NvbXBsZXRpb25QcmVm
aXgubGVuZ3RoKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gbmV3UHJl
Zml4ICsgc2VsZWN0ZWRUZXh0OwogCkBAIC0zNjYsOSArMzYzLDkgQEAgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMu
X2NvbXBsZXRpb25Qcm92aWRlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQg
cHJlZml4ID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBjb21w
bGV0aW9uUHJlZml4ID0gdGhpcy5fZ2V0Q29tcGxldGlvblByZWZpeChwcmVmaXgpOwotICAgICAg
ICBsZXQgY29tcGxldGlvbnMgPSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIoY29tcGxldGlvblBy
ZWZpeCk7CisgICAgICAgIGxldCB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uID0gdGhpcy52YWx1ZVdp
dGhvdXRTdWdnZXN0aW9uKCk7CisgICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0
aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbik7CisgICAgICAg
IHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSBwcmVmaXg7CiAKICAgICAgICAgaWYgKCFjb21wbGV0
aW9ucy5sZW5ndGgpIHsKICAgICAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKQEAg
LTM3Niw3ICszNzMsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAgICAgICAgIH0KIAogICAgICAgICAvLyBObyBuZWVkIHRvIHNob3cgdGhl
IGNvbXBsZXRpb24gcG9wb3ZlciB3aXRoIG9ubHkgb25lIGl0ZW0gdGhhdCBtYXRjaGVzIHRoZSBl
bnRlcmVkIHZhbHVlLgotICAgICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAxICYmIGNv
bXBsZXRpb25zWzBdID09PSBwcmVmaXgpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0
aCA9PT0gMSAmJiBjb21wbGV0aW9uc1swXSA9PT0gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbikgewog
ICAgICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0zOTYsNyArMzkzLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQg
PSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAgdGhpcy5fc2hvd1N1Z2dl
c3Rpb25zVmlldygpOwogCiAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5zZWxlY3RlZElu
ZGV4ID0gTmFOOwotICAgICAgICBpZiAoY29tcGxldGlvblByZWZpeCkgeworICAgICAgICBpZiAo
dGhpcy5fY29tcGxldGlvblByZWZpeCkgewogICAgICAgICAgICAgLy8gU2VsZWN0IGZpcnN0IGl0
ZW0gYW5kIGNhbGwgY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uLgogICAg
ICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnNlbGVjdE5leHQoKTsKICAgICAgICAgfSBl
bHNlCkBAIC00MDYsOCArNDAzLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBT
cHJlYWRzaGVldFRleHRGaWVsZAogICAgIF9zaG93U3VnZ2VzdGlvbnNWaWV3KCkKICAgICB7CiAg
ICAgICAgIGxldCBwcmVmaXggPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAg
ICAgbGV0IGNvbXBsZXRpb25QcmVmaXggPSB0aGlzLl9nZXRDb21wbGV0aW9uUHJlZml4KHByZWZp
eCk7Ci0gICAgICAgIGxldCBzdGFydE9mZnNldCA9IHByZWZpeC5sZW5ndGggLSBjb21wbGV0aW9u
UHJlZml4Lmxlbmd0aDsKKyAgICAgICAgbGV0IHN0YXJ0T2Zmc2V0ID0gcHJlZml4Lmxlbmd0aCAt
IHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoOwogICAgICAgICBsZXQgY2FyZXRSZWN0ID0g
dGhpcy5fZ2V0Q2FyZXRSZWN0KHN0YXJ0T2Zmc2V0KTsKIAogICAgICAgICAvLyBIaWRlIGNvbXBs
ZXRpb24gcG9wb3ZlciB3aGVuIHRoZSBhbmNob3IgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhl
IERPTS4KQEAgLTQ0NywxNiArNDQzLDYgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFz
cyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICByZXR1cm4gbmV3IFdJLlJlY3QoY2xpZW50
UmVjdC5sZWZ0ICsgbGVmdFBhZGRpbmcsIGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LndpZHRo
LCBjbGllbnRSZWN0LmhlaWdodCk7CiAgICAgfQogCi0gICAgX2dldENvbXBsZXRpb25QcmVmaXgo
cHJlZml4KQotICAgIHsKLSAgICAgICAgLy8gRm9yICJib3JkZXI6IDFweCBzb3wiLCB3ZSB3YW50
IHRvIHN1Z2dlc3QgInNvbGlkIiBiYXNlZCBvbiAic28iIHByZWZpeC4KLSAgICAgICAgbGV0IG1h
dGNoID0gcHJlZml4Lm1hdGNoKC9bYS16MC05KCktXSskL2kpOwotICAgICAgICBpZiAobWF0Y2gp
Ci0gICAgICAgICAgICByZXR1cm4gbWF0Y2hbMF07Ci0KLSAgICAgICAgcmV0dXJuIHByZWZpeDsK
LSAgICB9Ci0KICAgICBfYXBwbHlDb21wbGV0aW9uSGludCgpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX2NvbXBsZXRpb25Qcm92aWRlciB8fCAhdGhpcy5zdWdnZXN0aW9uSGludCkK
</data>
<flag name="review"
          id="378880"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362259</attachid>
            <date>2019-02-17 15:42:21 -0800</date>
            <delta_ts>2019-02-17 16:08:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6927</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDBhMDMxOTk0MmRiLi5jNWJmZWY0NWY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDItMTYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogTW92ZSBDU1MgY29tcGxldGlvbiBsb2dpYyBmcm9tIFNwcmVhZHNoZWV0VGV4dEZpZWxkIHRv
IFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91
c3NvLgorCisgICAgICAgIE1vdmUgQ1NTIHZhbHVlIGNvbXBsZXRpb24gbG9naWMgZnJvbSBTcHJl
YWRzaGVldFRleHRGaWVsZCwgYSBnZW5lcmljIHRleHQgZmllbGQsCisgICAgICAgIHRvIFNwcmVh
ZHNoZWV0U3R5bGVQcm9wZXJ0eS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRTdHlsZVBy
b3BlcnR5LnByb3RvdHlwZS5fbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIpOgorICAgICAgICAo
V0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5fdmFsdWVDb21wbGV0aW9uRGF0
YVByb3ZpZGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRU
ZXh0RmllbGQuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZCk6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25z
U2VsZWN0ZWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnBy
b3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxldGlvbik6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX3VwZGF0ZUNvbXBsZXRpb25zKToK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fc2hvd1N1Z2dlc3Rp
b25zVmlldyk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2dl
dENvbXBsZXRpb25QcmVmaXgpOiBEZWxldGVkLgorCiAyMDE5LTAyLTE1ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTG9nZ2lu
ZyBhIG5hdGl2ZSBmdW5jdGlvbiB0byB0aGUgY29uc29sZSwgc3VjaCBhcyBgYWxlcnRgLCBwcm9k
dWNlcyB1bmhhbmRsZWQgcmVqZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkuanMKaW5kZXggYWY2YzA2OTlkMDAuLjI0OTQ4NTEyYjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBAIC03MTEsNyArNzExLDEwIEBAIFdJLlNwcmVh
ZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRl
bmRzIFdJLk9iamVjdAogCiAgICAgX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHByZWZpeCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlv
bnMuc3RhcnRzV2l0aChwcmVmaXgpOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcHJl
Zml4LAorICAgICAgICAgICAgY29tcGxldGlvbnM6IFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVD
b21wbGV0aW9ucy5zdGFydHNXaXRoKHByZWZpeCkKKyAgICAgICAgfTsKICAgICB9CiAKICAgICBf
aGFuZGxlVmFsdWVCZWZvcmVJbnB1dChldmVudCkKQEAgLTc0Nyw4ICs3NTAsMTcgQEAgV0kuU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4
dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHByZWZp
eCkKICAgICB7CisgICAgICAgIC8vIEZvciAiYm9yZGVyOiAxcHggc298Iiwgd2Ugd2FudCB0byBz
dWdnZXN0ICJzb2xpZCIgYmFzZWQgb24gInNvIiBwcmVmaXguCisgICAgICAgIGxldCBtYXRjaCA9
IHByZWZpeC5tYXRjaCgvW2EtejAtOSgpLV0rJC9pKTsKKyAgICAgICAgaWYgKCFtYXRjaCkKKyAg
ICAgICAgICAgIHJldHVybiB7Y29tcGxldGlvbnM6IFtdLCBwcmVmaXg6ICIifTsKKworICAgICAg
ICBwcmVmaXggPSBtYXRjaFswXTsKICAgICAgICAgbGV0IHByb3BlcnR5TmFtZSA9IHRoaXMuX25h
bWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKTsKLSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdv
cmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpLnN0YXJ0c1dpdGgocHJlZml4
KTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHByZWZpeCwKKyAgICAgICAgICAgIGNv
bXBsZXRpb25zOiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkocHJvcGVydHlO
YW1lKS5zdGFydHNXaXRoKHByZWZpeCkKKyAgICAgICAgfTsKICAgICB9CiAKICAgICBfc2V0dXBK
dW1wVG9TeW1ib2woZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKaW5k
ZXggOTc0MjY0ZTUyMjMuLmNhNWE4NGE1NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRG
aWVsZC5qcwpAQCAtNDgsNiArNDgsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNz
IFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl92YWx1ZUJlZm9yZUVkaXRpbmcgPSAiIjsKKyAgICAgICAgdGhpcy5fY29t
cGxldGlvblByZWZpeCA9ICIiOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTM4LDEwICsx
MzksNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24oc3VnZ2Vz
dGlvbnNWaWV3LCBzZWxlY3RlZFRleHQgPSAiIikKICAgICB7Ci0gICAgICAgIGxldCBwcmVmaXgg
PSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IGNvbXBsZXRpb25Q
cmVmaXggPSB0aGlzLl9nZXRDb21wbGV0aW9uUHJlZml4KHByZWZpeCk7Ci0KLSAgICAgICAgdGhp
cy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVkVGV4dC5zbGljZShjb21wbGV0aW9uUHJlZml4Lmxl
bmd0aCk7CisgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2Uo
dGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGgpOwogCiAgICAgICAgIHRoaXMuX3JlQXR0YWNo
U3VnZ2VzdGlvbkhpbnQoKTsKIApAQCAtMTY0LDggKzE2Miw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgLy8gICAgICAgIG5l
d1ByZWZpeDogIDFweCBzb2xpZAogICAgICAgICAvLyAgICAgc2VsZWN0ZWRUZXh0OiAgICAgICAg
ICAgIHJvc3licm93bgogICAgICAgICBsZXQgcHJlZml4ID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdn
ZXN0aW9uKCk7Ci0gICAgICAgIGxldCBjb21wbGV0aW9uUHJlZml4ID0gdGhpcy5fZ2V0Q29tcGxl
dGlvblByZWZpeChwcmVmaXgpOwotICAgICAgICBsZXQgbmV3UHJlZml4ID0gcHJlZml4LnNsaWNl
KDAsIC1jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIGxldCBuZXdQcmVmaXggPSBw
cmVmaXguc2xpY2UoMCwgLXRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsKIAogICAgICAg
ICB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gbmV3UHJlZml4ICsgc2VsZWN0ZWRUZXh0Owog
CkBAIC0zNjYsOSArMzYzLDkgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJl
YWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgcHJlZml4ID0gdGhpcy52YWx1ZVdp
dGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCBjb21wbGV0aW9uUHJlZml4ID0gdGhpcy5f
Z2V0Q29tcGxldGlvblByZWZpeChwcmVmaXgpOwotICAgICAgICBsZXQgY29tcGxldGlvbnMgPSB0
aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIoY29tcGxldGlvblByZWZpeCk7CisgICAgICAgIGxldCB2
YWx1ZVdpdGhvdXRTdWdnZXN0aW9uID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Cisg
ICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9jb21wbGV0aW9uUHJvdmlk
ZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbik7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVm
aXggPSBwcmVmaXg7CiAKICAgICAgICAgaWYgKCFjb21wbGV0aW9ucy5sZW5ndGgpIHsKICAgICAg
ICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKQEAgLTM3Niw3ICszNzMsNyBAQCBXSS5T
cHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBObyBuZWVkIHRvIHNob3cgdGhlIGNvbXBsZXRpb24gcG9wb3ZlciB3
aXRoIG9ubHkgb25lIGl0ZW0gdGhhdCBtYXRjaGVzIHRoZSBlbnRlcmVkIHZhbHVlLgotICAgICAg
ICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAxICYmIGNvbXBsZXRpb25zWzBdID09PSBwcmVm
aXgpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA9PT0gMSAmJiBjb21wbGV0aW9u
c1swXSA9PT0gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbikgewogICAgICAgICAgICAgdGhpcy5kaXNj
YXJkQ29tcGxldGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zOTYs
NyArMzkzLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRl
eHRGaWVsZAogICAgICAgICAgICAgdGhpcy5fc2hvd1N1Z2dlc3Rpb25zVmlldygpOwogCiAgICAg
ICAgIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5zZWxlY3RlZEluZGV4ID0gTmFOOwotICAgICAgICBp
ZiAoY29tcGxldGlvblByZWZpeCkgeworICAgICAgICBpZiAodGhpcy5fY29tcGxldGlvblByZWZp
eCkgewogICAgICAgICAgICAgLy8gU2VsZWN0IGZpcnN0IGl0ZW0gYW5kIGNhbGwgY29tcGxldGlv
blN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uLgogICAgICAgICAgICAgdGhpcy5fc3VnZ2Vz
dGlvbnNWaWV3LnNlbGVjdE5leHQoKTsKICAgICAgICAgfSBlbHNlCkBAIC00MDYsOCArNDAzLDcg
QEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAog
ICAgIF9zaG93U3VnZ2VzdGlvbnNWaWV3KCkKICAgICB7CiAgICAgICAgIGxldCBwcmVmaXggPSB0
aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IGNvbXBsZXRpb25QcmVm
aXggPSB0aGlzLl9nZXRDb21wbGV0aW9uUHJlZml4KHByZWZpeCk7Ci0gICAgICAgIGxldCBzdGFy
dE9mZnNldCA9IHByZWZpeC5sZW5ndGggLSBjb21wbGV0aW9uUHJlZml4Lmxlbmd0aDsKKyAgICAg
ICAgbGV0IHN0YXJ0T2Zmc2V0ID0gcHJlZml4Lmxlbmd0aCAtIHRoaXMuX2NvbXBsZXRpb25QcmVm
aXgubGVuZ3RoOwogICAgICAgICBsZXQgY2FyZXRSZWN0ID0gdGhpcy5fZ2V0Q2FyZXRSZWN0KHN0
YXJ0T2Zmc2V0KTsKIAogICAgICAgICAvLyBIaWRlIGNvbXBsZXRpb24gcG9wb3ZlciB3aGVuIHRo
ZSBhbmNob3IgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS4KQEAgLTQ0NywxNiArNDQz
LDYgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVs
ZAogICAgICAgICByZXR1cm4gbmV3IFdJLlJlY3QoY2xpZW50UmVjdC5sZWZ0ICsgbGVmdFBhZGRp
bmcsIGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LndpZHRoLCBjbGllbnRSZWN0LmhlaWdodCk7
CiAgICAgfQogCi0gICAgX2dldENvbXBsZXRpb25QcmVmaXgocHJlZml4KQotICAgIHsKLSAgICAg
ICAgLy8gRm9yICJib3JkZXI6IDFweCBzb3wiLCB3ZSB3YW50IHRvIHN1Z2dlc3QgInNvbGlkIiBi
YXNlZCBvbiAic28iIHByZWZpeC4KLSAgICAgICAgbGV0IG1hdGNoID0gcHJlZml4Lm1hdGNoKC9b
YS16MC05KCktXSskL2kpOwotICAgICAgICBpZiAobWF0Y2gpCi0gICAgICAgICAgICByZXR1cm4g
bWF0Y2hbMF07Ci0KLSAgICAgICAgcmV0dXJuIHByZWZpeDsKLSAgICB9Ci0KICAgICBfYXBwbHlD
b21wbGV0aW9uSGludCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25Qcm92
aWRlciB8fCAhdGhpcy5zdWdnZXN0aW9uSGludCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>