<?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>26362</bug_id>
          
          <creation_ts>2009-06-12 17:44:53 -0700</creation_ts>
          <short_desc>:nth-child() is not re-evaluated when adding or removing children</short_desc>
          <delta_ts>2009-06-16 16:18:38 -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>CSS</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>http://www.quirksmode.org/css/nthchild.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>9610</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125579</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-12 17:44:53 -0700</bug_when>
    <thetext>The testcase at http://www.quirksmode.org/css/nthchild.html shows that WebKit fails to re-evaluate nth-child when siblings are added or removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125776</commentid>
    <comment_count>1</comment_count>
      <attachid>31265</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-14 10:14:42 -0700</bug_when>
    <thetext>Created attachment 31265
Patch, testcase, changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125791</commentid>
    <comment_count>2</comment_count>
      <attachid>31265</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-14 11:43:23 -0700</bug_when>
    <thetext>Comment on attachment 31265
Patch, testcase, changelog

&gt; -Node::StyleChange Node::diff( RenderStyle *s1, RenderStyle *s2 )
&gt; +Node::StyleChange Node::diff(RenderStyle *s1, RenderStyle *s2)

Since you&apos;re touching this line to tweak style, please move the &quot;*&quot; characters next to the type name too.

&gt; +    bool pseudoClassStateEquivalent(const RenderStyle* style)
&gt; +    {
&gt; +        return m_affectedByEmpty == style-&gt;affectedByEmpty() &amp;&amp;
&gt; +               (!m_affectedByEmpty || m_emptyState == style-&gt;emptyState()) &amp;&amp;
&gt; +               m_firstChildState == style-&gt;firstChildState() &amp;&amp;
&gt; +               m_lastChildState == style-&gt;lastChildState() &amp;&amp;
&gt; +               m_childIndex == style-&gt;childIndex();
&gt; +    }

The WebKit coding style (and my person preference) put the operators on the starts of lines, not the ends of lines. Like this:

    return m_affectedByEmpty == style-&gt;affectedByEmpty()
        &amp;&amp; (!m_affectedByEmpty || m_emptyState == style-&gt;emptyState())
        &amp;&amp; m_firstChildState == style-&gt;firstChildState()
        &amp;&amp; m_lastChildState == style-&gt;lastChildState()
        &amp;&amp; m_childIndex == style-&gt;childIndex();

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125819</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-14 14:27:35 -0700</bug_when>
    <thetext>Landed with a little extra const cleanup:
http://trac.webkit.org/changeset/44671</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125822</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 14:30:41 -0700</bug_when>
    <thetext>I&apos;d like to talk about this bug further.  I don&apos;t think this was the right approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125823</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 14:31:51 -0700</bug_when>
    <thetext>Reopening, as I&apos;d like this to be revisited.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125829</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 15:03:06 -0700</bug_when>
    <thetext>See checkForSiblingStyleChanges in Element.cpp, which should have handled this situation without resorting to destroying the render tree and recreating it.  I assume there is a bug in that method that needs to be investigated.  Your solution, though, is needlessly destroying the render objects now on child changes, which should not be necessary and is bad for performance.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125836</commentid>
    <comment_count>7</comment_count>
      <attachid>31271</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 15:35:36 -0700</bug_when>
    <thetext>Created attachment 31271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125842</commentid>
    <comment_count>8</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 16:10:23 -0700</bug_when>
    <thetext>Minusing this as it will cause inefficiency when nested positional rules are used, e.g., nth-child inside of nth-child.  Rather than dirtying for style recalc, I should just patch the check that does the internal update.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125844</commentid>
    <comment_count>9</comment_count>
      <attachid>31272</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 16:42:05 -0700</bug_when>
    <thetext>Created attachment 31272
Better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125846</commentid>
    <comment_count>10</comment_count>
      <attachid>31272</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-14 16:48:02 -0700</bug_when>
    <thetext>Comment on attachment 31272
Better patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125848</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-14 16:52:57 -0700</bug_when>
    <thetext>Fixed in r44673.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31265</attachid>
            <date>2009-06-14 10:14:42 -0700</date>
            <delta_ts>2009-06-14 15:35:36 -0700</delta_ts>
            <desc>Patch, testcase, changelog</desc>
            <filename>26362_patch.txt</filename>
            <type>text/plain</type>
            <size>12902</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMWYzZGRkLi5kNWNhMDE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDYt
MTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNjIKKyAgICAgICAgCisgICAgICAgIFRlc3Rj
YXNlIGZvciA6bnRoLWNoaWxkIHVwZGF0aW5nIHdoZW4gZHluYW1pY2FsbHkgYWRkaW5nIHNpYmxp
bmdzLgorCisgICAgICAgICogZmFzdC9jc3MvbnRoLWNoaWxkLWR5bmFtaWMuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL250aC1jaGlsZC1keW5hbWljLWV4cGVj
dGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jc3MvbnRo
LWNoaWxkLWR5bmFtaWMtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9jc3MvbnRoLWNoaWxkLWR5bmFtaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAw
OS0wNi0xMyAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbnRo
LWNoaWxkLWR5bmFtaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1keW5h
bWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTViMDk4YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1keW5hbWljLmh0
bWwKQEAgLTAsMCArMSwxMjAgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPGhlYWQ+CisgIDx0aXRs
ZT5DU1MzIC0gOm50aC1jaGlsZCgpPC90aXRsZT4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KKyAgICAjdGVzdCB7CisgICAgICBib3JkZXI6IDFweCBzb2xpZCBi
bGFjazsKKyAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgIHBhZGRpbmc6IDVweDsKKyAgICB9CisK
KyAgICAjbG9nIHsKKyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgbWFyZ2lu
OiAxMHB4OworICAgICAgcGFkZGluZzogNXB4OworICAgIH0KKworICAgICN0ZXN0ID4gKjpudGgt
Y2hpbGQoM24rMSkgeworICAgICAgY29sb3I6IHJnYigyNTUsIDAsIDApOworICAgIH0KKworICAg
ICN0ZXN0IGRpdjpudGgtb2YtdHlwZSg1bisyKSB7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTUzLCAxNTMsIDI1NSk7CisgICAgfQorCisgICAgI3Rlc3QgcCB7CisgICAgICBtYXJnaW46
IDA7CisgICAgICBtYXJnaW4tbGVmdDogNXB4OworICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgIHZhciB3cjsKKyAgZnVuY3Rpb24gaW5pdCgp
IHsKKyAgICB3ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CisgICAgY29sb3JT
aWJsaW5ncyhmYWxzZSk7CisgICAgdGVzdCgpOworICB9CisKKyAgdmFyIGVscyA9IFsnZGl2Jywn
cCddOworICB2YXIgaW5kZXggPSBmYWxzZTsKKworICBmdW5jdGlvbiBsb2cobSkgeworICAgIHZh
ciBsb2dEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisgICAgbG9nRGl2Lmlu
bmVySFRNTCArPSBtICsgJzxicj4nOworICB9CisKKyAgZnVuY3Rpb24gYWRkRWxlbWVudCgpIHsK
KyAgICBpbmRleCA9ICFpbmRleDsKKyAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KGVsc1tpbmRleCoxXSk7CisgICAgd3IuaW5zZXJ0QmVmb3JlKGxpLCB3ci5maXJzdENoaWxkKTsK
KyAgICBjb2xvclNpYmxpbmdzKHRydWUpOworICB9CisKKyAgZnVuY3Rpb24gY29sb3JTaWJsaW5n
cyh0ZXN0Q29sb3JzKSB7CisgICAgdmFyIHRlc3RFbHMgPSB3ci5jaGlsZE5vZGVzOworICAgIHZh
ciBuID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RFbHMubGVuZ3RoOyBpICs9IDEp
IHsKKyAgICAgIHZhciB0eXBlID0gdGVzdEVsc1tpXS5ub2RlTmFtZTsKKyAgICAgIHZhciBjb2xv
ciA9ICcnOworICAgICAgdmFyIGV4cGVjdGVkQ29sb3IgPSAncmdiKDAsIDAsIDApJzsKKyAgICAg
IGlmICgoaSArIDEpID09PSAobiAqIDMgKyAxKSkgeworICAgICAgICBjb2xvciA9ICcgcmVkIHRl
eHQgJzsKKyAgICAgICAgZXhwZWN0ZWRDb2xvciA9ICdyZ2IoMjU1LCAwLCAwKSc7CisgICAgICAg
IG4gKz0gMTsKKyAgICAgIH0KKyAgICAgIGlmICh0ZXN0Q29sb3JzKSB7CisgICAgICAgIHZhciBj
b21wdXRlZENvbG9yID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdEVsc1tpXSkuY29sb3I7
CisgICAgICAgIHZhciBtZXNzYWdlOworICAgICAgICBpZiAoY29tcHV0ZWRDb2xvciAhPSBleHBl
Y3RlZENvbG9yKQorICAgICAgICAgIG1lc3NhZ2UgPSAnRkFJTDogZm91bmQgY29sb3IgJyArIGNv
bXB1dGVkQ29sb3IgKyAnLCBleHBlY3RlZCAnICsgZXhwZWN0ZWRDb2xvcjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIG1lc3NhZ2UgPSAnUEFTUzogZm91bmQgY29sb3IgJyArIGNvbXB1dGVkQ29s
b3I7CisgICAgICAgIGxvZygnY2hpbGQgJyArIGkgKyAnOiAnICsgbWVzc2FnZSk7CisgICAgICB9
CisgICAgICB0ZXN0RWxzW2ldLmlubmVySFRNTCA9IHR5cGUgKyAnICcgKyBjb2xvcjsKKyAgICB9
CisKKyAgICB2YXIgYmx1ZXMgPSB3ci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7CisgICAg
biA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibHVlcy5sZW5ndGg7IGkgKz0gMSkgewor
ICAgICAgdmFyIGV4cGVjdGVkQ29sb3IgPSAncmdiKDAsIDAsIDApJzsKKyAgICAgIGlmICgoaSAr
IDEpID09PSAobiAqIDUgKyAyKSkgeworICAgICAgICBibHVlc1tpXS5pbm5lckhUTUwgKz0gJyBi
bHVlIGJnJzsKKyAgICAgICAgbiArPSAxOworCisgICAgICAgIHZhciBleHBlY3RlZENvbG9yID0g
J3JnYigxNTMsIDE1MywgMjU1KSc7CisKKyAgICAgICAgaWYgKHRlc3RDb2xvcnMpIHsKKyAgICAg
ICAgICB2YXIgY29tcHV0ZWRDb2xvciA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGJsdWVzW2ld
KS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgICAgdmFyIG1lc3NhZ2U7CisgICAgICAgICAgaWYg
KGNvbXB1dGVkQ29sb3IgIT0gZXhwZWN0ZWRDb2xvcikKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAn
RkFJTDogZm91bmQgY29sb3IgJyArIGNvbXB1dGVkQ29sb3IgKyAnLCBleHBlY3RlZCAnICsgZXhw
ZWN0ZWRDb2xvcjsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBtZXNzYWdlID0gJ1BBU1M6
IGZvdW5kIGNvbG9yICcgKyBjb21wdXRlZENvbG9yOworICAgICAgICAgIGxvZygnZGl2ICcgKyBp
ICsgJzogJyArIG1lc3NhZ2UpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBhZGRFbGVtZW50KCk7CisgIH0KKyAgPC9zY3JpcHQ+CisK
KzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCis8cD5UZXN0IDpudGgtY2hpbGQo
KSB3aGVuIGR5bmFtaWNhbGx5IGFkZGluZyBzaWJsaW5ncy48L3A+Cis8cD48YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNjIiPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjM2MjwvYT48L3A+Cis8ZGl2IGlkPSJ0ZXN0Ij48
ZGl2PjwvZGl2PjxwPjwvcD48ZGl2PjwvZGl2PjxwPjwvcD48ZGl2PjwvZGl2PjxwPjwvcD48ZGl2
PjwvZGl2PjxwPjwvcD48ZGl2PjwvZGl2PjxwPjwvcD48L2Rpdj4KKworPGRpdiBpZD0ibG9nIj48
L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvY3NzL250aC1jaGlsZC1keW5hbWljLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL250aC1jaGlsZC1keW5hbWljLWV4cGVjdGVk
LmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZTJmZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvbnRoLWNo
aWxkLWR5bmFtaWMtZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorODFjODEwZjZhOTBl
ZDJkNGU3ZjUzZmU5YmQzNjllNzcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvbnRoLWNoaWxkLWR5bmFtaWMt
ZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL250aC1jaGls
ZC1keW5hbWljLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wN2IwNDUzCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvY3NzL250aC1jaGlsZC1keW5hbWljLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy9udGgtY2hpbGQtZHlu
YW1pYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvbnRo
LWNoaWxkLWR5bmFtaWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjgzZGU1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9jc3MvbnRoLWNoaWxkLWR5bmFtaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODgg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1ODIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgx
OAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMjR4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMjQ6ICJUZXN0IDpudGgtY2hpbGQoKSB3aGVu
IGR5bmFtaWNhbGx5IGFkZGluZyBzaWJsaW5ncy4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMzQpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDAsMCkgc2l6
ZSAzMDV4MTggW2NvbG9yPSMwMDAwRUVdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMzA1eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAz
MDU6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNjIiCisgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTAsNjgpIHNpemUgNzY0eDIxMCBbYm9yZGVyOiAoMXB4
IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDExLDYpIHNpemUg
NzQ3eDE4IFtjb2xvcj0jRkYwMDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDYweDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMzog
IlAgIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEzLDApIHdpZHRoIDQ3OiAicmVkIHRleHQi
CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg2LDI0KSBzaXplIDc1MngxOAorICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI5eDE4CisgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyOTogIkRJViIKKyAgICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgxMSw0Mikgc2l6ZSA3NDd4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5OiAi
UCIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDYsNjApIHNpemUgNzUyeDE4IFtjb2xv
cj0jRkYwMDAwXSBbYmdjb2xvcj0jOTk5OUZGXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDEzMXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMzM6ICJESVYgIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDMzLDApIHdpZHRoIDUxOiAi
cmVkIHRleHQgIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDg0LDApIHdpZHRoIDQ3OiAiYmx1
ZSBiZyIKKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxMSw3OCkgc2l6ZSA3NDd4MTgKKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5eDE4CisgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5OiAiUCIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDYsOTYpIHNpemUgNzUyeDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMjl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI5
OiAiRElWIgorICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDExLDExNCkgc2l6ZSA3NDd4MTgg
W2NvbG9yPSNGRjAwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgNjB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzOiAiUCAiCisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTMsMCkgd2lkdGggNDc6ICJyZWQgdGV4dCIKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDYsMTMyKSBzaXplIDc1MngxOAorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAyOTogIkRJViIKKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgx
MSwxNTApIHNpemUgNzQ3eDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgOXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTogIlAiCisg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg2LDE2OCkgc2l6ZSA3NTJ4MTggW2NvbG9yPSNG
RjAwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODB4MTgK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMzOiAiRElWICIKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgzMywwKSB3aWR0aCA0NzogInJlZCB0ZXh0IgorICAgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDExLDE4Nikgc2l6ZSA3NDd4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA5OiAiUCIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxMCwyODgpIHNpemUg
NzY0eDIyOCBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDYsNikgc2l6ZSAyNjJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNiw2
KSB3aWR0aCAyNjI6ICJjaGlsZCAwOiBQQVNTOiBmb3VuZCBjb2xvciByZ2IoMjU1LCAwLCAwKSIK
KyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjY4LDIwKSBzaXplIDB4MAorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDYsMjQpIHNpemUgMjQ2eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDYsMjQpIHdpZHRoIDI0NjogImNoaWxkIDE6IFBBU1M6IGZvdW5kIGNvbG9yIHJnYigwLCAw
LCAwKSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjUyLDM4KSBzaXplIDB4MAorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYsNDIpIHNpemUgMjQ2eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDYsNDIpIHdpZHRoIDI0NjogImNoaWxkIDI6IFBBU1M6IGZvdW5kIGNvbG9yIHJn
YigwLCAwLCAwKSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjUyLDU2KSBzaXplIDB4MAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYsNjApIHNpemUgMjYyeDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDYsNjApIHdpZHRoIDI2MjogImNoaWxkIDM6IFBBU1M6IGZvdW5kIGNv
bG9yIHJnYigyNTUsIDAsIDApIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyNjgsNzQpIHNp
emUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNiw3OCkgc2l6ZSAyNDZ4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNiw3OCkgd2lkdGggMjQ2OiAiY2hpbGQgNDogUEFTUzog
Zm91bmQgY29sb3IgcmdiKDAsIDAsIDApIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyNTIs
OTIpIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNiw5Nikgc2l6ZSAy
NDZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNiw5Nikgd2lkdGggMjQ2OiAiY2hpbGQgNTog
UEFTUzogZm91bmQgY29sb3IgcmdiKDAsIDAsIDApIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgyNTIsMTEwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYsMTE0
KSBzaXplIDI2MngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICg2LDExNCkgd2lkdGggMjYyOiAi
Y2hpbGQgNjogUEFTUzogZm91bmQgY29sb3IgcmdiKDI1NSwgMCwgMCkiCisgICAgICAgIFJlbmRl
ckJSIHtCUn0gYXQgKDI2OCwxMjgpIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoNiwxMzIpIHNpemUgMjQ2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDYsMTMyKSB3
aWR0aCAyNDY6ICJjaGlsZCA3OiBQQVNTOiBmb3VuZCBjb2xvciByZ2IoMCwgMCwgMCkiCisgICAg
ICAgIFJlbmRlckJSIHtCUn0gYXQgKDI1MiwxNDYpIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoNiwxNTApIHNpemUgMjQ2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDYsMTUwKSB3aWR0aCAyNDY6ICJjaGlsZCA4OiBQQVNTOiBmb3VuZCBjb2xvciByZ2IoMCwgMCwg
MCkiCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDI1MiwxNjQpIHNpemUgMHgwCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNiwxNjgpIHNpemUgMjYyeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDYsMTY4KSB3aWR0aCAyNjI6ICJjaGlsZCA5OiBQQVNTOiBmb3VuZCBjb2xvciBy
Z2IoMjU1LCAwLCAwKSIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjY4LDE4Mikgc2l6ZSAw
eDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2LDE4Nikgc2l6ZSAyNTR4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNiwxODYpIHdpZHRoIDI1NDogImNoaWxkIDEwOiBQQVNTOiBm
b3VuZCBjb2xvciByZ2IoMCwgMCwgMCkiCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDI2MCwy
MDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNiwyMDQpIHNpemUg
MjgzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDYsMjA0KSB3aWR0aCAyODM6ICJkaXYgMTog
UEFTUzogZm91bmQgY29sb3IgcmdiKDE1MywgMTUzLCAyNTUpIgorICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICgyODksMjE4KSBzaXplIDB4MApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMWM4NGRmLi5kODE4ZjdlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDA5LTA2LTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzYyCisgICAgICAgIAorICAg
ICAgICBGaXggYW4gaXNzdWUgbm90ZWQgb24gcXVpcmtzbW9kZS5jb20gd2hlcmUgZHluYW1pY2Fs
bHkgYWRkaW5nIHNpYmxpbmdzIGRvZXMgbm90CisgICAgICAgIHVwZGF0ZSA6bnRoLWNoaWxkIHN0
eWxlIGNvcnJlY3RseS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9udGgtY2hpbGQtZHluYW1p
Yy5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpkaWZmKToKKyAgICAgICAgV2hlbiBjb21wYXJpbmcgc3R5bGVzIHRvIGRlY2lkZSB3aGV0aGVy
IHRvIGRldGFjaCBhbmQgcmVhdHRhY2gsIHdlCisgICAgICAgIG5lZWQgdG8gbG9vayBhdCB3aGV0
aGVyIHRoZSBwc2V1ZG9jbGFzcy1yZWxhdGVkIGRhdGEgaW4gdGhlIHN0eWxlCisgICAgICAgIGNo
YW5nZWQgKHNpbmNlIFJlbmRlclN0eWxlOjpkaWZmIGRvZXNuJ3QgY2hlY2sgdGhpcykuCisgICAg
ICAgIAorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnBzZXVkb0NsYXNzU3RhdGVFcXVpdmFsZW50KToKKyAg
ICAgICAgTmV3IG1ldGhvZCB0aGF0IGNvbXBhcmVzIHRoZSBwc2V1ZG9jbGFzcy1yZWxhdGVkIG1l
bWJlcnMuCisKIDIwMDktMDYtMTMgIFZpY3RvciBXYW5nIDx2aWN0b3J3QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4gIExhbmRlZCBieSBBZGFtIEJhcnRo
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCBjZDU1NGRmLi40YzgwYjdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTm9k
ZTo6c3RvcElnbm9yaW5nTGVha3MoKQogI2VuZGlmCiB9CiAKLU5vZGU6OlN0eWxlQ2hhbmdlIE5v
ZGU6OmRpZmYoIFJlbmRlclN0eWxlICpzMSwgUmVuZGVyU3R5bGUgKnMyICkKK05vZGU6OlN0eWxl
Q2hhbmdlIE5vZGU6OmRpZmYoUmVuZGVyU3R5bGUgKnMxLCBSZW5kZXJTdHlsZSAqczIpCiB7CiAg
ICAgLy8gRklYTUU6IFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGp1c3QgdG90YWxs
eSB3cm9uZy4gIEl0IGRvZXNuJ3QgaGFuZGxlCiAgICAgLy8gZXhwbGljaXQgaW5oZXJpdGFuY2Ug
b2Ygbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzIGFuZCBzbyB5b3UgZW5kIHVwIG5vdCByZS1yZXNv
bHZpbmcKQEAgLTI5Myw3ICsyOTMsNyBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZmKCBS
ZW5kZXJTdHlsZSAqczEsIFJlbmRlclN0eWxlICpzMiApCiAgICAgRURpc3BsYXkgZGlzcGxheTIg
PSBzMiA/IHMyLT5kaXNwbGF5KCkgOiBOT05FOwogICAgIGJvb2wgZmwyID0gczIgJiYgczItPmhh
c1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUik7CiAgICAgICAgIAotICAgIGlmIChkaXNwbGF5MSAh
PSBkaXNwbGF5MiB8fCBmbDEgIT0gZmwyIHx8IChzMSAmJiBzMiAmJiAhczEtPmNvbnRlbnREYXRh
RXF1aXZhbGVudChzMikpKQorICAgIGlmIChkaXNwbGF5MSAhPSBkaXNwbGF5MiB8fCBmbDEgIT0g
ZmwyIHx8IChzMSAmJiBzMiAmJiAoIXMxLT5jb250ZW50RGF0YUVxdWl2YWxlbnQoczIpIHx8ICFz
MS0+cHNldWRvQ2xhc3NTdGF0ZUVxdWl2YWxlbnQoczIpKSkpCiAgICAgICAgIGNoID0gRGV0YWNo
OwogICAgIGVsc2UgaWYgKCFzMSB8fCAhczIpCiAgICAgICAgIGNoID0gSW5oZXJpdDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGEzOTBlYTMuLjY0NzRlMmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTA3Nyw2ICsxMDc3LDE1IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKCkgeyBtX2xhc3RDaGlsZFN0YXRlID0g
dHJ1ZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2NoaWxk
SW5kZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jaGls
ZEluZGV4ID0gaW5kZXg7IH0KKyAgICAKKyAgICBib29sIHBzZXVkb0NsYXNzU3RhdGVFcXVpdmFs
ZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fm
ZmVjdGVkQnlFbXB0eSA9PSBzdHlsZS0+YWZmZWN0ZWRCeUVtcHR5KCkgJiYKKyAgICAgICAgICAg
ICAgICghbV9hZmZlY3RlZEJ5RW1wdHkgfHwgbV9lbXB0eVN0YXRlID09IHN0eWxlLT5lbXB0eVN0
YXRlKCkpICYmCisgICAgICAgICAgICAgICBtX2ZpcnN0Q2hpbGRTdGF0ZSA9PSBzdHlsZS0+Zmly
c3RDaGlsZFN0YXRlKCkgJiYKKyAgICAgICAgICAgICAgIG1fbGFzdENoaWxkU3RhdGUgPT0gc3R5
bGUtPmxhc3RDaGlsZFN0YXRlKCkgJiYKKyAgICAgICAgICAgICAgIG1fY2hpbGRJbmRleCA9PSBz
dHlsZS0+Y2hpbGRJbmRleCgpOworICAgIH0KIAogICAgIC8vIEluaXRpYWwgdmFsdWVzIGZvciBh
bGwgdGhlIHByb3BlcnRpZXMKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsQm9yZGVyQ29sbGFwc2Uo
KSB7IHJldHVybiBmYWxzZTsgfQo=
</data>
<flag name="review"
          id="15964"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31271</attachid>
            <date>2009-06-14 15:35:36 -0700</date>
            <delta_ts>2009-06-14 16:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4540</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0Njcy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDYt
MTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjM2MgorCisgICAgICAgIEJhY2sgb3V0IFNpbW9uJ3MgZml4IGFuZCByZXBs
YWNlIGl0IHdpdGggYSBiZXR0ZXIgb25lIHRoYXQgZG9lc24ndCBuZWVkbGVzc2x5IGRlc3Ryb3kg
UmVuZGVyT2JqZWN0cy4KKyAgICAgICAgVGhlIHJlYWwgaXNzdWUgaGVyZSB3YXMgdGhhdCBhbHRo
b3VnaCB0aGUgbmV3IHN0eWxlcyB3ZXJlIGJlaW5nIHByb3Blcmx5IGNvbXB1dGVkLiB0aGV5IGp1
c3Qgd2VyZW4ndAorICAgICAgICBiZWluZyBzZXQgYmVjYXVzZSB0aGUgZWxlbWVudHMgaGFkbid0
IGJlZW4gbWFya2VkIGFzIG5lZWRpbmcgc3R5bGUgcmVjYWxjLgorCisgICAgICAgIFRoaXMgZml4
IG1ha2VzIHN1cmUgdGhhdCB3aGVuIHBvc2l0aW9uYWwgcnVsZXMgaGF2ZSBpbnZva2VkIGEgRm9y
Y2UgY2hhbmdlIHRoYXQgd2UganVzdCBhbHdheXMgZGlydHkKKyAgICAgICAgdGhlIGVsZW1lbnQg
aW1tZWRpYXRlbHkgYmVmb3JlIGRvaW5nIGEgc3R5bGUgcmVjYWxjIG9uIGl0LiAgVGhpcyBpcyBz
aW1pbGFyIHRvIGJvdGggdGhlIGRpcmVjdAorICAgICAgICBhZGphY2VudCBzaWJsaW5nIHByb2Js
ZW0gYXMgd2VsbCBhcyB0aGUgaG92ZXIgZGVzY2VuZGFudCBzdHlsZSBzaGFyaW5nIHByb2JsZW0u
CisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZWNhbGNTdHlsZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6ZGlmZik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0Q2hpbGRJbmRleCk6CisKIDIw
MDktMDYtMTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBkb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDY3MSkKKysrIGRvbS9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODM2LDcgKzgzNiwxMSBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0
eWxlKFN0eWxlQ2hhbmdlIGNoCiAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgZ29vZCBlbm91
Z2ggZm9yIDpob3ZlciArIGZvbywgYnV0IGl0IGlzIG5vdCBnb29kIGVub3VnaCBmb3IgOmhvdmVy
ICsgZm9vICsgYmFyLgogICAgIC8vIEZvciBub3cgd2Ugd2lsbCBqdXN0IHdvcnJ5IGFib3V0IHRo
ZSBjb21tb24gY2FzZSwgc2luY2UgaXQncyBhIGxvdCB0cmlja2llciB0byBnZXQgdGhlIHNlY29u
ZCBjYXNlIHJpZ2h0CiAgICAgLy8gd2l0aG91dCBkb2luZyB3YXkgdG9vIG11Y2ggcmUtcmVzb2x1
dGlvbi4KLSAgICBib29sIGZvcmNlQ2hlY2tPZk5leHRFbGVtZW50U2libGluZyA9IGZhbHNlOwor
ICAgIC8vIEZvciBudGgtY2hpbGQgYW5kIG90aGVyIHBvc2l0aW9uYWwgcnVsZXMsIHdlIGdvIGFo
ZWFkIGFuZCBkaXJ0eSBjaGlsZHJlbiBmb3Igc3R5bGUgcmVjYWxjLiAgVGhleSB3ZXJlIGdvaW5n
CisgICAgLy8gdG8gZ2V0IHRoZWlyIHN0eWxlcyByZWNvbXB1dGVkIGFueXdheSwgYnV0IHRoaXMg
d2F5IHRoZXkgYXJlIGNvbnNpZGVyZWQgZGlydHkgYXMgZmFyIGFzIGhhdmluZyB0aGVpciBpbnRl
cm5hbAorICAgIC8vIFJlbmRlclN0eWxlcyB1cGRhdGVkIGV2ZW4gd2hlbiB0aGUgc3R5bGUgZG9l
c24ndCBjaGFuZ2UuICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIDpob3ZlciBkZXNjZW5kYW50IHBy
b2JsZW0gdGhhdAorICAgIC8vIG9jY3VycyB3aGVuIHN0eWxlIHNoYXJpbmcuCisgICAgYm9vbCBm
b3JjZUNoZWNrT2ZOZXh0RWxlbWVudFNpYmxpbmcgPSAoaGFzUG9zaXRpb25hbFJ1bGVzICYmIGNo
YW5nZSA9PSBGb3JjZSk7CiAgICAgZm9yIChOb2RlICpuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0g
bi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBib29sIGNoaWxkUnVsZXNDaGFuZ2VkID0gbi0+
bmVlZHNTdHlsZVJlY2FsYygpICYmIG4tPnN0eWxlQ2hhbmdlVHlwZSgpID09IEZ1bGxTdHlsZUNo
YW5nZTsKICAgICAgICAgaWYgKGZvcmNlQ2hlY2tPZk5leHRFbGVtZW50U2libGluZyAmJiBuLT5p
c0VsZW1lbnROb2RlKCkpCkBAIC04NDQsNyArODQ4LDcgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNT
dHlsZShTdHlsZUNoYW5nZSBjaAogICAgICAgICBpZiAoY2hhbmdlID49IEluaGVyaXQgfHwgbi0+
aXNUZXh0Tm9kZSgpIHx8IG4tPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8IG4tPm5lZWRzU3R5
bGVSZWNhbGMoKSkKICAgICAgICAgICAgIG4tPnJlY2FsY1N0eWxlKGNoYW5nZSk7CiAgICAgICAg
IGlmIChuLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBmb3JjZUNoZWNrT2ZOZXh0RWxl
bWVudFNpYmxpbmcgPSBjaGlsZFJ1bGVzQ2hhbmdlZCAmJiBoYXNEaXJlY3RBZGphY2VudFJ1bGVz
OworICAgICAgICAgICAgZm9yY2VDaGVja09mTmV4dEVsZW1lbnRTaWJsaW5nID0gKGNoaWxkUnVs
ZXNDaGFuZ2VkICYmIGhhc0RpcmVjdEFkamFjZW50UnVsZXMpIHx8IChoYXNQb3NpdGlvbmFsUnVs
ZXMgJiYgY2hhbmdlID09IEZvcmNlKTsKICAgICB9CiAKICAgICBzZXROZWVkc1N0eWxlUmVjYWxj
KE5vU3R5bGVDaGFuZ2UpOwpJbmRleDogZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9O
b2RlLmNwcAkocmV2aXNpb24gNDQ2NzEpCisrKyBkb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5Myw3ICsyOTMsNyBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJl
bmRlCiAgICAgRURpc3BsYXkgZGlzcGxheTIgPSBzMiA/IHMyLT5kaXNwbGF5KCkgOiBOT05FOwog
ICAgIGJvb2wgZmwyID0gczIgJiYgczItPmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUik7CiAg
ICAgICAgIAotICAgIGlmIChkaXNwbGF5MSAhPSBkaXNwbGF5MiB8fCBmbDEgIT0gZmwyIHx8IChz
MSAmJiBzMiAmJiAoIXMxLT5jb250ZW50RGF0YUVxdWl2YWxlbnQoczIpIHx8ICFzMS0+cHNldWRv
Q2xhc3NTdGF0ZUVxdWl2YWxlbnQoczIpKSkpCisgICAgaWYgKGRpc3BsYXkxICE9IGRpc3BsYXky
IHx8IGZsMSAhPSBmbDIgfHwgKHMxICYmIHMyICYmICFzMS0+Y29udGVudERhdGFFcXVpdmFsZW50
KHMyKSkpCiAgICAgICAgIGNoID0gRGV0YWNoOwogICAgIGVsc2UgaWYgKCFzMSB8fCAhczIpCiAg
ICAgICAgIGNoID0gSW5oZXJpdDsKSW5kZXg6IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA0
NDY3MSkKKysrIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDc3LDE1ICsxMDc3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUo
KSB7IG1fbGFzdENoaWxkU3RhdGUgPSB0cnVlOyB9CiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1
bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQotICAgIAotICAgIGJvb2wg
cHNldWRvQ2xhc3NTdGF0ZUVxdWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYWZmZWN0ZWRCeUVtcHR5ID09IHN0eWxlLT5hZmZl
Y3RlZEJ5RW1wdHkoKQotICAgICAgICAgICAgJiYgKCFtX2FmZmVjdGVkQnlFbXB0eSB8fCBtX2Vt
cHR5U3RhdGUgPT0gc3R5bGUtPmVtcHR5U3RhdGUoKSkKLSAgICAgICAgICAgICYmIG1fZmlyc3RD
aGlsZFN0YXRlID09IHN0eWxlLT5maXJzdENoaWxkU3RhdGUoKQotICAgICAgICAgICAgJiYgbV9s
YXN0Q2hpbGRTdGF0ZSA9PSBzdHlsZS0+bGFzdENoaWxkU3RhdGUoKQotICAgICAgICAgICAgJiYg
bV9jaGlsZEluZGV4ID09IHN0eWxlLT5jaGlsZEluZGV4KCk7Ci0gICAgfQogCiAgICAgLy8gSW5p
dGlhbCB2YWx1ZXMgZm9yIGFsbCB0aGUgcHJvcGVydGllcwogICAgIHN0YXRpYyBib29sIGluaXRp
YWxCb3JkZXJDb2xsYXBzZSgpIHsgcmV0dXJuIGZhbHNlOyB9Cg==
</data>
<flag name="review"
          id="15969"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31272</attachid>
            <date>2009-06-14 16:42:05 -0700</date>
            <delta_ts>2009-06-14 16:48:02 -0700</delta_ts>
            <desc>Better patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3471</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0Njcy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDYt
MTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjM2MgorCisgICAgICAgIEJhY2sgb3V0IFNpbW9uJ3MgZml4IGFuZCByZXBs
YWNlIGl0IHdpdGggYSBiZXR0ZXIgb25lIHRoYXQgZG9lc24ndCBuZWVkbGVzc2x5IGRlc3Ryb3kg
UmVuZGVyT2JqZWN0cy4KKyAgICAgICAgVGhlIHJlYWwgaXNzdWUgaGVyZSB3YXMgdGhhdCBhbHRo
b3VnaCB0aGUgbmV3IHN0eWxlcyB3ZXJlIGJlaW5nIHByb3Blcmx5IGNvbXB1dGVkLiB0aGV5IGp1
c3Qgd2VyZW4ndAorICAgICAgICBiZWluZyBzZXQgYmVjYXVzZSB0aGUgZWxlbWVudHMgaGFkbid0
IGJlZW4gbWFya2VkIGFzIG5lZWRpbmcgc3R5bGUgcmVjYWxjLgorCisgICAgICAgIFRoaXMgZml4
IG1ha2VzIHN1cmUgdGhhdCB3aGVuIHBvc2l0aW9uYWwgcnVsZXMgaGF2ZSBpbnZva2VkIGEgRm9y
Y2UgY2hhbmdlIHRoYXQgd2UganVzdCBhbHdheXMgZGlydHkKKyAgICAgICAgdGhlIGVsZW1lbnQg
aW1tZWRpYXRlbHkgYmVmb3JlIGRvaW5nIGEgc3R5bGUgcmVjYWxjIG9uIGl0LiAgVGhpcyBpcyBz
aW1pbGFyIHRvIGJvdGggdGhlIGRpcmVjdAorICAgICAgICBhZGphY2VudCBzaWJsaW5nIHByb2Js
ZW0gYXMgd2VsbCBhcyB0aGUgaG92ZXIgZGVzY2VuZGFudCBzdHlsZSBzaGFyaW5nIHByb2JsZW0u
CisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZWNhbGNTdHlsZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6ZGlmZik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0Q2hpbGRJbmRleCk6CisKIDIw
MDktMDYtMTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBkb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
ZG9tL05vZGUuY3BwCShyZXZpc2lvbiA0NDY3MSkKKysrIGRvbS9Ob2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5vZGU6OmRpZmYoY29u
c3QgUmVuZGUKICAgICBFRGlzcGxheSBkaXNwbGF5MiA9IHMyID8gczItPmRpc3BsYXkoKSA6IE5P
TkU7CiAgICAgYm9vbCBmbDIgPSBzMiAmJiBzMi0+aGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVS
KTsKICAgICAgICAgCi0gICAgaWYgKGRpc3BsYXkxICE9IGRpc3BsYXkyIHx8IGZsMSAhPSBmbDIg
fHwgKHMxICYmIHMyICYmICghczEtPmNvbnRlbnREYXRhRXF1aXZhbGVudChzMikgfHwgIXMxLT5w
c2V1ZG9DbGFzc1N0YXRlRXF1aXZhbGVudChzMikpKSkKKyAgICBpZiAoZGlzcGxheTEgIT0gZGlz
cGxheTIgfHwgZmwxICE9IGZsMiB8fCAoczEgJiYgczIgJiYgIXMxLT5jb250ZW50RGF0YUVxdWl2
YWxlbnQoczIpKSkKICAgICAgICAgY2ggPSBEZXRhY2g7CiAgICAgZWxzZSBpZiAoIXMxIHx8ICFz
MikKICAgICAgICAgY2ggPSBJbmhlcml0OwpAQCAtMzAyLDYgKzMwMiwxMiBAQCBOb2RlOjpTdHls
ZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJlbmRlCiAgICAgZWxzZSBpZiAoczEtPmluaGVyaXRl
ZE5vdEVxdWFsKHMyKSkKICAgICAgICAgY2ggPSBJbmhlcml0OwogICAgIAorICAgIC8vIEZvciBu
dGgtY2hpbGQgYW5kIG90aGVyIHBvc2l0aW9uYWwgcnVsZXMsIHRyZWF0IHN0eWxlcyBhcyBkaWZm
ZXJlbnQgaWYgdGhleSBoYXZlCisgICAgLy8gY2hhbmdlZCBwb3NpdGlvbmFsbHkgaW4gdGhlIERP
TS4gVGhpcyB3YXkgc3Vic2VxdWVudCBzaWJsaW5nIHJlc29sdXRpb25zIHdvbid0IGJlIGNvbmZ1
c2VkCisgICAgLy8gYnkgdGhlIHdyb25nIGNoaWxkIGluZGV4IGFuZCBldmFsdWF0ZSB0byBpbmNv
cnJlY3QgcmVzdWx0cy4KKyAgICBpZiAoY2ggPT0gTm9DaGFuZ2UgJiYgczEtPmNoaWxkSW5kZXgo
KSAhPSBzMi0+Y2hpbGRJbmRleCgpKQorICAgICAgICBjaCA9IE5vSW5oZXJpdDsKKwogICAgIC8v
IElmIHRoZSBwc2V1ZG9TdHlsZXMgaGF2ZSBjaGFuZ2VkLCB3ZSB3YW50IGFueSBTdHlsZUNoYW5n
ZSB0aGF0IGlzIG5vdCBOb0NoYW5nZQogICAgIC8vIGJlY2F1c2Ugc2V0U3R5bGUgd2lsbCBkbyB0
aGUgcmlnaHQgdGhpbmcgd2l0aCBhbnl0aGluZyBlbHNlLgogICAgIGlmIChjaCA9PSBOb0NoYW5n
ZSAmJiBzMS0+aGFzUHNldWRvU3R5bGUoQkVGT1JFKSkgewpJbmRleDogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHJldmlzaW9uIDQ0NjcxKQorKysgcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNzcsMTUgKzEwNzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRM
YXN0Q2hpbGRTdGF0ZSgpIHsgbV9sYXN0Q2hpbGRTdGF0ZSA9IHRydWU7IH0KICAgICB1bnNpZ25l
ZCBjaGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZEluZGV4OyB9CiAgICAgdm9pZCBz
ZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY2hpbGRJbmRleCA9IGluZGV4OyB9Ci0g
ICAgCi0gICAgYm9vbCBwc2V1ZG9DbGFzc1N0YXRlRXF1aXZhbGVudChjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hZmZlY3RlZEJ5RW1wdHkg
PT0gc3R5bGUtPmFmZmVjdGVkQnlFbXB0eSgpCi0gICAgICAgICAgICAmJiAoIW1fYWZmZWN0ZWRC
eUVtcHR5IHx8IG1fZW1wdHlTdGF0ZSA9PSBzdHlsZS0+ZW1wdHlTdGF0ZSgpKQotICAgICAgICAg
ICAgJiYgbV9maXJzdENoaWxkU3RhdGUgPT0gc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpCi0gICAg
ICAgICAgICAmJiBtX2xhc3RDaGlsZFN0YXRlID09IHN0eWxlLT5sYXN0Q2hpbGRTdGF0ZSgpCi0g
ICAgICAgICAgICAmJiBtX2NoaWxkSW5kZXggPT0gc3R5bGUtPmNoaWxkSW5kZXgoKTsKLSAgICB9
CiAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbEJvcmRlckNvbGxhcHNlKCkgeyByZXR1cm4gZmFsc2U7IH0K
</data>
<flag name="review"
          id="15970"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>