<?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>182634</bug_id>
          
          <creation_ts>2018-02-08 17:54:44 -0800</creation_ts>
          <short_desc>Web Inspector: Object.shallowEqual always fails when comparing array property values</short_desc>
          <delta_ts>2018-02-09 12:40:17 -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="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</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>1397788</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-02-08 17:54:44 -0800</bug_when>
    <thetext>Summary:
Object.shallowEqual always fails when comparing array property values.

Steps to Reproduce:
1. Inspect the Inspector
2. In the console, evaluate:
   &gt; Object.shallowEqual({a: []}, {a: []});
   &gt; Object.shallowEqual({a: new Array}, {a: new Array});
   &gt; Object.shallowEqual({a: [1]}, {a: [1]});

Expected:
All true

Actual:
All false

Notes:
Object.shallowEqual uses Array.shallowEqual when both objects are arrays, but always uses strict equality when comparing property values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397792</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-08 18:04:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/37374639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397793</commentid>
    <comment_count>2</comment_count>
      <attachid>333436</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-02-08 18:06:23 -0800</bug_when>
    <thetext>Created attachment 333436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397830</commentid>
    <comment_count>3</comment_count>
      <attachid>333436</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-02-08 22:27:44 -0800</bug_when>
    <thetext>Comment on attachment 333436
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:92
&gt; +            let aValue = a[aKey];
&gt; +            let bValue = b[aKey];
&gt; +            if (Array.isArray(aValue) &amp;&amp; Array.isArray(bValue)) {
&gt; +                // Use Array.shallowEqual, since struct equality fails for similar arrays.
&gt; +                if (!Array.shallowEqual(aValue, bValue))
&gt; +                    return false;
&gt; +            } else {
&gt; +                // Check that the values are strict equal since this is only
&gt; +                // a shallow check, not a recursive one.
&gt; +                if (aValue !== bValue)
&gt; +                    return false;
&gt; +            }

I think you could simplify this to always call `Array.shallowEqual` regardless of whether `aValue` or `bValue` is an array, since it already early returns false if either is not an array.  (along these lines, we could also rework the logic earlier in `Object.shallowEqual` that checks if the values are arrays to simply just call `Array.shallowEqual` and return true if it does)

    if (aValue !== bValue &amp;&amp; !Array.shallowEqual(aValue, bValue)
        return false;

I think we still want to do a strict equality comparison even for arrays, as that might help us avoid unnecessary work if it is the case that two different objects have a reference to the same array.

    let a = [];
    for (let i = 0; i &lt; 10000; ++i)
        a.push(i);

    Object.shallowEquals({a}, {a});</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397852</commentid>
    <comment_count>4</comment_count>
      <attachid>333456</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-02-09 00:37:10 -0800</bug_when>
    <thetext>Created attachment 333456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397854</commentid>
    <comment_count>5</comment_count>
      <attachid>333436</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-02-09 00:44:27 -0800</bug_when>
    <thetext>Comment on attachment 333436
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:92
&gt;&gt; +            }
&gt; 
&gt; I think you could simplify this to always call `Array.shallowEqual` regardless of whether `aValue` or `bValue` is an array, since it already early returns false if either is not an array.  (along these lines, we could also rework the logic earlier in `Object.shallowEqual` that checks if the values are arrays to simply just call `Array.shallowEqual` and return true if it does)
&gt; 
&gt;     if (aValue !== bValue &amp;&amp; !Array.shallowEqual(aValue, bValue)
&gt;         return false;
&gt; 
&gt; I think we still want to do a strict equality comparison even for arrays, as that might help us avoid unnecessary work if it is the case that two different objects have a reference to the same array.
&gt; 
&gt;     let a = [];
&gt;     for (let i = 0; i &lt; 10000; ++i)
&gt;         a.push(i);
&gt; 
&gt;     Object.shallowEquals({a}, {a});

Nice suggestions, I simplified the patch a bit, and removed redundant comments.

We shouldn&apos;t need to do an additional check for two property values that refer to the same array. Array.shallowEqual performs this check early on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398049</commentid>
    <comment_count>6</comment_count>
      <attachid>333456</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-02-09 12:15:42 -0800</bug_when>
    <thetext>Comment on attachment 333456
Patch

r=me.  Nice fix =D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398060</commentid>
    <comment_count>7</comment_count>
      <attachid>333456</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 12:40:15 -0800</bug_when>
    <thetext>Comment on attachment 333456
Patch

Clearing flags on attachment: 333456

Committed r228336: &lt;https://trac.webkit.org/changeset/228336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398061</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 12:40:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333436</attachid>
            <date>2018-02-08 18:06:23 -0800</date>
            <delta_ts>2018-02-09 00:37:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182634-20180208180622.patch</filename>
            <type>text/plain</type>
            <size>6214</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZDY1MDExZjQ3NzRkMDE1Zjg5NDg1M2JhZDZkMWM3MjRhZmU2MzE1Li5lYjczYmU4YWMwNTMzY2Iz
YzFkOWI3NDU4Njg5MjVkNzFlNjIwZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxOSBAQAogMjAxOC0wMi0wOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogT2JqZWN0LnNoYWxsb3dFcXVhbCBhbHdheXMgZmFp
bHMgd2hlbiBjb21wYXJpbmcgYXJyYXkgcHJvcGVydHkgdmFsdWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2MzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM3Mzc0NjM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE9iamVjdC5zaGFsbG93RXF1YWwgc2hvdWxkIHVzZSBBcnJheS5zaGFsbG93RXF1
YWwgd2hlbiBjb21wYXJpbmcKKyAgICAgICAgdHdvIHByb3BlcnRpZXMgdGhhdCBib3RoIGhhdmUg
YXJyYXkgdmFsdWVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5q
czoKKyAgICAgICAgKHZhbHVlKToKKworMjAxOC0wMi0wOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtl
ckBhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGxpc3Rpbmcgb2YgQ2Fu
dmFzZXMvUHJvZ3JhbXMvUmVjb3JkaW5ncyB0byB0aGUgTmF2aWdhdGlvblNpZGViYXIKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODc0NAogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzUzNzQzNzk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IGM3ZjgwYzc1ODRiZGRh
ZDQwYzk5MTdjNjY0ZjJhMDg3MzYyMzYyMDUuLmQ3ZTNiZjgyOGVhMDI1NDY2ZmUyZjA3NTdkYjYw
YzdjNWI3ZjdmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC03MywxNCArNzMsMjMgQEAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KE9iamVjdCwgInNoYWxsb3dFcXVhbCIsCiAKICAgICAgICAgLy8gQ2hlY2sgaWYg
YWxsIHRoZSBrZXlzIGFuZCB0aGVpciB2YWx1ZXMgYXJlIGVxdWFsLgogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFLZXlzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgYUtleSA9
IGFLZXlzW2ldOwogICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiIGhhcyB0aGUgc2FtZSBrZXkg
YXMgYS4KLSAgICAgICAgICAgIGlmICghKGFLZXlzW2ldIGluIGIpKQorICAgICAgICAgICAgaWYg
KCEoYUtleSBpbiBiKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
ICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlcyBhcmUgc3RyaWN0IGVxdWFsIHNpbmNlIHRoaXMg
aXMgb25seQotICAgICAgICAgICAgLy8gYSBzaGFsbG93IGNoZWNrLCBub3QgYSByZWN1cnNpdmUg
b25lLgotICAgICAgICAgICAgaWYgKGFbYUtleXNbaV1dICE9PSBiW2FLZXlzW2ldXSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBsZXQgYVZhbHVlID0gYVthS2V5
XTsKKyAgICAgICAgICAgIGxldCBiVmFsdWUgPSBiW2FLZXldOworICAgICAgICAgICAgaWYgKEFy
cmF5LmlzQXJyYXkoYVZhbHVlKSAmJiBBcnJheS5pc0FycmF5KGJWYWx1ZSkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBVc2UgQXJyYXkuc2hhbGxvd0VxdWFsLCBzaW5jZSBzdHJ1Y3QgZXF1YWxpdHkg
ZmFpbHMgZm9yIHNpbWlsYXIgYXJyYXlzLgorICAgICAgICAgICAgICAgIGlmICghQXJyYXkuc2hh
bGxvd0VxdWFsKGFWYWx1ZSwgYlZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0
IHRoZSB2YWx1ZXMgYXJlIHN0cmljdCBlcXVhbCBzaW5jZSB0aGlzIGlzIG9ubHkKKyAgICAgICAg
ICAgICAgICAvLyBhIHNoYWxsb3cgY2hlY2ssIG5vdCBhIHJlY3Vyc2l2ZSBvbmUuCisgICAgICAg
ICAgICAgICAgaWYgKGFWYWx1ZSAhPT0gYlZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBiNWNkM2I4N2ZhYmEzMDhiYjgwNTFlNWZmNTZkNDYwMmNlOTZkMmFmLi42MzBk
ZWIyNzRhM2RjYjZkOWJjNTI2NmYyY2E5MTlkNzdmOWE3ODQxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTgtMDItMDggIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IE9iamVjdC5zaGFsbG93RXF1YWwgYWx3YXlzIGZhaWxzIHdoZW4g
Y29tcGFyaW5nIGFycmF5IHByb3BlcnR5IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NzM3NDYzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMuaHRtbDoKKwog
MjAxOC0wMi0wOCAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIE1h
cmtlZCBtZWRpYS9XM0MvdmlkZW8vZXZlbnRzL2V2ZW50X3Byb2dyZXNzX21hbnVhbC5odG1sIGFz
IGZsYWt5IG9uIG1hY09TIFdLMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91
bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggMGU2
NTRmNTljOWUwNTAzNWUyNDJiMTA3NzU2YjgyOTczMWVmOGY3Ny4uZmMyZThjYzJhNzA3YjQ0MDI5
MzUzZDNhOTNiOGM2MDQyMWUxNzM1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKQEAg
LTksNiArOSwxMSBAQCBQQVNTOiBzaGFsbG93RXF1YWwgb2YgZXF1YWwgb2JqZWN0cyBzaG91bGQg
YmUgdHJ1ZS4KIFBBU1M6IHNoYWxsb3dFcXVhbCBvZiBlcXVhbCBvYmplY3RzIHNob3VsZCBiZSB0
cnVlLgogUEFTUzogc2hhbGxvd0VxdWFsIG9mIHVuZXF1YWwgb2JqZWN0cyBzaG91bGQgYmUgZmFs
c2UuCiBQQVNTOiBzaGFsbG93RXF1YWwgb2YgdW5lcXVhbCBvYmplY3RzIHNob3VsZCBiZSBmYWxz
ZS4KK1BBU1M6IHNoYWxsb3dFcXVhbCBvZiBvYmplY3RzIHdpdGggc2ltaWxhciBhcnJheXMgYXQg
dGhlIHNhbWUga2V5IHNob3VsZCBiZSB0cnVlLgorUEFTUzogc2hhbGxvd0VxdWFsIG9mIG9iamVj
dHMgd2l0aCBzaW1pbGFyIGFycmF5cyBhdCB0aGUgc2FtZSBrZXkgc2hvdWxkIGJlIHRydWUuCitQ
QVNTOiBzaGFsbG93RXF1YWwgb2Ygb2JqZWN0cyB3aXRoIHNpbWlsYXIgYXJyYXlzIGF0IHRoZSBz
YW1lIGtleSBzaG91bGQgYmUgdHJ1ZS4KK1BBU1M6IHNoYWxsb3dFcXVhbCBvZiBvYmplY3RzIHdp
dGggZGlzc2ltaWxhciBhcnJheXMgYXQgdGhlIHNhbWUga2V5IHNob3VsZCBiZSBmYWxzZS4KK1BB
U1M6IHNoYWxsb3dFcXVhbCBvZiBvYmplY3RzIHdpdGggZGlzc2ltaWxhciBhcnJheXMgYXQgdGhl
IHNhbWUga2V5IHNob3VsZCBiZSBmYWxzZS4KIFBBU1M6IHNoYWxsb3dFcXVhbCBvZiBhbiBvYmpl
Y3QgYW5kIG51bGwgc2hvdWxkIGJlIGZhbHNlLgogUEFTUzogc2hhbGxvd0VxdWFsIG9mIGFuIG9i
amVjdCBhbmQgbm9uLW9iamVjdCBzaG91bGQgYmUgZmFsc2UuCiBQQVNTOiBzaGFsbG93RXF1YWwg
b2YgYSBub24tb2JqZWN0IHdpdGggaXRzZWxmIHNob3VsZCBiZSBmYWxzZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMuaHRtbApp
bmRleCBhNmNhMTQ3NmNkZjU4MDczZTIzMDI4ZDk0NTA5OTYwNzZmNTliNjdjLi43ZjQ4MGY0NWQw
NTc0MzE5OWI5M2ZiYTU3MzY0NzI1YTBkNzAxZmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9vYmplY3QtdXRpbGl0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy5odG1sCkBAIC0yNiw2ICsy
NiwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdCghT2JqZWN0LnNoYWxsb3dFcXVhbChvYmoxLCBvYmozKSwgInNoYWxsb3dFcXVhbCBvZiB1
bmVxdWFsIG9iamVjdHMgc2hvdWxkIGJlIGZhbHNlLiIpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KCFPYmplY3Quc2hhbGxvd0VxdWFsKG9iajMsIG9iajEpLCAic2hhbGxv
d0VxdWFsIG9mIHVuZXF1YWwgb2JqZWN0cyBzaG91bGQgYmUgZmFsc2UuIik7CiAKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChPYmplY3Quc2hhbGxvd0VxdWFsKHt4OiBbXX0s
IHt4OiBbXX0pLCAic2hhbGxvd0VxdWFsIG9mIG9iamVjdHMgd2l0aCBzaW1pbGFyIGFycmF5cyBh
dCB0aGUgc2FtZSBrZXkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoT2JqZWN0LnNoYWxsb3dFcXVhbCh7eDogbmV3IEFycmF5fSwge3g6IG5l
dyBBcnJheX0pLCAic2hhbGxvd0VxdWFsIG9mIG9iamVjdHMgd2l0aCBzaW1pbGFyIGFycmF5cyBh
dCB0aGUgc2FtZSBrZXkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoT2JqZWN0LnNoYWxsb3dFcXVhbCh7eDogWzFdfSwge3g6IFsxXX0pLCAi
c2hhbGxvd0VxdWFsIG9mIG9iamVjdHMgd2l0aCBzaW1pbGFyIGFycmF5cyBhdCB0aGUgc2FtZSBr
ZXkgc2hvdWxkIGJlIHRydWUuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdCghT2JqZWN0LnNoYWxsb3dFcXVhbCh7eDogWzFdfSwge3g6IFtdfSksICJzaGFsbG93RXF1
YWwgb2Ygb2JqZWN0cyB3aXRoIGRpc3NpbWlsYXIgYXJyYXlzIGF0IHRoZSBzYW1lIGtleSBzaG91
bGQgYmUgZmFsc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIU9i
amVjdC5zaGFsbG93RXF1YWwoe3g6IG5ldyBBcnJheSgxKX0sIHt4OiBuZXcgQXJyYXl9KSwgInNo
YWxsb3dFcXVhbCBvZiBvYmplY3RzIHdpdGggZGlzc2ltaWxhciBhcnJheXMgYXQgdGhlIHNhbWUg
a2V5IHNob3VsZCBiZSBmYWxzZS4iKTsKKwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KCFPYmplY3Quc2hhbGxvd0VxdWFsKHt9LCBudWxsKSwgInNoYWxsb3dFcXVhbCBvZiBh
biBvYmplY3QgYW5kIG51bGwgc2hvdWxkIGJlIGZhbHNlLiIpOwogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KCFPYmplY3Quc2hhbGxvd0VxdWFsKHt9LCAxLjIzKSwgInNoYWxs
b3dFcXVhbCBvZiBhbiBvYmplY3QgYW5kIG5vbi1vYmplY3Qgc2hvdWxkIGJlIGZhbHNlLiIpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333456</attachid>
            <date>2018-02-09 00:37:10 -0800</date>
            <delta_ts>2018-02-09 12:40:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182634-20180209003709.patch</filename>
            <type>text/plain</type>
            <size>6676</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZDY1MDExZjQ3NzRkMDE1Zjg5NDg1M2JhZDZkMWM3MjRhZmU2MzE1Li45YTdlMWI0OTIxNDIxOTk3
MDU1N2MxNzhhNzMwYTE4Y2VmZTk4Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wMi0wOSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogT2JqZWN0LnNoYWxsb3dFcXVhbCBhbHdheXMgZmFp
bHMgd2hlbiBjb21wYXJpbmcgYXJyYXkgcHJvcGVydHkgdmFsdWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2MzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM3Mzc0NjM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE9iamVjdC5zaGFsbG93RXF1YWwgc2hvdWxkIHVzZSBBcnJheS5zaGFsbG93RXF1
YWwgd2hlbiBjb21wYXJpbmcgcHJvcGVydHkKKyAgICAgICAgdmFsdWVzLCBzaW5jZSBzdHJpY3Rs
eSBjb21wYXJpbmcgb2JqZWN0cy9hcnJheXMgaXMgb25seSB0cnVlIGlmIGJvdGgKKyAgICAgICAg
b3BlcmFuZHMgcmVmZXJlbmNlIHRoZSBzYW1lIE9iamVjdC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9VdGlsaXRpZXMuanM6CisgICAgICAgICh2YWx1ZSk6CisKIDIwMTgtMDItMDgg
IE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBsaXN0aW5nIG9mIENhbnZhc2VzL1Byb2dyYW1zL1JlY29yZGluZ3MgdG8gdGhlIE5h
dmlnYXRpb25TaWRlYmFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IGM3ZjgwYzc1ODRiZGRhZDQwYzk5MTdjNjY0
ZjJhMDg3MzYyMzYyMDUuLmVhYmI4MmM3ZDg5YjBlNWQ2ZDMyYmI2YTExNWIzZDAxNTcxYzBjMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRp
bGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
VXRpbGl0aWVzLmpzCkBAIC00OSwzNyArNDksMzAgQEAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9i
amVjdCwgInNoYWxsb3dFcXVhbCIsCiAgICAgewogICAgICAgICAvLyBDaGVja3MgaWYgdHdvIG9i
amVjdHMgaGF2ZSB0aGUgc2FtZSB0b3AtbGV2ZWwgcHJvcGVydGllcy4KIAotICAgICAgICAvLyBP
bmx5IG9iamVjdHMgY2FuIHByb2NlZWQuCiAgICAgICAgIGlmICghKGEgaW5zdGFuY2VvZiBPYmpl
Y3QpIHx8ICEoYiBpbnN0YW5jZW9mIE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgLy8gQ2hlY2sgZm9yIHN0cmljdCBlcXVhbGl0eSBpbiBjYXNlIHRoZXkgYXJl
IHRoZSBzYW1lIG9iamVjdC4KICAgICAgICAgaWYgKGEgPT09IGIpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgICAgICAvLyBVc2UgYW4gb3B0aW1pemVkIHZlcnNpb24gb2Ygc2hhbGxv
d0VxdWFsIGZvciBhcnJheXMuCi0gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5
LmlzQXJyYXkoYikpCi0gICAgICAgICAgICByZXR1cm4gQXJyYXkuc2hhbGxvd0VxdWFsKGEsIGIp
OworICAgICAgICBpZiAoQXJyYXkuc2hhbGxvd0VxdWFsKGEsIGIpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAgICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3Ip
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdmFyIGFLZXlzID0gT2JqZWN0
LmtleXMoYSk7Ci0gICAgICAgIHZhciBiS2V5cyA9IE9iamVjdC5rZXlzKGIpOwotCi0gICAgICAg
IC8vIENoZWNrIHRoYXQgZWFjaCBvYmplY3QgaGFzIHRoZSBzYW1lIG51bWJlciBvZiBrZXlzLgor
ICAgICAgICBsZXQgYUtleXMgPSBPYmplY3Qua2V5cyhhKTsKKyAgICAgICAgbGV0IGJLZXlzID0g
T2JqZWN0LmtleXMoYik7CiAgICAgICAgIGlmIChhS2V5cy5sZW5ndGggIT09IGJLZXlzLmxlbmd0
aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBDaGVjayBpZiBhbGwg
dGhlIGtleXMgYW5kIHRoZWlyIHZhbHVlcyBhcmUgZXF1YWwuCi0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYUtleXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQg
YiBoYXMgdGhlIHNhbWUga2V5IGFzIGEuCi0gICAgICAgICAgICBpZiAoIShhS2V5c1tpXSBpbiBi
KSkKKyAgICAgICAgZm9yIChsZXQgYUtleSBvZiBhS2V5cykgeworICAgICAgICAgICAgaWYgKCEo
YUtleSBpbiBiKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAg
IC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlcyBhcmUgc3RyaWN0IGVxdWFsIHNpbmNlIHRoaXMgaXMg
b25seQotICAgICAgICAgICAgLy8gYSBzaGFsbG93IGNoZWNrLCBub3QgYSByZWN1cnNpdmUgb25l
LgotICAgICAgICAgICAgaWYgKGFbYUtleXNbaV1dICE9PSBiW2FLZXlzW2ldXSkKKyAgICAgICAg
ICAgIGxldCBhVmFsdWUgPSBhW2FLZXldOworICAgICAgICAgICAgbGV0IGJWYWx1ZSA9IGJbYUtl
eV07CisgICAgICAgICAgICBpZiAoYVZhbHVlICE9PSBiVmFsdWUgJiYgIUFycmF5LnNoYWxsb3dF
cXVhbChhVmFsdWUsIGJWYWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBiNWNkM2I4N2ZhYmEzMDhiYjgwNTFlNWZmNTZkNDYwMmNlOTZkMmFm
Li5kYmQxM2YxYTkzNGI1ZmRhNWMwYjE4MmU2NzU3MjBkYWUwODI4ZGRmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTgtMDItMDkgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE9iamVjdC5zaGFsbG93RXF1YWwgYWx3YXlzIGZhaWxz
IHdoZW4gY29tcGFyaW5nIGFycmF5IHByb3BlcnR5IHZhbHVlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjM0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNzM3NDYzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMuaHRt
bDoKKwogMjAxOC0wMi0wOCAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1hcmtlZCBtZWRpYS9XM0MvdmlkZW8vZXZlbnRzL2V2ZW50X3Byb2dyZXNzX21hbnVhbC5o
dG1sIGFzIGZsYWt5IG9uIG1hY09TIFdLMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5k
ZXggMGU2NTRmNTljOWUwNTAzNWUyNDJiMTA3NzU2YjgyOTczMWVmOGY3Ny4uZmMyZThjYzJhNzA3
YjQ0MDI5MzUzZDNhOTNiOGM2MDQyMWUxNzM1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy1leHBlY3RlZC50
eHQKQEAgLTksNiArOSwxMSBAQCBQQVNTOiBzaGFsbG93RXF1YWwgb2YgZXF1YWwgb2JqZWN0cyBz
aG91bGQgYmUgdHJ1ZS4KIFBBU1M6IHNoYWxsb3dFcXVhbCBvZiBlcXVhbCBvYmplY3RzIHNob3Vs
ZCBiZSB0cnVlLgogUEFTUzogc2hhbGxvd0VxdWFsIG9mIHVuZXF1YWwgb2JqZWN0cyBzaG91bGQg
YmUgZmFsc2UuCiBQQVNTOiBzaGFsbG93RXF1YWwgb2YgdW5lcXVhbCBvYmplY3RzIHNob3VsZCBi
ZSBmYWxzZS4KK1BBU1M6IHNoYWxsb3dFcXVhbCBvZiBvYmplY3RzIHdpdGggc2ltaWxhciBhcnJh
eXMgYXQgdGhlIHNhbWUga2V5IHNob3VsZCBiZSB0cnVlLgorUEFTUzogc2hhbGxvd0VxdWFsIG9m
IG9iamVjdHMgd2l0aCBzaW1pbGFyIGFycmF5cyBhdCB0aGUgc2FtZSBrZXkgc2hvdWxkIGJlIHRy
dWUuCitQQVNTOiBzaGFsbG93RXF1YWwgb2Ygb2JqZWN0cyB3aXRoIHNpbWlsYXIgYXJyYXlzIGF0
IHRoZSBzYW1lIGtleSBzaG91bGQgYmUgdHJ1ZS4KK1BBU1M6IHNoYWxsb3dFcXVhbCBvZiBvYmpl
Y3RzIHdpdGggZGlzc2ltaWxhciBhcnJheXMgYXQgdGhlIHNhbWUga2V5IHNob3VsZCBiZSBmYWxz
ZS4KK1BBU1M6IHNoYWxsb3dFcXVhbCBvZiBvYmplY3RzIHdpdGggZGlzc2ltaWxhciBhcnJheXMg
YXQgdGhlIHNhbWUga2V5IHNob3VsZCBiZSBmYWxzZS4KIFBBU1M6IHNoYWxsb3dFcXVhbCBvZiBh
biBvYmplY3QgYW5kIG51bGwgc2hvdWxkIGJlIGZhbHNlLgogUEFTUzogc2hhbGxvd0VxdWFsIG9m
IGFuIG9iamVjdCBhbmQgbm9uLW9iamVjdCBzaG91bGQgYmUgZmFsc2UuCiBQQVNTOiBzaGFsbG93
RXF1YWwgb2YgYSBub24tb2JqZWN0IHdpdGggaXRzZWxmIHNob3VsZCBiZSBmYWxzZS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL29iamVjdC11dGlsaXRpZXMu
aHRtbAppbmRleCBhNmNhMTQ3NmNkZjU4MDczZTIzMDI4ZDk0NTA5OTYwNzZmNTliNjdjLi43ZjQ4
MGY0NWQwNTc0MzE5OWI5M2ZiYTU3MzY0NzI1YTBkNzAxZmEzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9vYmplY3QtdXRpbGl0aWVzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvb2JqZWN0LXV0aWxpdGllcy5odG1sCkBAIC0y
Niw2ICsyNiwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdCghT2JqZWN0LnNoYWxsb3dFcXVhbChvYmoxLCBvYmozKSwgInNoYWxsb3dFcXVh
bCBvZiB1bmVxdWFsIG9iamVjdHMgc2hvdWxkIGJlIGZhbHNlLiIpOwogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KCFPYmplY3Quc2hhbGxvd0VxdWFsKG9iajMsIG9iajEpLCAi
c2hhbGxvd0VxdWFsIG9mIHVuZXF1YWwgb2JqZWN0cyBzaG91bGQgYmUgZmFsc2UuIik7CiAKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChPYmplY3Quc2hhbGxvd0VxdWFsKHt4
OiBbXX0sIHt4OiBbXX0pLCAic2hhbGxvd0VxdWFsIG9mIG9iamVjdHMgd2l0aCBzaW1pbGFyIGFy
cmF5cyBhdCB0aGUgc2FtZSBrZXkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoT2JqZWN0LnNoYWxsb3dFcXVhbCh7eDogbmV3IEFycmF5fSwg
e3g6IG5ldyBBcnJheX0pLCAic2hhbGxvd0VxdWFsIG9mIG9iamVjdHMgd2l0aCBzaW1pbGFyIGFy
cmF5cyBhdCB0aGUgc2FtZSBrZXkgc2hvdWxkIGJlIHRydWUuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoT2JqZWN0LnNoYWxsb3dFcXVhbCh7eDogWzFdfSwge3g6IFsx
XX0pLCAic2hhbGxvd0VxdWFsIG9mIG9iamVjdHMgd2l0aCBzaW1pbGFyIGFycmF5cyBhdCB0aGUg
c2FtZSBrZXkgc2hvdWxkIGJlIHRydWUuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdCghT2JqZWN0LnNoYWxsb3dFcXVhbCh7eDogWzFdfSwge3g6IFtdfSksICJzaGFs
bG93RXF1YWwgb2Ygb2JqZWN0cyB3aXRoIGRpc3NpbWlsYXIgYXJyYXlzIGF0IHRoZSBzYW1lIGtl
eSBzaG91bGQgYmUgZmFsc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoIU9iamVjdC5zaGFsbG93RXF1YWwoe3g6IG5ldyBBcnJheSgxKX0sIHt4OiBuZXcgQXJyYXl9
KSwgInNoYWxsb3dFcXVhbCBvZiBvYmplY3RzIHdpdGggZGlzc2ltaWxhciBhcnJheXMgYXQgdGhl
IHNhbWUga2V5IHNob3VsZCBiZSBmYWxzZS4iKTsKKwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KCFPYmplY3Quc2hhbGxvd0VxdWFsKHt9LCBudWxsKSwgInNoYWxsb3dFcXVh
bCBvZiBhbiBvYmplY3QgYW5kIG51bGwgc2hvdWxkIGJlIGZhbHNlLiIpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFPYmplY3Quc2hhbGxvd0VxdWFsKHt9LCAxLjIzKSwg
InNoYWxsb3dFcXVhbCBvZiBhbiBvYmplY3QgYW5kIG5vbi1vYmplY3Qgc2hvdWxkIGJlIGZhbHNl
LiIpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>