###############################################################################
# Please do not modify this file manually, it is regenerated from w3 website. #
###############################################################################

Rasem::SVG_ELEMENTS = 
[:a,
 :altGlyph,
 :altGlyphDef,
 :altGlyphItem,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :circle,
 :clipPath,
 :"color-profile",
 :cursor,
 :defs,
 :desc,
 :ellipse,
 :feBlend,
 :feColorMatrix,
 :feComponentTransfer,
 :feComposite,
 :feConvolveMatrix,
 :feDiffuseLighting,
 :feDisplacementMap,
 :feDistantLight,
 :feFlood,
 :feFuncA,
 :feFuncB,
 :feFuncG,
 :feFuncR,
 :feGaussianBlur,
 :feImage,
 :feMerge,
 :feMergeNode,
 :feMorphology,
 :feOffset,
 :fePointLight,
 :feSpecularLighting,
 :feSpotLight,
 :feTile,
 :feTurbulence,
 :filter,
 :font,
 :"font-face",
 :"font-face-format",
 :"font-face-name",
 :"font-face-src",
 :"font-face-uri",
 :foreignObject,
 :g,
 :glyph,
 :glyphRef,
 :hkern,
 :image,
 :line,
 :linearGradient,
 :marker,
 :mask,
 :metadata,
 :"missing-glyph",
 :mpath,
 :path,
 :pattern,
 :polygon,
 :polyline,
 :radialGradient,
 :rect,
 :script,
 :set,
 :stop,
 :style,
 :svg,
 :switch,
 :symbol,
 :text,
 :textPath,
 :title,
 :tref,
 :tspan,
 :use,
 :view,
 :vkern]
Rasem::SVG_STRUCTURE = 
{:a=>
  {:elements=>
    [:a,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :target]},
 :altGlyph=>
  {:elements=>[:altGlyph],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :x,
     :y,
     :dx,
     :dy,
     :glyphRef,
     :format,
     :rotate,
     :"xlink:href"]},
 :altGlyphDef=>
  {:elements=>[:altGlyphDef, :glyphRef, :altGlyphItem],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :altGlyphItem=>
  {:elements=>[:altGlyphItem, :glyphRef],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :animate=>
  {:elements=>[:animate, :desc, :metadata, :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onbegin,
     :onend,
     :onrepeat,
     :onload,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :attributeType,
     :attributeName,
     :begin,
     :dur,
     :end,
     :min,
     :max,
     :restart,
     :repeatCount,
     :repeatDur,
     :fill,
     :calcMode,
     :values,
     :keyTimes,
     :keySplines,
     :from,
     :to,
     :by,
     :additive,
     :accumulate,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :externalResourcesRequired]},
 :animateColor=>
  {:elements=>[:animateColor, :desc, :metadata, :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onbegin,
     :onend,
     :onrepeat,
     :onload,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :attributeType,
     :attributeName,
     :begin,
     :dur,
     :end,
     :min,
     :max,
     :restart,
     :repeatCount,
     :repeatDur,
     :fill,
     :calcMode,
     :values,
     :keyTimes,
     :keySplines,
     :from,
     :to,
     :by,
     :additive,
     :accumulate,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :externalResourcesRequired]},
 :animateMotion=>
  {:elements=>[:animateMotion, :mpath],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onbegin,
     :onend,
     :onrepeat,
     :onload,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :begin,
     :dur,
     :end,
     :min,
     :max,
     :restart,
     :repeatCount,
     :repeatDur,
     :fill,
     :calcMode,
     :values,
     :keyTimes,
     :keySplines,
     :from,
     :to,
     :by,
     :additive,
     :accumulate,
     :externalResourcesRequired,
     :path,
     :keyPoints,
     :rotate,
     :origin]},
 :animateTransform=>
  {:elements=>[:animateTransform, :desc, :metadata, :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onbegin,
     :onend,
     :onrepeat,
     :onload,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :attributeType,
     :attributeName,
     :begin,
     :dur,
     :end,
     :min,
     :max,
     :restart,
     :repeatCount,
     :repeatDur,
     :fill,
     :calcMode,
     :values,
     :keyTimes,
     :keySplines,
     :from,
     :to,
     :by,
     :additive,
     :accumulate,
     :externalResourcesRequired,
     :type]},
 :circle=>
  {:elements=>
    [:circle,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :cx,
     :cy,
     :r]},
 :clipPath=>
  {:elements=>
    [:clipPath,
     :desc,
     :metadata,
     :title,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :text,
     :use],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :clipPathUnits]},
 :"color-profile"=>
  {:elements=>[:"color-profile", :desc, :metadata, :title],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :local,
     :name,
     :"rendering-intent",
     :"xlink:href"]},
 :cursor=>
  {:elements=>[:cursor, :desc, :metadata, :title],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :externalResourcesRequired,
     :x,
     :y,
     :"xlink:href"]},
 :defs=>
  {:elements=>
    [:defs,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform]},
 :desc=>
  {:elements=>[:desc],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :class, :style]},
 :ellipse=>
  {:elements=>
    [:ellipse,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :cx,
     :cy,
     :rx,
     :ry]},
 :feBlend=>
  {:elements=>[:feBlend, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :in2,
     :mode]},
 :feColorMatrix=>
  {:elements=>[:feColorMatrix, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :type,
     :values]},
 :feComponentTransfer=>
  {:elements=>[:feComponentTransfer, :feFuncA, :feFuncB, :feFuncG, :feFuncR],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in]},
 :feComposite=>
  {:elements=>[:feComposite, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :in2,
     :operator,
     :k1,
     :k2,
     :k3,
     :k4]},
 :feConvolveMatrix=>
  {:elements=>[:feConvolveMatrix, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :order,
     :kernelMatrix,
     :divisor,
     :bias,
     :targetX,
     :targetY,
     :edgeMode,
     :kernelUnitLength,
     :preserveAlpha]},
 :feDiffuseLighting=>
  {:elements=>[:feDiffuseLighting],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :surfaceScale,
     :diffuseConstant,
     :kernelUnitLength]},
 :feDisplacementMap=>
  {:elements=>[:feDisplacementMap, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :in2,
     :scale,
     :xChannelSelector,
     :yChannelSelector]},
 :feDistantLight=>
  {:elements=>[:feDistantLight, :animate, :set],
   :attributes=>
    [:id, :"xml:base", :"xml:lang", :"xml:space", :azimuth, :elevation]},
 :feFlood=>
  {:elements=>[:feFlood, :animate, :animateColor, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style]},
 :feFuncA=>
  {:elements=>[:feFuncA, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :type,
     :tableValues,
     :slope,
     :intercept,
     :amplitude,
     :exponent,
     :offset]},
 :feFuncB=>
  {:elements=>[:feFuncB, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :type,
     :tableValues,
     :slope,
     :intercept,
     :amplitude,
     :exponent,
     :offset]},
 :feFuncG=>
  {:elements=>[:feFuncG, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :type,
     :tableValues,
     :slope,
     :intercept,
     :amplitude,
     :exponent,
     :offset]},
 :feFuncR=>
  {:elements=>[:feFuncR, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :type,
     :tableValues,
     :slope,
     :intercept,
     :amplitude,
     :exponent,
     :offset]},
 :feGaussianBlur=>
  {:elements=>[:feGaussianBlur, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :stdDeviation]},
 :feImage=>
  {:elements=>[:feImage, :animate, :animateTransform, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :preserveAspectRatio,
     :"xlink:href"]},
 :feMerge=>
  {:elements=>[:feMerge, :feMergeNode],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style]},
 :feMergeNode=>
  {:elements=>[:feMergeNode, :animate, :set],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :in]},
 :feMorphology=>
  {:elements=>[:feMorphology, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :operator,
     :radius]},
 :feOffset=>
  {:elements=>[:feOffset, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :dx,
     :dy]},
 :fePointLight=>
  {:elements=>[:fePointLight, :animate, :set],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :x, :y, :z]},
 :feSpecularLighting=>
  {:elements=>[:feSpecularLighting],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in,
     :surfaceScale,
     :specularConstant,
     :specularExponent,
     :kernelUnitLength]},
 :feSpotLight=>
  {:elements=>[:feSpotLight, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :x,
     :y,
     :z,
     :pointsAtX,
     :pointsAtY,
     :pointsAtZ,
     :specularExponent,
     :limitingConeAngle]},
 :feTile=>
  {:elements=>[:feTile, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :in]},
 :feTurbulence=>
  {:elements=>[:feTurbulence, :animate, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :x,
     :y,
     :width,
     :height,
     :result,
     :class,
     :style,
     :baseFrequency,
     :numOctaves,
     :seed,
     :stitchTiles,
     :type]},
 :filter=>
  {:elements=>
    [:filter,
     :desc,
     :metadata,
     :title,
     :feBlend,
     :feColorMatrix,
     :feComponentTransfer,
     :feComposite,
     :feConvolveMatrix,
     :feDiffuseLighting,
     :feDisplacementMap,
     :feFlood,
     :feGaussianBlur,
     :feImage,
     :feMerge,
     :feMorphology,
     :feOffset,
     :feSpecularLighting,
     :feTile,
     :feTurbulence,
     :animate,
     :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :x,
     :y,
     :width,
     :height,
     :filterRes,
     :filterUnits,
     :primitiveUnits,
     :"xlink:href"]},
 :font=>
  {:elements=>
    [:font,
     :desc,
     :metadata,
     :title,
     :"font-face",
     :glyph,
     :hkern,
     :"missing-glyph",
     :vkern],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :"horiz-origin-x",
     :"horiz-origin-y",
     :"horiz-adv-x",
     :"vert-origin-x",
     :"vert-origin-y",
     :"vert-adv-y"]},
 :"font-face"=>
  {:elements=>[:"font-face", :"font-face-src"],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"font-family",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"font-stretch",
     :"font-size",
     :"unicode-range",
     :"units-per-em",
     :"panose-1",
     :stemv,
     :stemh,
     :slope,
     :"cap-height",
     :"x-height",
     :"accent-height",
     :ascent,
     :descent,
     :widths,
     :bbox,
     :ideographic,
     :alphabetic,
     :mathematical,
     :hanging,
     :"v-ideographic",
     :"v-alphabetic",
     :"v-mathematical",
     :"v-hanging",
     :"underline-position",
     :"underline-thickness",
     :"strikethrough-position",
     :"strikethrough-thickness",
     :"overline-position",
     :"overline-thickness"]},
 :"font-face-format"=>
  {:elements=>[:"font-face-format"],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :string]},
 :"font-face-name"=>
  {:elements=>[:"font-face-name"],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :name]},
 :"font-face-src"=>
  {:elements=>[:"font-face-src", :"font-face-name", :"font-face-uri"],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :"font-face-uri"=>
  {:elements=>[:"font-face-uri", :"font-face-format"],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :"xlink:href"]},
 :foreignObject=>
  {:elements=>[:foreignObject],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :x,
     :y,
     :width,
     :height]},
 :g=>
  {:elements=>
    [:g,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform]},
 :glyph=>
  {:elements=>
    [:glyph,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :d,
     :"horiz-adv-x",
     :"vert-origin-x",
     :"vert-origin-y",
     :"vert-adv-y",
     :unicode,
     :"glyph-name",
     :orientation,
     :"arabic-form",
     :lang]},
 :glyphRef=>
  {:elements=>[:glyphRef],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :x,
     :y,
     :dx,
     :dy,
     :glyphRef,
     :format,
     :"xlink:href"]},
 :hkern=>
  {:elements=>[:hkern],
   :attributes=>
    [:id, :"xml:base", :"xml:lang", :"xml:space", :u1, :g1, :u2, :g2, :k]},
 :image=>
  {:elements=>
    [:image,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :preserveAspectRatio,
     :transform,
     :x,
     :y,
     :width,
     :height,
     :"xlink:href"]},
 :line=>
  {:elements=>
    [:line,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :x1,
     :y1,
     :x2,
     :y2]},
 :linearGradient=>
  {:elements=>
    [:linearGradient,
     :desc,
     :metadata,
     :title,
     :animate,
     :animateTransform,
     :set,
     :stop],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :x1,
     :y1,
     :x2,
     :y2,
     :gradientUnits,
     :gradientTransform,
     :spreadMethod,
     :"xlink:href"]},
 :marker=>
  {:elements=>
    [:marker,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :viewBox,
     :preserveAspectRatio,
     :refX,
     :refY,
     :markerUnits,
     :markerWidth,
     :markerHeight,
     :orient]},
 :mask=>
  {:elements=>
    [:mask,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :x,
     :y,
     :width,
     :height,
     :maskUnits,
     :maskContentUnits]},
 :metadata=>
  {:elements=>[:metadata],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :"missing-glyph"=>
  {:elements=>
    [:"missing-glyph",
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :d,
     :"horiz-adv-x",
     :"vert-origin-x",
     :"vert-origin-y",
     :"vert-adv-y"]},
 :mpath=>
  {:elements=>[:mpath, :desc, :metadata, :title],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :externalResourcesRequired,
     :"xlink:href"]},
 :path=>
  {:elements=>
    [:path,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :d,
     :pathLength]},
 :pattern=>
  {:elements=>
    [:pattern,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :viewBox,
     :preserveAspectRatio,
     :x,
     :y,
     :width,
     :height,
     :patternUnits,
     :patternContentUnits,
     :patternTransform,
     :"xlink:href"]},
 :polygon=>
  {:elements=>
    [:polygon,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :points]},
 :polyline=>
  {:elements=>
    [:polyline,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :points]},
 :radialGradient=>
  {:elements=>
    [:radialGradient,
     :desc,
     :metadata,
     :title,
     :animate,
     :animateTransform,
     :set,
     :stop],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :cx,
     :cy,
     :r,
     :fx,
     :fy,
     :gradientUnits,
     :gradientTransform,
     :spreadMethod,
     :"xlink:href"]},
 :rect=>
  {:elements=>
    [:rect,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :x,
     :y,
     :width,
     :height,
     :rx,
     :ry]},
 :script=>
  {:elements=>[:script],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :externalResourcesRequired,
     :type,
     :"xlink:href"]},
 :set=>
  {:elements=>[:set, :desc, :metadata, :title],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onbegin,
     :onend,
     :onrepeat,
     :onload,
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :attributeType,
     :attributeName,
     :begin,
     :dur,
     :end,
     :min,
     :max,
     :restart,
     :repeatCount,
     :repeatDur,
     :fill,
     :externalResourcesRequired,
     :to]},
 :stop=>
  {:elements=>[:stop, :animate, :animateColor, :set],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :offset]},
 :style=>
  {:elements=>[:style],
   :attributes=>
    [:id, :"xml:base", :"xml:lang", :"xml:space", :type, :media, :title]},
 :svg=>
  {:elements=>
    [:svg,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onunload,
     :onabort,
     :onerror,
     :onresize,
     :onscroll,
     :onzoom,
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :x,
     :y,
     :width,
     :height,
     :viewBox,
     :preserveAspectRatio,
     :zoomAndPan,
     :version,
     :baseProfile,
     :contentScriptType,
     :contentStyleType,
     :x,
     :y,
     :width,
     :height,
     :version,
     :baseProfile,
     :xmlns,
     :"xmlns:svg",
     :"xmlns:cc",
     :"xmlns:dc",
     :"xmlns:rdf",
     :"xmlns:inkscape",
     :"xmlns:xlink"]},
 :switch=>
  {:elements=>
    [:switch,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :a,
     :foreignObject,
     :g,
     :image,
     :svg,
     :switch,
     :text,
     :use],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform]},
 :symbol=>
  {:elements=>
    [:symbol,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :circle,
     :ellipse,
     :line,
     :path,
     :polygon,
     :polyline,
     :rect,
     :defs,
     :g,
     :svg,
     :symbol,
     :use,
     :linearGradient,
     :radialGradient,
     :a,
     :altGlyphDef,
     :clipPath,
     :"color-profile",
     :cursor,
     :filter,
     :font,
     :"font-face",
     :foreignObject,
     :image,
     :marker,
     :mask,
     :pattern,
     :script,
     :style,
     :switch,
     :text,
     :view],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :preserveAspectRatio,
     :viewBox]},
 :text=>
  {:elements=>
    [:text,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title,
     :altGlyph,
     :textPath,
     :tref,
     :tspan,
     :a],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :lengthAdjust,
     :x,
     :y,
     :dx,
     :dy,
     :rotate,
     :textLength]},
 :textPath=>
  {:elements=>
    [:textPath,
     :desc,
     :metadata,
     :title,
     :a,
     :altGlyph,
     :animate,
     :animateColor,
     :set,
     :tref,
     :tspan],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :"xlink:href",
     :startOffset,
     :method,
     :spacing]},
 :title=>
  {:elements=>[:title],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :class, :style]},
 :tref=>
  {:elements=>[:tref, :desc, :metadata, :title, :animate, :animateColor, :set],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :"xlink:href"]},
 :tspan=>
  {:elements=>
    [:tspan,
     :desc,
     :metadata,
     :title,
     :a,
     :altGlyph,
     :animate,
     :animateColor,
     :set,
     :tref,
     :tspan],
   :attributes=>
    [:requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :class,
     :style,
     :externalResourcesRequired,
     :x,
     :y,
     :dx,
     :dy,
     :rotate,
     :textLength,
     :lengthAdjust]},
 :use=>
  {:elements=>
    [:use,
     :animate,
     :animateColor,
     :animateMotion,
     :animateTransform,
     :set,
     :desc,
     :metadata,
     :title],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :requiredFeatures,
     :requiredExtensions,
     :systemLanguage,
     :onfocusin,
     :onfocusout,
     :onactivate,
     :onclick,
     :onmousedown,
     :onmouseup,
     :onmouseover,
     :onmousemove,
     :onmouseout,
     :onload,
     :"alignment-baseline",
     :"baseline-shift",
     :clip,
     :"clip-path",
     :"clip-rule",
     :color,
     :"color-interpolation",
     :"color-interpolation-filters",
     :"color-profile",
     :"color-rendering",
     :cursor,
     :direction,
     :display,
     :"dominant-baseline",
     :"enable-background",
     :fill,
     :"fill-opacity",
     :"fill-rule",
     :filter,
     :"flood-color",
     :"flood-opacity",
     :"font-family",
     :"font-size",
     :"font-size-adjust",
     :"font-stretch",
     :"font-style",
     :"font-variant",
     :"font-weight",
     :"glyph-orientation-horizontal",
     :"glyph-orientation-vertical",
     :"image-rendering",
     :kerning,
     :"letter-spacing",
     :"lighting-color",
     :"marker-end",
     :"marker-mid",
     :"marker-start",
     :mask,
     :opacity,
     :overflow,
     :"pointer-events",
     :"shape-rendering",
     :"stop-color",
     :"stop-opacity",
     :stroke,
     :"stroke-dasharray",
     :"stroke-dashoffset",
     :"stroke-linecap",
     :"stroke-linejoin",
     :"stroke-miterlimit",
     :"stroke-opacity",
     :"stroke-width",
     :"text-anchor",
     :"text-decoration",
     :"text-rendering",
     :"unicode-bidi",
     :visibility,
     :"word-spacing",
     :"writing-mode",
     :"xlink:href",
     :"xlink:show",
     :"xlink:actuate",
     :"xlink:type",
     :"xlink:role",
     :"xlink:arcrole",
     :"xlink:title",
     :class,
     :style,
     :externalResourcesRequired,
     :transform,
     :x,
     :y,
     :width,
     :height,
     :"xlink:href"]},
 :view=>
  {:elements=>[:view, :desc, :metadata, :title],
   :attributes=>
    [:id,
     :"xml:base",
     :"xml:lang",
     :"xml:space",
     :externalResourcesRequired,
     :viewBox,
     :preserveAspectRatio,
     :zoomAndPan,
     :viewTarget]},
 :vkern=>
  {:elements=>[:vkern],
   :attributes=>
    [:id, :"xml:base", :"xml:lang", :"xml:space", :u1, :g1, :u2, :g2, :k]}}
