<?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>27768</bug_id>
          
          <creation_ts>2009-07-28 09:41:49 -0700</creation_ts>
          <short_desc>SVG feComponentTransfer needs to be implemented</short_desc>
          <delta_ts>2014-05-12 05:54:35 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>68469</blocked>
    
    <blocked>26389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>jeffschiller</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135247</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-07-28 09:41:49 -0700</bug_when>
    <thetext>SVG feComponentTransfer needs to be implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135333</commentid>
    <comment_count>1</comment_count>
      <attachid>33662</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-07-28 13:02:50 -0700</bug_when>
    <thetext>Created attachment 33662
SVG Filter feComponentTransfer

Implementation with look-up-table. This is a dramaticly speed up of feComponentTransfer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136271</commentid>
    <comment_count>2</comment_count>
      <attachid>33662</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-31 15:24:11 -0700</bug_when>
    <thetext>Comment on attachment 33662
SVG Filter feComponentTransfer

Hum... I still think function pointers or templates would allow us to share much more code.  Do we know that function pointers would be a slowdown?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137745</commentid>
    <comment_count>3</comment_count>
      <attachid>33662</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 19:24:04 -0700</bug_when>
    <thetext>Comment on attachment 33662
SVG Filter feComponentTransfer

Sad that we don&apos;t have a Color based get/set:
5         srcPixelArray-&gt;get(pixelByteOffset, r);
 196         srcPixelArray-&gt;get(pixelByteOffset + 1, g);
 197         srcPixelArray-&gt;get(pixelByteOffset + 2, b);
 198         srcPixelArray-&gt;get(pixelByteOffset + 3, a);

This should just be an array of these function pointers:
168         switch (channel) {
 169             case 0:
 170                 transferFunction = redFunction();
 171                 break;
 172             case 1:
 173                 transferFunction = greenFunction();
 174                 break;
 175             case 2:
 176                 transferFunction = blueFunction();
 177                 break;
 178             case 3:
 179                 transferFunction = alphaFunction();
 180                 break;
 181             default:
 182                 break;
 183         }

probably quicker than a switch, and much, much less code. :)

We need to find a way to share more of these for loops.

I think that we should use function pointers indexed in an array by transferFunction.type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138539</commentid>
    <comment_count>4</comment_count>
      <attachid>34427</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-08-09 11:27:27 -0700</bug_when>
    <thetext>Created attachment 34427
SVG Filter feComponentTransfer

with use of function pointer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139744</commentid>
    <comment_count>5</comment_count>
      <attachid>34427</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-08-13 00:35:28 -0700</bug_when>
    <thetext>Comment on attachment 34427
SVG Filter feComponentTransfer

clearing review tag. I&apos;ll upload a more efficient version after the patch on bug 28133 is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141447</commentid>
    <comment_count>6</comment_count>
      <attachid>35111</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-08-19 02:20:01 -0700</bug_when>
    <thetext>Created attachment 35111
SVG Filter feComponentTransfer

Make use of some recently added methods in FilterEffect and CanvasPixelArray.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141616</commentid>
    <comment_count>7</comment_count>
      <attachid>35111</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 15:34:01 -0700</bug_when>
    <thetext>Comment on attachment 35111
SVG Filter feComponentTransfer

Clearing flags on attachment: 35111

Committed r47529: &lt;http://trac.webkit.org/changeset/47529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141617</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 15:34:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33662</attachid>
            <date>2009-07-28 13:02:50 -0700</date>
            <delta_ts>2009-08-09 11:27:27 -0700</delta_ts>
            <desc>SVG Filter feComponentTransfer</desc>
            <filename>feComptran2.patch</filename>
            <type>text/plain</type>
            <size>6507</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjQ5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDctMjggIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcg
ZmVDb21wb25lbnRUcmFuc2ZlciBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZAorICAgICAgICBbaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzY4XQorCisgICAgICAgIElt
cGxlbWVudGF0aW9uIG9mIFNWRyBGaWx0ZXIgZmVDb21wb25lbnRUcmFuc2Zlci4KKworICAgICAg
ICBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBjYXNlCisgICAgICAgIFRlc3Q6IHN2Zy9XM0MtU1ZH
LTEuMS9maWx0ZXJzLWNvbXB0cmFuLTAxLWIuc3ZnCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsY3VsYXRlRnVuY3Rpb25SZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50
VHJhbnNmZXI6OmFwcGx5KToKKwogMjAwOS0wNy0yOCAgQW5hbnRhbmFyYXlhbmFuIEl5ZW5nYXIg
IDxhbmFudGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDQ2NDE2KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI0LDcgKzI1LDExIEBACiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAi
RkVDb21wb25lbnRUcmFuc2Zlci5oIgogCisjaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgog
I2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgPG1hdGguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC04NSw4ICs5MCwxMjAgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRBbHBo
YUZ1bmN0aQogICAgIG1fYWxwaGFGdW5jID0gZnVuYzsKIH0KIAotdm9pZCBGRUNvbXBvbmVudFRy
YW5zZmVyOjphcHBseShGaWx0ZXIqKQoraW5saW5lIHZvaWQgY2FsY3VsYXRlRnVuY3Rpb25SZXN1
bHRzKGRvdWJsZSogdmFsdWVzLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiB0cmFu
c2ZlckZ1bmN0aW9uKQogeworICAgIHN3aXRjaCAodHJhbnNmZXJGdW5jdGlvbi50eXBlKSB7Cisg
ICAgICAgIGNhc2UgRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFOiB7CisgICAgICAgICAg
ICAgICAgVmVjdG9yPGZsb2F0PiB0YWJsZVZhbHVlcyA9IHRyYW5zZmVyRnVuY3Rpb24udGFibGVW
YWx1ZXM7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbiA9IHRhYmxlVmFsdWVzLnNpemUoKTsK
KyAgICAgICAgICAgICAgICBpZiAobiA8IDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2
OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGMgPSBpIC8gMjU1LjA7ICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBrID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGMgKiAobiAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHYxID0g
dGFibGVWYWx1ZXNba107CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2MiA9IHRhYmxlVmFs
dWVzW3N0ZDo6bWluKChrICsgMSksIChuIC0gMSkpXTsKKyAgICAgICAgICAgICAgICAgICAgZG91
YmxlIHZhbCA9IDI1NS4wICogKHYxICsgKGMgKiAobiAtIDEpIC0gaykgKiAodjIgLSB2MSkpOwor
ICAgICAgICAgICAgICAgICAgICB2YWwgPSBzdGQ6Om1pbigyNTUuMCwgdmFsKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCB2YWwpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZF
Q09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURTogeworICAgICAgICAgICAgICAgIFZlY3Rv
cjxmbG9hdD4gdGFibGVWYWx1ZXMgPSB0cmFuc2ZlckZ1bmN0aW9uLnRhYmxlVmFsdWVzOworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG4gPSB0YWJsZVZhbHVlcy5zaXplKCk7CisgICAgICAgICAg
ICAgICAgaWYgKG4gPCAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGsgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKGkgKiBuKSAvIDI1NS4w
KTsKKyAgICAgICAgICAgICAgICAgICAgayA9IHN0ZDo6bWluKGssIG4gLSAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIHZhbCA9IDI1NS4wICogdGFibGVWYWx1ZXNba107CisgICAgICAg
ICAgICAgICAgICAgIHZhbCA9IHN0ZDo6bWluKDI1NS4wLCB2YWwpOworICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXNbaV0gPSBzdGQ6Om1heCgwLjAsIHZhbCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRkVDT01QT05F
TlRUUkFOU0ZFUl9UWVBFX0xJTkVBUjogeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsID0g
dHJhbnNmZXJGdW5jdGlvbi5zbG9wZSAqIGkgKyAyNTUuMCAqIHRyYW5zZmVyRnVuY3Rpb24uaW50
ZXJjZXB0OworICAgICAgICAgICAgICAgICAgICB2YWwgPSBzdGQ6Om1pbigyNTUuMCwgdmFsKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCB2YWwpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQTogeworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgdmFsID0gMjU1LjAgKiAodHJhbnNmZXJGdW5jdGlvbi5hbXBsaXR1ZGUgKiBwb3co
KGkgLyAyNTUuMCksIHRyYW5zZmVyRnVuY3Rpb24uZXhwb25lbnQpICsgdHJhbnNmZXJGdW5jdGlv
bi5vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICB2YWwgPSBzdGQ6Om1pbigyNTUuMCwgdmFs
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCB2YWwpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWToKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworCit2b2lkIEZFQ29tcG9uZW50
VHJhbnNmZXI6OmFwcGx5KEZpbHRlciogZmlsdGVyKQoreworICAgIG1faW4tPmFwcGx5KGZpbHRl
cik7CisgICAgaWYgKCFtX2luLT5yZXN1bHRJbWFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBnZXRFZmZlY3RDb250ZXh0KCk7Cisg
ICAgaWYgKCFmaWx0ZXJDb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBmaWx0ZXJDb250
ZXh0LT5kcmF3SW1hZ2UobV9pbi0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2UoKSwgY2FsY3VsYXRlRHJh
d2luZ1JlY3QobV9pbi0+c3ViUmVnaW9uKCkpKTsKKworICAgIGRvdWJsZSByVmFsdWVzWzI1Nl0s
IGdWYWx1ZXNbMjU2XSwgYlZhbHVlc1syNTZdLCBhVmFsdWVzWzI1Nl07CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAyNTY7IGkrKykKKyAgICAgICAgclZhbHVlc1tpXSA9IGdWYWx1ZXNbaV0gPSBi
VmFsdWVzW2ldID0gYVZhbHVlc1tpXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oaSk7CisgICAgZG91
YmxlKiB0YWJsZXNbXSA9IHsgclZhbHVlcywgZ1ZhbHVlcywgYlZhbHVlcywgYVZhbHVlcyB9Owor
CisgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IDQ7IGNoYW5uZWwrKykg
eworICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb247Cisg
ICAgICAgIHN3aXRjaCAoY2hhbm5lbCkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAg
ICAgICAgIHRyYW5zZmVyRnVuY3Rpb24gPSByZWRGdW5jdGlvbigpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIHRyYW5zZmVyRnVu
Y3Rpb24gPSBncmVlbkZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbiA9IGJsdWVGdW5j
dGlvbigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24gPSBhbHBoYUZ1bmN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhbGN1bGF0ZUZ1bmN0aW9uUmVzdWx0cyh0YWJsZXNb
Y2hhbm5lbF0sIHRyYW5zZmVyRnVuY3Rpb24pOworICAgIH0KKworICAgIEludFJlY3QgaW1hZ2VS
ZWN0KEludFBvaW50KCksIHJlc3VsdEltYWdlKCktPnNpemUoKSk7CisgICAgUGFzc1JlZlB0cjxJ
bWFnZURhdGE+IGltYWdlRGF0YShyZXN1bHRJbWFnZSgpLT5nZXRJbWFnZURhdGEoaW1hZ2VSZWN0
KSk7CisgICAgUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBzcmNQaXhlbEFycmF5KGltYWdl
RGF0YS0+ZGF0YSgpKTsKKworICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhl
bE9mZnNldCA8IHNyY1BpeGVsQXJyYXktPmxlbmd0aCgpOyBwaXhlbE9mZnNldCsrKSB7CisgICAg
ICAgIHVuc2lnbmVkIHBpeGVsQnl0ZU9mZnNldCA9IHBpeGVsT2Zmc2V0ICogNDsKKworICAgICAg
ICB1bnNpZ25lZCBjaGFyIHIgPSAwLCBnID0gMCwgYiA9IDAsIGEgPSAwOworICAgICAgICBzcmNQ
aXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0LCByKTsKKyAgICAgICAgc3JjUGl4ZWxBcnJh
eS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCArIDEsIGcpOworICAgICAgICBzcmNQaXhlbEFycmF5LT5n
ZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMiwgYik7CisgICAgICAgIHNyY1BpeGVsQXJyYXktPmdldChw
aXhlbEJ5dGVPZmZzZXQgKyAzLCBhKTsKKworICAgICAgICBpbWFnZURhdGEtPmRhdGEoKS0+c2V0
KHBpeGVsQnl0ZU9mZnNldCwgclZhbHVlc1tyXSk7CisgICAgICAgIGltYWdlRGF0YS0+ZGF0YSgp
LT5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMSwgZ1ZhbHVlc1tnXSk7CisgICAgICAgIGltYWdlRGF0
YS0+ZGF0YSgpLT5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMiwgYlZhbHVlc1tiXSk7CisgICAgICAg
IGltYWdlRGF0YS0+ZGF0YSgpLT5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMywgYVZhbHVlc1thXSk7
CisgICAgfQorCisgICAgcmVzdWx0SW1hZ2UoKS0+cHV0SW1hZ2VEYXRhKGltYWdlRGF0YS5nZXQo
KSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVy
OjpkdW1wKCkK
</data>
<flag name="review"
          id="17889"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34427</attachid>
            <date>2009-08-09 11:27:27 -0700</date>
            <delta_ts>2009-08-19 02:20:01 -0700</delta_ts>
            <desc>SVG Filter feComponentTransfer</desc>
            <filename>feComptran2.patch</filename>
            <type>text/plain</type>
            <size>7990</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDgtMDkgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcg
ZmVDb21wb25lbnRUcmFuc2ZlciBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZAorICAgICAgICBbaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzY4XQorCisgICAgICAgIElt
cGxlbWVudGF0aW9uIG9mIFNWRyBGaWx0ZXIgZmVDb21wb25lbnRUcmFuc2Zlci4KKworICAgICAg
ICBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBjYXNlCisgICAgICAgIFRlc3Q6IHN2Zy9XM0MtU1ZH
LTEuMS9maWx0ZXJzLWNvbXB0cmFuLTAxLWIuc3ZnCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aWRlbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlzY3JldGUpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OmdhbW1hKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
aDoKKwogMjAwOS0wOC0wOSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5u
QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5z
ZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb25lbnRUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDQ2OTU4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAgICAgICAg
IDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI0LDEwICsyNSwxNiBAQAogI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZFQ29t
cG9uZW50VHJhbnNmZXIuaCIKIAorI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKICNpbmNs
dWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKKyNpbmNsdWRlIDxtYXRoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dHlwZWRlZiB2b2lkICgqVHJhbnNmZXJUeXBlKShkb3VibGUqLCBjb25zdCBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJik7CisKIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNm
ZXIoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVk
RnVuYywgCiAgICAgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBj
b25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jKQogICAgIDogRmlsdGVyRWZmZWN0KCkKQEAgLTQ1
LDQ4ICs1Miw5NiBAQCBQYXNzUmVmUHRyPEZFQ29tcG9uZW50VHJhbnNmZXI+IEZFQ29tcG9uCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUNvbXBvbmVudFRyYW5zZmVyKGluLCByZWRGdW5jLCBn
cmVlbkZ1bmMsIGJsdWVGdW5jLCBhbHBoYUZ1bmMpKTsKIH0KIAotQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBGRUNvbXBvbmVudFRyYW5zZmVyOjpyZWRGdW5jdGlvbigpIGNvbnN0Cit2b2lkIGlk
ZW50aXR5KGRvdWJsZSosIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKQogewotICAg
IHJldHVybiBtX3JlZEZ1bmM7CiB9CiAKLXZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6c2V0UmVk
RnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykKK3ZvaWQgdGFi
bGUoZG91YmxlKiB2YWx1ZXMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHRyYW5z
ZmVyRnVuY3Rpb24pCiB7Ci0gICAgbV9yZWRGdW5jID0gZnVuYzsKKyAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB0YWJsZVZhbHVlcyA9IHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXM7CisgICAg
dW5zaWduZWQgbiA9IHRhYmxlVmFsdWVzLnNpemUoKTsKKyAgICBpZiAobiA8IDEpCisgICAgICAg
IHJldHVybjsgICAgICAgICAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyAr
K2kpIHsKKyAgICAgICAgZG91YmxlIGMgPSBpIC8gMjU1LjA7ICAgICAgICAgICAgICAgIAorICAg
ICAgICB1bnNpZ25lZCBrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGMgKiAobiAtIDEpKTsKKyAg
ICAgICAgZG91YmxlIHYxID0gdGFibGVWYWx1ZXNba107CisgICAgICAgIGRvdWJsZSB2MiA9IHRh
YmxlVmFsdWVzW3N0ZDo6bWluKChrICsgMSksIChuIC0gMSkpXTsKKyAgICAgICAgZG91YmxlIHZh
bCA9IDI1NS4wICogKHYxICsgKGMgKiAobiAtIDEpIC0gaykgKiAodjIgLSB2MSkpOworICAgICAg
ICB2YWwgPSBzdGQ6Om1pbigyNTUuMCwgdmFsKTsKKyAgICAgICAgdmFsdWVzW2ldID0gc3RkOjpt
YXgoMC4wLCB2YWwpOworICAgIH0KIH0KIAotQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBGRUNv
bXBvbmVudFRyYW5zZmVyOjpncmVlbkZ1bmN0aW9uKCkgY29uc3QKK3ZvaWQgZGlzY3JldGUoZG91
YmxlKiB2YWx1ZXMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHRyYW5zZmVyRnVu
Y3Rpb24pCiB7Ci0gICAgcmV0dXJuIG1fZ3JlZW5GdW5jOworICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHRhYmxlVmFsdWVzID0gdHJhbnNmZXJGdW5jdGlvbi50YWJsZVZhbHVlczsKKyAgICB1bnNp
Z25lZCBuID0gdGFibGVWYWx1ZXMuc2l6ZSgpOworICAgIGlmIChuIDwgMSkKKyAgICAgICAgcmV0
dXJuOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICB1
bnNpZ25lZCBrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChpICogbikgLyAyNTUuMCk7CisgICAg
ICAgIGsgPSBzdGQ6Om1pbihrLCBuIC0gMSk7CisgICAgICAgIGRvdWJsZSB2YWwgPSAyNTUuMCAq
IHRhYmxlVmFsdWVzW2tdOworICAgICAgICB2YWwgPSBzdGQ6Om1pbigyNTUuMCwgdmFsKTsKKyAg
ICAgICAgdmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCB2YWwpOworICAgIH0KIH0KIAotdm9pZCBG
RUNvbXBvbmVudFRyYW5zZmVyOjpzZXRHcmVlbkZ1bmN0aW9uKGNvbnN0IENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24mIGZ1bmMpCit2b2lkIGxpbmVhcihkb3VibGUqIHZhbHVlcywgY29uc3QgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgdHJhbnNmZXJGdW5jdGlvbikKIHsKLSAgICBtX2dyZWVu
RnVuYyA9IGZ1bmM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytpKSB7Cisg
ICAgICAgIGRvdWJsZSB2YWwgPSB0cmFuc2ZlckZ1bmN0aW9uLnNsb3BlICogaSArIDI1NS4wICog
dHJhbnNmZXJGdW5jdGlvbi5pbnRlcmNlcHQ7CisgICAgICAgIHZhbCA9IHN0ZDo6bWluKDI1NS4w
LCB2YWwpOworICAgICAgICB2YWx1ZXNbaV0gPSBzdGQ6Om1heCgwLjAsIHZhbCk7CisgICAgfQog
fQogCi1Db21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIEZFQ29tcG9uZW50VHJhbnNmZXI6OmJsdWVG
dW5jdGlvbigpIGNvbnN0Cit2b2lkIGdhbW1hKGRvdWJsZSogdmFsdWVzLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiB0cmFuc2ZlckZ1bmN0aW9uKQogewotICAgIHJldHVybiBtX2Js
dWVGdW5jOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAg
ICBkb3VibGUgdmFsID0gMjU1LjAgKiAodHJhbnNmZXJGdW5jdGlvbi5hbXBsaXR1ZGUgKiBwb3co
KGkgLyAyNTUuMCksIHRyYW5zZmVyRnVuY3Rpb24uZXhwb25lbnQpICsgdHJhbnNmZXJGdW5jdGlv
bi5vZmZzZXQpOworICAgICAgICB2YWwgPSBzdGQ6Om1pbigyNTUuMCwgdmFsKTsKKyAgICAgICAg
dmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCB2YWwpOworICAgIH0KIH0KIAotdm9pZCBGRUNvbXBv
bmVudFRyYW5zZmVyOjpzZXRCbHVlRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgZnVuYykKK3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKiBmaWx0
ZXIpCiB7Ci0gICAgbV9ibHVlRnVuYyA9IGZ1bmM7Ci19CisgICAgbV9pbi0+YXBwbHkoZmlsdGVy
KTsKKyAgICBpZiAoIW1faW4tPnJlc3VsdEltYWdlKCkpCisgICAgICAgIHJldHVybjsKIAotQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiBGRUNvbXBvbmVudFRyYW5zZmVyOjphbHBoYUZ1bmN0aW9u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hbHBoYUZ1bmM7Ci19CisgICAgR3JhcGhpY3NDb250
ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZ2V0RWZmZWN0Q29udGV4dCgpOworICAgIGlmICghZmlsdGVy
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnNl
dEFscGhhRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykKLXsK
LSAgICBtX2FscGhhRnVuYyA9IGZ1bmM7Ci19CisgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdl
KG1faW4tPnJlc3VsdEltYWdlKCktPmltYWdlKCksIGNhbGN1bGF0ZURyYXdpbmdSZWN0KG1faW4t
PnN1YlJlZ2lvbigpKSk7CiAKLXZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVy
KikKLXsKKyAgICBkb3VibGUgclZhbHVlc1syNTZdLCBnVmFsdWVzWzI1Nl0sIGJWYWx1ZXNbMjU2
XSwgYVZhbHVlc1syNTZdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAg
ICAgIHJWYWx1ZXNbaV0gPSBnVmFsdWVzW2ldID0gYlZhbHVlc1tpXSA9IGFWYWx1ZXNbaV0gPSBz
dGF0aWNfY2FzdDxkb3VibGU+KGkpOworICAgIGRvdWJsZSogdGFibGVzW10gPSB7IHJWYWx1ZXMs
IGdWYWx1ZXMsIGJWYWx1ZXMsIGFWYWx1ZXMgfTsKKyAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIHRyYW5zZmVyRnVuY3Rpb25bXSA9IHttX3JlZEZ1bmMsIG1fZ3JlZW5GdW5jLCBtX2JsdWVG
dW5jLCBtX2FscGhhRnVuY307CisgICAgVHJhbnNmZXJUeXBlIGNhbGxFZmZlY3RbXSA9IHtpZGVu
dGl0eSwgaWRlbnRpdHksIHRhYmxlLCBkaXNjcmV0ZSwgbGluZWFyLCBnYW1tYX07CisKKyAgICBm
b3IgKHVuc2lnbmVkIGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgNDsgY2hhbm5lbCsrKQorICAgICAg
ICAoKmNhbGxFZmZlY3RbdHJhbnNmZXJGdW5jdGlvbltjaGFubmVsXS50eXBlXSkodGFibGVzW2No
YW5uZWxdLCB0cmFuc2ZlckZ1bmN0aW9uW2NoYW5uZWxdKTsKKworICAgIEludFJlY3QgaW1hZ2VS
ZWN0KEludFBvaW50KCksIHJlc3VsdEltYWdlKCktPnNpemUoKSk7CisgICAgUGFzc1JlZlB0cjxJ
bWFnZURhdGE+IGltYWdlRGF0YShyZXN1bHRJbWFnZSgpLT5nZXRJbWFnZURhdGEoaW1hZ2VSZWN0
KSk7CisgICAgUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBzcmNQaXhlbEFycmF5KGltYWdl
RGF0YS0+ZGF0YSgpKTsKKworICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhl
bE9mZnNldCA8IHNyY1BpeGVsQXJyYXktPmxlbmd0aCgpOyBwaXhlbE9mZnNldCsrKSB7CisgICAg
ICAgIHVuc2lnbmVkIHBpeGVsQnl0ZU9mZnNldCA9IHBpeGVsT2Zmc2V0ICogNDsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IDQ7IGNoYW5uZWwrKykgeworICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gMDsKKyAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkt
PmdldChwaXhlbEJ5dGVPZmZzZXQgKyBjaGFubmVsLCBjKTsKKyAgICAgICAgICAgIGltYWdlRGF0
YS0+ZGF0YSgpLT5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgY2hhbm5lbCwgdGFibGVzW2NoYW5uZWxd
W2NdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdEltYWdlKCktPnB1dEltYWdlRGF0
YShpbWFnZURhdGEuZ2V0KCksIGltYWdlUmVjdCwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHJldmlzaW9uIDQ2
OTU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTggKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUNvbXBvbmVudFRyYW5zZmVyPiBjcmVh
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYsIAogICAg
ICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mLCBjb25zdCBDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYp
OwogCi0gICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gcmVkRnVuY3Rpb24oKSBjb25z
dDsKLSAgICAgICAgdm9pZCBzZXRSZWRGdW5jdGlvbihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uJik7Ci0KLSAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBncmVlbkZ1bmN0
aW9uKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0R3JlZW5GdW5jdGlvbihjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJik7Ci0KLSAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biBibHVlRnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRCbHVlRnVuY3Rpb24oY29u
c3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpOwotCi0gICAgICAgIENvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb24gYWxwaGFGdW5jdGlvbigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEFscGhh
RnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYpOwotCiAgICAgICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKEZpbHRlciogZmlsdGVy
KSB7IHJldHVybiBjYWxjdWxhdGVVbmlvbk9mQ2hpbGRFZmZlY3RTdWJyZWdpb25zKGZpbHRlciwg
bV9pbi5nZXQoKSk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9p
ZCBkdW1wKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35111</attachid>
            <date>2009-08-19 02:20:01 -0700</date>
            <delta_ts>2009-08-19 15:34:00 -0700</delta_ts>
            <desc>SVG Filter feComponentTransfer</desc>
            <filename>feComponentTransfer.patch</filename>
            <type>text/plain</type>
            <size>5756</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzQ5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDgtMTkgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcg
ZmVDb21wb25lbnRUcmFuc2ZlciBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZAorICAgICAgICBbaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzY4XQorCisgICAgICAgIElt
cGxlbWVudGF0aW9uIG9mIFNWRyBGaWx0ZXIgZmVDb21wb25lbnRUcmFuc2Zlci4KKworICAgICAg
ICBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBjYXNlCisgICAgICAgIFRlc3Q6IHN2Zy9XM0MtU1ZH
LTEuMS9maWx0ZXJzLWNvbXB0cmFuLTAxLWIuc3ZnCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aWRlbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlzY3JldGUpOgorICAgICAgICAoV2ViQ29yZTo6bGluZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OmdhbW1hKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KToK
KwogMjAwOS0wOC0xOCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkocmV2
aXNpb24gNDc0NTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3
ZWJraXQub3JnPgorICAgICAgICAgICAgICAgICAgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Vi
a2l0Lm9yZz4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsMTAgKzI1LDE2IEBACiAjaWYgRU5B
QkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogCisjaW5jbHVk
ZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgPG1hdGgu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0eXBlZGVmIHZvaWQgKCpUcmFuc2ZlclR5cGUp
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CisKIEZF
Q29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIoRmlsdGVyRWZmZWN0KiBpbiwg
Y29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgCiAgICAgY29uc3QgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxw
aGFGdW5jKQogICAgIDogRmlsdGVyRWZmZWN0KCkKQEAgLTg1LDggKzkyLDkxIEBAIHZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6c2V0QWxwaGFGdW5jdGkKICAgICBtX2FscGhhRnVuYyA9IGZ1bmM7
CiB9CiAKLXZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKikKK3ZvaWQgaWRl
bnRpdHkodW5zaWduZWQgY2hhciosIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKQor
eworfQorCit2b2lkIHRhYmxlKHVuc2lnbmVkIGNoYXIqIHZhbHVlcywgY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgdHJhbnNmZXJGdW5jdGlvbikKK3sKKyAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB0YWJsZVZhbHVlcyA9IHRyYW5zZmVyRnVuY3Rpb24udGFibGVWYWx1ZXM7CisgICAg
dW5zaWduZWQgbiA9IHRhYmxlVmFsdWVzLnNpemUoKTsKKyAgICBpZiAobiA8IDEpCisgICAgICAg
IHJldHVybjsgICAgICAgICAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyAr
K2kpIHsKKyAgICAgICAgZG91YmxlIGMgPSBpIC8gMjU1LjA7ICAgICAgICAgICAgICAgIAorICAg
ICAgICB1bnNpZ25lZCBrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGMgKiAobiAtIDEpKTsKKyAg
ICAgICAgZG91YmxlIHYxID0gdGFibGVWYWx1ZXNba107CisgICAgICAgIGRvdWJsZSB2MiA9IHRh
YmxlVmFsdWVzW3N0ZDo6bWluKChrICsgMSksIChuIC0gMSkpXTsKKyAgICAgICAgZG91YmxlIHZh
bCA9IDI1NS4wICogKHYxICsgKGMgKiAobiAtIDEpIC0gaykgKiAodjIgLSB2MSkpOworICAgICAg
ICB2YWwgPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKDI1NS4wLCB2YWwpKTsKKyAgICAgICAgdmFs
dWVzW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsKTsKKyAgICB9Cit9CisKK3Zv
aWQgZGlzY3JldGUodW5zaWduZWQgY2hhciogdmFsdWVzLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiB0cmFuc2ZlckZ1bmN0aW9uKQoreworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4m
IHRhYmxlVmFsdWVzID0gdHJhbnNmZXJGdW5jdGlvbi50YWJsZVZhbHVlczsKKyAgICB1bnNpZ25l
ZCBuID0gdGFibGVWYWx1ZXMuc2l6ZSgpOworICAgIGlmIChuIDwgMSkKKyAgICAgICAgcmV0dXJu
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICB1bnNp
Z25lZCBrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChpICogbikgLyAyNTUuMCk7CisgICAgICAg
IGsgPSBzdGQ6Om1pbihrLCBuIC0gMSk7CisgICAgICAgIGRvdWJsZSB2YWwgPSAyNTUgKiB0YWJs
ZVZhbHVlc1trXTsKKyAgICAgICAgdmFsID0gc3RkOjptYXgoMC4wLCBzdGQ6Om1pbigyNTUuMCwg
dmFsKSk7CisgICAgICAgIHZhbHVlc1tpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZh
bCk7CisgICAgfQorfQorCit2b2lkIGxpbmVhcih1bnNpZ25lZCBjaGFyKiB2YWx1ZXMsIGNvbnN0
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHRyYW5zZmVyRnVuY3Rpb24pCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CisgICAgICAgIGRvdWJsZSB2YWwgPSB0
cmFuc2ZlckZ1bmN0aW9uLnNsb3BlICogaSArIDI1NSAqIHRyYW5zZmVyRnVuY3Rpb24uaW50ZXJj
ZXB0OworICAgICAgICB2YWwgPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKDI1NS4wLCB2YWwpKTsK
KyAgICAgICAgdmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsKTsKKyAg
ICB9Cit9CisKK3ZvaWQgZ2FtbWEodW5zaWduZWQgY2hhciogdmFsdWVzLCBjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJiB0cmFuc2ZlckZ1bmN0aW9uKQoreworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICBkb3VibGUgdmFsID0gMjU1LjAgKiAo
dHJhbnNmZXJGdW5jdGlvbi5hbXBsaXR1ZGUgKiBwb3coKGkgLyAyNTUuMCksIHRyYW5zZmVyRnVu
Y3Rpb24uZXhwb25lbnQpICsgdHJhbnNmZXJGdW5jdGlvbi5vZmZzZXQpOworICAgICAgICB2YWwg
PSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKDI1NS4wLCB2YWwpKTsKKyAgICAgICAgdmFsdWVzW2ld
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsKTsKKyAgICB9Cit9CisKK3ZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CisgICAgbV9pbi0+YXBw
bHkoZmlsdGVyKTsKKyAgICBpZiAoIW1faW4tPnJlc3VsdEltYWdlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghZ2V0RWZmZWN0Q29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB1bnNpZ25lZCBjaGFyIHJWYWx1ZXNbMjU2XSwgZ1ZhbHVlc1syNTZdLCBiVmFsdWVzWzI1Nl0s
IGFWYWx1ZXNbMjU2XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyArK2kpCisg
ICAgICAgIHJWYWx1ZXNbaV0gPSBnVmFsdWVzW2ldID0gYlZhbHVlc1tpXSA9IGFWYWx1ZXNbaV0g
PSBpOworICAgIHVuc2lnbmVkIGNoYXIqIHRhYmxlc1tdID0geyByVmFsdWVzLCBnVmFsdWVzLCBi
VmFsdWVzLCBhVmFsdWVzIH07CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2Zl
ckZ1bmN0aW9uW10gPSB7bV9yZWRGdW5jLCBtX2dyZWVuRnVuYywgbV9ibHVlRnVuYywgbV9hbHBo
YUZ1bmN9OworICAgIFRyYW5zZmVyVHlwZSBjYWxsRWZmZWN0W10gPSB7aWRlbnRpdHksIGlkZW50
aXR5LCB0YWJsZSwgZGlzY3JldGUsIGxpbmVhciwgZ2FtbWF9OworCisgICAgZm9yICh1bnNpZ25l
ZCBjaGFubmVsID0gMDsgY2hhbm5lbCA8IDQ7IGNoYW5uZWwrKykKKyAgICAgICAgKCpjYWxsRWZm
ZWN0W3RyYW5zZmVyRnVuY3Rpb25bY2hhbm5lbF0udHlwZV0pKHRhYmxlc1tjaGFubmVsXSwgdHJh
bnNmZXJGdW5jdGlvbltjaGFubmVsXSk7CisKKyAgICBJbnRSZWN0IGRyYXdpbmdSZWN0ID0gY2Fs
Y3VsYXRlRHJhd2luZ0ludFJlY3QobV9pbi0+c3ViUmVnaW9uKCkpOworICAgIFJlZlB0cjxJbWFn
ZURhdGE+IGltYWdlRGF0YShtX2luLT5yZXN1bHRJbWFnZSgpLT5nZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoZHJhd2luZ1JlY3QpKTsKKyAgICBDYW52YXNQaXhlbEFycmF5KiBzcmNQaXhlbEFycmF5
KGltYWdlRGF0YS0+ZGF0YSgpKTsKKworICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAw
OyBwaXhlbE9mZnNldCA8IHNyY1BpeGVsQXJyYXktPmxlbmd0aCgpOyBwaXhlbE9mZnNldCArPSA0
KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCA0OyArK2No
YW5uZWwpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHNyY1BpeGVsQXJyYXktPmdl
dChwaXhlbE9mZnNldCArIGNoYW5uZWwpOworICAgICAgICAgICAgaW1hZ2VEYXRhLT5kYXRhKCkt
PnNldChwaXhlbE9mZnNldCArIGNoYW5uZWwsIHRhYmxlc1tjaGFubmVsXVtjXSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXN1bHRJbWFnZSgpLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
aW1hZ2VEYXRhLmdldCgpLCBJbnRSZWN0KEludFBvaW50KCksIHJlc3VsdEltYWdlKCktPnNpemUo
KSksIEludFBvaW50KCkpOwogfQogCiB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmR1bXAoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>