<?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>196890</bug_id>
          
          <creation_ts>2019-04-12 18:26:42 -0700</creation_ts>
          <short_desc>Web Inspector: Heap: don&apos;t use recursion when calculating root paths</short_desc>
          <delta_ts>2019-04-15 16:49:10 -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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <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>1526972</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-04-12 18:26:42 -0700</bug_when>
    <thetext>If a path is extremely deep, it can cause a stack overflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526975</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-12 18:28:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/49870751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526976</commentid>
    <comment_count>2</comment_count>
      <attachid>367366</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-04-12 18:30:30 -0700</bug_when>
    <thetext>Created attachment 367366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527272</commentid>
    <comment_count>3</comment_count>
      <attachid>367366</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-04-15 11:18:04 -0700</bug_when>
    <thetext>Comment on attachment 367366
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:756
&gt; +        for (let i = 0; i &lt; stack.length; ++i) {
&gt; +            let {currentPath, nodeOrdinal} = stack[i];

This list is not being treated as a stack. In fact it is always growing because nothing nothing is ever removed.

Normally when we have a stack approach like this we process it to exhaustion like this:

    let stack = [{...entry...}];
    while (stack.length) {
        let entry = stack.pop();
        // Process entry, maybe push new stack entries.
    }

Which I think could be done here as long as you convert these two lines to:

    while (stack.length) {
        let {currentPath, nodeOridinal} = stack.pop();
        ...

That said, items are going to be processes on the stack in reverse order... so to get unchanging output you could iterate the edges in forward order such as:

    while (stack.length) {
        let {currentPath, nodeOridinal} = stack.unshift();
        ...

That should get you output that is consistent with the current code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527423</commentid>
    <comment_count>4</comment_count>
      <attachid>367460</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-04-15 14:35:21 -0700</bug_when>
    <thetext>Created attachment 367460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527513</commentid>
    <comment_count>5</comment_count>
      <attachid>367460</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-15 16:49:09 -0700</bug_when>
    <thetext>Comment on attachment 367460
Patch

Clearing flags on attachment: 367460

Committed r244308: &lt;https://trac.webkit.org/changeset/244308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527514</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-15 16:49:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367366</attachid>
            <date>2019-04-12 18:30:30 -0700</date>
            <delta_ts>2019-04-15 14:35:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>196890.diff</filename>
            <type>text/plain</type>
            <size>3861</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDkzODM1NTE2MTc2Li5kZDJjMzQ1ZjBjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQtMTIgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhl
YXA6IGRvbid0IHVzZSByZWN1cnNpb24gd2hlbiBjYWxjdWxhdGluZyByb290IHBhdGhzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY4OTAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ5ODcwNzUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Xb3JrZXJzL0hlYXBTbmFwc2hv
dC9IZWFwU25hcHNob3QuanM6CisgICAgICAgIChIZWFwU25hcHNob3QucHJvdG90eXBlLnNob3J0
ZXN0R0NSb290UGF0aCk6CisgICAgICAgIChIZWFwU25hcHNob3QucHJvdG90eXBlLl9kZXRlcm1p
bmVHQ1Jvb3RQYXRocyk6CisgICAgICAgIChIZWFwU25hcHNob3QucHJvdG90eXBlLl9nY1Jvb3RQ
YXRoZXMudmlzaXROb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2djUm9vdFBhdGhlcyk6IERlbGV0ZWQuCisKIDIwMTktMDQtMTEgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04o
cjI0NDE5NSk6IFRpbWVsaW5lczogdW5hYmxlIHRvIHRha2UgaGVhcCBzbmFwc2hvdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9IZWFwU25h
cHNob3QvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvV29ya2Vycy9IZWFwU25hcHNob3QvSGVhcFNuYXBzaG90LmpzCmluZGV4IDE2YjQ1MDQ0ZDNj
Li42NDcxN2QwODA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvV29ya2Vycy9IZWFwU25hcHNob3QvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1dvcmtlcnMvSGVhcFNuYXBzaG90L0hlYXBTbmFw
c2hvdC5qcwpAQCAtMjc4LDcgKzI3OCw3IEBAIEhlYXBTbmFwc2hvdCA9IGNsYXNzIEhlYXBTbmFw
c2hvdAogICAgICAgICAvLyBJbnRlcm5hbCBub2RlcyBhcmUgYXZvaWRlZCwgc28gaWYgdGhlIHBh
dGggaXMgZW1wdHkgdGhpcwogICAgICAgICAvLyBub2RlIGlzIGVpdGhlciBhIGdjUm9vdCBvciBv
bmx5IHJlYWNoYWJsZSB2aWEgSW50ZXJuYWwgbm9kZXMuCiAKLSAgICAgICAgbGV0IHBhdGhzID0g
dGhpcy5fZ2NSb290UGF0aGVzKG5vZGVJZGVudGlmaWVyKTsKKyAgICAgICAgbGV0IHBhdGhzID0g
dGhpcy5fZGV0ZXJtaW5lR0NSb290UGF0aHMobm9kZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAo
IXBhdGhzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBbXTsKIApAQCAtNzM0LDcgKzczNCw3
IEBAIEhlYXBTbmFwc2hvdCA9IGNsYXNzIEhlYXBTbmFwc2hvdAogICAgICAgICAgICAgfHwgY2xh
c3NOYW1lID09PSAiR2xvYmFsT2JqZWN0IjsKICAgICB9CiAKLSAgICBfZ2NSb290UGF0aGVzKG5v
ZGVJZGVudGlmaWVyKQorICAgIF9kZXRlcm1pbmVHQ1Jvb3RQYXRocyhub2RlSWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIGxldCB0YXJnZXROb2RlT3JkaW5hbCA9IHRoaXMuX25vZGVJZGVudGlm
aWVyVG9PcmRpbmFsLmdldChub2RlSWRlbnRpZmllcik7CiAKQEAgLTc0MywyMiArNzQzLDI5IEBA
IEhlYXBTbmFwc2hvdCA9IGNsYXNzIEhlYXBTbmFwc2hvdAogCiAgICAgICAgIC8vIEZJWE1FOiBB
cnJheSBwdXNoL3BvcCBjYW4gYWZmZWN0IHBlcmZvcm1hbmNlIGhlcmUsIGJ1dCBpbiBwcmFjdGlj
ZSBpdCBoYXNuJ3QgYmVlbiBhbiBpc3N1ZS4KIAotICAgICAgICBsZXQgcGF0aHMgPSBbXTsKLSAg
ICAgICAgbGV0IGN1cnJlbnRQYXRoID0gW107CisgICAgICAgIGxldCBnY1Jvb3RQYXRocyA9IFtd
OwogICAgICAgICBsZXQgdmlzaXRlZCA9IG5ldyBVaW50OEFycmF5KHRoaXMuX25vZGVDb3VudCk7
CiAKLSAgICAgICAgZnVuY3Rpb24gdmlzaXROb2RlKG5vZGVPcmRpbmFsKQotICAgICAgICB7Cisg
ICAgICAgIGxldCBzdGFjayA9IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjdXJy
ZW50UGF0aDogW10sCisgICAgICAgICAgICAgICAgbm9kZU9yZGluYWw6IHRhcmdldE5vZGVPcmRp
bmFsLAorICAgICAgICAgICAgfSwKKyAgICAgICAgXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBzdGFjay5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IHtjdXJyZW50UGF0aCwg
bm9kZU9yZGluYWx9ID0gc3RhY2tbaV07CisKICAgICAgICAgICAgIGlmICh0aGlzLl9ub2RlT3Jk
aW5hbElzR0NSb290W25vZGVPcmRpbmFsXSkgewogICAgICAgICAgICAgICAgIGxldCBmdWxsUGF0
aCA9IGN1cnJlbnRQYXRoLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgbGV0IG5vZGVJbmRleCA9
IG5vZGVPcmRpbmFsICogdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgICAgICAgICAgZnVs
bFBhdGgucHVzaCh7bm9kZTogbm9kZUluZGV4fSk7Ci0gICAgICAgICAgICAgICAgcGF0aHMucHVz
aChmdWxsUGF0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGdj
Um9vdFBhdGhzLnB1c2goZnVsbFBhdGgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAodmlzaXRlZFtub2RlT3JkaW5hbF0pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAg
ICAgICB2aXNpdGVkW25vZGVPcmRpbmFsXSA9IDE7CiAKICAgICAgICAgICAgIGxldCBub2RlSW5k
ZXggPSBub2RlT3JkaW5hbCAqIHRoaXMuX25vZGVGaWVsZENvdW50OwpAQCAtNzc1LDE4ICs3ODIs
MTMgQEAgSGVhcFNuYXBzaG90ID0gY2xhc3MgSGVhcFNuYXBzaG90CiAgICAgICAgICAgICAgICAg
aWYgKGZyb21Ob2RlSXNJbnRlcm5hbCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgICAgICBsZXQgZWRnZUluZGV4ID0gdGhpcy5faW5jb21pbmdFZGdlc1tpbmNv
bWluZ0VkZ2VJbmRleF07Ci0gICAgICAgICAgICAgICAgY3VycmVudFBhdGgucHVzaCh7ZWRnZTog
ZWRnZUluZGV4fSk7Ci0gICAgICAgICAgICAgICAgdmlzaXROb2RlLmNhbGwodGhpcywgZnJvbU5v
ZGVPcmRpbmFsKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50UGF0aC5wb3AoKTsKKyAgICAgICAg
ICAgICAgICBsZXQgbmV3UGF0aCA9IGN1cnJlbnRQYXRoLnNsaWNlKCk7CisgICAgICAgICAgICAg
ICAgbmV3UGF0aC5wdXNoKHtlZGdlOiB0aGlzLl9pbmNvbWluZ0VkZ2VzW2luY29taW5nRWRnZUlu
ZGV4XX0pOworICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goe2N1cnJlbnRQYXRoOiBuZXdQYXRo
LCBub2RlT3JkaW5hbDogZnJvbU5vZGVPcmRpbmFsfSk7CiAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGN1cnJlbnRQYXRoLnBvcCgpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlzaXROb2Rl
LmNhbGwodGhpcywgdGFyZ2V0Tm9kZU9yZGluYWwpOwotCi0gICAgICAgIHJldHVybiBwYXRoczsK
KyAgICAgICAgcmV0dXJuIGdjUm9vdFBhdGhzOwogICAgIH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367460</attachid>
            <date>2019-04-15 14:35:21 -0700</date>
            <delta_ts>2019-04-15 16:49:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196890-20190415143521.patch</filename>
            <type>text/plain</type>
            <size>4333</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc5MzQ3NmE4MDIxY2EwNjYyYWJhYzBjMTMzZTZi
MThmNmYxZDkwMjguLjRhYzUzZGQyMGNkZTJhYjUyZmZhZTc0M2YyNDk1MGZkZGUxOWM2ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA0LTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBI
ZWFwOiBkb24ndCB1c2UgcmVjdXJzaW9uIHdoZW4gY2FsY3VsYXRpbmcgcm9vdCBwYXRocworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODkwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80OTg3MDc1MT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb3Nl
cGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1dvcmtlcnMvSGVhcFNuYXBz
aG90L0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAgKEhlYXBTbmFwc2hvdC5wcm90b3R5cGUuc2hv
cnRlc3RHQ1Jvb3RQYXRoKToKKyAgICAgICAgKEhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2RldGVy
bWluZUdDUm9vdFBhdGhzKToKKyAgICAgICAgKEhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2djUm9v
dFBhdGhlcy52aXNpdE5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fZ2NSb290UGF0aGVzKTogRGVsZXRlZC4KKwogMjAxOS0wNC0xNSAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lP
TihyMjQ0MjY4KTogQ2FudmFzOiBuYXZpZ2F0aW9uIHNpZGViYXIgbm8gbG9uZ2VyIGFwcGVhcnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1dvcmtlcnMv
SGVhcFNuYXBzaG90L0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1dvcmtlcnMvSGVhcFNuYXBzaG90L0hlYXBTbmFwc2hvdC5qcwppbmRleCAxNmI0
NTA0NGQzYzYzZWU5ZDY2NThmZjkxYzg1OWU4NGQ3OWI0NmQ4Li43ZmMyOWMyYWUxZmIyM2FlMzQw
ZTU4M2JlODYwMTYxZDAxNzc2MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Xb3JrZXJzL0hlYXBTbmFwc2hvdC9IZWFwU25hcHNob3QuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvV29ya2Vycy9IZWFwU25hcHNob3Qv
SGVhcFNuYXBzaG90LmpzCkBAIC0yNzgsNyArMjc4LDcgQEAgSGVhcFNuYXBzaG90ID0gY2xhc3Mg
SGVhcFNuYXBzaG90CiAgICAgICAgIC8vIEludGVybmFsIG5vZGVzIGFyZSBhdm9pZGVkLCBzbyBp
ZiB0aGUgcGF0aCBpcyBlbXB0eSB0aGlzCiAgICAgICAgIC8vIG5vZGUgaXMgZWl0aGVyIGEgZ2NS
b290IG9yIG9ubHkgcmVhY2hhYmxlIHZpYSBJbnRlcm5hbCBub2Rlcy4KIAotICAgICAgICBsZXQg
cGF0aHMgPSB0aGlzLl9nY1Jvb3RQYXRoZXMobm9kZUlkZW50aWZpZXIpOworICAgICAgICBsZXQg
cGF0aHMgPSB0aGlzLl9kZXRlcm1pbmVHQ1Jvb3RQYXRocyhub2RlSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmICghcGF0aHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIFtdOwogCkBAIC03MzQs
NyArNzM0LDcgQEAgSGVhcFNuYXBzaG90ID0gY2xhc3MgSGVhcFNuYXBzaG90CiAgICAgICAgICAg
ICB8fCBjbGFzc05hbWUgPT09ICJHbG9iYWxPYmplY3QiOwogICAgIH0KIAotICAgIF9nY1Jvb3RQ
YXRoZXMobm9kZUlkZW50aWZpZXIpCisgICAgX2RldGVybWluZUdDUm9vdFBhdGhzKG5vZGVJZGVu
dGlmaWVyKQogICAgIHsKICAgICAgICAgbGV0IHRhcmdldE5vZGVPcmRpbmFsID0gdGhpcy5fbm9k
ZUlkZW50aWZpZXJUb09yZGluYWwuZ2V0KG5vZGVJZGVudGlmaWVyKTsKIApAQCAtNzQzLDIyICs3
NDMsMzQgQEAgSGVhcFNuYXBzaG90ID0gY2xhc3MgSGVhcFNuYXBzaG90CiAKICAgICAgICAgLy8g
RklYTUU6IEFycmF5IHB1c2gvcG9wIGNhbiBhZmZlY3QgcGVyZm9ybWFuY2UgaGVyZSwgYnV0IGlu
IHByYWN0aWNlIGl0IGhhc24ndCBiZWVuIGFuIGlzc3VlLgogCi0gICAgICAgIGxldCBwYXRocyA9
IFtdOwotICAgICAgICBsZXQgY3VycmVudFBhdGggPSBbXTsKKyAgICAgICAgbGV0IGdjUm9vdFBh
dGhzID0gW107CiAgICAgICAgIGxldCB2aXNpdGVkID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5fbm9k
ZUNvdW50KTsKIAotICAgICAgICBmdW5jdGlvbiB2aXNpdE5vZGUobm9kZU9yZGluYWwpCi0gICAg
ICAgIHsKKyAgICAgICAgbGV0IHBhdGhzQmVpbmdQcm9jZXNzZWQgPSBbCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY3VycmVudFBhdGg6IFtdLAorICAgICAgICAgICAgICAgIG5vZGVP
cmRpbmFsOiB0YXJnZXROb2RlT3JkaW5hbCwKKyAgICAgICAgICAgIH0sCisgICAgICAgIF07Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aHNCZWluZ1Byb2Nlc3NlZC5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgbGV0IHtjdXJyZW50UGF0aCwgbm9kZU9yZGluYWx9ID0gcGF0aHNC
ZWluZ1Byb2Nlc3NlZFtpXTsKKworICAgICAgICAgICAgLy8gUmF0aGVyIHRoYW4gdXNlIGBBcnJh
eS5wcm90b3R5cGUudW5zaGlmdGAsIHdoaWNoIG1heSBiZSB2ZXJ5IGV4cGVuc2l2ZSwga2VlcCB0
cmFjayBvZgorICAgICAgICAgICAgLy8gdGhlICJjdXJyZW50IiBwb3NpdGlvbiBhcyBgaWAgYW5k
ICJkZWxldGUiIHRoZSB2YWx1ZXMgYWxyZWFkeSBwcm9jZXNzZWQgYnkgY2xlYXJpbmcKKyAgICAg
ICAgICAgIC8vIHRoZSB2YWx1ZSBhdCB0aGF0IGluZGV4LgorICAgICAgICAgICAgcGF0aHNCZWlu
Z1Byb2Nlc3NlZFtpXSA9IHVuZGVmaW5lZDsKKwogICAgICAgICAgICAgaWYgKHRoaXMuX25vZGVP
cmRpbmFsSXNHQ1Jvb3Rbbm9kZU9yZGluYWxdKSB7CiAgICAgICAgICAgICAgICAgbGV0IGZ1bGxQ
YXRoID0gY3VycmVudFBhdGguc2xpY2UoKTsKICAgICAgICAgICAgICAgICBsZXQgbm9kZUluZGV4
ID0gbm9kZU9yZGluYWwgKiB0aGlzLl9ub2RlRmllbGRDb3VudDsKICAgICAgICAgICAgICAgICBm
dWxsUGF0aC5wdXNoKHtub2RlOiBub2RlSW5kZXh9KTsKLSAgICAgICAgICAgICAgICBwYXRocy5w
dXNoKGZ1bGxQYXRoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
Z2NSb290UGF0aHMucHVzaChmdWxsUGF0aCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh2aXNpdGVkW25vZGVPcmRpbmFsXSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgICAgIHZpc2l0ZWRbbm9kZU9yZGluYWxdID0gMTsKIAogICAgICAgICAgICAgbGV0IG5vZGVJ
bmRleCA9IG5vZGVPcmRpbmFsICogdGhpcy5fbm9kZUZpZWxkQ291bnQ7CkBAIC03NzUsMTggKzc4
NywxMyBAQCBIZWFwU25hcHNob3QgPSBjbGFzcyBIZWFwU25hcHNob3QKICAgICAgICAgICAgICAg
ICBpZiAoZnJvbU5vZGVJc0ludGVybmFsKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgICAgIGxldCBlZGdlSW5kZXggPSB0aGlzLl9pbmNvbWluZ0VkZ2VzW2lu
Y29taW5nRWRnZUluZGV4XTsKLSAgICAgICAgICAgICAgICBjdXJyZW50UGF0aC5wdXNoKHtlZGdl
OiBlZGdlSW5kZXh9KTsKLSAgICAgICAgICAgICAgICB2aXNpdE5vZGUuY2FsbCh0aGlzLCBmcm9t
Tm9kZU9yZGluYWwpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoLnBvcCgpOworICAgICAg
ICAgICAgICAgIGxldCBuZXdQYXRoID0gY3VycmVudFBhdGguc2xpY2UoKTsKKyAgICAgICAgICAg
ICAgICBuZXdQYXRoLnB1c2goe2VkZ2U6IHRoaXMuX2luY29taW5nRWRnZXNbaW5jb21pbmdFZGdl
SW5kZXhdfSk7CisgICAgICAgICAgICAgICAgcGF0aHNCZWluZ1Byb2Nlc3NlZC5wdXNoKHtjdXJy
ZW50UGF0aDogbmV3UGF0aCwgbm9kZU9yZGluYWw6IGZyb21Ob2RlT3JkaW5hbH0pOwogICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBjdXJyZW50UGF0aC5wb3AoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpc2l0Tm9kZS5jYWxsKHRoaXMsIHRhcmdldE5vZGVPcmRpbmFsKTsKLQotICAgICAg
ICByZXR1cm4gcGF0aHM7CisgICAgICAgIHJldHVybiBnY1Jvb3RQYXRoczsKICAgICB9CiB9Owog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>