[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 16:04:46 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit bb6480618ea0e1ffb104d49cc19bea11ab02a2de
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Nov 18 16:36:09 2010 +0000

    2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
    
            Unreviewed, rolling out r72288.
            http://trac.webkit.org/changeset/72288
            https://bugs.webkit.org/show_bug.cgi?id=49730
    
            'krit attempted to do that, but revert got stuck' (Requested
            by antonm on #webkit).
    
            * platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.checksum: Removed.
            * platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png: Removed.
            * platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt: Removed.
            * platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt:
            * platform/mac/svg/dom/SVGPathSegList-appendItem-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-appendItem-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-cloning-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-cloning-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-cloning-expected.txt: Removed.
            * platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-removeItem-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-removeItem-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.txt: Removed.
            * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.checksum: Removed.
            * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.png: Removed.
            * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.txt: Removed.
            * svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg: Removed.
            * svg/dom/SVGPathSegList-appendItem-expected.txt: Removed.
            * svg/dom/SVGPathSegList-appendItem.xhtml: Removed.
            * svg/dom/SVGPathSegList-clear-and-initialize-expected.txt: Removed.
            * svg/dom/SVGPathSegList-clear-and-initialize.xhtml: Removed.
            * svg/dom/SVGPathSegList-cloning.html: Removed.
            * svg/dom/SVGPathSegList-insertItemBefore-expected.txt: Removed.
            * svg/dom/SVGPathSegList-insertItemBefore.xhtml: Removed.
            * svg/dom/SVGPathSegList-removeItem-expected.txt: Removed.
            * svg/dom/SVGPathSegList-removeItem.xhtml: Removed.
            * svg/dom/SVGPathSegList-replaceItem-expected.txt: Removed.
            * svg/dom/SVGPathSegList-replaceItem.xhtml: Removed.
            * svg/dom/SVGPathSegList-segment-modification.svg: Removed.
            * svg/dom/SVGPathSegList-xml-dom-synchronization-expected.txt: Removed.
            * svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml: Removed.
            * svg/dom/SVGPathSegList-xml-dom-synchronization2.xhtml: Removed.
            * svg/dom/fuzz-path-parser-expected.txt:
            * svg/dom/path-parser-expected.txt:
            * svg/dom/script-tests/path-parser.js:
            ():
            * svg/dom/svglist-exception-on-out-bounds-error-expected.txt:
            * svg/dom/svglist-exception-on-out-bounds-error.html:
            * svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt:
    2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
    
            Unreviewed, rolling out r72288.
            http://trac.webkit.org/changeset/72288
            https://bugs.webkit.org/show_bug.cgi?id=49730
    
            'krit attempted to do that, but revert got stuck' (Requested
            by antonm on #webkit).
    
            * Android.mk:
            * CMakeLists.txt:
            * DerivedSources.make:
            * GNUmakefile.am:
            * WebCore.gyp/WebCore.gyp:
            * WebCore.gypi:
            * WebCore.order:
            * WebCore.pro:
            * WebCore.vcproj/WebCore.vcproj:
            * WebCore.xcodeproj/project.pbxproj:
            * bindings/js/JSBindingsAllInOne.cpp:
            * bindings/js/JSDOMBinding.cpp:
            (WebCore::setDOMException):
            * bindings/js/JSDOMBinding.h:
            (WebCore::createDOMObjectWrapper):
            (WebCore::getDOMObjectWrapper):
            * bindings/js/JSSVGPathSegCustom.cpp:
            (WebCore::toJS):
            * bindings/js/JSSVGPathSegListCustom.cpp: Added.
            (WebCore::JSSVGPathSegList::clear):
            (WebCore::JSSVGPathSegList::initialize):
            (WebCore::JSSVGPathSegList::getItem):
            (WebCore::JSSVGPathSegList::insertItemBefore):
            (WebCore::JSSVGPathSegList::replaceItem):
            (WebCore::JSSVGPathSegList::removeItem):
            (WebCore::JSSVGPathSegList::appendItem):
            * bindings/scripts/CodeGenerator.pm:
            * bindings/scripts/CodeGeneratorJS.pm:
            * bindings/scripts/CodeGeneratorObjC.pm:
            * bindings/scripts/CodeGeneratorV8.pm:
            * rendering/SVGRenderTreeAsText.cpp:
            (WebCore::operator<<):
            * svg/SVGAllInOne.cpp:
            * svg/SVGAnimatedPathData.cpp: Added.
            * svg/SVGAnimatedPathData.h: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGAnimatedPathData::~SVGAnimatedPathData):
            * svg/SVGAnimatedPathData.idl: Copied from WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl.
            * svg/SVGPathElement.cpp:
            (WebCore::SVGPathElement::SVGPathElement):
            (WebCore::SVGPathElement::getPathSegAtLength):
            (WebCore::SVGPathElement::createSVGPathSegClosePath):
            (WebCore::SVGPathElement::createSVGPathSegMovetoAbs):
            (WebCore::SVGPathElement::createSVGPathSegMovetoRel):
            (WebCore::SVGPathElement::createSVGPathSegLinetoAbs):
            (WebCore::SVGPathElement::createSVGPathSegLinetoRel):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicAbs):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicRel):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticAbs):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticRel):
            (WebCore::SVGPathElement::createSVGPathSegArcAbs):
            (WebCore::SVGPathElement::createSVGPathSegArcRel):
            (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalAbs):
            (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalRel):
            (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalAbs):
            (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalRel):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs):
            (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel):
            (WebCore::SVGPathElement::parseMappedAttribute):
            (WebCore::SVGPathElement::svgAttributeChanged):
            (WebCore::SVGPathElement::synchronizeProperty):
            (WebCore::SVGPathElement::pathSegList):
            (WebCore::SVGPathElement::normalizedPathSegList):
            (WebCore::SVGPathElement::animatedPathSegList):
            (WebCore::SVGPathElement::animatedNormalizedPathSegList):
            (WebCore::SVGPathElement::toPathData):
            * svg/SVGPathElement.h:
            (WebCore::SVGPathElement::isValid):
            (WebCore::SVGPathElement::supportsMarkers):
            * svg/SVGPathElement.idl:
            * svg/SVGPathParserFactory.cpp:
            (WebCore::globalSVGPathSegListBuilder):
            (WebCore::SVGPathParserFactory::buildPathFromByteStream):
            (WebCore::SVGPathParserFactory::buildPathFromSVGPathSegList):
            (WebCore::SVGPathParserFactory::buildSVGPathSegListFromString):
            (WebCore::SVGPathParserFactory::buildSVGPathSegListFromByteStream):
            (WebCore::SVGPathParserFactory::buildStringFromSVGPathSegList):
            (WebCore::SVGPathParserFactory::buildSVGPathByteStreamFromString):
            (WebCore::SVGPathParserFactory::buildAnimatedSVGPathByteStream):
            (WebCore::SVGPathParserFactory::getSVGPathSegAtLengthFromSVGPathSegList):
            * svg/SVGPathParserFactory.h:
            * svg/SVGPathSeg.cpp: Copied from WebCore/svg/SVGPathSegLinetoHorizontalRel.idl.
            (WebCore::SVGPathSeg::associatedAttributeName):
            * svg/SVGPathSeg.h:
            (WebCore::SVGPathSegSingleCoord::setX):
            (WebCore::SVGPathSegSingleCoord::x):
            (WebCore::SVGPathSegSingleCoord::setY):
            (WebCore::SVGPathSegSingleCoord::y):
            (WebCore::SVGPathSegSingleCoord::SVGPathSegSingleCoord):
            * svg/SVGPathSeg.idl:
            * svg/SVGPathSegArc.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegArcAbs::SVGPathSegArcAbs):
            (WebCore::SVGPathSegArcRel::SVGPathSegArcRel):
            * svg/SVGPathSegArc.h:
            (WebCore::SVGPathSegArc::SVGPathSegArc):
            (WebCore::SVGPathSegArc::setX):
            (WebCore::SVGPathSegArc::x):
            (WebCore::SVGPathSegArc::setY):
            (WebCore::SVGPathSegArc::y):
            (WebCore::SVGPathSegArc::setR1):
            (WebCore::SVGPathSegArc::r1):
            (WebCore::SVGPathSegArc::setR2):
            (WebCore::SVGPathSegArc::r2):
            (WebCore::SVGPathSegArc::setAngle):
            (WebCore::SVGPathSegArc::angle):
            (WebCore::SVGPathSegArc::setLargeArcFlag):
            (WebCore::SVGPathSegArc::largeArcFlag):
            (WebCore::SVGPathSegArc::setSweepFlag):
            (WebCore::SVGPathSegArc::sweepFlag):
            (WebCore::SVGPathSegArcAbs::create):
            (WebCore::SVGPathSegArcAbs::pathSegType):
            (WebCore::SVGPathSegArcAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegArcRel::create):
            (WebCore::SVGPathSegArcRel::pathSegType):
            (WebCore::SVGPathSegArcRel::pathSegTypeAsLetter):
            * svg/SVGPathSegArcAbs.idl:
            * svg/SVGPathSegArcRel.idl:
            * svg/SVGPathSegClosePath.cpp: Added.
            * svg/SVGPathSegClosePath.h:
            (WebCore::SVGPathSegClosePath::create):
            (WebCore::SVGPathSegClosePath::SVGPathSegClosePath):
            * svg/SVGPathSegCurvetoCubic.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegCurvetoCubicAbs::SVGPathSegCurvetoCubicAbs):
            (WebCore::SVGPathSegCurvetoCubicRel::SVGPathSegCurvetoCubicRel):
            * svg/SVGPathSegCurvetoCubic.h:
            (WebCore::SVGPathSegCurvetoCubic::SVGPathSegCurvetoCubic):
            (WebCore::SVGPathSegCurvetoCubic::setX):
            (WebCore::SVGPathSegCurvetoCubic::x):
            (WebCore::SVGPathSegCurvetoCubic::setY):
            (WebCore::SVGPathSegCurvetoCubic::y):
            (WebCore::SVGPathSegCurvetoCubic::setX1):
            (WebCore::SVGPathSegCurvetoCubic::x1):
            (WebCore::SVGPathSegCurvetoCubic::setY1):
            (WebCore::SVGPathSegCurvetoCubic::y1):
            (WebCore::SVGPathSegCurvetoCubic::setX2):
            (WebCore::SVGPathSegCurvetoCubic::x2):
            (WebCore::SVGPathSegCurvetoCubic::setY2):
            (WebCore::SVGPathSegCurvetoCubic::y2):
            (WebCore::SVGPathSegCurvetoCubicAbs::create):
            (WebCore::SVGPathSegCurvetoCubicAbs::pathSegType):
            (WebCore::SVGPathSegCurvetoCubicAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegCurvetoCubicRel::create):
            (WebCore::SVGPathSegCurvetoCubicRel::pathSegType):
            (WebCore::SVGPathSegCurvetoCubicRel::pathSegTypeAsLetter):
            * svg/SVGPathSegCurvetoCubicAbs.idl:
            * svg/SVGPathSegCurvetoCubicRel.idl:
            * svg/SVGPathSegCurvetoCubicSmooth.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegCurvetoCubicSmoothAbs::SVGPathSegCurvetoCubicSmoothAbs):
            (WebCore::SVGPathSegCurvetoCubicSmoothRel::SVGPathSegCurvetoCubicSmoothRel):
            * svg/SVGPathSegCurvetoCubicSmooth.h:
            (WebCore::SVGPathSegCurvetoCubicSmooth::SVGPathSegCurvetoCubicSmooth):
            (WebCore::SVGPathSegCurvetoCubicSmooth::setX):
            (WebCore::SVGPathSegCurvetoCubicSmooth::x):
            (WebCore::SVGPathSegCurvetoCubicSmooth::setY):
            (WebCore::SVGPathSegCurvetoCubicSmooth::y):
            (WebCore::SVGPathSegCurvetoCubicSmooth::setX2):
            (WebCore::SVGPathSegCurvetoCubicSmooth::x2):
            (WebCore::SVGPathSegCurvetoCubicSmooth::setY2):
            (WebCore::SVGPathSegCurvetoCubicSmooth::y2):
            (WebCore::SVGPathSegCurvetoCubicSmoothAbs::create):
            (WebCore::SVGPathSegCurvetoCubicSmoothAbs::pathSegType):
            (WebCore::SVGPathSegCurvetoCubicSmoothAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegCurvetoCubicSmoothRel::create):
            (WebCore::SVGPathSegCurvetoCubicSmoothRel::pathSegType):
            (WebCore::SVGPathSegCurvetoCubicSmoothRel::pathSegTypeAsLetter):
            * svg/SVGPathSegCurvetoCubicSmoothAbs.idl:
            * svg/SVGPathSegCurvetoCubicSmoothRel.idl:
            * svg/SVGPathSegCurvetoQuadratic.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegCurvetoQuadraticAbs::SVGPathSegCurvetoQuadraticAbs):
            (WebCore::SVGPathSegCurvetoQuadraticRel::SVGPathSegCurvetoQuadraticRel):
            * svg/SVGPathSegCurvetoQuadratic.h:
            (WebCore::SVGPathSegCurvetoQuadratic::SVGPathSegCurvetoQuadratic):
            (WebCore::SVGPathSegCurvetoQuadratic::setX):
            (WebCore::SVGPathSegCurvetoQuadratic::x):
            (WebCore::SVGPathSegCurvetoQuadratic::setY):
            (WebCore::SVGPathSegCurvetoQuadratic::y):
            (WebCore::SVGPathSegCurvetoQuadratic::setX1):
            (WebCore::SVGPathSegCurvetoQuadratic::x1):
            (WebCore::SVGPathSegCurvetoQuadratic::setY1):
            (WebCore::SVGPathSegCurvetoQuadratic::y1):
            (WebCore::SVGPathSegCurvetoQuadraticAbs::create):
            (WebCore::SVGPathSegCurvetoQuadraticAbs::pathSegType):
            (WebCore::SVGPathSegCurvetoQuadraticAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegCurvetoQuadraticRel::create):
            (WebCore::SVGPathSegCurvetoQuadraticRel::pathSegType):
            (WebCore::SVGPathSegCurvetoQuadraticRel::pathSegTypeAsLetter):
            * svg/SVGPathSegCurvetoQuadraticAbs.idl:
            * svg/SVGPathSegCurvetoQuadraticRel.idl:
            * svg/SVGPathSegCurvetoQuadraticSmooth.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::SVGPathSegCurvetoQuadraticSmoothAbs):
            (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::SVGPathSegCurvetoQuadraticSmoothRel):
            * svg/SVGPathSegCurvetoQuadraticSmooth.h:
            (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::create):
            (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::pathSegType):
            (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::create):
            (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::pathSegType):
            (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::pathSegTypeAsLetter):
            * svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl:
            * svg/SVGPathSegCurvetoQuadraticSmoothRel.idl:
            * svg/SVGPathSegLineto.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegLinetoAbs::SVGPathSegLinetoAbs):
            (WebCore::SVGPathSegLinetoRel::SVGPathSegLinetoRel):
            * svg/SVGPathSegLineto.h:
            (WebCore::SVGPathSegLinetoAbs::create):
            (WebCore::SVGPathSegLinetoAbs::pathSegType):
            (WebCore::SVGPathSegLinetoAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegLinetoRel::create):
            (WebCore::SVGPathSegLinetoRel::pathSegType):
            (WebCore::SVGPathSegLinetoRel::pathSegTypeAsLetter):
            * svg/SVGPathSegLinetoAbs.idl:
            * svg/SVGPathSegLinetoHorizontal.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegLinetoHorizontalAbs::SVGPathSegLinetoHorizontalAbs):
            (WebCore::SVGPathSegLinetoHorizontalRel::SVGPathSegLinetoHorizontalRel):
            * svg/SVGPathSegLinetoHorizontal.h:
            (WebCore::SVGPathSegLinetoHorizontal::SVGPathSegLinetoHorizontal):
            (WebCore::SVGPathSegLinetoHorizontal::setX):
            (WebCore::SVGPathSegLinetoHorizontal::x):
            (WebCore::SVGPathSegLinetoHorizontalAbs::create):
            (WebCore::SVGPathSegLinetoHorizontalAbs::pathSegType):
            (WebCore::SVGPathSegLinetoHorizontalAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegLinetoHorizontalRel::create):
            (WebCore::SVGPathSegLinetoHorizontalRel::pathSegType):
            (WebCore::SVGPathSegLinetoHorizontalRel::pathSegTypeAsLetter):
            * svg/SVGPathSegLinetoHorizontalAbs.idl:
            * svg/SVGPathSegLinetoHorizontalRel.idl:
            * svg/SVGPathSegLinetoRel.idl:
            * svg/SVGPathSegLinetoVertical.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegLinetoVerticalAbs::SVGPathSegLinetoVerticalAbs):
            (WebCore::SVGPathSegLinetoVerticalRel::SVGPathSegLinetoVerticalRel):
            * svg/SVGPathSegLinetoVertical.h:
            (WebCore::SVGPathSegLinetoVertical::SVGPathSegLinetoVertical):
            (WebCore::SVGPathSegLinetoVertical::setY):
            (WebCore::SVGPathSegLinetoVertical::y):
            (WebCore::SVGPathSegLinetoVerticalAbs::create):
            (WebCore::SVGPathSegLinetoVerticalAbs::pathSegType):
            (WebCore::SVGPathSegLinetoVerticalAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegLinetoVerticalRel::create):
            (WebCore::SVGPathSegLinetoVerticalRel::pathSegType):
            (WebCore::SVGPathSegLinetoVerticalRel::pathSegTypeAsLetter):
            * svg/SVGPathSegLinetoVerticalAbs.idl:
            * svg/SVGPathSegLinetoVerticalRel.idl:
            * svg/SVGPathSegList.cpp:
            (WebCore::SVGPathSegList::SVGPathSegList):
            * svg/SVGPathSegList.h:
            (WebCore::SVGPathSegList::create):
            * svg/SVGPathSegList.idl:
            * svg/SVGPathSegListBuilder.cpp:
            (WebCore::SVGPathSegListBuilder::SVGPathSegListBuilder):
            (WebCore::SVGPathSegListBuilder::moveTo):
            (WebCore::SVGPathSegListBuilder::lineTo):
            (WebCore::SVGPathSegListBuilder::lineToHorizontal):
            (WebCore::SVGPathSegListBuilder::lineToVertical):
            (WebCore::SVGPathSegListBuilder::curveToCubic):
            (WebCore::SVGPathSegListBuilder::curveToCubicSmooth):
            (WebCore::SVGPathSegListBuilder::curveToQuadratic):
            (WebCore::SVGPathSegListBuilder::curveToQuadraticSmooth):
            (WebCore::SVGPathSegListBuilder::arcTo):
            (WebCore::SVGPathSegListBuilder::closePath):
            * svg/SVGPathSegListBuilder.h:
            (WebCore::SVGPathSegListBuilder::setCurrentSVGPathSegList):
            (WebCore::SVGPathSegListBuilder::cleanup):
            * svg/SVGPathSegListSource.cpp:
            (WebCore::SVGPathSegListSource::SVGPathSegListSource):
            (WebCore::SVGPathSegListSource::parseSVGSegmentType):
            (WebCore::SVGPathSegListSource::nextCommand):
            (WebCore::SVGPathSegListSource::parseMoveToSegment):
            (WebCore::SVGPathSegListSource::parseLineToSegment):
            (WebCore::SVGPathSegListSource::parseCurveToQuadraticSmoothSegment):
            * svg/SVGPathSegListSource.h:
            (WebCore::SVGPathSegListSource::create):
            * svg/SVGPathSegMoveto.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
            (WebCore::SVGPathSegMovetoAbs::SVGPathSegMovetoAbs):
            (WebCore::SVGPathSegMovetoRel::SVGPathSegMovetoRel):
            * svg/SVGPathSegMoveto.h:
            (WebCore::SVGPathSegMovetoAbs::create):
            (WebCore::SVGPathSegMovetoAbs::pathSegType):
            (WebCore::SVGPathSegMovetoAbs::pathSegTypeAsLetter):
            (WebCore::SVGPathSegMovetoRel::create):
            (WebCore::SVGPathSegMovetoRel::pathSegType):
            (WebCore::SVGPathSegMovetoRel::pathSegTypeAsLetter):
            * svg/SVGPathSegMovetoAbs.idl:
            * svg/SVGPathSegMovetoRel.idl:
            * svg/SVGPathSegWithContext.h: Removed.
            * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: Removed.
            * svg/properties/SVGPathSegListPropertyTearOff.cpp: Removed.
            * svg/properties/SVGPathSegListPropertyTearOff.h: Removed.
    2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
    
            Unreviewed, rolling out r72288.
            http://trac.webkit.org/changeset/72288
            https://bugs.webkit.org/show_bug.cgi?id=49730
    
            'krit attempted to do that, but revert got stuck' (Requested
            by antonm on #webkit).
    
            * WebView/WebRenderLayer.mm:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72294 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index e7d2941..1b1f909 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,61 @@
+2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
+
+        Unreviewed, rolling out r72288.
+        http://trac.webkit.org/changeset/72288
+        https://bugs.webkit.org/show_bug.cgi?id=49730
+
+        'krit attempted to do that, but revert got stuck' (Requested
+        by antonm on #webkit).
+
+        * platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.checksum: Removed.
+        * platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png: Removed.
+        * platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt: Removed.
+        * platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt:
+        * platform/mac/svg/dom/SVGPathSegList-appendItem-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-appendItem-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-cloning-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-cloning-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-cloning-expected.txt: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-removeItem-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-removeItem-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.txt: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.checksum: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.png: Removed.
+        * platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.txt: Removed.
+        * svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg: Removed.
+        * svg/dom/SVGPathSegList-appendItem-expected.txt: Removed.
+        * svg/dom/SVGPathSegList-appendItem.xhtml: Removed.
+        * svg/dom/SVGPathSegList-clear-and-initialize-expected.txt: Removed.
+        * svg/dom/SVGPathSegList-clear-and-initialize.xhtml: Removed.
+        * svg/dom/SVGPathSegList-cloning.html: Removed.
+        * svg/dom/SVGPathSegList-insertItemBefore-expected.txt: Removed.
+        * svg/dom/SVGPathSegList-insertItemBefore.xhtml: Removed.
+        * svg/dom/SVGPathSegList-removeItem-expected.txt: Removed.
+        * svg/dom/SVGPathSegList-removeItem.xhtml: Removed.
+        * svg/dom/SVGPathSegList-replaceItem-expected.txt: Removed.
+        * svg/dom/SVGPathSegList-replaceItem.xhtml: Removed.
+        * svg/dom/SVGPathSegList-segment-modification.svg: Removed.
+        * svg/dom/SVGPathSegList-xml-dom-synchronization-expected.txt: Removed.
+        * svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml: Removed.
+        * svg/dom/SVGPathSegList-xml-dom-synchronization2.xhtml: Removed.
+        * svg/dom/fuzz-path-parser-expected.txt:
+        * svg/dom/path-parser-expected.txt:
+        * svg/dom/script-tests/path-parser.js:
+        ():
+        * svg/dom/svglist-exception-on-out-bounds-error-expected.txt:
+        * svg/dom/svglist-exception-on-out-bounds-error.html:
+        * svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt:
+
 2010-11-18  Anton Muhin  <antonm at chromium.org>
 
         Not reviewed, removing rebaselined expectation for fast/backgrounds/size/contain-and-cover.html
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.checksum b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.checksum
deleted file mode 100644
index 856b928..0000000
--- a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-d0ddb1998d90b5296942f0e72b6b1061
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png
deleted file mode 100644
index 252ef68..0000000
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt
deleted file mode 100644
index 1feb275..0000000
--- a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-CONSOLE MESSAGE: line 267: Error: Problem parsing d=""
-layer at (0,0) size 480x360
-  RenderView at (0,0) size 480x360
-layer at (0,0) size 480x360
-  RenderSVGRoot {svg} at (0,0) size 480x360
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (119,61) size 242x239
-      RenderSVGPath {path} at (119,61) size 242x239 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#0000FF]}] [data="M 250.261 208.191 C 256 300 224 300 229.739 208.191 C 175.122 282.21 150.609 261.641 214.019 195 C 124.601 216.595 119.045 185.081 210.456 174.791 C 128.077 133.856 144.077 106.144 220.716 157.019 C 183.923 72.7092 213.993 61.7646 240 150 C 266.007 61.7646 296.077 72.7092 259.284 157.019 C 335.923 106.144 351.923 133.856 269.544 174.791 C 360.955 185.081 355.399 216.595 265.981 195 C 329.391 261.641 304.878 282.21 250.261 208.191 Z"]
-    RenderSVGContainer {g} at (10,310) size 231x37
-      RenderSVGText {text} at (10,310) size 231x37 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 231x37
-          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 231.00: "$Revision: 1.5 $"
-    RenderSVGPath {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
-    RenderSVGContainer {g} at (0,0) size 480x24
-      RenderSVGPath {rect} at (0,0) size 480x22 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [x=1.00] [y=1.00] [width=478.00] [height=20.00]
-      RenderSVGText {text} at (207,0) size 66x23 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 66x23
-          chunk 1 (middle anchor) text run 1 at (207.00,18.00) startOffset 0 endOffset 5 width 66.00: "DRAFT"
diff --git a/LayoutTests/platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt b/LayoutTests/platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt
index 249ce92..cf5dae3 100644
--- a/LayoutTests/platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt
+++ b/LayoutTests/platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt
@@ -8,4 +8,4 @@ layer at (0,0) size 800x600
           text run at (0,0) width 349: "Here is an html paragraph. And below is a svg drawing"
       RenderBlock {DIV} at (0,34) size 784x400
         RenderSVGRoot {svg} at (48,57) size 340x310
-          RenderSVGPath {path} at (48,57) size 340x310 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M 14.8649 27.5434 C 10.9361 23.4486 5.53039 20.9307 2.16163 16.2739 C 0.1954 13.4713 -0.27051 9.80295 0.40252 6.50142 C 1.50231 3.03806 4.88027 0.20151 8.61522 0.38648 C 11.4904 0.13255 14.1594 2.02987 15.543 4.44105 C 15.919 4.6728 15.9025 6.65371 16.2617 5.51432 C 17.3118 2.6047 20.1552 0.48976 23.2581 0.39544 C 27.3718 0.07861 31.5625 3.22656 31.9769 7.4138 C 32.4419 10.5606 31.9362 13.9546 29.9366 16.5144 C 27.0142 20.4478 22.515 22.6972 19.032 26.0537 C 17.9438 26.8473 16.7477 28.519 15.904 28.9961 C 15.6231 28.4687 15.2627 27.9879 14.8649 27.5434 Z"]
+          RenderSVGPath {path} at (48,57) size 340x310 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M 14.8649 27.5434 C 10.9361 23.4486 5.53039 20.9307 2.16163 16.2739 C 0.1954 13.4713 -0.27051 9.80295 0.40252 6.50142 C 1.50231 3.03806 4.88027 0.20151 8.61522 0.38648 C 11.4904 0.13255 14.1594 2.02987 15.543 4.44105 c 0.37594 0.23175 0.35941 2.21266 0.71868 1.07327 C 17.3118 2.6047 20.1552 0.48976 23.2581 0.39544 C 27.3718 0.07861 31.5625 3.22656 31.9769 7.4138 c 0.46508 3.14678 -0.04068 6.54082 -2.04024 9.1006 c -2.92245 3.93336 -7.42165 6.18284 -10.9046 9.53931 c -1.0882 0.79363 -2.28426 2.46524 -3.12799 2.94243 c -0.28088 -0.52741 -0.6413 -1.00829 -1.03915 -1.45272 Z"]
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-appendItem-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-appendItem-expected.checksum
deleted file mode 100644
index 7d62f77..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-appendItem-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-b0741ea3954a97f6350eade3873aec3b
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-appendItem-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-appendItem-expected.png
deleted file mode 100644
index 56b2476..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-appendItem-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.checksum
deleted file mode 100644
index 630e945..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-15f1f1bee1df648b74f170a609a52c91
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.png
deleted file mode 100644
index 01cec09..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-clear-and-initialize-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.checksum
deleted file mode 100644
index 5143299..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-fd7678dd8df9f12286e26baf0507cdb4
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.png
deleted file mode 100644
index ee631a2..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.txt b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.txt
deleted file mode 100644
index 9eab518..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-cloning-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {P} at (0,0) size 784x36
-        RenderText {#text} at (0,0) size 783x36
-          text run at (0,0) width 783: "Below is a JavaScript-generated svg drawing. You should see two red blobs: the left, a programmatically generated path and"
-          text run at (0,18) width 116: "the right, its clone."
-      RenderBlock {DIV} at (0,52) size 784x400
-        RenderSVGRoot {svg} at (26,188) size 374x164
-          RenderSVGPath {path} at (26,188) size 224x164 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M 10 10 L 25 15 L 110 75 L 120 90 L 42 42 Z"]
-          RenderSVGPath {path} at (176,188) size 224x164 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,0.00)}] [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M 10 10 L 25 15 L 110 75 L 120 90 L 42 42 Z"]
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.checksum
deleted file mode 100644
index 9e20823..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-338a43f97d98410a01905b61101b04c7
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.png
deleted file mode 100644
index c6212b9..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-insertItemBefore-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-removeItem-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-removeItem-expected.checksum
deleted file mode 100644
index a455a56..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-removeItem-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-da5a4614bab6f5ef7fb6d021e062ca00
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-removeItem-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-removeItem-expected.png
deleted file mode 100644
index 2bda30f..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-removeItem-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.checksum
deleted file mode 100644
index 3cfa992..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-36a012ee1a5fd8148b27e87386ee28ca
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.png
deleted file mode 100644
index 59785e6..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-replaceItem-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.checksum
deleted file mode 100644
index b579dcc..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-20619e1b0dba942a7e96c7a785e71e54
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.png
deleted file mode 100644
index 6008841..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.txt b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.txt
deleted file mode 100644
index dd7c9c7..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 300x300
-  RenderSVGRoot {svg} at (10,6) size 245x74
-    RenderSVGPath {path} at (78,38) size 84x42 [stroke={[type=SOLID] [color=#000000] [stroke width=3.00]}] [data="M 80 40 C 80 40 120 80 160 40"]
-    RenderSVGText {text} at (10,6) size 245x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 245x18
-        chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 36 width 245.00: "There should be a smooth curve below"
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.checksum
deleted file mode 100644
index 51b7c29..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-7a1153f9a5ef269a8071df8f211603f0
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.png
deleted file mode 100644
index 79e5108..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.checksum b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.checksum
deleted file mode 100644
index 7afcdd7..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-d671b3c8a0ad134b052156775db6b4a7
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.png b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.png
deleted file mode 100644
index c2d564d..0000000
Binary files a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.txt b/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.txt
deleted file mode 100644
index 1ac2a06..0000000
--- a/LayoutTests/platform/mac/svg/dom/SVGPathSegList-xml-dom-synchronization2-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 600x500
-  RenderSVGRoot {svg} at (10,6) size 493x219
-    RenderSVGPath {path} at (46,103) size 128x122 [stroke={[type=SOLID] [color=#000000] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M 50 150 L 95 107 L 145 157 L 169 221 L 100 200 Z"]
-    RenderSVGText {text} at (10,6) size 344x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 344x18
-        chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 52 width 344.00: "Right after loading, a segment is added to the path."
-    RenderSVGText {text} at (10,26) size 493x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 493x18
-        chunk 1 text run 1 at (10.00,40.00) startOffset 0 endOffset 72 width 493.00: "The path and its attribute should be updated to include the new segment."
-    RenderSVGText {text} at (10,56) size 65x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 65x18
-        chunk 1 text run 1 at (10.00,70.00) startOffset 0 endOffset 12 width 65.00: "\"d\" initial:"
-    RenderSVGText {text} at (90,56) size 212x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 212x18
-        chunk 1 text run 1 at (90.00,70.00) startOffset 0 endOffset 32 width 212.00: "M50,150 l45,-43 l24,64 l-69,-21z"
-    RenderSVGText {text} at (10,76) size 58x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 58x18
-        chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 10 width 58.00: "\"d\" after:"
-    RenderSVGText {text} at (90,76) size 283x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 283x18
-        chunk 1 text run 1 at (90.00,90.00) startOffset 0 endOffset 45 width 283.00: "M 50 150 l 45 -43 l 50 50 l 24 64 l -69 -21 Z"
diff --git a/LayoutTests/svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg b/LayoutTests/svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg
deleted file mode 100644
index 209ccf1..0000000
--- a/LayoutTests/svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg
+++ /dev/null
@@ -1,279 +0,0 @@
-<svg version="1.1" baseProfile="full" onload="CreatePath();setTimeout('AnimatePath();', 0);" id="svg-root"
-  width="100%" height="100%" viewBox="0 0 480 360"
-  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-  <!--======================================================================-->
-  <!--=  SVG 1.1 2nd Edition Test Case                                     =-->
-  <!--======================================================================-->
-  <!--=  Copyright 2009 World Wide Web Consortium, (Massachusetts          =-->
-  <!--=  Institute of Technology, European Research Consortium for         =-->
-  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
-  <!--=  All Rights Reserved.                                              =-->
-  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
-  <!--======================================================================-->
-  <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
-    template-version="1.4" reviewer="[reviewer]" author="ED" status="created"
-    version="$Revision: 1.5 $" testname="$RCSfile: paths-dom-02-f.svg,v $">
-    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/paths.html#DOMInterfaces">
-        <p>
-          This test is designed to test the PathSegList interface. At first a flower-like shape with 6 petals should be displayed.
-          The roundness and number of petals are then animated using script.
-        </p>
-    </d:testDescription>
-    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
-      <p>
-        The roundness of the petals is animated from star-like sharp petals to softly rounded petals and back again, and is repeated like that until the animation stops.
-        The number of petals should increase one by one until the flower has a total of 12 petals, and then go back one by one until it has 6 petals, then increase again one by one until the flower has 9 petals.
-        Then the animation will stop. The rendered image should look exactly like the reference image.
-      </p>
-      <p>
-        If the flower is clicked after the animation has finished, it will restart the animation and repeat it for some time.
-      </p>
-    </d:operatorScript>
-    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
-      <p>
-        [[Describe the pass criteria of the test here. The pass criteria is what
-        should be displayed when the test is run.]]
-      </p>
-    </d:passCriteria>
-  </d:SVGTestCase>
-  <title id="test-title">$RCSfile: paths-dom-02-f.svg,v $</title>
-  <defs>
-    <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
-      <font-face-src>
-        <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
-      </font-face-src>
-    </font-face>
-  </defs>
-  <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-    <script><![CDATA[
-       if (window.layoutTestController)
-        layoutTestController.waitUntilDone();
-      var offset_angle = 90;
-      var current_shift = 0;
-      var shift_inc = 1;
-      var THRESHOLD = 60;
-      var segments_added = 0;
-      var seg_diff = 1;
-      var adjust_count = 0;
-      var anim_count = 0;
-      var adjust_count_max = 8;
-      var anim_count_max = 10;
-      var stopped = false;
-
-      function DegToRad(degs)
-      {
-      return (degs * Math.PI) / 180;
-      }
-
-      function CreatePath()
-      {
-      var pathelm = document.getElementById("mypath");
-      var pathlist = pathelm.pathSegList;
-
-      var move = pathelm.createSVGPathSegMovetoAbs(240 + 30 * Math.cos(DegToRad(offset_angle - 30)),
-      180 + 30 * Math.sin(DegToRad(offset_angle - 30)));
-      pathlist.appendItem(move);
-
-      var angle = offset_angle;
-      for (var i = 0; i < 6; i++)
-      {
-      var x, y, xcp, ycp;
-
-      x = 240 + 30 * Math.cos(DegToRad(angle + 30));
-      y = 180 + 30 * Math.sin(DegToRad(angle + 30));
-
-      xcp = 240 + 120 * Math.cos(DegToRad(angle));
-      ycp = 180 + 120 * Math.sin(DegToRad(angle));
-
-      var curve = pathelm.createSVGPathSegCurvetoCubicAbs(x, y,
-      xcp, ycp,
-      xcp, ycp);
-
-      pathlist.appendItem(curve);
-
-      angle += 60;
-      }
-
-      pathlist.appendItem(pathelm.createSVGPathSegClosePath());
-      setTimeout('AdjustPath()', 0);
-      }
-
-      function AddSegment()
-      {
-      var pathelm = document.getElementById("mypath");
-      var pathlist = pathelm.pathSegList;
-
-      var segments = pathlist.numberOfItems - 2; // Not MoveTo and Close
-      var angle = offset_angle;
-      var inc_angle = 360/(segments+1);
-      var shift_v_x, shift_v_y, xcp, ycp;
-
-      var move = pathlist.getItem(0);
-      move.x = 240 + 30 * Math.cos(DegToRad(offset_angle - inc_angle/2));
-      move.y = 180 + 30 * Math.sin(DegToRad(offset_angle - inc_angle/2));
-
-      for (var i = 0; i < segments; i++)
-      {
-      var curve = pathlist.getItem(1+i);
-
-      shift_v_x = current_shift * Math.cos(DegToRad(angle + 90));
-      shift_v_y = current_shift * Math.sin(DegToRad(angle + 90));
-
-      xcp = 240 + 120 * Math.cos(DegToRad(angle));
-      ycp = 180 + 120 * Math.sin(DegToRad(angle));
-
-      curve.x = 240 + 30 * Math.cos(DegToRad(angle + inc_angle/2));
-      curve.y = 180 + 30 * Math.sin(DegToRad(angle + inc_angle/2));
-
-      curve.x1 = xcp - shift_v_x;
-      curve.y1 = ycp - shift_v_y;
-
-      curve.x2 = xcp + shift_v_x;
-      curve.y2 = ycp + shift_v_y;
-
-      angle += inc_angle;
-      }
-
-      shift_v_x = current_shift * Math.cos(DegToRad(angle + 90));
-      shift_v_y = current_shift * Math.sin(DegToRad(angle + 90));
-
-      xcp = 240 + 120 * Math.cos(DegToRad(angle));
-      ycp = 180 + 120 * Math.sin(DegToRad(angle));
-
-      var x = 240 + 30 * Math.cos(DegToRad(angle + inc_angle/2));
-      var y = 180 + 30 * Math.sin(DegToRad(angle + inc_angle/2));
-
-      var curve = pathelm.createSVGPathSegCurvetoCubicAbs(x, y,
-      xcp - shift_v_x,
-      ycp - shift_v_y,
-      xcp + shift_v_x,
-      ycp + shift_v_y);
-
-      pathlist.insertItemBefore(curve, pathlist.numberOfItems-1);
-      }
-
-      function RemoveSegment()
-      {
-      var pathelm = document.getElementById("mypath");
-      var pathlist = pathelm.pathSegList;
-
-      var segments = pathlist.numberOfItems - 2; // Not MoveTo and Close
-      var angle = offset_angle;
-      var inc_angle = 360/(segments-1);
-      var shift_v_x, shift_v_y, xcp, ycp;
-
-      var move = pathlist.getItem(0);
-      move.x = 240 + 30 * Math.cos(DegToRad(offset_angle - inc_angle/2));
-      move.y = 180 + 30 * Math.sin(DegToRad(offset_angle - inc_angle/2));
-
-      for (var i = 0; i < segments-1; i++)
-      {
-      var curve = pathlist.getItem(1+i);
-
-      shift_v_x = current_shift * Math.cos(DegToRad(angle + 90));
-      shift_v_y = current_shift * Math.sin(DegToRad(angle + 90));
-
-      xcp = 240 + 120 * Math.cos(DegToRad(angle));
-      ycp = 180 + 120 * Math.sin(DegToRad(angle));
-
-      curve.x = 240 + 30 * Math.cos(DegToRad(angle + inc_angle/2));
-      curve.y = 180 + 30 * Math.sin(DegToRad(angle + inc_angle/2));
-
-      curve.x1 = xcp - shift_v_x;
-      curve.y1 = ycp - shift_v_y;
-
-      curve.x2 = xcp + shift_v_x;
-      curve.y2 = ycp + shift_v_y;
-
-      angle += inc_angle;
-      }
-
-      pathlist.removeItem(pathlist.numberOfItems-2);
-      }
-
-      function AdjustPath()
-      {
-      if (seg_diff > 0)
-      {
-      AddSegment();
-      }
-      else
-      {
-      RemoveSegment();
-      }
-
-      segments_added += seg_diff;
-
-      if (segments_added > 5)
-      seg_diff = -1;
-      else if (segments_added <= 0)
-      seg_diff = 1;
-
-      if(adjust_count < adjust_count_max)
-      {
-      adjust_count++;
-      setTimeout('AdjustPath()', 0);
-      }
-      }
-
-      function AnimatePath()
-      {
-      var pathelm = document.getElementById("mypath");
-      var pathlist = pathelm.pathSegList;
-
-      var segments = pathlist.numberOfItems - 2; // Not MoveTo and Close
-      var angle = offset_angle;
-      var inc_angle = 360/segments;
-      for (var i = 0; i < segments; i++)
-      {
-      var curve = pathlist.getItem(1+i);
-
-      var shift_v_x, shift_v_y, xcp, ycp;
-
-      shift_v_x = current_shift * Math.cos(DegToRad(angle + 90));
-      shift_v_y = current_shift * Math.sin(DegToRad(angle + 90));
-
-      xcp = 240 + 120 * Math.cos(DegToRad(angle));
-      ycp = 180 + 120 * Math.sin(DegToRad(angle));
-
-      curve.x1 = xcp - shift_v_x;
-      curve.y1 = ycp - shift_v_y;
-
-      curve.x2 = xcp + shift_v_x;
-      curve.y2 = ycp + shift_v_y;
-
-      angle += inc_angle;
-      }
-
-      current_shift += shift_inc;
-      if (current_shift >= THRESHOLD || current_shift < 0)
-      shift_inc = -shift_inc;
-
-      if(adjust_count >= adjust_count_max)
-      {
-      anim_count++;
-      }
-
-      if(anim_count < anim_count_max)
-      setTimeout('AnimatePath();', 0);
-      else {
-        document.getElementById("mypath").addEventListener("click", function func() { adjust_count_max=32768;anim_count_max=32768; AdjustPath(); AnimatePath(); }, false);
-        if (window.layoutTestController)
-          layoutTestController.notifyDone();
-      }
-      }
-
-    ]]></script>
-    <path d="" id="mypath" stroke="black" fill="blue"/>
-  </g>
-  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
-    <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.5 $</text>
-  </g>
-  <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
-  <!-- comment out this watermark once the test is approved -->
-  <g id="draft-watermark">
-    <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
-    <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
-      text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
-  </g>
-</svg>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-appendItem-expected.txt b/LayoutTests/svg/dom/SVGPathSegList-appendItem-expected.txt
deleted file mode 100644
index 833738d..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-appendItem-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-This is a test of the SVGPathSegList::appendItem() API.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-Check initial 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 3
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 100
-
-Check initial 'pathSegList' value of path2
-PASS path2.pathSegList.numberOfItems is 5
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 0
-PASS path2.pathSegList.getItem(0).y is 0
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path2.pathSegList.getItem(1).x is 50
-PASS path2.pathSegList.getItem(1).y is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(2).x is 100
-PASS path2.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(3).x is 100
-PASS path2.pathSegList.getItem(4).toString() is "[object SVGPathSegLinetoVerticalRel]"
-PASS path2.pathSegList.getItem(4).y is 100
-
-Negate x value of fourth segment in path2
-PASS path2.pathSegList.getItem(3).x = -path2.pathSegList.getItem(3).x is -100
-
-Swap segment four and five of path2 - now should look like a rectangle
-PASS path2.pathSegList.appendItem(path2.pathSegList.getItem(3)).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-
-Append second item from path2 to path1 list
-PASS path1.pathSegList.appendItem(path2.pathSegList.getItem(1)).toString() is "[object SVGPathSegLinetoAbs]"
-
-Change last item of path1 list, that came from path2 list, assure it's updating path1
-PASS path1.pathSegList.getItem(3).x -= 50 is 0
-
-Check final 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 4
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 100
-PASS path1.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(3).x is 0
-PASS path1.pathSegList.getItem(3).y is 100
-
-Check final 'pathSegList' value of path2
-PASS path2.pathSegList.numberOfItems is 4
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 0
-PASS path2.pathSegList.getItem(0).y is 0
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(1).x is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoVerticalRel]"
-PASS path2.pathSegList.getItem(2).y is 100
-PASS path2.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(3).x is -100
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-appendItem.xhtml b/LayoutTests/svg/dom/SVGPathSegList-appendItem.xhtml
deleted file mode 100644
index 8e487a9..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-appendItem.xhtml
+++ /dev/null
@@ -1,104 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
-<script>window.enablePixelTesting = true;</script>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="250" height="250">
-    <g transform="translate(10, 10)">
-        <path id="path1" d="M 0 0 L 100 0 L 100 100" fill="green"/>
-        <path transform="translate(110, 0)" id="path2" d="M 0 0 L 50 100 h 100 h 100 v 100" fill="green"/>
-    </g>
-</svg>
-
-<p id="description"></p>
-<div id="console"></div>
-<script type="text/javascript">
-<![CDATA[
-    description("This is a test of the SVGPathSegList::appendItem() API.");
-
-    var svg = document.getElementById("svg");
-    var path1 = document.getElementById("path1");
-    var path2 = document.getElementById("path2");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "3");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
- 
-    debug("");
-    debug("Check initial 'pathSegList' value of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "5");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "0");
-    shouldBe("path2.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path2.pathSegList.getItem(1).x", "50");
-    shouldBe("path2.pathSegList.getItem(1).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(2).x", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(3).x", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(4).toString()", "[object SVGPathSegLinetoVerticalRel]");
-    shouldBe("path2.pathSegList.getItem(4).y", "100");
-
-    debug("");
-    debug("Negate x value of fourth segment in path2");
-    shouldBe("path2.pathSegList.getItem(3).x = -path2.pathSegList.getItem(3).x", "-100");
-
-    debug("")
-    debug("Swap segment four and five of path2 - now should look like a rectangle");
-    shouldBeEqualToString("path2.pathSegList.appendItem(path2.pathSegList.getItem(3)).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-
-    debug("");
-    debug("Append second item from path2 to path1 list");
-    shouldBeEqualToString("path1.pathSegList.appendItem(path2.pathSegList.getItem(1)).toString()", "[object SVGPathSegLinetoAbs]");
-
-    debug("");
-    debug("Change last item of path1 list, that came from path2 list, assure it's updating path1");
-    shouldBe("path1.pathSegList.getItem(3).x -= 50", "0");
-
-    debug("");
-    debug("Check final 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(3).x", "0");
-    shouldBe("path1.pathSegList.getItem(3).y", "100");
-
-    debug("");
-    debug("Check final 'pathSegList' value of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "0");
-    shouldBe("path2.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(1).x", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoVerticalRel]");
-    shouldBe("path2.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(3).x", "-100");
-
-    successfullyParsed = true;
-]]>
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-clear-and-initialize-expected.txt b/LayoutTests/svg/dom/SVGPathSegList-clear-and-initialize-expected.txt
deleted file mode 100644
index aff0a50..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-clear-and-initialize-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-This is a test of the SVGPathSegList::appendItem() API.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-Check initial 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 3
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 100
-PASS path1.pathSegList.getItem(0).y is 100
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 100
-
-Check initial 'pathSegList' value of path2
-PASS path2.pathSegList.numberOfItems is 3
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 50
-PASS path2.pathSegList.getItem(0).y is 50
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path2.pathSegList.getItem(1).x is 0
-PASS path2.pathSegList.getItem(1).y is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(2).x is 0
-PASS path2.pathSegList.getItem(2).y is 0
-
-Cache first item of path1 in local variable 'item0'
-PASS item0.x is 100
-PASS item0.y is 100
-
-Clear path1 segment list
-PASS path1.pathSegList.clear() is undefined.
-
-Verify that item0 is still alive, and can be modified
-PASS item0.x is 100
-PASS item0.y is 100
-PASS item0.x += 50 is 150
-PASS item0.y += 50 is 150
-
-Check intermediate list state of path1
-PASS path1.pathSegList.numberOfItems is 0
-PASS path1.pathSegList.getItem(0) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-
-Check intermediate list state of path2
-PASS path2.pathSegList.numberOfItems is 3
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 50
-PASS path2.pathSegList.getItem(0).y is 50
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path2.pathSegList.getItem(1).x is 0
-PASS path2.pathSegList.getItem(1).y is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(2).x is 0
-PASS path2.pathSegList.getItem(2).y is 0
-
-Initialize path1 list with first item of path2
-PASS path1.pathSegList.initialize(path2.pathSegList.getItem(0)).toString() is "[object SVGPathSegMovetoAbs]"
-
-Check intermediate list state of path1
-PASS path1.pathSegList.numberOfItems is 1
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 50
-PASS path1.pathSegList.getItem(0).y is 50
-
-Check intermediate list state of path2
-PASS path2.pathSegList.numberOfItems is 2
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 0
-PASS path2.pathSegList.getItem(0).y is 100
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(1).x is 0
-PASS path2.pathSegList.getItem(1).y is 0
-
-Initialize path2 list with item0
-PASS path2.pathSegList.initialize(item0).toString() is "[object SVGPathSegMovetoAbs]"
-
-Check final list state of path1
-PASS path1.pathSegList.numberOfItems is 1
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 50
-PASS path1.pathSegList.getItem(0).y is 50
-
-Check final list state of path2
-PASS path2.pathSegList.numberOfItems is 1
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 150
-PASS path2.pathSegList.getItem(0).y is 150
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-clear-and-initialize.xhtml b/LayoutTests/svg/dom/SVGPathSegList-clear-and-initialize.xhtml
deleted file mode 100644
index 956d88f..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-clear-and-initialize.xhtml
+++ /dev/null
@@ -1,130 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
-<script>window.enablePixelTesting = true;</script>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="250" height="250">
-    <g transform="translate(10, 10)">
-        <path id="path1" d="M 100 100 L 100 0 L 100 100" fill="green"/>
-        <path transform="translate(110, 0)" id="path2" d="M 50 50 L 0 100 M 0 0" fill="green"/>
-    </g>
-</svg>
-
-<p id="description"></p>
-<div id="console"></div>
-<script type="text/javascript">
-<![CDATA[
-    description("This is a test of the SVGPathSegList::appendItem() API.");
-
-    var svg = document.getElementById("svg");
-    var path1 = document.getElementById("path1");
-    var path2 = document.getElementById("path2");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "3");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "100");
-    shouldBe("path1.pathSegList.getItem(0).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
- 
-    debug("");
-    debug("Check initial 'pathSegList' value of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "3");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "50");
-    shouldBe("path2.pathSegList.getItem(0).y", "50");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path2.pathSegList.getItem(1).x", "0");
-    shouldBe("path2.pathSegList.getItem(1).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(2).x", "0");
-    shouldBe("path2.pathSegList.getItem(2).y", "0");
-
-    debug("");
-    debug("Cache first item of path1 in local variable 'item0'");
-    var item0 = path1.pathSegList.getItem(0);
-    shouldBe("item0.x", "100");
-    shouldBe("item0.y", "100");
-
-    debug("");
-    debug("Clear path1 segment list");
-    shouldBeUndefined("path1.pathSegList.clear()");
-
-    debug("");
-    debug("Verify that item0 is still alive, and can be modified");
-    shouldBe("item0.x", "100");
-    shouldBe("item0.y", "100");
-    shouldBe("item0.x += 50", "150");
-    shouldBe("item0.y += 50", "150");
-
-    debug("");
-    debug("Check intermediate list state of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "0");
-    shouldThrow("path1.pathSegList.getItem(0)");
-
-    debug("");
-    debug("Check intermediate list state of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "3");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "50");
-    shouldBe("path2.pathSegList.getItem(0).y", "50");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path2.pathSegList.getItem(1).x", "0");
-    shouldBe("path2.pathSegList.getItem(1).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(2).x", "0");
-    shouldBe("path2.pathSegList.getItem(2).y", "0");
-
-    debug("");
-    debug("Initialize path1 list with first item of path2");
-    shouldBeEqualToString("path1.pathSegList.initialize(path2.pathSegList.getItem(0)).toString()", "[object SVGPathSegMovetoAbs]");
-
-    debug("");
-    debug("Check intermediate list state of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "1");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "50");
-    shouldBe("path1.pathSegList.getItem(0).y", "50");
-
-    debug("");
-    debug("Check intermediate list state of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "2");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "0");
-    shouldBe("path2.pathSegList.getItem(0).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(1).x", "0");
-    shouldBe("path2.pathSegList.getItem(1).y", "0");
-
-    debug("");
-    debug("Initialize path2 list with item0");
-    shouldBeEqualToString("path2.pathSegList.initialize(item0).toString()", "[object SVGPathSegMovetoAbs]");
-
-    debug("");
-    debug("Check final list state of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "1");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "50");
-    shouldBe("path1.pathSegList.getItem(0).y", "50");
-
-    debug("");
-    debug("Check final list state of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "1");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "150");
-    shouldBe("path2.pathSegList.getItem(0).y", "150");
-
-    successfullyParsed = true;
-]]>
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-cloning.html b/LayoutTests/svg/dom/SVGPathSegList-cloning.html
deleted file mode 100644
index 07041ea..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-cloning.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<html>
-<head>
-    <style type="text/css">
-      .cls1 {
-        stroke: black;
-        fill: rgb(0,128,255);
-        stroke-width: 1;
-      }
-    </style>
-
-<script type="text/javascript">
-function setup() {
- var SHOW_BUG = true;
- 
- var SVGNS = 'http://www.w3.org/2000/svg';
- var svg = document.createElementNS(SVGNS, "svg");
- svg.width.baseVal.valueAsString = "400px";
- svg.height.baseVal.valueAsString = "400px";
- svg.viewBox.baseVal.x = 0;
- svg.viewBox.baseVal.y = 0;
- svg.viewBox.baseVal.width = 200;
- svg.viewBox.baseVal.height = 90;
- 
- var path1 = document.createElementNS(SVGNS, "path");
- if (SHOW_BUG) {
-     path1.pathSegList.appendItem(path1.createSVGPathSegMovetoAbs(10, 10));
-     path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(25, 15));
-     path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(110, 75));
-     path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(120, 90));
-     path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(42, 42));
-     path1.pathSegList.appendItem(path1.createSVGPathSegClosePath());
- } else {
-     path1.setAttributeNS(null, 'd', "M 10 10 L 25 15 L 110 75 L 120 90 L 42 42 Z");
- }
- 
- path1.style.setProperty("stroke", "black", "");
- path1.style.setProperty("fill", "red", "");
- var path2 = path1.cloneNode(true);
- path2.setAttributeNS(null, 'transform', "translate(75, 0)");
- 
- var drawing = document.getElementById("drawing");
- svg.appendChild(path1);
- svg.appendChild(path2);
- drawing.appendChild(svg);
-}
-</script>
-</head>
-<body onload="setup()">
-<p>Below is a JavaScript-generated svg drawing. You should see two red blobs: the left, a programmatically generated path and the right, its clone.</p>
-<div id="drawing"></div>
-</body>
-</html>
-
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-insertItemBefore-expected.txt b/LayoutTests/svg/dom/SVGPathSegList-insertItemBefore-expected.txt
deleted file mode 100644
index ca43b3d..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-insertItemBefore-expected.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-This is a test of the SVGPathSegList::insertItemBefore() API.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-Check initial 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 4
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 0
-PASS path1.pathSegList.getItem(2).y is 100
-PASS path1.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(3).x is 100
-PASS path1.pathSegList.getItem(3).y is 100
-
-Insert fourth item at position three using insertItemBefore()
-PASS path1.pathSegList.insertItemBefore(path1.pathSegList.getItem(3), 2).toString() is "[object SVGPathSegLinetoAbs]"
-
-Check final 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 4
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 100
-PASS path1.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(3).x is 0
-PASS path1.pathSegList.getItem(3).y is 100
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-insertItemBefore.xhtml b/LayoutTests/svg/dom/SVGPathSegList-insertItemBefore.xhtml
deleted file mode 100644
index 8e536aa..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-insertItemBefore.xhtml
+++ /dev/null
@@ -1,64 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
-<script>window.enablePixelTesting = true;</script>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="250" height="250">
-    <g transform="translate(10, 10)">
-        <path id="path1" d="M 0 0 L 100 0 L 0 100 L 100 100" fill="green"/>
-    </g>
-</svg>
-
-<p id="description"></p>
-<div id="console"></div>
-<script type="text/javascript">
-<![CDATA[
-    description("This is a test of the SVGPathSegList::insertItemBefore() API.");
-
-    var svg = document.getElementById("svg");
-    var path1 = document.getElementById("path1");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "0");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(3).x", "100");
-    shouldBe("path1.pathSegList.getItem(3).y", "100");
-
-    debug("");
-    debug("Insert fourth item at position three using insertItemBefore()");
-    shouldBeEqualToString("path1.pathSegList.insertItemBefore(path1.pathSegList.getItem(3), 2).toString()", "[object SVGPathSegLinetoAbs]");
-
-    debug("");
-    debug("Check final 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(3).x", "0");
-    shouldBe("path1.pathSegList.getItem(3).y", "100");
-
-    successfullyParsed = true;
-]]>
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-removeItem-expected.txt b/LayoutTests/svg/dom/SVGPathSegList-removeItem-expected.txt
deleted file mode 100644
index 1a8aed2..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-removeItem-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-This is a test of the SVGPathSegList::removeItem() API.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-Check initial 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 5
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 100
-PASS path1.pathSegList.getItem(3).toString() is "[object SVGPathSegClosePath]"
-PASS path1.pathSegList.getItem(4).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(4).x is 0
-PASS path1.pathSegList.getItem(4).y is 100
-
-Check initial 'pathSegList' value of path2
-PASS path2.pathSegList.numberOfItems is 5
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 0
-PASS path2.pathSegList.getItem(0).y is 0
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(1).x is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegClosePath]"
-PASS path2.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoVerticalRel]"
-PASS path2.pathSegList.getItem(3).y is 100
-PASS path2.pathSegList.getItem(4).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(4).x is -100
-
-Remove fourth item of path1
-PASS path1.pathSegList.removeItem(3).toString() is "[object SVGPathSegClosePath]"
-
-Remove third item of path2
-PASS path2.pathSegList.removeItem(2).toString() is "[object SVGPathSegClosePath]"
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-removeItem.xhtml b/LayoutTests/svg/dom/SVGPathSegList-removeItem.xhtml
deleted file mode 100644
index 95b33ea..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-removeItem.xhtml
+++ /dev/null
@@ -1,69 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
-<script>window.enablePixelTesting = true;</script>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="250" height="250">
-    <g transform="translate(10, 10)">
-        <path id="path1" d="M 0 0 L 100 0 L 100 100 z L 0 100" fill="green"/>
-        <path transform="translate(110, 0)" id="path2" d="M 0 0 h 100 z v 100 h -100" fill="green"/>
-    </g>
-</svg>
-
-<p id="description"></p>
-<div id="console"></div>
-<script type="text/javascript">
-<![CDATA[
-    description("This is a test of the SVGPathSegList::removeItem() API.");
-
-    var svg = document.getElementById("svg");
-    var path1 = document.getElementById("path1");
-    var path2 = document.getElementById("path2");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "5");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegClosePath]");
-    shouldBeEqualToString("path1.pathSegList.getItem(4).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(4).x", "0");
-    shouldBe("path1.pathSegList.getItem(4).y", "100");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "5");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "0");
-    shouldBe("path2.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(1).x", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegClosePath]");
-    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoVerticalRel]");
-    shouldBe("path2.pathSegList.getItem(3).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(4).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(4).x", "-100");
-
-    debug("");
-    debug("Remove fourth item of path1");
-    shouldBeEqualToString("path1.pathSegList.removeItem(3).toString()", "[object SVGPathSegClosePath]");
-
-    debug("");
-    debug("Remove third item of path2");
-    shouldBeEqualToString("path2.pathSegList.removeItem(2).toString()", "[object SVGPathSegClosePath]");
-
-    successfullyParsed = true;
-]]>
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-replaceItem-expected.txt b/LayoutTests/svg/dom/SVGPathSegList-replaceItem-expected.txt
deleted file mode 100644
index 6b982aa..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-replaceItem-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-This is a test of the SVGPathSegList::replaceItem() API.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-Check initial 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 6
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 100
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 0
-PASS path1.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(3).x is 100
-PASS path1.pathSegList.getItem(3).y is 100
-PASS path1.pathSegList.getItem(4).toString() is "[object SVGPathSegLinetoVerticalRel]"
-PASS path1.pathSegList.getItem(4).y is 100
-PASS path1.pathSegList.getItem(5).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(5).x is 0
-PASS path1.pathSegList.getItem(5).y is 100
-
-Check initial 'pathSegList' value of path2
-PASS path2.pathSegList.numberOfItems is 4
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 0
-PASS path2.pathSegList.getItem(0).y is 0
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(1).x is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path2.pathSegList.getItem(2).x is 200
-PASS path2.pathSegList.getItem(2).y is 100
-PASS path2.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(3).x is -100
-
-Replace second item with third item of path1
-PASS path1.pathSegList.replaceItem(path1.pathSegList.getItem(2), 1).toString() is "[object SVGPathSegLinetoAbs]"
-
-Replace third item of path2 with fourth item of path1
-PASS path2.pathSegList.replaceItem(path1.pathSegList.getItem(3), 2).toString() is "[object SVGPathSegLinetoVerticalRel]"
-
-Check final 'pathSegList' value of path1
-PASS path1.pathSegList.numberOfItems is 4
-PASS path1.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path1.pathSegList.getItem(0).x is 0
-PASS path1.pathSegList.getItem(0).y is 0
-PASS path1.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(1).x is 100
-PASS path1.pathSegList.getItem(1).y is 0
-PASS path1.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(2).x is 100
-PASS path1.pathSegList.getItem(2).y is 100
-PASS path1.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoAbs]"
-PASS path1.pathSegList.getItem(3).x is 0
-PASS path1.pathSegList.getItem(3).y is 100
-
-Check final 'pathSegList' value of path2
-PASS path2.pathSegList.numberOfItems is 4
-PASS path2.pathSegList.getItem(0).toString() is "[object SVGPathSegMovetoAbs]"
-PASS path2.pathSegList.getItem(0).x is 0
-PASS path2.pathSegList.getItem(0).y is 0
-PASS path2.pathSegList.getItem(1).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(1).x is 100
-PASS path2.pathSegList.getItem(2).toString() is "[object SVGPathSegLinetoVerticalRel]"
-PASS path2.pathSegList.getItem(2).y is 100
-PASS path2.pathSegList.getItem(3).toString() is "[object SVGPathSegLinetoHorizontalRel]"
-PASS path2.pathSegList.getItem(3).x is -100
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-replaceItem.xhtml b/LayoutTests/svg/dom/SVGPathSegList-replaceItem.xhtml
deleted file mode 100644
index 848ebc9..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-replaceItem.xhtml
+++ /dev/null
@@ -1,102 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
-<script>window.enablePixelTesting = true;</script>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="250" height="250">
-    <g transform="translate(10, 10)">
-        <path id="path1" d="M 0 0 L 100 100 L 100 0 L 100 100 v 100 L 0 100" fill="green"/>
-        <path transform="translate(110, 0)" id="path2" d="M 0 0 h 100 L 200 100 h -100" fill="green"/>
-    </g>
-</svg>
-
-<p id="description"></p>
-<div id="console"></div>
-<script type="text/javascript">
-<![CDATA[
-    description("This is a test of the SVGPathSegList::replaceItem() API.");
-
-    var svg = document.getElementById("svg");
-    var path1 = document.getElementById("path1");
-    var path2 = document.getElementById("path2");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "6");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(3).x", "100");
-    shouldBe("path1.pathSegList.getItem(3).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(4).toString()", "[object SVGPathSegLinetoVerticalRel]");
-    shouldBe("path1.pathSegList.getItem(4).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(5).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(5).x", "0");
-    shouldBe("path1.pathSegList.getItem(5).y", "100");
-
-    debug("");
-    debug("Check initial 'pathSegList' value of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "0");
-    shouldBe("path2.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(1).x", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path2.pathSegList.getItem(2).x", "200");
-    shouldBe("path2.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(3).x", "-100");
-
-    debug("");
-    debug("Replace second item with third item of path1");
-    shouldBeEqualToString("path1.pathSegList.replaceItem(path1.pathSegList.getItem(2), 1).toString()", "[object SVGPathSegLinetoAbs]");
-
-    debug("");
-    debug("Replace third item of path2 with fourth item of path1");
-    shouldBeEqualToString("path2.pathSegList.replaceItem(path1.pathSegList.getItem(3), 2).toString()", "[object SVGPathSegLinetoVerticalRel]");
-
-    debug("");
-    debug("Check final 'pathSegList' value of path1");
-    shouldBe("path1.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path1.pathSegList.getItem(0).x", "0");
-    shouldBe("path1.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(1).x", "100");
-    shouldBe("path1.pathSegList.getItem(1).y", "0");
-    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(2).x", "100");
-    shouldBe("path1.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoAbs]");
-    shouldBe("path1.pathSegList.getItem(3).x", "0");
-    shouldBe("path1.pathSegList.getItem(3).y", "100");
-
-    debug("");
-    debug("Check final 'pathSegList' value of path2");
-    shouldBe("path2.pathSegList.numberOfItems", "4");
-    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
-    shouldBe("path2.pathSegList.getItem(0).x", "0");
-    shouldBe("path2.pathSegList.getItem(0).y", "0");
-    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(1).x", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoVerticalRel]");
-    shouldBe("path2.pathSegList.getItem(2).y", "100");
-    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoHorizontalRel]");
-    shouldBe("path2.pathSegList.getItem(3).x", "-100");
-
-    successfullyParsed = true;
-]]>
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-segment-modification.svg b/LayoutTests/svg/dom/SVGPathSegList-segment-modification.svg
deleted file mode 100644
index 19fc427..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-segment-modification.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink='http://www.w3.org/1999/xlink' width="300px" height="300px" viewBox="0 0 300 300" onload="test()">
-    <script type="text/ecmascript"><![CDATA[
-        if (window.layoutTestController)
-            layoutTestController.notifyDone();
-
-        function test() {
-            var smile = document.getElementById('smile');
-            var segList = smile.pathSegList;
-            var moveSeg = segList.getItem(0);    // This represents the M 80 40 segment (Move to)
-            var smoothCurveSeg = segList.getItem(1); // This represents the S 20 80 80 40 segment (Smooth Curveto)
-            setTimeout(function() {
-                moveSeg.x = 50;
-                moveSeg.y = 50;
-        
-                if (window.layoutTestController)
-                    layoutTestController.notifyDone();
-            }, 0);
-        }
-    ]]></script>
-    <path id="smile" d="M 80 40 S 120 80 160 40" stroke="black" stroke-width="3" fill="none"/>
-    <text x="10" y="20">There should be a smooth curve below</text>
-</svg>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.txt b/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.txt
deleted file mode 100644
index 9c672da..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-This is a test how SVGLengthList reacts to XML DOM modifications.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS path.pathSegList.numberOfItems is 3
-PASS path.getAttribute('d').formatDAttribute() is "M 200 0 L 100 0 L 100 100"
-PASS path.getAttribute('d').formatDAttribute() is "M 200 0 L 100 0 L 100 100 L 0 100"
-PASS path.getAttribute('d').formatDAttribute() is "M 100 0 L 100 0 L 100 100 L 0 100"
-PASS path.getAttribute('d').formatDAttribute() is "M 0 0 L 100 0 L 100 100 L 0 100"
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml b/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml
deleted file mode 100644
index 2c25f83..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml
+++ /dev/null
@@ -1,49 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
-<script>window.enablePixelTesting = true;</script>
-<script src="../../fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="200" height="200">
-    <path id="path" fill="green" transform="translate(10 10)" d="M 200 0 L 100 0 L 100 100"/>
-</svg>
-
-<p id="description"></p>
-<div id="console"></div>
-<script type="text/javascript">
-<![CDATA[
-    description("This is a test how SVGLengthList reacts to XML DOM modifications.");
-
-    // Extend String prototype, to offer a function, that formas the d attribute in the same way across browsers
-    String.prototype.formatDAttribute = function() {
-        return this.replace(/,/g, " ")          // Remove Firefox commas
-                   .replace(/([A-Z])/g, " $1 ") // "M 100 0L 50 0" -> " M 100 0 L 50 0"
-                   .replace(/^\s/, "")          // " M 100 0" -> "M 100 0" 
-                   .replace(/\s\s/g, " ");      // If there was already whitespace between coordinates & commands, fix it up again.      
-    }
-
-    var path = document.getElementById("path");
-    shouldBe("path.pathSegList.numberOfItems", "3");
-
-    // Check initial 'd' attribute value.
-    shouldBeEqualToString("path.getAttribute('d').formatDAttribute()", "M 200 0 L 100 0 L 100 100");
-
-    // Append one item, check 'd' attribute changed.
-    path.pathSegList.appendItem(path.createSVGPathSegLinetoAbs(0, 100));
-    shouldBeEqualToString("path.getAttribute('d').formatDAttribute()", "M 200 0 L 100 0 L 100 100 L 0 100");
-
-    // Modify first item, check 'd' attribute changed.
-    path.pathSegList.getItem(0).x -= 100;
-    shouldBeEqualToString("path.getAttribute('d').formatDAttribute()", "M 100 0 L 100 0 L 100 100 L 0 100");
-
-    // Modify first item, check 'd' attribute changed, now a green rectangle should be visible.
-    path.pathSegList.getItem(0).x -= 100;
-    shouldBeEqualToString("path.getAttribute('d').formatDAttribute()", "M 0 0 L 100 0 L 100 100 L 0 100");
-
-    successfullyParsed = true;
-]]>
-</script>
-<script src="../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization2.xhtml b/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization2.xhtml
deleted file mode 100644
index 52d72d3..0000000
--- a/LayoutTests/svg/dom/SVGPathSegList-xml-dom-synchronization2.xhtml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<svg width="600" height="500" xmlns="http://www.w3.org/2000/svg">
-  <script type="text/javascript">
-  <![CDATA[
-    if (window.layoutTestController)
-        layoutTestController.waitUntilDone();
-
-        window.onload = function() {
-            var path = document.getElementsByTagName('path')[0];
-            var start = document.getElementById('d_start');
-            var end = document.getElementById('d_end');
-
-            var start_d = path.getAttribute('d');
-            start.textContent = start_d;
-            var list = path.pathSegList;
-            var seg = path.createSVGPathSegLinetoRel(50, 50);
-
-            setTimeout(function() {
-                list.insertItemBefore(seg, 2); 
-                var end_d = path.getAttribute('d');
-                end.textContent = end_d;
-                if(start_d == end_d) {
-                    end.textContent += ' (failed)';
-                }
-
-                if (window.layoutTestController)
-                    layoutTestController.notifyDone();
-            }, 0);
-        }
-]]>
-</script>
-  <path d="M50,150 l45,-43 l24,64 l-69,-21z" fill="#FF0000" stroke="#000000" stroke-width="5"/>
-  <text x="10" y="20" style="font-weight:bold">Right after loading, a segment is added to the path.</text>
-  <text x="10" y="40" style="font-weight:bold">The path and its attribute should be updated to include the new segment.</text>
-  
-  <text x="10" y="70">"d" initial: </text>
-  <text id="d_start" x="90" y="70"></text>
-
-  <text x="10" y="90">"d" after: </text>
-  <text id="d_end" x="90" y="90"></text>
-</svg>
diff --git a/LayoutTests/svg/dom/fuzz-path-parser-expected.txt b/LayoutTests/svg/dom/fuzz-path-parser-expected.txt
index be07cdc..3e81df0 100644
--- a/LayoutTests/svg/dom/fuzz-path-parser-expected.txt
+++ b/LayoutTests/svg/dom/fuzz-path-parser-expected.txt
@@ -207,255 +207,255 @@ This test fuzzes the path parser with semi-random attribute values and dumps the
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-Parsed as 4 command(s) [MTZl]: M1,1T4,1,zl5 3 a0,5,1,4,0,3 2,m6,C7,2,3,8,6,7,zt2,8 
-Parsed as 5 command(s) [MQQhq]: M1,1Q8,5 5 1 Q4,8,4,3,h4,q8 4,9,2,1 L4,0 l7 4 L1,0,q1,9,9,2 c5 5 2,8,1 1,q0,3 6,5,
-Parsed as 2 command(s) [Mh]: M1,1h0 A6 5,5 4,1,5,3 H5 a8 8,0 0,9,8 3 a6,1,6,3 5,6,3,S1 9 5 1 7,
+Parsed as 4 command(s) [MCZL]: M1,1T4,1,zl5 3 a0,5,1,4,0,3 2,m6,C7,2,3,8,6,7,zt2,8 
+Parsed as 5 command(s) [MCCLC]: M1,1Q8,5 5 1 Q4,8,4,3,h4,q8 4,9,2,1 L4,0 l7 4 L1,0,q1,9,9,2 c5 5 2,8,1 1,q0,3 6,5,
+Parsed as 2 command(s) [ML]: M1,1h0 A6 5,5 4,1,5,3 H5 a8 8,0 0,9,8 3 a6,1,6,3 5,6,3,S1 9 5 1 7,
 Parsed as 1 command(s) [M]: M1,1s6 3,8,h9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,s6,3,1,
-Parsed as 6 command(s) [MtlaQH]: M1,1t4 4 l6 6 a4 2,3,0,1,2 1,Q1,1,0,3,H8 C7,9 8 4,0 t5,2,H9,zHq1 5,9,T6 8,
+Parsed as 6 command(s) [MCLCCL]: M1,1t4 4 l6 6 a4 2,3,0,1,2 1,Q1,1,0,3,H8 C7,9 8 4,0 t5,2,H9,zHq1 5,9,T6 8,
 Parsed as 1 command(s) [M]: M1,1
-Parsed as 12 command(s) [MtZcZZQHvvCq]: M1,1t1 0 Zc3,8,8 7 3,4 zzQ5,3 4,4 H0 v8,v1,C0,1,6,2,5,4 q2 7 5 3 a7,4 7 9,7,2 9,ZL6 6,
-Parsed as 7 command(s) [MLtQTss]: M1,1L5,9,t3 7 Q6 1 1,1 T3,0 s4 6 8 1,s8 3,8 9,a5 4 3 2,4,2 3,6 
-Parsed as 6 command(s) [MtllsT]: M1,1t8 9,l3 5 l9,5 s6,9,2 9,T1 9 
+Parsed as 12 command(s) [MCZCZZCLLLCC]: M1,1t1 0 Zc3,8,8 7 3,4 zzQ5,3 4,4 H0 v8,v1,C0,1,6,2,5,4 q2 7 5 3 a7,4 7 9,7,2 9,ZL6 6,
+Parsed as 7 command(s) [MLCCCCC]: M1,1L5,9,t3 7 Q6 1 1,1 T3,0 s4 6 8 1,s8 3,8 9,a5 4 3 2,4,2 3,6 
+Parsed as 6 command(s) [MCLLCC]: M1,1t8 9,l3 5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
-Parsed as 2 command(s) [MT]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
-Parsed as 8 command(s) [MMqstQsV]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
-Parsed as 7 command(s) [MtlZhMs]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
+Parsed as 2 command(s) [MC]: M1,1T8 5,A2 7 5,7 9 6 5,7,zC8,5,8 1,6 3 v8,zM7,8,q8,6 4 7,c9,6,4,9,2 1 c0 6,9 9,0 7,
+Parsed as 8 command(s) [MMCCCCCL]: M1,1M7 7,q5,1 9 8,s4,9,0 7,t8,0,Q8 8 7,6,s0 8 5,7 V1 
+Parsed as 7 command(s) [MCLZLMC]: M1,1t7,1 l1 7,zh0 M3 1,s7,5 2,6 0 a0 0,6,8,5 6 5,m3 3 8 C9 0 2,2,5 3,s6 8 8 5,T4 8,L1 4 q0 1,2,3 l8,0 S8 3 1 3,Vc5 5,3,9,0,9 
 Parsed as 1 command(s) [M]: M1,1
 Parsed as 1 command(s) [M]: M1,1a4 5,7 3,5 9 8 7 S8 8 6 7 c2 8 4,1,4,1,c3 9,0,5,1,4,m3 2,0,S5,7,2,3,8,s7,4,8 2,T5,6,q0,3 2,6 A5 5 7 7 7,8,2 6,A8 0 3 5 2 3,3 v5 a6,3 7,7,9 4,3,H2 
-Parsed as 4 command(s) [MTqv]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
+Parsed as 4 command(s) [MCCL]: M1,1T1 1,q0,3 6,5,v0 m5,M6,2 q5,5 1 6,vS1,5 4 5,5,H4,s5 6,7 2,a9 9,8 4,3,1 0,c6,6 3,8,2,9 q5,5 1 4,4,h0 T5 t3,6 s8 5 8 2 zS0 7,7,
 Parsed as 1 command(s) [M]: M1,1A8 5 5,8 4 4 1 s6 9 4 2,v0,l2 L7,1,L0,3,H8 C7,9 8 4,0 t5,2,H9,zH
 Parsed as 1 command(s) [M]: M1,1A3,6,9,7,2,7 7,c1 1 1,0 7,7,l1 6 zH0,Zs0 5 0 0 zL8 4 7,zA8,8 5,9 2,6 4,l2 2,L9 4,V
-Parsed as 4 command(s) [MQss]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
+Parsed as 4 command(s) [MCCC]: M1,1Q2 9,4 1,s6,3 6,9,s6 0,0,6,1 zc2,1 7 0,1 4,Z2 A3,4 5,4,6,8,2 ZV5 t2 6,v8,t9,1 V5 l9,5 s6,9,2 9,T1 9 
 Parsed as 1 command(s) [M]: M1,1a9,2 6 1 2 2 2,za9 0 2 8,2,3,3 s5,8,8 1,HC5 8 5,8,4 2 c8 4 5 2 5 9,l3 9,H7 s6 2,0 0 a4 9,1 6,3,7,0,M6,
 Could not parse: 
 Could not parse: M
diff --git a/LayoutTests/svg/dom/path-parser-expected.txt b/LayoutTests/svg/dom/path-parser-expected.txt
index b27305b..8f48efc 100644
--- a/LayoutTests/svg/dom/path-parser-expected.txt
+++ b/LayoutTests/svg/dom/path-parser-expected.txt
@@ -14,41 +14,41 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS parsePath('M1,2') is 'M1,2'
-PASS parsePath('m1,2') is 'm1,2'
-PASS parsePath('M100,200 m3,4') is 'M100,200 m3,4'
+PASS parsePath('m1,2') is 'M1,2'
+PASS parsePath('M100,200 m3,4') is 'M100,200 M103,204'
 PASS parsePath('M100,200 L3,4') is 'M100,200 L3,4'
-PASS parsePath('M100,200 l3,4') is 'M100,200 l3,4'
-PASS parsePath('M100,200 H3') is 'M100,200 H3'
-PASS parsePath('M100,200 h3') is 'M100,200 h3'
-PASS parsePath('M100,200 V3') is 'M100,200 V3'
-PASS parsePath('M100,200 v3') is 'M100,200 v3'
+PASS parsePath('M100,200 l3,4') is 'M100,200 L103,204'
+PASS parsePath('M100,200 H3') is 'M100,200 L3,200'
+PASS parsePath('M100,200 h3') is 'M100,200 L103,200'
+PASS parsePath('M100,200 V3') is 'M100,200 L100,3'
+PASS parsePath('M100,200 v3') is 'M100,200 L100,203'
 PASS parsePath('M100,200 Z') is 'M100,200 Z'
 PASS parsePath('M100,200 z') is 'M100,200 Z'
 PASS parsePath('M100,200 C3,4,5,6,7,8') is 'M100,200 C3,4,5,6,7,8'
-PASS parsePath('M100,200 c3,4,5,6,7,8') is 'M100,200 c3,4,5,6,7,8'
-PASS parsePath('M100,200 S3,4,5,6') is 'M100,200 S3,4,5,6'
-PASS parsePath('M100,200 s3,4,5,6') is 'M100,200 s3,4,5,6'
-PASS parsePath('M100,200 Q3,4,5,6') is 'M100,200 Q3,4,5,6'
-PASS parsePath('M100,200 q3,4,5,6') is 'M100,200 q3,4,5,6'
-PASS parsePath('M100,200 T3,4') is 'M100,200 T3,4'
-PASS parsePath('M100,200 t3,4') is 'M100,200 t3,4'
-PASS parsePath('M100,200 A3,4,5,0,0,6,7') is 'M100,200 A3,4,5,0,0,6,7'
-PASS parsePath('M100,200 A3,4,5,1,0,6,7') is 'M100,200 A3,4,5,1,0,6,7'
-PASS parsePath('M100,200 A3,4,5,0,1,6,7') is 'M100,200 A3,4,5,0,1,6,7'
-PASS parsePath('M100,200 A3,4,5,1,1,6,7') is 'M100,200 A3,4,5,1,1,6,7'
-PASS parsePath('M100,200 a3,4,5,0,0,6,7') is 'M100,200 a3,4,5,0,0,6,7'
-PASS parsePath('M100,200 a3,4,5,0,1,6,7') is 'M100,200 a3,4,5,0,1,6,7'
-PASS parsePath('M100,200 a3,4,5,1,0,6,7') is 'M100,200 a3,4,5,1,0,6,7'
-PASS parsePath('M100,200 a3,4,5,1,1,6,7') is 'M100,200 a3,4,5,1,1,6,7'
-PASS parsePath('M100,200 a3,4,5,006,7') is 'M100,200 a3,4,5,0,0,6,7'
-PASS parsePath('M100,200 a3,4,5,016,7') is 'M100,200 a3,4,5,0,1,6,7'
-PASS parsePath('M100,200 a3,4,5,106,7') is 'M100,200 a3,4,5,1,0,6,7'
-PASS parsePath('M100,200 a3,4,5,116,7') is 'M100,200 a3,4,5,1,1,6,7'
+PASS parsePath('M100,200 c3,4,5,6,7,8') is 'M100,200 C103,204,105,206,107,208'
+PASS parsePath('M100,200 S3,4,5,6') is 'M100,200 C100,200,3,4,5,6'
+PASS parsePath('M100,200 s3,4,5,6') is 'M100,200 C100,200,103,204,105,206'
+PASS parsePath('M100,200 Q3,4,5,6') is 'M100,200 C35.3,69.3,3.7,4.7,5,6'
+PASS parsePath('M100,200 q3,4,5,6') is 'M100,200 C102,202.7,103.7,204.7,105,206'
+PASS parsePath('M100,200 T3,4') is 'M100,200 C100,200,67.7,134.7,3,4'
+PASS parsePath('M100,200 t3,4') is 'M100,200 C100,200,101,201.3,103,204'
+PASS parsePath('M100,200 A3,4,5,0,0,6,7') is 'M100,200 C141.5,162.8,154.1,89.5,128.2,36.2 C102.2,-17.1,47.5,-30.2,6,7'
+PASS parsePath('M100,200 A3,4,5,1,0,6,7') is 'M100,200 C141.5,162.8,154.2,89.4,128.2,36.1 C102.2,-17.2,47.5,-30.2,6,7'
+PASS parsePath('M100,200 A3,4,5,0,1,6,7') is 'M100,200 C58.5,237.2,3.8,224.1,-22.2,170.8 C-48.1,117.5,-35.5,44.2,6,7'
+PASS parsePath('M100,200 A3,4,5,1,1,6,7') is 'M100,200 C58.5,237.2,3.8,224.2,-22.2,170.9 C-48.2,117.6,-35.5,44.2,6,7'
+PASS parsePath('M100,200 a3,4,5,0,0,6,7') is 'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'
+PASS parsePath('M100,200 a3,4,5,0,1,6,7') is 'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'
+PASS parsePath('M100,200 a3,4,5,1,0,6,7') is 'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'
+PASS parsePath('M100,200 a3,4,5,1,1,6,7') is 'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'
+PASS parsePath('M100,200 a3,4,5,006,7') is 'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'
+PASS parsePath('M100,200 a3,4,5,016,7') is 'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'
+PASS parsePath('M100,200 a3,4,5,106,7') is 'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'
+PASS parsePath('M100,200 a3,4,5,116,7') is 'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'
 PASS parsePath('M100,200 a3,4,5,2,1,6,7') is 'M100,200'
 PASS parsePath('M100,200 a3,4,5,1,2,6,7') is 'M100,200'
-PASS parsePath('M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z') is 'M100,200 l10,0 l0,10 l-10,0 Z'
+PASS parsePath('M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z') is 'M100,200 L110,200 L110,210 L100,210 Z'
 PASS parsePath('M1,2,3,4') is 'M1,2 L3,4'
-PASS parsePath('m100,200,3,4') is 'm100,200 l3,4'
+PASS parsePath('m100,200,3,4') is 'M100,200 L103,204'
 PASS parsePath('M 100-200') is 'M100,-200'
 PASS parsePath('M 0.6.5') is 'M0.6,0.5'
 PASS parsePath(' M1,2') is 'M1,2'
diff --git a/LayoutTests/svg/dom/script-tests/path-parser.js b/LayoutTests/svg/dom/script-tests/path-parser.js
index f835d9d..60b6476 100644
--- a/LayoutTests/svg/dom/script-tests/path-parser.js
+++ b/LayoutTests/svg/dom/script-tests/path-parser.js
@@ -4,31 +4,21 @@ var pathElement = document.createElementNS("http://www.w3.org/2000/svg", "path")
 
 var pathProperties = {
     "M": [ "x", "y" ],
-    "m": [ "x", "y" ],
     "L": [ "x", "y" ],
-    "l": [ "x", "y" ],
     "H": [ "x" ],
-    "h": [ "x" ],
     "V": [ "y" ],
-    "v": [ "y" ],
     "Z": [ ],
-    "z": [ ],
     "C": [ "x1", "y1", "x2", "y2", "x", "y" ],
-    "c": [ "x1", "y1", "x2", "y2", "x", "y" ],
     "S": [ "x2", "y2", "x", "y" ],
-    "s": [ "x2", "y2", "x", "y" ],
     "Q": [ "x1", "y1", "x", "y" ],
-    "q": [ "x1", "y1", "x", "y" ],
     "T": [ "x", "y" ],
-    "t": [ "x", "y" ],
     "A": [ "r1", "r2", "angle", "largeArcFlag", "sweepFlag", "x", "y" ],
-    "a": [ "r1", "r2", "angle", "largeArcFlag", "sweepFlag", "x", "y" ]
 };
 
 function printSegment(segment)
 {
     var letter = segment.pathSegTypeAsLetter;
-    var names = pathProperties[letter];
+    var names = pathProperties[letter.toUpperCase()];
     if (!names)
         return letter + "?";
     var string = letter;
@@ -67,45 +57,42 @@ function parsePath(string)
 }
 
 shouldBe("parsePath('M1,2')", "'M1,2'");
-shouldBe("parsePath('m1,2')", "'m1,2'");
-shouldBe("parsePath('M100,200 m3,4')", "'M100,200 m3,4'");
+shouldBe("parsePath('m1,2')", "'M1,2'");
+shouldBe("parsePath('M100,200 m3,4')", "'M100,200 M103,204'");
 shouldBe("parsePath('M100,200 L3,4')", "'M100,200 L3,4'");
-shouldBe("parsePath('M100,200 l3,4')", "'M100,200 l3,4'");
-shouldBe("parsePath('M100,200 H3')", "'M100,200 H3'");
-shouldBe("parsePath('M100,200 h3')", "'M100,200 h3'");
-shouldBe("parsePath('M100,200 V3')", "'M100,200 V3'");
-shouldBe("parsePath('M100,200 v3')", "'M100,200 v3'");
+shouldBe("parsePath('M100,200 l3,4')", "'M100,200 L103,204'");
+shouldBe("parsePath('M100,200 H3')", "'M100,200 L3,200'");
+shouldBe("parsePath('M100,200 h3')", "'M100,200 L103,200'");
+shouldBe("parsePath('M100,200 V3')", "'M100,200 L100,3'");
+shouldBe("parsePath('M100,200 v3')", "'M100,200 L100,203'");
 shouldBe("parsePath('M100,200 Z')", "'M100,200 Z'");
 shouldBe("parsePath('M100,200 z')", "'M100,200 Z'");
 shouldBe("parsePath('M100,200 C3,4,5,6,7,8')", "'M100,200 C3,4,5,6,7,8'");
-shouldBe("parsePath('M100,200 c3,4,5,6,7,8')", "'M100,200 c3,4,5,6,7,8'");
-shouldBe("parsePath('M100,200 S3,4,5,6')", "'M100,200 S3,4,5,6'");
-shouldBe("parsePath('M100,200 s3,4,5,6')", "'M100,200 s3,4,5,6'");
-shouldBe("parsePath('M100,200 Q3,4,5,6')", "'M100,200 Q3,4,5,6'");
-shouldBe("parsePath('M100,200 q3,4,5,6')", "'M100,200 q3,4,5,6'");
-shouldBe("parsePath('M100,200 T3,4')", "'M100,200 T3,4'");
-shouldBe("parsePath('M100,200 t3,4')", "'M100,200 t3,4'");
-shouldBe("parsePath('M100,200 A3,4,5,0,0,6,7')", "'M100,200 A3,4,5,0,0,6,7'");
-shouldBe("parsePath('M100,200 A3,4,5,1,0,6,7')", "'M100,200 A3,4,5,1,0,6,7'");
-shouldBe("parsePath('M100,200 A3,4,5,0,1,6,7')", "'M100,200 A3,4,5,0,1,6,7'");
-shouldBe("parsePath('M100,200 A3,4,5,1,1,6,7')", "'M100,200 A3,4,5,1,1,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,0,0,6,7')", "'M100,200 a3,4,5,0,0,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,0,1,6,7')", "'M100,200 a3,4,5,0,1,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,1,0,6,7')", "'M100,200 a3,4,5,1,0,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,1,1,6,7')", "'M100,200 a3,4,5,1,1,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,006,7')", "'M100,200 a3,4,5,0,0,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,016,7')", "'M100,200 a3,4,5,0,1,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,106,7')", "'M100,200 a3,4,5,1,0,6,7'");
-shouldBe("parsePath('M100,200 a3,4,5,116,7')", "'M100,200 a3,4,5,1,1,6,7'");
+shouldBe("parsePath('M100,200 c3,4,5,6,7,8')", "'M100,200 C103,204,105,206,107,208'");
+shouldBe("parsePath('M100,200 S3,4,5,6')", "'M100,200 C100,200,3,4,5,6'");
+shouldBe("parsePath('M100,200 s3,4,5,6')", "'M100,200 C100,200,103,204,105,206'");
+shouldBe("parsePath('M100,200 Q3,4,5,6')", "'M100,200 C35.3,69.3,3.7,4.7,5,6'");
+shouldBe("parsePath('M100,200 q3,4,5,6')", "'M100,200 C102,202.7,103.7,204.7,105,206'");
+shouldBe("parsePath('M100,200 T3,4')", "'M100,200 C100,200,67.7,134.7,3,4'");
+shouldBe("parsePath('M100,200 t3,4')", "'M100,200 C100,200,101,201.3,103,204'");
+shouldBe("parsePath('M100,200 A3,4,5,0,0,6,7')", "'M100,200 C141.5,162.8,154.1,89.5,128.2,36.2 C102.2,-17.1,47.5,-30.2,6,7'");
+shouldBe("parsePath('M100,200 A3,4,5,1,0,6,7')", "'M100,200 C141.5,162.8,154.2,89.4,128.2,36.1 C102.2,-17.2,47.5,-30.2,6,7'");
+shouldBe("parsePath('M100,200 A3,4,5,0,1,6,7')", "'M100,200 C58.5,237.2,3.8,224.1,-22.2,170.8 C-48.1,117.5,-35.5,44.2,6,7'");
+shouldBe("parsePath('M100,200 A3,4,5,1,1,6,7')", "'M100,200 C58.5,237.2,3.8,224.2,-22.2,170.9 C-48.2,117.6,-35.5,44.2,6,7'");
+shouldBe("parsePath('M100,200 a3,4,5,0,0,6,7')", "'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,0,1,6,7')", "'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,1,0,6,7')", "'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,1,1,6,7')", "'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,006,7')", "'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,016,7')", "'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,106,7')", "'M100,200 C98.5,202.3,98.6,205.7,100.2,207.7 C101.9,209.6,104.5,209.3,106,207'");
+shouldBe("parsePath('M100,200 a3,4,5,116,7')", "'M100,200 C101.5,197.7,104.1,197.4,105.8,199.3 C107.4,201.3,107.5,204.7,106,207'");
 shouldBe("parsePath('M100,200 a3,4,5,2,1,6,7')", "'M100,200'");
 shouldBe("parsePath('M100,200 a3,4,5,1,2,6,7')", "'M100,200'");
-
-// FIXME: This uses 'If rx = 0 or ry = 0 then this arc is treated as a straight line segment (a "lineto") joining the endpoints.'
-// I think the SVG DOM should still show the arc segment, fix that!
-shouldBe("parsePath('M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z')", "'M100,200 l10,0 l0,10 l-10,0 Z'");
+shouldBe("parsePath('M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z')", "'M100,200 L110,200 L110,210 L100,210 Z'");
 
 shouldBe("parsePath('M1,2,3,4')", "'M1,2 L3,4'");
-shouldBe("parsePath('m100,200,3,4')", "'m100,200 l3,4'");
+shouldBe("parsePath('m100,200,3,4')", "'M100,200 L103,204'");
 
 shouldBe("parsePath('M 100-200')", "'M100,-200'");
 shouldBe("parsePath('M 0.6.5')", "'M0.6,0.5'");
diff --git a/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error-expected.txt b/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error-expected.txt
index dda168c..83af6bb 100644
--- a/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error-expected.txt
+++ b/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error-expected.txt
@@ -3,42 +3,42 @@ Tests that out of bounds accesses of SVGList correctly throw exceptions
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS svgList.getItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.insertItemBefore(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.insertItemBefore(seg, index) is seg
-PASS svgList.replaceItem(seg, index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.replaceItem(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.removeItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.getItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.insertItemBefore(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.insertItemBefore(seg, index) is seg
-PASS svgList.replaceItem(seg, index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.replaceItem(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.removeItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.getItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.insertItemBefore(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.insertItemBefore(seg, index) is seg
-PASS svgList.replaceItem(seg, index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.replaceItem(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.removeItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.getItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.insertItemBefore(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.insertItemBefore(seg, index) is seg
-PASS svgList.replaceItem(seg, index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.replaceItem(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.removeItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.getItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.insertItemBefore(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.insertItemBefore(seg, index) is seg
-PASS svgList.replaceItem(seg, index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.replaceItem(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.removeItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.getItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.insertItemBefore(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.insertItemBefore(seg, index) is seg
-PASS svgList.replaceItem(seg, index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
-PASS svgList.replaceItem(null, index) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
-PASS svgList.removeItem(index) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.getItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.insertItemBefore(null, i) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS svgList.insertItemBefore(seg, i) is seg
+PASS svgList.replaceItem(seg, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.replaceItem(null, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.removeItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.getItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.insertItemBefore(null, i) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS svgList.insertItemBefore(seg, i) is seg
+PASS svgList.replaceItem(seg, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.replaceItem(null, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.removeItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.getItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.insertItemBefore(null, i) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS svgList.insertItemBefore(seg, i) is seg
+PASS svgList.replaceItem(seg, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.replaceItem(null, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.removeItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.getItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.insertItemBefore(null, i) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS svgList.insertItemBefore(seg, i) is seg
+PASS svgList.replaceItem(seg, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.replaceItem(null, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.removeItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.getItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.insertItemBefore(null, i) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS svgList.insertItemBefore(seg, i) is seg
+PASS svgList.replaceItem(seg, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.replaceItem(null, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.removeItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.getItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.insertItemBefore(null, i) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
+PASS svgList.insertItemBefore(seg, i) is seg
+PASS svgList.replaceItem(seg, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.replaceItem(null, i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
+PASS svgList.removeItem(i) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error.html b/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error.html
index f30756a..1a0d571 100644
--- a/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error.html
+++ b/LayoutTests/svg/dom/svglist-exception-on-out-bounds-error.html
@@ -13,15 +13,14 @@
     var svgList = path.pathSegList;
     var indicesToTest = [-Infinity, NaN, -1, 0, 1, Infinity];
     for (var i = 0; i < indicesToTest.length; i++) {
-         var index = indicesToTest[i];
-         shouldThrow("svgList.getItem(index)");
-         shouldThrow("svgList.insertItemBefore(null, index)");
+         shouldThrow("svgList.getItem(i)");
+         shouldThrow("svgList.insertItemBefore(null, i)");
          var seg = path.createSVGPathSegClosePath();
-         shouldBe("svgList.insertItemBefore(seg, index)", "seg");
+         shouldBe("svgList.insertItemBefore(seg, i)", "seg");
          svgList.removeItem(0);
-         shouldThrow("svgList.replaceItem(seg, index)");
-         shouldThrow("svgList.replaceItem(null, index)");
-         shouldThrow("svgList.removeItem(index)");
+         shouldThrow("svgList.replaceItem(seg, i)");
+         shouldThrow("svgList.replaceItem(null, i)");
+         shouldThrow("svgList.removeItem(i)");
     }
     successfullyParsed = true;
 </script>
diff --git a/LayoutTests/svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt b/LayoutTests/svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt
index bef59ec..f02ab55 100644
--- a/LayoutTests/svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt
+++ b/LayoutTests/svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt
@@ -3,7 +3,7 @@ Tests that an exception is thrown if we try to get a pathSeg for a length out of
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS path.pathSegList.initialize(); threw exception SyntaxError: Not enough arguments.
+PASS path.pathSegList.initialize(); threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
 PASS path.getPathSegAtLength(0) is 0
 PASS path.insertItemBefore(null, 0) threw exception TypeError: 'undefined' is not a function (evaluating 'path.insertItemBefore(null, 0)').
 PASS path.replaceItem(null, 0) threw exception TypeError: 'undefined' is not a function (evaluating 'path.replaceItem(null, 0)').
diff --git a/WebCore/Android.mk b/WebCore/Android.mk
index 23c59b4..cc490ee 100644
--- a/WebCore/Android.mk
+++ b/WebCore/Android.mk
@@ -861,6 +861,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
 	svg/SVGAnimateElement.cpp \
 	svg/SVGAnimateMotionElement.cpp \
 	svg/SVGAnimateTransformElement.cpp \
+	svg/SVGAnimatedPathData.cpp \
 	svg/SVGAnimationElement.cpp \
 	svg/SVGCircleElement.cpp \
 	svg/SVGClipPathElement.cpp \
@@ -939,9 +940,20 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
 	svg/SVGPathElement.cpp \
 	svg/SVGPathParser.cpp \
 	svg/SVGPathParserFactory.cpp \
+	svg/SVGPathSeg.cpp \
+	svg/SVGPathSegArc.cpp \
+	svg/SVGPathSegClosePath.cpp \
+	svg/SVGPathSegCurvetoCubic.cpp \
+	svg/SVGPathSegCurvetoCubicSmooth.cpp \
+	svg/SVGPathSegCurvetoQuadratic.cpp \
+	svg/SVGPathSegCurvetoQuadraticSmooth.cpp \
+	svg/SVGPathSegLineto.cpp \
+	svg/SVGPathSegLinetoHorizontal.cpp \
+	svg/SVGPathSegLinetoVertical.cpp \
 	svg/SVGPathSegList.cpp \
 	svg/SVGPathSegListBuilder.cpp \
 	svg/SVGPathSegListSource.cpp \
+	svg/SVGPathSegMoveto.cpp \
 	svg/SVGPathStringBuilder.cpp \
 	svg/SVGPathStringSource.cpp \
 	svg/SVGPathTraversalStateBuilder.cpp \
diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt
index a30caf9..08f8809 100644
--- a/WebCore/CMakeLists.txt
+++ b/WebCore/CMakeLists.txt
@@ -99,6 +99,7 @@ SET(WebCore_IDL_INCLUDES
 
 SET(WebCore_IDL_PURE_FILES
     svg/ElementTimeControl.idl
+    svg/SVGAnimatedPathData.idl
     svg/SVGExternalResourcesRequired.idl
     svg/SVGFilterPrimitiveStandardAttributes.idl
     svg/SVGFitToViewBox.idl
@@ -1713,6 +1714,7 @@ IF (ENABLE_SVG)
         bindings/js/JSSVGElementInstanceCustom.cpp
         bindings/js/JSSVGLengthCustom.cpp
         bindings/js/JSSVGPathSegCustom.cpp
+        bindings/js/JSSVGPathSegListCustom.cpp
         css/SVGCSSComputedStyleDeclaration.cpp
         css/SVGCSSParser.cpp
         css/SVGCSSStyleSelector.cpp
@@ -1776,6 +1778,7 @@ IF (ENABLE_SVG)
         svg/SVGAnimateElement.cpp
         svg/SVGAnimateMotionElement.cpp
         svg/SVGAnimateTransformElement.cpp
+        svg/SVGAnimatedPathData.cpp
         svg/SVGAnimationElement.cpp
         svg/SVGCircleElement.cpp
         svg/SVGClipPathElement.cpp
@@ -1855,9 +1858,20 @@ IF (ENABLE_SVG)
         svg/SVGPathElement.cpp
         svg/SVGPathParser.cpp
         svg/SVGPathParserFactory.cpp
+        svg/SVGPathSeg.cpp
+        svg/SVGPathSegArc.cpp
+        svg/SVGPathSegClosePath.cpp
+        svg/SVGPathSegCurvetoCubic.cpp
+        svg/SVGPathSegCurvetoCubicSmooth.cpp
+        svg/SVGPathSegCurvetoQuadratic.cpp
+        svg/SVGPathSegCurvetoQuadraticSmooth.cpp
+        svg/SVGPathSegLineto.cpp
+        svg/SVGPathSegLinetoHorizontal.cpp
+        svg/SVGPathSegLinetoVertical.cpp
         svg/SVGPathSegList.cpp
         svg/SVGPathSegListBuilder.cpp
         svg/SVGPathSegListSource.cpp
+        svg/SVGPathSegMoveto.cpp
         svg/SVGPathStringBuilder.cpp
         svg/SVGPathStringSource.cpp
         svg/SVGPathTraversalStateBuilder.cpp
@@ -1907,7 +1921,6 @@ IF (ENABLE_SVG)
         svg/graphics/filters/SVGFEImage.cpp
         svg/graphics/filters/SVGFilter.cpp
         svg/graphics/filters/SVGFilterBuilder.cpp
-        svg/properties/SVGPathSegListPropertyTearOff.cpp
     )
 ENDIF()
 
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 55c591b..308e9a4 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,5 +1,303 @@
 2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
 
+        Unreviewed, rolling out r72288.
+        http://trac.webkit.org/changeset/72288
+        https://bugs.webkit.org/show_bug.cgi?id=49730
+
+        'krit attempted to do that, but revert got stuck' (Requested
+        by antonm on #webkit).
+
+        * Android.mk:
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * GNUmakefile.am:
+        * WebCore.gyp/WebCore.gyp:
+        * WebCore.gypi:
+        * WebCore.order:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSBindingsAllInOne.cpp:
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::setDOMException):
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::createDOMObjectWrapper):
+        (WebCore::getDOMObjectWrapper):
+        * bindings/js/JSSVGPathSegCustom.cpp:
+        (WebCore::toJS):
+        * bindings/js/JSSVGPathSegListCustom.cpp: Added.
+        (WebCore::JSSVGPathSegList::clear):
+        (WebCore::JSSVGPathSegList::initialize):
+        (WebCore::JSSVGPathSegList::getItem):
+        (WebCore::JSSVGPathSegList::insertItemBefore):
+        (WebCore::JSSVGPathSegList::replaceItem):
+        (WebCore::JSSVGPathSegList::removeItem):
+        (WebCore::JSSVGPathSegList::appendItem):
+        * bindings/scripts/CodeGenerator.pm:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        * bindings/scripts/CodeGeneratorV8.pm:
+        * rendering/SVGRenderTreeAsText.cpp:
+        (WebCore::operator<<):
+        * svg/SVGAllInOne.cpp:
+        * svg/SVGAnimatedPathData.cpp: Added.
+        * svg/SVGAnimatedPathData.h: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGAnimatedPathData::~SVGAnimatedPathData):
+        * svg/SVGAnimatedPathData.idl: Copied from WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl.
+        * svg/SVGPathElement.cpp:
+        (WebCore::SVGPathElement::SVGPathElement):
+        (WebCore::SVGPathElement::getPathSegAtLength):
+        (WebCore::SVGPathElement::createSVGPathSegClosePath):
+        (WebCore::SVGPathElement::createSVGPathSegMovetoAbs):
+        (WebCore::SVGPathElement::createSVGPathSegMovetoRel):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoAbs):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticRel):
+        (WebCore::SVGPathElement::createSVGPathSegArcAbs):
+        (WebCore::SVGPathElement::createSVGPathSegArcRel):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalAbs):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalRel):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalAbs):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel):
+        (WebCore::SVGPathElement::parseMappedAttribute):
+        (WebCore::SVGPathElement::svgAttributeChanged):
+        (WebCore::SVGPathElement::synchronizeProperty):
+        (WebCore::SVGPathElement::pathSegList):
+        (WebCore::SVGPathElement::normalizedPathSegList):
+        (WebCore::SVGPathElement::animatedPathSegList):
+        (WebCore::SVGPathElement::animatedNormalizedPathSegList):
+        (WebCore::SVGPathElement::toPathData):
+        * svg/SVGPathElement.h:
+        (WebCore::SVGPathElement::isValid):
+        (WebCore::SVGPathElement::supportsMarkers):
+        * svg/SVGPathElement.idl:
+        * svg/SVGPathParserFactory.cpp:
+        (WebCore::globalSVGPathSegListBuilder):
+        (WebCore::SVGPathParserFactory::buildPathFromByteStream):
+        (WebCore::SVGPathParserFactory::buildPathFromSVGPathSegList):
+        (WebCore::SVGPathParserFactory::buildSVGPathSegListFromString):
+        (WebCore::SVGPathParserFactory::buildSVGPathSegListFromByteStream):
+        (WebCore::SVGPathParserFactory::buildStringFromSVGPathSegList):
+        (WebCore::SVGPathParserFactory::buildSVGPathByteStreamFromString):
+        (WebCore::SVGPathParserFactory::buildAnimatedSVGPathByteStream):
+        (WebCore::SVGPathParserFactory::getSVGPathSegAtLengthFromSVGPathSegList):
+        * svg/SVGPathParserFactory.h:
+        * svg/SVGPathSeg.cpp: Copied from WebCore/svg/SVGPathSegLinetoHorizontalRel.idl.
+        (WebCore::SVGPathSeg::associatedAttributeName):
+        * svg/SVGPathSeg.h:
+        (WebCore::SVGPathSegSingleCoord::setX):
+        (WebCore::SVGPathSegSingleCoord::x):
+        (WebCore::SVGPathSegSingleCoord::setY):
+        (WebCore::SVGPathSegSingleCoord::y):
+        (WebCore::SVGPathSegSingleCoord::SVGPathSegSingleCoord):
+        * svg/SVGPathSeg.idl:
+        * svg/SVGPathSegArc.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegArcAbs::SVGPathSegArcAbs):
+        (WebCore::SVGPathSegArcRel::SVGPathSegArcRel):
+        * svg/SVGPathSegArc.h:
+        (WebCore::SVGPathSegArc::SVGPathSegArc):
+        (WebCore::SVGPathSegArc::setX):
+        (WebCore::SVGPathSegArc::x):
+        (WebCore::SVGPathSegArc::setY):
+        (WebCore::SVGPathSegArc::y):
+        (WebCore::SVGPathSegArc::setR1):
+        (WebCore::SVGPathSegArc::r1):
+        (WebCore::SVGPathSegArc::setR2):
+        (WebCore::SVGPathSegArc::r2):
+        (WebCore::SVGPathSegArc::setAngle):
+        (WebCore::SVGPathSegArc::angle):
+        (WebCore::SVGPathSegArc::setLargeArcFlag):
+        (WebCore::SVGPathSegArc::largeArcFlag):
+        (WebCore::SVGPathSegArc::setSweepFlag):
+        (WebCore::SVGPathSegArc::sweepFlag):
+        (WebCore::SVGPathSegArcAbs::create):
+        (WebCore::SVGPathSegArcAbs::pathSegType):
+        (WebCore::SVGPathSegArcAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegArcRel::create):
+        (WebCore::SVGPathSegArcRel::pathSegType):
+        (WebCore::SVGPathSegArcRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegArcAbs.idl:
+        * svg/SVGPathSegArcRel.idl:
+        * svg/SVGPathSegClosePath.cpp: Added.
+        * svg/SVGPathSegClosePath.h:
+        (WebCore::SVGPathSegClosePath::create):
+        (WebCore::SVGPathSegClosePath::SVGPathSegClosePath):
+        * svg/SVGPathSegCurvetoCubic.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegCurvetoCubicAbs::SVGPathSegCurvetoCubicAbs):
+        (WebCore::SVGPathSegCurvetoCubicRel::SVGPathSegCurvetoCubicRel):
+        * svg/SVGPathSegCurvetoCubic.h:
+        (WebCore::SVGPathSegCurvetoCubic::SVGPathSegCurvetoCubic):
+        (WebCore::SVGPathSegCurvetoCubic::setX):
+        (WebCore::SVGPathSegCurvetoCubic::x):
+        (WebCore::SVGPathSegCurvetoCubic::setY):
+        (WebCore::SVGPathSegCurvetoCubic::y):
+        (WebCore::SVGPathSegCurvetoCubic::setX1):
+        (WebCore::SVGPathSegCurvetoCubic::x1):
+        (WebCore::SVGPathSegCurvetoCubic::setY1):
+        (WebCore::SVGPathSegCurvetoCubic::y1):
+        (WebCore::SVGPathSegCurvetoCubic::setX2):
+        (WebCore::SVGPathSegCurvetoCubic::x2):
+        (WebCore::SVGPathSegCurvetoCubic::setY2):
+        (WebCore::SVGPathSegCurvetoCubic::y2):
+        (WebCore::SVGPathSegCurvetoCubicAbs::create):
+        (WebCore::SVGPathSegCurvetoCubicAbs::pathSegType):
+        (WebCore::SVGPathSegCurvetoCubicAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegCurvetoCubicRel::create):
+        (WebCore::SVGPathSegCurvetoCubicRel::pathSegType):
+        (WebCore::SVGPathSegCurvetoCubicRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegCurvetoCubicAbs.idl:
+        * svg/SVGPathSegCurvetoCubicRel.idl:
+        * svg/SVGPathSegCurvetoCubicSmooth.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::SVGPathSegCurvetoCubicSmoothAbs):
+        (WebCore::SVGPathSegCurvetoCubicSmoothRel::SVGPathSegCurvetoCubicSmoothRel):
+        * svg/SVGPathSegCurvetoCubicSmooth.h:
+        (WebCore::SVGPathSegCurvetoCubicSmooth::SVGPathSegCurvetoCubicSmooth):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::setX):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::x):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::setY):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::y):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::setX2):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::x2):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::setY2):
+        (WebCore::SVGPathSegCurvetoCubicSmooth::y2):
+        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::create):
+        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::pathSegType):
+        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegCurvetoCubicSmoothRel::create):
+        (WebCore::SVGPathSegCurvetoCubicSmoothRel::pathSegType):
+        (WebCore::SVGPathSegCurvetoCubicSmoothRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegCurvetoCubicSmoothAbs.idl:
+        * svg/SVGPathSegCurvetoCubicSmoothRel.idl:
+        * svg/SVGPathSegCurvetoQuadratic.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegCurvetoQuadraticAbs::SVGPathSegCurvetoQuadraticAbs):
+        (WebCore::SVGPathSegCurvetoQuadraticRel::SVGPathSegCurvetoQuadraticRel):
+        * svg/SVGPathSegCurvetoQuadratic.h:
+        (WebCore::SVGPathSegCurvetoQuadratic::SVGPathSegCurvetoQuadratic):
+        (WebCore::SVGPathSegCurvetoQuadratic::setX):
+        (WebCore::SVGPathSegCurvetoQuadratic::x):
+        (WebCore::SVGPathSegCurvetoQuadratic::setY):
+        (WebCore::SVGPathSegCurvetoQuadratic::y):
+        (WebCore::SVGPathSegCurvetoQuadratic::setX1):
+        (WebCore::SVGPathSegCurvetoQuadratic::x1):
+        (WebCore::SVGPathSegCurvetoQuadratic::setY1):
+        (WebCore::SVGPathSegCurvetoQuadratic::y1):
+        (WebCore::SVGPathSegCurvetoQuadraticAbs::create):
+        (WebCore::SVGPathSegCurvetoQuadraticAbs::pathSegType):
+        (WebCore::SVGPathSegCurvetoQuadraticAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegCurvetoQuadraticRel::create):
+        (WebCore::SVGPathSegCurvetoQuadraticRel::pathSegType):
+        (WebCore::SVGPathSegCurvetoQuadraticRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegCurvetoQuadraticAbs.idl:
+        * svg/SVGPathSegCurvetoQuadraticRel.idl:
+        * svg/SVGPathSegCurvetoQuadraticSmooth.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::SVGPathSegCurvetoQuadraticSmoothAbs):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::SVGPathSegCurvetoQuadraticSmoothRel):
+        * svg/SVGPathSegCurvetoQuadraticSmooth.h:
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::create):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::pathSegType):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::create):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::pathSegType):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl:
+        * svg/SVGPathSegCurvetoQuadraticSmoothRel.idl:
+        * svg/SVGPathSegLineto.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegLinetoAbs::SVGPathSegLinetoAbs):
+        (WebCore::SVGPathSegLinetoRel::SVGPathSegLinetoRel):
+        * svg/SVGPathSegLineto.h:
+        (WebCore::SVGPathSegLinetoAbs::create):
+        (WebCore::SVGPathSegLinetoAbs::pathSegType):
+        (WebCore::SVGPathSegLinetoAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegLinetoRel::create):
+        (WebCore::SVGPathSegLinetoRel::pathSegType):
+        (WebCore::SVGPathSegLinetoRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegLinetoAbs.idl:
+        * svg/SVGPathSegLinetoHorizontal.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegLinetoHorizontalAbs::SVGPathSegLinetoHorizontalAbs):
+        (WebCore::SVGPathSegLinetoHorizontalRel::SVGPathSegLinetoHorizontalRel):
+        * svg/SVGPathSegLinetoHorizontal.h:
+        (WebCore::SVGPathSegLinetoHorizontal::SVGPathSegLinetoHorizontal):
+        (WebCore::SVGPathSegLinetoHorizontal::setX):
+        (WebCore::SVGPathSegLinetoHorizontal::x):
+        (WebCore::SVGPathSegLinetoHorizontalAbs::create):
+        (WebCore::SVGPathSegLinetoHorizontalAbs::pathSegType):
+        (WebCore::SVGPathSegLinetoHorizontalAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegLinetoHorizontalRel::create):
+        (WebCore::SVGPathSegLinetoHorizontalRel::pathSegType):
+        (WebCore::SVGPathSegLinetoHorizontalRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegLinetoHorizontalAbs.idl:
+        * svg/SVGPathSegLinetoHorizontalRel.idl:
+        * svg/SVGPathSegLinetoRel.idl:
+        * svg/SVGPathSegLinetoVertical.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegLinetoVerticalAbs::SVGPathSegLinetoVerticalAbs):
+        (WebCore::SVGPathSegLinetoVerticalRel::SVGPathSegLinetoVerticalRel):
+        * svg/SVGPathSegLinetoVertical.h:
+        (WebCore::SVGPathSegLinetoVertical::SVGPathSegLinetoVertical):
+        (WebCore::SVGPathSegLinetoVertical::setY):
+        (WebCore::SVGPathSegLinetoVertical::y):
+        (WebCore::SVGPathSegLinetoVerticalAbs::create):
+        (WebCore::SVGPathSegLinetoVerticalAbs::pathSegType):
+        (WebCore::SVGPathSegLinetoVerticalAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegLinetoVerticalRel::create):
+        (WebCore::SVGPathSegLinetoVerticalRel::pathSegType):
+        (WebCore::SVGPathSegLinetoVerticalRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegLinetoVerticalAbs.idl:
+        * svg/SVGPathSegLinetoVerticalRel.idl:
+        * svg/SVGPathSegList.cpp:
+        (WebCore::SVGPathSegList::SVGPathSegList):
+        * svg/SVGPathSegList.h:
+        (WebCore::SVGPathSegList::create):
+        * svg/SVGPathSegList.idl:
+        * svg/SVGPathSegListBuilder.cpp:
+        (WebCore::SVGPathSegListBuilder::SVGPathSegListBuilder):
+        (WebCore::SVGPathSegListBuilder::moveTo):
+        (WebCore::SVGPathSegListBuilder::lineTo):
+        (WebCore::SVGPathSegListBuilder::lineToHorizontal):
+        (WebCore::SVGPathSegListBuilder::lineToVertical):
+        (WebCore::SVGPathSegListBuilder::curveToCubic):
+        (WebCore::SVGPathSegListBuilder::curveToCubicSmooth):
+        (WebCore::SVGPathSegListBuilder::curveToQuadratic):
+        (WebCore::SVGPathSegListBuilder::curveToQuadraticSmooth):
+        (WebCore::SVGPathSegListBuilder::arcTo):
+        (WebCore::SVGPathSegListBuilder::closePath):
+        * svg/SVGPathSegListBuilder.h:
+        (WebCore::SVGPathSegListBuilder::setCurrentSVGPathSegList):
+        (WebCore::SVGPathSegListBuilder::cleanup):
+        * svg/SVGPathSegListSource.cpp:
+        (WebCore::SVGPathSegListSource::SVGPathSegListSource):
+        (WebCore::SVGPathSegListSource::parseSVGSegmentType):
+        (WebCore::SVGPathSegListSource::nextCommand):
+        (WebCore::SVGPathSegListSource::parseMoveToSegment):
+        (WebCore::SVGPathSegListSource::parseLineToSegment):
+        (WebCore::SVGPathSegListSource::parseCurveToQuadraticSmoothSegment):
+        * svg/SVGPathSegListSource.h:
+        (WebCore::SVGPathSegListSource::create):
+        * svg/SVGPathSegMoveto.cpp: Copied from WebCore/svg/SVGPathSegClosePath.h.
+        (WebCore::SVGPathSegMovetoAbs::SVGPathSegMovetoAbs):
+        (WebCore::SVGPathSegMovetoRel::SVGPathSegMovetoRel):
+        * svg/SVGPathSegMoveto.h:
+        (WebCore::SVGPathSegMovetoAbs::create):
+        (WebCore::SVGPathSegMovetoAbs::pathSegType):
+        (WebCore::SVGPathSegMovetoAbs::pathSegTypeAsLetter):
+        (WebCore::SVGPathSegMovetoRel::create):
+        (WebCore::SVGPathSegMovetoRel::pathSegType):
+        (WebCore::SVGPathSegMovetoRel::pathSegTypeAsLetter):
+        * svg/SVGPathSegMovetoAbs.idl:
+        * svg/SVGPathSegMovetoRel.idl:
+        * svg/SVGPathSegWithContext.h: Removed.
+        * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: Removed.
+        * svg/properties/SVGPathSegListPropertyTearOff.cpp: Removed.
+        * svg/properties/SVGPathSegListPropertyTearOff.h: Removed.
+
+2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
+
         Unreviewed, rolling out r72292.
         http://trac.webkit.org/changeset/72292
         https://bugs.webkit.org/show_bug.cgi?id=49732
diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
index 793e155..1b6a266 100644
--- a/WebCore/DerivedSources.make
+++ b/WebCore/DerivedSources.make
@@ -329,6 +329,7 @@ DOM_CLASSES = \
     SVGAnimatedLengthList \
     SVGAnimatedNumber \
     SVGAnimatedNumberList \
+    SVGAnimatedPathData \
     SVGAnimatedPreserveAspectRatio \
     SVGAnimatedRect \
     SVGAnimatedString \
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 5dcbfc2..5dcc468 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -795,6 +795,7 @@ webcore_sources += \
 	WebCore/bindings/js/JSSVGElementInstanceCustom.cpp \
 	WebCore/bindings/js/JSSVGLengthCustom.cpp \
 	WebCore/bindings/js/JSSVGPathSegCustom.cpp \
+	WebCore/bindings/js/JSSVGPathSegListCustom.cpp \
 	WebCore/bindings/js/JSSVGPODListCustom.h \
 	WebCore/bindings/js/JSSVGPODTypeWrapper.h \
 	WebCore/bindings/js/JSTextCustom.cpp \
@@ -3046,7 +3047,6 @@ webcore_sources += \
 	WebCore/svg/LinearGradientAttributes.h \
 	WebCore/svg/PatternAttributes.h \
 	WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h \
-	WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h \
 	WebCore/svg/properties/SVGAnimatedProperty.h \
 	WebCore/svg/properties/SVGAnimatedPropertyDescription.h \
 	WebCore/svg/properties/SVGAnimatedPropertyMacros.h \
@@ -3056,8 +3056,6 @@ webcore_sources += \
 	WebCore/svg/properties/SVGAnimatedTransformListPropertyTearOff.h \
 	WebCore/svg/properties/SVGListProperty.h \
 	WebCore/svg/properties/SVGListPropertyTearOff.h \
-	WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp \
-	WebCore/svg/properties/SVGPathSegListPropertyTearOff.h \
 	WebCore/svg/properties/SVGProperty.h \
 	WebCore/svg/properties/SVGPropertyTearOff.h \
 	WebCore/svg/properties/SVGPropertyTraits.h \
@@ -3082,6 +3080,8 @@ webcore_sources += \
 	WebCore/svg/SVGAnimatedLengthList.h \
 	WebCore/svg/SVGAnimatedNumber.h \
 	WebCore/svg/SVGAnimatedNumberList.h \
+	WebCore/svg/SVGAnimatedPathData.cpp \
+	WebCore/svg/SVGAnimatedPathData.h \
 	WebCore/svg/SVGAnimatedPreserveAspectRatio.h \
 	WebCore/svg/SVGAnimatedRect.h \
 	WebCore/svg/SVGAnimatedString.h \
@@ -3257,15 +3257,25 @@ webcore_sources += \
 	WebCore/svg/SVGPathParserFactory.cpp \
 	WebCore/svg/SVGPathParserFactory.h \
 	WebCore/svg/SVGPathParser.h \
+	WebCore/svg/SVGPathSegArc.cpp \
 	WebCore/svg/SVGPathSegArc.h \
+	WebCore/svg/SVGPathSegClosePath.cpp \
 	WebCore/svg/SVGPathSegClosePath.h \
+	WebCore/svg/SVGPathSeg.cpp \
+	WebCore/svg/SVGPathSegCurvetoCubic.cpp \
 	WebCore/svg/SVGPathSegCurvetoCubic.h \
+	WebCore/svg/SVGPathSegCurvetoCubicSmooth.cpp \
 	WebCore/svg/SVGPathSegCurvetoCubicSmooth.h \
+	WebCore/svg/SVGPathSegCurvetoQuadratic.cpp \
 	WebCore/svg/SVGPathSegCurvetoQuadratic.h \
+	WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.cpp \
 	WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.h \
 	WebCore/svg/SVGPathSeg.h \
+	WebCore/svg/SVGPathSegLineto.cpp \
 	WebCore/svg/SVGPathSegLineto.h \
+	WebCore/svg/SVGPathSegLinetoHorizontal.cpp \
 	WebCore/svg/SVGPathSegLinetoHorizontal.h \
+	WebCore/svg/SVGPathSegLinetoVertical.cpp \
 	WebCore/svg/SVGPathSegLinetoVertical.h \
 	WebCore/svg/SVGPathSegListBuilder.cpp \
 	WebCore/svg/SVGPathSegListBuilder.h \
@@ -3273,8 +3283,8 @@ webcore_sources += \
 	WebCore/svg/SVGPathSegList.h \
 	WebCore/svg/SVGPathSegListSource.cpp \
 	WebCore/svg/SVGPathSegListSource.h \
+	WebCore/svg/SVGPathSegMoveto.cpp \
 	WebCore/svg/SVGPathSegMoveto.h \
-	WebCore/svg/SVGPathSegWithContext.h \
 	WebCore/svg/SVGPathSource.h \
 	WebCore/svg/SVGPathStringBuilder.cpp \
 	WebCore/svg/SVGPathStringBuilder.h \
@@ -4197,6 +4207,7 @@ webcore_built_sources += \
 	DerivedSources/WebCore/JSSVGAnimatedNumber.h \
 	DerivedSources/WebCore/JSSVGAnimatedNumberList.cpp \
 	DerivedSources/WebCore/JSSVGAnimatedNumberList.h \
+	DerivedSources/WebCore/JSSVGAnimatedPathData.h \
 	DerivedSources/WebCore/JSSVGAnimatedPreserveAspectRatio.cpp \
 	DerivedSources/WebCore/JSSVGAnimatedPreserveAspectRatio.h \
 	DerivedSources/WebCore/JSSVGAnimatedRect.cpp \
diff --git a/WebCore/WebCore.gyp/WebCore.gyp b/WebCore/WebCore.gyp/WebCore.gyp
index e8f343a..4792a2a 100644
--- a/WebCore/WebCore.gyp/WebCore.gyp
+++ b/WebCore/WebCore.gyp/WebCore.gyp
@@ -197,8 +197,10 @@
       # Bindings with custom Objective-C implementations.
       '../page/AbstractView.idl',
 
-      # These bindings are excluded, as they're only used through inheritance and don't define constants that would need a constructor.
+      # FIXME: I don't know why all of these are excluded.
+      # Extra SVG bindings to exclude.
       '../svg/ElementTimeControl.idl',
+      '../svg/SVGAnimatedPathData.idl',
       '../svg/SVGExternalResourcesRequired.idl',
       '../svg/SVGFilterPrimitiveStandardAttributes.idl',
       '../svg/SVGFitToViewBox.idl',
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index dbf8fc4..4dfefc0 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -324,6 +324,7 @@
             'svg/SVGAnimatedLengthList.idl',
             'svg/SVGAnimatedNumber.idl',
             'svg/SVGAnimatedNumberList.idl',
+            'svg/SVGAnimatedPathData.idl',
             'svg/SVGAnimatedPreserveAspectRatio.idl',
             'svg/SVGAnimatedRect.idl',
             'svg/SVGAnimatedString.idl',
@@ -3963,7 +3964,6 @@
             'svg/graphics/SVGImage.h',
             'svg/properties/SVGAnimatedPropertySynchronizer.h',
             'svg/properties/SVGAnimatedListPropertyTearOff.h',
-            'svg/properties/SVGAnimatedPathSegListPropertyTearOff.h',
             'svg/properties/SVGAnimatedProperty.h',
             'svg/properties/SVGAnimatedPropertyDescription.h',
             'svg/properties/SVGAnimatedPropertyMacros.h',
@@ -3973,8 +3973,6 @@
             'svg/properties/SVGAnimatedTransformListPropertyTearOff.h',
             'svg/properties/SVGListProperty.h',
             'svg/properties/SVGListPropertyTearOff.h',
-            'svg/properties/SVGPathSegListPropertyTearOff.cpp',
-            'svg/properties/SVGPathSegListPropertyTearOff.h',
             'svg/properties/SVGProperty.h',
             'svg/properties/SVGPropertyTearOff.h',
             'svg/properties/SVGPropertyTraits.h',
@@ -4015,6 +4013,8 @@
             'svg/SVGAnimatedLengthList.h',
             'svg/SVGAnimatedNumber.h',
             'svg/SVGAnimatedNumberList.h',
+            'svg/SVGAnimatedPathData.cpp',
+            'svg/SVGAnimatedPathData.h',
             'svg/SVGAnimatedPreserveAspectRatio.h',
             'svg/SVGAnimatedRect.h',
             'svg/SVGAnimatedString.h',
@@ -4184,15 +4184,25 @@
             'svg/SVGPathParser.h',
             'svg/SVGPathParserFactory.cpp',
             'svg/SVGPathParserFactory.h',
+            'svg/SVGPathSeg.cpp',
             'svg/SVGPathSeg.h',
+            'svg/SVGPathSegArc.cpp',
             'svg/SVGPathSegArc.h',
+            'svg/SVGPathSegClosePath.cpp',
             'svg/SVGPathSegClosePath.h',
+            'svg/SVGPathSegCurvetoCubic.cpp',
             'svg/SVGPathSegCurvetoCubic.h',
+            'svg/SVGPathSegCurvetoCubicSmooth.cpp',
             'svg/SVGPathSegCurvetoCubicSmooth.h',
+            'svg/SVGPathSegCurvetoQuadratic.cpp',
             'svg/SVGPathSegCurvetoQuadratic.h',
+            'svg/SVGPathSegCurvetoQuadraticSmooth.cpp',
             'svg/SVGPathSegCurvetoQuadraticSmooth.h',
+            'svg/SVGPathSegLineto.cpp',
             'svg/SVGPathSegLineto.h',
+            'svg/SVGPathSegLinetoHorizontal.cpp',
             'svg/SVGPathSegLinetoHorizontal.h',
+            'svg/SVGPathSegLinetoVertical.cpp',
             'svg/SVGPathSegLinetoVertical.h',
             'svg/SVGPathSegList.cpp',
             'svg/SVGPathSegList.h',
@@ -4200,8 +4210,8 @@
             'svg/SVGPathSegListBuilder.h',
             'svg/SVGPathSegListSource.cpp',
             'svg/SVGPathSegListSource.h',
+            'svg/SVGPathSegMoveto.cpp',
             'svg/SVGPathSegMoveto.h',
-            'svg/SVGPathSegWithContext.h',
             'svg/SVGPathSource.h',
             'svg/SVGPathStringBuilder.cpp',
             'svg/SVGPathStringBuilder.h',
diff --git a/WebCore/WebCore.order b/WebCore/WebCore.order
index a31461c..76f3275 100644
--- a/WebCore/WebCore.order
+++ b/WebCore/WebCore.order
@@ -18669,6 +18669,7 @@ __ZN7WebCore24RenderSVGHiddenContainerC1EPNS_16SVGStyledElementE
 __ZN7WebCore24RenderSVGHiddenContainerC2EPNS_16SVGStyledElementE
 __ZN7WebCoreL15pathConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
 __ZN7WebCore14SVGPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimatedPathDataC2Ev
 __ZN7WebCore14SVGPathElement20parseMappedAttributeEPNS_15MappedAttributeE
 __ZN7WebCore14SVGPathElement19svgAttributeChangedERKNS_13QualifiedNameE
 __ZNK7WebCore14SVGPathElement7isValidEv
@@ -18912,6 +18913,7 @@ __ZN7WebCore14SVGPathSegListD0Ev
 __ZN7WebCore19SVGPathSegMovetoAbsD0Ev
 __ZN7WebCore19SVGPathSegLinetoAbsD0Ev
 __ZN7WebCore19SVGPathSegClosePathD0Ev
+__ZN7WebCore19SVGAnimatedPathDataD2Ev
 __ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE6shrinkEm
 __ZN7WebCore25SVGPathSegCurvetoCubicAbsD0Ev
 __ZN7WebCore15SVGTSpanElementD0Ev
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 8f6a772..3d0626a 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -2356,7 +2356,6 @@ HEADERS += \
     svg/graphics/filters/SVGFilter.h \
     svg/graphics/SVGImage.h \
     svg/properties/SVGAnimatedListPropertyTearOff.h \
-    svg/properties/SVGAnimatedPathSegListPropertyTearOff.h \
     svg/properties/SVGAnimatedProperty.h \
     svg/properties/SVGAnimatedPropertyDescription.h \
     svg/properties/SVGAnimatedPropertyMacros.h \
@@ -2366,7 +2365,6 @@ HEADERS += \
     svg/properties/SVGAnimatedTransformListPropertyTearOff.h \
     svg/properties/SVGListProperty.h \
     svg/properties/SVGListPropertyTearOff.h \
-    svg/properties/SVGPathSegListPropertyTearOff.h \
     svg/properties/SVGProperty.h \
     svg/properties/SVGPropertyTearOff.h \
     svg/properties/SVGPropertyTraits.h \
@@ -2386,6 +2384,7 @@ HEADERS += \
     svg/SVGAnimatedLengthList.h \
     svg/SVGAnimatedNumber.h \
     svg/SVGAnimatedNumberList.h \
+    svg/SVGAnimatedPathData.h \
     svg/SVGAnimatedPreserveAspectRatio.h \
     svg/SVGAnimatedRect.h \
     svg/SVGAnimatedString.h \
@@ -3393,7 +3392,8 @@ contains(DEFINES, ENABLE_SVG=1) {
     # TODO: this-one-is-not-auto-added! FIXME! tmp/SVGElementFactory.cpp \
             bindings/js/JSSVGElementInstanceCustom.cpp \
             bindings/js/JSSVGLengthCustom.cpp \
-            bindings/js/JSSVGPathSegCustom.cpp
+            bindings/js/JSSVGPathSegCustom.cpp \
+            bindings/js/JSSVGPathSegListCustom.cpp
     }
 
     SOURCES += \
@@ -3428,6 +3428,7 @@ contains(DEFINES, ENABLE_SVG=1) {
         svg/SVGAltGlyphElement.cpp \
         svg/SVGAngle.cpp \
         svg/SVGAnimateColorElement.cpp \
+        svg/SVGAnimatedPathData.cpp \
         svg/SVGAnimateElement.cpp \
         svg/SVGAnimateMotionElement.cpp \
         svg/SVGAnimateTransformElement.cpp \
@@ -3508,9 +3509,20 @@ contains(DEFINES, ENABLE_SVG=1) {
         svg/SVGPathElement.cpp \
         svg/SVGPathParser.cpp \
         svg/SVGPathParserFactory.cpp \
+        svg/SVGPathSeg.cpp \
+        svg/SVGPathSegArc.cpp \
+        svg/SVGPathSegClosePath.cpp \
+        svg/SVGPathSegCurvetoCubic.cpp \
+        svg/SVGPathSegCurvetoCubicSmooth.cpp \
+        svg/SVGPathSegCurvetoQuadratic.cpp \
+        svg/SVGPathSegCurvetoQuadraticSmooth.cpp \
+        svg/SVGPathSegLineto.cpp \
+        svg/SVGPathSegLinetoHorizontal.cpp \
+        svg/SVGPathSegLinetoVertical.cpp \
         svg/SVGPathSegList.cpp \
         svg/SVGPathSegListBuilder.cpp \
         svg/SVGPathSegListSource.cpp \
+        svg/SVGPathSegMoveto.cpp \
         svg/SVGPathStringBuilder.cpp \
         svg/SVGPathStringSource.cpp \
         svg/SVGPathTraversalStateBuilder.cpp \
@@ -3560,7 +3572,6 @@ contains(DEFINES, ENABLE_SVG=1) {
         svg/graphics/filters/SVGFilter.cpp \
         svg/graphics/filters/SVGFilterBuilder.cpp \
         svg/graphics/SVGImage.cpp \
-        svg/properties/SVGPathSegListPropertyTearOff.cpp \
         rendering/RenderForeignObject.cpp \
         rendering/RenderSVGBlock.cpp \
         rendering/RenderSVGContainer.cpp \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index f9a7758..6f85425 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -69795,6 +69795,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\svg\SVGAnimatedPathData.h"
+				>
+			</File>
+			<File
 				RelativePath="..\svg\SVGAnimatedPreserveAspectRatio.h"
 				>
 			</File>
@@ -70894,10 +70898,6 @@
 					>
 				</File>
 				<File
-					RelativePath="..\svg\properties\SVGAnimatedPathSegListPropertyTearOff.h"
-					>
-				</File>
-				<File
 					RelativePath="..\svg\properties\SVGAnimatedProperty.h"
 					>
 				</File>
@@ -70934,14 +70934,6 @@
 					>
 				</File>
 				<File
-					RelativePath="..\svg\properties\SVGPathSegListPropertyTearOff.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\svg\properties\SVGPathSegListPropertyTearOff.h"
-					>
-				</File>
-				<File
 					RelativePath="..\svg\properties\SVGProperty.h"
 					>
 				</File>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 3f7485c..8ac2d7e 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -97,7 +97,6 @@
 		082341C60FCF3A9500D75BD6 /* WMLSelectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 082341C40FCF3A9400D75BD6 /* WMLSelectElement.h */; };
 		0823D159127AD6AC000EBC95 /* SVGAnimatedInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 0823D158127AD6AC000EBC95 /* SVGAnimatedInteger.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		08250939128BD4D800E2ED8E /* SVGAnimatedTransformList.h in Headers */ = {isa = PBXBuildFile; fileRef = 08250938128BD4D800E2ED8E /* SVGAnimatedTransformList.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		082DE42D1292621600D923DF /* SVGPathSegWithContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 082DE42C1292621600D923DF /* SVGPathSegWithContext.h */; };
 		082FCAC4110927CE00CC4821 /* JSSVGContextCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 082FCAC3110927CE00CC4821 /* JSSVGContextCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		083192AA112B43050083C3B9 /* RenderSVGResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 083192A7112B43050083C3B9 /* RenderSVGResource.h */; };
 		083192AB112B43050083C3B9 /* RenderSVGResourceMasker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 083192A8112B43050083C3B9 /* RenderSVGResourceMasker.cpp */; };
@@ -109,7 +108,6 @@
 		083DAEA70F01A7FB00342754 /* RenderTextControlMultiLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 083DAEA30F01A7FB00342754 /* RenderTextControlMultiLine.h */; };
 		083DAEA80F01A7FB00342754 /* RenderTextControlSingleLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 083DAEA40F01A7FB00342754 /* RenderTextControlSingleLine.cpp */; };
 		083DAEA90F01A7FB00342754 /* RenderTextControlSingleLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 083DAEA50F01A7FB00342754 /* RenderTextControlSingleLine.h */; };
-		084A0829128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 084A0828128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h */; };
 		084AEBE40FB505FA0038483E /* SelectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 084AEBE20FB505FA0038483E /* SelectElement.cpp */; };
 		084AEBE50FB505FA0038483E /* SelectElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 084AEBE30FB505FA0038483E /* SelectElement.h */; };
 		084CE5CB0F27DADC00E6240E /* WMLOptGroupElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 084CE5C70F27DADC00E6240E /* WMLOptGroupElement.cpp */; };
@@ -220,7 +218,6 @@
 		0897C14D0ED2EBA500AE06DB /* WMLBRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 0897C14B0ED2EBA400AE06DB /* WMLBRElement.h */; };
 		0897D97A0F007A4600411BB3 /* WMLMetaElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0897D9780F007A4600411BB3 /* WMLMetaElement.cpp */; };
 		0897D97B0F007A4600411BB3 /* WMLMetaElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 0897D9790F007A4600411BB3 /* WMLMetaElement.h */; };
-		089A8E07128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 089A8E06128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h */; };
 		08A484770E5272C500C3FE76 /* ScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08A484750E5272C500C3FE76 /* ScriptElement.cpp */; };
 		08A484780E5272C500C3FE76 /* ScriptElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A484760E5272C500C3FE76 /* ScriptElement.h */; };
 		08A48A6E0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08A48A6D0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp */; };
@@ -268,7 +265,6 @@
 		08F2F0091213E61700DCEC48 /* RenderImageResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08F2F0071213E61700DCEC48 /* RenderImageResource.cpp */; };
 		08F2F00A1213E61700DCEC48 /* RenderImageResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F2F0081213E61700DCEC48 /* RenderImageResource.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		08FE0BC5127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = 08FE0BC4127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		08FF102012950F5A00F00276 /* SVGPathSegListPropertyTearOff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FF101F12950F5900F00276 /* SVGPathSegListPropertyTearOff.cpp */; };
 		0A4844990CA44CB200B7BD48 /* SoftLinking.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A4844980CA44CB200B7BD48 /* SoftLinking.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0AFDAC3D10F5448C00E1F3D2 /* PluginViewBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AFDAC3C10F5448C00E1F3D2 /* PluginViewBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0B8C56D40F28627F000502E1 /* HTTPHeaderMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B8C56D30F28627F000502E1 /* HTTPHeaderMap.cpp */; };
@@ -2162,6 +2158,7 @@
 		85ACAA8E0A9B759C00671E90 /* DOMNodeList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACAA8A0A9B759C00671E90 /* DOMNodeList.mm */; };
 		85ACABB00A9CAF8000671E90 /* DOMDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACABAE0A9CAF8000671E90 /* DOMDocument.h */; settings = {ATTRIBUTES = (); }; };
 		85ACABB10A9CAF8000671E90 /* DOMDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACABAF0A9CAF8000671E90 /* DOMDocument.mm */; };
+		85ACEF0C0ACDCCCF001214FF /* DOMSVGAnimatedPathData.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACEF060ACDCCCF001214FF /* DOMSVGAnimatedPathData.h */; };
 		85ACEF0E0ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACEF080ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.h */; };
 		85ACEF0F0ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85ACEF090ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.mm */; };
 		85ACEF100ACDCCCF001214FF /* DOMSVGPreserveAspectRatio.h in Headers */ = {isa = PBXBuildFile; fileRef = 85ACEF0A0ACDCCCF001214FF /* DOMSVGPreserveAspectRatio.h */; };
@@ -3495,6 +3492,7 @@
 		A8A909AC0CBCD6B50029B807 /* RenderSVGTransformableContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A909AA0CBCD6B50029B807 /* RenderSVGTransformableContainer.h */; };
 		A8A909AD0CBCD6B50029B807 /* RenderSVGTransformableContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A909AB0CBCD6B50029B807 /* RenderSVGTransformableContainer.cpp */; };
 		A8BC04921214F69600B5F122 /* HTMLEntityTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */; };
+		A8BCFD05120A046100B5F122 /* SVGPathSeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8BCFD04120A046100B5F122 /* SVGPathSeg.cpp */; };
 		A8C2280E11D4A59700D5A7D3 /* DocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */; };
 		A8C228A111D5722E00D5A7D3 /* DecodedDataDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */; };
 		A8C228A211D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C228A011D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp */; };
@@ -3717,6 +3715,7 @@
 		A8E545A70CA9D1C20097D09B /* DOMSVGAnimatedStringInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544A90CA9D1C20097D09B /* DOMSVGAnimatedStringInternal.h */; };
 		A8E545A90CA9D1C20097D09B /* DOMSVGAnimatedRectInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544AB0CA9D1C20097D09B /* DOMSVGAnimatedRectInternal.h */; };
 		A8E545AB0CA9D1C20097D09B /* DOMSVGAnimatedPreserveAspectRatioInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544AD0CA9D1C20097D09B /* DOMSVGAnimatedPreserveAspectRatioInternal.h */; };
+		A8E545AE0CA9D1C20097D09B /* DOMSVGAnimatedPathData.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544B00CA9D1C20097D09B /* DOMSVGAnimatedPathData.h */; };
 		A8E545AF0CA9D1C20097D09B /* DOMSVGAnimatedNumberListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544B10CA9D1C20097D09B /* DOMSVGAnimatedNumberListInternal.h */; };
 		A8E545B10CA9D1C20097D09B /* DOMSVGAnimatedNumberInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544B30CA9D1C20097D09B /* DOMSVGAnimatedNumberInternal.h */; };
 		A8E545B30CA9D1C20097D09B /* DOMSVGAnimatedLengthListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E544B50CA9D1C20097D09B /* DOMSVGAnimatedLengthListInternal.h */; };
@@ -3788,6 +3787,7 @@
 		A8F46A890CB20A9D003A9670 /* DOMSVGAnimateColorElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 850361280ACE007B001F3D9E /* DOMSVGAnimateColorElement.h */; };
 		A8F46A8C0CB20A9D003A9670 /* DOMSVGSetElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859D627F0AD888EE00012995 /* DOMSVGSetElement.h */; };
 		A8F46A8E0CB20A9D003A9670 /* DOMSVGCircleElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 8503612A0ACE007B001F3D9E /* DOMSVGCircleElement.h */; };
+		A8F46A900CB20A9D003A9670 /* DOMSVGAnimatedPathData.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85ACEF060ACDCCCF001214FF /* DOMSVGAnimatedPathData.h */; };
 		A8F46A910CB20A9D003A9670 /* DOMSVGViewElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859D62970AD888EF00012995 /* DOMSVGViewElement.h */; };
 		A8F46A920CB20A9D003A9670 /* DOMSVGPathSegLinetoRel.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85CE1A330ADAC473003BBDEA /* DOMSVGPathSegLinetoRel.h */; };
 		A8F46A930CB20A9D003A9670 /* DOMSVGZoomEvent.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 859D629A0AD888EF00012995 /* DOMSVGZoomEvent.h */; };
@@ -3980,6 +3980,8 @@
 		B22279770D00BF220071B782 /* SVGAngle.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277E10D00BF1F0071B782 /* SVGAngle.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		B22279790D00BF220071B782 /* SVGAnimateColorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277E30D00BF1F0071B782 /* SVGAnimateColorElement.cpp */; };
 		B222797A0D00BF220071B782 /* SVGAnimateColorElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277E40D00BF1F0071B782 /* SVGAnimateColorElement.h */; };
+		B22279840D00BF220071B782 /* SVGAnimatedPathData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277EE0D00BF1F0071B782 /* SVGAnimatedPathData.cpp */; };
+		B22279850D00BF220071B782 /* SVGAnimatedPathData.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277EF0D00BF1F0071B782 /* SVGAnimatedPathData.h */; };
 		B222798F0D00BF220071B782 /* SVGAnimateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */; };
 		B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */; };
 		B22279920D00BF220071B782 /* SVGAnimateMotionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277FC0D00BF1F0071B782 /* SVGAnimateMotionElement.cpp */; };
@@ -4116,17 +4118,27 @@
 		B2227A580D00BF220071B782 /* SVGPathElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278C20D00BF200071B782 /* SVGPathElement.cpp */; };
 		B2227A590D00BF220071B782 /* SVGPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C30D00BF200071B782 /* SVGPathElement.h */; };
 		B2227A5B0D00BF220071B782 /* SVGPathSeg.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C50D00BF200071B782 /* SVGPathSeg.h */; };
+		B2227A5D0D00BF220071B782 /* SVGPathSegArc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278C70D00BF200071B782 /* SVGPathSegArc.cpp */; };
 		B2227A5E0D00BF220071B782 /* SVGPathSegArc.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278C80D00BF200071B782 /* SVGPathSegArc.h */; };
+		B2227A610D00BF220071B782 /* SVGPathSegClosePath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278CB0D00BF200071B782 /* SVGPathSegClosePath.cpp */; };
 		B2227A620D00BF220071B782 /* SVGPathSegClosePath.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278CC0D00BF200071B782 /* SVGPathSegClosePath.h */; };
+		B2227A640D00BF220071B782 /* SVGPathSegCurvetoCubic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278CE0D00BF200071B782 /* SVGPathSegCurvetoCubic.cpp */; };
 		B2227A650D00BF220071B782 /* SVGPathSegCurvetoCubic.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278CF0D00BF200071B782 /* SVGPathSegCurvetoCubic.h */; };
+		B2227A680D00BF220071B782 /* SVGPathSegCurvetoCubicSmooth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278D20D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.cpp */; };
 		B2227A690D00BF220071B782 /* SVGPathSegCurvetoCubicSmooth.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278D30D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.h */; };
+		B2227A6C0D00BF220071B782 /* SVGPathSegCurvetoQuadratic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278D60D00BF200071B782 /* SVGPathSegCurvetoQuadratic.cpp */; };
 		B2227A6D0D00BF220071B782 /* SVGPathSegCurvetoQuadratic.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278D70D00BF200071B782 /* SVGPathSegCurvetoQuadratic.h */; };
+		B2227A700D00BF220071B782 /* SVGPathSegCurvetoQuadraticSmooth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278DA0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmooth.cpp */; };
 		B2227A710D00BF220071B782 /* SVGPathSegCurvetoQuadraticSmooth.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278DB0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmooth.h */; };
+		B2227A740D00BF220071B782 /* SVGPathSegLineto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278DE0D00BF200071B782 /* SVGPathSegLineto.cpp */; };
 		B2227A750D00BF220071B782 /* SVGPathSegLineto.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278DF0D00BF200071B782 /* SVGPathSegLineto.h */; };
+		B2227A770D00BF220071B782 /* SVGPathSegLinetoHorizontal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278E10D00BF200071B782 /* SVGPathSegLinetoHorizontal.cpp */; };
 		B2227A780D00BF220071B782 /* SVGPathSegLinetoHorizontal.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278E20D00BF200071B782 /* SVGPathSegLinetoHorizontal.h */; };
+		B2227A7C0D00BF220071B782 /* SVGPathSegLinetoVertical.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278E60D00BF200071B782 /* SVGPathSegLinetoVertical.cpp */; };
 		B2227A7D0D00BF220071B782 /* SVGPathSegLinetoVertical.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278E70D00BF200071B782 /* SVGPathSegLinetoVertical.h */; };
 		B2227A800D00BF220071B782 /* SVGPathSegList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278EA0D00BF200071B782 /* SVGPathSegList.cpp */; };
 		B2227A810D00BF220071B782 /* SVGPathSegList.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278EB0D00BF200071B782 /* SVGPathSegList.h */; };
+		B2227A830D00BF220071B782 /* SVGPathSegMoveto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278ED0D00BF210071B782 /* SVGPathSegMoveto.cpp */; };
 		B2227A840D00BF220071B782 /* SVGPathSegMoveto.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278EE0D00BF210071B782 /* SVGPathSegMoveto.h */; };
 		B2227A870D00BF220071B782 /* SVGPatternElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22278F10D00BF210071B782 /* SVGPatternElement.cpp */; };
 		B2227A880D00BF220071B782 /* SVGPatternElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22278F20D00BF210071B782 /* SVGPatternElement.h */; };
@@ -4293,6 +4305,7 @@
 		B28C6A280D00C44800334AA4 /* SVGDocumentExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = B28C6A1F0D00C44800334AA4 /* SVGDocumentExtensions.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		B28C6A290D00C44800334AA4 /* SVGImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B28C6A200D00C44800334AA4 /* SVGImageLoader.cpp */; };
 		B28C6A2A0D00C44800334AA4 /* SVGImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B28C6A210D00C44800334AA4 /* SVGImageLoader.h */; };
+		B297BC700B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B297BC6F0B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp */; };
 		B2A015A80AF6CD53006BCE0E /* GraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */; };
 		B2A015A90AF6CD53006BCE0E /* GraphicsContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A015930AF6CD53006BCE0E /* GraphicsContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		B2A015AA0AF6CD53006BCE0E /* GraphicsTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A015940AF6CD53006BCE0E /* GraphicsTypes.cpp */; };
@@ -5804,6 +5817,7 @@
 				A80F3B8B0CCDCE24002DD990 /* DOMSVGAnimatedNumberInternal.h in Copy Generated Headers */,
 				A8F46AAF0CB20A9D003A9670 /* DOMSVGAnimatedNumberList.h in Copy Generated Headers */,
 				A80F3B700CCDCE24002DD990 /* DOMSVGAnimatedNumberListInternal.h in Copy Generated Headers */,
+				A8F46A900CB20A9D003A9670 /* DOMSVGAnimatedPathData.h in Copy Generated Headers */,
 				A8F46B2E0CB20A9D003A9670 /* DOMSVGAnimatedPreserveAspectRatio.h in Copy Generated Headers */,
 				A80F3B7E0CCDCE24002DD990 /* DOMSVGAnimatedPreserveAspectRatioInternal.h in Copy Generated Headers */,
 				A8F46B1B0CB20A9D003A9670 /* DOMSVGAnimatedRect.h in Copy Generated Headers */,
@@ -6130,7 +6144,6 @@
 		082341C40FCF3A9400D75BD6 /* WMLSelectElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLSelectElement.h; sourceTree = "<group>"; };
 		0823D158127AD6AC000EBC95 /* SVGAnimatedInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedInteger.h; sourceTree = "<group>"; };
 		08250938128BD4D800E2ED8E /* SVGAnimatedTransformList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedTransformList.h; sourceTree = "<group>"; };
-		082DE42C1292621600D923DF /* SVGPathSegWithContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegWithContext.h; sourceTree = "<group>"; };
 		082FCAC3110927CE00CC4821 /* JSSVGContextCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGContextCache.h; sourceTree = "<group>"; };
 		083192A7112B43050083C3B9 /* RenderSVGResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResource.h; sourceTree = "<group>"; };
 		083192A8112B43050083C3B9 /* RenderSVGResourceMasker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceMasker.cpp; sourceTree = "<group>"; };
@@ -6140,7 +6153,6 @@
 		083DAEA30F01A7FB00342754 /* RenderTextControlMultiLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextControlMultiLine.h; sourceTree = "<group>"; };
 		083DAEA40F01A7FB00342754 /* RenderTextControlSingleLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextControlSingleLine.cpp; sourceTree = "<group>"; };
 		083DAEA50F01A7FB00342754 /* RenderTextControlSingleLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextControlSingleLine.h; sourceTree = "<group>"; };
-		084A0828128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegListPropertyTearOff.h; sourceTree = "<group>"; };
 		084AEBE20FB505FA0038483E /* SelectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectElement.cpp; sourceTree = "<group>"; };
 		084AEBE30FB505FA0038483E /* SelectElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectElement.h; sourceTree = "<group>"; };
 		084CE5C70F27DADC00E6240E /* WMLOptGroupElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLOptGroupElement.cpp; sourceTree = "<group>"; };
@@ -6239,7 +6251,6 @@
 		0897C14B0ED2EBA400AE06DB /* WMLBRElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLBRElement.h; sourceTree = "<group>"; };
 		0897D9780F007A4600411BB3 /* WMLMetaElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLMetaElement.cpp; sourceTree = "<group>"; };
 		0897D9790F007A4600411BB3 /* WMLMetaElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLMetaElement.h; sourceTree = "<group>"; };
-		089A8E06128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPathSegListPropertyTearOff.h; sourceTree = "<group>"; };
 		08A484750E5272C500C3FE76 /* ScriptElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptElement.cpp; sourceTree = "<group>"; };
 		08A484760E5272C500C3FE76 /* ScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptElement.h; sourceTree = "<group>"; };
 		08A48A6D0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGElementInstanceCustom.cpp; sourceTree = "<group>"; };
@@ -6288,7 +6299,6 @@
 		08FB84B00ECE373300DC064E /* WMLElementFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLElementFactory.cpp; sourceTree = "<group>"; };
 		08FB84B10ECE373300DC064E /* WMLElementFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLElementFactory.h; sourceTree = "<group>"; };
 		08FE0BC4127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPreserveAspectRatio.h; sourceTree = "<group>"; };
-		08FF101F12950F5900F00276 /* SVGPathSegListPropertyTearOff.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegListPropertyTearOff.cpp; sourceTree = "<group>"; };
 		0A4844980CA44CB200B7BD48 /* SoftLinking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoftLinking.h; sourceTree = "<group>"; };
 		0AFDAC3C10F5448C00E1F3D2 /* PluginViewBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginViewBase.h; sourceTree = "<group>"; };
 		0B8C56D30F28627F000502E1 /* HTTPHeaderMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTTPHeaderMap.cpp; sourceTree = "<group>"; };
@@ -8305,6 +8315,7 @@
 		85ACAA8A0A9B759C00671E90 /* DOMNodeList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNodeList.mm; sourceTree = "<group>"; };
 		85ACABAE0A9CAF8000671E90 /* DOMDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMDocument.h; sourceTree = "<group>"; };
 		85ACABAF0A9CAF8000671E90 /* DOMDocument.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMDocument.mm; sourceTree = "<group>"; };
+		85ACEF060ACDCCCF001214FF /* DOMSVGAnimatedPathData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedPathData.h; sourceTree = "<group>"; };
 		85ACEF080ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedPreserveAspectRatio.h; sourceTree = "<group>"; };
 		85ACEF090ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGAnimatedPreserveAspectRatio.mm; sourceTree = "<group>"; };
 		85ACEF0A0ACDCCCF001214FF /* DOMSVGPreserveAspectRatio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGPreserveAspectRatio.h; sourceTree = "<group>"; };
@@ -9459,6 +9470,7 @@
 		A8A909AA0CBCD6B50029B807 /* RenderSVGTransformableContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGTransformableContainer.h; sourceTree = "<group>"; };
 		A8A909AB0CBCD6B50029B807 /* RenderSVGTransformableContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGTransformableContainer.cpp; sourceTree = "<group>"; };
 		A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLEntityTable.cpp; sourceTree = "<group>"; };
+		A8BCFD04120A046100B5F122 /* SVGPathSeg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSeg.cpp; sourceTree = "<group>"; };
 		A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentParser.cpp; sourceTree = "<group>"; };
 		A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecodedDataDocumentParser.h; sourceTree = "<group>"; };
 		A8C228A011D5722E00D5A7D3 /* DecodedDataDocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecodedDataDocumentParser.cpp; sourceTree = "<group>"; };
@@ -9674,6 +9686,7 @@
 		A8E544A90CA9D1C20097D09B /* DOMSVGAnimatedStringInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedStringInternal.h; sourceTree = "<group>"; };
 		A8E544AB0CA9D1C20097D09B /* DOMSVGAnimatedRectInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedRectInternal.h; sourceTree = "<group>"; };
 		A8E544AD0CA9D1C20097D09B /* DOMSVGAnimatedPreserveAspectRatioInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedPreserveAspectRatioInternal.h; sourceTree = "<group>"; };
+		A8E544B00CA9D1C20097D09B /* DOMSVGAnimatedPathData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedPathData.h; sourceTree = "<group>"; };
 		A8E544B10CA9D1C20097D09B /* DOMSVGAnimatedNumberListInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedNumberListInternal.h; sourceTree = "<group>"; };
 		A8E544B30CA9D1C20097D09B /* DOMSVGAnimatedNumberInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedNumberInternal.h; sourceTree = "<group>"; };
 		A8E544B50CA9D1C20097D09B /* DOMSVGAnimatedLengthListInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAnimatedLengthListInternal.h; sourceTree = "<group>"; };
@@ -9836,6 +9849,9 @@
 		B22277EB0D00BF1F0071B782 /* SVGAnimatedLengthList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedLengthList.idl; sourceTree = "<group>"; };
 		B22277EC0D00BF1F0071B782 /* SVGAnimatedNumber.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedNumber.idl; sourceTree = "<group>"; };
 		B22277ED0D00BF1F0071B782 /* SVGAnimatedNumberList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedNumberList.idl; sourceTree = "<group>"; };
+		B22277EE0D00BF1F0071B782 /* SVGAnimatedPathData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedPathData.cpp; sourceTree = "<group>"; };
+		B22277EF0D00BF1F0071B782 /* SVGAnimatedPathData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPathData.h; sourceTree = "<group>"; };
+		B22277F00D00BF1F0071B782 /* SVGAnimatedPathData.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedPathData.idl; sourceTree = "<group>"; };
 		B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedPreserveAspectRatio.idl; sourceTree = "<group>"; };
 		B22277F50D00BF1F0071B782 /* SVGAnimatedRect.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedRect.idl; sourceTree = "<group>"; };
 		B22277F60D00BF1F0071B782 /* SVGAnimatedString.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedString.idl; sourceTree = "<group>"; };
@@ -10043,35 +10059,45 @@
 		B22278C40D00BF200071B782 /* SVGPathElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathElement.idl; sourceTree = "<group>"; };
 		B22278C50D00BF200071B782 /* SVGPathSeg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSeg.h; sourceTree = "<group>"; };
 		B22278C60D00BF200071B782 /* SVGPathSeg.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSeg.idl; sourceTree = "<group>"; };
+		B22278C70D00BF200071B782 /* SVGPathSegArc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegArc.cpp; sourceTree = "<group>"; };
 		B22278C80D00BF200071B782 /* SVGPathSegArc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegArc.h; sourceTree = "<group>"; };
 		B22278C90D00BF200071B782 /* SVGPathSegArcAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegArcAbs.idl; sourceTree = "<group>"; };
 		B22278CA0D00BF200071B782 /* SVGPathSegArcRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegArcRel.idl; sourceTree = "<group>"; };
+		B22278CB0D00BF200071B782 /* SVGPathSegClosePath.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegClosePath.cpp; sourceTree = "<group>"; };
 		B22278CC0D00BF200071B782 /* SVGPathSegClosePath.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegClosePath.h; sourceTree = "<group>"; };
 		B22278CD0D00BF200071B782 /* SVGPathSegClosePath.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegClosePath.idl; sourceTree = "<group>"; };
+		B22278CE0D00BF200071B782 /* SVGPathSegCurvetoCubic.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegCurvetoCubic.cpp; sourceTree = "<group>"; };
 		B22278CF0D00BF200071B782 /* SVGPathSegCurvetoCubic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubic.h; sourceTree = "<group>"; };
 		B22278D00D00BF200071B782 /* SVGPathSegCurvetoCubicAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicAbs.idl; sourceTree = "<group>"; };
 		B22278D10D00BF200071B782 /* SVGPathSegCurvetoCubicRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicRel.idl; sourceTree = "<group>"; };
+		B22278D20D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegCurvetoCubicSmooth.cpp; sourceTree = "<group>"; };
 		B22278D30D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoCubicSmooth.h; sourceTree = "<group>"; };
 		B22278D40D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicSmoothAbs.idl; sourceTree = "<group>"; };
 		B22278D50D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoCubicSmoothRel.idl; sourceTree = "<group>"; };
+		B22278D60D00BF200071B782 /* SVGPathSegCurvetoQuadratic.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegCurvetoQuadratic.cpp; sourceTree = "<group>"; };
 		B22278D70D00BF200071B782 /* SVGPathSegCurvetoQuadratic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadratic.h; sourceTree = "<group>"; };
 		B22278D80D00BF200071B782 /* SVGPathSegCurvetoQuadraticAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticAbs.idl; sourceTree = "<group>"; };
 		B22278D90D00BF200071B782 /* SVGPathSegCurvetoQuadraticRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticRel.idl; sourceTree = "<group>"; };
+		B22278DA0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmooth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegCurvetoQuadraticSmooth.cpp; sourceTree = "<group>"; };
 		B22278DB0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmooth.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegCurvetoQuadraticSmooth.h; sourceTree = "<group>"; };
 		B22278DC0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticSmoothAbs.idl; sourceTree = "<group>"; };
 		B22278DD0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegCurvetoQuadraticSmoothRel.idl; sourceTree = "<group>"; };
+		B22278DE0D00BF200071B782 /* SVGPathSegLineto.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegLineto.cpp; sourceTree = "<group>"; };
 		B22278DF0D00BF200071B782 /* SVGPathSegLineto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLineto.h; sourceTree = "<group>"; };
 		B22278E00D00BF200071B782 /* SVGPathSegLinetoAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoAbs.idl; sourceTree = "<group>"; };
+		B22278E10D00BF200071B782 /* SVGPathSegLinetoHorizontal.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegLinetoHorizontal.cpp; sourceTree = "<group>"; };
 		B22278E20D00BF200071B782 /* SVGPathSegLinetoHorizontal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoHorizontal.h; sourceTree = "<group>"; };
 		B22278E30D00BF200071B782 /* SVGPathSegLinetoHorizontalAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoHorizontalAbs.idl; sourceTree = "<group>"; };
 		B22278E40D00BF200071B782 /* SVGPathSegLinetoHorizontalRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoHorizontalRel.idl; sourceTree = "<group>"; };
 		B22278E50D00BF200071B782 /* SVGPathSegLinetoRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoRel.idl; sourceTree = "<group>"; };
+		B22278E60D00BF200071B782 /* SVGPathSegLinetoVertical.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegLinetoVertical.cpp; sourceTree = "<group>"; };
 		B22278E70D00BF200071B782 /* SVGPathSegLinetoVertical.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegLinetoVertical.h; sourceTree = "<group>"; };
 		B22278E80D00BF200071B782 /* SVGPathSegLinetoVerticalAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoVerticalAbs.idl; sourceTree = "<group>"; };
 		B22278E90D00BF200071B782 /* SVGPathSegLinetoVerticalRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegLinetoVerticalRel.idl; sourceTree = "<group>"; };
 		B22278EA0D00BF200071B782 /* SVGPathSegList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegList.cpp; sourceTree = "<group>"; };
 		B22278EB0D00BF200071B782 /* SVGPathSegList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegList.h; sourceTree = "<group>"; };
 		B22278EC0D00BF210071B782 /* SVGPathSegList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegList.idl; sourceTree = "<group>"; };
+		B22278ED0D00BF210071B782 /* SVGPathSegMoveto.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSegMoveto.cpp; sourceTree = "<group>"; };
 		B22278EE0D00BF210071B782 /* SVGPathSegMoveto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGPathSegMoveto.h; sourceTree = "<group>"; };
 		B22278EF0D00BF210071B782 /* SVGPathSegMovetoAbs.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegMovetoAbs.idl; sourceTree = "<group>"; };
 		B22278F00D00BF210071B782 /* SVGPathSegMovetoRel.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGPathSegMovetoRel.idl; sourceTree = "<group>"; };
@@ -10277,6 +10303,7 @@
 		B28C6A200D00C44800334AA4 /* SVGImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImageLoader.cpp; sourceTree = "<group>"; };
 		B28C6A210D00C44800334AA4 /* SVGImageLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGImageLoader.h; sourceTree = "<group>"; };
 		B28C6A260D00C44800334AA4 /* xlinkattrs.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = xlinkattrs.in; sourceTree = "<group>"; };
+		B297BC6F0B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegListCustom.cpp; sourceTree = "<group>"; };
 		B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext.cpp; sourceTree = "<group>"; };
 		B2A015930AF6CD53006BCE0E /* GraphicsContext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GraphicsContext.h; sourceTree = "<group>"; };
 		B2A015940AF6CD53006BCE0E /* GraphicsTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsTypes.cpp; sourceTree = "<group>"; };
@@ -11764,7 +11791,6 @@
 			isa = PBXGroup;
 			children = (
 				088A0DFB126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h */,
-				089A8E06128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h */,
 				088A0DFC126EF1DB00978F7A /* SVGAnimatedProperty.h */,
 				088A0DFD126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h */,
 				088A0DFE126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h */,
@@ -11774,8 +11800,6 @@
 				085A15921289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h */,
 				0810764312828556007C63BA /* SVGListProperty.h */,
 				088A0E00126EF1DB00978F7A /* SVGListPropertyTearOff.h */,
-				08FF101F12950F5900F00276 /* SVGPathSegListPropertyTearOff.cpp */,
-				084A0828128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h */,
 				088A0E01126EF1DB00978F7A /* SVGProperty.h */,
 				088A0E02126EF1DB00978F7A /* SVGPropertyTearOff.h */,
 				088A0E03126EF1DB00978F7A /* SVGPropertyTraits.h */,
@@ -13542,6 +13566,8 @@
 				8502AB6C0AD438E600378540 /* DOMSVGAnimatedNumberList.h */,
 				8502AB6D0AD438E600378540 /* DOMSVGAnimatedNumberList.mm */,
 				A8E544B10CA9D1C20097D09B /* DOMSVGAnimatedNumberListInternal.h */,
+				A8E544B00CA9D1C20097D09B /* DOMSVGAnimatedPathData.h */,
+				85ACEF060ACDCCCF001214FF /* DOMSVGAnimatedPathData.h */,
 				85ACEF080ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.h */,
 				85ACEF090ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.mm */,
 				A8E544AD0CA9D1C20097D09B /* DOMSVGAnimatedPreserveAspectRatioInternal.h */,
@@ -16094,6 +16120,9 @@
 				B22277EC0D00BF1F0071B782 /* SVGAnimatedNumber.idl */,
 				08B35B16127B6A88005314DD /* SVGAnimatedNumberList.h */,
 				B22277ED0D00BF1F0071B782 /* SVGAnimatedNumberList.idl */,
+				B22277EE0D00BF1F0071B782 /* SVGAnimatedPathData.cpp */,
+				B22277EF0D00BF1F0071B782 /* SVGAnimatedPathData.h */,
+				B22277F00D00BF1F0071B782 /* SVGAnimatedPathData.idl */,
 				08FE0BC4127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h */,
 				B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */,
 				08C859BF1274575300A5728D /* SVGAnimatedRect.h */,
@@ -16345,31 +16374,41 @@
 				8476C9EE11DF6A5800555B02 /* SVGPathParser.h */,
 				84300BD1120C9A710021954A /* SVGPathParserFactory.cpp */,
 				84300BD2120C9A710021954A /* SVGPathParserFactory.h */,
+				A8BCFD04120A046100B5F122 /* SVGPathSeg.cpp */,
 				B22278C50D00BF200071B782 /* SVGPathSeg.h */,
 				B22278C60D00BF200071B782 /* SVGPathSeg.idl */,
+				B22278C70D00BF200071B782 /* SVGPathSegArc.cpp */,
 				B22278C80D00BF200071B782 /* SVGPathSegArc.h */,
 				B22278C90D00BF200071B782 /* SVGPathSegArcAbs.idl */,
 				B22278CA0D00BF200071B782 /* SVGPathSegArcRel.idl */,
+				B22278CB0D00BF200071B782 /* SVGPathSegClosePath.cpp */,
 				B22278CC0D00BF200071B782 /* SVGPathSegClosePath.h */,
 				B22278CD0D00BF200071B782 /* SVGPathSegClosePath.idl */,
+				B22278CE0D00BF200071B782 /* SVGPathSegCurvetoCubic.cpp */,
 				B22278CF0D00BF200071B782 /* SVGPathSegCurvetoCubic.h */,
 				B22278D00D00BF200071B782 /* SVGPathSegCurvetoCubicAbs.idl */,
 				B22278D10D00BF200071B782 /* SVGPathSegCurvetoCubicRel.idl */,
+				B22278D20D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.cpp */,
 				B22278D30D00BF200071B782 /* SVGPathSegCurvetoCubicSmooth.h */,
 				B22278D40D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothAbs.idl */,
 				B22278D50D00BF200071B782 /* SVGPathSegCurvetoCubicSmoothRel.idl */,
+				B22278D60D00BF200071B782 /* SVGPathSegCurvetoQuadratic.cpp */,
 				B22278D70D00BF200071B782 /* SVGPathSegCurvetoQuadratic.h */,
 				B22278D80D00BF200071B782 /* SVGPathSegCurvetoQuadraticAbs.idl */,
 				B22278D90D00BF200071B782 /* SVGPathSegCurvetoQuadraticRel.idl */,
+				B22278DA0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmooth.cpp */,
 				B22278DB0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmooth.h */,
 				B22278DC0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothAbs.idl */,
 				B22278DD0D00BF200071B782 /* SVGPathSegCurvetoQuadraticSmoothRel.idl */,
+				B22278DE0D00BF200071B782 /* SVGPathSegLineto.cpp */,
 				B22278DF0D00BF200071B782 /* SVGPathSegLineto.h */,
 				B22278E00D00BF200071B782 /* SVGPathSegLinetoAbs.idl */,
+				B22278E10D00BF200071B782 /* SVGPathSegLinetoHorizontal.cpp */,
 				B22278E20D00BF200071B782 /* SVGPathSegLinetoHorizontal.h */,
 				B22278E30D00BF200071B782 /* SVGPathSegLinetoHorizontalAbs.idl */,
 				B22278E40D00BF200071B782 /* SVGPathSegLinetoHorizontalRel.idl */,
 				B22278E50D00BF200071B782 /* SVGPathSegLinetoRel.idl */,
+				B22278E60D00BF200071B782 /* SVGPathSegLinetoVertical.cpp */,
 				B22278E70D00BF200071B782 /* SVGPathSegLinetoVertical.h */,
 				B22278E80D00BF200071B782 /* SVGPathSegLinetoVerticalAbs.idl */,
 				B22278E90D00BF200071B782 /* SVGPathSegLinetoVerticalRel.idl */,
@@ -16380,10 +16419,10 @@
 				8476C9E411DF6A0B00555B02 /* SVGPathSegListBuilder.h */,
 				84B6B975120F13E500B8EFAF /* SVGPathSegListSource.cpp */,
 				84B6B976120F13E500B8EFAF /* SVGPathSegListSource.h */,
+				B22278ED0D00BF210071B782 /* SVGPathSegMoveto.cpp */,
 				B22278EE0D00BF210071B782 /* SVGPathSegMoveto.h */,
 				B22278EF0D00BF210071B782 /* SVGPathSegMovetoAbs.idl */,
 				B22278F00D00BF210071B782 /* SVGPathSegMovetoRel.idl */,
-				082DE42C1292621600D923DF /* SVGPathSegWithContext.h */,
 				84300BD7120C9AD40021954A /* SVGPathSource.h */,
 				8419D2B7120E0C7600141F8F /* SVGPathStringBuilder.cpp */,
 				8419D2B8120E0C7600141F8F /* SVGPathStringBuilder.h */,
@@ -17095,6 +17134,7 @@
 				08A48A6D0E86CF6D00E225DD /* JSSVGElementInstanceCustom.cpp */,
 				08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */,
 				B2C96D8C0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp */,
+				B297BC6F0B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp */,
 				087D97BE10FB8D7700C00874 /* JSSVGPODListCustom.h */,
 				1A2C40AA0DEB55AA005AF19E /* JSTextCustom.cpp */,
 				516BB7920CE91E6800512F79 /* JSTreeWalkerCustom.cpp */,
@@ -19041,6 +19081,8 @@
 				8502AB720AD438E600378540 /* DOMSVGAnimatedNumberList.h in Headers */,
 				8502ABA70AD4396900378540 /* DOMSVGAnimatedNumberListInternal.h in Headers */,
 				A8E545AF0CA9D1C20097D09B /* DOMSVGAnimatedNumberListInternal.h in Headers */,
+				85ACEF0C0ACDCCCF001214FF /* DOMSVGAnimatedPathData.h in Headers */,
+				A8E545AE0CA9D1C20097D09B /* DOMSVGAnimatedPathData.h in Headers */,
 				85ACEF0E0ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.h in Headers */,
 				85ACEF180ACDCD1A001214FF /* DOMSVGAnimatedPreserveAspectRatioInternal.h in Headers */,
 				A8E545AB0CA9D1C20097D09B /* DOMSVGAnimatedPreserveAspectRatioInternal.h in Headers */,
@@ -19650,7 +19692,6 @@
 				A88FE3340E5EEE87008D8C0F /* GraphicsContextPrivate.h in Headers */,
 				0F580B0D0F12A2690051D689 /* GraphicsLayer.h in Headers */,
 				0F580B0E0F12A2690051D689 /* GraphicsLayerClient.h in Headers */,
-				499B3C59128C641E00E726C2 /* GraphicsLayerMac.h in Headers */,
 				B2A015AB0AF6CD53006BCE0E /* GraphicsTypes.h in Headers */,
 				C50B561712119D23008B46E0 /* GroupSettings.h in Headers */,
 				7693BAD2106C2DCA007B0823 /* HaltablePlugin.h in Headers */,
@@ -19848,7 +19889,6 @@
 				F33F053E120B0DA500E5743A /* InspectorDebuggerAgent.h in Headers */,
 				7A24587C1021EAF4000A00AA /* InspectorDOMAgent.h in Headers */,
 				41F061740F5F00AC00A07EAC /* InspectorDOMStorageResource.h in Headers */,
-				3888F6EF128C9889000CA8E0 /* InspectorFileSystemAgent.h in Headers */,
 				F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */,
 				F344C75311294D9D00F26EEE /* InspectorFrontendClientLocal.h in Headers */,
 				7A0E770F10C00A8800A0276E /* InspectorFrontendHost.h in Headers */,
@@ -20863,7 +20903,7 @@
 				088A0E04126EF1DB00978F7A /* SVGAnimatedListPropertyTearOff.h in Headers */,
 				08B35B13127B6A7C005314DD /* SVGAnimatedNumber.h in Headers */,
 				08B35B17127B6A88005314DD /* SVGAnimatedNumberList.h in Headers */,
-				089A8E07128D8B3D00E7A534 /* SVGAnimatedPathSegListPropertyTearOff.h in Headers */,
+				B22279850D00BF220071B782 /* SVGAnimatedPathData.h in Headers */,
 				08FE0BC5127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h in Headers */,
 				088A0E05126EF1DB00978F7A /* SVGAnimatedProperty.h in Headers */,
 				088A0E06126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h in Headers */,
@@ -20873,7 +20913,6 @@
 				08C859C01274575400A5728D /* SVGAnimatedRect.h in Headers */,
 				08525E631278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h in Headers */,
 				084DB59B128008CC002A6D64 /* SVGAnimatedString.h in Headers */,
-				08250939128BD4D800E2ED8E /* SVGAnimatedTransformList.h in Headers */,
 				085A15931289A8DD002710E3 /* SVGAnimatedTransformListPropertyTearOff.h in Headers */,
 				B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */,
 				B22279930D00BF220071B782 /* SVGAnimateMotionElement.h in Headers */,
@@ -20988,10 +21027,8 @@
 				B2227A7D0D00BF220071B782 /* SVGPathSegLinetoVertical.h in Headers */,
 				B2227A810D00BF220071B782 /* SVGPathSegList.h in Headers */,
 				8476C9E611DF6A0B00555B02 /* SVGPathSegListBuilder.h in Headers */,
-				084A0829128D7867002DB1F1 /* SVGPathSegListPropertyTearOff.h in Headers */,
 				84B6B978120F13E500B8EFAF /* SVGPathSegListSource.h in Headers */,
 				B2227A840D00BF220071B782 /* SVGPathSegMoveto.h in Headers */,
-				082DE42D1292621600D923DF /* SVGPathSegWithContext.h in Headers */,
 				84300BD8120C9AD40021954A /* SVGPathSource.h in Headers */,
 				8419D2BA120E0C7600141F8F /* SVGPathStringBuilder.h in Headers */,
 				84300BD6120C9AAC0021954A /* SVGPathStringSource.h in Headers */,
@@ -21298,6 +21335,9 @@
 				93F199ED08245E59001E9ABC /* XSLTProcessor.h in Headers */,
 				E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */,
 				97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
+				499B3C59128C641E00E726C2 /* GraphicsLayerMac.h in Headers */,
+				08250939128BD4D800E2ED8E /* SVGAnimatedTransformList.h in Headers */,
+				3888F6EF128C9889000CA8E0 /* InspectorFileSystemAgent.h in Headers */,
 				BCB92D4F1293550B00C8387F /* FontBaseline.h in Headers */,
 				BCA257151293C010007A263D /* VerticalPositionCache.h in Headers */,
 				BCAE1FA712939DB7004CB026 /* ScrollAnimatorMac.h in Headers */,
@@ -22283,7 +22323,6 @@
 				B2ED97710B1F55CE00257D0F /* GraphicsContextCG.cpp in Sources */,
 				B277B4040B22F37C0004BEC6 /* GraphicsContextMac.mm in Sources */,
 				0F580B0C0F12A2690051D689 /* GraphicsLayer.cpp in Sources */,
-				499B3C5A128C641E00E726C2 /* GraphicsLayerMac.mm in Sources */,
 				B2A015AA0AF6CD53006BCE0E /* GraphicsTypes.cpp in Sources */,
 				C50B561612119D23008B46E0 /* GroupSettings.cpp in Sources */,
 				F55B3DBF1251F12D003EF269 /* HiddenInputType.cpp in Sources */,
@@ -22465,7 +22504,6 @@
 				F33F053D120B0DA500E5743A /* InspectorDebuggerAgent.cpp in Sources */,
 				7A24587B1021EAF4000A00AA /* InspectorDOMAgent.cpp in Sources */,
 				41F061750F5F00AC00A07EAC /* InspectorDOMStorageResource.cpp in Sources */,
-				3888F6EE128C9889000CA8E0 /* InspectorFileSystemAgent.cpp in Sources */,
 				4F4F5FFB11CBD2E100A186BF /* InspectorFrontend.cpp in Sources */,
 				F344C75811294FF600F26EEE /* InspectorFrontendClientLocal.cpp in Sources */,
 				7A0E770E10C00A8800A0276E /* InspectorFrontendHost.cpp in Sources */,
@@ -22961,6 +22999,7 @@
 				B2FA3DD60AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalAbs.cpp in Sources */,
 				B2FA3DD80AB75A6F000E5AC4 /* JSSVGPathSegLinetoVerticalRel.cpp in Sources */,
 				B2FA3DDA0AB75A6F000E5AC4 /* JSSVGPathSegList.cpp in Sources */,
+				B297BC700B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp in Sources */,
 				B2FA3DDC0AB75A6F000E5AC4 /* JSSVGPathSegMovetoAbs.cpp in Sources */,
 				B2FA3DDE0AB75A6F000E5AC4 /* JSSVGPathSegMovetoRel.cpp in Sources */,
 				B2FA3DE00AB75A6F000E5AC4 /* JSSVGPatternElement.cpp in Sources */,
@@ -23498,6 +23537,7 @@
 				65653F2D0D9727D200CA9723 /* SVGAltGlyphElement.cpp in Sources */,
 				B22279760D00BF220071B782 /* SVGAngle.cpp in Sources */,
 				B22279790D00BF220071B782 /* SVGAnimateColorElement.cpp in Sources */,
+				B22279840D00BF220071B782 /* SVGAnimatedPathData.cpp in Sources */,
 				B222798F0D00BF220071B782 /* SVGAnimateElement.cpp in Sources */,
 				B22279920D00BF220071B782 /* SVGAnimateMotionElement.cpp in Sources */,
 				B22279940D00BF220071B782 /* SVGAnimateTransformElement.cpp in Sources */,
@@ -23593,9 +23633,20 @@
 				B2227A580D00BF220071B782 /* SVGPathElement.cpp in Sources */,
 				8476C9EF11DF6A5800555B02 /* SVGPathParser.cpp in Sources */,
 				84300BD3120C9A710021954A /* SVGPathParserFactory.cpp in Sources */,
+				A8BCFD05120A046100B5F122 /* SVGPathSeg.cpp in Sources */,
+				B2227A5D0D00BF220071B782 /* SVGPathSegArc.cpp in Sources */,
+				B2227A610D00BF220071B782 /* SVGPathSegClosePath.cpp in Sources */,
+				B2227A640D00BF220071B782 /* SVGPathSegCurvetoCubic.cpp in Sources */,
+				B2227A680D00BF220071B782 /* SVGPathSegCurvetoCubicSmooth.cpp in Sources */,
+				B2227A6C0D00BF220071B782 /* SVGPathSegCurvetoQuadratic.cpp in Sources */,
+				B2227A700D00BF220071B782 /* SVGPathSegCurvetoQuadraticSmooth.cpp in Sources */,
+				B2227A740D00BF220071B782 /* SVGPathSegLineto.cpp in Sources */,
+				B2227A770D00BF220071B782 /* SVGPathSegLinetoHorizontal.cpp in Sources */,
+				B2227A7C0D00BF220071B782 /* SVGPathSegLinetoVertical.cpp in Sources */,
 				B2227A800D00BF220071B782 /* SVGPathSegList.cpp in Sources */,
 				8476C9E511DF6A0B00555B02 /* SVGPathSegListBuilder.cpp in Sources */,
 				84B6B977120F13E500B8EFAF /* SVGPathSegListSource.cpp in Sources */,
+				B2227A830D00BF220071B782 /* SVGPathSegMoveto.cpp in Sources */,
 				8419D2B9120E0C7600141F8F /* SVGPathStringBuilder.cpp in Sources */,
 				84300BDA120C9AED0021954A /* SVGPathStringSource.cpp in Sources */,
 				84C5B2FA1216DC810088B53A /* SVGPathTraversalStateBuilder.cpp in Sources */,
@@ -23854,7 +23905,8 @@
 				93F19B0508245E59001E9ABC /* XSLTProcessorLibxslt.cpp in Sources */,
 				E1BE512D0CF6C512002EA959 /* XSLTUnicodeSort.cpp in Sources */,
 				97DD4D860FDF4D6E00ECF9A4 /* XSSAuditor.cpp in Sources */,
-				08FF102012950F5A00F00276 /* SVGPathSegListPropertyTearOff.cpp in Sources */,
+				499B3C5A128C641E00E726C2 /* GraphicsLayerMac.mm in Sources */,
+				3888F6EE128C9889000CA8E0 /* InspectorFileSystemAgent.cpp in Sources */,
 				BCAE1FA612939DB7004CB026 /* ScrollAnimatorMac.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
diff --git a/WebCore/bindings/js/JSBindingsAllInOne.cpp b/WebCore/bindings/js/JSBindingsAllInOne.cpp
index a80b70e..e46b050 100644
--- a/WebCore/bindings/js/JSBindingsAllInOne.cpp
+++ b/WebCore/bindings/js/JSBindingsAllInOne.cpp
@@ -117,6 +117,7 @@
 #include "JSSVGElementInstanceCustom.cpp"
 #include "JSSVGLengthCustom.cpp"
 #include "JSSVGPathSegCustom.cpp"
+#include "JSSVGPathSegListCustom.cpp"
 #include "JSScriptProfileNodeCustom.cpp"
 #include "JSSharedWorkerCustom.cpp"
 #include "JSStorageCustom.cpp"
diff --git a/WebCore/bindings/js/JSDOMBinding.cpp b/WebCore/bindings/js/JSDOMBinding.cpp
index 02daf93..e4cff4a 100644
--- a/WebCore/bindings/js/JSDOMBinding.cpp
+++ b/WebCore/bindings/js/JSDOMBinding.cpp
@@ -611,7 +611,7 @@ void setDOMException(ExecState* exec, ExceptionCode ec)
             break;
 #if ENABLE(SVG)
         case SVGExceptionType:
-            errorObject = toJS(exec, globalObject, SVGException::create(description).get());
+            errorObject = toJS(exec, globalObject, SVGException::create(description).get(), 0 /* no context on purpose */);
             break;
 #endif
 #if ENABLE(XPATH)
diff --git a/WebCore/bindings/js/JSDOMBinding.h b/WebCore/bindings/js/JSDOMBinding.h
index 54e9cf6..64a3dad 100644
--- a/WebCore/bindings/js/JSDOMBinding.h
+++ b/WebCore/bindings/js/JSDOMBinding.h
@@ -25,6 +25,7 @@
 #include "JSDOMGlobalObject.h"
 #include "JSDOMWrapper.h"
 #include "DOMWrapperWorld.h"
+#include "JSSVGContextCache.h"
 #include "Document.h"
 #include <runtime/Completion.h>
 #include <runtime/Lookup.h>
@@ -49,6 +50,10 @@ namespace WebCore {
 
     typedef int ExceptionCode;
 
+#if ENABLE(SVG)
+    class SVGElement;
+#endif
+
     // FIXME: This class should collapse into DOMObject once all DOMObjects are
     // updated to store a globalObject pointer.
     class DOMObjectWithGlobalPointer : public DOMObject {
@@ -180,6 +185,28 @@ namespace WebCore {
         return createDOMObjectWrapper<WrapperClass>(exec, globalObject, object);
     }
 
+#if ENABLE(SVG)
+    #define CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, className, object, context) createDOMObjectWrapper<JS##className>(exec, globalObject, static_cast<className*>(object), context)
+    template<class WrapperClass, class DOMClass> inline DOMObject* createDOMObjectWrapper(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, DOMClass* object, SVGElement* context)
+    {
+        DOMObject* wrapper = createDOMObjectWrapper<WrapperClass, DOMClass>(exec, globalObject, object);
+        ASSERT(wrapper);
+        if (context)
+            JSSVGContextCache::addWrapper(wrapper, context);
+        return wrapper;
+    }
+    template<class WrapperClass, class DOMClass> inline JSC::JSValue getDOMObjectWrapper(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, DOMClass* object, SVGElement* context)
+    {
+        if (!object)
+            return JSC::jsNull();
+        if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec, object)) {
+            ASSERT(JSSVGContextCache::svgContextForDOMObject(wrapper) == context);
+            return wrapper;
+        }
+        return createDOMObjectWrapper<WrapperClass, DOMClass>(exec, globalObject, object, context);
+    }
+#endif
+
     #define CREATE_DOM_NODE_WRAPPER(exec, globalObject, className, object) createDOMNodeWrapper<JS##className>(exec, globalObject, static_cast<className*>(object))
     template<class WrapperClass, class DOMClass> inline JSNode* createDOMNodeWrapper(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, DOMClass* node)
     {
diff --git a/WebCore/bindings/js/JSSVGPathSegCustom.cpp b/WebCore/bindings/js/JSSVGPathSegCustom.cpp
index f0aa86b..eac2c4b 100644
--- a/WebCore/bindings/js/JSSVGPathSegCustom.cpp
+++ b/WebCore/bindings/js/JSSVGPathSegCustom.cpp
@@ -58,56 +58,58 @@ using namespace JSC;
 
 namespace WebCore {
 
-JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, SVGPathSeg* object)
+JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, SVGPathSeg* object, SVGElement* context)
 {
     if (!object)
         return jsNull();
 
-    if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec, object))
+    if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec, object)) {
+        ASSERT(JSSVGContextCache::svgContextForDOMObject(wrapper) == context);
         return wrapper;
+    }
 
     switch (object->pathSegType()) {
     case SVGPathSeg::PATHSEG_CLOSEPATH:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegClosePath, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegClosePath, object, context);
     case SVGPathSeg::PATHSEG_MOVETO_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoAbs, object, context);
     case SVGPathSeg::PATHSEG_MOVETO_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoRel, object, context);
     case SVGPathSeg::PATHSEG_LINETO_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoAbs, object, context);
     case SVGPathSeg::PATHSEG_LINETO_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoRel, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicAbs, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicRel, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticAbs, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticRel, object, context);
     case SVGPathSeg::PATHSEG_ARC_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcAbs, object, context);
     case SVGPathSeg::PATHSEG_ARC_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcRel, object, context);
     case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalAbs, object, context);
     case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalRel, object, context);
     case SVGPathSeg::PATHSEG_LINETO_VERTICAL_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalAbs, object, context);
     case SVGPathSeg::PATHSEG_LINETO_VERTICAL_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalRel, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothAbs, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothRel, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothAbs, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothAbs, object, context);
     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothRel, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothRel, object, context);
     case SVGPathSeg::PATHSEG_UNKNOWN:
     default:
-        return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSeg, object);
+        return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSeg, object, context);
     }
 }
 
diff --git a/WebCore/bindings/js/JSSVGPathSegListCustom.cpp b/WebCore/bindings/js/JSSVGPathSegListCustom.cpp
new file mode 100644
index 0000000..9767c1a
--- /dev/null
+++ b/WebCore/bindings/js/JSSVGPathSegListCustom.cpp
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2006, 2007, 2008 Nikolas Zimmermann <zimmermann at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "JSSVGPathSegList.h"
+
+#include "Document.h"
+#include "Frame.h"
+#include "JSSVGContextCache.h"
+#include "JSSVGPathSeg.h"
+#include "SVGDocumentExtensions.h"
+#include "SVGElement.h"
+#include "SVGPathSegList.h"
+
+#include <wtf/Assertions.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSSVGPathSegList::clear(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+
+    SVGPathSegList* list = impl();
+    list->clear(ec);
+
+    setDOMException(exec, ec);
+
+    JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName());
+    return jsUndefined();
+}
+
+JSValue JSSVGPathSegList::initialize(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+    SVGPathSeg* newItem = toSVGPathSeg(exec->argument(0));
+
+    SVGPathSegList* list = impl();
+
+    SVGPathSeg* obj = WTF::getPtr(list->initialize(newItem, ec));
+    SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this);
+
+    JSValue result = toJS(exec, globalObject(), obj, context);
+    setDOMException(exec, ec);
+
+    JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName());
+    return result;
+}
+
+JSValue JSSVGPathSegList::getItem(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+
+    bool indexOk;
+    unsigned index = finiteInt32Value(exec->argument(0), exec, indexOk);
+    if (!indexOk) {
+        setDOMException(exec, TYPE_MISMATCH_ERR);
+        return jsUndefined();
+    }
+
+    SVGPathSegList* list = impl();
+    SVGPathSeg* obj = WTF::getPtr(list->getItem(index, ec));
+    SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this);
+
+    JSValue result = toJS(exec, globalObject(), obj, context);
+    setDOMException(exec, ec);
+    return result;
+}
+
+JSValue JSSVGPathSegList::insertItemBefore(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+    SVGPathSeg* newItem = toSVGPathSeg(exec->argument(0));
+
+    bool indexOk;
+    unsigned index = finiteInt32Value(exec->argument(1), exec, indexOk);
+    if (!indexOk) {
+        setDOMException(exec, TYPE_MISMATCH_ERR);
+        return jsUndefined();
+    }
+
+    SVGPathSegList* list = impl();
+    SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this);
+
+    JSValue result = toJS(exec, globalObject(), WTF::getPtr(list->insertItemBefore(newItem, index, ec)), context);
+    setDOMException(exec, ec);
+
+    JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName());
+    return result;
+}
+
+JSValue JSSVGPathSegList::replaceItem(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+    SVGPathSeg* newItem = toSVGPathSeg(exec->argument(0));
+    
+    bool indexOk;
+    unsigned index = finiteInt32Value(exec->argument(1), exec, indexOk);
+    if (!indexOk) {
+        setDOMException(exec, TYPE_MISMATCH_ERR);
+        return jsUndefined();
+    }
+
+    SVGPathSegList* list = impl();
+    SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this);
+
+    JSValue result = toJS(exec, globalObject(), WTF::getPtr(list->replaceItem(newItem, index, ec)), context);
+    setDOMException(exec, ec);
+
+    JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName());
+    return result;
+}
+
+JSValue JSSVGPathSegList::removeItem(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+    
+    bool indexOk;
+    unsigned index = finiteInt32Value(exec->argument(0), exec, indexOk);
+    if (!indexOk) {
+        setDOMException(exec, TYPE_MISMATCH_ERR);
+        return jsUndefined();
+    }
+
+    SVGPathSegList* list = impl();
+
+    RefPtr<SVGPathSeg> obj(list->removeItem(index, ec));
+    SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this);
+
+    JSValue result = toJS(exec, globalObject(), obj.get(), context);
+    setDOMException(exec, ec);
+
+    JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName());
+    return result;
+}
+
+JSValue JSSVGPathSegList::appendItem(ExecState* exec)
+{
+    ExceptionCode ec = 0;
+    SVGPathSeg* newItem = toSVGPathSeg(exec->argument(0));
+
+    SVGPathSegList* list = impl();
+    SVGElement* context = JSSVGContextCache::svgContextForDOMObject(this);
+
+    JSValue result = toJS(exec, globalObject(), WTF::getPtr(list->appendItem(newItem, ec)), context);
+    setDOMException(exec, ec);
+
+    JSSVGContextCache::propagateSVGDOMChange(this, list->associatedAttributeName());
+    return result;
+}
+
+}
+
+#endif // ENABLE(SVG)
diff --git a/WebCore/bindings/scripts/CodeGenerator.pm b/WebCore/bindings/scripts/CodeGenerator.pm
index 42f3f1c..1e56b0c 100644
--- a/WebCore/bindings/scripts/CodeGenerator.pm
+++ b/WebCore/bindings/scripts/CodeGenerator.pm
@@ -75,7 +75,6 @@ my %svgTypeNeedingTearOff = (
     "SVGMatrix" => "SVGPropertyTearOff<SVGMatrix>",
     "SVGNumber" => "SVGPropertyTearOff<float>",
     "SVGNumberList" => "SVGListPropertyTearOff<SVGNumberList>",
-    "SVGPathSegList" => "SVGPathSegListPropertyTearOff",
     "SVGPoint" => "SVGPropertyTearOff<FloatPoint>",
     "SVGPointList" => "SVGListPropertyTearOff<SVGPointList>",
     "SVGPreserveAspectRatio" => "SVGPropertyTearOff<SVGPreserveAspectRatio>",
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 542b67a..ea32615 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -316,6 +316,25 @@ sub AddClassForwardIfNeeded
     }
 }
 
+# FIXME: This method will go away once all SVG animated properties are converted to the new scheme.
+sub IsSVGTypeNeedingContextParameter
+{
+    # FIXME: This function will be removed, as soon the PODType concept is gone, and all SVG datatypes use the new style JS bindings.
+
+    my $implClassName = shift;
+
+    return 0 unless $implClassName =~ /SVG/;
+    return 0 if $implClassName =~ /Element/;
+    return 0 if $codeGenerator->IsSVGAnimatedType($implClassName);
+    return 0 if $codeGenerator->IsSVGTypeNeedingTearOff($implClassName);
+
+    my @noContextNeeded = ("SVGColor", "SVGDocument", "SVGPaint", "SVGZoomEvent");
+    foreach (@noContextNeeded) {
+        return 0 if $implClassName eq $_;
+    }
+    return 1;
+}
+
 sub HashValueForClassAndName
 {
     my $class = shift;
@@ -918,6 +937,8 @@ sub GenerateHeader
     if (!$hasParent || $dataNode->extendedAttributes->{"GenerateToJS"} || $dataNode->extendedAttributes->{"CustomToJS"}) {
         if ($svgPropertyType) {
             push(@headerContent, "JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $implType*);\n");
+        } elsif (IsSVGTypeNeedingContextParameter($implClassName)) {
+            push(@headerContent, "JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $implType*, SVGElement* context);\n");
         } else {
             push(@headerContent, "JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $implType*);\n");
         }
@@ -1440,6 +1461,8 @@ sub GenerateImplementation
             } else {
                 push(@implContent, "    forgetDOMObject(this, impl());\n");
             }
+
+            push(@implContent, "    JSSVGContextCache::forgetWrapper(this);\n") if IsSVGTypeNeedingContextParameter($implClassName);
         }
 
         push(@implContent, "}\n\n");
@@ -1770,6 +1793,9 @@ sub GenerateImplementation
                                 push(@implContent, ", ec") if @{$attribute->setterExceptions};
                                 push(@implContent, ");\n");
                                 push(@implContent, "    setDOMException(exec, ec);\n") if @{$attribute->setterExceptions};
+                                if (IsSVGTypeNeedingContextParameter($implClassName)) {
+                                    push(@implContent, "    JSSVGContextCache::propagateSVGDOMChange(castedThis, imp->associatedAttributeName());\n");
+                                }
                             }
                         }
                         
@@ -2089,12 +2115,16 @@ sub GenerateImplementation
     if ((!$hasParent or $dataNode->extendedAttributes->{"GenerateToJS"}) and !$dataNode->extendedAttributes->{"CustomToJS"}) {
         if ($svgPropertyType) {
             push(@implContent, "JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, $implType* object)\n");
+        } elsif ($podType or IsSVGTypeNeedingContextParameter($implClassName)) {
+            push(@implContent, "JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, $implType* object, SVGElement* context)\n");
         } else {
             push(@implContent, "JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, $implType* object)\n");
         }
         push(@implContent, "{\n");
         if ($svgPropertyType) {
             push(@implContent, "    return getDOMObjectWrapper<$className, $implType>(exec, globalObject, object);\n");
+        } elsif (IsSVGTypeNeedingContextParameter($implClassName)) {
+            push(@implContent, "    return getDOMObjectWrapper<$className>(exec, globalObject, object, context);\n");
         } else {
             push(@implContent, "    return getDOMObjectWrapper<$className>(exec, globalObject, object);\n");
         }
@@ -2395,11 +2425,6 @@ sub GetSVGPropertyTypes
         $headerIncludes{"$svgWrappedNativeType.h"} = 1;
         $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1;
         $headerIncludes{"SVGTransformListPropertyTearOff.h"} = 1;
-    } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) {
-        $svgListPropertyType = $svgWrappedNativeType;
-        $headerIncludes{"$svgWrappedNativeType.h"} = 1;
-        $headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1;
-        $headerIncludes{"SVGPathSegListPropertyTearOff.h"} = 1;
     }
 
     return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
@@ -2528,6 +2553,11 @@ sub NativeToJSValue
 
     return $value if $codeGenerator->IsSVGAnimatedType($type);
 
+    if (IsSVGTypeNeedingContextParameter($type)) {
+        my $contextPtr = IsSVGTypeNeedingContextParameter($implClassName) ? "JSSVGContextCache::svgContextForDOMObject(castedThis)" : "imp";
+        return "toJS(exec, $globalObject, WTF::getPtr($value), $contextPtr)";
+    }
+
     if ($signature->extendedAttributes->{"ReturnsNew"}) {        
         return "toJSNewlyCreated(exec, $globalObject, WTF::getPtr($value))";
     }
@@ -2564,7 +2594,7 @@ sub NativeToJSValue
         } elsif ($tearOffType =~ /SVGStaticListPropertyTearOff/) {
             my $extraImp = "GetOwnerElementForType<$implClassName, IsDerivedFromSVGElement<$implClassName>::value>::ownerElement(imp), ";
             $value = "${tearOffType}::create($extraImp$value)";
-        } elsif (not $tearOffType =~ /SVG(Point|PathSeg)List/) {
+        } elsif (not $tearOffType =~ /SVGPointList/) {
             $value = "${tearOffType}::create($value)";
         }
     }
diff --git a/WebCore/bindings/scripts/CodeGeneratorObjC.pm b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
index 979b71e..50334a2 100644
--- a/WebCore/bindings/scripts/CodeGeneratorObjC.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
@@ -673,9 +673,6 @@ sub GetSVGPropertyTypes
     } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) {
         $svgListPropertyType = "WebCore::$svgWrappedNativeType";
         $svgListPropertyType =~ s/</\<WebCore::/;
-    } elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) {
-        $svgListPropertyType = "WebCore::$svgWrappedNativeType";
-        $svgListPropertyType =~ s/</\<WebCore::/;
     }
 
     return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
@@ -1007,7 +1004,6 @@ sub GenerateHeader
         if ($svgListPropertyType) {
             push(@internalHeaderContent, "#import <WebCore/SVGAnimatedListPropertyTearOff.h>\n\n");
             push(@internalHeaderContent, "#import <WebCore/SVGTransformListPropertyTearOff.h>\n\n") if $svgListPropertyType =~ /SVGTransformList/;
-            push(@internalHeaderContent, "#import <WebCore/SVGPathSegListPropertyTearOff.h>\n\n") if $svgListPropertyType =~ /SVGPathSegList/;
         }
         push(@internalHeaderContent, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion;
 
@@ -1314,13 +1310,13 @@ sub GenerateImplementation
                         my $updateMethod = "&${implClassNameWithNamespace}::update" . $codeGenerator->WK_ucfirst($getter);
                         $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create(IMPL, $getterContentHead$getterContentTail, $updateMethod";
                         $getterContentTail .= "))";
-                    } elsif ($idlTypeWithNamespace =~ /SVG(Point|PathSeg)List/) {
-                        $getterContentHead = "kit(WTF::getPtr($getterContentHead";
-                        $getterContentTail .= "))";
                     } elsif ($idlTypeWithNamespace =~ /SVGStaticListPropertyTearOff/) {
                         my $extraImp = "WebCore::GetOwnerElementForType<$implClassNameWithNamespace, WebCore::IsDerivedFromSVGElement<$implClassNameWithNamespace>::value>::ownerElement(IMPL), ";
                         $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($extraImp$getterContentHead";
                         $getterContentTail .= ")))";
+                    } elsif ($idlTypeWithNamespace =~ /SVGPointList/) {
+                        $getterContentHead = "kit(WTF::getPtr($getterContentHead";
+                        $getterContentTail .= "))";
                     } else {
                         $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($getterContentHead";
                         $getterContentTail .= ")))";
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index a86efdc..985ecd2 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -679,9 +679,18 @@ sub GenerateNormalAttrGetter
     my $interfaceName = shift;
 
     my $attrExt = $attribute->signature->extendedAttributes;
+
     my $attrName = $attribute->signature->name;
+
     my $attrType = GetTypeFromSignature($attribute->signature);
+
     my $nativeType = GetNativeTypeFromSignature($attribute->signature, -1);
+    my $skipContext = 0;
+
+    # Special case: SVGZoomEvent's attributes are all read-only
+    if ($implClassName eq "SVGZoomEvent") {
+        $skipContext = 1;
+    }
 
     my $getterStringUsesImp = $implClassName ne "SVGNumber";
     my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($implClassName);
@@ -825,6 +834,14 @@ END
         return;
     }
 
+    if (IsSVGTypeNeedingContextParameter($attrType) && !$skipContext) {
+        push(@implContentDecls, GenerateSVGContextRetrieval($implClassName, "    "));
+        # The templating associated with passing withSVGContext()'s return value directly into toV8 can get compilers confused,
+        # so just manually set the return value to a PassRefPtr of the expected type.
+        push(@implContentDecls, "    PassRefPtr<$attrType> resultAsPassRefPtr = V8Proxy::withSVGContext($result, context);\n");
+        $result = "resultAsPassRefPtr";
+    }
+
     if ($codeGenerator->IsSVGAnimatedType($implClassName) and $codeGenerator->IsSVGTypeNeedingTearOff($attrType)) {
         $implIncludes{"V8$attrType.h"} = 1;
         my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType);
@@ -862,7 +879,7 @@ END
         } elsif ($tearOffType =~ /SVGStaticListPropertyTearOff/) {
             my $extraImp = "GetOwnerElementForType<$implClassName, IsDerivedFromSVGElement<$implClassName>::value>::ownerElement(imp), ";
             push(@implContentDecls, "    return toV8(WTF::getPtr(${tearOffType}::create($extraImp$result)));\n");
-        } elsif ($tearOffType =~ /SVG(Point|PathSeg)List/) {
+        } elsif ($tearOffType =~ /SVGPointList/) {
             push(@implContentDecls, "    return toV8(WTF::getPtr($result));\n");
         } else {
             push(@implContentDecls, "    return toV8(WTF::getPtr(${tearOffType}::create($result)));\n");
@@ -1019,6 +1036,10 @@ END
         } else {
             push(@implContentDecls, "    wrapper->commitChange();\n");
         }
+    } elsif (IsSVGTypeNeedingContextParameter($implClassName)) {
+        $implIncludes{"SVGElement.h"} = 1;
+        push(@implContentDecls, "    if (SVGElement* context = V8Proxy::svgContext(imp))\n");
+        push(@implContentDecls, "        context->svgAttributeChanged(imp->associatedAttributeName());\n");
     }
 
     push(@implContentDecls, "    return;\n");
@@ -2701,6 +2722,23 @@ sub GenerateFunctionCallString()
         return $result;
     }
 
+    my $generatedSVGContextRetrieval = 0;
+    # If the return type needs an SVG context, output it
+    if (IsSVGTypeNeedingContextParameter($returnType)) {
+        $result .= GenerateSVGContextAssignment($implClassName, $return . ".get()", $indent);
+        $generatedSVGContextRetrieval = 1;
+    }
+
+    if (IsSVGTypeNeedingContextParameter($implClassName) && $implClassName =~ /List$/ && IsSVGListMutator($name)) {
+        if (!$generatedSVGContextRetrieval) {
+            $result .= GenerateSVGContextRetrieval($implClassName, $indent);
+            $generatedSVGContextRetrieval = 1;
+        }
+
+        $result .= $indent . "context->svgAttributeChanged(imp->associatedAttributeName());\n";
+        $implIncludes{"SVGElement.h"} = 1;
+    }
+
     # If the implementing class is a POD type, commit changes
     if ($codeGenerator->IsSVGTypeNeedingTearOff($implClassName) and not $implClassName =~ /List$/) {
         $result .= $indent . "wrapper->commitChange();\n";
@@ -3170,6 +3208,64 @@ sub WriteData
     }
 }
 
+# FIXME: This method will go away once all SVG animated properties are converted to the new scheme.
+sub IsSVGTypeNeedingContextParameter
+{
+    my $implClassName = shift;
+
+    return 0 unless $implClassName =~ /SVG/;
+    return 0 if $implClassName =~ /Element/;
+    return 0 if $codeGenerator->IsSVGAnimatedType($implClassName);
+    return 0 if $codeGenerator->IsSVGTypeNeedingTearOff($implClassName);
+
+    my @noContextNeeded = ("SVGColor", "SVGDocument", "SVGPaintType", "SVGPaint", "SVGZoomEvent");
+    foreach (@noContextNeeded) {
+        return 0 if $implClassName eq $_;
+    }
+    return 1;
+}
+
+# FIXME: This method will go away once all SVG animated properties are converted to the new scheme.
+sub GenerateSVGContextAssignment
+{
+    my $srcType = shift;
+    my $value = shift;
+    my $indent = shift;
+
+    $result = GenerateSVGContextRetrieval($srcType, $indent);
+    $result .= $indent . "V8Proxy::setSVGContext($value, context);\n";
+
+    return $result;
+}
+
+# FIXME: This method will go away once all SVG animated properties are converted to the new scheme.
+sub GenerateSVGContextRetrieval
+{
+    my $srcType = shift;
+    my $indent = shift;
+
+    my $contextDecl = "imp";
+    if (IsSVGTypeNeedingContextParameter($srcType)) {
+        $contextDecl = "V8Proxy::svgContext($contextDecl)";
+    }
+
+    return $indent . "SVGElement* context = $contextDecl;\n";
+}
+
+sub IsSVGListMutator
+{
+    my $functionName = shift;
+
+    return 1 if $functionName eq "clear";
+    return 1 if $functionName eq "initialize";
+    return 1 if $functionName eq "insertItemBefore";
+    return 1 if $functionName eq "replaceItem";
+    return 1 if $functionName eq "removeItem";
+    return 1 if $functionName eq "appendItem";
+
+    return 0;
+}
+
 sub GetVisibleInterfaceName
 {
     my $interfaceName = shift;
diff --git a/WebCore/rendering/SVGRenderTreeAsText.cpp b/WebCore/rendering/SVGRenderTreeAsText.cpp
index 4e47ec8..b9a854d 100644
--- a/WebCore/rendering/SVGRenderTreeAsText.cpp
+++ b/WebCore/rendering/SVGRenderTreeAsText.cpp
@@ -415,8 +415,7 @@ static TextStream& operator<<(TextStream& ts, const RenderSVGPath& path)
     } else if (svgElement->hasTagName(SVGNames::pathTag)) {
         SVGPathElement* element = static_cast<SVGPathElement*>(svgElement);
         String pathString;
-        // FIXME: We should switch to UnalteredParsing here - this will affect the path dumping output of dozens of tests.
-        SVGPathParserFactory::self()->buildStringFromByteStream(element->pathByteStream(), pathString, NormalizedParsing);
+        SVGPathParserFactory::self()->buildStringFromSVGPathSegList(element->pathSegList(), pathString, UnalteredParsing);
         writeNameAndQuotedValue(ts, "data", pathString);
     } else
         ASSERT_NOT_REACHED();
diff --git a/WebCore/svg/SVGAllInOne.cpp b/WebCore/svg/SVGAllInOne.cpp
index 65e0d3a..e01af2c 100644
--- a/WebCore/svg/SVGAllInOne.cpp
+++ b/WebCore/svg/SVGAllInOne.cpp
@@ -30,6 +30,7 @@
 #include "SVGAltGlyphElement.cpp"
 #include "SVGAngle.cpp"
 #include "SVGAnimateColorElement.cpp"
+#include "SVGAnimatedPathData.cpp"
 #include "SVGAnimateElement.cpp"
 #include "SVGAnimateMotionElement.cpp"
 #include "SVGAnimateTransformElement.cpp"
@@ -112,8 +113,20 @@
 #include "SVGPathElement.cpp"
 #include "SVGPathParser.cpp"
 #include "SVGPathParserFactory.cpp"
+#include "SVGPathSeg.cpp"
+#include "SVGPathSegArc.cpp"
+#include "SVGPathSegClosePath.cpp"
+#include "SVGPathSegCurvetoCubic.cpp"
+#include "SVGPathSegCurvetoCubicSmooth.cpp"
+#include "SVGPathSegCurvetoQuadratic.cpp"
+#include "SVGPathSegCurvetoQuadraticSmooth.cpp"
+#include "SVGPathSegLineto.cpp"
+#include "SVGPathSegLinetoHorizontal.cpp"
+#include "SVGPathSegLinetoVertical.cpp"
+#include "SVGPathSegList.cpp"
 #include "SVGPathSegListBuilder.cpp"
 #include "SVGPathSegListSource.cpp"
+#include "SVGPathSegMoveto.cpp"
 #include "SVGPathStringBuilder.cpp"
 #include "SVGPathStringSource.cpp"
 #include "SVGPathTraversalStateBuilder.cpp"
diff --git a/WebCore/svg/SVGStylable.cpp b/WebCore/svg/SVGAnimatedPathData.cpp
similarity index 100%
copy from WebCore/svg/SVGStylable.cpp
copy to WebCore/svg/SVGAnimatedPathData.cpp
diff --git a/WebCore/svg/SVGAnimatedPathData.h b/WebCore/svg/SVGAnimatedPathData.h
new file mode 100644
index 0000000..5ff66d3
--- /dev/null
+++ b/WebCore/svg/SVGAnimatedPathData.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGAnimatedPathData_h
+#define SVGAnimatedPathData_h
+
+#if ENABLE(SVG)
+
+namespace WebCore {
+
+    class SVGPathSegList;
+
+    class SVGAnimatedPathData {
+    public:
+        virtual ~SVGAnimatedPathData() { }
+
+        virtual SVGPathSegList* pathSegList() const = 0;
+        virtual SVGPathSegList* normalizedPathSegList() const = 0;
+        virtual SVGPathSegList* animatedPathSegList() const = 0;
+        virtual SVGPathSegList* animatedNormalizedPathSegList() const = 0;
+    };
+
+} // namespace WebCore
+
+#endif // ENABLE(SVG)
+#endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGAnimatedPathData.idl b/WebCore/svg/SVGAnimatedPathData.idl
new file mode 100644
index 0000000..eae1340
--- /dev/null
+++ b/WebCore/svg/SVGAnimatedPathData.idl
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2006 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+module svg {
+
+    interface [Conditional=SVG, ObjCProtocol, OmitConstructor] SVGAnimatedPathData {
+        readonly attribute SVGPathSegList   pathSegList;
+        readonly attribute SVGPathSegList   normalizedPathSegList;
+        readonly attribute SVGPathSegList   animatedPathSegList;
+        readonly attribute SVGPathSegList   animatedNormalizedPathSegList;
+    };
+
+}
diff --git a/WebCore/svg/SVGPathElement.cpp b/WebCore/svg/SVGPathElement.cpp
index f9432ce..8f8bef9 100644
--- a/WebCore/svg/SVGPathElement.cpp
+++ b/WebCore/svg/SVGPathElement.cpp
@@ -26,6 +26,7 @@
 #include "Attribute.h"
 #include "RenderSVGPath.h"
 #include "RenderSVGResource.h"
+#include "SVGNames.h"
 #include "SVGPathParserFactory.h"
 #include "SVGPathSegArc.h"
 #include "SVGPathSegClosePath.h"
@@ -37,7 +38,6 @@
 #include "SVGPathSegLinetoHorizontal.h"
 #include "SVGPathSegLinetoVertical.h"
 #include "SVGPathSegList.h"
-#include "SVGPathSegListPropertyTearOff.h"
 #include "SVGPathSegListBuilder.h"
 #include "SVGPathSegMoveto.h"
 #include "SVGSVGElement.h"
@@ -46,8 +46,6 @@ namespace WebCore {
 
 inline SVGPathElement::SVGPathElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
-    , m_pathByteStream(SVGPathByteStream::create())
-    , m_pathSegList(PathSegUnalteredRole)
 {
 }
 
@@ -77,110 +75,112 @@ unsigned long SVGPathElement::getPathSegAtLength(float length)
 {
     SVGPathParserFactory* factory = SVGPathParserFactory::self();
     unsigned long pathSeg = 0;
-    factory->getSVGPathSegAtLengthFromSVGPathByteStream(m_pathByteStream.get(), length, pathSeg);
+    factory->getSVGPathSegAtLengthFromSVGPathSegList(pathSegList(), length, pathSeg);
     return pathSeg;
 }
 
-PassRefPtr<SVGPathSegClosePath> SVGPathElement::createSVGPathSegClosePath(SVGPathSegRole role)
+PassRefPtr<SVGPathSegClosePath> SVGPathElement::createSVGPathSegClosePath()
 {
-    return SVGPathSegClosePath::create(this, role);
+    return SVGPathSegClosePath::create();
 }
 
-PassRefPtr<SVGPathSegMovetoAbs> SVGPathElement::createSVGPathSegMovetoAbs(float x, float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegMovetoAbs> SVGPathElement::createSVGPathSegMovetoAbs(float x, float y)
 {
-    return SVGPathSegMovetoAbs::create(this, role, x, y);
+    return SVGPathSegMovetoAbs::create(x, y);
 }
 
-PassRefPtr<SVGPathSegMovetoRel> SVGPathElement::createSVGPathSegMovetoRel(float x, float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegMovetoRel> SVGPathElement::createSVGPathSegMovetoRel(float x, float y)
 {
-    return SVGPathSegMovetoRel::create(this, role, x, y);
+    return SVGPathSegMovetoRel::create(x, y);
 }
 
-PassRefPtr<SVGPathSegLinetoAbs> SVGPathElement::createSVGPathSegLinetoAbs(float x, float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegLinetoAbs> SVGPathElement::createSVGPathSegLinetoAbs(float x, float y)
 {
-    return SVGPathSegLinetoAbs::create(this, role, x, y);
+    return SVGPathSegLinetoAbs::create(x, y);
 }
 
-PassRefPtr<SVGPathSegLinetoRel> SVGPathElement::createSVGPathSegLinetoRel(float x, float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegLinetoRel> SVGPathElement::createSVGPathSegLinetoRel(float x, float y)
 {
-    return SVGPathSegLinetoRel::create(this, role, x, y);
+    return SVGPathSegLinetoRel::create(x, y);
 }
 
-PassRefPtr<SVGPathSegCurvetoCubicAbs> SVGPathElement::createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoCubicAbs> SVGPathElement::createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2)
 {
-    return SVGPathSegCurvetoCubicAbs::create(this, role, x, y, x1, y1, x2, y2);
+    return SVGPathSegCurvetoCubicAbs::create(x, y, x1, y1, x2, y2);
 }
 
-PassRefPtr<SVGPathSegCurvetoCubicRel> SVGPathElement::createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoCubicRel> SVGPathElement::createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2)
 {
-    return SVGPathSegCurvetoCubicRel::create(this, role, x, y, x1, y1, x2, y2);
+    return SVGPathSegCurvetoCubicRel::create(x, y, x1, y1, x2, y2);
 }
 
-PassRefPtr<SVGPathSegCurvetoQuadraticAbs> SVGPathElement::createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoQuadraticAbs> SVGPathElement::createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1)
 {
-    return SVGPathSegCurvetoQuadraticAbs::create(this, role, x, y, x1, y1);
+    return SVGPathSegCurvetoQuadraticAbs::create(x, y, x1, y1);
 }
 
-PassRefPtr<SVGPathSegCurvetoQuadraticRel> SVGPathElement::createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoQuadraticRel> SVGPathElement::createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1)
 {
-    return SVGPathSegCurvetoQuadraticRel::create(this, role, x, y, x1, y1);
+    return SVGPathSegCurvetoQuadraticRel::create(x, y, x1, y1);
 }
 
-PassRefPtr<SVGPathSegArcAbs> SVGPathElement::createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role)
+PassRefPtr<SVGPathSegArcAbs> SVGPathElement::createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
 {
-    return SVGPathSegArcAbs::create(this, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
+    return SVGPathSegArcAbs::create(x, y, r1, r2, angle, largeArcFlag, sweepFlag);
 }
 
-PassRefPtr<SVGPathSegArcRel> SVGPathElement::createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role)
+PassRefPtr<SVGPathSegArcRel> SVGPathElement::createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
 {
-    return SVGPathSegArcRel::create(this, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
+    return SVGPathSegArcRel::create(x, y, r1, r2, angle, largeArcFlag, sweepFlag);
 }
 
-PassRefPtr<SVGPathSegLinetoHorizontalAbs> SVGPathElement::createSVGPathSegLinetoHorizontalAbs(float x, SVGPathSegRole role)
+PassRefPtr<SVGPathSegLinetoHorizontalAbs> SVGPathElement::createSVGPathSegLinetoHorizontalAbs(float x)
 {
-    return SVGPathSegLinetoHorizontalAbs::create(this, role, x);
+    return SVGPathSegLinetoHorizontalAbs::create(x);
 }
 
-PassRefPtr<SVGPathSegLinetoHorizontalRel> SVGPathElement::createSVGPathSegLinetoHorizontalRel(float x, SVGPathSegRole role)
+PassRefPtr<SVGPathSegLinetoHorizontalRel> SVGPathElement::createSVGPathSegLinetoHorizontalRel(float x)
 {
-    return SVGPathSegLinetoHorizontalRel::create(this, role, x);
+    return SVGPathSegLinetoHorizontalRel::create(x);
 }
 
-PassRefPtr<SVGPathSegLinetoVerticalAbs> SVGPathElement::createSVGPathSegLinetoVerticalAbs(float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegLinetoVerticalAbs> SVGPathElement::createSVGPathSegLinetoVerticalAbs(float y)
 {
-    return SVGPathSegLinetoVerticalAbs::create(this, role, y);
+    return SVGPathSegLinetoVerticalAbs::create(y);
 }
 
-PassRefPtr<SVGPathSegLinetoVerticalRel> SVGPathElement::createSVGPathSegLinetoVerticalRel(float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegLinetoVerticalRel> SVGPathElement::createSVGPathSegLinetoVerticalRel(float y)
 {
-    return SVGPathSegLinetoVerticalRel::create(this, role, y);
+    return SVGPathSegLinetoVerticalRel::create(y);
 }
 
-PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2)
 {
-    return SVGPathSegCurvetoCubicSmoothAbs::create(this, role, x, y, x2, y2);
+    return SVGPathSegCurvetoCubicSmoothAbs::create(x, y, x2, y2);
 }
 
-PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2)
 {
-    return SVGPathSegCurvetoCubicSmoothRel::create(this, role, x, y, x2, y2);
+    return SVGPathSegCurvetoCubicSmoothRel::create(x, y, x2, y2);
 }
 
-PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y)
 {
-    return SVGPathSegCurvetoQuadraticSmoothAbs::create(this, role, x, y);
+    return SVGPathSegCurvetoQuadraticSmoothAbs::create(x, y);
 }
 
-PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y, SVGPathSegRole role)
+PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y)
 {
-    return SVGPathSegCurvetoQuadraticSmoothRel::create(this, role, x, y);
+    return SVGPathSegCurvetoQuadraticSmoothRel::create(x, y);
 }
 
 void SVGPathElement::parseMappedAttribute(Attribute* attr)
 {
     if (attr->name() == SVGNames::dAttr) {
+        ExceptionCode ec;
+        pathSegList()->clear(ec);
         SVGPathParserFactory* factory = SVGPathParserFactory::self();
-        if (!factory->buildSVGPathByteStreamFromString(attr->value(), m_pathByteStream, UnalteredParsing))
+        if (!factory->buildSVGPathSegListFromString(attr->value(), pathSegList(), NormalizedParsing))
             document()->accessSVGExtensions()->reportError("Problem parsing d=\"" + attr->value() + "\"");
     } else if (attr->name() == SVGNames::pathLengthAttr) {
         setPathLengthBaseValue(attr->value().toFloat());
@@ -205,26 +205,15 @@ void SVGPathElement::svgAttributeChanged(const QualifiedName& attrName)
         return;
 
     RenderSVGPath* renderer = static_cast<RenderSVGPath*>(this->renderer());
+    if (!renderer)
+        return;
 
     if (attrName == SVGNames::dAttr) {
-        if (m_animatablePathSegList) {
-            SVGPathSegList newList(PathSegUnalteredRole);
-            SVGPathParserFactory* factory = SVGPathParserFactory::self();
-            factory->buildSVGPathSegListFromByteStream(m_pathByteStream.get(), this, newList, UnalteredParsing);
-            m_pathSegList.value = newList;
-        }
-
-        if (!renderer)
-            return;
-
         renderer->setNeedsPathUpdate();
         RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
         return;
     }
 
-    if (!renderer)
-        return;
-
     if (SVGStyledTransformableElement::isKnownAttribute(attrName)) {
         renderer->setNeedsTransformUpdate();
         RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
@@ -242,67 +231,40 @@ void SVGPathElement::synchronizeProperty(const QualifiedName& attrName)
     SVGStyledTransformableElement::synchronizeProperty(attrName);
 
     if (attrName == anyQName()) {
-        synchronizeD();
         synchronizePathLength();
         synchronizeExternalResourcesRequired();
         return;
     }
 
-    if (attrName == SVGNames::dAttr)
-        synchronizeD();
-    else if (attrName == SVGNames::pathLengthAttr)
+    if (attrName == SVGNames::pathLengthAttr)
         synchronizePathLength();
     else if (SVGExternalResourcesRequired::isKnownAttribute(attrName))
         synchronizeExternalResourcesRequired();
 }
 
-void SVGPathElement::synchronizeD()
-{
-    if (!m_pathSegList.shouldSynchronize)
-        return;
-
-    SVGAnimatedPropertySynchronizer<true>::synchronize(this, SVGNames::dAttr, m_pathSegList.value.valueAsString());
-}
-
-SVGPathSegListPropertyTearOff* SVGPathElement::pathSegList()
+SVGPathSegList* SVGPathElement::pathSegList() const
 {
-    if (!m_animatablePathSegList) {
-        m_pathSegList.shouldSynchronize = true;
-
-        SVGPathParserFactory* factory = SVGPathParserFactory::self();
-        factory->buildSVGPathSegListFromByteStream(m_pathByteStream.get(), this, m_pathSegList.value, UnalteredParsing);
+    if (!m_pathSegList)
+        m_pathSegList = SVGPathSegList::create(SVGNames::dAttr);
 
-        m_animatablePathSegList = SVGAnimatedProperty::lookupOrCreateWrapper<SVGAnimatedPathSegListPropertyTearOff, SVGPathSegList>
-                                 (this, SVGNames::dAttr, SVGNames::dAttr.localName(), m_pathSegList.value);
-    }
-
-    return static_cast<SVGPathSegListPropertyTearOff*>(m_animatablePathSegList->baseVal(PathSegUnalteredRole));
+    return m_pathSegList.get();
 }
 
-SVGPathSegListPropertyTearOff* SVGPathElement::normalizedPathSegList()
+SVGPathSegList* SVGPathElement::normalizedPathSegList() const
 {
-    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists!
+    // TODO
     return 0;
 }
 
-SVGPathSegListPropertyTearOff* SVGPathElement::animatedPathSegList()
+SVGPathSegList* SVGPathElement::animatedPathSegList() const
 {
-    if (!m_animatablePathSegList) {
-        m_pathSegList.shouldSynchronize = true;
-
-        SVGPathParserFactory* factory = SVGPathParserFactory::self();
-        factory->buildSVGPathSegListFromByteStream(m_pathByteStream.get(), this, m_pathSegList.value, UnalteredParsing);
-
-        m_animatablePathSegList = SVGAnimatedProperty::lookupOrCreateWrapper<SVGAnimatedPathSegListPropertyTearOff, SVGPathSegList>
-                                 (this, SVGNames::dAttr, SVGNames::dAttr.localName(), m_pathSegList.value);
-    }
-
-    return static_cast<SVGPathSegListPropertyTearOff*>(m_animatablePathSegList->animVal(PathSegUnalteredRole));
+    // TODO
+    return 0;
 }
 
-SVGPathSegListPropertyTearOff* SVGPathElement::animatedNormalizedPathSegList()
+SVGPathSegList* SVGPathElement::animatedNormalizedPathSegList() const
 {
-    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists!
+    // TODO
     return 0;
 }
 
@@ -311,33 +273,7 @@ void SVGPathElement::toPathData(Path& path) const
     ASSERT(path.isEmpty());
 
     SVGPathParserFactory* factory = SVGPathParserFactory::self();
-    factory->buildPathFromByteStream(m_pathByteStream.get(), path);
-}
-
-void SVGPathElement::pathSegListChanged(SVGPathSegRole role)
-{
-    SVGPathParserFactory* factory = SVGPathParserFactory::self();
-
-    switch (role) {
-    case PathSegNormalizedRole:
-        // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists!
-        break;
-    case PathSegUnalteredRole:
-        m_pathByteStream->clear();
-        factory->buildSVGPathByteStreamFromSVGPathSegList(m_pathSegList.value, m_pathByteStream, UnalteredParsing);
-        break;
-    case PathSegUndefinedRole:
-        return;
-    }
-
-    invalidateSVGAttributes();
-
-    RenderSVGPath* renderer = static_cast<RenderSVGPath*>(this->renderer());
-    if (!renderer)
-        return;
-
-    renderer->setNeedsPathUpdate();
-    RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
+    factory->buildPathFromSVGPathSegList(pathSegList(), path);
 }
 
 }
diff --git a/WebCore/svg/SVGPathElement.h b/WebCore/svg/SVGPathElement.h
index 0590dea..91d55b1 100644
--- a/WebCore/svg/SVGPathElement.h
+++ b/WebCore/svg/SVGPathElement.h
@@ -22,101 +22,94 @@
 #define SVGPathElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPathSegListPropertyTearOff.h"
+#include "SVGAnimatedPathData.h"
 #include "SVGAnimatedPropertyMacros.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
-#include "SVGPathByteStream.h"
 #include "SVGStyledTransformableElement.h"
 #include "SVGTests.h"
 
 namespace WebCore {
 
-class SVGPathSegArcAbs;
-class SVGPathSegArcRel;
-class SVGPathSegClosePath;
-class SVGPathSegLinetoAbs;
-class SVGPathSegLinetoRel;
-class SVGPathSegMovetoAbs;
-class SVGPathSegMovetoRel;
-class SVGPathSegCurvetoCubicAbs;
-class SVGPathSegCurvetoCubicRel;
-class SVGPathSegLinetoVerticalAbs;
-class SVGPathSegLinetoVerticalRel;
-class SVGPathSegLinetoHorizontalAbs;
-class SVGPathSegLinetoHorizontalRel;
-class SVGPathSegCurvetoQuadraticAbs;
-class SVGPathSegCurvetoQuadraticRel;
-class SVGPathSegCurvetoCubicSmoothAbs;
-class SVGPathSegCurvetoCubicSmoothRel;
-class SVGPathSegCurvetoQuadraticSmoothAbs;
-class SVGPathSegCurvetoQuadraticSmoothRel;
-
-class SVGPathElement : public SVGStyledTransformableElement,
-                       public SVGTests,
-                       public SVGLangSpace,
-                       public SVGExternalResourcesRequired {
-public:
-    static PassRefPtr<SVGPathElement> create(const QualifiedName&, Document*);
-    
-    float getTotalLength();
-    FloatPoint getPointAtLength(float distance);
-    unsigned long getPathSegAtLength(float distance);
-
-    PassRefPtr<SVGPathSegClosePath> createSVGPathSegClosePath(SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegMovetoAbs> createSVGPathSegMovetoAbs(float x, float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegMovetoRel> createSVGPathSegMovetoRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegLinetoAbs> createSVGPathSegLinetoAbs(float x, float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegLinetoRel> createSVGPathSegLinetoRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoCubicAbs> createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoCubicRel> createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoQuadraticAbs> createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoQuadraticRel> createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegArcAbs> createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegArcRel> createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegLinetoHorizontalAbs> createSVGPathSegLinetoHorizontalAbs(float x, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegLinetoHorizontalRel> createSVGPathSegLinetoHorizontalRel(float x, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegLinetoVerticalAbs> createSVGPathSegLinetoVerticalAbs(float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegLinetoVerticalRel> createSVGPathSegLinetoVerticalRel(float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y, SVGPathSegRole role = PathSegUndefinedRole);
-    PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole);
-
-    // Used in the bindings only.
-    SVGPathSegListPropertyTearOff* pathSegList();
-    SVGPathSegListPropertyTearOff* animatedPathSegList();
-    SVGPathSegListPropertyTearOff* normalizedPathSegList();
-    SVGPathSegListPropertyTearOff* animatedNormalizedPathSegList();
-
-    SVGPathByteStream* pathByteStream() const { return m_pathByteStream.get(); }
-    SVGAnimatedProperty* animatablePathSegList() const { return m_animatablePathSegList.get(); }
-
-    virtual void toPathData(Path&) const;
-    void pathSegListChanged(SVGPathSegRole);
-
-private:
-    SVGPathElement(const QualifiedName&, Document*);
-
-    virtual bool isValid() const { return SVGTests::isValid(); }
-
-    virtual void parseMappedAttribute(Attribute*);
-    virtual void synchronizeProperty(const QualifiedName&);
-    virtual void svgAttributeChanged(const QualifiedName&);
-    virtual bool supportsMarkers() const { return true; }
-
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPathElement, SVGNames::pathLengthAttr, float, PathLength, pathLength)
-
-    // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPathElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
-
-    void synchronizeD();
-
-protected:
-    OwnPtr<SVGPathByteStream> m_pathByteStream;
-    mutable SVGSynchronizableAnimatedProperty<SVGPathSegList> m_pathSegList;
-    RefPtr<SVGAnimatedPathSegListPropertyTearOff> m_animatablePathSegList;
-};
+    class SVGPathSeg;
+    class SVGPathSegArcAbs;
+    class SVGPathSegArcRel;
+    class SVGPathSegClosePath;
+    class SVGPathSegLinetoAbs;
+    class SVGPathSegLinetoRel;
+    class SVGPathSegMovetoAbs;
+    class SVGPathSegMovetoRel;
+    class SVGPathSegCurvetoCubicAbs;
+    class SVGPathSegCurvetoCubicRel;
+    class SVGPathSegLinetoVerticalAbs;
+    class SVGPathSegLinetoVerticalRel;
+    class SVGPathSegLinetoHorizontalAbs;
+    class SVGPathSegLinetoHorizontalRel;
+    class SVGPathSegCurvetoQuadraticAbs;
+    class SVGPathSegCurvetoQuadraticRel;
+    class SVGPathSegCurvetoCubicSmoothAbs;
+    class SVGPathSegCurvetoCubicSmoothRel;
+    class SVGPathSegCurvetoQuadraticSmoothAbs;
+    class SVGPathSegCurvetoQuadraticSmoothRel;
+
+    class SVGPathElement : public SVGStyledTransformableElement,
+                           public SVGTests,
+                           public SVGLangSpace,
+                           public SVGExternalResourcesRequired,
+                           public SVGAnimatedPathData {
+    public:
+        static PassRefPtr<SVGPathElement> create(const QualifiedName&, Document*);
+        
+        float getTotalLength();
+        FloatPoint getPointAtLength(float distance);
+        unsigned long getPathSegAtLength(float distance);
+
+        static PassRefPtr<SVGPathSegClosePath> createSVGPathSegClosePath();
+        static PassRefPtr<SVGPathSegMovetoAbs> createSVGPathSegMovetoAbs(float x, float y);
+        static PassRefPtr<SVGPathSegMovetoRel> createSVGPathSegMovetoRel(float x, float y);
+        static PassRefPtr<SVGPathSegLinetoAbs> createSVGPathSegLinetoAbs(float x, float y);
+        static PassRefPtr<SVGPathSegLinetoRel> createSVGPathSegLinetoRel(float x, float y);
+        static PassRefPtr<SVGPathSegCurvetoCubicAbs> createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2);
+        static PassRefPtr<SVGPathSegCurvetoCubicRel> createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2);
+        static PassRefPtr<SVGPathSegCurvetoQuadraticAbs> createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1);
+        static PassRefPtr<SVGPathSegCurvetoQuadraticRel> createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1);
+        static PassRefPtr<SVGPathSegArcAbs> createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag);
+        static PassRefPtr<SVGPathSegArcRel> createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag);
+        static PassRefPtr<SVGPathSegLinetoHorizontalAbs> createSVGPathSegLinetoHorizontalAbs(float x);
+        static PassRefPtr<SVGPathSegLinetoHorizontalRel> createSVGPathSegLinetoHorizontalRel(float x);
+        static PassRefPtr<SVGPathSegLinetoVerticalAbs> createSVGPathSegLinetoVerticalAbs(float y);
+        static PassRefPtr<SVGPathSegLinetoVerticalRel> createSVGPathSegLinetoVerticalRel(float y);
+        static PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2);
+        static PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2);
+        static PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y);
+        static PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y);
+
+        // Derived from: 'SVGAnimatedPathData'
+        virtual SVGPathSegList* pathSegList() const;
+        virtual SVGPathSegList* normalizedPathSegList() const;
+        virtual SVGPathSegList* animatedPathSegList() const;
+        virtual SVGPathSegList* animatedNormalizedPathSegList() const;
+
+        virtual void toPathData(Path&) const;
+
+    private:
+        SVGPathElement(const QualifiedName&, Document*);
+
+        virtual bool isValid() const { return SVGTests::isValid(); }
+
+        virtual void parseMappedAttribute(Attribute*);
+        virtual void svgAttributeChanged(const QualifiedName&);
+        virtual void synchronizeProperty(const QualifiedName&);
+
+        virtual bool supportsMarkers() const { return true; }
+
+        mutable RefPtr<SVGPathSegList> m_pathSegList;
+
+        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPathElement, SVGNames::pathLengthAttr, float, PathLength, pathLength)
+
+        // SVGExternalResourcesRequired
+        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPathElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    };
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGPathElement.idl b/WebCore/svg/SVGPathElement.idl
index 00a9d85..1c1dca7 100644
--- a/WebCore/svg/SVGPathElement.idl
+++ b/WebCore/svg/SVGPathElement.idl
@@ -31,7 +31,8 @@ module svg {
                                                  SVGLangSpace,
                                                  SVGExternalResourcesRequired,
                                                  SVGStylable,
-                                                 SVGTransformable {
+                                                 SVGTransformable,
+                                                 SVGAnimatedPathData {
         readonly attribute SVGAnimatedNumber pathLength;
 
         float getTotalLength();
@@ -106,11 +107,6 @@ module svg {
                                                                                       in float y);
         SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(in float x, 
                                                                                       in float y);
-
-        readonly attribute SVGPathSegList pathSegList;
-        readonly attribute SVGPathSegList normalizedPathSegList;
-        readonly attribute SVGPathSegList animatedPathSegList;
-        readonly attribute SVGPathSegList animatedNormalizedPathSegList;
     };
 
 }
diff --git a/WebCore/svg/SVGPathParserFactory.cpp b/WebCore/svg/SVGPathParserFactory.cpp
index deb0307..e707c20 100644
--- a/WebCore/svg/SVGPathParserFactory.cpp
+++ b/WebCore/svg/SVGPathParserFactory.cpp
@@ -27,7 +27,6 @@
 #include "SVGPathBuilder.h"
 #include "SVGPathByteStreamBuilder.h"
 #include "SVGPathByteStreamSource.h"
-#include "SVGPathElement.h"
 #include "SVGPathParser.h"
 #include "SVGPathSegListBuilder.h"
 #include "SVGPathSegListSource.h"
@@ -47,15 +46,13 @@ static SVGPathBuilder* globalSVGPathBuilder(Path& result)
     return s_builder;
 }
 
-static SVGPathSegListBuilder* globalSVGPathSegListBuilder(SVGPathElement* element, SVGPathSegRole role, SVGPathSegList& result)
+static SVGPathSegListBuilder* globalSVGPathSegListBuilder(SVGPathSegList* result)
 {
     static SVGPathSegListBuilder* s_builder = 0;
     if (!s_builder)
         s_builder = new SVGPathSegListBuilder;
 
-    s_builder->setCurrentSVGPathElement(element);
     s_builder->setCurrentSVGPathSegList(result);
-    s_builder->setCurrentSVGPathSegRole(role);
     return s_builder;
 }
 
@@ -140,43 +137,59 @@ bool SVGPathParserFactory::buildPathFromString(const String& d, Path& result)
     return ok;
 }
 
-bool SVGPathParserFactory::buildSVGPathByteStreamFromSVGPathSegList(const SVGPathSegList& list, OwnPtr<SVGPathByteStream>& result, PathParsingMode parsingMode)
+bool SVGPathParserFactory::buildPathFromByteStream(SVGPathByteStream* stream, Path& result)
 {
-    result = SVGPathByteStream::create();
-    if (list.isEmpty())
+    ASSERT(stream);
+    if (stream->isEmpty())
         return false;
 
-    SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result.get());
+    SVGPathBuilder* builder = globalSVGPathBuilder(result);
 
-    OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(list);
+    OwnPtr<SVGPathByteStreamSource> source = SVGPathByteStreamSource::create(stream);
     SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
-    bool ok = parser->parsePathDataFromSource(parsingMode);
+    bool ok = parser->parsePathDataFromSource(NormalizedParsing);
     parser->cleanup();
     return ok;
 }
 
-bool SVGPathParserFactory::buildPathFromByteStream(SVGPathByteStream* stream, Path& result)
+bool SVGPathParserFactory::buildPathFromSVGPathSegList(SVGPathSegList* pathSegList, Path& result)
 {
-    ASSERT(stream);
-    if (stream->isEmpty())
+    ASSERT(pathSegList);
+    if (!pathSegList->numberOfItems())
         return false;
 
     SVGPathBuilder* builder = globalSVGPathBuilder(result);
 
-    OwnPtr<SVGPathByteStreamSource> source = SVGPathByteStreamSource::create(stream);
+    OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(pathSegList);
     SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
     bool ok = parser->parsePathDataFromSource(NormalizedParsing);
     parser->cleanup();
     return ok;
 }
 
-bool SVGPathParserFactory::buildSVGPathSegListFromByteStream(SVGPathByteStream* stream, SVGPathElement* element, SVGPathSegList& result, PathParsingMode parsingMode)
+bool SVGPathParserFactory::buildSVGPathSegListFromString(const String& d, SVGPathSegList* result, PathParsingMode parsingMode)
+{
+    ASSERT(result);
+    if (d.isEmpty())
+        return false;
+
+    SVGPathSegListBuilder* builder = globalSVGPathSegListBuilder(result);
+
+    OwnPtr<SVGPathStringSource> source = SVGPathStringSource::create(d);
+    SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
+    bool ok = parser->parsePathDataFromSource(parsingMode);
+    parser->cleanup();
+    return ok;
+}
+
+bool SVGPathParserFactory::buildSVGPathSegListFromByteStream(SVGPathByteStream* stream, SVGPathSegList* result, PathParsingMode parsingMode)
 {
     ASSERT(stream);
+    ASSERT(result);
     if (stream->isEmpty())
         return false; 
 
-    SVGPathSegListBuilder* builder = globalSVGPathSegListBuilder(element, parsingMode == NormalizedParsing ? PathSegNormalizedRole : PathSegUnalteredRole, result);
+    SVGPathSegListBuilder* builder = globalSVGPathSegListBuilder(result);
 
     OwnPtr<SVGPathByteStreamSource> source = SVGPathByteStreamSource::create(stream);
     SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
@@ -201,15 +214,15 @@ bool SVGPathParserFactory::buildStringFromByteStream(SVGPathByteStream* stream,
     return ok;
 }
 
-bool SVGPathParserFactory::buildStringFromSVGPathSegList(const SVGPathSegList& list, String& result, PathParsingMode parsingMode)
+bool SVGPathParserFactory::buildStringFromSVGPathSegList(SVGPathSegList* pathSegList, String& result, PathParsingMode parsingMode)
 {
-    result = String();
-    if (list.isEmpty())
-        return false;
+    ASSERT(pathSegList);
+    if (!pathSegList->numberOfItems())
+        return false; 
 
     SVGPathStringBuilder* builder = globalSVGPathStringBuilder();
 
-    OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(list);
+    OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(pathSegList);
     SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
     bool ok = parser->parsePathDataFromSource(parsingMode);
     result = builder->result();
@@ -219,15 +232,16 @@ bool SVGPathParserFactory::buildStringFromSVGPathSegList(const SVGPathSegList& l
 
 bool SVGPathParserFactory::buildSVGPathByteStreamFromString(const String& d, OwnPtr<SVGPathByteStream>& result, PathParsingMode parsingMode)
 {
-    result = SVGPathByteStream::create();
     if (d.isEmpty())
         return false;
 
-    SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result.get());
+    OwnPtr<SVGPathByteStream> stream = SVGPathByteStream::create();
+    SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(stream.get());
 
     OwnPtr<SVGPathStringSource> source = SVGPathStringSource::create(d);
     SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
     bool ok = parser->parsePathDataFromSource(parsingMode);
+    result = stream.release();
     parser->cleanup();
     return ok;
 }
@@ -236,30 +250,31 @@ bool SVGPathParserFactory::buildAnimatedSVGPathByteStream(SVGPathByteStream* fro
 {
     ASSERT(fromStream);
     ASSERT(toStream);
-    result = SVGPathByteStream::create();
     if (fromStream->isEmpty() || toStream->isEmpty())
         return false;
 
-    SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result.get());
+    OwnPtr<SVGPathByteStream> stream = SVGPathByteStream::create();
+    SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(stream.get());
 
     OwnPtr<SVGPathByteStreamSource> fromSource = SVGPathByteStreamSource::create(fromStream);
     OwnPtr<SVGPathByteStreamSource> toSource = SVGPathByteStreamSource::create(toStream);
     SVGPathBlender* blender = globalSVGPathBlender();
     bool ok = blender->blendAnimatedPath(progress, fromSource.get(), toSource.get(), builder);
+    result = stream.release();
     blender->cleanup();
     return ok;
 }
 
-bool SVGPathParserFactory::getSVGPathSegAtLengthFromSVGPathByteStream(SVGPathByteStream* stream, float length, unsigned long& pathSeg)
+bool SVGPathParserFactory::getSVGPathSegAtLengthFromSVGPathSegList(SVGPathSegList* pathSegList, float length, unsigned long& pathSeg)
 {
-    ASSERT(stream);
-    if (stream->isEmpty())
-        return false;
+    ASSERT(pathSegList);
+    if (!pathSegList->numberOfItems())
+        return false; 
 
     PathTraversalState traversalState(PathTraversalState::TraversalSegmentAtLength);
     SVGPathTraversalStateBuilder* builder = globalSVGPathTraversalStateBuilder(traversalState, length);
 
-    OwnPtr<SVGPathByteStreamSource> source = SVGPathByteStreamSource::create(stream);
+    OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(pathSegList);
     SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
     bool ok = parser->parsePathDataFromSource(NormalizedParsing);
     pathSeg = builder->pathSegmentIndex();
diff --git a/WebCore/svg/SVGPathParserFactory.h b/WebCore/svg/SVGPathParserFactory.h
index 5ae5e8a..b8a2dd5 100644
--- a/WebCore/svg/SVGPathParserFactory.h
+++ b/WebCore/svg/SVGPathParserFactory.h
@@ -30,29 +30,25 @@
 
 namespace WebCore {
 
-class SVGPathElement;
-
 class SVGPathParserFactory {
 public:
     static SVGPathParserFactory* self();
 
-    // String/SVGPathByteStream -> Path
     bool buildPathFromString(const String&, Path&);
     bool buildPathFromByteStream(SVGPathByteStream*, Path&);
+    bool buildPathFromSVGPathSegList(SVGPathSegList*, Path&);
 
-    // SVGPathSegList/String -> SVGPathByteStream
-    bool buildSVGPathByteStreamFromSVGPathSegList(const SVGPathSegList&, OwnPtr<SVGPathByteStream>&, PathParsingMode);
-    bool buildSVGPathByteStreamFromString(const String&, OwnPtr<SVGPathByteStream>&, PathParsingMode);
+    bool buildSVGPathSegListFromString(const String&, SVGPathSegList*, PathParsingMode);
+    bool buildSVGPathSegListFromByteStream(SVGPathByteStream*, SVGPathSegList*, PathParsingMode);
 
-    // SVGPathByteStream/SVGPathSegList -> String
     bool buildStringFromByteStream(SVGPathByteStream*, String&, PathParsingMode);
-    bool buildStringFromSVGPathSegList(const SVGPathSegList&, String&, PathParsingMode);
+    bool buildStringFromSVGPathSegList(SVGPathSegList*, String&, PathParsingMode);
 
-    // SVGPathByteStream -> SVGPathSegList
-    bool buildSVGPathSegListFromByteStream(SVGPathByteStream*, SVGPathElement*, SVGPathSegList&, PathParsingMode);
+    bool buildSVGPathByteStreamFromString(const String&, OwnPtr<SVGPathByteStream>&, PathParsingMode);
 
     bool buildAnimatedSVGPathByteStream(SVGPathByteStream*, SVGPathByteStream*, OwnPtr<SVGPathByteStream>&, float);
-    bool getSVGPathSegAtLengthFromSVGPathByteStream(SVGPathByteStream*, float length, unsigned long& pathSeg);
+
+    bool getSVGPathSegAtLengthFromSVGPathSegList(SVGPathSegList*, float, unsigned long&);
 
 private:
     SVGPathParserFactory();
diff --git a/WebCore/svg/SVGPathSeg.cpp b/WebCore/svg/SVGPathSeg.cpp
new file mode 100644
index 0000000..5939976
--- /dev/null
+++ b/WebCore/svg/SVGPathSeg.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 Google, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#if ENABLE(SVG)
+#include "SVGPathSeg.h"
+
+#include "SVGNames.h"
+
+namespace WebCore {
+
+const QualifiedName& SVGPathSeg::associatedAttributeName() const
+{
+    return SVGNames::dAttr;
+}
+
+} // namespace WebCore
+#endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGPathSeg.h b/WebCore/svg/SVGPathSeg.h
index 4fce0c3..a2cf261 100644
--- a/WebCore/svg/SVGPathSeg.h
+++ b/WebCore/svg/SVGPathSeg.h
@@ -22,7 +22,8 @@
 #define SVGPathSeg_h
 
 #if ENABLE(SVG)
-#include <wtf/text/WTFString.h>
+#include <wtf/Forward.h>
+#include <wtf/RefCounted.h>
 
 namespace WebCore {
 
@@ -49,15 +50,10 @@ enum SVGPathSegType {
     PathSegCurveToQuadraticSmoothRel = 19
 };
 
-enum SVGPathSegRole {
-    PathSegUnalteredRole = 0,
-    PathSegNormalizedRole = 1,
-    PathSegUndefinedRole = 2
-};
+class QualifiedName;
 
 class SVGPathSeg : public RefCounted<SVGPathSeg> {
 public:
-    SVGPathSeg() { }
     virtual ~SVGPathSeg() { }
 
     // Forward declare these enums in the w3c naming scheme, for IDL generation
@@ -84,8 +80,31 @@ public:
         PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = PathSegCurveToQuadraticSmoothRel
     };
 
+
     virtual unsigned short pathSegType() const = 0;
     virtual String pathSegTypeAsLetter() const = 0;
+
+    const QualifiedName& associatedAttributeName() const;
+};
+
+class SVGPathSegSingleCoord : public SVGPathSeg { 
+public:
+    void setX(float x) { m_x = x; }
+    float x() const { return m_x; }
+
+    void setY(float y) { m_y = y; }
+    float y() const { return m_y; }
+
+protected:
+    SVGPathSegSingleCoord(float x, float y)
+        : m_x(x)
+        , m_y(y)
+    {
+    }
+
+private:
+    float m_x;
+    float m_y;
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGPathSeg.idl b/WebCore/svg/SVGPathSeg.idl
index f46518c..8641a48 100644
--- a/WebCore/svg/SVGPathSeg.idl
+++ b/WebCore/svg/SVGPathSeg.idl
@@ -28,29 +28,29 @@ module svg {
 
     interface [Conditional=SVG, CustomToJS, Polymorphic] SVGPathSeg {
         // Path Segment Types
-        const unsigned short PATHSEG_UNKNOWN = 0;
-        const unsigned short PATHSEG_CLOSEPATH = 1;
-        const unsigned short PATHSEG_MOVETO_ABS = 2;
-        const unsigned short PATHSEG_MOVETO_REL = 3;
-        const unsigned short PATHSEG_LINETO_ABS = 4;
-        const unsigned short PATHSEG_LINETO_REL = 5;
-        const unsigned short PATHSEG_CURVETO_CUBIC_ABS = 6;
-        const unsigned short PATHSEG_CURVETO_CUBIC_REL = 7;
-        const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS = 8;
-        const unsigned short PATHSEG_CURVETO_QUADRATIC_REL = 9;
-        const unsigned short PATHSEG_ARC_ABS = 10;
-        const unsigned short PATHSEG_ARC_REL = 11;
-        const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS = 12;
-        const unsigned short PATHSEG_LINETO_HORIZONTAL_REL = 13;
-        const unsigned short PATHSEG_LINETO_VERTICAL_ABS = 14;
-        const unsigned short PATHSEG_LINETO_VERTICAL_REL = 15;
-        const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
-        const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
+        const unsigned short PATHSEG_UNKNOWN                      = 0;
+        const unsigned short PATHSEG_CLOSEPATH                    = 1;
+        const unsigned short PATHSEG_MOVETO_ABS                   = 2;
+        const unsigned short PATHSEG_MOVETO_REL                   = 3;
+        const unsigned short PATHSEG_LINETO_ABS                   = 4;
+        const unsigned short PATHSEG_LINETO_REL                   = 5;
+        const unsigned short PATHSEG_CURVETO_CUBIC_ABS            = 6;
+        const unsigned short PATHSEG_CURVETO_CUBIC_REL            = 7;
+        const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS        = 8;
+        const unsigned short PATHSEG_CURVETO_QUADRATIC_REL        = 9;
+        const unsigned short PATHSEG_ARC_ABS                      = 10;
+        const unsigned short PATHSEG_ARC_REL                      = 11;
+        const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS        = 12;
+        const unsigned short PATHSEG_LINETO_HORIZONTAL_REL        = 13;
+        const unsigned short PATHSEG_LINETO_VERTICAL_ABS          = 14;
+        const unsigned short PATHSEG_LINETO_VERTICAL_REL          = 15;
+        const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16;
+        const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17;
         const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
         const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
 
-        readonly attribute unsigned short pathSegType;
-        readonly attribute DOMString pathSegTypeAsLetter;
+        readonly attribute unsigned short       pathSegType;
+        readonly attribute DOMString            pathSegTypeAsLetter;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegArc.cpp b/WebCore/svg/SVGPathSegArc.cpp
new file mode 100644
index 0000000..f606905
--- /dev/null
+++ b/WebCore/svg/SVGPathSegArc.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegArc.h"
+
+namespace WebCore {
+
+SVGPathSegArcAbs::SVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    : SVGPathSegArc(x, y, r1, r2, angle, largeArcFlag, sweepFlag)
+{
+}
+
+SVGPathSegArcRel::SVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    : SVGPathSegArc(x, y, r1, r2, angle, largeArcFlag, sweepFlag)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegArc.h b/WebCore/svg/SVGPathSegArc.h
index e835bc3..5d5c332 100644
--- a/WebCore/svg/SVGPathSegArc.h
+++ b/WebCore/svg/SVGPathSegArc.h
@@ -22,119 +22,88 @@
 #define SVGPathSegArc_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegArc : public SVGPathSegWithContext {
-public:
-    SVGPathSegArc(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
-        : SVGPathSegWithContext(element, role)
-        , m_x(x)
-        , m_y(y)
-        , m_r1(r1)
-        , m_r2(r2)
-        , m_angle(angle)
-        , m_largeArcFlag(largeArcFlag)
-        , m_sweepFlag(sweepFlag)
-    {
-    }
-
-    float x() const { return m_x; }
-    void setX(float x)
-    {
-        m_x = x;
-        commitChange();
-    }
-
-    float y() const { return m_y; }
-    void setY(float y)
-    {
-        m_y = y;
-        commitChange();
-    }
-
-    float r1() const { return m_r1; }
-    void setR1(float r1)
-    {
-        m_r1 = r1;
-        commitChange();
-    }
-
-    float r2() const { return m_r2; }
-    void setR2(float r2)
-    {
-        m_r2 = r2;
-        commitChange();
-    }
-
-    float angle() const { return m_angle; }
-    void setAngle(float angle)
-    {
-        m_angle = angle;
-        commitChange();
-    }
-
-    bool largeArcFlag() const { return m_largeArcFlag; }
-    void setLargeArcFlag(bool largeArcFlag)
-    {
-        m_largeArcFlag = largeArcFlag;
-        commitChange();
-    }
-
-    bool sweepFlag() const { return m_sweepFlag; }
-    void setSweepFlag(bool sweepFlag)
-    {
-        m_sweepFlag = sweepFlag;
-        commitChange();
-    }
-
-private:
-    float m_x;
-    float m_y;
-    float m_r1;
-    float m_r2;
-    float m_angle;
-
-    bool m_largeArcFlag : 1;
-    bool m_sweepFlag : 1;
-};
-
-class SVGPathSegArcAbs : public SVGPathSegArc {
-public:
-    static PassRefPtr<SVGPathSegArcAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
-    {
-        return adoptRef(new SVGPathSegArcAbs(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag));
-    }
-
-private:
-    SVGPathSegArcAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
-        : SVGPathSegArc(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_ARC_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "A"; }
-};
-
-class SVGPathSegArcRel : public SVGPathSegArc {
-public:
-    static PassRefPtr<SVGPathSegArcRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
-    {
-        return adoptRef(new SVGPathSegArcRel(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag));
-    }
-
-private:
-    SVGPathSegArcRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
-        : SVGPathSegArc(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_ARC_REL; }
-    virtual String pathSegTypeAsLetter() const { return "a"; }
-};
+    class SVGPathSegArc : public SVGPathSeg {
+    public:
+        SVGPathSegArc(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+            : m_x(x)
+            , m_y(y)
+            , m_r1(r1)
+            , m_r2(r2)
+            , m_angle(angle)
+            , m_largeArcFlag(largeArcFlag)
+            , m_sweepFlag(sweepFlag)
+        {
+        }
+
+        void setX(float x) { m_x = x; }
+        float x() const { return m_x; }
+
+        void setY(float y) { m_y = y; }
+        float y() const { return m_y; }
+
+        void setR1(float r1) { m_r1 = r1; }
+        float r1() const { return m_r1; }
+
+        void setR2(float r2) { m_r2 = r2; }
+        float r2() const { return m_r2; }
+
+        void setAngle(float angle) { m_angle = angle; }
+        float angle() const { return m_angle; }
+
+        void setLargeArcFlag(bool largeArcFlag) { m_largeArcFlag = largeArcFlag; }
+        bool largeArcFlag() const { return m_largeArcFlag; }
+
+        void setSweepFlag(bool sweepFlag) { m_sweepFlag = sweepFlag; }
+        bool sweepFlag() const { return m_sweepFlag; }
+
+    private:
+        float m_x;
+        float m_y;
+        float m_r1;
+        float m_r2;
+        float m_angle;
+
+        bool m_largeArcFlag    : 1;
+        bool m_sweepFlag : 1;
+    };
+
+    class SVGPathSegArcAbs : public SVGPathSegArc {
+    public:
+        static PassRefPtr<SVGPathSegArcAbs> create(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+        {
+            return adoptRef(new SVGPathSegArcAbs(x, y, r1, r2, angle, largeArcFlag, sweepFlag));
+        }
+
+    private:
+        SVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_ARC_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "A"; }
+    };
+
+    class SVGPathSegArcRel : public SVGPathSegArc {
+    public:
+        static PassRefPtr<SVGPathSegArcRel> create(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+        {
+            return adoptRef(new SVGPathSegArcRel(x, y, r1, r2, angle, largeArcFlag, sweepFlag));
+        }
+
+    private:
+        SVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_ARC_REL; }
+        virtual String pathSegTypeAsLetter() const { return "a"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegArcAbs.idl b/WebCore/svg/SVGPathSegArcAbs.idl
index 7568155..bdc45a7 100644
--- a/WebCore/svg/SVGPathSegArcAbs.idl
+++ b/WebCore/svg/SVGPathSegArcAbs.idl
@@ -27,13 +27,20 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegArcAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float r1;
-        attribute [StrictTypeChecking] float r2;
-        attribute [StrictTypeChecking] float angle;
-        attribute [StrictTypeChecking] boolean largeArcFlag;
-        attribute [StrictTypeChecking] boolean sweepFlag;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   r1
+                     /*setter raises(DOMException)*/;
+                 attribute float   r2
+                     /*setter raises(DOMException)*/;
+                 attribute float   angle
+                     /*setter raises(DOMException)*/;
+                 attribute boolean largeArcFlag
+                     /*setter raises(DOMException)*/;
+                 attribute boolean sweepFlag
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegArcRel.idl b/WebCore/svg/SVGPathSegArcRel.idl
index 78852d8..8b08d68 100644
--- a/WebCore/svg/SVGPathSegArcRel.idl
+++ b/WebCore/svg/SVGPathSegArcRel.idl
@@ -27,13 +27,20 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegArcRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float r1;
-        attribute [StrictTypeChecking] float r2;
-        attribute [StrictTypeChecking] float angle;
-        attribute [StrictTypeChecking] boolean largeArcFlag;
-        attribute [StrictTypeChecking] boolean sweepFlag;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   r1
+                     /*setter raises(DOMException)*/;
+                 attribute float   r2
+                     /*setter raises(DOMException)*/;
+                 attribute float   angle
+                     /*setter raises(DOMException)*/;
+                 attribute boolean largeArcFlag
+                     /*setter raises(DOMException)*/;
+                 attribute boolean sweepFlag
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGStylable.cpp b/WebCore/svg/SVGPathSegClosePath.cpp
similarity index 100%
copy from WebCore/svg/SVGStylable.cpp
copy to WebCore/svg/SVGPathSegClosePath.cpp
diff --git a/WebCore/svg/SVGPathSegClosePath.h b/WebCore/svg/SVGPathSegClosePath.h
index c3b2c14..8f074ed 100644
--- a/WebCore/svg/SVGPathSegClosePath.h
+++ b/WebCore/svg/SVGPathSegClosePath.h
@@ -22,22 +22,18 @@
 #define SVGPathSegClosePath_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegClosePath : public SVGPathSegWithContext {
+class SVGPathSegClosePath : public SVGPathSeg {
 public:
-    static PassRefPtr<SVGPathSegClosePath> create(SVGPathElement* element, SVGPathSegRole role)
-    {
-        return adoptRef(new SVGPathSegClosePath(element, role));
-    }
+    static PassRefPtr<SVGPathSegClosePath> create() { return adoptRef(new SVGPathSegClosePath); }
 
 private:
-    SVGPathSegClosePath(SVGPathElement* element, SVGPathSegRole role)
-        : SVGPathSegWithContext(element, role)
-    {
-    }
+    SVGPathSegClosePath() { }
 
     virtual unsigned short pathSegType() const { return PATHSEG_CLOSEPATH; }
     virtual String pathSegTypeAsLetter() const { return "Z"; }
diff --git a/WebCore/svg/SVGPathSegCurvetoCubic.cpp b/WebCore/svg/SVGPathSegCurvetoCubic.cpp
new file mode 100644
index 0000000..33f2d96
--- /dev/null
+++ b/WebCore/svg/SVGPathSegCurvetoCubic.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegCurvetoCubic.h"
+
+namespace WebCore {
+
+SVGPathSegCurvetoCubicAbs::SVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2)
+    : SVGPathSegCurvetoCubic(x, y, x1, y1, x2, y2)
+{
+}
+
+SVGPathSegCurvetoCubicRel::SVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2)
+    : SVGPathSegCurvetoCubic(x, y, x1, y1, x2, y2)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoCubic.h b/WebCore/svg/SVGPathSegCurvetoCubic.h
index 169d8f8..ae4a21d 100644
--- a/WebCore/svg/SVGPathSegCurvetoCubic.h
+++ b/WebCore/svg/SVGPathSegCurvetoCubic.h
@@ -22,109 +22,74 @@
 #define SVGPathSegCurvetoCubic_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegCurvetoCubic : public SVGPathSegWithContext { 
-public:
-    SVGPathSegCurvetoCubic(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
-        : SVGPathSegWithContext(element, role)
-        , m_x(x)
-        , m_y(y)
-        , m_x1(x1)
-        , m_y1(y1)
-        , m_x2(x2)
-        , m_y2(y2)
-    {
-    }
-
-    float x() const { return m_x; }
-    void setX(float x)
-    {
-        m_x = x;
-        commitChange();
-    }
-
-    float y() const { return m_y; }
-    void setY(float y)
-    {
-        m_y = y;
-        commitChange();
-    }
-
-    float x1() const { return m_x1; }
-    void setX1(float x1)
-    {
-        m_x1 = x1;
-        commitChange();
-    }
-
-    float y1() const { return m_y1; }
-    void setY1(float y1)
-    {
-        m_y1 = y1;
-        commitChange();
-    }
-
-    float x2() const { return m_x2; }
-    void setX2(float x2)
-    {
-        m_x2 = x2;
-        commitChange();
-    }
-
-    float y2() const { return m_y2; }
-    void setY2(float y2)
-    {
-        m_y2 = y2;
-        commitChange();
-    }
-
-private:
-    float m_x;
-    float m_y;
-    float m_x1;
-    float m_y1;
-    float m_x2;
-    float m_y2;
-};
-
-class SVGPathSegCurvetoCubicAbs : public SVGPathSegCurvetoCubic { 
-public:
-    static PassRefPtr<SVGPathSegCurvetoCubicAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
-    {
-        return adoptRef(new SVGPathSegCurvetoCubicAbs(element, role, x, y, x1, y1, x2, y2));
-    }
-
-private:
-    SVGPathSegCurvetoCubicAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
-        : SVGPathSegCurvetoCubic(element, role, x, y, x1, y1, x2, y2)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "C"; }
-};
-
-class SVGPathSegCurvetoCubicRel : public SVGPathSegCurvetoCubic { 
-public:
-    static PassRefPtr<SVGPathSegCurvetoCubicRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
-    {
-        return adoptRef(new SVGPathSegCurvetoCubicRel(element, role, x, y, x1, y1, x2, y2));
-    }
-
-private:
-    SVGPathSegCurvetoCubicRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
-        : SVGPathSegCurvetoCubic(element, role, x, y, x1, y1, x2, y2)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_REL; }
-    virtual String pathSegTypeAsLetter() const { return "c"; }
-};
+    class SVGPathSegCurvetoCubic : public SVGPathSeg { 
+    public:
+        SVGPathSegCurvetoCubic(float x, float y, float x1, float y1, float x2, float y2) : m_x(x), m_y(y), m_x1(x1), m_y1(y1), m_x2(x2), m_y2(y2) { }
+
+        void setX(float x) { m_x = x; }
+        float x() const { return m_x; }
+
+        void setY(float y) { m_y = y; }
+        float y() const { return m_y; }
+
+        void setX1(float x1) { m_x1 = x1; }
+        float x1() const { return m_x1; }
+
+        void setY1(float y1) { m_y1 = y1; }
+        float y1() const { return m_y1; }
+
+        void setX2(float x2) { m_x2 = x2; }
+        float x2() const { return m_x2; }
+
+        void setY2(float y2) { m_y2 = y2; }
+        float y2() const { return m_y2; }
+
+    private:
+        float m_x;
+        float m_y;
+        float m_x1;
+        float m_y1;
+        float m_x2;
+        float m_y2;
+    };
+
+    class SVGPathSegCurvetoCubicAbs : public SVGPathSegCurvetoCubic { 
+    public:
+        static PassRefPtr<SVGPathSegCurvetoCubicAbs> create(float x, float y, float x1, float y1, float x2, float y2)
+        {
+            return adoptRef(new SVGPathSegCurvetoCubicAbs(x, y, x1, y1, x2, y2));
+        }
+
+    private:
+        SVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "C"; }
+    };
+
+    class SVGPathSegCurvetoCubicRel : public SVGPathSegCurvetoCubic { 
+    public:
+        static PassRefPtr<SVGPathSegCurvetoCubicRel> create(float x, float y, float x1, float y1, float x2, float y2)
+        {
+            return adoptRef(new SVGPathSegCurvetoCubicRel(x, y, x1, y1, x2, y2));
+        }
+
+    private:
+        SVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_REL; }
+        virtual String pathSegTypeAsLetter() const { return "c"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoCubicAbs.idl b/WebCore/svg/SVGPathSegCurvetoCubicAbs.idl
index 4baf113..6b16809 100644
--- a/WebCore/svg/SVGPathSegCurvetoCubicAbs.idl
+++ b/WebCore/svg/SVGPathSegCurvetoCubicAbs.idl
@@ -22,17 +22,23 @@
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */ 
+ */
 
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoCubicAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float x1;
-        attribute [StrictTypeChecking] float y1;
-        attribute [StrictTypeChecking] float x2;
-        attribute [StrictTypeChecking] float y2;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   x1
+                     /*setter raises(DOMException)*/;
+                 attribute float   y1
+                     /*setter raises(DOMException)*/;
+                 attribute float   x2
+                     /*setter raises(DOMException)*/;
+                 attribute float   y2
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoCubicRel.idl b/WebCore/svg/SVGPathSegCurvetoCubicRel.idl
index 7e9fb7f..be6606d 100644
--- a/WebCore/svg/SVGPathSegCurvetoCubicRel.idl
+++ b/WebCore/svg/SVGPathSegCurvetoCubicRel.idl
@@ -22,17 +22,23 @@
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */ 
+ */
 
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoCubicRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float x1;
-        attribute [StrictTypeChecking] float y1;
-        attribute [StrictTypeChecking] float x2;
-        attribute [StrictTypeChecking] float y2;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   x1
+                     /*setter raises(DOMException)*/;
+                 attribute float   y1
+                     /*setter raises(DOMException)*/;
+                 attribute float   x2
+                     /*setter raises(DOMException)*/;
+                 attribute float   y2
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoCubicSmooth.cpp b/WebCore/svg/SVGPathSegCurvetoCubicSmooth.cpp
new file mode 100644
index 0000000..a7625e3
--- /dev/null
+++ b/WebCore/svg/SVGPathSegCurvetoCubicSmooth.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#if ENABLE(SVG)
+#include "SVGPathSegCurvetoCubicSmooth.h"
+
+namespace WebCore {
+
+SVGPathSegCurvetoCubicSmoothAbs::SVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2)
+    : SVGPathSegCurvetoCubicSmooth(x, y, x2, y2)
+{
+}
+
+SVGPathSegCurvetoCubicSmoothRel::SVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2)
+    : SVGPathSegCurvetoCubicSmooth(x, y, x2, y2)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h b/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h
index a654297..2227951 100644
--- a/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h
+++ b/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h
@@ -22,89 +22,62 @@
 #define SVGPathSegCurvetoCubicSmooth_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegCurvetoCubicSmooth : public SVGPathSegWithContext {
-public:
-    SVGPathSegCurvetoCubicSmooth(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
-        : SVGPathSegWithContext(element, role)
-        , m_x(x)
-        , m_y(y)
-        , m_x2(x2)
-        , m_y2(y2)
-    {
-    }
-
-    float x() const { return m_x; }
-    void setX(float x)
-    {
-        m_x = x;
-        commitChange();
-    }
-
-    float y() const { return m_y; }
-    void setY(float y)
-    {
-        m_y = y;
-        commitChange();
-    }
-
-    float x2() const { return m_x2; }
-    void setX2(float x2)
-    {
-        m_x2 = x2;
-        commitChange();
-    }
-
-    float y2() const { return m_y2; }
-    void setY2(float y2)
-    {
-        m_y2 = y2;
-        commitChange();
-    }
-
-private:
-    float m_x;
-    float m_y;
-    float m_x2;
-    float m_y2;
-};
-
-class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSegCurvetoCubicSmooth { 
-public:
-    static PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
-    {
-        return adoptRef(new SVGPathSegCurvetoCubicSmoothAbs(element, role, x, y, x2, y2));
-    }
-
-private:
-    SVGPathSegCurvetoCubicSmoothAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
-        : SVGPathSegCurvetoCubicSmooth(element, role, x, y, x2, y2)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "S"; }
-};
-
-class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSegCurvetoCubicSmooth { 
-public:
-    static PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
-    {
-        return adoptRef(new SVGPathSegCurvetoCubicSmoothRel(element, role, x, y, x2, y2));
-    }
-
-private:
-    SVGPathSegCurvetoCubicSmoothRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
-        : SVGPathSegCurvetoCubicSmooth(element, role, x, y, x2, y2)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_SMOOTH_REL; }
-    virtual String pathSegTypeAsLetter() const { return "s"; }
-};
+    class SVGPathSegCurvetoCubicSmooth : public SVGPathSeg {
+    public:
+        SVGPathSegCurvetoCubicSmooth(float x, float y, float x2, float y2)
+            : m_x(x)
+            , m_y(y)
+            , m_x2(x2)
+            , m_y2(y2)
+        {
+        }
+
+        void setX(float x) { m_x = x; }
+        float x() const { return m_x; }
+
+        void setY(float y) { m_y = y; }
+        float y() const { return m_y; }
+
+        void setX2(float x2) { m_x2 = x2; }
+        float x2() const { return m_x2; }
+
+        void setY2(float y2) { m_y2 = y2; }
+        float y2() const { return m_y2; }
+
+    private:
+        float m_x;
+        float m_y;
+        float m_x2;
+        float m_y2;
+    };
+
+    class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSegCurvetoCubicSmooth { 
+    public:
+        static PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> create(float x, float y, float x2, float y2) { return adoptRef(new SVGPathSegCurvetoCubicSmoothAbs(x, y, x2, y2)); }
+
+    private:
+        SVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "S"; }
+    };
+
+    class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSegCurvetoCubicSmooth { 
+    public:
+        static PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> create(float x, float y, float x2, float y2) { return adoptRef(new SVGPathSegCurvetoCubicSmoothRel(x, y, x2, y2)); }
+
+    private:
+        SVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_SMOOTH_REL; }
+        virtual String pathSegTypeAsLetter() const { return "s"; }
+    };
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl b/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl
index 0779c9f..d31582e 100644
--- a/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl
+++ b/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl
@@ -22,15 +22,19 @@
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */ 
+ */
 
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoCubicSmoothAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float x2;
-        attribute [StrictTypeChecking] float y2;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   x2
+                     /*setter raises(DOMException)*/;
+                 attribute float   y2
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl b/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl
index d4f71e4..2dd71f0 100644
--- a/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl
+++ b/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl
@@ -22,15 +22,19 @@
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */ 
+ */
 
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoCubicSmoothRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float x2;
-        attribute [StrictTypeChecking] float y2;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   x2
+                     /*setter raises(DOMException)*/;
+                 attribute float   y2
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadratic.cpp b/WebCore/svg/SVGPathSegCurvetoQuadratic.cpp
new file mode 100644
index 0000000..bf2bb4d
--- /dev/null
+++ b/WebCore/svg/SVGPathSegCurvetoQuadratic.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegCurvetoQuadratic.h"
+
+namespace WebCore {
+
+SVGPathSegCurvetoQuadraticAbs::SVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1)
+    : SVGPathSegCurvetoQuadratic(x, y, x1, y1)
+{
+}
+
+SVGPathSegCurvetoQuadraticRel::SVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1)
+    : SVGPathSegCurvetoQuadratic(x, y, x1, y1)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadratic.h b/WebCore/svg/SVGPathSegCurvetoQuadratic.h
index 894f787..f84cfaa 100644
--- a/WebCore/svg/SVGPathSegCurvetoQuadratic.h
+++ b/WebCore/svg/SVGPathSegCurvetoQuadratic.h
@@ -22,91 +22,66 @@
 #define SVGPathSegCurvetoQuadratic_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegCurvetoQuadratic : public SVGPathSegWithContext { 
-public:
-    SVGPathSegCurvetoQuadratic(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
-        : SVGPathSegWithContext(element, role)
-        , m_x(x)
-        , m_y(y)
-        , m_x1(x1)
-        , m_y1(y1)
-    {
-    }
-
-    float x() const { return m_x; }
-    void setX(float x)
-    {
-        m_x = x;
-        commitChange();
-    }
-
-    float y() const { return m_y; }
-    void setY(float y)
-    {
-        m_y = y;
-        commitChange();
-    }
-
-    float x1() const { return m_x1; }
-    void setX1(float x1)
-    {
-        m_x1 = x1;
-        commitChange();
-    }
-
-    float y1() const { return m_y1; }
-    void setY1(float y1)
-    {
-        m_y1 = y1;
-        commitChange();
-    }
-
-private:
-    float m_x;
-    float m_y;
-    float m_x1;
-    float m_y1;
-};
-
-class SVGPathSegCurvetoQuadraticAbs : public SVGPathSegCurvetoQuadratic {
-public:
-    static PassRefPtr<SVGPathSegCurvetoQuadraticAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
-    {
-        return adoptRef(new SVGPathSegCurvetoQuadraticAbs(element, role, x, y, x1, y1));
-    }
-
-private:
-    SVGPathSegCurvetoQuadraticAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
-        : SVGPathSegCurvetoQuadratic(element, role, x, y, x1, y1)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "Q"; }
-};
-
-class SVGPathSegCurvetoQuadraticRel : public SVGPathSegCurvetoQuadratic {
-public:
-    static PassRefPtr<SVGPathSegCurvetoQuadraticRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
-    {
-        return adoptRef(new SVGPathSegCurvetoQuadraticRel(element, role, x, y, x1, y1));
-    }
-
-private:
-    SVGPathSegCurvetoQuadraticRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
-        : SVGPathSegCurvetoQuadratic(element, role, x, y, x1, y1)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_REL; }
-    virtual String pathSegTypeAsLetter() const { return "q"; }
-};
+    class SVGPathSegCurvetoQuadratic : public SVGPathSeg { 
+    public:
+        SVGPathSegCurvetoQuadratic(float x, float y, float x1, float y1)
+            : m_x(x)
+            , m_y(y)
+            , m_x1(x1)
+            , m_y1(y1)
+        {
+        }
+
+        void setX(float x) { m_x = x; }
+        float x() const { return m_x; }
+
+        void setY(float y) { m_y = y; }
+        float y() const { return m_y; }
+
+        void setX1(float x1) { m_x1 = x1; }
+        float x1() const { return m_x1; }
+
+        void setY1(float y1) { m_y1 = y1; }
+        float y1() const { return m_y1; }
+
+    private:
+        float m_x;
+        float m_y;
+        float m_x1;
+        float m_y1;
+    };
+
+    class SVGPathSegCurvetoQuadraticAbs : public SVGPathSegCurvetoQuadratic {
+    public:
+        static PassRefPtr<SVGPathSegCurvetoQuadraticAbs> create(float x, float y, float x1, float y1) { return adoptRef(new SVGPathSegCurvetoQuadraticAbs(x, y, x1, y1)); }
+
+    private:
+        SVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "Q"; }
+    };
+
+    class SVGPathSegCurvetoQuadraticRel : public SVGPathSegCurvetoQuadratic {
+    public:
+        static PassRefPtr<SVGPathSegCurvetoQuadraticRel> create(float x, float y, float x1, float y1) { return adoptRef(new SVGPathSegCurvetoQuadraticRel(x, y, x1, y1)); }
+
+    private:
+        SVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_REL; }
+        virtual String pathSegTypeAsLetter() const { return "q"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl b/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl
index 1fbb461..9b09222 100644
--- a/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl
+++ b/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl
@@ -27,10 +27,14 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoQuadraticAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float x1;
-        attribute [StrictTypeChecking] float y1;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   x1
+                     /*setter raises(DOMException)*/;
+                 attribute float   y1
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadraticRel.idl b/WebCore/svg/SVGPathSegCurvetoQuadraticRel.idl
index 48a39fb..01e1e6d 100644
--- a/WebCore/svg/SVGPathSegCurvetoQuadraticRel.idl
+++ b/WebCore/svg/SVGPathSegCurvetoQuadraticRel.idl
@@ -27,10 +27,14 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoQuadraticRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
-        attribute [StrictTypeChecking] float x1;
-        attribute [StrictTypeChecking] float y1;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
+                 attribute float   x1
+                     /*setter raises(DOMException)*/;
+                 attribute float   y1
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.cpp b/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.cpp
new file mode 100644
index 0000000..6a7e9f7
--- /dev/null
+++ b/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegCurvetoQuadraticSmooth.h"
+
+namespace WebCore {
+
+SVGPathSegCurvetoQuadraticSmoothAbs::SVGPathSegCurvetoQuadraticSmoothAbs(float x, float y)
+    : SVGPathSegSingleCoord(x, y)
+{
+}
+
+SVGPathSegCurvetoQuadraticSmoothRel::SVGPathSegCurvetoQuadraticSmoothRel(float x, float y)
+    : SVGPathSegSingleCoord(x, y)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.h b/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.h
index b66062a..109799e 100644
--- a/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.h
+++ b/WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.h
@@ -22,45 +22,37 @@
 #define SVGPathSegCurvetoQuadraticSmooth_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegCurvetoQuadraticSmoothAbs : public SVGPathSegSingleCoordinate {
-public:
-    static PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-    {
-        return adoptRef(new SVGPathSegCurvetoQuadraticSmoothAbs(element, role, x, y));
-    }
+    class SVGPathSegCurvetoQuadraticSmoothAbs : public SVGPathSegSingleCoord {
+    public:
+        static PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> create(float x, float y) { return adoptRef(new SVGPathSegCurvetoQuadraticSmoothAbs(x, y)); }
 
-private:
-    SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegSingleCoordinate(element, role, x, y)
-    {
-    }
+    private:
+        SVGPathSegCurvetoQuadraticSmoothAbs(float x, float y);
 
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "T"; }
-};
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "T"; }
+    };
 
-class SVGPathSegCurvetoQuadraticSmoothRel : public SVGPathSegSingleCoordinate {
-public:
-    static PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-    {
-        return adoptRef(new SVGPathSegCurvetoQuadraticSmoothRel(element, role, x, y));
-    }
+    class SVGPathSegCurvetoQuadraticSmoothRel : public SVGPathSegSingleCoord {
+    public:
+        static PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> create(float x, float y) { return adoptRef(new SVGPathSegCurvetoQuadraticSmoothRel(x, y)); }
 
-private:
-    SVGPathSegCurvetoQuadraticSmoothRel(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegSingleCoordinate(element, role, x, y)
-    {
-    }
+    private:
+        SVGPathSegCurvetoQuadraticSmoothRel(float x, float y);
 
-    virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; }
-    virtual String pathSegTypeAsLetter() const { return "t"; }
-};
+        virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; }
+        virtual String pathSegTypeAsLetter() const { return "t"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl b/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl
index ad02534..4568538 100644
--- a/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl
+++ b/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl
@@ -27,8 +27,10 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoQuadraticSmoothAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl b/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl
index 6d58b8f..5ffde79 100644
--- a/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl
+++ b/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl
@@ -27,8 +27,10 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegCurvetoQuadraticSmoothRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegLineto.cpp b/WebCore/svg/SVGPathSegLineto.cpp
new file mode 100644
index 0000000..746f2c1
--- /dev/null
+++ b/WebCore/svg/SVGPathSegLineto.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegLineto.h"
+
+namespace WebCore {
+
+SVGPathSegLinetoAbs::SVGPathSegLinetoAbs(float x, float y)
+    : SVGPathSegSingleCoord(x, y)
+{
+}
+
+SVGPathSegLinetoRel::SVGPathSegLinetoRel(float x, float y)
+    : SVGPathSegSingleCoord(x, y)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegLineto.h b/WebCore/svg/SVGPathSegLineto.h
index c995c98..3cd3b7f 100644
--- a/WebCore/svg/SVGPathSegLineto.h
+++ b/WebCore/svg/SVGPathSegLineto.h
@@ -22,45 +22,37 @@
 #define SVGPathSegLineto_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegLinetoAbs : public SVGPathSegSingleCoordinate { 
-public:
-    static PassRefPtr<SVGPathSegLinetoAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-    {
-        return adoptRef(new SVGPathSegLinetoAbs(element, role, x, y));
-    }
+    class SVGPathSegLinetoAbs : public SVGPathSegSingleCoord { 
+    public:
+        static PassRefPtr<SVGPathSegLinetoAbs> create(float x, float y) { return adoptRef(new SVGPathSegLinetoAbs(x, y)); }
 
-private:
-    SVGPathSegLinetoAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegSingleCoordinate(element, role, x, y)
-    {
-    }
+    private:
+        SVGPathSegLinetoAbs(float x, float y);
 
-    virtual unsigned short pathSegType() const { return PATHSEG_LINETO_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "L"; }
-};
+        virtual unsigned short pathSegType() const { return PATHSEG_LINETO_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "L"; }
+    };
 
-class SVGPathSegLinetoRel : public SVGPathSegSingleCoordinate { 
-public:
-    static PassRefPtr<SVGPathSegLinetoRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-    {
-        return adoptRef(new SVGPathSegLinetoRel(element, role, x, y));
-    }
+    class SVGPathSegLinetoRel : public SVGPathSegSingleCoord { 
+    public:
+        static PassRefPtr<SVGPathSegLinetoRel> create(float x, float y) { return adoptRef(new SVGPathSegLinetoRel(x, y)); }
 
-private:
-    SVGPathSegLinetoRel(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegSingleCoordinate(element, role, x, y)
-    {
-    }
+    private:
+        SVGPathSegLinetoRel(float x, float y);
 
-    virtual unsigned short pathSegType() const { return PATHSEG_LINETO_REL; }
-    virtual String pathSegTypeAsLetter() const { return "l"; }
-};
+        virtual unsigned short pathSegType() const { return PATHSEG_LINETO_REL; }
+        virtual String pathSegTypeAsLetter() const { return "l"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegLinetoAbs.idl b/WebCore/svg/SVGPathSegLinetoAbs.idl
index c428a2b..85dfca5 100644
--- a/WebCore/svg/SVGPathSegLinetoAbs.idl
+++ b/WebCore/svg/SVGPathSegLinetoAbs.idl
@@ -27,8 +27,10 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegLinetoAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegLinetoHorizontal.cpp b/WebCore/svg/SVGPathSegLinetoHorizontal.cpp
new file mode 100644
index 0000000..85f2896
--- /dev/null
+++ b/WebCore/svg/SVGPathSegLinetoHorizontal.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegLinetoHorizontal.h"
+
+namespace WebCore {
+
+SVGPathSegLinetoHorizontalAbs::SVGPathSegLinetoHorizontalAbs(float x)
+    : SVGPathSegLinetoHorizontal(x)
+{
+}
+
+SVGPathSegLinetoHorizontalRel::SVGPathSegLinetoHorizontalRel(float x)
+    : SVGPathSegLinetoHorizontal(x)
+{
+}
+
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegLinetoHorizontal.h b/WebCore/svg/SVGPathSegLinetoHorizontal.h
index d175cdd..da59f05 100644
--- a/WebCore/svg/SVGPathSegLinetoHorizontal.h
+++ b/WebCore/svg/SVGPathSegLinetoHorizontal.h
@@ -22,64 +22,48 @@
 #define SVGPathSegLinetoHorizontal_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegLinetoHorizontal : public SVGPathSegWithContext {
-public:
-    SVGPathSegLinetoHorizontal(SVGPathElement* element, SVGPathSegRole role, float x)
-        : SVGPathSegWithContext(element, role)
-        , m_x(x)
-    {
-    }
-
-    float x() const { return m_x; }
-    void setX(float x)
-    {
-        m_x = x;
-        commitChange();
-    }
-
-private:
-    float m_x;
-};
-
-class SVGPathSegLinetoHorizontalAbs : public SVGPathSegLinetoHorizontal {
-public:
-    static PassRefPtr<SVGPathSegLinetoHorizontalAbs> create(SVGPathElement* element, SVGPathSegRole role, float x)
-    {
-        return adoptRef(new SVGPathSegLinetoHorizontalAbs(element, role, x));
-    }
-
-private:
-    SVGPathSegLinetoHorizontalAbs(SVGPathElement* element, SVGPathSegRole role, float x)
-        : SVGPathSegLinetoHorizontal(element, role, x)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_LINETO_HORIZONTAL_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "H"; }
-};
-
-class SVGPathSegLinetoHorizontalRel : public SVGPathSegLinetoHorizontal {
-public:
-    static PassRefPtr<SVGPathSegLinetoHorizontalRel> create(SVGPathElement* element, SVGPathSegRole role, float x)
-    {
-        return adoptRef(new SVGPathSegLinetoHorizontalRel(element, role, x));
-    }
-
-private:
-    SVGPathSegLinetoHorizontalRel(SVGPathElement* element, SVGPathSegRole role, float x)
-        : SVGPathSegLinetoHorizontal(element, role, x)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_LINETO_HORIZONTAL_REL; }
-    virtual String pathSegTypeAsLetter() const { return "h"; }
-};
+    class SVGPathSegLinetoHorizontal : public SVGPathSeg {
+    public:
+        SVGPathSegLinetoHorizontal(float x) : SVGPathSeg(), m_x(x) {}
+
+        void setX(float x) { m_x = x; }
+        float x() const { return m_x; }
+
+    private:
+        float m_x;
+    };
+
+    class SVGPathSegLinetoHorizontalAbs : public SVGPathSegLinetoHorizontal {
+    public:
+        static PassRefPtr<SVGPathSegLinetoHorizontalAbs> create(float x) { return adoptRef(new SVGPathSegLinetoHorizontalAbs(x)); }
+
+    private:
+        SVGPathSegLinetoHorizontalAbs(float x);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_LINETO_HORIZONTAL_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "H"; }
+    };
+
+    class SVGPathSegLinetoHorizontalRel : public SVGPathSegLinetoHorizontal {
+    public:
+        static PassRefPtr<SVGPathSegLinetoHorizontalRel> create(float x) { return adoptRef(new SVGPathSegLinetoHorizontalRel(x)); }
+
+    private:
+        SVGPathSegLinetoHorizontalRel(float x);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_LINETO_HORIZONTAL_REL; }
+        virtual String pathSegTypeAsLetter() const { return "h"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegLinetoHorizontalAbs.idl b/WebCore/svg/SVGPathSegLinetoHorizontalAbs.idl
index 522f997..eadb612 100644
--- a/WebCore/svg/SVGPathSegLinetoHorizontalAbs.idl
+++ b/WebCore/svg/SVGPathSegLinetoHorizontalAbs.idl
@@ -27,7 +27,8 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegLinetoHorizontalAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegLinetoHorizontalRel.idl b/WebCore/svg/SVGPathSegLinetoHorizontalRel.idl
index 3f9a22a..91f537c 100644
--- a/WebCore/svg/SVGPathSegLinetoHorizontalRel.idl
+++ b/WebCore/svg/SVGPathSegLinetoHorizontalRel.idl
@@ -27,7 +27,8 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegLinetoHorizontalRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegLinetoRel.idl b/WebCore/svg/SVGPathSegLinetoRel.idl
index d92cdc4..51a8b5d 100644
--- a/WebCore/svg/SVGPathSegLinetoRel.idl
+++ b/WebCore/svg/SVGPathSegLinetoRel.idl
@@ -27,8 +27,10 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegLinetoRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegLinetoVertical.cpp b/WebCore/svg/SVGPathSegLinetoVertical.cpp
new file mode 100644
index 0000000..ba02c9e
--- /dev/null
+++ b/WebCore/svg/SVGPathSegLinetoVertical.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegLinetoVertical.h"
+
+namespace WebCore {
+
+SVGPathSegLinetoVerticalAbs::SVGPathSegLinetoVerticalAbs(float y)
+    : SVGPathSegLinetoVertical(y)
+{
+}
+
+SVGPathSegLinetoVerticalRel::SVGPathSegLinetoVerticalRel(float y)
+    : SVGPathSegLinetoVertical(y)
+{
+}
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegLinetoVertical.h b/WebCore/svg/SVGPathSegLinetoVertical.h
index fec7fb6..b13b9f4 100644
--- a/WebCore/svg/SVGPathSegLinetoVertical.h
+++ b/WebCore/svg/SVGPathSegLinetoVertical.h
@@ -22,64 +22,48 @@
 #define SVGPathSegLinetoVertical_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
+
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
 namespace WebCore {
 
-class SVGPathSegLinetoVertical : public SVGPathSegWithContext {
-public:
-    SVGPathSegLinetoVertical(SVGPathElement* element, SVGPathSegRole role, float y)
-        : SVGPathSegWithContext(element, role)
-        , m_y(y)
-    {
-    }
-
-    float y() const { return m_y; }
-    void setY(float y)
-    {
-        m_y = y;
-        commitChange();
-    }
-
-private:
-    float m_y;
-};
-
-class SVGPathSegLinetoVerticalAbs : public SVGPathSegLinetoVertical {
-public:
-    static PassRefPtr<SVGPathSegLinetoVerticalAbs> create(SVGPathElement* element, SVGPathSegRole role, float y)
-    {
-        return adoptRef(new SVGPathSegLinetoVerticalAbs(element, role, y));
-    }
-
-private:
-    SVGPathSegLinetoVerticalAbs(SVGPathElement* element, SVGPathSegRole role, float y)
-        : SVGPathSegLinetoVertical(element, role, y)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_LINETO_VERTICAL_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "V"; }
-};
-
-class SVGPathSegLinetoVerticalRel : public SVGPathSegLinetoVertical {
-public:
-    static PassRefPtr<SVGPathSegLinetoVerticalRel> create(SVGPathElement* element, SVGPathSegRole role, float y)
-    {
-        return adoptRef(new SVGPathSegLinetoVerticalRel(element, role, y));
-    }
-
-private:
-    SVGPathSegLinetoVerticalRel(SVGPathElement* element, SVGPathSegRole role, float y)
-        : SVGPathSegLinetoVertical(element, role, y)
-    {
-    }
-
-    virtual unsigned short pathSegType() const { return PATHSEG_LINETO_VERTICAL_REL; }
-    virtual String pathSegTypeAsLetter() const { return "v"; }
-};
+    class SVGPathSegLinetoVertical : public SVGPathSeg {
+    public:
+        SVGPathSegLinetoVertical(float y) : SVGPathSeg(), m_y(y) {}
+
+        void setY(float y) { m_y = y; }
+        float y() const { return m_y; }
+
+    private:
+        float m_y;
+    };
+
+    class SVGPathSegLinetoVerticalAbs : public SVGPathSegLinetoVertical {
+    public:
+        static PassRefPtr<SVGPathSegLinetoVerticalAbs> create(float y) { return adoptRef(new SVGPathSegLinetoVerticalAbs(y)); }
+
+    private:
+        SVGPathSegLinetoVerticalAbs(float y);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_LINETO_VERTICAL_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "V"; }
+    };
+
+    class SVGPathSegLinetoVerticalRel : public SVGPathSegLinetoVertical {
+    public:
+        static PassRefPtr<SVGPathSegLinetoVerticalRel> create(float y) { return adoptRef(new SVGPathSegLinetoVerticalRel(y)); }
+
+    private:
+        SVGPathSegLinetoVerticalRel(float y);
+
+        virtual unsigned short pathSegType() const { return PATHSEG_LINETO_VERTICAL_REL; }
+        virtual String pathSegTypeAsLetter() const { return "v"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegLinetoVerticalAbs.idl b/WebCore/svg/SVGPathSegLinetoVerticalAbs.idl
index a9af261..b6ba7f1 100644
--- a/WebCore/svg/SVGPathSegLinetoVerticalAbs.idl
+++ b/WebCore/svg/SVGPathSegLinetoVerticalAbs.idl
@@ -27,7 +27,8 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegLinetoVerticalAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float y;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegLinetoVerticalRel.idl b/WebCore/svg/SVGPathSegLinetoVerticalRel.idl
index a9b9b36..7246c7d 100644
--- a/WebCore/svg/SVGPathSegLinetoVerticalRel.idl
+++ b/WebCore/svg/SVGPathSegLinetoVerticalRel.idl
@@ -27,7 +27,8 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegLinetoVerticalRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float y;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegList.cpp b/WebCore/svg/SVGPathSegList.cpp
index 09a3c0d..5a40c64 100644
--- a/WebCore/svg/SVGPathSegList.cpp
+++ b/WebCore/svg/SVGPathSegList.cpp
@@ -25,23 +25,11 @@
 #if ENABLE(SVG)
 #include "SVGPathSegList.h"
 
-#include "SVGPathElement.h"
-#include "SVGPathParserFactory.h"
-
 namespace WebCore {
 
-String SVGPathSegList::valueAsString() const
-{
-    String pathString;
-    SVGPathParserFactory::self()->buildStringFromSVGPathSegList(*this, pathString, UnalteredParsing);
-    return pathString;
-}
-
-void SVGPathSegList::commitChange(SVGElement* contextElement)
+SVGPathSegList::SVGPathSegList(const QualifiedName& attributeName)
+    : SVGList<RefPtr<SVGPathSeg> >(attributeName)
 {
-    ASSERT(contextElement);
-    ASSERT(contextElement->hasTagName(SVGNames::pathTag));
-    static_cast<SVGPathElement*>(contextElement)->pathSegListChanged(m_role);
 }
 
 }
diff --git a/WebCore/svg/SVGPathSegList.h b/WebCore/svg/SVGPathSegList.h
index 48a1845..6e61c06 100644
--- a/WebCore/svg/SVGPathSegList.h
+++ b/WebCore/svg/SVGPathSegList.h
@@ -21,36 +21,19 @@
 #define SVGPathSegList_h
 
 #if ENABLE(SVG)
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
+#include "SVGList.h"
 #include "SVGPathSeg.h"
-#include "SVGPropertyTraits.h"
 
 namespace WebCore {
 
 class SVGElement;
 
-class SVGPathSegList : public Vector<RefPtr<SVGPathSeg> > {
+class SVGPathSegList : public SVGList<RefPtr<SVGPathSeg> > {
 public:
-    SVGPathSegList(SVGPathSegRole role)
-        : m_role(role)
-    {
-    }
-
-    String valueAsString() const;
-
-    // Only used by SVGPathSegListPropertyTearOff.
-    void commitChange(SVGElement* contextElement);
+    static PassRefPtr<SVGPathSegList> create(const QualifiedName& attributeName) { return adoptRef(new SVGPathSegList(attributeName)); }
 
 private:
-    SVGPathSegRole m_role;
-};
-
-template<>
-struct SVGPropertyTraits<SVGPathSegList> {
-    static SVGPathSegList initialValue() { return SVGPathSegList(PathSegUndefinedRole); }
-    typedef RefPtr<SVGPathSeg> ListItemType;
+    SVGPathSegList(const QualifiedName&);
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGPathSegList.idl b/WebCore/svg/SVGPathSegList.idl
index e77a997..1407b33 100644
--- a/WebCore/svg/SVGPathSegList.idl
+++ b/WebCore/svg/SVGPathSegList.idl
@@ -29,19 +29,19 @@ module svg {
     interface [Conditional=SVG] SVGPathSegList {
         readonly attribute unsigned long numberOfItems;
 
-        void clear()
+        [JSCCustom] void clear()
             raises(DOMException);
-        [StrictTypeChecking, RequiresAllArguments=Raise] SVGPathSeg initialize(in SVGPathSeg newItem)
+        [JSCCustom] SVGPathSeg initialize(in SVGPathSeg newItem)
             raises(DOMException, SVGException);
-        [StrictTypeChecking, RequiresAllArguments=Raise] SVGPathSeg getItem(in unsigned long index)
+        [JSCCustom] SVGPathSeg getItem(in unsigned long index)
             raises(DOMException);
-        [StrictTypeChecking, RequiresAllArguments=Raise] SVGPathSeg insertItemBefore(in SVGPathSeg newItem, in unsigned long index)
+        [JSCCustom] SVGPathSeg insertItemBefore(in SVGPathSeg newItem, in unsigned long index)
             raises(DOMException, SVGException);
-        [StrictTypeChecking, RequiresAllArguments=Raise] SVGPathSeg replaceItem(in SVGPathSeg newItem, in unsigned long index)
+        [JSCCustom] SVGPathSeg replaceItem(in SVGPathSeg newItem, in unsigned long index)
             raises(DOMException, SVGException);
-        [StrictTypeChecking, RequiresAllArguments=Raise] SVGPathSeg removeItem(in unsigned long index)
+        [JSCCustom] SVGPathSeg removeItem(in unsigned long index)
             raises(DOMException);
-        [StrictTypeChecking, RequiresAllArguments=Raise] SVGPathSeg appendItem(in SVGPathSeg newItem)
+        [JSCCustom] SVGPathSeg appendItem(in SVGPathSeg newItem)
             raises(DOMException, SVGException);
     };
 
diff --git a/WebCore/svg/SVGPathSegListBuilder.cpp b/WebCore/svg/SVGPathSegListBuilder.cpp
index bd657c3..342de88 100644
--- a/WebCore/svg/SVGPathSegListBuilder.cpp
+++ b/WebCore/svg/SVGPathSegListBuilder.cpp
@@ -43,107 +43,115 @@
 namespace WebCore {
 
 SVGPathSegListBuilder::SVGPathSegListBuilder()
-    : m_pathElement(0)
-    , m_pathSegList(0)
-    , m_pathSegRole(PathSegUndefinedRole)
+    : m_pathSegList(0)
 {
 }
 
 void SVGPathSegListBuilder::moveTo(const FloatPoint& targetPoint, bool, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegMovetoAbs(targetPoint.x(), targetPoint.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegMovetoAbs(targetPoint.x(), targetPoint.y()), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegMovetoRel(targetPoint.x(), targetPoint.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegMovetoRel(targetPoint.x(), targetPoint.y()), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::lineTo(const FloatPoint& targetPoint, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegLinetoAbs(targetPoint.x(), targetPoint.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegLinetoAbs(targetPoint.x(), targetPoint.y()), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegLinetoRel(targetPoint.x(), targetPoint.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegLinetoRel(targetPoint.x(), targetPoint.y()), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::lineToHorizontal(float x, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegLinetoHorizontalAbs(x, m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegLinetoHorizontalAbs(x), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegLinetoHorizontalRel(x, m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegLinetoHorizontalRel(x), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::lineToVertical(float y, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegLinetoVerticalAbs(y, m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegLinetoVerticalAbs(y), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegLinetoVerticalRel(y, m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegLinetoVerticalRel(y), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::curveToCubic(const FloatPoint& point1, const FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoCubicAbs(targetPoint.x(), targetPoint.y(), point1.x(), point1.y(), point2.x(), point2.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoCubicAbs(targetPoint.x(), targetPoint.y(), point1.x(), point1.y(), point2.x(), point2.y()), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoCubicRel(targetPoint.x(), targetPoint.y(), point1.x(), point1.y(), point2.x(), point2.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoCubicRel(targetPoint.x(), targetPoint.y(), point1.x(), point1.y(), point2.x(), point2.y()), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::curveToCubicSmooth(const FloatPoint& point2, const FloatPoint& targetPoint, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoCubicSmoothAbs(targetPoint.x(), targetPoint.y(), point2.x(), point2.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs(targetPoint.x(), targetPoint.y(), point2.x(), point2.y()), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoCubicSmoothRel(targetPoint.x(), targetPoint.y(), point2.x(), point2.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel(targetPoint.x(), targetPoint.y(), point2.x(), point2.y()), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::curveToQuadratic(const FloatPoint& point1, const FloatPoint& targetPoint, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoQuadraticAbs(targetPoint.x(), targetPoint.y(), point1.x(), point1.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoQuadraticAbs(targetPoint.x(), targetPoint.y(), point1.x(), point1.y()), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoQuadraticRel(targetPoint.x(), targetPoint.y(), point1.x(), point1.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoQuadraticRel(targetPoint.x(), targetPoint.y(), point1.x(), point1.y()), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::curveToQuadraticSmooth(const FloatPoint& targetPoint, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoQuadraticSmoothAbs(targetPoint.x(), targetPoint.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs(targetPoint.x(), targetPoint.y()), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegCurvetoQuadraticSmoothRel(targetPoint.x(), targetPoint.y(), m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel(targetPoint.x(), targetPoint.y()), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::arcTo(float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, const FloatPoint& targetPoint, PathCoordinateMode mode)
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
     if (mode == AbsoluteCoordinates)
-        m_pathSegList->append(m_pathElement->createSVGPathSegArcAbs(targetPoint.x(), targetPoint.y(), r1, r2, angle, largeArcFlag, sweepFlag, m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegArcAbs(targetPoint.x(), targetPoint.y(), r1, r2, angle, largeArcFlag, sweepFlag), ec);
     else
-        m_pathSegList->append(m_pathElement->createSVGPathSegArcRel(targetPoint.x(), targetPoint.y(), r1, r2, angle, largeArcFlag, sweepFlag, m_pathSegRole));
+        m_pathSegList->appendItem(SVGPathElement::createSVGPathSegArcRel(targetPoint.x(), targetPoint.y(), r1, r2, angle, largeArcFlag, sweepFlag), ec);
+    ASSERT(!ec);
 }
 
 void SVGPathSegListBuilder::closePath()
 {
-    ASSERT(m_pathElement);
     ASSERT(m_pathSegList);
-    m_pathSegList->append(m_pathElement->createSVGPathSegClosePath(m_pathSegRole));
+    ExceptionCode ec = 0;
+    m_pathSegList->appendItem(SVGPathElement::createSVGPathSegClosePath(), ec);
+    ASSERT(!ec);
 }
 
 }
diff --git a/WebCore/svg/SVGPathSegListBuilder.h b/WebCore/svg/SVGPathSegListBuilder.h
index 8f75b26..f376706 100644
--- a/WebCore/svg/SVGPathSegListBuilder.h
+++ b/WebCore/svg/SVGPathSegListBuilder.h
@@ -27,7 +27,6 @@
 #if ENABLE(SVG)
 #include "FloatPoint.h"
 #include "SVGPathConsumer.h"
-#include "SVGPathElement.h"
 #include "SVGPathSegList.h"
 
 namespace WebCore {
@@ -36,19 +35,12 @@ class SVGPathSegListBuilder : public SVGPathConsumer {
 public:
     SVGPathSegListBuilder();
 
-    void setCurrentSVGPathElement(SVGPathElement* pathElement) { m_pathElement = pathElement; }
-    void setCurrentSVGPathSegList(SVGPathSegList& pathSegList) { m_pathSegList = &pathSegList; }
-    void setCurrentSVGPathSegRole(SVGPathSegRole pathSegRole) { m_pathSegRole = pathSegRole; }
+    void setCurrentSVGPathSegList(SVGPathSegList* pathSegList) { m_pathSegList = pathSegList; }
 
 private:
     virtual void incrementPathSegmentCount() { }
     virtual bool continueConsuming() { return true; }
-    virtual void cleanup()
-    {
-        m_pathElement = 0;
-        m_pathSegList = 0;
-        m_pathSegRole = PathSegUndefinedRole;
-    }
+    virtual void cleanup() { m_pathSegList = 0; }
 
     // Used in UnalteredParisng/NormalizedParsing modes.
     virtual void moveTo(const FloatPoint&, bool closed, PathCoordinateMode);
@@ -64,9 +56,7 @@ private:
     virtual void curveToQuadraticSmooth(const FloatPoint&, PathCoordinateMode);
     virtual void arcTo(float, float, float, bool largeArcFlag, bool sweepFlag, const FloatPoint&, PathCoordinateMode);
 
-    SVGPathElement* m_pathElement;
     SVGPathSegList* m_pathSegList;
-    SVGPathSegRole m_pathSegRole;
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGPathSegListSource.cpp b/WebCore/svg/SVGPathSegListSource.cpp
index 5526cd6..2378743 100644
--- a/WebCore/svg/SVGPathSegListSource.cpp
+++ b/WebCore/svg/SVGPathSegListSource.cpp
@@ -31,11 +31,12 @@
 
 namespace WebCore {
 
-SVGPathSegListSource::SVGPathSegListSource(const SVGPathSegList& pathSegList)
+SVGPathSegListSource::SVGPathSegListSource(SVGPathSegList* pathSegList)
     : m_pathSegList(pathSegList)
 {
+    ASSERT(m_pathSegList);
     m_itemCurrent = 0;
-    m_itemEnd = m_pathSegList.size();
+    m_itemEnd = m_pathSegList->numberOfItems();
 }
 
 bool SVGPathSegListSource::hasMoreData() const
@@ -45,7 +46,11 @@ bool SVGPathSegListSource::hasMoreData() const
 
 bool SVGPathSegListSource::parseSVGSegmentType(SVGPathSegType& pathSegType)
 {
-    m_segment = m_pathSegList.at(m_itemCurrent);
+    ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
+    m_segment = m_pathSegList->getItem(m_itemCurrent, ec);
+    if (ec)
+        return false;
     pathSegType = static_cast<SVGPathSegType>(m_segment->pathSegType());
     ++m_itemCurrent;
     return true;
@@ -53,7 +58,11 @@ bool SVGPathSegListSource::parseSVGSegmentType(SVGPathSegType& pathSegType)
 
 SVGPathSegType SVGPathSegListSource::nextCommand(SVGPathSegType)
 {
-    m_segment = m_pathSegList.at(m_itemCurrent);
+    ASSERT(m_pathSegList);
+    ExceptionCode ec = 0;
+    m_segment = m_pathSegList->getItem(m_itemCurrent, ec);
+    if (ec)
+        return PathSegUnknown;
     SVGPathSegType pathSegType = static_cast<SVGPathSegType>(m_segment->pathSegType());
     ++m_itemCurrent;
     return pathSegType;
@@ -63,7 +72,7 @@ bool SVGPathSegListSource::parseMoveToSegment(FloatPoint& targetPoint)
 {
     ASSERT(m_segment);
     ASSERT(m_segment->pathSegType() == PathSegMoveToAbs || m_segment->pathSegType() == PathSegMoveToRel);
-    SVGPathSegSingleCoordinate* moveTo = static_cast<SVGPathSegSingleCoordinate*>(m_segment.get());
+    SVGPathSegSingleCoord* moveTo = static_cast<SVGPathSegSingleCoord*>(m_segment.get());
     targetPoint = FloatPoint(moveTo->x(), moveTo->y());
     return true;
 }
@@ -72,7 +81,7 @@ bool SVGPathSegListSource::parseLineToSegment(FloatPoint& targetPoint)
 {
     ASSERT(m_segment);
     ASSERT(m_segment->pathSegType() == PathSegLineToAbs || m_segment->pathSegType() == PathSegLineToRel);
-    SVGPathSegSingleCoordinate* lineTo = static_cast<SVGPathSegSingleCoordinate*>(m_segment.get());
+    SVGPathSegSingleCoord* lineTo = static_cast<SVGPathSegSingleCoord*>(m_segment.get());
     targetPoint = FloatPoint(lineTo->x(), lineTo->y());
     return true;
 }
@@ -130,7 +139,7 @@ bool SVGPathSegListSource::parseCurveToQuadraticSmoothSegment(FloatPoint& target
 {
     ASSERT(m_segment);
     ASSERT(m_segment->pathSegType() == PathSegCurveToQuadraticSmoothAbs || m_segment->pathSegType() == PathSegCurveToQuadraticSmoothRel);
-    SVGPathSegSingleCoordinate* quadraticSmooth = static_cast<SVGPathSegSingleCoordinate*>(m_segment.get());
+    SVGPathSegSingleCoord* quadraticSmooth = static_cast<SVGPathSegSingleCoord*>(m_segment.get());
     targetPoint = FloatPoint(quadraticSmooth->x(), quadraticSmooth->y());
     return true;
 }
diff --git a/WebCore/svg/SVGPathSegListSource.h b/WebCore/svg/SVGPathSegListSource.h
index 357248f..4f93be1 100644
--- a/WebCore/svg/SVGPathSegListSource.h
+++ b/WebCore/svg/SVGPathSegListSource.h
@@ -32,13 +32,13 @@ namespace WebCore {
 
 class SVGPathSegListSource : public SVGPathSource {
 public:
-    static PassOwnPtr<SVGPathSegListSource> create(const SVGPathSegList& pathSegList)
+    static PassOwnPtr<SVGPathSegListSource> create(SVGPathSegList* pathSegList)
     {
         return adoptPtr(new SVGPathSegListSource(pathSegList));
     }
 
 private:
-    SVGPathSegListSource(const SVGPathSegList&);
+    SVGPathSegListSource(SVGPathSegList*);
 
     virtual bool hasMoreData() const;
     virtual bool moveToNextToken() { return true; }
@@ -55,7 +55,7 @@ private:
     virtual bool parseCurveToQuadraticSmoothSegment(FloatPoint&);
     virtual bool parseArcToSegment(float&, float&, float&, bool&, bool&, FloatPoint&);
 
-    const SVGPathSegList& m_pathSegList;
+    SVGPathSegList* m_pathSegList;
     RefPtr<SVGPathSeg> m_segment;
     int m_itemCurrent;
     int m_itemEnd;
diff --git a/WebCore/svg/SVGPathSegMoveto.cpp b/WebCore/svg/SVGPathSegMoveto.cpp
new file mode 100644
index 0000000..f87077f
--- /dev/null
+++ b/WebCore/svg/SVGPathSegMoveto.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis at kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG)
+#include "SVGPathSegMoveto.h"
+
+namespace WebCore {
+
+SVGPathSegMovetoAbs::SVGPathSegMovetoAbs(float x, float y)
+    : SVGPathSegSingleCoord(x, y)
+{
+}
+
+SVGPathSegMovetoRel::SVGPathSegMovetoRel(float x, float y)
+    : SVGPathSegSingleCoord(x, y)
+{
+}
+}
+
+#endif // ENABLE(SVG)
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegMoveto.h b/WebCore/svg/SVGPathSegMoveto.h
index 87fcd7d..edaff4b 100644
--- a/WebCore/svg/SVGPathSegMoveto.h
+++ b/WebCore/svg/SVGPathSegMoveto.h
@@ -22,45 +22,36 @@
 #define SVGPathSegMoveto_h
 
 #if ENABLE(SVG)
-#include "SVGPathSegWithContext.h"
 
-namespace WebCore {
+#include "PlatformString.h"
+#include "SVGPathSeg.h"
 
-class SVGPathSegMovetoAbs : public SVGPathSegSingleCoordinate { 
-public:
-    static PassRefPtr<SVGPathSegMovetoAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-    {
-        return adoptRef(new SVGPathSegMovetoAbs(element, role, x, y));
-    }
+namespace WebCore {
+    class SVGPathSegMovetoAbs : public SVGPathSegSingleCoord { 
+    public:
+        static PassRefPtr<SVGPathSegMovetoAbs> create(float x, float y) { return adoptRef(new SVGPathSegMovetoAbs(x, y)); }
 
-private:
-    SVGPathSegMovetoAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegSingleCoordinate(element, role, x, y)
-    {
-    }
+    private:
+        SVGPathSegMovetoAbs(float x, float y);
 
-    virtual unsigned short pathSegType() const { return PATHSEG_MOVETO_ABS; }
-    virtual String pathSegTypeAsLetter() const { return "M"; }
-};
+        virtual unsigned short pathSegType() const { return PATHSEG_MOVETO_ABS; }
+        virtual String pathSegTypeAsLetter() const { return "M"; }
+    };
 
-class SVGPathSegMovetoRel : public SVGPathSegSingleCoordinate { 
-public:
-    static PassRefPtr<SVGPathSegMovetoRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-    {
-        return adoptRef(new SVGPathSegMovetoRel(element, role, x, y));
-    }
+    class SVGPathSegMovetoRel : public SVGPathSegSingleCoord { 
+    public:
+        static PassRefPtr<SVGPathSegMovetoRel> create(float x, float y) { return adoptRef(new SVGPathSegMovetoRel(x, y)); }
 
-private:
-    SVGPathSegMovetoRel(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegSingleCoordinate(element, role, x, y)
-    {
-    }
+    private:
+        SVGPathSegMovetoRel(float x, float y);
 
-    virtual unsigned short pathSegType() const { return PATHSEG_MOVETO_REL; }
-    virtual String pathSegTypeAsLetter() const { return "m"; }
-};
+        virtual unsigned short pathSegType() const { return PATHSEG_MOVETO_REL; }
+        virtual String pathSegTypeAsLetter() const { return "m"; }
+    };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGPathSegMovetoAbs.idl b/WebCore/svg/SVGPathSegMovetoAbs.idl
index bf371a2..e10163e 100644
--- a/WebCore/svg/SVGPathSegMovetoAbs.idl
+++ b/WebCore/svg/SVGPathSegMovetoAbs.idl
@@ -27,8 +27,10 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegMovetoAbs : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegMovetoRel.idl b/WebCore/svg/SVGPathSegMovetoRel.idl
index a8763a1..78ba078 100644
--- a/WebCore/svg/SVGPathSegMovetoRel.idl
+++ b/WebCore/svg/SVGPathSegMovetoRel.idl
@@ -27,8 +27,10 @@
 module svg {
 
     interface [Conditional=SVG] SVGPathSegMovetoRel : SVGPathSeg {
-        attribute [StrictTypeChecking] float x;
-        attribute [StrictTypeChecking] float y;
+                 attribute float   x
+                     /*setter raises(DOMException)*/;
+                 attribute float   y
+                     /*setter raises(DOMException)*/;
     };
 
 }
diff --git a/WebCore/svg/SVGPathSegWithContext.h b/WebCore/svg/SVGPathSegWithContext.h
deleted file mode 100644
index 97d8df1..0000000
--- a/WebCore/svg/SVGPathSegWithContext.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2010. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef SVGPathSegWithContext_h
-#define SVGPathSegWithContext_h
-
-#if ENABLE(SVG)
-#include "SVGPathElement.h"
-
-namespace WebCore {
-
-class SVGPathSegWithContext : public SVGPathSeg {
-public:
-    SVGPathSegWithContext(SVGPathElement* element, SVGPathSegRole role)
-        : m_role(role)
-        , m_element(element)
-    {
-    }
-
-    SVGAnimatedProperty* animatedProperty() const
-    {
-        switch (m_role) {
-        case PathSegUndefinedRole:
-            return 0;
-        case PathSegUnalteredRole:
-            return m_element->animatablePathSegList();
-        case PathSegNormalizedRole:
-            // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists!
-            return 0;
-        };
-
-        return 0;
-    }
-
-    SVGPathElement* contextElement() const { return m_element.get(); }
-    SVGPathSegRole role() const { return m_role; }
-
-    void setContextAndRole(SVGPathElement* element, SVGPathSegRole role)
-    {
-        m_role = role;
-        m_element = element;
-    }
-
-protected:
-    void commitChange()
-    {
-        if (!m_element) {
-            ASSERT(m_role == PathSegUndefinedRole);
-            return;
-        }
-
-        ASSERT(m_role != PathSegUndefinedRole);
-        m_element->pathSegListChanged(m_role);
-    }
-
-private:
-    SVGPathSegRole m_role;
-    RefPtr<SVGPathElement> m_element;
-};
-
-class SVGPathSegSingleCoordinate : public SVGPathSegWithContext { 
-public:
-    float x() const { return m_x; }
-    void setX(float x)
-    {
-        m_x = x;
-        commitChange();
-    }
-
-    float y() const { return m_y; }
-    void setY(float y)
-    {
-        m_y = y;
-        commitChange();
-    }
-
-protected:
-    SVGPathSegSingleCoordinate(SVGPathElement* element, SVGPathSegRole role, float x, float y)
-        : SVGPathSegWithContext(element, role)
-        , m_x(x)
-        , m_y(y)
-    {
-    }
-
-private:
-    float m_x;
-    float m_y;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(SVG)
-#endif
diff --git a/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h b/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h
deleted file mode 100644
index f515ab4..0000000
--- a/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2010. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef SVGAnimatedPathSegListPropertyTearOff_h
-#define SVGAnimatedPathSegListPropertyTearOff_h
-
-#if ENABLE(SVG)
-#include "SVGAnimatedListPropertyTearOff.h"
-#include "SVGPathSegList.h"
-#include "SVGPathSegListPropertyTearOff.h"
-
-namespace WebCore {
-
-class SVGPathSegListPropertyTearOff;
-
-class SVGAnimatedPathSegListPropertyTearOff : public SVGAnimatedListPropertyTearOff<SVGPathSegList> {
-public:
-    SVGProperty* baseVal(SVGPathSegRole role)
-    {
-        if (!m_baseVal)
-            m_baseVal = SVGPathSegListPropertyTearOff::create(this, BaseValRole, role);
-        return m_baseVal.get();
-    }
-
-    SVGProperty* animVal(SVGPathSegRole role)
-    {
-        if (!m_animVal)
-            m_animVal = SVGPathSegListPropertyTearOff::create(this, AnimValRole, role);
-        return m_animVal.get();
-    }
-
-    int removeItemFromList(const RefPtr<SVGPathSeg>& segment, bool shouldSynchronizeWrappers)
-    {
-        // This should ever be called for our baseVal, as animVal can't modify the list.
-        return static_pointer_cast<SVGPathSegListPropertyTearOff>(m_baseVal)->removeItemFromList(segment, shouldSynchronizeWrappers);
-    }
-
-private:
-    friend class SVGAnimatedProperty;
-
-    static PassRefPtr<SVGAnimatedPathSegListPropertyTearOff> create(SVGElement* contextElement, const QualifiedName& attributeName, SVGPathSegList& values)
-    {
-        ASSERT(contextElement);
-        return adoptRef(new SVGAnimatedPathSegListPropertyTearOff(contextElement, attributeName, values));
-    }
-
-    SVGAnimatedPathSegListPropertyTearOff(SVGElement* contextElement, const QualifiedName& attributeName, SVGPathSegList& values)
-        : SVGAnimatedListPropertyTearOff<SVGPathSegList>(contextElement, attributeName, values)
-    {
-    }
-};
-
-}
-
-#endif // ENABLE(SVG)
-#endif // SVGAnimatedPathSegListPropertyTearOff_h
diff --git a/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp b/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp
deleted file mode 100644
index af1b30c..0000000
--- a/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2010. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#if ENABLE(SVG)
-#include "SVGPathSegListPropertyTearOff.h"
-
-#include "SVGAnimatedPathSegListPropertyTearOff.h"
-#include "SVGPathElement.h"
-#include "SVGPathSegWithContext.h"
-
-namespace WebCore {
-
-void SVGPathSegListPropertyTearOff::clear(ExceptionCode& ec)
-{
-    SVGPathSegList& values = m_animatedProperty->values();
-    if (values.isEmpty())
-        return;
-
-    unsigned size = values.size();
-    for (unsigned i = 0; i < size; ++i) {
-        ListItemType item = values.at(i);
-        static_cast<SVGPathSegWithContext*>(item.get())->setContextAndRole(0, PathSegUndefinedRole);
-    }
-
-    SVGPathSegListPropertyTearOff::Base::clearValues(values, ec);
-}
-
-SVGPathSegListPropertyTearOff::PassListItemType SVGPathSegListPropertyTearOff::getItem(unsigned index, ExceptionCode& ec)
-{
-    SVGPathSegList& values = m_animatedProperty->values();
-    ListItemType returnedItem = Base::getItemValues(values, index, ec);
-    if (returnedItem) {
-        ASSERT(static_cast<SVGPathSegWithContext*>(returnedItem.get())->contextElement() == contextElement());
-        ASSERT(static_cast<SVGPathSegWithContext*>(returnedItem.get())->role() == m_pathSegRole);
-    }
-    return returnedItem.release();
-}
-
-SVGPathSegListPropertyTearOff::PassListItemType SVGPathSegListPropertyTearOff::removeItem(unsigned index, ExceptionCode& ec)
-{
-    SVGPathSegList& values = m_animatedProperty->values();
-    SVGPathSegListPropertyTearOff::ListItemType removedItem = SVGPathSegListPropertyTearOff::Base::removeItemValues(values, index, ec);
-    if (removedItem)
-        static_cast<SVGPathSegWithContext*>(removedItem.get())->setContextAndRole(0, PathSegUndefinedRole);
-    return removedItem.release();
-}
-
-SVGPathElement* SVGPathSegListPropertyTearOff::contextElement() const
-{
-    SVGElement* contextElement = m_animatedProperty->contextElement();
-    ASSERT(contextElement);
-    ASSERT(contextElement->hasTagName(SVGNames::pathTag));
-    return static_cast<SVGPathElement*>(contextElement);
-}
-
-void SVGPathSegListPropertyTearOff::processIncomingListItemValue(const ListItemType& newItem, unsigned* indexToModify)
-{
-    SVGPathSegWithContext* newItemWithContext = static_cast<SVGPathSegWithContext*>(newItem.get());
-    SVGAnimatedProperty* animatedPropertyOfItem = newItemWithContext->animatedProperty();
-
-    // Alter the role, after calling animatedProperty(), as that may influence the returned animated property.
-    newItemWithContext->setContextAndRole(contextElement(), m_pathSegRole);
-
-    if (!animatedPropertyOfItem)
-        return;
-
-    // newItem belongs to a SVGPathElement, but its associated SVGAnimatedProperty is not an animated list tear off.
-    // (for example: "pathElement.pathSegList.appendItem(pathElement.createSVGPathSegClosepath())")
-    if (!animatedPropertyOfItem->isAnimatedListTearOff())
-        return;
-
-    // Spec: If newItem is already in a list, it is removed from its previous list before it is inserted into this list.
-    // 'newItem' is already living in another list. If it's not our list, synchronize the other lists wrappers after the removal.
-    bool livesInOtherList = animatedPropertyOfItem != m_animatedProperty;
-    int removedIndex = static_cast<SVGAnimatedPathSegListPropertyTearOff*>(animatedPropertyOfItem)->removeItemFromList(newItem.get(), livesInOtherList);
-    ASSERT(removedIndex != -1);
-
-    if (!indexToModify)
-        return;
-
-    // If the item lived in our list, adjust the insertion index.
-    if (!livesInOtherList) {
-        unsigned& index = *indexToModify;
-        // Spec: If the item is already in this list, note that the index of the item to (replace|insert before) is before the removal of the item.
-        if (static_cast<unsigned>(removedIndex) < index)
-            --index;
-    }
-}
-
-}
-
-#endif // ENABLE(SVG)
diff --git a/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h b/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h
deleted file mode 100644
index 3ba29e4..0000000
--- a/WebCore/svg/properties/SVGPathSegListPropertyTearOff.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2010. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef SVGPathSegListPropertyTearOff_h
-#define SVGPathSegListPropertyTearOff_h
-
-#if ENABLE(SVG)
-#include "SVGAnimatedListPropertyTearOff.h"
-#include "SVGPathSegList.h"
-
-namespace WebCore {
-
-class SVGPathElement;
-
-class SVGPathSegListPropertyTearOff : public SVGListProperty<SVGPathSegList> {
-public:
-    typedef SVGListProperty<SVGPathSegList> Base;
-    typedef SVGAnimatedListPropertyTearOff<SVGPathSegList> AnimatedListPropertyTearOff;
-    typedef SVGPropertyTraits<SVGPathSegList>::ListItemType ListItemType;
-    typedef PassRefPtr<SVGPathSeg> PassListItemType;
-
-    static PassRefPtr<SVGPathSegListPropertyTearOff> create(AnimatedListPropertyTearOff* animatedProperty, SVGPropertyRole role, SVGPathSegRole pathSegRole)
-    {
-        ASSERT(animatedProperty);
-        return adoptRef(new SVGPathSegListPropertyTearOff(animatedProperty, role, pathSegRole));
-    }
-
-    int removeItemFromList(const ListItemType& removeItem, bool shouldSynchronizeWrappers)
-    {
-        SVGPathSegList& values = m_animatedProperty->values();
-
-        unsigned size = values.size();
-        for (unsigned i = 0; i < size; ++i) {
-            ListItemType& item = values.at(i);
-            if (item != removeItem)
-                continue;
-
-            values.remove(i);
-
-            if (shouldSynchronizeWrappers)
-                commitChange();
-
-            return i;
-        }
-
-        return -1;
-    }
-
-    // SVGList API
-    void clear(ExceptionCode&);
-
-    unsigned numberOfItems() const
-    {
-        SVGPathSegList& values = m_animatedProperty->values();
-        return Base::numberOfItemsValues(values);
-    }
-
-    PassListItemType initialize(PassListItemType passNewItem, ExceptionCode& ec)
-    {
-        // Not specified, but FF/Opera do it this way, and it's just sane.
-        if (!passNewItem) {
-            ec = TYPE_MISMATCH_ERR;
-            return 0;
-        }
-
-        ListItemType newItem = passNewItem;
-        SVGPathSegList& values = m_animatedProperty->values();
-        return Base::initializeValues(values, newItem, ec);
-    }
-
-    PassListItemType getItem(unsigned index, ExceptionCode&);
-
-    PassListItemType insertItemBefore(PassListItemType passNewItem, unsigned index, ExceptionCode& ec)
-    {
-        // Not specified, but FF/Opera do it this way, and it's just sane.
-        if (!passNewItem) {
-            ec = TYPE_MISMATCH_ERR;
-            return 0;
-        }
-
-        ListItemType newItem = passNewItem;
-        SVGPathSegList& values = m_animatedProperty->values();
-        return Base::insertItemBeforeValues(values, newItem, index, ec);
-    }
-
-    PassListItemType replaceItem(PassListItemType passNewItem, unsigned index, ExceptionCode& ec)
-    {
-        // Not specified, but FF/Opera do it this way, and it's just sane.
-        if (!passNewItem) {
-            ec = TYPE_MISMATCH_ERR;
-            return 0;
-        }
-
-        ListItemType newItem = passNewItem;
-        SVGPathSegList& values = m_animatedProperty->values();
-        return Base::replaceItemValues(values, newItem, index, ec);
-    }
-
-    PassListItemType removeItem(unsigned index, ExceptionCode&);
-
-    PassListItemType appendItem(PassListItemType passNewItem, ExceptionCode& ec)
-    {
-        // Not specified, but FF/Opera do it this way, and it's just sane.
-        if (!passNewItem) {
-            ec = TYPE_MISMATCH_ERR;
-            return 0;
-        }
-
-        ListItemType newItem = passNewItem;
-        SVGPathSegList& values = m_animatedProperty->values();
-        return Base::appendItemValues(values, newItem, ec);
-    }
-
-private:
-    SVGPathSegListPropertyTearOff(AnimatedListPropertyTearOff* animatedProperty, SVGPropertyRole role, SVGPathSegRole pathSegRole)
-        : SVGListProperty<SVGPathSegList>(role)
-        , m_animatedProperty(animatedProperty)
-        , m_pathSegRole(pathSegRole)
-    {
-    }
-
-    SVGPathElement* contextElement() const;
-
-    virtual void commitChange()
-    {
-        SVGPathSegList& values = m_animatedProperty->values();
-        values.commitChange(m_animatedProperty->contextElement());
-    }
-
-    virtual void processIncomingListItemValue(const ListItemType& newItem, unsigned* indexToModify);
-    virtual void processIncomingListItemWrapper(RefPtr<ListItemTearOff>&, unsigned*)
-    {
-        ASSERT_NOT_REACHED();
-    }
-
-private:
-    RefPtr<AnimatedListPropertyTearOff> m_animatedProperty;
-    SVGPathSegRole m_pathSegRole;
-};
-
-}
-
-#endif // ENABLE(SVG)
-#endif // SVGPathSegListPropertyTearOff_h
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index 6d84bb6..c83c45d 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,14 @@
+2010-11-18  Sheriff Bot  <webkit.review.bot at gmail.com>
+
+        Unreviewed, rolling out r72288.
+        http://trac.webkit.org/changeset/72288
+        https://bugs.webkit.org/show_bug.cgi?id=49730
+
+        'krit attempted to do that, but revert got stuck' (Requested
+        by antonm on #webkit).
+
+        * WebView/WebRenderLayer.mm:
+
 2010-11-17  Nikolas Zimmermann  <nzimmermann at rim.com>
 
         Reviewed by Dirk Schulze.
diff --git a/WebKit/mac/WebView/WebRenderLayer.mm b/WebKit/mac/WebView/WebRenderLayer.mm
index c282643..edffac2 100644
--- a/WebKit/mac/WebView/WebRenderLayer.mm
+++ b/WebKit/mac/WebView/WebRenderLayer.mm
@@ -32,7 +32,6 @@
 #import <WebCore/RenderLayer.h>
 #import <WebCore/RenderLayerBacking.h>
 #import <WebCore/RenderView.h>
-#import <WebCore/StyledElement.h>
 
 using namespace WebCore;
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list