<?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>177468</bug_id>
          
          <creation_ts>2017-09-25 15:04:25 -0700</creation_ts>
          <short_desc>Web Inspector: Improve Table scrolling performance</short_desc>
          <delta_ts>2017-09-27 12:16:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</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>1352448</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-25 15:04:25 -0700</bug_when>
    <thetext>Improve Table scrolling performance.

I was seeing a lot of work while scrolling recalculating styles by checking the width/height of the table. During scrolling these values won&apos;t change. Only a resize will change these values. So we can cache them and avoid recalculating them unless we&apos;ve actually resized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352453</commentid>
    <comment_count>1</comment_count>
      <attachid>321752</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-25 15:14:03 -0700</bug_when>
    <thetext>Created attachment 321752
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352548</commentid>
    <comment_count>2</comment_count>
      <attachid>321752</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-25 18:37:50 -0700</bug_when>
    <thetext>Comment on attachment 321752
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:908
&gt; +        // Completely remove all rows and add new ones.

I believe this is the only remaining work that shows in profiles. However the issue is less with scrolling and more with -reloadData needing to throw out old rows and create all new ones. If this actually ends up being a problem we can try using a pool of elements or an approach that doesn&apos;t remove and reinsert elements every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352749</commentid>
    <comment_count>3</comment_count>
      <attachid>321752</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-09-26 11:01:07 -0700</bug_when>
    <thetext>Comment on attachment 321752
[PATCH] Proposed Fix

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:671
&gt; +        let availableHeight = this._cachedHeight;

I&apos;m not sure about usage of these locals. Can you get rid of them, or uses them instead of the member after this point?

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:968
&gt; +            if (row.__widthGeneration !== this._widthsGeneration &amp;&amp; row !== this._fillerRow) {

In the interest of reducing indent, can you make this an early continue if there&apos;s nothing to do?

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:973
&gt; +                row.__widthGeneration = this._widthsGeneration;

It bothers me that widthGeneration and widthsGeneration are spelled differently. Do they need to differ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352754</commentid>
    <comment_count>4</comment_count>
      <attachid>321752</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-26 11:10:27 -0700</bug_when>
    <thetext>Comment on attachment 321752
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:973
&gt;&gt; +                row.__widthGeneration = this._widthsGeneration;
&gt; 
&gt; It bothers me that widthGeneration and widthsGeneration are spelled differently. Do they need to differ?

Haha, this was almost certainly a find and replace mistake on my part. I&apos;ll clean this up. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352767</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-26 11:23:09 -0700</bug_when>
    <thetext>&lt;https://trac.webkit.org/changeset/222509/webkit&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353247</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:16:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/34692907&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321752</attachid>
            <date>2017-09-25 15:14:03 -0700</date>
            <delta_ts>2017-09-26 11:10:27 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>scroll-perf-1.patch</filename>
            <type>text/plain</type>
            <size>10862</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdkMWQ0YmVjNWY3Li5mYWI3ZGI0MTg3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTctMDktMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBJbXByb3ZlIFRhYmxlIHNjcm9sbGluZyBwZXJmb3JtYW5jZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyByZWR1Y2VzIHdvcmsgZHVyaW5nIHNj
cm9sbGluZyB1cGRhdGVzIGluIHR3byB3YXlzLgorCisgICAgICAgIDEuIEF2b2lkIHJlY2FsY3Vs
YXRpbmcgdGhlIHdpZHRoL2hlaWdodCBvZiB0aGUgVGFibGUgb24gc2Nyb2xsLgorICAgICAgICAg
IC0gV2Ugb25seSBuZWVkIHRvIHJlY2FsY3VsYXRlIHNpemVzIGlmIHRoZSB2aWV3IGNoYW5nZXMg
c2l6ZS4KKyAgICAgICAgMi4gQXZvaWQgcmVzZXR0aW5nIHNpemVzIG9uIGFsbCBjZWxscyBpZiB0
aGUgc2l6ZXMgZGlkIG5vdCBjaGFuZ2UuCisgICAgICAgICAgLSBFbnVtZXJhdGluZyBhbmQgc2V0
dGluZyBzdHlsZS53aWR0aCB2YWx1ZXMgd2FzIHNob3dpbmcgdXAgaW4gcHJvZmlsZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzOgorICAgICAgICAoV0kuVGFibGUp
OgorICAgICAgICBOZXcgbWVtYmVyIHZhcmlhYmxlcyBmb3IgYSBjYWNoZWQgd2lkdGgvaGVpZ2h0
IG9mIHRoZSBzY3JvbGxhYmxlIHJlZ2lvbi4KKyAgICAgICAgX2NhY2hlZFdpZHRoIGlzIHRoZSBz
YW1lIGFzIF9jYWNoZWRTY3JvbGxhYmxlSGVpZ2h0IGJ1dCB0aGV5IGNvdWxkIGJlCisgICAgICAg
IGRpZmZlcmVudCBzbyBJIGp1c3Qga2VwdCB0aGVtIHNlcGFyYXRlIGZvciBub3cuIEFsc28gc3dp
dGNoIHRvCisgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdCB3aGljaCBnZXRzIHVzIGEgYmV0
dGVyIHZhbHVlIHRoZW4KKyAgICAgICAgb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0LgorCisgICAg
ICAgIChXSS5UYWJsZS5wcm90b3R5cGUucmVzaXplKToKKyAgICAgICAgQ2xlYXIgY2FjaGVkIHNp
emUgYW5kIHJlbGF5b3V0LgorCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUubGF5b3V0KToK
KyAgICAgICAgSWYgd2UgZGlkIG5vdCByZXNpemUsIGxheW91dCB3aXRob3V0IHJlY2FsY3VsYXRp
bmcgc2l6ZXMuCisKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5yZXNpemVyRHJhZ2dpbmcp
OgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl9nZXRPckNyZWF0ZVJvdyk6CisgICAgICAg
IFdoZW4gY29sdW1uIHdpZHRocyBjaGFuZ2UgaW5jcmVtZW50IHRoZSB3aWR0aCBnZW5lcmF0aW9u
LiBUaGlzIHdpbGwgbGV0CisgICAgICAgIHVzIHF1aWNrbHkgY2hlY2sgaWYgYSByb3cncyBjZWxs
cyBhcmUgYXBwcm9wcmlhdGVseSBzaXplZCBvciBub3QuCisKKyAgICAgICAgKFdJLlRhYmxlLnBy
b3RvdHlwZS5fcmVzaXplQ29sdW1uc0FuZEZpbGxlcik6CisgICAgICAgIENhY2hlIHdpZHRoIHZh
bHVlcyBhZnRlciByZWNhbGN1bGF0aW5nLiBQcm92aWRlIGEgZmFzdCBwYXRoIGlmIHZhbHVlcwor
ICAgICAgICBoYXZlIG5vdCBjaGFuZ2VkLgorCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUu
X3VwZGF0ZVZpc2libGVSb3dzKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5fdXBkYXRl
RmlsbGVyUm93V2l0aE5ld0hlaWdodCk6CisgICAgICAgIEZhY3RvciBvdXQgdXBkYXRpbmcgdGhl
IGZpbGxlciByb3cgaW50byBhIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKFdJLlRhYmxl
LnByb3RvdHlwZS5fYXBwbHlDb2x1bW5XaWR0aHMpOgorICAgICAgICBBbHdheXMgdXBkYXRlIHRo
ZSB3aWR0aCBnZW5lcmF0aW9uIG9mIGEgcm93IGFmdGVyIHNldHRpbmcgaXRzIGNlbGwgd2lkdGhz
LgorCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX2FwcGx5Q29sdW1uV2lkdGhzVG9Db2x1
bW5zSWZOZWVkZWQpOgorICAgICAgICBGYXN0IHBhdGggb25seSB1cGRhdGVzIHJvdyBjZWxsIHdp
ZHRocyBpZiB0aGV5IG5lZWQgdG8gY2hhbmdlLgorCiAyMDE3LTA5LTIyICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW5jbHVk
ZSBhIHRhYmxlIGluIE5ldyBOZXR3b3JrIFRhYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qcwppbmRleCBkNDA5ZjJmYjc0My4uM2YwM2M0
ZTkxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYmxlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYmxlLmpzCkBAIC04MCw2ICs4MCw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5zID0gW107CiAgICAgICAg
IHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBbXTsKIAorICAgICAgICB0aGlzLl93aWR0aEdlbmVyYXRp
b24gPSAxOwogICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHMgPSBudWxsOyAvLyBDYWxjdWxhdGVk
IGluIF9yZXNpemVDb2x1bW5zQW5kRmlsbGVyLgogICAgICAgICB0aGlzLl9maWxsZXJIZWlnaHQg
PSAwOyAvLyBDYWxjdWxhdGVkIGluIF9yZXNpemVDb2x1bW5zQW5kRmlsbGVyLgogCkBAIC0xMDAs
OCArMTAxLDEwIEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAg
ICAgIHRoaXMuX3NvcnRDb2x1bW5JZGVudGlmaWVyU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKHRo
aXMuX2lkZW50aWZpZXIgKyAiLXNvcnQiLCB0aGlzLl9zb3J0Q29sdW1uSWRlbnRpZmllcik7CiAg
ICAgICAgIHRoaXMuX2NvbHVtblZpc2liaWxpdHlTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcodGhp
cy5faWRlbnRpZmllciArICItY29sdW1uLXZpc2liaWxpdHkiLCB7fSk7CiAKKyAgICAgICAgdGhp
cy5fY2FjaGVkV2lkdGggPSBOYU47CisgICAgICAgIHRoaXMuX2NhY2hlZEhlaWdodCA9IE5hTjsK
ICAgICAgICAgdGhpcy5fY2FjaGVkU2Nyb2xsVG9wID0gTmFOOwotICAgICAgICB0aGlzLl9jYWNo
ZWRTY3JvbGxhYmxlT2Zmc2V0SGVpZ2h0ID0gTmFOOworICAgICAgICB0aGlzLl9jYWNoZWRTY3Jv
bGxhYmxlSGVpZ2h0ID0gTmFOOwogICAgICAgICB0aGlzLl9wcmV2aW91c1JldmVhbGVkUm93Q291
bnQgPSBOYU47CiAgICAgICAgIHRoaXMuX3RvcFNwYWNlckhlaWdodCA9IE5hTjsKICAgICAgICAg
dGhpcy5fYm90dG9tU3BhY2VySGVpZ2h0ID0gTmFOOwpAQCAtMTk3LDYgKzIwMCw5IEBAIFdJLlRh
YmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICByZXNpemUoKQogICAgIHsK
KyAgICAgICAgdGhpcy5fY2FjaGVkV2lkdGggPSBOYU47CisgICAgICAgIHRoaXMuX2NhY2hlZEhl
aWdodCA9IE5hTjsKKwogICAgICAgICB0aGlzLl9yZXNpemVDb2x1bW5zQW5kRmlsbGVyKCk7CiAg
ICAgfQogCkBAIC0yMDUsNyArMjExLDYgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgdGhpcy5fY2FjaGVkUm93cy5jbGVhcigpOwogCiAgICAgICAgIHRo
aXMuX3ByZXZpb3VzUmV2ZWFsZWRSb3dDb3VudCA9IE5hTjsKLQogICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7CiAgICAgfQogCkBAIC00NDEsNyArNDQ2LDEwIEBAIFdJLlRhYmxlID0gY2xhc3Mg
VGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVWaXNpYmxl
Um93cygpOwogCi0gICAgICAgIHRoaXMucmVzaXplKCk7CisgICAgICAgIGlmICh0aGlzLmxheW91
dFJlYXNvbiA9PT0gV0kuVmlldy5MYXlvdXRSZWFzb24uUmVzaXplKQorICAgICAgICAgICAgdGhp
cy5yZXNpemUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fcmVzaXplQ29sdW1u
c0FuZEZpbGxlcigpOwogICAgIH0KIAogICAgIC8vIFJlc2l6ZXIgZGVsZWdhdGUKQEAgLTU0OCw2
ICs1NTYsOSBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICAgICAgZGVsdGEgLT0gaW5jcmVtZW50YWxEZWx0YTsKICAgICAgICAgfQogCisgICAgICAgIC8v
IFdlIGhhdmUgbmV3IGNvbHVtbiB3aWR0aHMuCisgICAgICAgIHRoaXMuX3dpZHRoc0dlbmVyYXRp
b24rKzsKKwogICAgICAgICB0aGlzLl9hcHBseUNvbHVtbldpZHRocygpOwogICAgIH0KIApAQCAt
NjExLDYgKzYyMiw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAK
ICAgICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CiAgICAgICAg
IHJvdy5fX2luZGV4ID0gcm93SW5kZXg7CisgICAgICAgIHJvdy5fX3dpZHRoR2VuZXJhdGlvbiA9
IDA7CiAgICAgICAgIGlmIChyb3dJbmRleCA9PT0gdGhpcy5fc2VsZWN0ZWRSb3dJbmRleCkKICAg
ICAgICAgICAgIHJvdy5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwogCkBAIC02NDEsMTkgKzY1
MywzNiBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogCiAgICAgX3Jl
c2l6ZUNvbHVtbnNBbmRGaWxsZXIoKQogICAgIHsKLSAgICAgICAgdGhpcy5fZmlsbGVyUm93LnJl
bW92ZSgpOworICAgICAgICBsZXQgb2xkV2lkdGggPSB0aGlzLl9jYWNoZWRXaWR0aDsKKyAgICAg
ICAgbGV0IG9sZEhlaWdodCA9IHRoaXMuX2NhY2hlZEhlaWdodDsKKyAgICAgICAgbGV0IG9sZE51
bWJlck9mUm93cyA9IHRoaXMuX2NhY2hlZE51bWJlck9mUm93czsKIAotICAgICAgICBsZXQgYXZh
aWxhYmxlV2lkdGggPSB0aGlzLl9saXN0RWxlbWVudC5vZmZzZXRXaWR0aDsKLSAgICAgICAgbGV0
IGF2YWlsYWJsZUhlaWdodCA9IHRoaXMuX2xpc3RFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICAg
ICAgaWYgKGlzTmFOKHRoaXMuX2NhY2hlZFdpZHRoKSkgeworICAgICAgICAgICAgbGV0IGJvdW5k
aW5nQ2xpZW50UmVjdCA9IHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7CisgICAgICAgICAgICB0aGlzLl9jYWNoZWRXaWR0aCA9IGJvdW5kaW5nQ2xp
ZW50UmVjdC53aWR0aDsKKyAgICAgICAgICAgIHRoaXMuX2NhY2hlZEhlaWdodCA9IGJvdW5kaW5n
Q2xpZW50UmVjdC5oZWlnaHQ7CisgICAgICAgIH0KIAogICAgICAgICAvLyBOb3QgdmlzaWJsZSB5
ZXQuCi0gICAgICAgIGlmICghYXZhaWxhYmxlV2lkdGgpCisgICAgICAgIGlmICghdGhpcy5fY2Fj
aGVkV2lkdGgpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbGV0IGF2YWlsYWJsZVdp
ZHRoID0gdGhpcy5fY2FjaGVkV2lkdGg7CisgICAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSB0
aGlzLl9jYWNoZWRIZWlnaHQ7CisKICAgICAgICAgbGV0IG51bWJlck9mUm93cyA9IHRoaXMuX2Rh
dGFTb3VyY2UudGFibGVOdW1iZXJPZlJvd3ModGhpcyk7CisgICAgICAgIHRoaXMuX2NhY2hlZE51
bWJlck9mUm93cyA9IG51bWJlck9mUm93czsKKwogICAgICAgICBsZXQgY29udGVudEhlaWdodCA9
IG51bWJlck9mUm93cyAqIHRoaXMuX3Jvd0hlaWdodDsKICAgICAgICAgdGhpcy5fZmlsbGVySGVp
Z2h0ID0gTWF0aC5tYXgoYXZhaWxhYmxlSGVpZ2h0IC0gY29udGVudEhlaWdodCwgMCk7CiAKKyAg
ICAgICAgLy8gTm8gY2hhbmdlIHRvIGxheW91dCBtZXRyaWNzIHNvIG5vIHJlc2l6aW5nIGlzIG5l
ZWRlZC4KKyAgICAgICAgaWYgKHRoaXMuX2NvbHVtbldpZHRocyAmJiBvbGRXaWR0aCA9PT0gdGhp
cy5fY2FjaGVkV2lkdGggJiYgb2xkSGVpZ2h0ID09PSB0aGlzLl9jYWNoZWRIZWlnaHQgJiYgb2xk
TnVtYmVyT2ZSb3dzID09PSB0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3MpIHsKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZUZpbGxlclJvd1dpdGhOZXdIZWlnaHQoKTsKKyAgICAgICAgICAgIHRoaXMu
X2FwcGx5Q29sdW1uV2lkdGhzVG9Db2x1bW5zSWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIGxldCBsb2NrZWRXaWR0aCA9IDA7CiAgICAgICAgIGxl
dCBsb2NrZWRDb2x1bW5Db3VudCA9IDA7CiAgICAgICAgIGxldCB0b3RhbE1pbmltdW1XaWR0aCA9
IDA7CkBAIC04MTgsMTYgKzg0NywxMiBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMg
V0kuVmlldwogICAgICAgICAgICAgZGlzdHJpYnV0ZVJlbWFpbmluZ1BpeGVscy5jYWxsKHRoaXMs
IHJlbWFpbmRlciwgc2hyaW5raW5nKTsKICAgICAgICAgfQogCisgICAgICAgIC8vIFdlIGhhdmUg
bmV3IGNvbHVtbiB3aWR0aHMuCisgICAgICAgIHRoaXMuX3dpZHRoc0dlbmVyYXRpb24rKzsKKwog
ICAgICAgICAvLyBBcHBseSB3aWR0aHMuCiAKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGxlckhlaWdo
dCA+IDApIHsKLSAgICAgICAgICAgIGNvbnN0IGhlaWdodFBhc3RFZGdlID0gMTAwOyAvLyBFeHRl
bmQgcGFzdCBlZGdlIHNvbWUgcmVhc29uYWJsZSBhbW91bnQuCi0gICAgICAgICAgICB0aGlzLl9m
aWxsZXJIZWlnaHQgKz0gdGhpcy5fcm93SGVpZ2h0ICsgaGVpZ2h0UGFzdEVkZ2U7Ci0gICAgICAg
ICAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5vdC1zY3Jv
bGxhYmxlIik7Ci0gICAgICAgICAgICB0aGlzLl9saXN0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9maWxsZXJSb3cpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3Njcm9sbENv
bnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgibm90LXNjcm9sbGFibGUiKTsKLQorICAg
ICAgICB0aGlzLl91cGRhdGVGaWxsZXJSb3dXaXRoTmV3SGVpZ2h0KCk7CiAgICAgICAgIHRoaXMu
X2FwcGx5Q29sdW1uV2lkdGhzKCk7CiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1l
bnRzKCk7CiAgICAgfQpAQCAtODQxLDExICs4NjYsMTEgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJs
ZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKGlzTmFOKHRoaXMuX2NhY2hlZFNjcm9sbFRv
cCkpCiAgICAgICAgICAgICB0aGlzLl9jYWNoZWRTY3JvbGxUb3AgPSB0aGlzLl9zY3JvbGxDb250
YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKIAotICAgICAgICBpZiAoaXNOYU4odGhpcy5fY2FjaGVk
U2Nyb2xsYWJsZU9mZnNldEhlaWdodCkgfHwgIXRoaXMuX2NhY2hlZFNjcm9sbGFibGVPZmZzZXRI
ZWlnaHQpCi0gICAgICAgICAgICB0aGlzLl9jYWNoZWRTY3JvbGxhYmxlT2Zmc2V0SGVpZ2h0ID0g
dGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgICAgIGlmIChp
c05hTih0aGlzLl9jYWNoZWRTY3JvbGxhYmxlSGVpZ2h0KSB8fCAhdGhpcy5fY2FjaGVkU2Nyb2xs
YWJsZUhlaWdodCkKKyAgICAgICAgICAgIHRoaXMuX2NhY2hlZFNjcm9sbGFibGVIZWlnaHQgPSB0
aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdo
dDsKIAogICAgICAgICBsZXQgc2Nyb2xsVG9wID0gdGhpcy5fY2FjaGVkU2Nyb2xsVG9wOwotICAg
ICAgICBsZXQgc2Nyb2xsYWJsZU9mZnNldEhlaWdodCA9IHRoaXMuX2NhY2hlZFNjcm9sbGFibGVP
ZmZzZXRIZWlnaHQ7CisgICAgICAgIGxldCBzY3JvbGxhYmxlT2Zmc2V0SGVpZ2h0ID0gdGhpcy5f
Y2FjaGVkU2Nyb2xsYWJsZUhlaWdodDsKIAogICAgICAgICBsZXQgdmlzaWJsZVJvd0NvdW50ID0g
TWF0aC5jZWlsKChzY3JvbGxhYmxlT2Zmc2V0SGVpZ2h0ICsgKG92ZXJmbG93UGFkZGluZyAqIDIp
KSAvIHJvd0hlaWdodCk7CiAgICAgICAgIGxldCBjdXJyZW50VG9wTWFyZ2luID0gdGhpcy5fdG9w
U3BhY2VySGVpZ2h0OwpAQCAtODgwLDYgKzkwNSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUg
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3Zpc2libGVSb3dJbmRleFN0YXJ0ID0gdG9w
SGlkZGVuUm93Q291bnQ7CiAgICAgICAgIHRoaXMuX3Zpc2libGVSb3dJbmRleEVuZCA9IHRoaXMu
X3Zpc2libGVSb3dJbmRleFN0YXJ0ICsgdmlzaWJsZVJvd0NvdW50OwogCisgICAgICAgIC8vIENv
bXBsZXRlbHkgcmVtb3ZlIGFsbCByb3dzIGFuZCBhZGQgbmV3IG9uZXMuCiAgICAgICAgIHRoaXMu
X2xpc3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuX2xpc3RFbGVtZW50
LmNsYXNzTGlzdC50b2dnbGUoIm9kZC1maXJzdC16ZWJyYS1zdHJpcGUiLCAhISh0b3BIaWRkZW5S
b3dDb3VudCAlIDIpKTsKIApAQCAtODkxLDYgKzkxNywyNyBAQCBXSS5UYWJsZSA9IGNsYXNzIFRh
YmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9saXN0RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9maWxsZXJSb3cpOwogICAgIH0KIAorICAgIF91cGRhdGVGaWxsZXJSb3dXaXRoTmV3
SGVpZ2h0KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZmlsbGVySGVpZ2h0KSB7CisgICAg
ICAgICAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIm5v
dC1zY3JvbGxhYmxlIik7CisgICAgICAgICAgICB0aGlzLl9maWxsZXJSb3cucmVtb3ZlKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zY3JvbGxDb250
YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5vdC1zY3JvbGxhYmxlIik7CisKKyAgICAgICAg
Ly8gRXh0ZW5kIHBhc3QgZWRnZSBzb21lIHJlYXNvbmFibGUgYW1vdW50LiBBdCBsZWFzdCAyMDBw
eC4KKyAgICAgICAgY29uc3QgcGFkZGluZ1Bhc3RUaGVFZGdlID0gMjAwOworICAgICAgICB0aGlz
Ll9maWxsZXJIZWlnaHQgKz0gcGFkZGluZ1Bhc3RUaGVFZGdlOworCisgICAgICAgIGZvciAobGV0
IGNlbGwgb2YgdGhpcy5fZmlsbGVyUm93LmNoaWxkcmVuKQorICAgICAgICAgICAgY2VsbC5zdHls
ZS5oZWlnaHQgPSB0aGlzLl9maWxsZXJIZWlnaHQgKyAicHgiOworCisgICAgICAgIGlmICghdGhp
cy5fZmlsbGVyUm93LnBhcmVudEVsZW1lbnQpCisgICAgICAgICAgICB0aGlzLl9saXN0RWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9maWxsZXJSb3cpOworICAgIH0KKwogICAgIF9hcHBseUNvbHVt
bldpZHRocygpCiAgICAgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3Zpc2li
bGVDb2x1bW5zLmxlbmd0aDsgKytpKQpAQCAtOTAyLDExICs5NDksOSBAQCBXSS5UYWJsZSA9IGNs
YXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBmb3IgKGxldCByb3cgb2YgdGhpcy5f
bGlzdEVsZW1lbnQuY2hpbGRyZW4pIHsKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
cm93LmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHJvdy5jaGlsZHJlbltp
XS5zdHlsZS53aWR0aCA9IHRoaXMuX2NvbHVtbldpZHRoc1tpXSArICJweCI7CisgICAgICAgICAg
ICByb3cuX193aWR0aEdlbmVyYXRpb24gPSB0aGlzLl93aWR0aHNHZW5lcmF0aW9uOwogICAgICAg
ICB9CiAKLSAgICAgICAgZm9yIChsZXQgY2VsbCBvZiB0aGlzLl9maWxsZXJSb3cuY2hpbGRyZW4p
Ci0gICAgICAgICAgICBjZWxsLnN0eWxlLmhlaWdodCA9IHRoaXMuX2ZpbGxlckhlaWdodCArICJw
eCI7Ci0KICAgICAgICAgLy8gQ3JlYXRlIG1pc3NpbmcgY2VsbHMgYWZ0ZXIgd2UndmUgc2l6ZWQu
CiAgICAgICAgIGZvciAobGV0IHJvdyBvZiB0aGlzLl9saXN0RWxlbWVudC5jaGlsZHJlbikgewog
ICAgICAgICAgICAgaWYgKHJvdyAhPT0gdGhpcy5fZmlsbGVyUm93KSB7CkBAIC05MTYsNiArOTYx
LDIwIEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBfYXBwbHlDb2x1bW5XaWR0aHNUb0NvbHVtbnNJZk5lZWRlZCgpCisgICAg
eworICAgICAgICAvLyBBcHBseSBhbmQgY3JlYXRlIG1pc3NpbmcgY2VsbHMgb25seSBpZiByb3cg
bmVlZHMgYSB3aWR0aCB1cGRhdGUuCisgICAgICAgIGZvciAobGV0IHJvdyBvZiB0aGlzLl9saXN0
RWxlbWVudC5jaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKHJvdy5fX3dpZHRoR2VuZXJhdGlv
biAhPT0gdGhpcy5fd2lkdGhzR2VuZXJhdGlvbiAmJiByb3cgIT09IHRoaXMuX2ZpbGxlclJvdykg
eworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93LmNoaWxkcmVuLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgICAgICAgICByb3cuY2hpbGRyZW5baV0uc3R5bGUud2lkdGgg
PSB0aGlzLl9jb2x1bW5XaWR0aHNbaV0gKyAicHgiOworICAgICAgICAgICAgICAgIGlmIChyb3cu
Y2hpbGRyZW4ubGVuZ3RoICE9PSB0aGlzLl92aXNpYmxlQ29sdW1ucy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUm93KHJvdyk7CisgICAgICAgICAgICAgICAgcm93
Ll9fd2lkdGhHZW5lcmF0aW9uID0gdGhpcy5fd2lkdGhzR2VuZXJhdGlvbjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIF9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl92aXNpYmxlQ29sdW1ucy5sZW5ndGgg
PT09IHRoaXMuX2NvbHVtbldpZHRocy5sZW5ndGgpOwo=
</data>
<flag name="review"
          id="341713"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>