| Viewing file:  tiny12.py (57.49 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#!/usr/bin/env python
#coding:utf-8
 # Author:  mozman --<mozman@gmx.at>
 # Purpose: tiny12 data
 # Created: 15.10.2010
 # Copyright (C) 2010, Manfred Moitzi
 # License: MIT License
 
 from svgwrite.data.types import SVGAttribute, SVGMultiAttribute
 from svgwrite.data.types import SVGElement
 from svgwrite.data.typechecker import Tiny12TypeChecker as TypeChecker
 
 empty_list = []
 
 attributes = {
 'about': SVGAttribute('about', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'accent-height': SVGAttribute('accent-height', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'accumulate': SVGAttribute('accumulate', anim=False,
 types=empty_list,
 const=frozenset(['none', 'sum'])),
 'additive': SVGAttribute('additive', anim=False,
 types=empty_list,
 const=frozenset(['replace', 'sum'])),
 'alphabetic': SVGAttribute('alphabetic', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'arabic-form': SVGAttribute('arabic-form', anim=False,
 types=empty_list,
 const=frozenset(['terminal', 'initial', 'isolated', 'medial'])),
 'ascent': SVGAttribute('ascent', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'attributeName': SVGAttribute('attributeName', anim=False,
 types=frozenset(['name']),
 const=empty_list),
 'attributeType': SVGAttribute('attributeType', anim=False,
 types=empty_list,
 const=frozenset(['XML', 'CSS', 'auto'])),
 'audio-level': SVGAttribute('audio-level', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'bandwidth': SVGAttribute('bandwidth', anim=False,
 types=frozenset(['number']),
 const=frozenset(['auto'])),
 'baseProfile': SVGAttribute('baseProfile', anim=False,
 types=empty_list,
 const=frozenset(['none', 'tiny', 'basic', 'full'])),
 'bbox': SVGAttribute('bbox', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'begin': SVGAttribute('begin', anim=False,
 types=frozenset(['timing-value-list']),
 const=frozenset(['indefinite'])),
 'buffered-rendering': SVGAttribute('buffered-rendering', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'dynamic', 'static', 'inherit'])),
 'by': SVGAttribute('by', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'calcMode': SVGAttribute('calcMode', anim=False,
 types=empty_list,
 const=frozenset(['discrete', 'linear', 'paced', 'spline'])),
 'cap-height': SVGAttribute('cap-height', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'class': SVGAttribute('class', anim=True,
 types=frozenset(['list-of-name']),
 const=empty_list),
 'color': SVGAttribute('color', anim=True,
 types=frozenset(['color']),
 const=frozenset(['inherit'])),
 'color-rendering': SVGAttribute('color-rendering', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'optimizeSpeed', 'optimizeQuality', 'inherit'])),
 'content': SVGAttribute('content', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'contentScriptType': SVGAttribute('contentScriptType', anim=False,
 types=frozenset(['content-type']),
 const=empty_list),
 'cx': SVGAttribute('cx', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'cy': SVGAttribute('cy', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'd': SVGAttribute('d', anim=True,
 types=frozenset(['path-data']),
 const=empty_list),
 'datatype': SVGAttribute('datatype', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'defaultAction': SVGAttribute('defaultAction', anim=False,
 types=empty_list,
 const=frozenset(['perform', 'cancel'])),
 'descent': SVGAttribute('descent', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'direction': SVGAttribute('direction', anim=False,
 types=empty_list,
 const=frozenset(['ltr', 'rtl', 'inherit'])),
 'display': SVGAttribute('display', anim=True,
 types=empty_list,
 const=frozenset(['inline', 'block', 'list-item', 'run-in', 'compact',
 'marker', 'table', 'inline-table', 'table-row-group',
 'table-header-group', 'table-footer-group', 'table-row',
 'table-column-group', 'table-column', 'table-cell',
 'table-caption', 'none', 'inherit'])),
 'display-align': SVGAttribute('display-align', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'before', 'center', 'after', 'inherit'])),
 'dur': SVGAttribute('dur', anim=False,
 types=frozenset(['time']),
 const=frozenset(['media', 'indefinite'])),
 'editable': SVGAttribute('editable', anim=True,
 types=empty_list,
 const=frozenset(['none', 'simple'])),
 'end': SVGAttribute('end', anim=False,
 types=frozenset(['timing-value-list']),
 const=frozenset(['indefinite'])),
 'ev:event': SVGAttribute('ev:event', anim=False,
 types=frozenset(['XML-Name']),
 const=empty_list),
 'event': SVGAttribute('event', anim=False,
 types=frozenset(['XML-Name']),
 const=empty_list),
 'externalResourcesRequired': SVGAttribute('externalResourcesRequired', anim=False,
 types=frozenset(['boolean']),
 const=empty_list),
 'fill': SVGMultiAttribute({
 '*': SVGAttribute(
 'fill', anim=True,
 types=frozenset(['paint']),
 const=frozenset(['inherit'])),
 'set animateMotion animate animateColor animateTransform': SVGAttribute(
 'fill', anim=False,
 types=empty_list,
 const=frozenset(['freeze', 'remove']))
 }),
 'fill-opacity': SVGAttribute('fill-opacity', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'fill-rule': SVGAttribute('fill-rule', anim=True,
 types=empty_list,
 const=frozenset(['nonzero', 'evenodd', 'inherit'])),
 'focusHighlight': SVGAttribute('focusHighlight', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'none'])),
 'focusable': SVGAttribute('focusable', anim=True,
 types=frozenset(['boolean']),
 const=frozenset(['auto'])),
 'font-family': SVGAttribute('font-family', anim=True,
 types=frozenset(['string']),
 const=frozenset(['inherit'])),
 'font-size': SVGAttribute('font-size', anim=True,
 types=frozenset(['length']),
 const=frozenset(['inherit'])),
 'font-stretch': SVGAttribute('font-stretch', anim=False,
 types=empty_list,
 const=frozenset(['condensed', 'normal', 'ultra-condensed', 'expanded',
 'narrower', 'inherit', 'semi-condensed', 'extra-condensed',
 'ultra-expanded', 'wider', 'semi-expanded', 'extra-expanded'])),
 'font-style': SVGAttribute('font-style', anim=True,
 types=empty_list,
 const=frozenset(['normal', 'italic', 'oblique', 'inherit'])),
 'font-variant': SVGAttribute('font-variant', anim=True,
 types=empty_list,
 const=frozenset(['normal', 'small-caps', 'inherit'])),
 'font-weight': SVGAttribute('font-weight', anim=True,
 types=empty_list,
 const=frozenset(['normal', 'bold', 'bolder', 'lighter', '100', '200',
 '300', '400', '500', '600', '700', '800', '900',
 'inherit'])),
 'from': SVGAttribute('from', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'g1': SVGAttribute('g1', anim=False,
 types=frozenset(['list-of-name']),
 const=empty_list),
 'g2': SVGAttribute('g2', anim=False,
 types=frozenset(['list-of-name']),
 const=empty_list),
 'glyph-name': SVGAttribute('glyph-name', anim=False,
 types=frozenset(['list-of-name']),
 const=empty_list),
 'gradientUnits': SVGAttribute('gradientUnits', anim=True,
 types=empty_list,
 const=frozenset(['userSpaceOnUse', 'objectBoundingBox'])),
 'handler': SVGAttribute('handler', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'hanging': SVGAttribute('hanging', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'height': SVGMultiAttribute({
 '*': SVGAttribute(
 'height', anim=True,
 types=frozenset(['length']),
 const=empty_list),
 'textArea': SVGAttribute(
 'height', anim=True,
 types=frozenset(['length']),
 const=frozenset(['auto'])),
 }),
 'horiz-adv-x': SVGAttribute('horiz-adv-x', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'horiz-origin-x': SVGAttribute('horiz-origin-x', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'id': SVGAttribute('id', anim=False,
 types=frozenset(['name']),
 const=empty_list),
 'ideographic': SVGAttribute('ideographic', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'image-rendering': SVGAttribute('image-rendering', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'optimizeSpeed', 'optimizeQuality', 'inherit'])),
 'initialVisibility': SVGAttribute('initialVisibility', anim=False,
 types=empty_list,
 const=frozenset(['whenStarted', 'always'])),
 'k': SVGAttribute('k', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'keyPoints': SVGAttribute('keyPoints', anim=False,
 types=frozenset(['semicolon-list']),
 const=empty_list),
 'keySplines': SVGAttribute('keySplines', anim=False,
 types=frozenset(['semicolon-list']),
 const=empty_list),
 'keyTimes': SVGAttribute('keyTimes', anim=False,
 types=frozenset(['semicolon-list']),
 const=empty_list),
 'lang': SVGAttribute('lang', anim=False,
 types=frozenset(['list-of-name']),
 const=empty_list),
 'line-increment': SVGAttribute('line-increment', anim=True,
 types=frozenset(['number']),
 const=frozenset(['auto', 'inherit'])),
 'mathematical': SVGAttribute('mathematical', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'max': SVGAttribute('max', anim=False,
 types=frozenset(['time']),
 const=frozenset(['media'])),
 'mediaCharacterEncoding': SVGAttribute('mediaCharacterEncoding', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'mediaContentEncodings': SVGAttribute('mediaContentEncodings', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'mediaSize': SVGAttribute('mediaSize', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'mediaTime': SVGAttribute('mediaTime', anim=False,
 types=frozenset(['time']),
 const=empty_list),
 'min': SVGAttribute('min', anim=False,
 types=frozenset(['time']),
 const=frozenset(['media'])),
 'nav-down': SVGAttribute('nav-down', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-down-left': SVGAttribute('nav-down-left', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-down-right': SVGAttribute('nav-down-right', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-left': SVGAttribute('nav-left', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-next': SVGAttribute('nav-next', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-prev': SVGAttribute('nav-prev', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-right': SVGAttribute('nav-right', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-up': SVGAttribute('nav-up', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-up-left': SVGAttribute('nav-up-left', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'nav-up-right': SVGAttribute('nav-up-right', anim=True,
 types=frozenset(['focus']),
 const=empty_list),
 'observer': SVGAttribute('observer', anim=False,
 types=frozenset(['IDREF']),
 const=empty_list),
 'offset': SVGAttribute('offset', anim=True,
 types=frozenset(['number']),
 const=empty_list),
 'opacity': SVGAttribute('opacity', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'origin': SVGAttribute('origin', anim=False,
 types=empty_list,
 const=frozenset(['default'])),
 'overlay': SVGAttribute('overlay', anim=False,
 types=empty_list,
 const=frozenset(['none', 'top'])),
 'overline-position': SVGAttribute('overline-position', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'overline-thickness': SVGAttribute('overline-thickness', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'panose-1': SVGAttribute('panose-1', anim=False,
 types=frozenset(['list-of-integer']),
 const=empty_list),
 'path': SVGAttribute('path', anim=False,
 types=frozenset(['path-data']),
 const=empty_list),
 'pathLength': SVGAttribute('pathLength', anim=True,
 types=frozenset(['number']),
 const=empty_list),
 'phase': SVGAttribute('phase', anim=False,
 types=empty_list,
 const=frozenset(['default', 'capture'])),
 'playbackOrder': SVGAttribute('playbackOrder', anim=False,
 types=empty_list,
 const=frozenset(['all', 'forwardOnly'])),
 'pointer-events': SVGAttribute('pointer-events', anim=True,
 types=empty_list,
 const=frozenset(['visiblePainted', 'visibleFill', 'visibleStroke', 'visible',
 'painted', 'fill', 'stroke', 'all', 'none', 'inherit'])),
 'points': SVGAttribute('points', anim=True,
 types=frozenset(['list-of-number']),
 const=empty_list),
 'preserveAspectRatio': SVGAttribute('preserveAspectRatio', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'propagate': SVGAttribute('propagate', anim=False,
 types=empty_list,
 const=frozenset(['continue', 'stop'])),
 'property': SVGAttribute('property', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'r': SVGAttribute('r', anim=True,
 types=frozenset(['length']),
 const=empty_list),
 'rel': SVGAttribute('rel', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'repeatCount': SVGAttribute('repeatCount', anim=False,
 types=frozenset(['number']),
 const=frozenset(['indefinite'])),
 'repeatDur': SVGAttribute('repeatDur', anim=False,
 types=frozenset(['time']),
 const=frozenset(['indefinite'])),
 'requiredExtensions': SVGAttribute('requiredExtensions', anim=False,
 types=frozenset(['list-of-IRI']),
 const=empty_list),
 'requiredFeatures': SVGAttribute('requiredFeatures', anim=False,
 types=frozenset(['list-of-IRI']),
 const=empty_list),
 'requiredFonts': SVGAttribute('requiredFonts', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'requiredFormats': SVGAttribute('requiredFormats', anim=False,
 types=frozenset(['anything']),
 const=empty_list),
 'resource': SVGAttribute('resource', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'restart': SVGAttribute('restart', anim=False,
 types=empty_list,
 const=frozenset(['always', 'never', 'whenNotActive'])),
 'rev': SVGAttribute('rev', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'role': SVGAttribute('role', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'rotate': SVGAttribute('rotate', anim=True,
 types=frozenset(['list-of-number']),
 const=empty_list),
 'rx': SVGAttribute('rx', anim=True,
 types=frozenset(['length']),
 const=empty_list),
 'ry': SVGAttribute('ry', anim=True,
 types=frozenset(['length']),
 const=empty_list),
 'shape-rendering': SVGAttribute('shape-rendering', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'optimizeSpeed', 'crispEdges', 'geometricPrecision', 'inherit'])),
 'slope': SVGAttribute('slope', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'snapshotTime': SVGAttribute('snapshotTime', anim=False,
 types=frozenset(['time']),
 const=frozenset(['none'])),
 'solid-color': SVGAttribute('solid-color', anim=True,
 types=frozenset(['color']),
 const=frozenset(['currentColor', 'inherit'])),
 'solid-opacity': SVGAttribute('solid-opacity', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'stemh': SVGAttribute('stemh', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'stemv': SVGAttribute('stemv', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'stop-color': SVGAttribute('stop-color', anim=True,
 types=frozenset(['color']),
 const=frozenset(['inherit'])),
 'stop-opacity': SVGAttribute('stop-opacity', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'strikethrough-position': SVGAttribute('strikethrough-position', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'strikethrough-thickness': SVGAttribute('strikethrough-thickness', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'stroke': SVGAttribute('stroke', anim=True,
 types=frozenset(['paint']),
 const=frozenset(['inherit'])),
 'stroke-dasharray': SVGAttribute('stroke-dasharray', anim=True,
 types=frozenset(['list-of-length']),
 const=frozenset(['none', 'inherit'])),
 'stroke-dashoffset': SVGAttribute('stroke-dashoffset', anim=True,
 types=frozenset(['length']),
 const=frozenset(['inherit'])),
 'stroke-linecap': SVGAttribute('stroke-linecap', anim=True,
 types=empty_list,
 const=frozenset(['butt', 'round', 'square', 'inherit'])),
 'stroke-linejoin': SVGAttribute('stroke-linejoin', anim=True,
 types=empty_list,
 const=frozenset(['miter', 'round', 'bevel', 'inherit'])),
 'stroke-miterlimit': SVGAttribute('stroke-miterlimit', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'stroke-opacity': SVGAttribute('stroke-opacity', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'stroke-width': SVGAttribute('stroke-width', anim=True,
 types=frozenset(['length']),
 const=frozenset(['inherit'])),
 'syncBehavior': SVGAttribute('syncBehavior', anim=False,
 types=empty_list,
 const=frozenset(['canSlip', 'locked', 'independent', 'default'])),
 'syncBehaviorDefault': SVGAttribute('syncBehaviorDefault', anim=False,
 types=empty_list,
 const=frozenset(['canSlip', 'locked', 'independent', 'inherit'])),
 'syncMaster': SVGAttribute('syncMaster', anim=False,
 types=frozenset(['boolean']),
 const=empty_list),
 'syncTolerance': SVGAttribute('syncTolerance', anim=False,
 types=frozenset(['time']),
 const=frozenset(['default'])),
 'syncToleranceDefault': SVGAttribute('syncToleranceDefault', anim=False,
 types=frozenset(['time']),
 const=frozenset(['inherit'])),
 'systemLanguage': SVGAttribute('systemLanguage', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'target': SVGMultiAttribute({
 '* a': SVGAttribute(
 'target', anim=True,
 types=frozenset(['XML-Name']),
 const=frozenset(['_replace', '_self', '_parent', '_top', '_blank'])),
 'listener': SVGAttribute(
 'target', anim=False,
 types=frozenset(['XML-Name']),
 const=empty_list),
 }),
 'text-align': SVGAttribute('text-align', anim=True,
 types=empty_list,
 const=frozenset(['start', 'center', 'end', 'inherit'])),
 'text-anchor': SVGAttribute('text-anchor', anim=True,
 types=empty_list,
 const=frozenset(['start', 'middle', 'end', 'inherit'])),
 'text-rendering': SVGAttribute('text-rendering', anim=True,
 types=empty_list,
 const=frozenset(['auto', 'optimizeSpeed', 'optimizeLegibility', 'geometricPrecision', 'inherit'])),
 'timelineBegin': SVGAttribute('timelineBegin', anim=False,
 types=empty_list,
 const=frozenset(['onLoad', 'onStart'])),
 'to': SVGAttribute('to', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'transform': SVGAttribute('transform', anim=True,
 types=frozenset(['transform-list']),
 const=frozenset(['none'])),
 'transformBehavior': SVGAttribute('transformBehavior', anim=False,
 types=empty_list,
 const=frozenset(['geometric', 'pinned', 'pinned90', 'pinned180', 'pinned270'])),
 'type': SVGMultiAttribute({
 '* audio image video': SVGAttribute(
 'type', anim=True,
 types=frozenset(['content-type']),
 const=empty_list),
 'handler script': SVGAttribute(
 'type', anim=False,
 types=frozenset(['content-type']),
 const=empty_list),
 'animateTransform': SVGAttribute(
 'type', anim=False,
 types=empty_list,
 const=frozenset(['translate', 'scale', 'rotate', 'skewX', 'skewY'])),
 }),
 'typeof': SVGAttribute('typeof', anim=True,
 types=frozenset(['string']),
 const=empty_list),
 'u1': SVGAttribute('u1', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'u2': SVGAttribute('u2', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'underline-position': SVGAttribute('underline-position', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'underline-thickness': SVGAttribute('underline-thickness', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'unicode': SVGAttribute('unicode', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'unicode-bidi': SVGAttribute('unicode-bidi', anim=False,
 types=empty_list,
 const=frozenset(['normal', 'embed', 'bidi-override', 'inherit'])),
 'unicode-range': SVGAttribute('unicode-range', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'units-per-em': SVGAttribute('units-per-em', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'values': SVGAttribute('values', anim=False,
 types=frozenset(['list-of-number']),
 const=empty_list),
 'vector-effect': SVGAttribute('vector-effect', anim=True,
 types=empty_list,
 const=frozenset(['none', 'non-scaling-stroke', 'inherit'])),
 'version': SVGAttribute('version', anim=False,
 types=empty_list,
 const=frozenset(['1.1', '1.2'])),
 'viewBox': SVGAttribute('viewBox', anim=True,
 types=frozenset(['four-numbers']),
 const=empty_list),
 'viewport-fill': SVGAttribute('viewport-fill', anim=True,
 types=frozenset(['color']),
 const=frozenset(['none', 'inherit'])),
 'viewport-fill-opacity': SVGAttribute('viewport-fill-opacity', anim=True,
 types=frozenset(['number']),
 const=frozenset(['inherit'])),
 'visibility': SVGAttribute('visibility', anim=True,
 types=empty_list,
 const=frozenset(['visible', 'hidden', 'inherit'])),
 'width': SVGMultiAttribute({
 '*': SVGAttribute(
 'width', anim=True,
 types=frozenset(['length']),
 const=empty_list),
 'textArea': SVGAttribute(
 'width', anim=True,
 types=frozenset(['length']),
 const=frozenset(['auto'])),
 }),
 'widths': SVGAttribute('widths', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'x': SVGMultiAttribute({
 '*': SVGAttribute(
 'x', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'text': SVGAttribute(
 'x', anim=True,
 types=frozenset(['list-of-coordinate']),
 const=empty_list),
 }),
 'x-height': SVGAttribute('x-height', anim=False,
 types=frozenset(['number']),
 const=empty_list),
 'x1': SVGAttribute('x1', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'x2': SVGAttribute('x2', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'xlink:actuate': SVGMultiAttribute({
 '*': SVGAttribute(
 'xlink:actuate', anim=False,
 types=empty_list,
 const=frozenset(['onLoad'])),
 'a': SVGAttribute(
 'xlink:actuate', anim=False,
 types=empty_list,
 const=frozenset(['onRequest'])),
 }),
 'xlink:arcrole': SVGAttribute('xlink:arcrole', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'xlink:href': SVGAttribute('xlink:href', anim=True,
 types=frozenset(['IRI']),
 const=empty_list),
 'xlink:role': SVGAttribute('xlink:role', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'xlink:show': SVGMultiAttribute({
 '*': SVGAttribute(
 'xlink:show', anim=False,
 types=empty_list,
 const=frozenset(['other'])),
 'animation audio foreignObject image use video': SVGAttribute(
 'xlink:show', anim=False,
 types=empty_list,
 const=frozenset(['embed'])),
 'a': SVGAttribute(
 'xlink:show', anim=False,
 types=empty_list,
 const=frozenset(['new', 'replace'])),
 }),
 'xlink:title': SVGAttribute('xlink:title', anim=False,
 types=frozenset(['string']),
 const=empty_list),
 'xlink:type': SVGAttribute('xlink:type', anim=True,
 types=empty_list,
 const=frozenset(['simple'])),
 'xmlns': SVGAttribute('xmlns', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'xmlns:xlink': SVGAttribute('xmlns:xlink', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'xmlns:ev': SVGAttribute('xmlns:ev', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'xml:base': SVGAttribute('xml:base', anim=False,
 types=frozenset(['IRI']),
 const=empty_list),
 'xml:id': SVGAttribute('xml:id', anim=False,
 types=frozenset(['name']),
 const=empty_list),
 'xml:lang': SVGAttribute('xml:lang', anim=False,
 types=frozenset(['name']),
 const=empty_list),
 'xml:space': SVGMultiAttribute({
 '*': SVGAttribute(
 'xml:space', anim=False,
 types=empty_list,
 const=frozenset(['preserve', 'default'])),
 'handler script': SVGAttribute(
 'xml:space', anim=False,
 types=empty_list,
 const=frozenset(['preserve'])),
 }),
 'y': SVGMultiAttribute({
 '*': SVGAttribute(
 'y', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'text': SVGAttribute(
 'y', anim=True,
 types=frozenset(['list-of-coordinate']),
 const=empty_list),
 }),
 'y1': SVGAttribute('y1', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'y2': SVGAttribute('y2', anim=True,
 types=frozenset(['coordinate']),
 const=empty_list),
 'zoomAndPan': SVGAttribute('zoomAndPan', anim=False,
 types=empty_list,
 const=frozenset(['disable', 'magnify'])),
 }
 
 attribute_names = ['slope', 'keySplines', 'rx', 'accumulate', 'bandwidth',
 'attributeType', 'unicode', 'nav-right', 'arabic-form',
 'y2', 'horiz-origin-x', 'underline-position', 'zoomAndPan',
 'cap-height', 'defaultAction', 'to', 'syncBehavior',
 'alphabetic', 'g2', 'g1', 'panose-1', 'strikethrough-thickness',
 'attributeName', 'bbox', 'nav-up-left', 'nav-left',
 'restart', 'target', 'xlink:actuate', 'rotate', 'resource',
 'd', 'syncToleranceDefault', 'initialVisibility',
 'transformBehavior', 'nav-up-right', 'keyTimes',
 'x', 'requiredFormats', 'nav-next', 'glyph-name',
 'xml:lang', 'mathematical', 'observer', 'repeatDur',
 'hanging', 'y1', 'xml:base', 'ascent', 'event',
 'strikethrough-position', 'overlay', 'rev', 'ry',
 'overline-thickness', 'content', 'version', 'rel',
 'focusable', 'requiredFonts', 'nav-down-right', 'xml:id',
 'offset', 'additive', 'underline-thickness', 'font-family',
 'by', 'mediaTime', 'timelineBegin', 'about', 'horiz-adv-x',
 'widths', 'k', 'requiredFeatures', 'preserveAspectRatio',
 'contentScriptType', 'origin', 'xml:space', 'xlink:href',
 'height', 'baseProfile', 'cy', 'cx', 'path', 'xlink:role',
 'from', 'u1', 'transform', 'units-per-em', 'u2', 'width',
 'handler', 'font-variant', 'x-height', 'dur', 'xlink:arcrole',
 'type', 'focusHighlight', 'mediaCharacterEncoding',
 'xlink:title', 'editable', 'stemv', 'systemLanguage',
 'x2', 'x1', 'ideographic', 'xlink:show', 'overline-position',
 'syncTolerance', 'gradientUnits', 'r', 'values', 'typeof',
 'mediaContentEncodings', 'property', 'requiredExtensions',
 'repeatCount', 'ev:event', 'nav-down', 'mediaSize', 'pathLength',
 'syncMaster', 'font-style', 'fill', 'end', 'descent',
 'calcMode', 'min', 'stemh', 'id', 'unicode-range',
 'nav-up', 'font-stretch', 'role', 'font-weight', 'begin',
 'xlink:type', 'syncBehaviorDefault', 'max', 'snapshotTime',
 'playbackOrder', 'keyPoints', 'nav-prev', 'propagate',
 'phase', 'externalResourcesRequired', 'nav-down-left',
 'class', 'lang', 'datatype', 'viewBox', 'points',
 'accent-height', 'y']
 property_names = ['stroke-linejoin', 'font-size', 'text-rendering', 'color-rendering',
 'fill-opacity', 'color', 'shape-rendering', 'solid-color', 'stroke',
 'stroke-linecap', 'vector-effect', 'stroke-width', 'font-style',
 'fill', 'solid-opacity', 'fill-rule', 'viewport-fill-opacity',
 'display-align', 'buffered-rendering', 'stroke-miterlimit',
 'font-variant', 'stop-opacity', 'font-weight', 'opacity', 'direction',
 'audio-level', 'visibility', 'unicode-bidi', 'line-increment',
 'image-rendering', 'font-family', 'viewport-fill', 'text-align',
 'stroke-opacity', 'stroke-dashoffset', 'text-anchor', 'stop-color',
 'pointer-events', 'stroke-dasharray', 'display']
 media_group_names = ['audio-level', 'buffered-rendering', 'display', 'image-rendering',
 'pointer-events', 'shape-rendering', 'text-rendering',
 'viewport-fill', 'viewport-fill-opacity', 'visibility']
 
 elements = {
 'a': SVGElement('a',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'target', 'transform', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['likeparent', 'defs', 'text', 'g', 'textArea', 'svg']),
 
 'animate': SVGElement('animate',
 attributes=['about', 'accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'handler', 'metadata', 'switch', 'title']),
 
 'animateColor': SVGElement('animateColor',
 attributes=['about', 'accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'handler', 'metadata', 'switch', 'title']),
 
 'animateMotion': SVGElement('animateMotion',
 attributes=['about', 'accumulate', 'additive', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keyPoints', 'keySplines', 'keyTimes', 'max', 'min', 'origin', 'path', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'rotate', 'systemLanguage', 'to', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'handler', 'metadata', 'mpath', 'switch', 'title']),
 
 'animateTransform': SVGElement('animateTransform',
 attributes=['about', 'accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'type', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'handler', 'metadata', 'switch', 'title']),
 
 'animation': SVGElement('animation',
 attributes=['about', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'externalResourcesRequired', 'fill', 'focusHighlight', 'focusable', 'height', 'id', 'initialVisibility', 'max', 'min', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'preserveAspectRatio', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'syncBehavior', 'syncMaster', 'syncTolerance', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=media_group_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'audio': SVGElement('audio',
 attributes=['about', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'externalResourcesRequired', 'fill', 'id', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'syncBehavior', 'syncMaster', 'syncTolerance', 'systemLanguage', 'type', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=media_group_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'circle': SVGElement('circle',
 attributes=['about', 'class', 'content', 'cx', 'cy', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'r', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'defs': SVGElement('defs',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'animation', 'audio', 'circle', 'defs', 'desc', 'discard', 'ellipse', 'font', 'font-face', 'foreignObject', 'g', 'handler', 'image', 'line', 'linearGradient', 'listener', 'metadata', 'path', 'polygon', 'polyline', 'prefetch', 'radialGradient', 'rect', 'script', 'set', 'solidColor', 'switch', 'text', 'textArea', 'title', 'use', 'video']),
 
 'desc': SVGElement('desc',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=media_group_names,
 children=empty_list),
 
 'discard': SVGElement('discard',
 attributes=['about', 'begin', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'handler', 'metadata', 'switch', 'title']),
 
 'ellipse': SVGElement('ellipse',
 attributes=['about', 'class', 'content', 'cx', 'cy', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'rx', 'ry', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'font': SVGElement('font',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'horiz-adv-x', 'horiz-origin-x', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'font-face', 'glyph', 'hkern', 'metadata', 'missing-glyph', 'switch', 'title']),
 
 'font-face': SVGElement('font-face',
 attributes=['about', 'accent-height', 'alphabetic', 'ascent', 'bbox', 'cap-height', 'class', 'content', 'datatype', 'descent', 'externalResourcesRequired', 'font-family', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'hanging', 'id', 'ideographic', 'mathematical', 'overline-position', 'overline-thickness', 'panose-1', 'property', 'rel', 'resource', 'rev', 'role', 'slope', 'stemh', 'stemv', 'strikethrough-position', 'strikethrough-thickness', 'typeof', 'underline-position', 'underline-thickness', 'unicode-range', 'units-per-em', 'widths', 'x-height', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'font-face-src', 'metadata', 'switch', 'title']),
 
 'font-face-src': SVGElement('font-face-src',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'font-face-uri', 'metadata', 'switch', 'title']),
 
 'font-face-uri': SVGElement('font-face-uri',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'foreignObject': SVGElement('foreignObject',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=property_names,
 children=['desc', 'metadata', 'svg', 'switch', 'title']),
 
 'g': SVGElement('g',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'animation', 'audio', 'circle', 'defs', 'desc', 'discard', 'ellipse', 'font', 'font-face', 'foreignObject', 'g', 'handler', 'image', 'line', 'linearGradient', 'listener', 'metadata', 'path', 'polygon', 'polyline', 'prefetch', 'radialGradient', 'rect', 'script', 'set', 'solidColor', 'switch', 'text', 'textArea', 'title', 'use', 'video']),
 
 'glyph': SVGElement('glyph',
 attributes=['about', 'arabic-form', 'class', 'content', 'd', 'datatype', 'glyph-name', 'horiz-adv-x', 'id', 'lang', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'unicode', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'handler': SVGElement('handler',
 attributes=['about', 'class', 'content', 'datatype', 'ev:event', 'externalResourcesRequired', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'type', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'hkern': SVGElement('hkern',
 attributes=['about', 'class', 'content', 'datatype', 'g1', 'g2', 'id', 'k', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'u1', 'u2', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'image': SVGElement('image',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'opacity', 'preserveAspectRatio', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'type', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=media_group_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'line': SVGElement('line',
 attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'x1', 'x2', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y1', 'y2'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'linearGradient': SVGElement('linearGradient',
 attributes=['about', 'class', 'content', 'datatype', 'gradientUnits', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'x1', 'x2', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y1', 'y2'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'metadata', 'set', 'stop', 'switch', 'title']),
 
 'listener': SVGElement('listener',
 attributes=['about', 'class', 'content', 'datatype', 'defaultAction', 'event', 'handler', 'id', 'observer', 'phase', 'propagate', 'property', 'rel', 'resource', 'rev', 'role', 'target', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=empty_list),
 
 'metadata': SVGElement('metadata',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=media_group_names,
 children=empty_list),
 
 'missing-glyph': SVGElement('missing-glyph',
 attributes=['about', 'class', 'content', 'd', 'datatype', 'horiz-adv-x', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'mpath': SVGElement('mpath',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'path': SVGElement('path',
 attributes=['about', 'class', 'content', 'd', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'pathLength', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'polygon': SVGElement('polygon',
 attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'points', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'polyline': SVGElement('polyline',
 attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'points', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'prefetch': SVGElement('prefetch',
 attributes=['about', 'bandwidth', 'class', 'content', 'datatype', 'id', 'mediaCharacterEncoding', 'mediaContentEncodings', 'mediaSize', 'mediaTime', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'radialGradient': SVGElement('radialGradient',
 attributes=['about', 'class', 'content', 'cx', 'cy', 'datatype', 'gradientUnits', 'id', 'property', 'r', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'metadata', 'set', 'stop', 'switch', 'title']),
 
 'rect': SVGElement('rect',
 attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'rx', 'ry', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'script': SVGElement('script',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'type', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'metadata', 'switch', 'title']),
 
 'set': SVGElement('set',
 attributes=['about', 'attributeName', 'attributeType', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'id', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=['desc', 'handler', 'metadata', 'switch', 'title']),
 
 'solidColor': SVGElement('solidColor',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'stop': SVGElement('stop',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'offset', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'metadata', 'set', 'switch', 'title']),
 
 'svg': SVGElement('svg',
 attributes=['about', 'baseProfile', 'class', 'content', 'contentScriptType', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'playbackOrder', 'preserveAspectRatio', 'property', 'rel', 'resource', 'rev', 'role', 'snapshotTime', 'syncBehaviorDefault', 'syncToleranceDefault', 'timelineBegin', 'transform', 'typeof', 'version', 'viewBox', 'width', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'xmlns', 'xmlns:xlink', 'xmlns:ev', 'zoomAndPan'],
 properties=property_names,
 children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'animation', 'audio', 'circle', 'defs', 'desc', 'discard', 'ellipse', 'font', 'font-face', 'foreignObject', 'g', 'handler', 'image', 'line', 'linearGradient', 'listener', 'metadata', 'path', 'polygon', 'polyline', 'prefetch', 'radialGradient', 'rect', 'script', 'set', 'solidColor', 'switch', 'text', 'textArea', 'title', 'use', 'video']),
 
 'switch': SVGElement('switch',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['likeparent', 'set', 'textArea', 'text', 'image', 'missing-glyph', 'font-face', 'video', 'path', 'animate', 'font', 'ellipse', 'glyph', 'use', 'font-face-src', 'polygon', 'script', 'handler', 'circle', 'radialGradient', 'prefetch', 'defs', 'mpath', 'stop', 'animateMotion', 'animateColor', 'discard', 'solidColor', 'hkern', 'line', 'animation', 'rect', 'g', 'svg', 'animateTransform', 'linearGradient', 'font-face-uri', 'foreignObject', 'polyline', 'audio']),
 
 'tbreak': SVGElement('tbreak',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=empty_list,
 children=empty_list),
 
 'text': SVGElement('text',
 attributes=['about', 'class', 'content', 'datatype', 'editable', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'rotate', 'systemLanguage', 'transform', 'typeof', 'x', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=property_names,
 children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title', 'tspan']),
 
 'textArea': SVGElement('textArea',
 attributes=['about', 'class', 'content', 'datatype', 'editable', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=property_names,
 children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'tbreak', 'title', 'tspan']),
 
 'title': SVGElement('title',
 attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=media_group_names,
 children=empty_list),
 
 'tspan': SVGElement('tspan',
 attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
 properties=property_names,
 children=['likeparent', 'text', 'textArea']),
 
 'use': SVGElement('use',
 attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=property_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 
 'video': SVGElement('video',
 attributes=['about', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'externalResourcesRequired', 'fill', 'focusHighlight', 'focusable', 'height', 'id', 'initialVisibility', 'max', 'min', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'overlay', 'preserveAspectRatio', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'syncBehavior', 'syncMaster', 'syncTolerance', 'systemLanguage', 'transform', 'transformBehavior', 'type', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
 properties=media_group_names,
 children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
 }
 
 |