<?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>24336</bug_id>
          
          <creation_ts>2009-03-03 15:11:44 -0800</creation_ts>
          <short_desc>document.write() should be able to make a document into strict mode</short_desc>
          <delta_ts>2009-03-23 19:10:04 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>hyatt</cc>
    
    <cc>jparent</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112086</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-03 15:11:44 -0800</bug_when>
    <thetext>document.write() should be able to make a document into strict mode

I don&apos;t know of any other way to make an existing iFrame into strict mode.  This works in FF.  See test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112088</commentid>
    <comment_count>1</comment_count>
      <attachid>28242</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-03 15:17:16 -0800</bug_when>
    <thetext>Created attachment 28242
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112218</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-04 10:24:41 -0800</bug_when>
    <thetext>I click on the test in Safari 3.2.1, and it says &quot;PASSED&quot;. A regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112225</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-04 10:33:32 -0800</bug_when>
    <thetext>Probably.  It fails in Safari Version 4 Developer Preview (5526.11.2) (which I haven&apos;t upgraded to the real Safari 4 yet) too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112227</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-03-04 10:35:18 -0800</bug_when>
    <thetext>Actually, if I remember correctly, the behavior changed between Safari 3 and 4. In Safari 3- you could only get iframes in CSS1Compat mode. In Safari 4, they are BackCompat by default.

BackCompat by default matches IE/FF/Opera. So, I think that&apos;s the right direction once this bug is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114077</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-17 12:37:06 -0700</bug_when>
    <thetext>void HTMLDocument::determineParseMode()
is the code which needs to be checked here to see if it&apos;s running correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114091</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-17 14:02:58 -0700</bug_when>
    <thetext>This fails due to this check failing:

void HTMLParser::parseDoctypeToken(DoctypeToken* t)
{
    // Ignore any doctype after the first.  Ignore doctypes in fragments.
    if (m_document-&gt;doctype() || m_isParsingFragment || m_current != m_document)
        return;

m_current != m_document

(gdb) p m_current-&gt;showTreeForThis()
#document	0x7a6d600
*	HTML	0x1b9d1060
$4 = void</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114122</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-17 16:12:21 -0700</bug_when>
    <thetext>OK, this is the code which is getting us in trouble:

void Document::write(const SegmentedString&amp; text, Document* ownerDocument)
{
    if (!m_tokenizer) {  // WE TAKE THIS PATH IN THE iframe.contentDocument.write()
        open(ownerDocument);
        ASSERT(m_tokenizer);
        if (!m_tokenizer)
            return;
        UChar documentPrefix[] = { &apos;&lt;&apos;, &apos;h&apos;, &apos;t&apos;, &apos;m&apos;, &apos;l&apos;, &apos;&gt;&apos; };
        m_tokenizer-&gt;write(SegmentedString(documentPrefix, sizeof(documentPrefix) / sizeof(documentPrefix[0])), false);
    }

When the iframe.contentDocument.write() happens, the tokenizer has of course already been destroyed.  So we create a new one, and prime it with &lt;html&gt; (not sure why?)  This breaks our ability to document.write things like doctypes which must go before the &lt;html&gt;.

Not sure what the elegant solution here would be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114133</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-17 16:35:19 -0700</bug_when>
    <thetext>writing the &lt;html&gt; first as part of document.write() came as part of:
http://trac.webkit.org/changeset/798

I doubt there are associated layout tests, unfortunately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114145</commentid>
    <comment_count>9</comment_count>
      <attachid>28712</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-17 17:30:29 -0700</bug_when>
    <thetext>Created attachment 28712
First try, removing unneeded &lt;html&gt; write

 LayoutTests/ChangeLog                              |   15 +++++++++++++
 .../Document/document-write-doctype-expected.txt   |   19 ++++++++++++++++
 .../fast/dom/Document/document-write-doctype.html  |   13 +++++++++++
 .../Document/resources/document-write-doctype.js   |   23 ++++++++++++++++++++
 WebCore/ChangeLog                                  |   21 ++++++++++++++++++
 WebCore/dom/Document.cpp                           |    9 +------
 6 files changed, 93 insertions(+), 7 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114174</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-18 01:35:12 -0700</bug_when>
    <thetext>+debug(&quot;any document.write calls after &lt;html&gt; has been encountered cannot change the doctype&quot;)

&lt;html&gt; didn&apos;t make it into results, should be &amp;lt;html&gt;.

+        Remove an implicit write of &quot;&lt;html&gt;&quot; on the first document.write call

Will the document have a document element after document.write(&quot;&quot;)? Should it?

+iframe.contentWindow.document.write(&quot;&lt;html&gt;&quot;);
+shouldBeEqualToString(&quot;iframe.contentWindow.document.compatMode&quot;, &quot;BackCompat&quot;);

I think that it would be nice to check the resulting DOM in the tests, not just document.compatMode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114175</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-18 01:39:17 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; +debug(&quot;any document.write calls after &lt;html&gt; has been encountered cannot
&gt; change the doctype&quot;)
&gt; 
&gt; &lt;html&gt; didn&apos;t make it into results, should be &amp;lt;html&gt;.
&gt; 
&gt; +        Remove an implicit write of &quot;&lt;html&gt;&quot; on the first document.write call
&gt; 
&gt; Will the document have a document element after document.write(&quot;&quot;)? Should it?
&gt; 
&gt; +iframe.contentWindow.document.write(&quot;&lt;html&gt;&quot;);
&gt; +shouldBeEqualToString(&quot;iframe.contentWindow.document.compatMode&quot;,
&gt; &quot;BackCompat&quot;);
&gt; 
&gt; I think that it would be nice to check the resulting DOM in the tests, not just
&gt; document.compatMode.

Interesting.  I&apos;ll fix all 3 of these tomorrow and upload an even better patch!  (This one still stands for review though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114213</commentid>
    <comment_count>12</comment_count>
      <attachid>28727</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-18 12:31:05 -0700</bug_when>
    <thetext>Created attachment 28727
First try, removing unneeded &lt;html&gt; write

 LayoutTests/ChangeLog                              |   15 +++
 .../Document/document-write-doctype-expected.txt   |   33 +++++++
 .../fast/dom/Document/document-write-doctype.html  |   13 +++
 .../Document/resources/document-write-doctype.js   |   93 ++++++++++++++++++++
 WebCore/ChangeLog                                  |   21 +++++
 WebCore/dom/Document.cpp                           |    9 +--
 6 files changed, 177 insertions(+), 7 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114890</commentid>
    <comment_count>13</comment_count>
      <attachid>28727</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-23 17:31:27 -0700</bug_when>
    <thetext>Comment on attachment 28727
First try, removing unneeded &lt;html&gt; write

r=me. Hopefully stuff doesn&apos;t break...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114901</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-23 19:10:04 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/dom/Document/document-write-doctype-expected.txt
	A	LayoutTests/fast/dom/Document/document-write-doctype.html
	A	LayoutTests/fast/dom/Document/resources/document-write-doctype.js
	M	WebCore/ChangeLog
	M	WebCore/dom/Document.cpp
Committed r41932
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>28242</attachid>
            <date>2009-03-03 15:17:16 -0800</date>
            <delta_ts>2009-03-03 15:17:16 -0800</delta_ts>
            <desc>test case</desc>
            <filename>strict.html</filename>
            <type>text/html</type>
            <size>551</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PGJvZHk+CjxzY3JpcHQ+Ci8vIFRlc3QgdGhhdCBpZnJhbWUuY29udGVudERvY3VtZW50LndyaXRl
KCkgY2FuIGNvbnZlcnQgYSBkb2N1bWVudCB0byBzdHJpY3QgbW9kZQovLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMzYKdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7
CmlmcmFtZS5jb250ZW50RG9jdW1lbnQud3JpdGUoIjwhRG9jVHlwZSBodG1sPjxodG1sPjxib2R5
PnRlc3Q8L2JvZHk+PC9odG1sPiIpOwppZiAoaWZyYW1lLmNvbnRlbnREb2N1bWVudC5jb21wYXRN
b2RlID09ICJDU1MxQ29tcGF0IikgewogICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiUEFT
U0VEIjsKfSBlbHNlIHsKICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIkZBSUwgLSBpZnJh
bWUgaGFzIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuY29tcGF0TW9kZSA9ICIgKyBpZnJhbWUuY29u
dGVudERvY3VtZW50LmNvbXBhdE1vZGU7Cn0KPC9zY3JpcHQ+Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28712</attachid>
            <date>2009-03-17 17:30:29 -0700</date>
            <delta_ts>2009-03-18 12:31:18 -0700</delta_ts>
            <desc>First try, removing unneeded &lt;html&gt; write</desc>
            <filename>First-try-removing-unneeded-html-write.patch</filename>
            <type>text/plain</type>
            <size>6429</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MzVlNjY2NGRkYWViMjg0MGI3YTIwYmFhMGIwMWViMTlkYmJhZTVlMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBjZGZhOWYu
LmI3MTA0YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wMy0xNyAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoKSBzaG91bGQgYmUgYWJsZSB0byBtYWtlIGEgZG9j
dW1lbnQgc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzM2CisKKyAgICAgICAgT3VyIGJlaGF2aW9yIGlzIG5vdyB0ZXN0ZWQgYnkg
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtZG9jdHlwZQorICAgICAgICBhbmQgbWF0
Y2hlcyBJRSwgRkYgZmFpbHMgdGhpcyBuZXcgdGVzdC4gIE1vemlsbGEgYnVnIGZpbGVkOgorICAg
ICAgICBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM5MDgK
KworICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLWRvY3R5cGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13
cml0ZS1kb2N0eXBlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L3Jl
c291cmNlcy9kb2N1bWVudC13cml0ZS1kb2N0eXBlLmpzOiBBZGRlZC4KKwogMjAwOS0wMy0xNyAg
T2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
ZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
ZG9jdW1lbnQtd3JpdGUtZG9jdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1kb2N0eXBlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWU3Nzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtZG9jdHlwZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IGlmcmFtZS5jb250ZW50V2luZG93LmRv
Y3VtZW50LndyaXRlKCkgY2FuIGNvbnZlcnQgYSBkb2N1bWVudCB0byBzdHJpY3QgbW9kZSAtLSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMzYKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2Fib3V0OmJsYW5rIGlzIHF1aXJrc21vZGUgYnkgZGVmYXVs
dAorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudC5jb21wYXRNb2RlIGlzICJCYWNr
Q29tcGF0IgorQnV0IHdyaXRpbmcgYSBkb2N0eXBlIGFzIHRoZSBmaXJzdCBkb2N1bWVudC53cml0
ZSBjYW4gY2hhbmdlIHRoZSBkb2N1bWVudCB0byBzdGFuZGFyZHMKK1BBU1MgaWZyYW1lLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQuY29tcGF0TW9kZSBpcyAiQ1NTMUNvbXBhdCIKK2RvY3VtZW50Lm9w
ZW4gc2hvdWxkIHJlc2V0IHRoZSBkb2N1bWVudCAoYW5kIGRvY3R5cGUpCitQQVNTIGlmcmFtZS5j
b250ZW50V2luZG93LmRvY3VtZW50LmNvbXBhdE1vZGUgaXMgIkJhY2tDb21wYXQiCitkb2N1bWVu
dC53cml0ZSBvZiBqdXN0IDxodG1sPiBzaG91bGQgbGVhdmUgaXQgcXVpcmtzCitQQVNTIGlmcmFt
ZS5jb250ZW50V2luZG93LmRvY3VtZW50LmNvbXBhdE1vZGUgaXMgIkJhY2tDb21wYXQiCithbnkg
ZG9jdW1lbnQud3JpdGUgY2FsbHMgYWZ0ZXIgIGhhcyBiZWVuIGVuY291bnRlcmVkIGNhbm5vdCBj
aGFuZ2UgdGhlIGRvY3R5cGUKK1BBU1MgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuY29t
cGF0TW9kZSBpcyAiQmFja0NvbXBhdCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9kb2N1bWVudC13cml0ZS1kb2N0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9kb2N1bWVudC13cml0ZS1kb2N0eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTU2NmJlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLWRvY3R5cGUuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2RvY3VtZW50LXdyaXRlLWRvY3R5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2Vz
L2RvY3VtZW50LXdyaXRlLWRvY3R5cGUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9yZXNvdXJjZXMvZG9jdW1lbnQtd3JpdGUtZG9jdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xMDgxM2JmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2RvY3VtZW50LXdyaXRlLWRvY3R5cGUuanMKQEAg
LTAsMCArMSwyMyBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBpZnJhbWUuY29udGVudFdpbmRv
dy5kb2N1bWVudC53cml0ZSgpIGNhbiBjb252ZXJ0IGEgZG9jdW1lbnQgdG8gc3RyaWN0IG1vZGUg
LS0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzM2Iik7CisKK3Zh
ciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK2RlYnVnKCJhYm91dDpibGFuayBpcyBxdWlya3Ntb2Rl
IGJ5IGRlZmF1bHQiKQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpZnJhbWUuY29udGVudFdpbmRv
dy5kb2N1bWVudC5jb21wYXRNb2RlIiwgIkJhY2tDb21wYXQiKTsKK2lmcmFtZS5jb250ZW50V2lu
ZG93LmRvY3VtZW50LndyaXRlKCI8IURvY1R5cGUgaHRtbD48aHRtbD48Ym9keT50ZXN0PC9ib2R5
PjwvaHRtbD4iKTsKK2RlYnVnKCJCdXQgd3JpdGluZyBhIGRvY3R5cGUgYXMgdGhlIGZpcnN0IGRv
Y3VtZW50LndyaXRlIGNhbiBjaGFuZ2UgdGhlIGRvY3VtZW50IHRvIHN0YW5kYXJkcyIpCitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50LmNvbXBhdE1v
ZGUiLCAiQ1NTMUNvbXBhdCIpOworCitkZWJ1ZygiZG9jdW1lbnQub3BlbiBzaG91bGQgcmVzZXQg
dGhlIGRvY3VtZW50IChhbmQgZG9jdHlwZSkiKQoraWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1l
bnQub3BlbigpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpZnJhbWUuY29udGVudFdpbmRvdy5k
b2N1bWVudC5jb21wYXRNb2RlIiwgIkJhY2tDb21wYXQiKTsKK2RlYnVnKCJkb2N1bWVudC53cml0
ZSBvZiBqdXN0ICZsdDtodG1sJmd0OyBzaG91bGQgbGVhdmUgaXQgcXVpcmtzIikKK2lmcmFtZS5j
b250ZW50V2luZG93LmRvY3VtZW50LndyaXRlKCI8aHRtbD4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuY29tcGF0TW9kZSIsICJCYWNrQ29t
cGF0Iik7CitkZWJ1ZygiYW55IGRvY3VtZW50LndyaXRlIGNhbGxzIGFmdGVyIDxodG1sPiBoYXMg
YmVlbiBlbmNvdW50ZXJlZCBjYW5ub3QgY2hhbmdlIHRoZSBkb2N0eXBlIikKK2lmcmFtZS5jb250
ZW50V2luZG93LmRvY3VtZW50LndyaXRlKCI8IURvY1R5cGUgaHRtbD48aHRtbD48Ym9keT50ZXN0
PC9ib2R5PjwvaHRtbD4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQuY29tcGF0TW9kZSIsICJCYWNrQ29tcGF0Iik7CisKK2RvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGM3MDFmN2QuLmFjMjRjMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDMtMTcgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGRvY3VtZW50LndyaXRlKCkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBhIGRv
Y3VtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDMzNgorCisgICAgICAgIFJlbW92ZSBhbiBpbXBsaWNpdCB3cml0ZSBvZiAi
PGh0bWw+IiBvbiB0aGUgZmlyc3QgZG9jdW1lbnQud3JpdGUgY2FsbAorICAgICAgICB0aGlzIHdh
cyBhZGRlZCBhcyBwYXJ0IG9mIGEgS0RFIGltcG9ydCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC83OTgKKyAgICAgICAgd2l0aCBubyBsYXlvdXQgdGVzdCBvciBleHBsYW5hdGlvbi4g
IEkgY2FuJ3QgdGhpbmsgb2YgYW55IHJlYXNvbiB3aHkKKyAgICAgICAgYW4gaW1wbGljaXQgPGh0
bWw+IHdyaXRlIGlzIG5lY2Vzc2FyeSAob3IgY29ycmVjdCksIHNvIEknbSByZW1vdmluZyBpdCBh
bmQKKyAgICAgICAgYWRkaW5nIGEgdGVzdCBmb3IgdGhlIGNvcnJlY3QgYmVoYXZpb3IuICBUaGUg
cGFyc2VyIHdpbGwgYWRkIGFueSBuZWNlc3NhcnkKKyAgICAgICAgSFRNTEhUTUxFbGVtZW50cyBk
dXJpbmcgdGhlIHdyaXRlKCkgYW55d2F5LgorCisgICAgICAgIE91ciBiZWhhdmlvciBpcyBub3cg
dGVzdGVkIGJ5IGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLWRvY3R5cGUKKyAgICAg
ICAgYW5kIG1hdGNoZXMgSUUsIEZGIGZhaWxzIHRoaXMgbmV3IHRlc3QuICBNb3ppbGxhIGJ1ZyBm
aWxlZDoKKyAgICAgICAgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDgzOTA4CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndyaXRlKToKKwogMjAwOS0wMy0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGRiMDk1ZWMuLmFkYjcwZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE2ODYsMTUgKzE2ODYsMTAg
QEAgdm9pZCBEb2N1bWVudDo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiB0ZXh0LCBEb2N1
bWVudCogb3duZXJEb2N1bWVudCkKICAgICAgICAgcHJpbnRmKCJCZWdpbm5pbmcgYSBkb2N1bWVu
dC53cml0ZSBhdCAlZFxuIiwgZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKIAotICAgIGlmICghbV90
b2tlbml6ZXIpIHsKKyAgICBpZiAoIW1fdG9rZW5pemVyKQogICAgICAgICBvcGVuKG93bmVyRG9j
dW1lbnQpOwotICAgICAgICBBU1NFUlQobV90b2tlbml6ZXIpOwotICAgICAgICBpZiAoIW1fdG9r
ZW5pemVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBVQ2hhciBkb2N1bWVudFByZWZp
eFtdID0geyAnPCcsICdoJywgJ3QnLCAnbScsICdsJywgJz4nIH07Ci0gICAgICAgIG1fdG9rZW5p
emVyLT53cml0ZShTZWdtZW50ZWRTdHJpbmcoZG9jdW1lbnRQcmVmaXgsIHNpemVvZihkb2N1bWVu
dFByZWZpeCkgLyBzaXplb2YoZG9jdW1lbnRQcmVmaXhbMF0pKSwgZmFsc2UpOwotICAgIH0KIAor
ICAgIEFTU0VSVChtX3Rva2VuaXplcik7CiAgICAgbV90b2tlbml6ZXItPndyaXRlKHRleHQsIGZh
bHNlKTsKIAogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28727</attachid>
            <date>2009-03-18 12:31:05 -0700</date>
            <delta_ts>2009-03-23 17:31:27 -0700</delta_ts>
            <desc>First try, removing unneeded &lt;html&gt; write</desc>
            <filename>First-try-removing-unneeded-html-write.patch</filename>
            <type>text/plain</type>
            <size>10063</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MTE2Yjk2MWIxOGFkMDVhMTI0NjAzZWEzYTUxZjc4YTBjNGVmMTJiMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBjZGZhOWYu
LmI3MTA0YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wMy0xNyAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoKSBzaG91bGQgYmUgYWJsZSB0byBtYWtlIGEgZG9j
dW1lbnQgc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzM2CisKKyAgICAgICAgT3VyIGJlaGF2aW9yIGlzIG5vdyB0ZXN0ZWQgYnkg
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtZG9jdHlwZQorICAgICAgICBhbmQgbWF0
Y2hlcyBJRSwgRkYgZmFpbHMgdGhpcyBuZXcgdGVzdC4gIE1vemlsbGEgYnVnIGZpbGVkOgorICAg
ICAgICBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM5MDgK
KworICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLWRvY3R5cGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13
cml0ZS1kb2N0eXBlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L3Jl
c291cmNlcy9kb2N1bWVudC13cml0ZS1kb2N0eXBlLmpzOiBBZGRlZC4KKwogMjAwOS0wMy0xNyAg
T2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
ZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
ZG9jdW1lbnQtd3JpdGUtZG9jdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1kb2N0eXBlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGVmNDI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtZG9jdHlwZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdCB0aGF0IGlmcmFtZS5jb250ZW50V2luZG93LmRv
Y3VtZW50LndyaXRlKCkgY2FuIGNvbnZlcnQgYSBkb2N1bWVudCB0byBzdHJpY3QgbW9kZSAtLSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMzYKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2Fib3V0OmJsYW5rIGlzIHF1aXJrc21vZGUgYnkgZGVmYXVs
dAorUEFTUyBpZnJhbWVEb2N1bWVudC5jb21wYXRNb2RlIGlzICJCYWNrQ29tcGF0IgorZW5zdXJl
IHRoYXQgYWJvdXQ6YmxhbmsncyBET00gaGFzIGFuIGh0bWwgYW5kIGJvZHkgZWxlbWVudAorUEFT
UyB0cmVlQXNTdHJpbmcoaWZyYW1lRG9jdW1lbnQpIGlzICIjZG9jdW1lbnQgW0hUTUwgW0JPRFld
XSIKK3dyaXRpbmcgYSBkb2N0eXBlIGFzIHRoZSBmaXJzdCBkb2N1bWVudC53cml0ZSBjYW4gY2hh
bmdlIHRoZSBkb2N1bWVudCB0byBzdGFuZGFyZHMKK1BBU1MgaWZyYW1lRG9jdW1lbnQuY29tcGF0
TW9kZSBpcyAiQ1NTMUNvbXBhdCIKK2Vuc3VyZSB0aGUgd3JpdHRlbiBET00gaGFzIGFuIGh0bWwg
YW5kIGJvZHkgZWxlbWVudAorUEFTUyB0cmVlQXNTdHJpbmcoaWZyYW1lRG9jdW1lbnQpIGlzICIj
ZG9jdW1lbnQgW2h0bWwsIEhUTUwgW0JPRFkgWyN0ZXh0XV1dIgorZW5zdXJlIHRoYXQgZG9jdW1l
bnQub3BlbiBjbGVhcnMgdGhlIGRvY3VtZW50IGJ1dCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRvY3Vt
ZW50IHBvaW50ZXIKK1BBU1MgaWZyYW1lRG9jdW1lbnQgaXMgaWZyYW1lLmNvbnRlbnRXaW5kb3cu
ZG9jdW1lbnQKK2RvY3VtZW50Lm9wZW4gc2hvdWxkIGFsc28gY2xlYXIgdGhlIGRvY3VtZW50IGFu
ZCByZXNldCB0aGUgZG9jdHlwZSkKK1BBU1MgdHJlZUFzU3RyaW5nKGlmcmFtZURvY3VtZW50KSBp
cyAiI2RvY3VtZW50IgorUEFTUyBpZnJhbWVEb2N1bWVudC5jb21wYXRNb2RlIGlzICJCYWNrQ29t
cGF0IgorZG9jdW1lbnQud3JpdGUgb2YgIiIgc2hvdWxkIGxlYXZlIHRoZSBkb2N1bWVudCBpbiBx
dWlya3Ntb2RlIGFuZCBhZGQgbm8gY29udGVudCB0byB0aGUgZG9jdW1lbnQKK1BBU1MgaWZyYW1l
RG9jdW1lbnQuY29tcGF0TW9kZSBpcyAiQmFja0NvbXBhdCIKK1BBU1MgdHJlZUFzU3RyaW5nKGlm
cmFtZURvY3VtZW50KSBpcyAiI2RvY3VtZW50IgorZG9jdW1lbnQud3JpdGUgY2FsbHMgY2FuIGNo
YW5nZSB0aGUgZG9jdHlwZSB1bnRpbCBhbiAgaXMgY3JlYXRlZAorUEFTUyBpZnJhbWVEb2N1bWVu
dC5jb21wYXRNb2RlIGlzICJDU1MxQ29tcGF0IgorcmVzZXQgdGhlIGRvY3VtZW50IGFnYWluCitk
b2N1bWVudC53cml0ZSBvZiAiPGh0bWw+IiBzaG91bGQgbGVhdmUgdGhlIGRvY3VtZW50IGluIHF1
aXJrc21vZGUgYW5kIGFkZCBvbmx5IGFuIEhUTUwgZWxlbWVudCwgbm8gYm9keQorUEFTUyBpZnJh
bWVEb2N1bWVudC5jb21wYXRNb2RlIGlzICJCYWNrQ29tcGF0IgorUEFTUyB0cmVlQXNTdHJpbmco
aWZyYW1lRG9jdW1lbnQpIGlzICIjZG9jdW1lbnQgW0hUTUxdIgorYW55IGRvY3VtZW50LndyaXRl
IGNhbGxzIGFmdGVyIDxodG1sPiBoYXMgYmVlbiBlbmNvdW50ZXJlZCBjYW5ub3QgY2hhbmdlIHRo
ZSBkb2N0eXBlCitQQVNTIGlmcmFtZURvY3VtZW50LmNvbXBhdE1vZGUgaXMgIkJhY2tDb21wYXQi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtZG9j
dHlwZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUt
ZG9jdHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NjZiZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC13cml0ZS1kb2N0eXBlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb2N1bWVudC13cml0ZS1kb2N0
eXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9kb2N1bWVudC13cml0ZS1kb2N0eXBl
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2RvY3VtZW50LXdy
aXRlLWRvY3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExYzQ4
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291
cmNlcy9kb2N1bWVudC13cml0ZS1kb2N0eXBlLmpzCkBAIC0wLDAgKzEsOTMgQEAKK2Rlc2NyaXB0
aW9uKCJUZXN0IHRoYXQgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQud3JpdGUoKSBjYW4g
Y29udmVydCBhIGRvY3VtZW50IHRvIHN0cmljdCBtb2RlIC0tIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzNiIpOworCisvLyBUZXN0IGlmIHdlJ3JlIG9uIEZGIGFu
ZCBhbGwgSFRNTEhUTUxFbGVtZW50cyBoYXZlIGFuIGltcGxpY2l0IEhFQUQgZWxlbWVudAorZnVu
Y3Rpb24gdGVzdEZvckdlY2tvSW1wbGljaXRIZWFkUXVpcmsoZG9jKQoreworICAgIHdpbmRvdy5o
YXNJbXBsaWNpdEhlYWRRdWlyayA9IGZhbHNlOworICAgIGlmIChkb2MuZmlyc3RDaGlsZCAmJiBk
b2MuZmlyc3RDaGlsZC5maXJzdENoaWxkKQorICAgICAgICB3aW5kb3cuaGFzSW1wbGljaXRIZWFk
UXVpcmsgPSBkb2MuZmlyc3RDaGlsZC5maXJzdENoaWxkLnRhZ05hbWUgPT0gIkhFQUQiOworfQor
CitmdW5jdGlvbiBpbXBsaWNpdEhlYWRTdHJpbmcoKQoreworICAgIHJldHVybiBoYXNJbXBsaWNp
dEhlYWRRdWlyayA/ICJIRUFELCAiIDogIiI7Cit9CisKKy8vIFNpbXBsZSByZWN1cmlzdmUgImdp
dmUgbWUgYSBzdHJpbmcgdG8gcmVwcmVzZW50IHRoaXMgdHJlZSIgZnVuY3Rpb24KK2Z1bmN0aW9u
IHRyZWVBc1N0cmluZyhub2RlKSB7CisgICAgdmFyIHN0cmluZyA9IG5vZGUubm9kZU5hbWU7Cisg
ICAgaWYgKG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHsKKyAgICAgICAgc3RyaW5nICs9ICIgWyI7
CisgICAgfQorICAgIGZvciAodmFyIHggPSAwOyB4IDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsg
eCsrKSB7CisgICAgICAgIGlmICh4ICE9IDApIHsKKyAgICAgICAgICAgIHN0cmluZyArPSAiLCAi
OworICAgICAgICB9CisgICAgICAgIHN0cmluZyArPSB0cmVlQXNTdHJpbmcobm9kZS5jaGlsZE5v
ZGVzW3hdKTsKKyAgICB9CisKKyAgICBpZiAobm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkgeworICAg
ICAgICBzdHJpbmcgKz0gIl0iOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nOworfQorCitmdW5j
dGlvbiBkb2N0eXBlTm9kZU5hbWUoaWZyYW1lRG9jdW1lbnQpIHsKKyAgICAvLyBXZWJLaXQgcmV0
dXJucyAiaHRtbCIgKG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgbmFtZSBvZiB0aGUgZG9jdHlwZSBz
b3VyY2UpCisgICAgLy8gR2Vja28gcmV0dXJucyAiSFRNTCIgYW5kIElFICIjY29tbWVudCIKKyAg
ICAvLyBXZSBkb24ndCBjYXJlIGZvciB0aGlzIHRlc3QsIHNvIHdlIHVzZSB0aGlzIGhhY2suCisg
ICAgcmV0dXJuIGlmcmFtZURvY3VtZW50LmZpcnN0Q2hpbGQubm9kZU5hbWU7Cit9CisKK3ZhciBp
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKK2RvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaWZyYW1lKTsKK3ZhciBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50
V2luZG93LmRvY3VtZW50OwordGVzdEZvckdlY2tvSW1wbGljaXRIZWFkUXVpcmsoaWZyYW1lRG9j
dW1lbnQpOworaWYgKGhhc0ltcGxpY2l0SGVhZFF1aXJrKQorICAgIGRlYnVnKCJXQVJOSU5HOiBU
aGlzIGJyb3dzZXIgYWRkcyBpbXBsaWNpdCBIRUFEIGVsZW1lbnRzIGluIGV2ZXJ5IEhUTUxIVE1M
RWxlbWVudCIpOworCitkZWJ1ZygiYWJvdXQ6YmxhbmsgaXMgcXVpcmtzbW9kZSBieSBkZWZhdWx0
IikKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lRG9jdW1lbnQuY29tcGF0TW9kZSIsICJC
YWNrQ29tcGF0Iik7CitkZWJ1ZygiZW5zdXJlIHRoYXQgYWJvdXQ6YmxhbmsncyBET00gaGFzIGFu
IGh0bWwgYW5kIGJvZHkgZWxlbWVudCIpCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRyZWVBc1N0
cmluZyhpZnJhbWVEb2N1bWVudCkiLCAiI2RvY3VtZW50IFtIVE1MIFsiICsgaW1wbGljaXRIZWFk
U3RyaW5nKCkgKyAiQk9EWV1dIik7CisKK2lmcmFtZURvY3VtZW50LndyaXRlKCI8IURvY1R5cGUg
aHRtbD48aHRtbD48Ym9keT50ZXN0PC9ib2R5PjwvaHRtbD4iKTsKK2RlYnVnKCJ3cml0aW5nIGEg
ZG9jdHlwZSBhcyB0aGUgZmlyc3QgZG9jdW1lbnQud3JpdGUgY2FuIGNoYW5nZSB0aGUgZG9jdW1l
bnQgdG8gc3RhbmRhcmRzIikKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lRG9jdW1lbnQu
Y29tcGF0TW9kZSIsICJDU1MxQ29tcGF0Iik7CitkZWJ1ZygiZW5zdXJlIHRoZSB3cml0dGVuIERP
TSBoYXMgYW4gaHRtbCBhbmQgYm9keSBlbGVtZW50IikKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
dHJlZUFzU3RyaW5nKGlmcmFtZURvY3VtZW50KSIsICIjZG9jdW1lbnQgWyIgKyBkb2N0eXBlTm9k
ZU5hbWUoaWZyYW1lRG9jdW1lbnQpICsgIiwgSFRNTCBbIiArIGltcGxpY2l0SGVhZFN0cmluZygp
ICsgIkJPRFkgWyN0ZXh0XV1dIik7CisKKy8vIGRvY3VtZW50Lm9wZW4oKSBkb2Vzbid0IHNlZW0g
dG8gY2xlYXIgdGhlIGRvY3VtZW50IGFzIGV4cGVjdGVkIGluIEdlY2tvCisvLyBodHRwczovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM5MDgKKy8vIEFsbCB0ZXN0cyBh
ZnRlciB0aGlzIHBvaW50cyBhcmUgbGlrZWx5IHRvIGZhaWwgaW4gRmlyZWZveAoraWZyYW1lLmNv
bnRlbnRXaW5kb3cuZG9jdW1lbnQub3BlbigpOworZGVidWcoImVuc3VyZSB0aGF0IGRvY3VtZW50
Lm9wZW4gY2xlYXJzIHRoZSBkb2N1bWVudCBidXQgZG9lcyBub3QgY2hhbmdlIHRoZSBkb2N1bWVu
dCBwb2ludGVyIikKK3Nob3VsZEJlKCJpZnJhbWVEb2N1bWVudCIsICJpZnJhbWUuY29udGVudFdp
bmRvdy5kb2N1bWVudCIpOworZGVidWcoImRvY3VtZW50Lm9wZW4gc2hvdWxkIGFsc28gY2xlYXIg
dGhlIGRvY3VtZW50IGFuZCByZXNldCB0aGUgZG9jdHlwZSkiKQorc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0cmVlQXNTdHJpbmcoaWZyYW1lRG9jdW1lbnQpIiwgIiNkb2N1bWVudCIpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJpZnJhbWVEb2N1bWVudC5jb21wYXRNb2RlIiwgIkJhY2tDb21wYXQi
KTsKKworZGVidWcoImRvY3VtZW50LndyaXRlIG9mIFwiXCIgc2hvdWxkIGxlYXZlIHRoZSBkb2N1
bWVudCBpbiBxdWlya3Ntb2RlIGFuZCBhZGQgbm8gY29udGVudCB0byB0aGUgZG9jdW1lbnQiKQor
aWZyYW1lRG9jdW1lbnQud3JpdGUoIiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpZnJhbWVE
b2N1bWVudC5jb21wYXRNb2RlIiwgIkJhY2tDb21wYXQiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygidHJlZUFzU3RyaW5nKGlmcmFtZURvY3VtZW50KSIsICIjZG9jdW1lbnQiKTsKKworZGVidWco
ImRvY3VtZW50LndyaXRlIGNhbGxzIGNhbiBjaGFuZ2UgdGhlIGRvY3R5cGUgdW50aWwgYW4gPGh0
bWw+IGlzIGNyZWF0ZWQiKQoraWZyYW1lRG9jdW1lbnQud3JpdGUoIjwhRG9jVHlwZSBodG1sPjxo
dG1sPjxib2R5PnRlc3Q8L2JvZHk+PC9odG1sPiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJp
ZnJhbWVEb2N1bWVudC5jb21wYXRNb2RlIiwgIkNTUzFDb21wYXQiKTsKKworZGVidWcoInJlc2V0
IHRoZSBkb2N1bWVudCBhZ2FpbiIpOworaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQub3Bl
bigpOworCitkZWJ1ZygiZG9jdW1lbnQud3JpdGUgb2YgXCImbHQ7aHRtbD5cIiBzaG91bGQgbGVh
dmUgdGhlIGRvY3VtZW50IGluIHF1aXJrc21vZGUgYW5kIGFkZCBvbmx5IGFuIEhUTUwgZWxlbWVu
dCwgbm8gYm9keSIpCitpZnJhbWVEb2N1bWVudC53cml0ZSgiPGh0bWw+Iik7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImlmcmFtZURvY3VtZW50LmNvbXBhdE1vZGUiLCAiQmFja0NvbXBhdCIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0cmVlQXNTdHJpbmcoaWZyYW1lRG9jdW1lbnQpIiwgIiNk
b2N1bWVudCBbSFRNTF0iKTsKKworZGVidWcoImFueSBkb2N1bWVudC53cml0ZSBjYWxscyBhZnRl
ciAmbHQ7aHRtbD4gaGFzIGJlZW4gZW5jb3VudGVyZWQgY2Fubm90IGNoYW5nZSB0aGUgZG9jdHlw
ZSIpCitpZnJhbWVEb2N1bWVudC53cml0ZSgiPCFEb2NUeXBlIGh0bWw+PGh0bWw+PGJvZHk+dGVz
dDwvYm9keT48L2h0bWw+Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlmcmFtZURvY3VtZW50
LmNvbXBhdE1vZGUiLCAiQmFja0NvbXBhdCIpOworCitkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGlmcmFtZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNzAxZjdkLi5hYzI0
YzM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDA5LTAzLTE3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBk
b2N1bWVudC53cml0ZSgpIHNob3VsZCBiZSBhYmxlIHRvIG1ha2UgYSBkb2N1bWVudCBzdHJpY3Qg
bW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQz
MzYKKworICAgICAgICBSZW1vdmUgYW4gaW1wbGljaXQgd3JpdGUgb2YgIjxodG1sPiIgb24gdGhl
IGZpcnN0IGRvY3VtZW50LndyaXRlIGNhbGwKKyAgICAgICAgdGhpcyB3YXMgYWRkZWQgYXMgcGFy
dCBvZiBhIEtERSBpbXBvcnQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzk4Cisg
ICAgICAgIHdpdGggbm8gbGF5b3V0IHRlc3Qgb3IgZXhwbGFuYXRpb24uICBJIGNhbid0IHRoaW5r
IG9mIGFueSByZWFzb24gd2h5CisgICAgICAgIGFuIGltcGxpY2l0IDxodG1sPiB3cml0ZSBpcyBu
ZWNlc3NhcnkgKG9yIGNvcnJlY3QpLCBzbyBJJ20gcmVtb3ZpbmcgaXQgYW5kCisgICAgICAgIGFk
ZGluZyBhIHRlc3QgZm9yIHRoZSBjb3JyZWN0IGJlaGF2aW9yLiAgVGhlIHBhcnNlciB3aWxsIGFk
ZCBhbnkgbmVjZXNzYXJ5CisgICAgICAgIEhUTUxIVE1MRWxlbWVudHMgZHVyaW5nIHRoZSB3cml0
ZSgpIGFueXdheS4KKworICAgICAgICBPdXIgYmVoYXZpb3IgaXMgbm93IHRlc3RlZCBieSBmYXN0
L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1kb2N0eXBlCisgICAgICAgIGFuZCBtYXRjaGVz
IElFLCBGRiBmYWlscyB0aGlzIG5ldyB0ZXN0LiAgTW96aWxsYSBidWcgZmlsZWQ6CisgICAgICAg
IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzkwOAorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3
cml0ZSk6CisKIDIwMDktMDMtMTcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkYjA5NWVj
Li5hZGI3MGRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNjg2LDE1ICsxNjg2LDEwIEBAIHZvaWQgRG9jdW1l
bnQ6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQpCiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRc
biIsIGVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAKLSAgICBpZiAoIW1fdG9rZW5pemVyKSB7Cisg
ICAgaWYgKCFtX3Rva2VuaXplcikKICAgICAgICAgb3Blbihvd25lckRvY3VtZW50KTsKLSAgICAg
ICAgQVNTRVJUKG1fdG9rZW5pemVyKTsKLSAgICAgICAgaWYgKCFtX3Rva2VuaXplcikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgVUNoYXIgZG9jdW1lbnRQcmVmaXhbXSA9IHsgJzwnLCAn
aCcsICd0JywgJ20nLCAnbCcsICc+JyB9OwotICAgICAgICBtX3Rva2VuaXplci0+d3JpdGUoU2Vn
bWVudGVkU3RyaW5nKGRvY3VtZW50UHJlZml4LCBzaXplb2YoZG9jdW1lbnRQcmVmaXgpIC8gc2l6
ZW9mKGRvY3VtZW50UHJlZml4WzBdKSksIGZhbHNlKTsKLSAgICB9CiAKKyAgICBBU1NFUlQobV90
b2tlbml6ZXIpOwogICAgIG1fdG9rZW5pemVyLT53cml0ZSh0ZXh0LCBmYWxzZSk7CiAKICNpZmRl
ZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCg==
</data>
<flag name="review"
          id="14160"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>