<?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>24517</bug_id>
          
          <creation_ts>2009-03-11 09:58:46 -0700</creation_ts>
          <short_desc>REGRESSION (r41552): innerHTML does an updateLayout -- unneeded and can be slow</short_desc>
          <delta_ts>2009-03-17 16:35:33 -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>Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113191</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-11 09:58:46 -0700</bug_when>
    <thetext>I caused this regression recently and Hyatt and I discussed a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113192</commentid>
    <comment_count>1</comment_count>
      <attachid>28482</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-11 09:59:25 -0700</bug_when>
    <thetext>Created attachment 28482
work in progress -- missing ChangeLog but otherwise may be ready to go</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113250</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-11 15:51:52 -0700</bug_when>
    <thetext>Just an FYI:  On one of the Chrome performance tests, I found this to be about a 3-4% regression.  That test has about 700 assignments to innerHTML over the course of 56 pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113278</commentid>
    <comment_count>3</comment_count>
      <attachid>28507</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-11 17:46:08 -0700</bug_when>
    <thetext>Created attachment 28507
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113311</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-11 20:25:27 -0700</bug_when>
    <thetext>Given their interest in this bug, I&apos;m hoping that Dave Hyatt or Darin Fisher will review the patch.

This is the fix I discussed with Hyatt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113312</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-11 20:25:55 -0700</bug_when>
    <thetext>I could make the AppendMarkupState thing a bit more elegant by making that &quot;state&quot; object into a class, with the appendMarkup function a member function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113589</commentid>
    <comment_count>6</comment_count>
      <attachid>28578</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-13 06:49:58 -0700</bug_when>
    <thetext>Created attachment 28578
improved patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114132</commentid>
    <comment_count>7</comment_count>
      <attachid>28578</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-17 16:33:44 -0700</bug_when>
    <thetext>Comment on attachment 28578
improved patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114134</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-17 16:35:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/41791</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28482</attachid>
            <date>2009-03-11 09:59:25 -0700</date>
            <delta_ts>2009-03-11 17:46:08 -0700</delta_ts>
            <desc>work in progress -- missing ChangeLog but otherwise may be ready to go</desc>
            <filename>DeleteButtonPatch.txt</filename>
            <type>text/plain</type>
            <size>6833</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDQxNTYxKQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODQsOCArMjg0LDEzIEBAIHZvaWQgRGVsZXRl
QnV0dG9uQ29udHJvbGxlcjo6ZW5hYmxlKCkKICAgICBBU1NFUlQobV9kaXNhYmxlU3RhY2sgPiAw
KTsKICAgICBpZiAobV9kaXNhYmxlU3RhY2sgPiAwKQogICAgICAgICBtX2Rpc2FibGVTdGFjay0t
OwotICAgIGlmIChlbmFibGVkKCkpCisgICAgaWYgKGVuYWJsZWQoKSkgeworICAgICAgICAvLyBE
ZXRlcm1pbmluZyBpZiB0aGUgZWxlbWVudCBpcyBkZWxldGFibGUgY3VycmVudGx5IGRlcGVuZHMg
b24gc3R5bGUKKyAgICAgICAgLy8gYmVjYXVzZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBlZGl0YWJs
ZSBkZXBlbmRzIG9uIHN0eWxlLCBzbyB3ZSBuZWVkCisgICAgICAgIC8vIHRvIHJlY2FsY3VsYXRl
IHN0eWxlIGJlZm9yZSBjYWxsaW5nIGVuY2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQuCisgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVJlbmRlcmluZygpOwogICAgICAgICBzaG93KGVu
Y2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigp
KSk7CisgICAgfQogfQogCiB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmRpc2FibGUoKQpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA0MTU2MSkKKysrIFdlYkNvcmUv
ZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDcgQEAg
RWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBkb2N1bQogewogICAgIEFTU0VSVCht
X2RvY3VtZW50KTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0gICAgRGVsZXRl
QnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+ZWRp
dG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKLSAgICBzZXRTdGFydGluZ1NlbGVjdGlv
bihhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKSwgZGVsZXRlQnV0dG9uID8gZGVsZXRlQnV0dG9uLT5jb250YWluZXJF
bGVtZW50KCkgOiAwKSk7CisgICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24oYXZvaWRJbnRlcnNlY3Rp
b25XaXRoTm9kZShtX2RvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCks
IG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCkt
PmNvbnRhaW5lckVsZW1lbnQoKSkpOwogICAgIHNldEVuZGluZ1NlbGVjdGlvbihtX3N0YXJ0aW5n
U2VsZWN0aW9uKTsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDQxNTYxKQorKysg
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMjQsNyArMjIy
NCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JQb2ludCgKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgSW50UG9pbnQgZnJhbWVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyh3aW5kb3dQb2ludCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oZnJh
bWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQpKTsKLSAgICByZXR1cm4gYXZv
aWRJbnRlcnNlY3Rpb25XaXRoTm9kZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpID8gZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCkgOiAwKTsKKyAgICByZXR1cm4gYXZvaWRJbnRlcnNlY3Rpb25XaXRo
Tm9kZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgbV9kZWxldGVCdXR0b25D
b250cm9sbGVyLT5jb250YWluZXJFbGVtZW50KCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmV2ZWFs
U2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZp
c2lvbiA0MTU2MSkKKysrIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MzgsNyAr
NDM4LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVjdG9yPFVDaAogICAgICAg
ICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERTogewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
PCcpOwogICAgICAgICAgICAgY29uc3QgRWxlbWVudCogZWwgPSBzdGF0aWNfY2FzdDxjb25zdCBF
bGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBib29sIGNvbnZlcnQgPSBjb252ZXJ0QmxvY2tz
VG9JbmxpbmVzICYgaXNCbG9jayhjb25zdF9jYXN0PE5vZGUqPihub2RlKSk7CisgICAgICAgICAg
ICBib29sIGNvbnZlcnQgPSBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzICYmIGlzQmxvY2soY29uc3Rf
Y2FzdDxOb2RlKj4obm9kZSkpOwogICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgZWwtPm5vZGVO
YW1lUHJlc2VydmluZ0Nhc2UoKSk7CiAgICAgICAgICAgICBOYW1lZEF0dHJNYXAgKmF0dHJzID0g
ZWwtPmF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJzLT5s
ZW5ndGgoKTsKQEAgLTU4NywyNSArNTg3LDMwIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RW5kTWFya3Vw
KGNvbnN0IE5vZGUgKm4KICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCi1z
dGF0aWMgdm9pZCBhcHBlbmRNYXJrdXAoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBOb2RlKiBzdGFy
dE5vZGUsIGJvb2wgb25seUluY2x1ZGVDaGlsZHJlbiwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIGNv
bnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNw
YWNlcyA9IDApCitzdGF0aWMgdm9pZCBhcHBlbmRNYXJrdXAoVmVjdG9yPFVDaGFyPiYgcmVzdWx0
LCBOb2RlKiBzdGFydE5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBOb2RlKiBza2lw
Tm9kZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNwYWNlcyA9IDApCiB7CisgICAgaWYgKG5vZGUg
PT0gc2tpcE5vZGUpCisgICAgICAgIHJldHVybjsKKwogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5n
SW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiBuYW1lc3BhY2VIYXNoOwogICAgIGlmIChuYW1lc3Bh
Y2VzKQogICAgICAgICBuYW1lc3BhY2VIYXNoID0gKm5hbWVzcGFjZXM7Ci0gICAgCi0gICAgaWYg
KCFvbmx5SW5jbHVkZUNoaWxkcmVuKSB7CisKKyAgICAvLyBzdGFydCB0YWcKKyAgICBpZiAoIWNo
aWxkcmVuT25seSkgewogICAgICAgICBpZiAobm9kZXMpCiAgICAgICAgICAgICBub2Rlcy0+YXBw
ZW5kKHN0YXJ0Tm9kZSk7Ci0gICAgICAgIAotICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChyZXN1
bHQsc3RhcnROb2RlLCAwLCBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCAmbmFt
ZXNwYWNlSGFzaCk7CisgICAgICAgIGFwcGVuZFN0YXJ0TWFya3VwKHJlc3VsdCwgc3RhcnROb2Rl
LCAwLCBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCAmbmFtZXNwYWNlSGFzaCk7
CiAgICAgfQotICAgIC8vIHByaW50IGNoaWxkcmVuCi0gICAgaWYgKCEoc3RhcnROb2RlLT5kb2N1
bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmIGRvZXNIVE1MRm9yYmlkRW5kVGFnKHN0YXJ0Tm9k
ZSkpKQorCisgICAgLy8gY2hpbGRyZW4KKyAgICBpZiAoIShzdGFydE5vZGUtPmRvY3VtZW50KCkt
PmlzSFRNTERvY3VtZW50KCkgJiYgZG9lc0hUTUxGb3JiaWRFbmRUYWcoc3RhcnROb2RlKSkpIHsK
ICAgICAgICAgZm9yIChOb2RlKiBjdXJyZW50ID0gc3RhcnROb2RlLT5maXJzdENoaWxkKCk7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgYXBw
ZW5kTWFya3VwKHJlc3VsdCwgY3VycmVudCwgZmFsc2UsIG5vZGVzLCAmbmFtZXNwYWNlSGFzaCk7
Ci0gICAgCi0gICAgLy8gUHJpbnQgbXkgZW5kaW5nIHRhZwotICAgIGlmICghb25seUluY2x1ZGVD
aGlsZHJlbikKKyAgICAgICAgICAgIGFwcGVuZE1hcmt1cChyZXN1bHQsIGN1cnJlbnQsIEluY2x1
ZGVOb2RlLCBza2lwTm9kZSwgbm9kZXMsICZuYW1lc3BhY2VIYXNoKTsKKyAgICB9CisKKyAgICAv
LyBlbmQgdGFnCisgICAgaWYgKCFjaGlsZHJlbk9ubHkpCiAgICAgICAgIGFwcGVuZEVuZE1hcmt1
cChyZXN1bHQsIHN0YXJ0Tm9kZSk7CiB9CiAKQEAgLTEwMTcsMzAgKzEwMjIsMjEgQEAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbQogICAgIHJldHVybiBmcmFnbWVudC5y
ZWxlYXNlKCk7CiB9CiAKLVN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSogbm9kZSwgRUNo
aWxkcmVuT25seSBpbmNsdWRlQ2hpbGRyZW4sIFZlY3RvcjxOb2RlKj4qIG5vZGVzKQorU3RyaW5n
IGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25s
eSwgVmVjdG9yPE5vZGUqPiogbm9kZXMpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CiAK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7Ci0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uID0gZnJhbWUg
PyBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKSA6IDA7Ci0KLSAgICAv
LyBkaXNhYmxlIHRoZSBkZWxldGUgYnV0dG9uIHNvIGl0J3MgZWxlbWVudHMgYXJlIG5vdCBzZXJp
YWxpemVkIGludG8gdGhlIG1hcmt1cAotICAgIGlmIChkZWxldGVCdXR0b24pIHsKLSAgICAgICAg
aWYgKG5vZGUtPmlzRGVzY2VuZGFudE9mKGRlbGV0ZUJ1dHRvbi0+Y29udGFpbmVyRWxlbWVudCgp
KSkKKyAgICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7Cisg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAg
ICAgZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
QnV0dG9uQ29udHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGlmIChub2Rl
LT5pc0Rlc2NlbmRhbnRPZihkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAg
ICAgIHJldHVybiAiIjsKLSAgICAgICAgZGVsZXRlQnV0dG9uLT5kaXNhYmxlKCk7CiAgICAgfQog
Ci0gICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwot
Ci0gICAgYXBwZW5kTWFya3VwKHJlc3VsdCwgY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGluY2x1
ZGVDaGlsZHJlbiwgbm9kZXMpOwotCi0gICAgaWYgKGRlbGV0ZUJ1dHRvbikKLSAgICAgICAgZGVs
ZXRlQnV0dG9uLT5lbmFibGUoKTsKKyAgICBhcHBlbmRNYXJrdXAocmVzdWx0LCBjb25zdF9jYXN0
PE5vZGUqPihub2RlKSwgY2hpbGRyZW5Pbmx5LCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50
LCBub2Rlcyk7CiAKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28507</attachid>
            <date>2009-03-11 17:46:08 -0700</date>
            <delta_ts>2009-03-13 06:49:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>DeleteButtonPatch.txt</filename>
            <type>text/plain</type>
            <size>9629</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTYwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDMtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NDUxNzogUkVHUkVTU0lPTiAocjQxNTUyKTogaW5uZXJIVE1MIGRvZXMgYW4gdXBkYXRlTGF5b3V0
IC0tIHVubmVlZGVkIGFuZCBjYW4gYmUgc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1MTcKKworICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9s
bGVyOjplbmFibGUpOiBBZGRlZCBhIGNhbGwgdG8gdXBkYXRlUmVuZGVyaW5nLCBzaW5jZQorICAg
ICAgICBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGRlbGV0ZSBidXR0b24gaW52
b2x2ZXMgc3R5bGUgYW5kIHVwZGF0ZVJlbmRlcmluZworICAgICAgICBhbHNvIHVwZGF0ZXMgc3R5
bGUgKHNob3VsZCBwcm9iYWJseSBiZSBuYW1lZCB1cGRhdGVTdHlsZSwgaW4gZmFjdCkuIE5vdCBu
ZWVkZWQgdG8gZml4CisgICAgICAgIHRoaXMgYnVnLCBidXQgd291bGQgaGF2ZSBwcmV2ZW50ZWQg
dGhlIGNyYXNoIHRoYXQgbGVkIHRvIHRoaXMgYnVnIGluIHRoZSBmaXJzdCBwbGFjZS4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdENv
bW1hbmQ6OkVkaXRDb21tYW5kKTogR2V0IHJpZCBvZiB1bm5lZWRlZCBudWxsIGNoZWNrLiBBbGwg
ZnJhbWVzIGhhdmUKKyAgICAgICAgZGVsZXRlIGJ1dHRvbiBjb250cm9sbGVycy4KKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9y
UG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZFN0YXJ0TWFya3VwKTogQ2hhbmdlZCBhICImIiB0byBhICImJiIgc28g
dGhhdCBnZW5lcmF0aW5nIG1hcmt1cAorICAgICAgICBkb2Vzbid0IGRlcGVuZCBvbiByZW5kZXJl
cnMgYXQgYWxsIHdoZW4gdGhlIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgYm9vbGVhbiBpcyBmYWxz
ZS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gb21pdCB0aGUgY2FsbCB0byB1cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgaW4gdGhlCisgICAgICAgIGNyZWF0ZU1hcmt1cCBm
dW5jdGlvbiB0aGF0J3MgY2FsbGVkIGJ5IGlubmVySFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZE1hcmt1cCk6IEFkZGVkIGEgbmV3IHNraXBOb2RlIGZlYXR1cmUgdG8gdGhpcyBmdW5jdGlv
biwgYW5kIGFsc28KKyAgICAgICAgY29tYmluZWQgdGhlIHJlc3VsdCBhbmQgbm9kZXMgYXJndW1l
bnRzIHdpdGggaXQgaW50byBhIHNpbmdsZSBzdGF0ZSBzdHJ1Y3R1cmUuCisgICAgICAgIE5vdCBz
dXBlci1iZWF1dGlmdWwsIGJ1dCBzbGlnaHRseSBtb3JlIGVmZmljaWVudC4gVGhpcyBmdW5jdGlv
biBoYXMgc29tZSBzZXJpb3VzCisgICAgICAgIHByb2JsZW1zLCBzaW5jZSBpdCBjcmVhdGVzIGEg
bmV3IEhhc2hNYXAgYXQgZXZlcnkgbGV2ZWwgYXMgaXQgcmVjdXJzZXMsIGJ1dCBmb3Igbm93Cisg
ICAgICAgIEkgZGlkIG5vdCBmaXggdGhvc2UuIEFsc28gcmVwbGFjZWQgdGhlIG9ubHlJbmNsdWRl
Q2hpbGRyZW4gYm9vbGVhbiB3aXRoIEVDaGlsZHJlbk9ubHkKKyAgICAgICAgZm9yIGNvbnNpc3Rl
bmN5IGFuZCBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKTogUmVtb3Zl
ZCB0aGUgY2FsbCB0byB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMuCisgICAg
ICAgIEluc3RlYWQgb2YgY2FsbGluZyBkaXNhYmxlL2VuYWJsZSBvbiB0aGUgZGVsZXRlIGJ1dHRv
biBjb250cm9sbGVyJ3MgY29udGFpbmVyIGVsZW1lbnQsCisgICAgICAgIHBhc3MgaXQgaW4gdG8g
YXBwZW5kTWFya3VwIGFzIGEgbm9kZSB0byBza2lwLgorCiAyMDA5LTAzLTExICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWlu
LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAkocmV2
aXNpb24gNDE2MDIpCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4NCw4ICsyODQsMTMgQEAgdm9pZCBEZWxl
dGVCdXR0b25Db250cm9sbGVyOjplbmFibGUoKQogICAgIEFTU0VSVChtX2Rpc2FibGVTdGFjayA+
IDApOwogICAgIGlmIChtX2Rpc2FibGVTdGFjayA+IDApCiAgICAgICAgIG1fZGlzYWJsZVN0YWNr
LS07Ci0gICAgaWYgKGVuYWJsZWQoKSkKKyAgICBpZiAoZW5hYmxlZCgpKSB7CisgICAgICAgIC8v
IERldGVybWluaW5nIGlmIHRoZSBlbGVtZW50IGlzIGRlbGV0YWJsZSBjdXJyZW50bHkgZGVwZW5k
cyBvbiBzdHlsZQorICAgICAgICAvLyBiZWNhdXNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGVkaXRh
YmxlIGRlcGVuZHMgb24gc3R5bGUsIHNvIHdlIG5lZWQKKyAgICAgICAgLy8gdG8gcmVjYWxjdWxh
dGUgc3R5bGUgYmVmb3JlIGNhbGxpbmcgZW5jbG9zaW5nRGVsZXRhYmxlRWxlbWVudC4KKyAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgICAgIHNob3co
ZW5jbG9zaW5nRGVsZXRhYmxlRWxlbWVudChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCkpKTsKKyAgICB9CiB9CiAKIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZGlzYWJsZSgp
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDQxNjAyKQorKysgV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNyBA
QCBFZGl0Q29tbWFuZDo6RWRpdENvbW1hbmQoRG9jdW1lbnQqIGRvY3VtCiB7CiAgICAgQVNTRVJU
KG1fZG9jdW1lbnQpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBEZWxl
dGVCdXR0b25Db250cm9sbGVyKiBkZWxldGVCdXR0b24gPSBtX2RvY3VtZW50LT5mcmFtZSgpLT5l
ZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0
aW9uKGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUobV9kb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvbigpLCBkZWxldGVCdXR0b24gPyBkZWxldGVCdXR0b24tPmNvbnRhaW5l
ckVsZW1lbnQoKSA6IDApKTsKKyAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihhdm9pZEludGVyc2Vj
dGlvbldpdGhOb2RlKG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24o
KSwgbV9kb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIo
KS0+Y29udGFpbmVyRWxlbWVudCgpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3RhcnRp
bmdTZWxlY3Rpb24pOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNDE2MDIpCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyNCw3ICsy
MjI0LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclBvaW50KAogICAgICAg
ICByZXR1cm4gMDsKICAgICBJbnRQb2ludCBmcmFtZVBvaW50ID0gZnJhbWVWaWV3LT53aW5kb3dU
b0NvbnRlbnRzKHdpbmRvd1BvaW50KTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihm
cmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVQb2ludCkpOwotICAgIHJldHVybiBh
dm9pZEludGVyc2VjdGlvbldpdGhOb2RlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpLCBkZWxldGVCdXR0b25Db250cm9sbGVyKCkgPyBkZWxldGVCdXR0b25Db250cm9sbGVyKCkt
PmNvbnRhaW5lckVsZW1lbnQoKSA6IDApOworICAgIHJldHVybiBhdm9pZEludGVyc2VjdGlvbldp
dGhOb2RlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBtX2RlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXItPmNvbnRhaW5lckVsZW1lbnQoKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZXZl
YWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJl
dmlzaW9uIDQxNjAyKQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzOCw3
ICs0MzgsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdGFydE1hcmt1cChWZWN0b3I8VUNoCiAgICAg
ICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOiB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCc8Jyk7CiAgICAgICAgICAgICBjb25zdCBFbGVtZW50KiBlbCA9IHN0YXRpY19jYXN0PGNvbnN0
IEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgIGJvb2wgY29udmVydCA9IGNvbnZlcnRCbG9j
a3NUb0lubGluZXMgJiBpc0Jsb2NrKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKTsKKyAgICAgICAg
ICAgIGJvb2wgY29udmVydCA9IGNvbnZlcnRCbG9ja3NUb0lubGluZXMgJiYgaXNCbG9jayhjb25z
dF9jYXN0PE5vZGUqPihub2RlKSk7CiAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBlbC0+bm9k
ZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpKTsKICAgICAgICAgICAgIE5hbWVkQXR0ck1hcCAqYXR0cnMg
PSBlbC0+YXR0cmlidXRlcygpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cnMt
Pmxlbmd0aCgpOwpAQCAtNTg3LDI2ICs1ODcsMzggQEAgc3RhdGljIFN0cmluZyBnZXRFbmRNYXJr
dXAoY29uc3QgTm9kZSAqbgogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGFwcGVuZE1hcmt1cChWZWN0b3I8VUNoYXI+JiByZXN1bHQsIE5vZGUqIHN0
YXJ0Tm9kZSwgYm9vbCBvbmx5SW5jbHVkZUNoaWxkcmVuLCBWZWN0b3I8Tm9kZSo+KiBub2Rlcywg
Y29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1wbCo+KiBuYW1l
c3BhY2VzID0gMCkKK3N0cnVjdCBBcHBlbmRNYXJrdXBTdGF0ZSB7CisgICAgVmVjdG9yPFVDaGFy
PiByZXN1bHQ7CisgICAgTm9kZSogc2tpcE5vZGU7CisgICAgVmVjdG9yPE5vZGUqPiogbm9kZXM7
Cit9OworCisvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBkbyB0aGlzIGluIGEgbm9uLXJlY3Vy
c2l2ZSB3YXkuCitzdGF0aWMgdm9pZCBhcHBlbmRNYXJrdXAoQXBwZW5kTWFya3VwU3RhdGUmIHN0
YXRlLCBOb2RlKiBzdGFydE5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBjb25zdCBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMg
PSAwKQogeworICAgIGlmIChzdGFydE5vZGUgPT0gc3RhdGUuc2tpcE5vZGUpCisgICAgICAgIHJl
dHVybjsKKwogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwq
PiBuYW1lc3BhY2VIYXNoOwogICAgIGlmIChuYW1lc3BhY2VzKQogICAgICAgICBuYW1lc3BhY2VI
YXNoID0gKm5hbWVzcGFjZXM7Ci0gICAgCi0gICAgaWYgKCFvbmx5SW5jbHVkZUNoaWxkcmVuKSB7
Ci0gICAgICAgIGlmIChub2RlcykKLSAgICAgICAgICAgIG5vZGVzLT5hcHBlbmQoc3RhcnROb2Rl
KTsKLSAgICAgICAgCi0gICAgICAgIGFwcGVuZFN0YXJ0TWFya3VwKHJlc3VsdCxzdGFydE5vZGUs
IDAsIERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsICZuYW1lc3BhY2VIYXNoKTsK
KworICAgIC8vIHN0YXJ0IHRhZworICAgIGlmICghY2hpbGRyZW5Pbmx5KSB7CisgICAgICAgIGlm
IChzdGF0ZS5ub2RlcykKKyAgICAgICAgICAgIHN0YXRlLm5vZGVzLT5hcHBlbmQoc3RhcnROb2Rl
KTsKKyAgICAgICAgYXBwZW5kU3RhcnRNYXJrdXAoc3RhdGUucmVzdWx0LCBzdGFydE5vZGUsIDAs
IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsICZuYW1lc3BhY2VIYXNoKTsKICAg
ICB9Ci0gICAgLy8gcHJpbnQgY2hpbGRyZW4KLSAgICBpZiAoIShzdGFydE5vZGUtPmRvY3VtZW50
KCktPmlzSFRNTERvY3VtZW50KCkgJiYgZG9lc0hUTUxGb3JiaWRFbmRUYWcoc3RhcnROb2RlKSkp
CisKKyAgICAvLyBjaGlsZHJlbgorICAgIGlmICghKHN0YXJ0Tm9kZS0+ZG9jdW1lbnQoKS0+aXNI
VE1MRG9jdW1lbnQoKSAmJiBkb2VzSFRNTEZvcmJpZEVuZFRhZyhzdGFydE5vZGUpKSkgewogICAg
ICAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBzdGFydE5vZGUtPmZpcnN0Q2hpbGQoKTsgY3VycmVu
dDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICBhcHBlbmRN
YXJrdXAocmVzdWx0LCBjdXJyZW50LCBmYWxzZSwgbm9kZXMsICZuYW1lc3BhY2VIYXNoKTsKLSAg
ICAKLSAgICAvLyBQcmludCBteSBlbmRpbmcgdGFnCi0gICAgaWYgKCFvbmx5SW5jbHVkZUNoaWxk
cmVuKQotICAgICAgICBhcHBlbmRFbmRNYXJrdXAocmVzdWx0LCBzdGFydE5vZGUpOworICAgICAg
ICAgICAgYXBwZW5kTWFya3VwKHN0YXRlLCBjdXJyZW50LCBJbmNsdWRlTm9kZSwgJm5hbWVzcGFj
ZUhhc2gpOworICAgIH0KKworICAgIC8vIGVuZCB0YWcKKyAgICBpZiAoIWNoaWxkcmVuT25seSkK
KyAgICAgICAgYXBwZW5kRW5kTWFya3VwKHN0YXRlLnJlc3VsdCwgc3RhcnROb2RlKTsKIH0KIAog
c3RhdGljIHZvaWQgY29tcGxldGVVUkxzKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCkKQEAgLTEwMTcsMzIgKzEwMjksMjUgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKLVN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgTm9kZSogbm9kZSwgRUNoaWxkcmVuT25seSBpbmNsdWRlQ2hpbGRy
ZW4sIFZlY3RvcjxOb2RlKj4qIG5vZGVzKQorU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2Rl
KiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgVmVjdG9yPE5vZGUqPiogbm9kZXMp
CiB7Ci0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0KICAgICBpZiAoIW5vZGUpCiAgICAgICAg
IHJldHVybiAiIjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7
Ci0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgRGVsZXRlQnV0dG9u
Q29udHJvbGxlciogZGVsZXRlQnV0dG9uID0gZnJhbWUgPyBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIoKSA6IDA7Ci0KLSAgICAvLyBkaXNhYmxlIHRoZSBkZWxldGUgYnV0
dG9uIHNvIGl0J3MgZWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemVkIGludG8gdGhlIG1hcmt1cAot
ICAgIGlmIChkZWxldGVCdXR0b24pIHsKLSAgICAgICAgaWYgKG5vZGUtPmlzRGVzY2VuZGFudE9m
KGRlbGV0ZUJ1dHRvbi0+Y29udGFpbmVyRWxlbWVudCgpKSkKKyAgICBIVE1MRWxlbWVudCogZGVs
ZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG5v
ZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgZGVsZXRlQnV0dG9uQ29udGFpbmVy
RWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5jb250
YWluZXJFbGVtZW50KCk7CisgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxldGVC
dXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKLSAgICAgICAg
ZGVsZXRlQnV0dG9uLT5kaXNhYmxlKCk7CiAgICAgfQogCi0gICAgZG9jdW1lbnQtPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgYXBwZW5kTWFya3VwKHJlc3Vs
dCwgY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGluY2x1ZGVDaGlsZHJlbiwgbm9kZXMpOworICAg
IEFwcGVuZE1hcmt1cFN0YXRlIHN0YXRlOworICAgIHN0YXRlLnNraXBOb2RlID0gZGVsZXRlQnV0
dG9uQ29udGFpbmVyRWxlbWVudDsKKyAgICBzdGF0ZS5ub2RlcyA9IG5vZGVzOwogCi0gICAgaWYg
KGRlbGV0ZUJ1dHRvbikKLSAgICAgICAgZGVsZXRlQnV0dG9uLT5lbmFibGUoKTsKKyAgICBhcHBl
bmRNYXJrdXAoc3RhdGUsIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLCBjaGlsZHJlbk9ubHkpOwog
Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChzdGF0ZS5yZXN1bHQpOwogfQogCiBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0
cmluZyhDb250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28578</attachid>
            <date>2009-03-13 06:49:58 -0700</date>
            <delta_ts>2009-03-17 16:33:44 -0700</delta_ts>
            <desc>improved patch</desc>
            <filename>DeleteButtonPatch.txt</filename>
            <type>text/plain</type>
            <size>9932</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTY2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDMtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NDUxNzogUkVHUkVTU0lPTiAocjQxNTUyKTogaW5uZXJIVE1MIGRvZXMgYW4gdXBkYXRlTGF5b3V0
IC0tIHVubmVlZGVkIGFuZCBjYW4gYmUgc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1MTcKKworICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9s
bGVyOjplbmFibGUpOiBBZGRlZCBhIGNhbGwgdG8gdXBkYXRlUmVuZGVyaW5nLCBzaW5jZQorICAg
ICAgICBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGRlbGV0ZSBidXR0b24gaW52
b2x2ZXMgc3R5bGUgYW5kIHVwZGF0ZVJlbmRlcmluZworICAgICAgICBhbHNvIHVwZGF0ZXMgc3R5
bGUgKHNob3VsZCBwcm9iYWJseSBiZSBuYW1lZCB1cGRhdGVTdHlsZSwgaW4gZmFjdCkuIE5vdCBu
ZWVkZWQgdG8gZml4CisgICAgICAgIHRoaXMgYnVnLCBidXQgd291bGQgaGF2ZSBwcmV2ZW50ZWQg
dGhlIGNyYXNoIHRoYXQgbGVkIHRvIHRoaXMgYnVnIGluIHRoZSBmaXJzdCBwbGFjZS4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdENv
bW1hbmQ6OkVkaXRDb21tYW5kKTogR2V0IHJpZCBvZiB1bm5lZWRlZCBudWxsIGNoZWNrLiBBbGwg
ZnJhbWVzIGhhdmUKKyAgICAgICAgZGVsZXRlIGJ1dHRvbiBjb250cm9sbGVycy4KKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9y
UG9pbnQpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZFN0YXJ0TWFya3VwKTogQ2hhbmdlZCBhICImIiB0byBhICImJiIgc28g
dGhhdCBnZW5lcmF0aW5nIG1hcmt1cAorICAgICAgICBkb2Vzbid0IGRlcGVuZCBvbiByZW5kZXJl
cnMgYXQgYWxsIHdoZW4gdGhlIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgYm9vbGVhbiBpcyBmYWxz
ZS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gb21pdCB0aGUgY2FsbCB0byB1cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgaW4gdGhlCisgICAgICAgIGNyZWF0ZU1hcmt1cCBm
dW5jdGlvbiB0aGF0J3MgY2FsbGVkIGJ5IGlubmVySFRNTC4KKyAgICAgICAgKFdlYkNvcmU6Ok1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRNYXJrdXApOiBUdXJuZWQgdGhpcyBpbnRvIGEgY2xhc3Mg
d2l0aCBhIG1lbWJlcgorICAgICAgICBmdW5jdGlvbi4gQWRkZWQgYSBmZWF0dXJlIHdoZXJlIHRo
ZSBhY2N1bXVsYXRvciB3aWxsIHNraXAgYSBub2RlLiBNb3ZlZCBhcmd1bWVudHMKKyAgICAgICAg
dGhhdCBkb24ndCBjaGFuZ2UgZHVyaW5nIHJlY3Vyc2lvbiBpbnRvIGFuIG9iamVjdC4gVGhpcyBm
dW5jdGlvbiBzdGlsbCBpcyBhIGJpdAorICAgICAgICBpbmVmZmljaWVudCwgc2luY2UgaXQgY3Jl
YXRlcyBhIG5ldyBIYXNoTWFwIGF0IGV2ZXJ5IGxldmVsIGFzIGl0IHJlY3Vyc2VzLCBidXQgZm9y
IG5vdworICAgICAgICBJIGRpZCBub3QgdGFja2xlIHRoYXQuIEFsc28gcmVwbGFjZWQgdGhlIG9u
bHlJbmNsdWRlQ2hpbGRyZW4gYm9vbGVhbiB3aXRoIEVDaGlsZHJlbk9ubHkKKyAgICAgICAgZm9y
IGNvbnNpc3RlbmN5IGFuZCBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3Vw
KTogUmVtb3ZlZCB0aGUgY2FsbCB0byB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMuCisgICAgICAgIEluc3RlYWQgb2YgY2FsbGluZyBkaXNhYmxlL2VuYWJsZSBvbiB0aGUgZGVs
ZXRlIGJ1dHRvbiBjb250cm9sbGVyJ3MgY29udGFpbmVyIGVsZW1lbnQsCisgICAgICAgIHBhc3Mg
aXQgaW4gdG8gdGhlIG1hcmt1cCBhY2N1bXVsYXRvciBhcyBhIG5vZGUgdG8gc2tpcC4KKwogMjAw
OS0wMy0xMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDQxNjY2KQorKysgV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODQs
OCArMjg0LDEzIEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZW5hYmxlKCkKICAgICBB
U1NFUlQobV9kaXNhYmxlU3RhY2sgPiAwKTsKICAgICBpZiAobV9kaXNhYmxlU3RhY2sgPiAwKQog
ICAgICAgICBtX2Rpc2FibGVTdGFjay0tOwotICAgIGlmIChlbmFibGVkKCkpCisgICAgaWYgKGVu
YWJsZWQoKSkgeworICAgICAgICAvLyBEZXRlcm1pbmluZyBpZiB0aGUgZWxlbWVudCBpcyBkZWxl
dGFibGUgY3VycmVudGx5IGRlcGVuZHMgb24gc3R5bGUKKyAgICAgICAgLy8gYmVjYXVzZSB3aGV0
aGVyIHNvbWV0aGluZyBpcyBlZGl0YWJsZSBkZXBlbmRzIG9uIHN0eWxlLCBzbyB3ZSBuZWVkCisg
ICAgICAgIC8vIHRvIHJlY2FsY3VsYXRlIHN0eWxlIGJlZm9yZSBjYWxsaW5nIGVuY2xvc2luZ0Rl
bGV0YWJsZUVsZW1lbnQuCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVJlbmRl
cmluZygpOwogICAgICAgICBzaG93KGVuY2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQobV9mcmFtZS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CisgICAgfQogfQogCiB2b2lkIERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXI6OmRpc2FibGUoKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCShyZXZp
c2lvbiA0MTY2NikKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDggKzQ3LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50
KiBkb2N1bQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKICAgICBBU1NFUlQobV9kb2N1bWVu
dC0+ZnJhbWUoKSk7Ci0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uID0g
bV9kb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsK
LSAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKG1fZG9j
dW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgZGVsZXRlQnV0dG9uID8g
ZGVsZXRlQnV0dG9uLT5jb250YWluZXJFbGVtZW50KCkgOiAwKSk7CisgICAgc2V0U3RhcnRpbmdT
ZWxlY3Rpb24oYXZvaWRJbnRlcnNlY3Rpb25XaXRoTm9kZShtX2RvY3VtZW50LT5mcmFtZSgpLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5k
ZWxldGVCdXR0b25Db250cm9sbGVyKCktPmNvbnRhaW5lckVsZW1lbnQoKSkpOwogICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihtX3N0YXJ0aW5nU2VsZWN0aW9uKTsKIH0KIApJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAJKHJldmlzaW9uIDQxNjY2KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMjQsNyArMjIyNCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6
cmFuZ2VGb3JQb2ludCgKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSW50UG9pbnQgZnJhbWVQb2lu
dCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5kb3dQb2ludCk7CiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24oZnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1l
UG9pbnQpKTsKLSAgICByZXR1cm4gYXZvaWRJbnRlcnNlY3Rpb25XaXRoTm9kZShzZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpID8gZGVs
ZXRlQnV0dG9uQ29udHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCkgOiAwKTsKKyAgICByZXR1
cm4gYXZvaWRJbnRlcnNlY3Rpb25XaXRoTm9kZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSwgbV9kZWxldGVCdXR0b25Db250cm9sbGVyLT5jb250YWluZXJFbGVtZW50KCkpOwog
fQogCiB2b2lkIEVkaXRvcjo6cmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCkK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiA0MTY2NikKKysrIFdlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRN
YXJrdXAoVmVjdG9yPFVDaAogICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERTogewogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPCcpOwogICAgICAgICAgICAgY29uc3QgRWxlbWVudCog
ZWwgPSBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBib29s
IGNvbnZlcnQgPSBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzICYgaXNCbG9jayhjb25zdF9jYXN0PE5v
ZGUqPihub2RlKSk7CisgICAgICAgICAgICBib29sIGNvbnZlcnQgPSBjb252ZXJ0QmxvY2tzVG9J
bmxpbmVzICYmIGlzQmxvY2soY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpOwogICAgICAgICAgICAg
YXBwZW5kKHJlc3VsdCwgZWwtPm5vZGVOYW1lUHJlc2VydmluZ0Nhc2UoKSk7CiAgICAgICAgICAg
ICBOYW1lZEF0dHJNYXAgKmF0dHJzID0gZWwtPmF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGF0dHJzLT5sZW5ndGgoKTsKQEAgLTU4NywyNiArNTg3LDUwIEBAIHN0
YXRpYyBTdHJpbmcgZ2V0RW5kTWFya3VwKGNvbnN0IE5vZGUgKm4KICAgICByZXR1cm4gU3RyaW5n
OjphZG9wdChyZXN1bHQpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRNYXJrdXAoVmVjdG9yPFVD
aGFyPiYgcmVzdWx0LCBOb2RlKiBzdGFydE5vZGUsIGJvb2wgb25seUluY2x1ZGVDaGlsZHJlbiwg
VmVjdG9yPE5vZGUqPiogbm9kZXMsIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0
b21pY1N0cmluZ0ltcGwqPiogbmFtZXNwYWNlcyA9IDApCitjbGFzcyBNYXJrdXBBY2N1bXVsYXRv
ciB7CitwdWJsaWM6CisgICAgTWFya3VwQWNjdW11bGF0b3IoTm9kZSogbm9kZVRvU2tpcCwgVmVj
dG9yPE5vZGUqPiogbm9kZXMpCisgICAgICAgIDogbV9ub2RlVG9Ta2lwKG5vZGVUb1NraXApCisg
ICAgICAgICwgbV9ub2Rlcyhub2RlcykKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRN
YXJrdXAoTm9kZSogc3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5LCBjb25zdCBIYXNoTWFwPEF0b21p
Y1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAwKTsKKworICAg
IFN0cmluZyB0YWtlUmVzdWx0KCkgeyByZXR1cm4gU3RyaW5nOjphZG9wdChtX3Jlc3VsdCk7IH0K
KworcHJpdmF0ZToKKyAgICBWZWN0b3I8VUNoYXI+IG1fcmVzdWx0OworICAgIE5vZGUqIG1fbm9k
ZVRvU2tpcDsKKyAgICBWZWN0b3I8Tm9kZSo+KiBtX25vZGVzOworfTsKKworLy8gRklYTUU6IFdv
dWxkIGJlIG5pY2UgdG8gZG8gdGhpcyBpbiBhIG5vbi1yZWN1cnNpdmUgd2F5Lgordm9pZCBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kTWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNoaWxkcmVuT25s
eSBjaGlsZHJlbk9ubHksIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0
cmluZ0ltcGwqPiogbmFtZXNwYWNlcykKIHsKKyAgICBpZiAoc3RhcnROb2RlID09IG1fbm9kZVRv
U2tpcCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwg
QXRvbWljU3RyaW5nSW1wbCo+IG5hbWVzcGFjZUhhc2g7CiAgICAgaWYgKG5hbWVzcGFjZXMpCiAg
ICAgICAgIG5hbWVzcGFjZUhhc2ggPSAqbmFtZXNwYWNlczsKLSAgICAKLSAgICBpZiAoIW9ubHlJ
bmNsdWRlQ2hpbGRyZW4pIHsKLSAgICAgICAgaWYgKG5vZGVzKQotICAgICAgICAgICAgbm9kZXMt
PmFwcGVuZChzdGFydE5vZGUpOwotICAgICAgICAKLSAgICAgICAgYXBwZW5kU3RhcnRNYXJrdXAo
cmVzdWx0LHN0YXJ0Tm9kZSwgMCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwg
Jm5hbWVzcGFjZUhhc2gpOworCisgICAgLy8gc3RhcnQgdGFnCisgICAgaWYgKCFjaGlsZHJlbk9u
bHkpIHsKKyAgICAgICAgaWYgKG1fbm9kZXMpCisgICAgICAgICAgICBtX25vZGVzLT5hcHBlbmQo
c3RhcnROb2RlKTsKKyAgICAgICAgYXBwZW5kU3RhcnRNYXJrdXAobV9yZXN1bHQsIHN0YXJ0Tm9k
ZSwgMCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgJm5hbWVzcGFjZUhhc2gp
OwogICAgIH0KLSAgICAvLyBwcmludCBjaGlsZHJlbgotICAgIGlmICghKHN0YXJ0Tm9kZS0+ZG9j
dW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBkb2VzSFRNTEZvcmJpZEVuZFRhZyhzdGFydE5v
ZGUpKSkKKworICAgIC8vIGNoaWxkcmVuCisgICAgaWYgKCEoc3RhcnROb2RlLT5kb2N1bWVudCgp
LT5pc0hUTUxEb2N1bWVudCgpICYmIGRvZXNIVE1MRm9yYmlkRW5kVGFnKHN0YXJ0Tm9kZSkpKSB7
CiAgICAgICAgIGZvciAoTm9kZSogY3VycmVudCA9IHN0YXJ0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBj
dXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIGFw
cGVuZE1hcmt1cChyZXN1bHQsIGN1cnJlbnQsIGZhbHNlLCBub2RlcywgJm5hbWVzcGFjZUhhc2gp
OwotICAgIAotICAgIC8vIFByaW50IG15IGVuZGluZyB0YWcKLSAgICBpZiAoIW9ubHlJbmNsdWRl
Q2hpbGRyZW4pCi0gICAgICAgIGFwcGVuZEVuZE1hcmt1cChyZXN1bHQsIHN0YXJ0Tm9kZSk7Cisg
ICAgICAgICAgICBhcHBlbmRNYXJrdXAoY3VycmVudCwgSW5jbHVkZU5vZGUsICZuYW1lc3BhY2VI
YXNoKTsKKyAgICB9CisKKyAgICAvLyBlbmQgdGFnCisgICAgaWYgKCFjaGlsZHJlbk9ubHkpCisg
ICAgICAgIGFwcGVuZEVuZE1hcmt1cChtX3Jlc3VsdCwgc3RhcnROb2RlKTsKIH0KIAogc3RhdGlj
IHZvaWQgY29tcGxldGVVUkxzKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkKQEAg
LTEwMTcsMzIgKzEwNDEsMjEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKLVN0cmluZyBjcmVhdGVN
YXJrdXAoY29uc3QgTm9kZSogbm9kZSwgRUNoaWxkcmVuT25seSBpbmNsdWRlQ2hpbGRyZW4sIFZl
Y3RvcjxOb2RlKj4qIG5vZGVzKQorU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiBub2Rl
LCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgVmVjdG9yPE5vZGUqPiogbm9kZXMpCiB7Ci0g
ICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0KICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
biAiIjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7Ci0gICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgRGVsZXRlQnV0dG9uQ29udHJv
bGxlciogZGVsZXRlQnV0dG9uID0gZnJhbWUgPyBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIoKSA6IDA7Ci0KLSAgICAvLyBkaXNhYmxlIHRoZSBkZWxldGUgYnV0dG9uIHNv
IGl0J3MgZWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemVkIGludG8gdGhlIG1hcmt1cAotICAgIGlm
IChkZWxldGVCdXR0b24pIHsKLSAgICAgICAgaWYgKG5vZGUtPmlzRGVzY2VuZGFudE9mKGRlbGV0
ZUJ1dHRvbi0+Y29udGFpbmVyRWxlbWVudCgpKSkKKyAgICBIVE1MRWxlbWVudCogZGVsZXRlQnV0
dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRv
Y3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5jb250YWluZXJF
bGVtZW50KCk7CisgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKLSAgICAgICAgZGVsZXRl
QnV0dG9uLT5kaXNhYmxlKCk7CiAgICAgfQogCi0gICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgYXBwZW5kTWFya3VwKHJlc3VsdCwgY29u
c3RfY2FzdDxOb2RlKj4obm9kZSksIGluY2x1ZGVDaGlsZHJlbiwgbm9kZXMpOwotCi0gICAgaWYg
KGRlbGV0ZUJ1dHRvbikKLSAgICAgICAgZGVsZXRlQnV0dG9uLT5lbmFibGUoKTsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgTWFya3VwQWNjdW11bGF0b3IgYWNjdW11
bGF0b3IoZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCwgbm9kZXMpOworICAgIGFjY3VtdWxh
dG9yLmFwcGVuZE1hcmt1cChjb25zdF9jYXN0PE5vZGUqPihub2RlKSwgY2hpbGRyZW5Pbmx5KTsK
KyAgICByZXR1cm4gYWNjdW11bGF0b3IudGFrZVJlc3VsdCgpOwogfQogCiBzdGF0aWMgdm9pZCBm
aWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQo=
</data>
<flag name="review"
          id="14059"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>