<?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>92240</bug_id>
          
          <creation_ts>2012-07-25 05:16:34 -0700</creation_ts>
          <short_desc>Read tag names and attributes from the saved tokens in HTMLTreeBuilder::resetInsertionModeAppropriately.</short_desc>
          <delta_ts>2012-07-25 16:00:21 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>92057</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Kwang Yul Seo">skyul</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>677943</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-25 05:16:34 -0700</bug_when>
    <thetext>This is a follow-up patch for r123577.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677949</commentid>
    <comment_count>1</comment_count>
      <attachid>154328</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-25 05:24:08 -0700</bug_when>
    <thetext>Created attachment 154328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678120</commentid>
    <comment_count>2</comment_count>
      <attachid>154328</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 08:56:00 -0700</bug_when>
    <thetext>Comment on attachment 154328
Patch

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

&gt; Source/WebCore/html/parser/HTMLStackItem.h:89
&gt; +        } else
&gt; +            ASSERT_NOT_REACHED();

Generally we prefer to use switch statements for situations like this so that the compiler can tell us when we&apos;ve forgotten an enum value.  In those cases, we leave off the &quot;default&quot; case.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1635
&gt; +        RefPtr&lt;HTMLStackItem&gt; itemForContextElement;

This point is that normally we don&apos;t need to hold a reference to a stack item because m_tree hold it for us, but in the case of the root node, we need to create an extra item?

I think it would be cleaner if item where a RefPtr.  That would mean an extra ref()/deref() in the non-root case, but I don&apos;t think this function is that hot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678121</commentid>
    <comment_count>3</comment_count>
      <attachid>154328</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 08:56:28 -0700</bug_when>
    <thetext>Comment on attachment 154328
Patch

This is fine, pending the style issue and an HTML parser benchmark run.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678541</commentid>
    <comment_count>4</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-25 15:43:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 154328 [details])
&gt; This is fine, pending the style issue and an HTML parser benchmark run.  :)

It seems this patch slightly improves the performance even with an extra ref()/deref() in the non-root case.

* Before
kseo@cat:WebKit (master)&gt; ./Tools/Scripts/run-perf-tests Parser/html-parser.html
Running 1 tests
Running Parser/html-parser.html (1 of 1)
RESULT Parser: html-parser= 2839.0 ms
median= 2838.0 ms, stdev= 3.30151480384 ms, min= 2833.0 ms, max= 2847.0 ms

* After
kseo@cat:WebKit (master)&gt; ./Tools/Scripts/run-perf-tests Parser/html-parser.html
Running 1 tests
Running Parser/html-parser.html (1 of 1)
RESULT Parser: html-parser= 2818.9 ms
median= 2818.0 ms, stdev= 4.21781934179 ms, min= 2812.0 ms, max= 2830.0 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678544</commentid>
    <comment_count>5</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-25 15:46:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/html/parser/HTMLStackItem.h:89
&gt; &gt; +        } else
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; Generally we prefer to use switch statements for situations like this so that the compiler can tell us when we&apos;ve forgotten an enum value.  In those cases, we leave off the &quot;default&quot; case.

Okay. That&apos;s a good convention.

&gt; &gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1635
&gt; &gt; +        RefPtr&lt;HTMLStackItem&gt; itemForContextElement;
&gt; 
&gt; This point is that normally we don&apos;t need to hold a reference to a stack item because m_tree hold it for us, but in the case of the root node, we need to create an extra item?
&gt; 
&gt; I think it would be cleaner if item where a RefPtr.  That would mean an extra ref()/deref() in the non-root case, but I don&apos;t think this function is that hot.

Yeah, it is much cleaner. I confirmed that there is no observable performance penalty here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678561</commentid>
    <comment_count>6</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-25 16:00:21 -0700</bug_when>
    <thetext>Committed r123671: &lt;http://trac.webkit.org/changeset/123671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154328</attachid>
            <date>2012-07-25 05:24:08 -0700</date>
            <delta_ts>2012-07-25 08:56:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92240-20120725212353.patch</filename>
            <type>text/plain</type>
            <size>7597</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBhMjNlYWYyM2QzNjVj
MDRlN2JhMjFkNDg1MzU3NmIxMGIyMWFiNi4uODcxMDJlZGUwYjM2NTViYTQ3MGU5MDViOTUxMDQx
M2U3Y2Q0YjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDEyLTA3LTI1ICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKKyAgICAgICAgUmVhZCB0YWcgbmFt
ZXMgYW5kIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc2F2ZWQgdG9rZW5zIGluIEhUTUxUcmVlQnVpbGRl
cjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIGZvbGxvdy11cCBwYXRjaCBmb3Ig
cjEyMzU3Ny4gQWRkZWQgSXRlbVR5cGUgZW51bSB0byBIVE1MU3RhY2tJdGVtIHRvIGhhbmRsZQor
ICAgICAgICB0aGUgY29udGV4dCBlbGVtZW50IGNhc2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0ZW0pOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorCisyMDEyLTA3
LTI1ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgQWRk
IEhUTUxTdGFja0l0ZW0uaCB0byBwcm9qZWN0IGZpbGVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjIyMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3RhY2tJdGVtLmgKaW5kZXggMWIxYzFiZmU3NmM3MDllMjRkYTcxYjY3ZTk1NmI0
NDAwOGE5OTRhNS4uZjEyNzQzNzgzYjk5ZjdkYTUwZjM4NzVjMmY4MDFjZjQ4MzVjZWU1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaApAQCAtNDAsMTAgKzQw
LDE1IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiAKIGNsYXNzIEhUTUxTdGFja0l0ZW0gOiBwdWJs
aWMgUmVmQ291bnRlZDxIVE1MU3RhY2tJdGVtPiB7CiBwdWJsaWM6Ci0gICAgLy8gRG9jdW1lbnRG
cmFnbWVudCBjYXNlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTdGFja0l0ZW0+IGNyZWF0
ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUpCisgICAgZW51bSBJdGVtVHlwZSB7Cisg
ICAgICAgIEl0ZW1Gb3JDb250ZXh0RWxlbWVudCwKKyAgICAgICAgSXRlbUZvckRvY3VtZW50RnJh
Z21lbnROb2RlCisgICAgfTsKKworICAgIC8vIFVzZWQgYnkgZG9jdW1lbnQgZnJhZ21lbnQgbm9k
ZSBhbmQgY29udGV4dCBlbGVtZW50LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTdGFja0l0
ZW0+IGNyZWF0ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUsIEl0ZW1UeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTdGFja0l0ZW0obm9kZSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTdGFja0l0ZW0obm9kZSwgdHlwZSkp
OwogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgSFRNTEVsZW1lbnRTdGFjayBhbmQgSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdC4KQEAgLTY2LDE0ICs3MSwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdG9r
ZW4tPm5hbWUoKSA9PSBuYW1lLmxvY2FsTmFtZSgpICYmIG1fbmFtZXNwYWNlVVJJID09IG5hbWUu
bmFtZXNwYWNlVVJJKCk7IH0KIAogcHJpdmF0ZToKLSAgICBIVE1MU3RhY2tJdGVtKFBhc3NSZWZQ
dHI8Q29udGFpbmVyTm9kZT4gbm9kZSkKKyAgICBIVE1MU3RhY2tJdGVtKFBhc3NSZWZQdHI8Q29u
dGFpbmVyTm9kZT4gbm9kZSwgSXRlbVR5cGUgdHlwZSkKICAgICAgICAgOiBtX25vZGUobm9kZSkK
LSAgICAgICAgLCBtX2lzRG9jdW1lbnRGcmFnbWVudE5vZGUodHJ1ZSkKICAgICB7Ci0gICAgICAg
IC8vIENyZWF0ZSBhIGZha2UgdG9rZW4gZm9yIGEgZG9jdW1lbnQgZnJhZ21lbnQgbm9kZS4gVGhp
cyBsb29rcyB1Z2x5IGJ1dCByZXF1aXJlZCBmb3IgcGVyZm9ybWFuY2UKLSAgICAgICAgLy8gYmVj
YXVzZSB3ZSB3YW50IHRvIHVzZSBtX3Rva2VuLT5uYW1lKCkgaW4gbG9jYWxOYW1lKCksIGhhc0xv
Y2FsTmFtZSgpIGFuZCBoYXNUYWdOYW1lKCkgd2l0aG91dAotICAgICAgICAvLyBjaGVja2luZyBt
X2lzRG9jdW1lbnRGcmFnbWVudE5vZGUgZmxhZy4KLSAgICAgICAgbV90b2tlbiA9IEF0b21pY0hU
TUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgbnVsbEF0b20pOworICAg
ICAgICBpZiAodHlwZSA9PSBJdGVtRm9yRG9jdW1lbnRGcmFnbWVudE5vZGUpIHsKKyAgICAgICAg
ICAgIC8vIENyZWF0ZSBhIGZha2UgdG9rZW4gZm9yIGEgZG9jdW1lbnQgZnJhZ21lbnQgbm9kZS4g
VGhpcyBsb29rcyB1Z2x5IGJ1dCByZXF1aXJlZCBmb3IgcGVyZm9ybWFuY2UKKyAgICAgICAgICAg
IC8vIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgbV90b2tlbi0+bmFtZSgpIGluIGxvY2FsTmFtZSgp
LCBoYXNMb2NhbE5hbWUoKSBhbmQgaGFzVGFnTmFtZSgpIHdpdGhvdXQKKyAgICAgICAgICAgIC8v
IGNoZWNraW5nIG1faXNEb2N1bWVudEZyYWdtZW50Tm9kZSBmbGFnLgorICAgICAgICAgICAgbV90
b2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywg
bnVsbEF0b20pOworICAgICAgICAgICAgbV9pc0RvY3VtZW50RnJhZ21lbnROb2RlID0gdHJ1ZTsK
KyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IEl0ZW1Gb3JDb250ZXh0RWxlbWVudCkgeworICAg
ICAgICAgICAgLy8gQ3JlYXRlIGEgZmFrZSB0b2tlbiBmb3IgYSBjb250ZXh0IGVsZW1lbnQgZm9y
IHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKyAgICAgICAgICAgIG1fdG9rZW4gPSBBdG9taWNI
VE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIG1fbm9kZS0+bG9jYWxO
YW1lKCkpOworICAgICAgICAgICAgbV9uYW1lc3BhY2VVUkkgPSBtX25vZGUtPm5hbWVzcGFjZVVS
SSgpOworICAgICAgICAgICAgbV9pc0RvY3VtZW50RnJhZ21lbnROb2RlID0gZmFsc2U7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAg
ICAgSFRNTFN0YWNrSXRlbShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUsIFBhc3NSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiB0b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkgPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggZTY0MzhlZjM0ZTM4Y2JlMzAxYWRm
YTk1NzUxMTY0ZDEyMGI0OWU3YS4uMzZlMzEzYTczZDc1ZmVlNzNlNDQ5MTczY2ZkNjA2OTI1MGE2
NTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCkBAIC0zODEsNyArMzgxLDcgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIo
SFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGYKICAgICAgICAg
Ly8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKICAgICAgICAgLy8gRm9yIGVmZmljaWVu
Y3ksIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9vdCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0
aCBubyBhdHRyaWJ1dGVzIikKICAgICAgICAgLy8gYW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVu
dEZyYWdtZW50IGFzIGEgcm9vdCBub2RlLgotICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCkt
PnB1c2hSb290Tm9kZShIVE1MU3RhY2tJdGVtOjpjcmVhdGUoZnJhZ21lbnQpKTsKKyAgICAgICAg
bV90cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUoSFRNTFN0YWNrSXRlbTo6Y3JlYXRl
KGZyYWdtZW50LCBIVE1MU3RhY2tJdGVtOjpJdGVtRm9yRG9jdW1lbnRGcmFnbWVudE5vZGUpKTsK
ICAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOwogICAgICAgICBtX3Ry
ZWUuc2V0Rm9ybShjbG9zZXN0Rm9ybUFuY2VzdG9yKGNvbnRleHRFbGVtZW50KSk7CiAgICAgfQpA
QCAtMTYzMiw0MSArMTYzMiw0MyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRp
b25Nb2RlQXBwcm9wcmlhdGVseSgpCiAgICAgYm9vbCBsYXN0ID0gZmFsc2U7CiAgICAgSFRNTEVs
ZW1lbnRTdGFjazo6RWxlbWVudFJlY29yZCogbm9kZVJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVu
dHMoKS0+dG9wUmVjb3JkKCk7CiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgQ29udGFpbmVyTm9k
ZSogbm9kZSA9IG5vZGVSZWNvcmQtPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUgPT0gbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5yb290Tm9kZSgpKSB7CisgICAgICAgIFJlZlB0cjxIVE1MU3RhY2tJ
dGVtPiBpdGVtRm9yQ29udGV4dEVsZW1lbnQ7CisgICAgICAgIEhUTUxTdGFja0l0ZW0qIGl0ZW0g
PSBub2RlUmVjb3JkLT5zdGFja0l0ZW0oKS5nZXQoKTsKKyAgICAgICAgaWYgKGl0ZW0tPm5vZGUo
KSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkpIHsKICAgICAgICAgICAgIEFT
U0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3QgPSB0cnVlOwotICAg
ICAgICAgICAgbm9kZSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50KCk7CisgICAg
ICAgICAgICBpdGVtRm9yQ29udGV4dEVsZW1lbnQgPSBIVE1MU3RhY2tJdGVtOjpjcmVhdGUobV9m
cmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQoKSwgSFRNTFN0YWNrSXRlbTo6SXRlbUZvckNv
bnRleHRFbGVtZW50KTsKKyAgICAgICAgICAgIGl0ZW0gPSBpdGVtRm9yQ29udGV4dEVsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFn
KSkgeworICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0
SW5zZXJ0aW9uTW9kZShJblNlbGVjdE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKKyAgICAgICAg
aWYgKGl0ZW0tPmhhc1RhZ05hbWUodGRUYWcpIHx8IGl0ZW0tPmhhc1RhZ05hbWUodGhUYWcpKQog
ICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DZWxsTW9kZSk7Ci0gICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKHRyVGFnKSkKKyAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05h
bWUodHJUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Sb3dNb2Rl
KTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IG5vZGUtPmhhc1Rh
Z05hbWUodGhlYWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGZvb3RUYWcpKQorICAgICAgICBp
ZiAoaXRlbS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgaXRlbS0+aGFzVGFnTmFtZSh0aGVhZFRh
ZykgfHwgaXRlbS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0
SW5zZXJ0aW9uTW9kZShJblRhYmxlQm9keU1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFn
TmFtZShjYXB0aW9uVGFnKSkKKyAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoY2FwdGlvblRh
ZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNhcHRpb25Nb2RlKTsK
LSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKSB7CisgICAgICAgIGlm
IChpdGVtLT5oYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlz
UGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUo
SW5Db2x1bW5Hcm91cE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKHRhYmxlVGFnKSkKKyAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUodGFibGVUYWcpKQog
ICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUpOwotICAgICAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZShoZWFkVGFnKSkgeworICAgICAgICBpZiAoaXRlbS0+aGFz
VGFnTmFtZShoZWFkVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCisgICAgICAg
IGlmIChpdGVtLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldElu
c2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGZy
YW1lc2V0VGFnKSkgeworICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykp
IHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAg
IHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluRnJhbWVzZXRNb2RlKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSkgeworICAgICAgICBpZiAoaXRlbS0+
aGFzVGFnTmFtZShodG1sVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSGVhZE1v
ZGUpOwogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="163505"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="163562"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>