OSDN Git Service

モジュールを統合
authordhrname <sie-developers@lists.sourceforge.jp>
Thu, 13 Nov 2014 14:23:31 +0000 (23:23 +0900)
committerdhrname <sie-developers@lists.sourceforge.jp>
Thu, 13 Nov 2014 14:23:31 +0000 (23:23 +0900)
org/sie-uncompressed.js

index 4730cd9..1a217f7 100755 (executable)
@@ -70,14 +70,17 @@ var _base = {
        * 自身をプロトタイプとして、新たにオブジェクトを生成する\r
        */\r
       up: function(name) {\r
-        if (!arguments[0]) {\r
-          throw new Error("No arguments error");\r
-        }\r
         var F = _base.F,\r
              s;\r
         F.prototype = this;\r
         s = new F();\r
-        this[name] = s;\r
+        if (name) {\r
+          this[name] = s;\r
+          s.up = this.up;\r
+        } else {\r
+          /*既定値を$1としておく*/\r
+          this.$1 = s;\r
+        }\r
         F = void 0;\r
         return s;\r
       },\r
@@ -86,7 +89,7 @@ var _base = {
        * 別のオブジェクトと合成ができるメソッド\r
        */\r
       mix: function(obj) {\r
-        if (!arguments[0]) {\r
+        if (!obj) {\r
           throw new Error("No arguments error");\r
         }\r
         if (typeof obj !== "function") {\r
@@ -111,11 +114,11 @@ var _base = {
        * 指定した名前nameのメソッドが呼び出された場合、便乗して指定関数funcをメソッドとして実行することができる\r
        */\r
       on: function(name, func) {\r
-        if (!arguments[0]) {\r
+        if (!name) {\r
           throw new Error("No arguments error");\r
         } else if (/^(?:up|on|mix)$/.test(name)) {\r
           throw new Error("Invalid method name error");\r
-        } else if (typeof arguments[1] !== "function") {\r
+        } else if (typeof func !== "function") {\r
           throw new Error("Not support arguments type");\r
         }\r
         var tev = this._eventList__,\r
@@ -177,22 +180,23 @@ var _base = {
     }\r
 };\r
 \r
-/*base関数で型のチェック用に使う*/\r
-_base.FF = function(){};\r
-_base.FF.prototype = _base.obj;\r
+/*base関数でキャッシュとして使うオブジェクト*/\r
+var baseCache = {};\r
 \r
 base = function (name) {\r
-    if (!arguments[0]) {\r
+    var __base = _base,\r
+         _cache = baseCache; //エイリアス作成\r
+    if (!name) {\r
       throw new Error("No arguments error");\r
-    } else if (this[name] && (this[name] instanceof _base.FF)) {\r
+    } else if (_cache[name]) {\r
       /*キャッシュに登録されている場合は、登録されたオブジェクトを返す*/\r
-      return this[name];\r
+      return _cache[name];\r
     } else {\r
-      var F = _base.F,\r
+      var F = __base.F,\r
            s;\r
-      F.prototype = _base.obj;\r
+      F.prototype = __base.obj;\r
       s = new F();\r
-      this[name] = s;\r
+      this[name] = _cache[name] = s;\r
       /*自身が値であるようなプロパティを設定する*/\r
       s[name] = s;\r
       F = void 0;\r
@@ -206,6 +210,8 @@ var hash = {},
     proto = Object.prototype;\r
 for (var i in proto) {\r
   hash[i] = true;\r
+  /*上記のキャッシュについて、すべてのプロパティをnullかundefinedにしておく*/\r
+  baseCache[i] = null;\r
 }\r
 hash.constructor = false; //constructorはNGハッシュに追加しない\r
 _base.__ng_ = hash;\r
@@ -216,7 +222,7 @@ hash = proto = void 0;
  */\r
 base.free = function() {\r
   delete _base.obj;\r
-  _base = void 0;\r
+  _base = baseCache = void 0;\r
 };\r
 \r
 })();\r
@@ -361,7 +367,7 @@ base("DOMImplementation").mix( {
      *ドキュメントタイプを作るためのもの。DTDは<!DOCTYPE[ ]>で表現されうる。\r
      */\r
     /*DocumentType*/ createDocumentType : function(/*string*/ qualifiedName, publicId, systemId) {\r
-      var s = base("$document").up("$1");\r
+      var s = base("$document").up();\r
       s.name = "";\r
       s.entities = new NamedNodeMap();   //パラメタ実体を除く実体の集まり\r
       s.notations = new NamedNodeMap(); //DTDで示した記法の集まり\r
@@ -377,7 +383,7 @@ base("DOMImplementation").mix( {
      */\r
     /*Document*/ createDocument : function( /*string*/ ns, qname, /*DocumentType*/ doctype) {\r
       try {\r
-        var s = base("$document").up("$1");\r
+        var s = base("$document").up();\r
         this._doc_ && (s._document_ = this._doc_);          //_document_プロパティはcreateElementNSメソッドやradialGradient要素やNAIBU._setPaintなどで使う\r
         s.implementation = this;\r
         s.doctype = doctype || null;\r
@@ -621,7 +627,7 @@ base("$document").mix( {
  *テキストのノードを作る\r
  */\r
 /*Text*/               createTextNode : function( /*string*/ data) {\r
-  var s = this.$text.up("$1");\r
+  var s = this.$text.up();\r
   s.data =  s.nodeValue = data+"";\r
   s.length = data.length;\r
   s.ownerDocument = this;\r
@@ -631,7 +637,7 @@ base("$document").mix( {
  *コメントノードを作る\r
  */\r
 /*Comment*/            createComment : function( /*string*/ data) {\r
-  var s = this.$text.$comment.up("$1");\r
+  var s = this.$text.$comment.up();\r
   s.data = s.nodeValue = data;\r
   s.length = data.length;\r
   s.ownerDocument = this;\r
@@ -641,7 +647,7 @@ base("$document").mix( {
  *CDATA領域ノードを作る\r
  */\r
 /*CDATASection*/       createCDATASection : function( /*string*/ data) {\r
-  var s = this.$text.up("$1");\r
+  var s = this.$text.up();\r
   s.nodeType = /*Node.CDATA_SECTION_NODE*/ 4;\r
   s.nodeName = "#cdata-section";\r
   s.data = s.nodeValue = data;\r
@@ -653,7 +659,7 @@ base("$document").mix( {
  *処理命令ノードを作る\r
  */\r
 /*ProcessingInstruction*/ createProcessingInstruction : function( /*string*/ target, /*string*/ data) {\r
-  var s = this.up("$1");\r
+  var s = this.up();\r
   s.nodeType = /*Node.PROCESSING_INSTRUCTION_NODE*/ 7;\r
   s.target = s.nodeName = target;\r
   s.data = s.nodeValue = data;\r
@@ -670,7 +676,7 @@ base("$document").mix( {
  *実体参照ノードを作る\r
  */\r
 /*EntityReference*/    createEntityReference : function( /*string*/ name) {\r
-  return this.up("$1").mix({\r
+  return this.up().mix({\r
     nodeValue: null,\r
     nodeType: /*Node.ENTITY_REFERENCE_NODE*/ 5,\r
     nodeName: name,\r
@@ -745,14 +751,14 @@ base("$document").mix( {
       }\r
     }\r
   } else if (imn === /*Node.ENTITY_NODE*/ 6) {\r
-    s = this.$enetity.up("$1");\r
+    s = this.$enetity.up();\r
     s.publicId = importedNode.publicId;\r
     s.systemId = importedNode.systemId;\r
     s.notationName = importedNode.notationName;\r
   } else if (imn === /*Node.PROCESSING_INSTRUCTION_NODE*/ 7) {\r
     s = this.createProcessingInstruction(importedNode.nodeName, importedNode.nodeValue);\r
   } else if (imn === /*Node.NOTATION_NODE*/ 12) {\r
-    s = this.up("$notation").up("$1");\r
+    s = this.up("$notation").up();\r
     s.publicId = importedNode.publicId;\r
     s.systemId = importedNode.systemId;\r
   } else {\r
@@ -779,9 +785,9 @@ base("$document").mix( {
   } else {\r
     localName = qualifiedName;\r
   }\r
-  ele = this.$element.up("$1").mix({\r
+  ele = this.$element.up().mix({\r
         childNodes: [],\r
-        attributes: this.$element.attributes.up("$1"),   //属性を収納\r
+        attributes: this.$element.attributes.up(),   //属性を収納\r
         ownerDocument: this\r
   });\r
   ele.namespaceURI = namespaceURI;\r
@@ -795,7 +801,7 @@ base("$document").mix( {
  *属性ノードを作る。setAttributeNSで使うため、削除不可\r
  */\r
 /*Attr*/               createAttributeNS : function( /*string*/ namespaceURI, /*string*/ qualifiedName) {\r
-  var attr = this.$attr.up("$1"),\r
+  var attr = this.$attr.up(),\r
       p;\r
   attr.namespaceURI = namespaceURI;\r
   attr.nodeName = attr.name = qualifiedName;\r
@@ -1179,7 +1185,7 @@ EventException.prototype = Object._create(DOMException);
 base("$document").mix(function() {\r
 /*void*/  this.addEventListener = function( /*string*/ type, /*EventListener*/ listener, /*boolean*/ useCapture) {\r
   this.removeEventListener(type, listener, useCapture);  //いったん、(あれば)リスナーを離す。\r
-  var s = base("EventListener").up("$1").initialize(useCapture, type, listener), //リスナーを作成\r
+  var s = base("EventListener").up().initialize(useCapture, type, listener), //リスナーを作成\r
       t = type.charAt(0),\r
       that;\r
   this._capter.push(s);                 //このノードにリスナーを登録しておく\r
@@ -1353,14 +1359,17 @@ base("$event").mix( {
 /*Documentノードに直接結びつける\r
 function DocumentEvent() {\r
 }*/\r
-/*Event*/ base("$document").createEvent = function( /*string*/ eventType) {\r
-  var evt = ( base("$event")[eventType] ||  base("$event") ).up("$1");\r
-  evt.initialize && evt.initialize();\r
-  evt.type = eventType;\r
-  evt.timeStamp = +(new Date());\r
-  eventType = void 0;\r
-  return evt;\r
-};\r
+/*Event*/ base("$document").mix( {\r
+  /*__$eventプロパティはcreateEventを高速化するために、前もって設定しておいたもの*/\r
+  __$event: base("$event"),\r
+  createEvent: function( /*string*/ eventType) {\r
+         var evt = ( this.__$event[eventType] ||   this.__$event).up();\r
+         evt.type = eventType;\r
+         evt.timeStamp = +(new Date());\r
+         eventType = void 0;\r
+         return evt;\r
+  }\r
+} );\r
 \r
 /*UIEventオブジェクト\r
  * UIEventsとsがついているのは、createEventで識別するための名前であるため\r
@@ -1706,7 +1715,7 @@ base("$StyleSheet").mix( {
   title:  ""\r
 } )\r
  .on( "_create", function() {\r
-  /*MediaList*/ this.media = this.$MediaList.up("$1");\r
+  /*MediaList*/ this.media = this.$MediaList.up();\r
 } )\r
  .mix( function(_) {\r
 \r
@@ -1741,7 +1750,7 @@ _.up("$MediaList").mix( {
 } );\r
 \r
 _.LinkStyle = function() {\r
-  /*StyleSheet*/ this.sheet = _.up("$1");\r
+  /*StyleSheet*/ this.sheet = _.up();\r
 };\r
 \r
 _.DocumentStyle = function() {\r
@@ -1807,7 +1816,7 @@ base("$CSSStyleRule").mix( {
 } ).mix( function() {\r
        this.up("$CSSMediaRule").mix( {\r
          type: /*CSSRule.MEDIA_RULE*/ 4,\r
-         /*stylesheets::MediaList*/ media: (base("$StyleSheet").$MediaList.up("$1")),\r
+         /*stylesheets::MediaList*/ media: (base("$StyleSheet").$MediaList.up()),\r
          /*CSSRuleList*/ cssRules: [],\r
        \r
          /*long*/ insertRule: function( /*string*/ rule, /*long*/ index) {\r
@@ -1833,7 +1842,7 @@ base("$CSSStyleRule").mix( {
        this.up("$CSSImportRule").mix( {\r
          type: /*CSSRule.IMPORT_RULE*/ 3,\r
          href: "",\r
-       /*stylesheets::MediaList*/ media: base("$StyleSheet").$MediaList.up("$1"),\r
+       /*stylesheets::MediaList*/ media: base("$StyleSheet").$MediaList.up(),\r
        /*CSSStyleSheet*/ styleSheet: null\r
        } );\r
        \r
@@ -1850,7 +1859,7 @@ base("$CSSStyleRule").mix( {
  */\r
 base("$CSSStyleDeclaration").mix( {\r
   _new$: function() {\r
-       var s = this.up("$1");\r
+       var s = this.up();\r
     s._list = []; //内部のリスト\r
     s._list._fontSize = s._list._opacity = null;\r
     return s;\r
@@ -1974,7 +1983,7 @@ base("$CSSStyleDeclaration").mix( {
         ti.setRGBColor(value);\r
       }\r
     } else {\r
-      ti = tg ? tg : base("$CSSValue").$CSSPrimitiveValue.up("$1");\r
+      ti = tg ? tg : base("$CSSValue").$CSSPrimitiveValue.up();\r
     }\r
     ti._priority = priority;\r
     ti.cssText = cssText;\r
@@ -2194,19 +2203,19 @@ t.CSS_RGBCOLOR                   = 25;*/
 \r
 function RGBColor() {\r
   var cs = base("$CSSValue").$CSSPrimitiveValue;\r
-  this.red = cs.up("$1");\r
-  this.green = cs.up("$1");\r
-  this.blue = cs.up("$1");\r
+  this.red = cs.up();\r
+  this.green = cs.up();\r
+  this.blue = cs.up();\r
   cs = void 0;\r
   this.red.primitiveType = this.green.primitiveType = this.blue.primitiveType = /*CSSPrimitiveValue.CSS_NUMBER*/ 1;\r
 };\r
 \r
 function Rect() {\r
   var cs = base("$CSSValue").$CSSPrimitiveValue;\r
-  this.top = cs.up("$1");\r
-  this.right = cs.up("$1");\r
-  this.bottom = cs.up("$1");\r
-  this.left = cs.up("$1");\r
+  this.top = cs.up();\r
+  this.right = cs.up();\r
+  this.bottom = cs.up();\r
+  this.left = cs.up();\r
   cs = void 0;\r
 };\r
 \r
@@ -2475,7 +2484,7 @@ base("$document").mix( base("$StyleSheet").DocumentStyle);
 /*CSSStyleSheet*/ base("DOMImplementation").createCSSStyleSheet = function( /*string*/ title, /*string*/ media) {\r
   var s = base("$StyleSheet").up("$CSSStyleSheet")._create();\r
   s.title = title;\r
-  var nm = s.$MediaList.up("$1");\r
+  var nm = s.$MediaList.up();\r
   nm.mediaText = media;\r
   if (media && (media !== "")) {\r
     var mes = media.split(",");  //文字列をコンマで区切って配列に\r
@@ -2642,7 +2651,11 @@ NAIBU.eval = function(code) {
 /*$svgelement\r
  *すべてのSVG関連要素の雛形となるオブジェクト\r
  */\r
-base("$document").$element.up("$svgelement").mix( {\r
+base.$1 = base("$document").$element.up("$svgelement").mix( {\r
+  /*SVGの名前空間をつけて継承オブジェクトを作るため*/\r
+  upsvg: function(name) {\r
+    return this.up("http://www.w3.org/2000/svg" + name);\r
+  },\r
   initialize: function () {\r
     SVGStylable.call(this);             //ElementCSSInlineStyleのインタフェースを継承\r
     /*interface SVGTransformable : SVGLocatable\r
@@ -2869,7 +2882,7 @@ base("$document").$element.up("$svgelement").mix( {
 \r
   /*interface SVGLocatable*/\r
   /*SVGRect*/     getBBox: function(){\r
-    var s = base("$SVGRect").up("$1"),\r
+    var s = base("$SVGRect").up(),\r
         data = this._tar.path.value,\r
         vi = this.ownerDocument.documentElement.viewport,\r
         el = vi.width,\r
@@ -3017,28 +3030,26 @@ base("$SVGStringList").mix(Array.prototype)
    this.up("$SVGPathSegList");\r
  } );\r
 \r
-base("$SVGAnimatedEnumeration").mix( {\r
+(function() {\r
+var obj =  {\r
   /*unsigned short*/ baseVal: 0,\r
                          // raises DOMException on setting\r
   /*readonly unsigned short*/ animVal: 0\r
-} );\r
-base("$SVGAnimatedInteger").mix( {\r
-  /*long*/ baseVal: 0,\r
-                         // raises DOMException on setting\r
-  /*readonly long*/ animVal: 0\r
-} );\r
+};\r
+base("$SVGAnimatedEnumeration").mix(obj);\r
+base("$SVGAnimatedInteger").mix(obj);\r
+base("$SVGAnimatedNumber").mix(obj);\r
+obj = void 0;\r
+})();\r
+\r
 base("$SVGNumber") \r
   /*float*/ .value = 0;\r
                          // raises DOMException on setting\r
-base("$SVGAnimatedNumber").mix( {\r
-  /*float*/ baseVal: 0,\r
-  /*float*/ animVal: 0\r
-} );\r
 \r
 /*SVGUnmberListのメソッドはSVGStringListを参照*/\r
 \r
 function SVGAnimatedNumberList() {\r
-  /*readonly SVGNumberList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGNumberList.up("$1");\r
+  /*readonly SVGNumberList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGNumberList.up();\r
 };\r
 /*$SVGLengthオブジェクト\r
  *長さを設定する(単位pxに統一する方便として使う)\r
@@ -3140,14 +3151,14 @@ base("$SVGLength").mix( {
 } );\r
 function SVGAnimatedLength() {\r
   /*readonly SVGLength*/ this.animVal;\r
-  this.baseVal = base("$SVGLength").up("$1");\r
+  this.baseVal = base("$SVGLength").up();\r
   this.baseVal.unitType = 1;\r
 };\r
 \r
 /*SVGLengthListのメソッドはSVGStringListを参照*/\r
 \r
 function SVGAnimatedLengthList() {\r
-  /*readonly SVGLengthList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGLengthList.up("$1");;\r
+  /*readonly SVGLengthList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGLengthList.up();;\r
 };\r
 \r
 base("$SVGAngle").mix( {\r
@@ -3199,13 +3210,13 @@ base("$SVGAngle").mix( {
 /*const unsigned short SVGAngle.SVG_ANGLETYPE_RAD         = 3;\r
 /*const unsigned short SVGAngle.SVG_ANGLETYPE_GRAD        = 4;*/\r
 function SVGAnimatedAngle() {\r
-  /*readonly attribute SVGAngle*/ this.baseVal = base("$SVGAngle").up("$1");\r
-  /*readonly attribute SVGAngle*/ this.animVal = base("$SVGAngle").up("$1");\r
+  /*readonly attribute SVGAngle*/ this.baseVal = base("$SVGAngle").up();\r
+  /*readonly attribute SVGAngle*/ this.animVal = base("$SVGAngle").up();\r
 };\r
 \r
 base("$CSSValue").up("$SVGColor").mix( {\r
   _new$: function() {\r
-    /*readonly css::RGBColor*/  this.up("$1").rgbColor  = new RGBColor();\r
+    /*readonly css::RGBColor*/  this.up().rgbColor  = new RGBColor();\r
     return this.$1;\r
   },\r
   // Color Types\r
@@ -3440,8 +3451,8 @@ base("$SVGRect").mix( {
 } );\r
 \r
 function SVGAnimatedRect() {\r
-  /*readonly SVGRect*/ this.baseVal = base("$SVGRect").up("$1");\r
-/*readonly SVGRect*/ this.animVal  = base("$SVGRect").up("$1");\r
+  /*readonly SVGRect*/ this.baseVal = base("$SVGRect").up();\r
+/*readonly SVGRect*/ this.animVal  = base("$SVGRect").up();\r
 };\r
 \r
 /*SVGUnitTypes = {\r
@@ -3451,7 +3462,7 @@ function SVGAnimatedRect() {
   /*unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX : 2\r
 };*/\r
 function SVGStylable() {\r
-  /*readonly attribute SVGAnimatedString*/ this.className = base("$SVGAnimatedString").up("$1");\r
+  /*readonly attribute SVGAnimatedString*/ this.className = base("$SVGAnimatedString").up();\r
   ElementCSSInlineStyle.call(this);\r
 };\r
 /*getPresentationAttributeメソッド\r
@@ -3470,7 +3481,7 @@ function SVGStylable() {
  *SIEでは、もっぱらXLink言語の処理を行う\r
  */\r
 function SVGURIReference() {\r
-  /*readonly SVGAnimatedString*/ this.href = base("$SVGAnimatedString").up("$1");\r
+  /*readonly SVGAnimatedString*/ this.href = base("$SVGAnimatedString").up();\r
   this._instance = null; //埋め込みの場合に、読み込んだDOMツリーを結び付けておくプロパティ\r
   this._text = "";\r
   this.addEventListener("DOMAttrModified", function(evt){\r
@@ -3667,7 +3678,7 @@ _.createDocument = function() {
       evtt.initMutationEvent("DOMNodeInsertedIntoDocument", false, false, null, null, null, null, null);\r
       return evtt;\r
     };\r
-    this._document_ = document;\r
+    this._document_ = this._doc_ || document; //_doc_プロパティに関しては、GetSVGDocumentの_caメソッドを参照\r
     /*base.jsを使ったメソッドのオーバライドによって、SVG関連のオブジェクトを呼び出せるようにする*/\r
     this.createElementNS = function(ns, name) {\r
       var t$e = this.$element,\r
@@ -3696,7 +3707,7 @@ _.createDocument = function() {
 /*$svg\r
  *svg要素をあらわすオブジェクト\r
  */\r
-base("$document").$element.$svgelement.up("http://www.w3.org/2000/svgsvg").on("initialize",  function (_doc) {\r
+base("$document").$element.$svgelement.upsvg("svg").on("initialize",  function (_doc) {\r
   _doc && (this._tar = _doc.createElement("v:group"));\r
   _doc = void 0;\r
   /*_svgload_limitedはSVGLoadイベントを発火させる判定基準。\r
@@ -3901,27 +3912,27 @@ base("$document").$element.$svgelement.up("http://www.w3.org/2000/svgsvg").on("i
   this._currentTime = seconds;\r
 },\r
 /*SVGNumber*/     createSVGNumber: function(){\r
-  return base("$SVGNumber").up("$1");\r
+  return base("$SVGNumber").up();\r
 },\r
 /*SVGAngle*/     createSVGAngle: function(){\r
-  var s = base("$SVGAngle").up("$1");\r
+  var s = base("$SVGAngle").up();\r
   s.unitType = 1;\r
   return s;\r
 },\r
 /*SVGLength*/     createSVGLength: function(){\r
-  var s = base("$SVGLength").up("$1");\r
+  var s = base("$SVGLength").up();\r
   s.unitType = /*SVG_LENGTHTYPE_NUMBER*/ 1;\r
   return s;\r
 },\r
 /*SVGPoint*/      createSVGPoint: function(){\r
-  return base("$SVGPoint").up("$1");\r
+  return base("$SVGPoint").up();\r
 },\r
 /*SVGMatrix*/     createSVGMatrix: function(){\r
   //単位行列を作成\r
-  return base("$SVGMatrix").up("$1");\r
+  return base("$SVGMatrix").up();\r
 },\r
 /*SVGRect*/       createSVGRect: function(){\r
-  return base("$SVGRect").up("$1");\r
+  return base("$SVGRect").up();\r
 },\r
 /*SVGTransform*/  createSVGTransform: function(){\r
   var s = this.createSVGTransformFromMatrix(this.createSVGMatrix());\r
@@ -4034,12 +4045,13 @@ function SVGFitToViewBox() {
 };\r
 function SVGViewSpec(ele) {\r
   SVGFitToViewBox.call(this, ele);\r
-  /*readonly SVGTransformList*/ this.transform = base("$SVGStringList").$SVGTransformList.up("$1");\r
+  /*readonly SVGTransformList*/ this.transform = base("$SVGStringList").$SVGTransformList.up();\r
   /*readonly SVGElement*/       this.viewTarget = ele;\r
   /*readonly DOMString*/        this.viewBoxString = this.preserveAspectRatioString = this.transformString = this.viewTargetString = "";\r
 };\r
 \r
-function SVGGElement(_doc) {\r
+base.$1.upsvg("g")\r
+ .on("initialize",  function (_doc) {\r
   this._tar = _doc.createElement("v:group");\r
   _doc = void 0;\r
   /*以下の処理は、この子要素ノードがDOMツリーに追加されて初めて、\r
@@ -4072,34 +4084,32 @@ function SVGGElement(_doc) {
     }\r
     tnext = sar = spar = snext = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGDefsElement() {\r
+base.$1.upsvg("defs").on("initialize", function () {\r
   this.style.setProperty("display", "none");\r
-};\r
+} );\r
 \r
-function SVGDescElement() {\r
-}\r
+base.$1.upsvg("desc");\r
 \r
-function SVGTitleElement() {\r
+base.$1.upsvg("title").on("initialize", function () {\r
   this.addEventListener("DOMCharacterDataModified", function(evt){\r
     evt.target.ownerDocument.title = evt.target.firstChild.nodeValue;\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGSymbolElement(_doc) {\r
-};\r
+base.$1.upsvg("symbol");\r
 \r
-function SVGUseElement() {\r
-  SVGGElement.apply(this, arguments);\r
+base.$1.upsvg("use").initialize = function () {\r
+  this["http://www.w3.org/2000/svgg"].initialize.apply(this, arguments);\r
   var slen = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/   this.x = new slen();           //use要素のx属性に対応(以下、同様)\r
   /*readonly SVGAnimatedLength*/   this.y = new slen();\r
   /*readonly SVGAnimatedLength*/   this.width = new slen();\r
   /*readonly SVGAnimatedLength*/   this.height = new slen();\r
   slen = void 0;\r
-  /*readonly SVGElementInstance*/ this.instanceRoot = this.up("$1"); //参照先インスタンスのルート\r
-  /*readonly SVGElementInstance*/ this.animatedInstanceRoot = this.up("$1");//アニメの最中のインスタンス。静止中は通常\r
+  /*readonly SVGElementInstance*/ this.instanceRoot = this.up(); //参照先インスタンスのルート\r
+  /*readonly SVGElementInstance*/ this.animatedInstanceRoot = this.up();//アニメの最中のインスタンス。静止中は通常\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
     if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
       return; //強制終了させる\r
@@ -4154,7 +4164,8 @@ function SVGUseElement() {
   *Nodeオブジェクトを継承させる\r
   *SVGElementInstanceList*/\r
 \r
-function SVGImageElement(_doc) {\r
+base.$1.upsvg("image")\r
+ .on("initialize", function (_doc) {\r
   this._tar = _doc.createElement("v:image");\r
   //以下は、与えられた属性の値に対応する\r
   var slen = SVGAnimatedLength;\r
@@ -4181,9 +4192,9 @@ function SVGImageElement(_doc) {
     evt = tar = void 0;\r
   }, false);\r
   SVGURIReference.apply(this);\r
-};\r
+} )\r
 /*_imageo関数は、SVGForeignObjectElementで再利用するので、切り離しておく*/\r
-SVGImageElement.prototype._imageo = function(evt) {\r
+ ._imageo = function(evt) {\r
   var tar = evt.target,\r
       style = tar.ownerDocument.defaultView.getComputedStyle(tar, ""),\r
       fontSize = parseFloat(style.getPropertyValue("font-size")),\r
@@ -4214,7 +4225,8 @@ SVGImageElement.prototype._imageo = function(evt) {
   evt = tar = style = fontSize = ts = ctm = po = fillOpacity = void 0;\r
 };\r
 \r
-function SVGSwitchElement(_doc) {\r
+base.$1.upsvg("switch")\r
+ .on("initialize",  function (_doc) {\r
   this._tar = _doc.createElement("v:group");\r
   _doc = void 0;\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
@@ -4225,7 +4237,7 @@ function SVGSwitchElement(_doc) {
     tar._inserted__(tar);\r
     evt = tar = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
 //bookmarkletから呼び出されたらtrue\r
 var sieb_s;\r
@@ -4315,7 +4327,7 @@ function _ca_() {
         openPath: (this._baseURL.replace(/\?.+/, "")\r
                                 .replace(/\/[^\/]+$/, "/"))\r
     });\r
-    s._iframe = ifr;                     //_iframeプロパティはSVGAElementでリンク置換のときに扱う\r
+    s._iframe = ifr;                     //_iframeプロパティはa要素オブジェクトでリンク置換のときに扱う\r
     oba.setAttribute("id","_NAIBU_outline");\r
     _doc.body.appendChild(oba);\r
     sp.style.margin = "-1px,0px,0px,-1px";\r
@@ -4526,10 +4538,9 @@ function _ca_() {
 /*空関数(IEのメモリリーク対策)*/\r
 NAIBU.emptyFunction = function() {};\r
 \r
-/*SVGStyleElement\r
- *style要素をあらわすオブジェクト\r
- */\r
-function SVGStyleElement(_doc) {\r
+/*style要素をあらわすオブジェクト*/\r
+base.$1.upsvg("style")\r
+ .on("initialize",  function (_doc) {\r
   base("$StyleSheet").LinkStyle.apply(this);\r
   /*LinkStyleに関しては、以下の仕様を参照のこと。なお、これはSVG DOMでは継承されていないので要注意。\r
    *CSS2 1. Document Object Model Style Sheets\r
@@ -4617,7 +4628,7 @@ function SVGStyleElement(_doc) {
       tar = evt = void 0;\r
     }, false);\r
   }, false);\r
-};\r
+} );\r
 \r
 /*SVGPoint\r
  *2次元座標の点(x,y)を表すオブジェクト\r
@@ -4629,7 +4640,7 @@ base("$SVGPoint").mix( {
     if (!isFinite(matrix.a) || !isFinite(matrix.b) || !isFinite(matrix.c) || !isFinite(matrix.d) || !isFinite(matrix.e) || !isFinite(matrix.f)) {\r
       throw (new Error("Type Error: 引数の値がNumber型ではありません"));\r
     }\r
-    var s = base("$SVGPoint").up("$1");\r
+    var s = base("$SVGPoint").up();\r
     s.x = matrix.a * this.x + matrix.c * this.y + matrix.e;\r
     s.y = matrix.b * this.x + matrix.d * this.y + matrix.f;\r
     return s;\r
@@ -4656,7 +4667,7 @@ base("$SVGMatrix").mix( {
    *行列の積を求めて返す\r
    */\r
   /*SVGMatrix*/ multiply : function(/*SVGMatrix*/ secondMatrix ) {\r
-    var s = this.$SVGMatrix.up("$1"),\r
+    var s = this.$SVGMatrix.up(),\r
         m = secondMatrix,\r
         isf = isFinite,\r
         t = this;\r
@@ -4676,7 +4687,7 @@ base("$SVGMatrix").mix( {
    *逆行列を返す\r
    */\r
   /*SVGMatrix*/ inverse : function() {\r
-    var s = this.$SVGMatrix.up("$1"), \r
+    var s = this.$SVGMatrix.up(), \r
         n = this._determinant();\r
     if (n !== 0) {\r
       s.a = this.d / n;\r
@@ -4691,7 +4702,7 @@ base("$SVGMatrix").mix( {
     }\r
   },\r
   /*SVGMatrix*/ translate : function(/*float*/ x, /*float*/ y ) {\r
-    var m = this.$SVGMatrix.up("$1");\r
+    var m = this.$SVGMatrix.up();\r
     m.e = x;\r
     m.f = y;\r
     var s =  this.multiply(m);\r
@@ -4699,7 +4710,7 @@ base("$SVGMatrix").mix( {
     return s;\r
   },\r
   /*SVGMatrix*/ scale : function(/*float*/ scaleFactor ) {\r
-    var m = this.$SVGMatrix.up("$1");\r
+    var m = this.$SVGMatrix.up();\r
     m.a = scaleFactor;\r
     m.d = scaleFactor;\r
     var s =  this.multiply(m);\r
@@ -4707,7 +4718,7 @@ base("$SVGMatrix").mix( {
     return s;\r
   },\r
   /*SVGMatrix*/ scaleNonUniform : function(/*float*/ scaleFactorX, /*float*/ scaleFactorY ) {\r
-    var m = this.$SVGMatrix.up("$1");\r
+    var m = this.$SVGMatrix.up();\r
     m.a = scaleFactorX;\r
     m.d = scaleFactorY;\r
     var s =  this.multiply(m);\r
@@ -4715,7 +4726,7 @@ base("$SVGMatrix").mix( {
     return s;\r
   },\r
   /*SVGMatrix*/ rotate : function(/*float*/ angle ) {\r
-    var m = this.$SVGMatrix.up("$1"), rad = angle / 180 * Math.PI; //ラジアン変換\r
+    var m = this.$SVGMatrix.up(), rad = angle / 180 * Math.PI; //ラジアン変換\r
     m.a = Math.cos(rad);\r
     m.b = Math.sin(rad);\r
     m.c = -m.b;\r
@@ -4729,7 +4740,7 @@ base("$SVGMatrix").mix( {
     if ((x === 0) || (y === 0) || !isFinite(x) || !isFinite(y)) {\r
       throw (new SVGException(/*SVGException.SVG_INVALID_VALUE_ERR*/ 1));\r
     }\r
-    var m = this.$SVGMatrix.up("$1"), rad = Math.atan2(y, x);\r
+    var m = this.$SVGMatrix.up(), rad = Math.atan2(y, x);\r
     m.a = Math.cos(rad);\r
     m.b = Math.sin(rad);\r
     m.c = -m.b;\r
@@ -4739,28 +4750,28 @@ base("$SVGMatrix").mix( {
     return s;\r
   },\r
   /*SVGMatrix*/ flipX : function() {\r
-    var m = this.$SVGMatrix.up("$1");\r
+    var m = this.$SVGMatrix.up();\r
     m.a = -m.a;\r
     var s =  this.multiply(m);\r
     m = void 0;\r
     return s;\r
   },\r
   /*SVGMatrix*/ flipY : function() {\r
-    var m = this.$SVGMatrix.up("$1");\r
+    var m = this.$SVGMatrix.up();\r
     m.d = -m.d;\r
     var s =  this.multiply(m);\r
     m = void 0;\r
     return s;\r
   },\r
   /*SVGMatrix*/ skewX : function(/*float*/ angle ){\r
-    var m = this.$SVGMatrix.up("$1"), rad = angle / 180 * Math.PI; //ラジアン変換\r
+    var m = this.$SVGMatrix.up(), rad = angle / 180 * Math.PI; //ラジアン変換\r
     m.c = Math.tan(rad);\r
     var s =  this.multiply(m);\r
     m = void 0;\r
     return s;\r
   },\r
   /*SVGMatrix*/ skewY : function(/*float*/ angle ){\r
-    var m = this.$SVGMatrix.up("$1"), rad = angle / 180 * Math.PI;\r
+    var m = this.$SVGMatrix.up(), rad = angle / 180 * Math.PI;\r
     m.b = Math.tan(rad);\r
     var s =  this.multiply(m);\r
     m = void 0;\r
@@ -4773,7 +4784,7 @@ base("$SVGMatrix").mix( {
 } );\r
 \r
 function SVGTransform() {\r
-  /*readonly SVGMatrix*/ this.matrix = base("$SVGMatrix").up("$1");\r
+  /*readonly SVGMatrix*/ this.matrix = base("$SVGMatrix").up();\r
 };\r
     // Transform Types\r
   /*unsigned short*/ SVGTransform.SVG_TRANSFORM_UNKNOWN   = 0;\r
@@ -4790,7 +4801,7 @@ SVGTransform.prototype = {
   /*readonly float*/ angle : 0,\r
   /*void*/ setMatrix : function(/*SVGMatrix*/ matrix ) {\r
     this.type = /*SVGTransform.SVG_TRANSFORM_MATRIX*/ 1;\r
-    var mat = this._matrix.up("$1");\r
+    var mat = this._matrix.up();\r
     mat.a = matrix.a;\r
     mat.b = matrix.b;\r
     mat.c = matrix.c;\r
@@ -4865,7 +4876,7 @@ base("$SVGStringList").$SVGTransformList.mix( {
 } );\r
 \r
 function SVGAnimatedTransformList() {\r
-  /*readonly SVGTransformList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGTransformList.up("$1");\r
+  /*readonly SVGTransformList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGTransformList.up();\r
 };\r
 \r
 base("SVGPreserveAspectRatio").mix( {\r
@@ -4892,7 +4903,7 @@ base("SVGPreserveAspectRatio").mix( {
 })(base("SVGPreserveAspectRatio"));*/\r
 \r
 function SVGAnimatedPreserveAspectRatio() {\r
-  /*readonly SVGPreserveAspectRatio*/ this.animVal = this.baseVal = base("SVGPreserveAspectRatio").up("$1");\r
+  /*readonly SVGPreserveAspectRatio*/ this.animVal = this.baseVal = base("SVGPreserveAspectRatio").up();\r
 };\r
 \r
 function SVGPathSeg() {\r
@@ -4924,167 +4935,14 @@ function SVGPathSeg() {
   /*unsigned short t.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\r
 })(SVGPathSeg);*/\r
 /*SVGPathSegxx\r
- *軽量化のために、SVGPathSegの継承をしない。また、{}オブジェクトで代用する予定\r
- */\r
-function SVGPathSegClosePath() {\r
-};\r
-SVGPathSegClosePath.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_CLOSEPATH*/ 1,\r
-  pathSegTypeAsLetter : "z"\r
-};\r
-function SVGPathSegMovetoAbs() {\r
-  /*float* this.x;\r
-  /*float* this.y;*/\r
-};\r
-SVGPathSegMovetoAbs.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_MOVETO_ABS*/ 2,\r
-  pathSegTypeAsLetter : "M"\r
-};\r
-function SVGPathSegMovetoRel() {\r
-  /*float this.x;\r
-  /*float this.y;*/\r
-};\r
-SVGPathSegMovetoRel.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_MOVETO_REL*/ 3,\r
-  pathSegTypeAsLetter : "m"\r
-};\r
-function SVGPathSegLinetoAbs() {\r
-  /*float* this.x;\r
-  /*float* this.y;*/\r
-};\r
-SVGPathSegLinetoAbs.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_LINETO_ABS*/ 4,\r
-  pathSegTypeAsLetter : "L"\r
-};\r
-function SVGPathSegLinetoRel() {\r
-  /*float this.x;\r
-  /*float this.y;*/\r
-};\r
-SVGPathSegLinetoRel.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_LINETO_REL*/ 5,\r
-  pathSegTypeAsLetter : "l"\r
-};\r
-function SVGPathSegCurvetoCubicAbs() {\r
-  /*float* this.x;\r
-  /*float* this.y;\r
-  /*float* this.x1;\r
-  /*float* this.y1;\r
-  /*float* this.x2;\r
-  /*float* this.y2;*/\r
-};\r
-SVGPathSegCurvetoCubicAbs.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS*/ 6,\r
-  pathSegTypeAsLetter : "C"\r
-};\r
-function SVGPathSegCurvetoCubicRel() {\r
-  /*float* this.x;\r
-  /*float* this.y;\r
-  /*float* this.x1;\r
-  /*float* this.y1;\r
-  /*float* this.x2;\r
-  /*float* this.y2;*/\r
-};\r
-SVGPathSegCurvetoCubicRel.prototype = {\r
-  pathSegType : /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL*/ 7,\r
-  pathSegTypeAsLetter : "c"\r
-};\r
-function SVGPathSegCurvetoQuadraticAbs() {\r
-  /*float this.x;\r
-  /*float this.y;\r
-  /*float this.x1;\r
-  /*float this.y1;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS*/ 8;\r
-  this.pathSegTypeAsLetter = "Q";\r
-};\r
-function SVGPathSegCurvetoQuadraticRel() {\r
-  /*float this.x;\r
-  /*float this.y;\r
-  /*float this.x1;\r
-  /*float this.y1;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL*/ 9;\r
-  this.pathSegTypeAsLetter = "q";\r
-};\r
-\r
-function SVGPathSegArcAbs() {\r
-  /*float this.x;\r
-  /*float this.y;\r
-  /*float this.r1;\r
-  /*float this.r2;\r
-  /*float this.angle;*/\r
-};\r
-SVGPathSegArcAbs.prototype = {\r
-  /*boolean*/ largeArcFlag : true,\r
-  /*boolean*/ sweepFlag : true,\r
-  pathSegType : /*SVGPathSeg.PATHSEG_ARC_ABS*/ 10,\r
-  pathSegTypeAsLetter : "A"\r
-};\r
-function SVGPathSegArcRel() {\r
-  /*float this.x;\r
-  /*float this.y;\r
-  /*float this.r1;\r
-  /*float this.r2;\r
-  /*float this.angle;*/\r
-};\r
-SVGPathSegArcRel.prototype = {\r
-  /*boolean*/ largeArcFlag : true,\r
-  /*boolean*/ sweepFlag : true,\r
-  pathSegType : /*SVGPathSeg.PATHSEG_ARC_REL*/ 11,\r
-  pathSegTypeAsLetter : "a"\r
-};\r
-function SVGPathSegLinetoHorizontalAbs() {\r
-  /*float this.x;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS*/ 12;\r
-  this.pathSegTypeAsLetter = "H";\r
-};\r
-function SVGPathSegLinetoHorizontalRel() {\r
-  /*float this.x;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL*/ 13;\r
-  this.pathSegTypeAsLetter = "h";\r
-};\r
-function SVGPathSegLinetoVerticalAbs() {\r
-  /*float this.y;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS*/ 14;\r
-  this.pathSegTypeAsLetter = "V";\r
-};\r
-function SVGPathSegLinetoVerticalRel() {\r
-  /*float this.y;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL*/ 15;\r
-  this.pathSegTypeAsLetter = "v";\r
-};\r
-function SVGPathSegCurvetoCubicSmoothAbs() {\r
-  /*float this.x;\r
-  /*float this.y;\r
-  /*float this.x2;\r
-  /*float this.y2;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS*/ 16;\r
-  this.pathSegTypeAsLetter = "S";\r
-};\r
-function SVGPathSegCurvetoCubicSmoothRel() {\r
-  /*float this.x;\r
-  /*float this.y;\r
-  /*float this.x2;\r
-  /*float this.y2;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL*/ 17;\r
-  this.pathSegTypeAsLetter = "s";\r
-};\r
-function SVGPathSegCurvetoQuadraticSmoothAbs() {\r
-  /*float this.x;\r
-  /*float this.y;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS*/ 18;\r
-  this.pathSegTypeAsLetter = "T";\r
-};\r
-function SVGPathSegCurvetoQuadraticSmoothRel() {\r
-  /*float this.x;\r
-  /*float this.y;*/\r
-  this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL*/ 19;\r
-  this.pathSegTypeAsLetter = "t";\r
-};\r
+ *軽量化のために、SVGPathSegの実装をしない。\r
+ $SVGPathElementのファクトリーメソッドで実装*/\r
 \r
 /*documentは引数の変数として登録しておく*/\r
 (function(_doc, _math) {\r
 //freeArg関数はunloadで使う解放処理\r
 NAIBU.freeArg = function() {\r
-  SVGPathElement = _doc = _math = void 0;\r
+  _doc = _math = void 0;\r
 };\r
 //仮のfill属性とstroke属性の処理\r
 NAIBU._setPaint = function(tar, matrix) {\r
@@ -5216,25 +5074,26 @@ NAIBU._setPaint = function(tar, matrix) {
   tod = _doc = el = fill = stroke = sp = fp = style = cursor = tar = matrix = vis = disp = num = void 0;\r
 };\r
 \r
-function SVGPathElement(_doc) {\r
-  this._tar = _doc.createElement("v:shape");\r
-  //interface SVGAnimatedPathData\r
-  var sp = base("$SVGStringList").$SVGPathSegList;\r
-  /*readonly SVGPathSegList*/ this.pathSegList = sp.up("$1");\r
-  this.animatedPathSegList = this.pathSegList;\r
-  /*readonly SVGPathSegList*/ this.normalizedPathSegList = sp.up("$1");\r
-  sp = _doc = void 0;\r
-  this.animatedNormalizedPathSegList = this.normalizedPathSegList;\r
-  /*readonly SVGAnimatedNumber*/ this.pathLength = base("$SVGAnimatedNumber").up("$1");\r
-  //以下は、d属性に変更があった場合の処理\r
-  this.addEventListener("DOMAttrModified", this._attrModi, false);\r
-  /*以下の処理は、このpath要素ノードがDOMツリーに追加されて初めて、\r
-   *描画が開始されることを示す。つまり、appendChildで挿入されない限り、描画をしない。\r
-   */\r
-  this.addEventListener("DOMNodeInserted", this._nodeInsert, false);\r
-};\r
-(function(_sproto) {\r
-_sproto._attrModi = function(evt){\r
+base.$1.upsvg("path")\r
+  .on("initialize", function (_doc) {\r
+    this._tar = _doc.createElement("v:shape");\r
+    //interface SVGAnimatedPathData\r
+    var sp = base("$SVGStringList").$SVGPathSegList;\r
+    /*readonly SVGPathSegList*/ this.pathSegList = sp.up();\r
+    this.animatedPathSegList = this.pathSegList;\r
+    /*readonly SVGPathSegList*/ this.normalizedPathSegList = sp.up();\r
+    sp = _doc = void 0;\r
+    this.animatedNormalizedPathSegList = this.normalizedPathSegList;\r
+    /*readonly SVGAnimatedNumber*/ this.pathLength = base("$SVGAnimatedNumber").up();\r
+    //以下は、d属性に変更があった場合の処理\r
+    this.addEventListener("DOMAttrModified", this._attrModi, false);\r
+    /*以下の処理は、このpath要素ノードがDOMツリーに追加されて初めて、\r
+     *描画が開始されることを示す。つまり、appendChildで挿入されない限り、描画をしない。\r
+     */\r
+    this.addEventListener("DOMNodeInserted", this._nodeInsert, false);\r
+  } )\r
+  .mix( {\r
+_attrModi: function(evt){\r
   var tar = evt.target;\r
   if (evt.attrName === "d" && evt.newValue !== ""){\r
     /* d属性の値が空の場合は、描画を行わないようにする\r
@@ -5564,8 +5423,8 @@ _sproto._attrModi = function(evt){
     }\r
   }\r
   evt = tar = taco = cx = cy = xn = yn = startx = starty = tnl = tlist = ti = dii = ts = isZ = isM = isL = isC = s = tcc = tcll = void 0;\r
-};\r
-_sproto._nodeInsert = function(evt){\r
+},\r
+_nodeInsert: function(evt){\r
   var tar = evt.target;\r
   if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
     return; //強制終了させる\r
@@ -5593,8 +5452,8 @@ _sproto._nodeInsert = function(evt){
   tnext = sar = spar = snext = void 0;\r
   tar.addEventListener("DOMNodeInsertedIntoDocument", tar._nodeInsertInto, false);\r
   evt = tar = void 0;\r
-};\r
-_sproto._nodeInsertInto = function(evt){\r
+},\r
+_nodeInsertInto: function(evt){\r
   /*以下の処理は、normalizedpathSegListとCTMに基づいて、\r
    *SVGのd属性をVMLに変換していく処理である。\r
    */\r
@@ -5641,8 +5500,8 @@ _sproto._nodeInsertInto = function(evt){
   tt.coordsize = vi.width.baseVal.value + " " + vi.height.baseVal.value;\r
   NAIBU._setPaint(tar, matrix);\r
   tar._cacheMatrix = evt = tar = dat = t = tx = ty = matrix = tlist = x = y = mr = ma = mb = mc = md = me = mf = vi = isZ = isC = i = tli = tps = ti = cname = tt = void 0;\r
-};\r
-_sproto._com = {\r
+},\r
+_com: {\r
   _nameCom : {\r
     C : "c",\r
     L : "l",\r
@@ -5667,8 +5526,8 @@ _sproto._com = {
   isRd : /([zZ])/g,\r
   isRe : /,/,\r
   isSp : /\S+/g\r
-};\r
-  /*float*/         _sproto.getTotalLength = function() {\r
+},\r
+  /*float*/         getTotalLength: function() {\r
     var s = 0,\r
         nl = this.normalizedPathSegList;\r
     for (var i=1,nln=nl.numberOfItems,ms=null;i<nln;++i) {\r
@@ -5685,8 +5544,8 @@ _sproto._com = {
     }\r
     this.pathLength.baseVal = s;\r
     return s;\r
-  };\r
-  /*SVGPoint*/      _sproto.getPointAtLength = function(/*float*/ distance ) {\r
+  },\r
+  /*SVGPoint*/      getPointAtLength: function(/*float*/ distance ) {\r
     var segn = this.getPathSegAtLength(distance),\r
         x = 0,\r
         y = 0,\r
@@ -5733,8 +5592,8 @@ _sproto._com = {
       s.y = ms.y + t * (seg.y-ms.y);\r
     }\r
     return s;\r
-  };\r
-  /*unsigned long*/ _sproto.getPathSegAtLength = function(/*float*/ distance ) {\r
+  },\r
+  /*unsigned long*/ getPathSegAtLength: function(/*float*/ distance ) {\r
     var nl = this.normalizedPathSegList; //仕様ではpathSegList\r
     for (var i=0,nln=nl.numberOfItems,ms=null;i<nln;++i) {\r
       var seg = nl.getItem(i);\r
@@ -5758,150 +5617,188 @@ _sproto._com = {
      *なお、これはSVG1.1の仕様の想定外のこと\r
      */\r
     return (nl.numberOfItems - 1);\r
-  };\r
-  /*SVGPathSegClosePath*/    _sproto.createSVGPathSegClosePath = function() {\r
-    var _SVGPathSegClosePath = SVGPathSegClosePath;\r
-    return (new _SVGPathSegClosePath());\r
-  };\r
-  /*SVGPathSegMovetoAbs*/    _sproto.createSVGPathSegMovetoAbs = function(/*float*/ x, /*float*/ y ) {\r
-    var _SVGPathSegMovetoAbs = SVGPathSegMovetoAbs, s = new _SVGPathSegMovetoAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegMovetoRel*/    _sproto.createSVGPathSegMovetoRel = function(/*float*/ x, /*float*/ y ) {\r
-    var s = new SVGPathSegMovetoRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegLinetoAbs*/    _sproto.createSVGPathSegLinetoAbs = function(/*float*/ x, /*float*/ y ) {\r
-    var s = new SVGPathSegLinetoAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegLinetoRel*/    _sproto.createSVGPathSegLinetoRel = function(/*float*/ x, /*float*/ y ) {\r
-    var s = new SVGPathSegLinetoRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoCubicAbs*/    _sproto.createSVGPathSegCurvetoCubicAbs = function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1, /*float*/ x2, /*float*/ y2 ) {\r
-    var _SVGPathSegCurvetoCubicAbs = SVGPathSegCurvetoCubicAbs, s = new _SVGPathSegCurvetoCubicAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.x1 = x1;\r
-    s.y1 = y1;\r
-    s.x2 = x2;\r
-    s.y2 = y2;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoCubicRel*/    _sproto.createSVGPathSegCurvetoCubicRel = function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1, /*float*/ x2, /*float*/ y2 ) {\r
-    var s = new SVGPathSegCurvetoCubicRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.x1 = x1;\r
-    s.y1 = y1;\r
-    s.x2 = x2;\r
-    s.y2 = y2;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoQuadraticAbs*/    _sproto.createSVGPathSegCurvetoQuadraticAbs = function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1 ) {\r
-    var s = new SVGPathSegCurvetoQuadraticAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.x1 = x1;\r
-    s.y1 = y1;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoQuadraticRel*/    _sproto.createSVGPathSegCurvetoQuadraticRel = function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1 ) {\r
-    var s = new SVGPathSegCurvetoQuadraticRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.x1 = x1;\r
-    s.y1 = y1;\r
-    return s;\r
-  };\r
-  /*SVGPathSegArcAbs*/    _sproto.createSVGPathSegArcAbs = function(/*float*/ x, /*float*/ y, /*float*/ r1, /*float*/ r2, /*float*/ angle, /*boolean*/ largeArcFlag, /*boolean*/ sweepFlag ) {\r
-    var s = new SVGPathSegArcAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.r1 = r1;\r
-    s.r2 = r2;\r
-    s.angle = angle;\r
-    s.largeArcFlag = largeArcFlag;\r
-    s.sweepFlag = sweepFlag;\r
-    return s;\r
-  };\r
-  /*SVGPathSegArcRel*/    _sproto.createSVGPathSegArcRel = function(/*float*/ x, /*float*/ y, /*float*/ r1, /*float*/ r2, /*float*/ angle, /*boolean*/ largeArcFlag, /*boolean*/ sweepFlag ) {\r
-    var s = new SVGPathSegArcRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.r1 = r1;\r
-    s.r2 = r2;\r
-    s.angle = angle;\r
-    s.largeArcFlag = largeArcFlag;\r
-    s.sweepFlag = sweepFlag;\r
-    return s;\r
-  };\r
-  /*SVGPathSegLinetoHorizontalAbs*/    _sproto.createSVGPathSegLinetoHorizontalAbs = function(/*float*/ x ) {\r
-    var s = new SVGPathSegLinetoHorizontalAbs();\r
-    s.x = x;\r
-    s.y = 0; //DOMでは指定されていないが、変換処理が楽なので用いる\r
-    return s;\r
-  };\r
-  /*SVGPathSegLinetoHorizontalRel*/    _sproto.createSVGPathSegLinetoHorizontalRel = function(/*float*/ x ) {\r
-    var s = new SVGPathSegLinetoHorizontalRel();\r
-    s.x = x;\r
-    s.y = 0;\r
-    return s;\r
-  };\r
-  /*SVGPathSegLinetoVerticalAbs*/    _sproto.createSVGPathSegLinetoVerticalAbs = function(/*float*/ y ) {\r
-    var s = new SVGPathSegLinetoVerticalAbs();\r
-    s.x = 0;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegLinetoVerticalRel*/    _sproto.createSVGPathSegLinetoVerticalRel = function(/*float*/ y ) {\r
-    var s = new SVGPathSegLinetoVerticalRel();\r
-    s.x = 0;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoCubicSmoothAbs*/    _sproto.createSVGPathSegCurvetoCubicSmoothAbs = function(/*float*/ x, /*float*/ y, /*float*/ x2, /*float*/ y2 ) {\r
-    var s = new SVGPathSegCurvetoCubicSmoothAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.x2 = x2;\r
-    s.y2 = y2;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoCubicSmoothRel*/    _sproto.createSVGPathSegCurvetoCubicSmoothRel = function(/*float*/ x, /*float*/ y, /*float*/ x2, /*float*/ y2 ) {\r
-    var s = new SVGPathSegCurvetoCubicSmoothRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    s.x2 = x2;\r
-    s.y2 = y2;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoQuadraticSmoothAbs*/    _sproto.createSVGPathSegCurvetoQuadraticSmoothAbs = function(/*float*/ x, /*float*/ y ) {\r
-    var s = new SVGPathSegCurvetoQuadraticSmoothAbs();\r
-    s.x = x;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-  /*SVGPathSegCurvetoQuadraticSmoothRel*/    _sproto.createSVGPathSegCurvetoQuadraticSmoothRel = function(/*float*/ x, /*float*/ y ) {\r
-    var s = new SVGPathSegCurvetoQuadraticSmoothRel();\r
-    s.x = x;\r
-    s.y = y;\r
-    return s;\r
-  };\r
-})(SVGPathElement.prototype);\r
-  NAIBU.SVGPathElement = SVGPathElement; //IE8では、SVGPathElementはローカル変数\r
+  },\r
+  /*SVGPathSegClosePath*/    createSVGPathSegClosePath: function() {\r
+    return {\r
+      pathSegType : /*SVGPathSeg.PATHSEG_CLOSEPATH*/ 1,\r
+      pathSegTypeAsLetter : "z"\r
+    };\r
+  },\r
+  /*SVGPathSegMovetoAbs*/    createSVGPathSegMovetoAbs: function(/*float*/ x, /*float*/ y ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_MOVETO_ABS*/ 2,\r
+      pathSegTypeAsLetter : "M"\r
+    };\r
+  },\r
+  /*SVGPathSegMovetoRel*/    createSVGPathSegMovetoRel: function(/*float*/ x, /*float*/ y ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_MOVETO_REL*/ 3,\r
+      pathSegTypeAsLetter : "m"\r
+    };\r
+  },\r
+  /*SVGPathSegLinetoAbs*/    createSVGPathSegLinetoAbs: function(/*float*/ x, /*float*/ y ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_LINETO_ABS*/ 4,\r
+      pathSegTypeAsLetter : "L"\r
+    };\r
+  },\r
+  /*SVGPathSegLinetoRel*/    createSVGPathSegLinetoRel: function(/*float*/ x, /*float*/ y ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_LINETO_REL*/ 5,\r
+      pathSegTypeAsLetter : "l"\r
+      };\r
+  },\r
+  /*SVGPathSegCurvetoCubicAbs*/    createSVGPathSegCurvetoCubicAbs: function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1, /*float*/ x2, /*float*/ y2 ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      x1: x1,\r
+      y1: y1,\r
+      x2: x2,\r
+      y2: y2,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS*/ 6,\r
+      pathSegTypeAsLetter : "C"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoCubicRel*/    createSVGPathSegCurvetoCubicRel: function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1, /*float*/ x2, /*float*/ y2 ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      x1: x1,\r
+      y1: y1,\r
+      x2: x2,\r
+      y2: y2,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL*/ 7,\r
+      pathSegTypeAsLetter : "c"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoQuadraticAbs*/    createSVGPathSegCurvetoQuadraticAbs: function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1 ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      x1: x1,\r
+      y1: y1,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS*/ 8,\r
+      pathSegTypeAsLetter: "Q"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoQuadraticRel*/    createSVGPathSegCurvetoQuadraticRel: function(/*float*/ x, /*float*/ y, /*float*/ x1, /*float*/ y1 ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      x1: x1,\r
+      y1: y1,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL*/ 9,\r
+      pathSegTypeAsLetter: "q"\r
+    };\r
+  },\r
+  /*SVGPathSegArcAbs*/    createSVGPathSegArcAbs: function(/*float*/ x, /*float*/ y, /*float*/ r1, /*float*/ r2, /*float*/ angle, /*boolean*/ largeArcFlag, /*boolean*/ sweepFlag ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      r1: r1,\r
+      r2: r2,\r
+      angle: angle,\r
+      largeArcFlag: largeArcFlag,\r
+      sweepFlag: sweepFlag,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_ARC_ABS*/ 10,\r
+      pathSegTypeAsLetter : "A"\r
+    };\r
+  },\r
+  /*SVGPathSegArcRel*/    createSVGPathSegArcRel: function(/*float*/ x, /*float*/ y, /*float*/ r1, /*float*/ r2, /*float*/ angle, /*boolean*/ largeArcFlag, /*boolean*/ sweepFlag ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      r1: r1,\r
+      r2: r2,\r
+      angle: angle,\r
+      largeArcFlag: largeArcFlag,\r
+      sweepFlag: sweepFlag,\r
+      pathSegType : /*SVGPathSeg.PATHSEG_ARC_REL*/ 11,\r
+      pathSegTypeAsLetter : "a"\r
+    };\r
+  },\r
+  /*SVGPathSegLinetoHorizontalAbs*/    createSVGPathSegLinetoHorizontalAbs: function(/*float*/ x ) {\r
+    return {\r
+      x: x,\r
+      y: 0, //DOMでは指定されていないが、変換処理が楽なので用いる\r
+      pathSegType: /*SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS*/ 12,\r
+      pathSegTypeAsLetter: "H"\r
+    };\r
+  },\r
+  /*SVGPathSegLinetoHorizontalRel*/    createSVGPathSegLinetoHorizontalRel: function(/*float*/ x ) {\r
+    return {\r
+      x: x,\r
+      y: 0,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL*/ 13,\r
+      pathSegTypeAsLetter: "h"\r
+    };\r
+  },\r
+  /*SVGPathSegLinetoVerticalAbs*/    createSVGPathSegLinetoVerticalAbs: function(/*float*/ y ) {\r
+    return {\r
+      x: 0,\r
+      y: y,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS*/ 14,\r
+      pathSegTypeAsLetter: "V"\r
+    };\r
+  },\r
+  /*SVGPathSegLinetoVerticalRel*/    createSVGPathSegLinetoVerticalRel: function(/*float*/ y ) {\r
+    return {\r
+      x: 0,\r
+      y: y,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL*/ 15,\r
+      pathSegTypeAsLetter: "v"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoCubicSmoothAbs*/    createSVGPathSegCurvetoCubicSmoothAbs: function(/*float*/ x, /*float*/ y, /*float*/ x2, /*float*/ y2 ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      x2: x2,\r
+      y2: y2,\r
+      pathSegType:/*SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS*/ 16,\r
+      pathSegTypeAsLetter: "S"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoCubicSmoothRel*/    createSVGPathSegCurvetoCubicSmoothRel: function(/*float*/ x, /*float*/ y, /*float*/ x2, /*float*/ y2 ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      x2: x2,\r
+      y2: y2,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL*/ 17,\r
+      pathSegTypeAsLetter: "s"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoQuadraticSmoothAbs*/    createSVGPathSegCurvetoQuadraticSmoothAbs: function(/*float*/ x, /*float*/ y ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS*/ 18,\r
+      pathSegTypeAsLetter: "T"\r
+    };\r
+  },\r
+  /*SVGPathSegCurvetoQuadraticSmoothRel*/    createSVGPathSegCurvetoQuadraticSmoothRel: function(/*float*/ x, /*float*/ y ) {\r
+    return {\r
+      x: x,\r
+      y: y,\r
+      pathSegType: /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL*/ 19,\r
+      pathSegTypeAsLetter: "t"\r
+    };\r
+  }\r
+} );\r
 })(document, Math);\r
 \r
-function SVGRectElement(_doc) {\r
+base.$1.upsvg("rect")\r
+ .on("initialize",  function (_doc) {\r
   this._tar = _doc.createElement("v:shape");\r
   var slen = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.x = new slen();\r
@@ -6013,9 +5910,10 @@ function SVGRectElement(_doc) {
     }, false);\r
     evt = tar = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGCircleElement(_doc) {\r
+base.$1.upsvg("circle")\r
+ .on("initialize",  function (_doc) {\r
   this._tar = _doc.createElement("v:shape");\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.cx = new sl();\r
@@ -6097,9 +5995,10 @@ function SVGCircleElement(_doc) {
     }, false);\r
     evt = tar = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGEllipseElement(_doc) {\r
+base.$1.upsvg("ellipse")\r
+ .on("initialize",  function (_doc) {\r
   this._tar = _doc.createElement("v:shape");\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.cx = new sl();\r
@@ -6184,9 +6083,10 @@ function SVGEllipseElement(_doc) {
     }, false);\r
     evt = tar = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGLineElement(_doc) {\r
+base.$1.upsvg("line")\r
+ .on("initialize", function (_doc) {\r
   this._tar = _doc.createElement("v:shape");\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.x1 = new sl();\r
@@ -6254,17 +6154,17 @@ function SVGLineElement(_doc) {
     }, false);\r
     evt = tar = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
-/*_GenericSVGPolyElementã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹\r
- *ã\80\80ã\81\93ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹はpolygonとpolyline要素共通のインターフェースとして使用。\r
+/*_GenericSVGPolyElementã\83¡ã\82½ã\83\83ã\83\89\r
+ *ã\80\80ã\81\93ã\81®ã\83¡ã\82½ã\83\83ã\83\89はpolygonとpolyline要素共通のインターフェースとして使用。\r
  * ファイルサイズを軽量にすることができる\r
  */\r
-NAIBU._GenericSVGPolyElement = function (_doc, xclose) {\r
+base.$1._GenericSVGPolyElement = function (_doc, xclose) {\r
   this._tar = _doc.createElement("v:shape");\r
   _doc = void 0;\r
   //interface SVGAnimatedPoints\r
-  /*readonly SVGPointList*/   this.animatedPoints = this.points = base("$SVGStringList").$SVGPointList.up("$1");;\r
+  /*readonly SVGPointList*/   this.animatedPoints = this.points = base("$SVGStringList").$SVGPointList.up();;\r
   this.addEventListener("DOMAttrModified", function(evt){\r
     var tar = evt.target;\r
     if (evt.attrName === "points") {\r
@@ -6320,19 +6220,22 @@ NAIBU._GenericSVGPolyElement = function (_doc, xclose) {
     evt = tar = void 0;\r
   }, false);\r
 };\r
-function SVGPolylineElement(_doc) {\r
-  NAIBU._GenericSVGPolyElement.call(this, _doc, "e");\r
+base.$1.upsvg("polyline")\r
+ .on("initialize",  function (_doc) {\r
+  this._GenericSVGPolyElement( _doc, "e");\r
   _doc = void 0;\r
-};\r
+} );\r
 \r
-function SVGPolygonElement(_doc) {\r
-  NAIBU._GenericSVGPolyElement.call(this, _doc, "x e");\r
+base.$1.upsvg("polygon")\r
+ .on("initialize",  function (_doc) {\r
+  this._GenericSVGPolyElement(_doc, "x e");\r
   _doc = void 0;\r
-};\r
+} );\r
 \r
-function SVGTextContentElement(_doc) {\r
+base.$1.upsvg("text").mix( {\r
+  SVGTextContentElement: function(_doc) {\r
   /*readonly SVGAnimatedLength*/      this.textLength = new SVGAnimatedLength();\r
-  /*readonly SVGAnimatedEnumeration*/ this.lengthAdjust = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/ this.lengthAdjust = base("$SVGAnimatedEnumeration").up();\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
     var tar = evt.target,\r
         cur = evt.currentTarget,\r
@@ -6393,20 +6296,18 @@ function SVGTextContentElement(_doc) {
       tar = evt = void 0;\r
     }\r
   }, false);\r
-};\r
-\r
-(function(t) {\r
-  var tproto = t.prototype;\r
+},\r
     // lengthAdjust Types\r
-  /*unsigned short t.LENGTHADJUST_UNKNOWN           = 0;\r
-  /*unsigned short t.LENGTHADJUST_SPACING           = 1;\r
-  /*unsigned short t.LENGTHADJUST_SPACINGANDGLYPHS  = 2;*/\r
-  tproto._list = null;         //文字の位置を格納しておくリストのキャッシュ\r
-  tproto._length = null;       //全文字数のキャッシュ\r
-  tproto._stx = tproto._sty = 0; //初めの文字の位置\r
-  tproto._chars = 0;           //tspan (tref)要素が全体の何文字目から始まっているか\r
-  tproto._isYokogaki = true;   //横書きかどうか\r
-/*long*/     tproto.getNumberOfChars = function() {\r
+  /*unsigned short SVGTextContentElement.LENGTHADJUST_UNKNOWN           = 0;\r
+  /*unsigned short SVGTextContentElement.LENGTHADJUST_SPACING           = 1;\r
+  /*unsigned short SVGTextContentElement.LENGTHADJUST_SPACINGANDGLYPHS  = 2;*/\r
+  _list: null,         //文字の位置を格納しておくリストのキャッシュ\r
+  _length: null,       //全文字数のキャッシュ\r
+  _stx: 0,\r
+  _sty: 0, //初めの文字の位置\r
+  _chars: 0,           //tspan (tref)要素が全体の何文字目から始まっているか\r
+  _isYokogaki: true,   //横書きかどうか\r
+/*long*/     getNumberOfChars: function() {\r
   if (this._length) {\r
     return (this._length);\r
   } else {\r
@@ -6433,8 +6334,8 @@ function SVGTextContentElement(_doc) {
     this._length = s;\r
     return s;\r
   }\r
-};\r
-/*float*/    tproto.getComputedTextLength = function() {\r
+},\r
+/*float*/    getComputedTextLength: function() {\r
   var l = this.textLength.baseVal;\r
   if ((l.value === 0) && (this.getNumberOfChars() > 0)) {\r
     /*何も設定されていない場合のみ、初期化を行う*/\r
@@ -6442,11 +6343,11 @@ function SVGTextContentElement(_doc) {
   }\r
   l = void 0;\r
   return (this.textLength.baseVal.value);\r
-};\r
+},\r
 /*getSubStringLengthメソッド\r
  *charnum番目の文字からnchars+charnum-1番目までの文字列の長さを求めて返す\r
  */\r
-/*float*/    tproto.getSubStringLength = function(/*unsigned long*/ charnum, /*unsigned long*/ nchars ) {\r
+/*float*/    getSubStringLength: function(/*unsigned long*/ charnum, /*unsigned long*/ nchars ) {\r
   if (nchars === 0) {\r
     return 0;\r
   }\r
@@ -6465,8 +6366,8 @@ function SVGTextContentElement(_doc) {
   }\r
   tg = end = st = void 0;\r
   return s;\r
-};\r
-/*SVGPoint*/ tproto.getStartPositionOfChar = function (/*unsigned long*/ charnum ) {\r
+},\r
+/*SVGPoint*/ getStartPositionOfChar: function (/*unsigned long*/ charnum ) {\r
   if (charnum > this.getNumberOfChars() || charnum < 0) {\r
     throw (new DOMException(/*DOMException.INDEX_SIZE_ERR*/ 1));\r
   } else {\r
@@ -6618,8 +6519,8 @@ function SVGTextContentElement(_doc) {
     s = s.matrixTransform(this.getScreenCTM());\r
     return s;\r
   }\r
-};\r
-/*SVGPoint*/ tproto.getEndPositionOfChar = function(/*unsigned long*/ charnum ) {\r
+},\r
+/*SVGPoint*/ getEndPositionOfChar: function(/*unsigned long*/ charnum ) {\r
   if (charnum > this.getNumberOfChars() || charnum < 0) {\r
     throw (new DOMException(/*DOMException.INDEX_SIZE_ERR*/ 1));\r
   } else {\r
@@ -6633,24 +6534,22 @@ function SVGTextContentElement(_doc) {
     }\r
     return s;\r
   }\r
-};\r
-/*SVGRect*/  tproto.getExtentOfChar = function(/*unsigned long*/ charnum ) {\r
+},\r
+/*SVGRect*/  getExtentOfChar: function(/*unsigned long*/ charnum ) {\r
 \r
-};\r
-/*float*/    tproto.getRotationOfChar = function(/*unsigned long*/ charnum ) {\r
+},\r
+/*float*/    getRotationOfChar: function(/*unsigned long*/ charnum ) {\r
 \r
-};\r
-/*long*/     tproto.getCharNumAtPosition = function(/*SVGPoint*/ point ) {\r
+},\r
+/*long*/     getCharNumAtPosition: function(/*SVGPoint*/ point ) {\r
 \r
-};\r
-/*void*/     tproto.selectSubString = function(/*unsigned long*/ charnum,/*unsigned long*/ nchars ) {\r
+},\r
+/*void*/     selectSubString: function(/*unsigned long*/ charnum,/*unsigned long*/ nchars ) {\r
 \r
-};\r
- t = tproto = void 0;\r
-})(SVGTextContentElement);\r
+},\r
 \r
-function SVGTextPositioningElement(_doc) {\r
-  SVGTextContentElement.apply(this, arguments);\r
+SVGTextPositioningElement: function(_doc) {\r
+  this.SVGTextContentElement(_doc);\r
   var sl = SVGAnimatedLengthList;\r
   /*readonly SVGAnimatedLengthList*/ this.x = new sl();\r
   /*readonly SVGAnimatedLengthList*/ this.y = new sl();\r
@@ -6754,9 +6653,8 @@ function SVGTextPositioningElement(_doc) {
     tar.addEventListener("DOMNodeInsertedIntoDocument", tar._texto, false);\r
     evt = tar = void 0;\r
   },false);\r
-};\r
-SVGTextPositioningElement.prototype = Object._create(SVGTextContentElement);\r
-SVGTextPositioningElement.prototype._texto = function(evt) {\r
+},\r
+  _texto: function(evt) {\r
   var tar = evt.target,\r
       ti = tar.firstChild,\r
       ttp = tar._tar,\r
@@ -6911,20 +6809,20 @@ SVGTextPositioningElement.prototype._texto = function(evt) {
     tts.display = "block";\r
   }\r
   tar._cacheMatrix = anchor = isEnd = isMiddle = searchChild = tstylefunc = isMore = mt = lh = isRect = evt = tar = style = tedeco = style = color = cursor = disp = vis = ttps = backr = backrs = jt = lts = deter = void 0;\r
-};\r
+}\r
+} )\r
+ .on("initialize",  function (_doc) {\r
+  this.SVGTextPositioningElement(_doc);\r
+} );\r
 \r
-function SVGTextElement(_doc) {\r
-  SVGTextPositioningElement.apply(this, arguments);\r
-};\r
-SVGTextElement.prototype = Object._create(SVGTextPositioningElement);\r
+/*text要素のインターフェースとなるオブジェクトをtspan要素に流用する*/\r
+base.$1["http://www.w3.org/2000/svgtspan"] = base.$1["http://www.w3.org/2000/svgtext"].up()\r
 \r
-function SVGTSpanElement() {\r
-  SVGTextElement.apply(this, arguments);\r
-};\r
-SVGTSpanElement.prototype = Object._create(SVGTextPositioningElement);\r
 \r
-function SVGTRefElement(_doc) {\r
-  SVGTextPositioningElement.apply(this, arguments);\r
+/*text要素のインターフェースとなるオブジェクトをtref要素に流用する*/\r
+base.$1["http://www.w3.org/2000/svgtref"] = base.$1["http://www.w3.org/2000/svgtext"].up()\r
+ .on("initialize",  function (_doc) {\r
+  this.SVGTextPositioningElement(_doc);\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
     if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
       return; //強制終了させる\r
@@ -6944,28 +6842,28 @@ function SVGTRefElement(_doc) {
     tar = tic = evtt = void 0;\r
   }, false);\r
   SVGURIReference.apply(this);\r
-};\r
-SVGTRefElement.prototype = Object._create(SVGTextPositioningElement);\r
+} );\r
 \r
-function SVGTextPathElement() {\r
-  SVGTextContentElement.apply(this, arguments);\r
+/*text要素のインターフェースとなるオブジェクトをtextPath要素に流用する*/\r
+base.$1["http://www.w3.org/2000/svgtextPath"] = base.$1["http://www.w3.org/2000/svgtext"].up()\r
+ .on("initialize",  function (_doc) {\r
+  this.SVGTextContentElement(_doc);\r
   /*readonly SVGAnimatedLength*/      this.startOffset;\r
   /*readonly SVGAnimatedEnumeration*/ this.method;\r
   /*readonly SVGAnimatedEnumeration*/ this.spacing;\r
   SVGURIReference.apply(this);\r
-};\r
-SVGTextPathElement.prototype = Object._create(SVGTextContentElement);\r
+} );\r
+\r
 \r
-(function(t){\r
     // textPath Method Types\r
-  /*unsigned short t.TEXTPATH_METHODTYPE_UNKNOWN   = 0;\r
+  /*t = SVGTextPathElement\r
+   *unsigned short t.TEXTPATH_METHODTYPE_UNKNOWN   = 0;\r
   /*unsigned short t.TEXTPATH_METHODTYPE_ALIGN     = 1;\r
   /*unsigned short t.TEXTPATH_METHODTYPE_STRETCH     = 2;\r
     // textPath Spacing Types\r
   /*unsigned short t.TEXTPATH_SPACINGTYPE_UNKNOWN   = 0;\r
   /*unsigned short t.TEXTPATH_SPACINGTYPE_AUTO     = 1;\r
   /*unsigned short t.TEXTPATH_SPACINGTYPE_EXACT     = 2;*/\r
-})(SVGTextPathElement);\r
 \r
 \r
 base("$CSSValue").$SVGColor.up("$SVGPaint").mix( {\r
@@ -7001,12 +6899,12 @@ base("$CSSValue").$SVGColor.up("$SVGPaint").mix( {
 } ) ;\r
 \r
 /*makerのインタフェースをsvg要素のオブジェクトで補う場合のみ、getScreenCTMメソッドの扱いに注意すること*/\r
-function SVGMarkerElement(_doc) {\r
-  _doc = void 0;\r
+base.$1.upsvg("marker")\r
+ .on("initialize",  function () {\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/      this.refX = new sl();\r
   /*readonly SVGAnimatedLength*/      this.refY = new sl();\r
-  /*readonly SVGAnimatedEnumeration*/ this.markerUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/ this.markerUnits = base("$SVGAnimatedEnumeration").up();\r
   this.markerUnits.baseVal = /*SVGMarkerElement.SVG_MARKERUNITS_STROKEWIDTH*/ 2;\r
   /*readonly SVGAnimatedLength*/      this.markerWidth = new sl();\r
   /*readonly SVGAnimatedLength*/      this.markerHeight = new sl();\r
@@ -7015,7 +6913,7 @@ function SVGMarkerElement(_doc) {
   this.markerWidth.baseVal.newValueSpecifiedUnits(1, 3);\r
   this.markerHeight.baseVal.newValueSpecifiedUnits(1, 3);\r
   sl = void 0;\r
-  /*readonly SVGAnimatedEnumeration*/ this.orientType = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/ this.orientType = base("$SVGAnimatedEnumeration").up();\r
   this.orientType.baseVal = /*SVGMarkerElement.SVG_MARKER_ORIENT_ANGLE*/ 2;\r
   /*readonly SVGAnimatedAngle*/       this.orientAngle = new SVGAnimatedAngle();\r
     //SVGFitToViewBoxのインターフェースはhttp://www.w3.org/2000/svgsvgオブジェクトで代用\r
@@ -7152,8 +7050,8 @@ function SVGMarkerElement(_doc) {
      };\r
     })(ns, id);\r
   }, false);\r
-};\r
-(function(t){\r
+} )\r
+ .mix( {\r
     // Marker Unit Types\r
   /*unsigned short t.SVG_MARKERUNITS_UNKNOWN        = 0;\r
   /*unsigned short t.SVG_MARKERUNITS_USERSPACEONUSE = 1;\r
@@ -7162,16 +7060,17 @@ function SVGMarkerElement(_doc) {
   /*unsigned short t.SVG_MARKER_ORIENT_UNKNOWN      = 0;\r
   /*unsigned short t.SVG_MARKER_ORIENT_AUTO         = 1;\r
   /*unsigned short t.SVG_MARKER_ORIENT_ANGLE        = 2;*/\r
-  /*void*/ t.prototype.setOrientToAuto = function() {\r
-  this.orientType.baseVal = /*t.SVG_MARKER_ORIENT_AUTO*/ 1;\r
-};\r
-/*void*/ t.prototype.setOrientToAngle = function(/*SVGAngle*/ angle ) {\r
-  this.orientType.baseVal = /*t.SVG_MARKER_ORIENT_ANGLE*/ 2;\r
-  this.orientAngle.baseVal = angle;\r
+  /*void*/ setOrientToAuto: function() {\r
+    this.orientType.baseVal = /*t.SVG_MARKER_ORIENT_AUTO*/ 1;\r
+  },\r
+/*void*/ setOrientToAngle: function(/*SVGAngle*/ angle ) {\r
+    this.orientType.baseVal = /*t.SVG_MARKER_ORIENT_ANGLE*/ 2;\r
+    this.orientAngle.baseVal = angle;\r
+  }\r
+} );\r
 \r
-};\r
-})(SVGMarkerElement);\r
-function SVGColorProfileElement() {\r
+base.$1.upsvg("colorProfile")\r
+ .on("initialize",  function () {\r
   /*DOMString*/      this._local;\r
                          // raises DOMException on setting\r
                        // (NOTE: is prefixed by "_"\r
@@ -7180,7 +7079,7 @@ function SVGColorProfileElement() {
   /*DOMString*/      this.name;\r
   /*unsigned short*/ this.renderingIntent;\r
   SVGURIReference.apply(this);\r
-};\r
+} );\r
 \r
 base("$CSSStyleRule").$SVGCSSRule.up("$SVGColorProfileRule").mix( {\r
   /*DOMString      this.src;*/\r
@@ -7188,11 +7087,12 @@ base("$CSSStyleRule").$SVGCSSRule.up("$SVGColorProfileRule").mix( {
   /*unsigned short this.renderingIntent;*/\r
 } );\r
 \r
-function SVGGradientElement() {\r
+/*$LinearGradientElementと$radialGradientElementの初期化として使う*/\r
+base.$1.SVGGradientElement = function () {\r
   SVGURIReference.apply(this);\r
-  /*readonly SVGAnimatedEnumeration*/   this.gradientUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/   this.gradientUnits = base("$SVGAnimatedEnumeration").up();\r
   /*readonly SVGAnimatedTransformList*/ this.gradientTransform = new SVGAnimatedTransformList();\r
-  /*readonly SVGAnimatedEnumeration*/   this.spreadMethod = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/   this.spreadMethod = base("$SVGAnimatedEnumeration").up();\r
   this.addEventListener("DOMNodeInsertedIntoDocument", function(evt) {\r
     var grad = evt.target,\r
         ele = evt._tar,\r
@@ -7257,8 +7157,8 @@ function SVGGradientElement() {
   /*unsigned short SVGGradientElement.SVG_SPREADMETHOD_REFLECT = 2;\r
   /*unsigned short SVGGradientElement.SVG_SPREADMETHOD_REPEAT  = 3;*/\r
 \r
-function SVGLinearGradientElement() {\r
-  SVGGradientElement.apply(this);\r
+base.$1.upsvg("linearGradient").on("initialize", function () {\r
+  this.SVGGradientElement();\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.x1 = new sl();\r
   /*readonly SVGAnimatedLength*/ this.y1 = new sl();\r
@@ -7284,11 +7184,10 @@ function SVGLinearGradientElement() {
     ele.setAttribute("angle", angle + "");\r
     evt = ele = grad = angle = style = fontSize = void 0;\r
   }, false);\r
-};\r
-SVGLinearGradientElement.prototype = Object._create(SVGGradientElement);\r
+} );\r
 \r
-function SVGRadialGradientElement(_doc) {\r
-  SVGGradientElement.apply(this);\r
+base.$1.upsvg("radialGradient").on("initialize", function (_doc) {\r
+  this.SVGGradientElement();\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.cx = new sl();\r
   /*readonly SVGAnimatedLength*/ this.cy = new sl();\r
@@ -7398,11 +7297,10 @@ function SVGRadialGradientElement(_doc) {
     }\r
     evt = tar = ele = gard = void 0;\r
   }, false);\r
-};\r
-SVGRadialGradientElement.prototype = Object._create(SVGGradientElement);\r
+} );\r
 \r
-function SVGStopElement() {\r
-  /*readonly SVGAnimatedNumber*/ this.offset = base("$SVGAnimatedNumber").up("$1");\r
+base.$1.upsvg("stop").on("initialize",  function () {\r
+  /*readonly SVGAnimatedNumber*/ this.offset = base("$SVGAnimatedNumber").up();\r
   this.addEventListener("DOMAttrModified", function(evt) {\r
     if (evt.attrName === "offset") {\r
       var env = evt.newValue;\r
@@ -7414,12 +7312,13 @@ function SVGStopElement() {
     }\r
     evt = void 0;\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGPatternElement() {\r
+base.$1.upsvg("pattern")\r
+ .on("initialize",  function () {\r
   var sl = SVGAnimatedLength;\r
-  /*readonly SVGAnimatedEnumeration*/   this.patternUnits = base("$SVGAnimatedEnumeration").up("$1");\r
-  /*readonly SVGAnimatedEnumeration*/   this.patternContentUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/   this.patternUnits = base("$SVGAnimatedEnumeration").up();\r
+  /*readonly SVGAnimatedEnumeration*/   this.patternContentUnits = base("$SVGAnimatedEnumeration").up();\r
   /*readonly SVGAnimatedTransformList*/ this.patternTransform = new SVGAnimatedTransformList();\r
   /*readonly SVGAnimatedLength*/        this.x = new sl();\r
   /*readonly SVGAnimatedLength*/        this.y = new sl();\r
@@ -7431,37 +7330,40 @@ function SVGPatternElement() {
   /*readonly SVGAnimatedRect*/   this.viewBox = new SVGAnimatedRect();\r
   /*readonly SVGAnimatedPreserveAspectRatio*/ this.preserveAspectRatio = new SVGAnimatedPreserveAspectRatio();\r
   /*unsigned short*/             this.zoomAndPan = /*SVGZoomAndPan.SVG_ZOOMANDPAN_DISABLE*/ 1;\r
-};\r
+} );\r
 \r
-function SVGClipPathElement() {\r
-  /*readonly SVGAnimatedEnumeration*/ this.clipPathUnits = base("$SVGAnimatedEnumeration").up("$1");\r
-};\r
+base.$1.upsvg("clipPath")\r
+ .on("initialize",  function () {\r
+  /*readonly SVGAnimatedEnumeration*/ this.clipPathUnits = base("$SVGAnimatedEnumeration").up();\r
+} );\r
 \r
-function SVGMaskElement() {\r
+base.$1.upsvg("mask")\r
+ .on("initialize",  function () {\r
   var sl = SVGAnimatedLength;\r
-  /*readonly SVGAnimatedEnumeration*/ this.maskUnits = base("$SVGAnimatedEnumeration").up("$1");\r
-  /*readonly SVGAnimatedEnumeration*/ this.maskContentUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/ this.maskUnits = base("$SVGAnimatedEnumeration").up();\r
+  /*readonly SVGAnimatedEnumeration*/ this.maskContentUnits = base("$SVGAnimatedEnumeration").up();\r
   /*readonly SVGAnimatedLength*/      this.x = new sl();\r
   /*readonly SVGAnimatedLength*/      this.y = new sl();\r
   /*readonly SVGAnimatedLength*/      this.width = new sl();\r
   /*readonly SVGAnimatedLength*/      this.height = new sl();\r
   sl = void 0;\r
-};\r
+} );\r
 \r
-function SVGFilterElement() {\r
+base.$1.upsvg("filter")\r
+ .on("initialize",  function () {\r
   var sl = SVGAnimatedLength;\r
-  /*readonly SVGAnimatedEnumeration*/ this.filterUnits = base("$SVGAnimatedEnumeration").up("$1");\r
-  /*readonly SVGAnimatedEnumeration*/ this.primitiveUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+  /*readonly SVGAnimatedEnumeration*/ this.filterUnits = base("$SVGAnimatedEnumeration").up();\r
+  /*readonly SVGAnimatedEnumeration*/ this.primitiveUnits = base("$SVGAnimatedEnumeration").up();\r
   /*readonly SVGAnimatedLength*/      this.x = new sl();\r
   /*readonly SVGAnimatedLength*/      this.y = new sl();\r
   /*readonly SVGAnimatedLength*/      this.width = new sl();\r
   /*readonly SVGAnimatedLength*/      this.height = new sl();\r
   sl = void 0;\r
-  /*readonly SVGAnimatedInteger*/     this.filterResX = base("$SVGAnimatedInteger").up("$1");\r
-  /*readonly SVGAnimatedInteger*/     this.filterResY = base("$SVGAnimatedInteger").up("$1");\r
+  /*readonly SVGAnimatedInteger*/     this.filterResX = base("$SVGAnimatedInteger").up();\r
+  /*readonly SVGAnimatedInteger*/     this.filterResY = base("$SVGAnimatedInteger").up();\r
   SVGURIReference.apply(this);\r
   //setFilterRes (/*unsigned long*/ filterResX,/*unsigned long*/ filterResY );\r
-};\r
+} );\r
 \r
 function SVGFilterPrimitiveStandardAttributes(ele) {\r
   SVGStylable.apply(this, arguments);\r
@@ -7471,17 +7373,17 @@ function SVGFilterPrimitiveStandardAttributes(ele) {
   /*readonly SVGAnimatedLength*/ this.y = new sl();\r
   /*readonly SVGAnimatedLength*/ this.width = new sl();\r
   /*readonly SVGAnimatedLength*/ this.height = new sl();\r
-  /*readonly SVGAnimatedString*/ this.result = base("$SVGAnimatedString").up("$1");\r
+  /*readonly SVGAnimatedString*/ this.result = base("$SVGAnimatedString").up();\r
   sl = void 0;\r
-  };\r
-SVGFilterPrimitiveStandardAttributes.prototype = Object._create(SVGStylable);\r
+};\r
 \r
-function SVGFEBlendElement() {\r
-  /*readonly SVGAnimatedString*/      this.in1 = base("$SVGAnimatedString").up("$1");\r
-  /*readonly SVGAnimatedString*/      this.in2 = base("$SVGAnimatedString").up("$1");\r
-  /*readonly SVGAnimatedEnumeration*/ this.mode = base("$SVGAnimatedEnumeration").up("$1");\r
+base.$1.upsvg("feBlend")\r
+ .on("initialize",  function () {\r
+  /*readonly SVGAnimatedString*/      this.in1 = base("$SVGAnimatedString").up();\r
+  /*readonly SVGAnimatedString*/      this.in2 = base("$SVGAnimatedString").up();\r
+  /*readonly SVGAnimatedEnumeration*/ this.mode = base("$SVGAnimatedEnumeration").up();\r
   this._fpsa = SVGFilterPrimitiveStandardAttributes(this);\r
-};\r
+} );\r
     // Blend Mode Types\r
   /*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_UNKNOWN  = 0;\r
   /*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL   = 1;\r
@@ -7490,26 +7392,29 @@ function SVGFEBlendElement() {
   /*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN   = 4;\r
   /*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN  = 5;*/\r
 \r
-function SVGFEGaussianBlurElement() {\r
-  /*readonly SVGAnimatedString*/ this.in1 = base("$SVGAnimatedString").up("$1");\r
-  /*readonly SVGAnimatedNumber*/ this.stdDeviationX = base("$SVGAnimatedNumber").up("$1");\r
-  /*readonly SVGAnimatedNumber*/ this.stdDeviationY = base("$SVGAnimatedNumber").up("$1");\r
+base.$1.upsvg("feGaussianBlur")\r
+ .on("initialize",  function () {\r
+  /*readonly SVGAnimatedString*/ this.in1 = base("$SVGAnimatedString").up();\r
+  /*readonly SVGAnimatedNumber*/ this.stdDeviationX = base("$SVGAnimatedNumber").up();\r
+  /*readonly SVGAnimatedNumber*/ this.stdDeviationY = base("$SVGAnimatedNumber").up();\r
   this._fpsa = SVGFilterPrimitiveStandardAttributes(this);\r
-};\r
-/*void*/ SVGFEGaussianBlurElement.prototype.setStdDeviation = function(/*float*/ stdDeviationX, /*float*/ stdDeviationY ) {\r
+} )\r
+ /*void*/ .setStdDeviation = function(/*float*/ stdDeviationX, /*float*/ stdDeviationY ) {\r
 \r
 };\r
 \r
-function SVGCursorElement() {\r
+base.$1.upsvg("cursor")\r
+ .on("initialize",  function () {\r
   /*readonly SVGAnimatedLength*/ this.x = new SVGAnimatedLength();\r
   /*readonly SVGAnimatedLength*/ this.y = new SVGAnimatedLength();\r
   SVGURIReference.apply(this);\r
-};\r
+} );\r
 \r
-function SVGAElement(_doc) {\r
+base.$1.upsvg("a")\r
+ .on("initialize", function (_doc) {\r
   this._tar = _doc.createElement("a");\r
   _doc = void 0;\r
-  /*readonly SVGAnimatedString*/ this.target = base("$SVGAnimatedString").up("$1");\r
+  /*readonly SVGAnimatedString*/ this.target = base("$SVGAnimatedString").up();\r
   this.target.baseVal = "_self";\r
   this.addEventListener("DOMAttrModified", function(evt){\r
     var tar = evt.target;\r
@@ -7621,17 +7526,19 @@ function SVGAElement(_doc) {
     tar = void 0;\r
   }, false);\r
   SVGURIReference.apply(this);\r
-};\r
+} );\r
 \r
-function SVGViewElement() {\r
-  /*readonly SVGStringList*/ this.viewTarget = base("$SVGStringList").up("$1");\r
+base.$1.upsvg("view")\r
+ .on("initialize",  function () {\r
+  /*readonly SVGStringList*/ this.viewTarget = base("$SVGStringList").up();\r
       //SVGFitToViewBoxのインターフェースを用いる\r
   /*readonly SVGAnimatedRect*/   this.viewBox = new SVGAnimatedRect();\r
   /*readonly SVGAnimatedPreserveAspectRatio*/ this.preserveAspectRatio = new SVGAnimatedPreserveAspectRatio();\r
   /*unsigned short*/             this.zoomAndPan = /*SVGZoomAndPan.SVG_ZOOMANDPAN_DISABLE*/ 1;\r
-};\r
+} );\r
 \r
-function SVGScriptElement() {\r
+base.$1.upsvg("script")\r
+ .on("initialize",  function () {\r
   /*DOMString*/ this.type;\r
   SVGURIReference.apply(this);\r
   this.addEventListener("DOMAttrModified", function(evt){\r
@@ -7678,18 +7585,19 @@ function SVGScriptElement() {
       tar = evt = evtt = void 0;\r
     }, false);\r
   }, false);\r
-};\r
+} );\r
 \r
 base("$event").up("SVGEvents");\r
 \r
 base("$event").SVGZoomEvents = base("$event").UIEvents.up("SVGZoomEvents").on("itnitialize", function() {\r
-  /*readonly SVGRect*/  this.zoomRectScreen = base("$SVGRect").up("$1");\r
+  /*readonly SVGRect*/  this.zoomRectScreen = base("$SVGRect").up();\r
   /*readonly float*/    this.previousScale =  this.newScale = 1;\r
-  /*readonly SVGPoint*/ this.previousTranslate = base("$SVGPoint").up("$1");\r
-  /*readonly SVGPoint*/ this.newTranslate = base("$SVGPoint").up("$1");\r
+  /*readonly SVGPoint*/ this.previousTranslate = base("$SVGPoint").up();\r
+  /*readonly SVGPoint*/ this.newTranslate = base("$SVGPoint").up();\r
 });\r
 \r
-function SVGAnimationElement() {\r
+base.$1.upsvg("animate")\r
+ .SVGAnimationElement = function() {\r
   /*SIEにおけるSVGElementでは、fill属性とStyleSheetを結びつける機構があるため、\r
    *styleのsetPropertyメソッドを無効化させておく必要がある\r
    */\r
@@ -7866,7 +7774,7 @@ function SVGAnimationElement() {
         tar._values = [null, tar._to];\r
       } else if (tar._by) {\r
         tar._values = [null, null, tar._by];\r
-      } else if (!tar.hasChildNodes() && !tar.hasAttributeNS(null, "path")) { //SVGAnimateMotionElementに留意\r
+      } else if (!tar.hasChildNodes() && !tar.hasAttributeNS(null, "path")) { //animateMotion要素に留意\r
         /*アニメーションの効果が出ないように調整する\r
          *SMILアニメーションの仕様を参照\r
          *\r
@@ -8180,8 +8088,10 @@ NAIBU.Time = {
 };\r
 NAIBU.Clip = [];\r
 \r
-function SVGAnimateElement(){\r
-  SVGAnimationElement.apply(this);\r
+\r
+base.$1["http://www.w3.org/2000/svganimate"]\r
+ .on("initialize", function (_doc) {\r
+  this.SVGAnimationElement();\r
   /*NAIBU.Clipについては、NAIBU.Timeで使う\r
    *くわしくはNAIBU.Time.start関数のコードを参照\r
    */\r
@@ -8210,7 +8120,7 @@ function SVGAnimateElement(){
           ttr = tar.targetElement,\r
           tta = ttr[attrName];\r
       /*tar.valuesのリスト:  ["12px", "13px"]\r
-       *tar._valueList:   [(base("$SVGPoint").up("$1")), (base("$SVGPoint").up("$1"))]\r
+       *tar._valueList:   [(base("$SVGPoint").up()), (base("$SVGPoint").up())]\r
        *  tar.valuesを機械が理解できるように変換したものがtar._valueList\r
        *この_valueListプロパティはアニメの際に使うので、_valuesプロパティはアニメ中に使わないことに注意\r
        */\r
@@ -8364,11 +8274,12 @@ function SVGAnimateElement(){
   this.addEventListener("repeatEvent", function(evt) {\r
     var tar = evt.target;\r
   }, false);\r
-};\r
-SVGAnimateElement.prototype = Object._create(SVGAnimationElement);\r
+} );\r
 \r
-function SVGSetElement(){\r
-  SVGAnimationElement.apply(this);\r
+/*set要素はanimate要素を流用する*/\r
+base.$1["http://www.w3.org/2000/svgset"] = base.$1["http://www.w3.org/2000/svganimate"].up()\r
+ .on("initialize", function (_doc) {\r
+  this.SVGAnimationElement();\r
   NAIBU.Clip[NAIBU.Clip.length] = this;\r
   this._to = "";\r
   this.addEventListener("DOMAttrModified", function(evt) {\r
@@ -8436,11 +8347,12 @@ function SVGSetElement(){
   this.addEventListener("repeatEvent", function(evt) {\r
     var tar = evt.target, attrName = tar.getAttributeNS(null, "attributeName"), style = tar.ownerDocument.defaultView.getComputedStyle(tar.targetElement, "");\r
   }, false);\r
-};\r
-SVGSetElement.prototype = Object._create(SVGAnimationElement);\r
+} );\r
 \r
-function SVGAnimateMotionElement(){\r
-  SVGAnimationElement.apply(this);\r
+/*animateMotion要素はanimate要素を流用する*/\r
+base.$1["http://www.w3.org/2000/svganimateMotion"] = base.$1["http://www.w3.org/2000/svganimate"].up()\r
+ .on("initialize", function (_doc) {\r
+  this.SVGAnimationElement();\r
   NAIBU.Clip[NAIBU.Clip.length] = this;\r
   this.addEventListener("DOMAttrModified", function(evt){\r
     if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
@@ -8479,7 +8391,7 @@ function SVGAnimateMotionElement(){
     /*アニメーション中に変化すべき値をanimValプロパティに入力して、\r
      *baseValと同じような値に設定。\r
      */\r
-    trans.animVal = base("$SVGStringList").$SVGTransformList.up("$1");;\r
+    trans.animVal = base("$SVGStringList").$SVGTransformList.up();;\r
     if (trans.baseVal.numberOfItems !== 0) {\r
       trans.animVal.initialize(trans.baseVal.createSVGTransformFromMatrix(trans.baseVal.consolidate().matrix));\r
     } else {\r
@@ -8572,18 +8484,21 @@ function SVGAnimateMotionElement(){
   this.addEventListener("repeatEvent", function(evt) {\r
     var tar = evt.target;\r
   }, false);\r
-};\r
-SVGAnimateMotionElement.prototype = Object._create(SVGAnimationElement);\r
+} )\r
 \r
-function SVGMPathElement() /* :\r
+base.$1.upsvg("mpath")\r
+ .on("initialize", function () {\r
+/* :\r
                 SVGElement,\r
                 SVGURIReference,\r
-                SVGExternalResourcesRequired*/ {\r
+                SVGExternalResourcesRequired*/ \r
   SVGURIReference.apply(this);\r
-};\r
+} );\r
 \r
-function SVGAnimateColorElement() {\r
-  SVGAnimationElement.apply(this);\r
+/*animateColor要素はanimate要素を流用する*/\r
+base.$1["http://www.w3.org/2000/svganimateColor"] = base.$1["http://www.w3.org/2000/svganimate"].up()\r
+ .on("initialize", function (_doc) {\r
+  this.SVGAnimationElement();\r
   NAIBU.Clip[NAIBU.Clip.length] = this;\r
   this._valueList = [];\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
@@ -8680,18 +8595,19 @@ function SVGAnimateColorElement() {
   this.addEventListener("repeatEvent", function(evt) {\r
     var tar = evt.target;\r
   }, false);\r
-};\r
-SVGAnimateColorElement.prototype = Object._create(SVGAnimationElement);\r
+} );\r
 \r
-function SVGAnimateTransformElement() {\r
-  SVGAnimationElement.apply(this);\r
+/*animateTransform要素はanimate要素を流用する*/\r
+base.$1["http://www.w3.org/2000/svganimateTransform"] = base.$1["http://www.w3.org/2000/svganimate"].up()\r
+ .on("initialize", function (_doc) {\r
+  this.SVGAnimationElement();\r
   NAIBU.Clip[NAIBU.Clip.length] = this;\r
   this.addEventListener("beginEvent", function(evt) {\r
     var tar = evt.target, trans = tar.targetElement.transform;\r
     /*アニメーション中に変化すべき値をanimValプロパティに入力して、\r
      *baseValと同じような値に設定。\r
      */\r
-    trans.animVal = base("$SVGStringList").$SVGTransformList.up("$1");\r
+    trans.animVal = base("$SVGStringList").$SVGTransformList.up();\r
     if (trans.baseVal.numberOfItems !== 0) {\r
       trans.animVal.initialize(trans.baseVal.createSVGTransformFromMatrix(trans.baseVal.getItem(0).matrix));\r
     }\r
@@ -8710,10 +8626,9 @@ function SVGAnimateTransformElement() {
   this.addEventListener("repeatEvent", function(evt) {\r
     var tar = evt.target;\r
   }, false);\r
-};\r
-SVGAnimateTransformElement.prototype = Object._create(SVGAnimationElement);\r
+} );\r
 \r
-function SVGFontElement() /*:\r
+base.$1.upsvg("font").on("initialize",  function ()  /*:\r
                 SVGElement,\r
                 SVGExternalResourcesRequired,\r
                 SVGStylable*/ {\r
@@ -8745,25 +8660,20 @@ function SVGFontElement() /*:
       }\r
     }, false);\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGGlyphElement() /*:\r
+base.$1.upsvg("glyph"); /*:\r
                 SVGElement,\r
-                SVGStylable*/ {\r
-};\r
+                SVGStylable*/\r
 \r
-function SVGMissingGlyphElement() /*:\r
+base.$1.upsvg("missingGlyph"); /*:\r
                 SVGElement,\r
-                SVGStylable*/ {\r
-};\r
+                SVGStylable*/\r
 \r
-function SVGHKernElement() {\r
-};\r
-\r
-function SVGVKernElement() {\r
-};\r
+base.$1.upsvg("hkern");\r
+base.$1.upsvg("kkern");\r
 \r
-function SVGFontFaceElement() {\r
+base.$1.upsvg("font-face").on("initialize", function () {\r
   /*boolean(or number)*/ this._isLinked = 0;\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
     if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
@@ -8773,12 +8683,11 @@ function SVGFontFaceElement() {
       return; //強制終了させる\r
     }\r
   }, false);\r
-};\r
+} );\r
 \r
-function SVGFontFaceSrcElement() {\r
-};\r
+base.$1.upsvg("font-face-src");\r
 \r
-function SVGFontFaceUriElement() {\r
+base.$1.upsvg("font-face-uri").on("initialize", function () {\r
   this.addEventListener("DOMNodeInserted", function(evt){\r
     if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
       return; //強制終了させる\r
@@ -8796,25 +8705,23 @@ function SVGFontFaceUriElement() {
     evt = tar = tpp = void 0;\r
   }, false);\r
   SVGURIReference.apply(this);\r
-};\r
+} );\r
 \r
-function SVGFontFaceFormatElement() {\r
-};\r
+base.$1.upsvg("font-face-format");\r
 \r
-function SVGFontFaceNameElement() {\r
-};\r
+base.$1.upsvg("font-face-name");\r
 \r
-function SVGDefinitionSrcElement() {\r
-};\r
+base.$1.upsvg("definitionSrc");\r
 \r
-function SVGForeignObjectElement(_doc) /*:\r
+base.$1.upsvg("foreignObject")\r
+ .on("initialize",  function (_doc) { /*:\r
                 SVGElement,\r
                 SVGTests,\r
                 SVGLangSpace,\r
                 SVGExternalResourcesRequired,\r
                 SVGStylable,\r
                 SVGTransformable,\r
-                events::EventTarget*/ {\r
+                events::EventTarget*/\r
   this._tar = _doc.createElement("v:group");\r
   var sl = SVGAnimatedLength;\r
   /*readonly SVGAnimatedLength*/ this.x = new sl();\r
@@ -8828,7 +8735,7 @@ function SVGForeignObjectElement(_doc) /*:
       return; //強制終了させる\r
     }\r
     tar._inserted__(tar);\r
-    tar.addEventListener("DOMNodeInsertedIntoDocument", SVGImageElement.prototype._imageo, false);\r
+    tar.addEventListener("DOMNodeInsertedIntoDocument", this["http://www.w3.org/2000/svgimage"]._imageo, false);\r
     evt = tar = void 0;\r
   }, false);\r
   this.addEventListener("DOMNodeInsertedIntoDocument", function(evt){\r
@@ -8895,74 +8802,9 @@ function SVGForeignObjectElement(_doc) /*:
       tar = ta = void 0;\r
     }\r
   }, true);\r
-};\r
+} );\r
 \r
 //#endif  _SVG_IDL_\r
-base("DOMImplementation")["http://www.w3.org/2000/svg"] = {\r
-  g:               SVGGElement,\r
-  path:            NAIBU.SVGPathElement,\r
-  title:           SVGTitleElement,\r
-  desc:            SVGDescElement,\r
-  defs:            SVGDefsElement,\r
-  linearGradient:  SVGLinearGradientElement,\r
-  radialGradient:  SVGRadialGradientElement,\r
-  stop:            SVGStopElement,\r
-  rect:            SVGRectElement,\r
-  circle:          SVGCircleElement,\r
-  ellipse:         SVGEllipseElement,\r
-  polyline:        SVGPolylineElement,\r
-  polygon:         SVGPolygonElement,\r
-  text:            SVGTextElement,\r
-  tspan:           SVGTSpanElement,\r
-  image:           SVGImageElement,\r
-  line:            SVGLineElement,\r
-  a:               SVGAElement,\r
-  animateColor:    SVGAnimateColorElement,\r
-  animate:         SVGAnimateElement,\r
-  animateMotion:   SVGAnimateMotionElement,\r
-  animateTransform:SVGAnimateTransformElement,\r
-  clipPath:        SVGClipPathElement,\r
-  colorProfile:    SVGColorProfileElement,\r
-  cursor:          SVGCursorElement,\r
-  definitionSrc:   SVGDefinitionSrcElement,\r
-  feBlend:         SVGFEBlendElement,\r
-  feGaussianBlur:  SVGFEGaussianBlurElement,\r
-  filter:          SVGFilterElement,\r
-  font:            SVGFontElement,\r
-  "font-face":     SVGFontFaceElement,\r
-  "font-face-format":SVGFontFaceFormatElement,\r
-  "font-face-name":SVGFontFaceNameElement,\r
-  "font-face-src": SVGFontFaceSrcElement,\r
-  "font-face-uri": SVGFontFaceUriElement,\r
-  foreignObject:   SVGForeignObjectElement,\r
-  glyph:           SVGGlyphElement,\r
-  hkern:           SVGHKernElement,\r
-  marker:          SVGMarkerElement,\r
-  mask:            SVGMaskElement,\r
-  missingGlyph:    SVGMissingGlyphElement,\r
-  mpath:           SVGMPathElement,\r
-  script:          SVGScriptElement,\r
-  set:             SVGSetElement,\r
-  style:           SVGStyleElement,\r
-  "switch":        SVGSwitchElement,\r
-  "symbol":        SVGSymbolElement,\r
-  textPath:        SVGTextPathElement,\r
-  tref:            SVGTRefElement,\r
-  use:             SVGUseElement,\r
-  view:            SVGViewElement,\r
-  vkern:           SVGVKernElement,\r
-  pattern:         SVGPatternElement\r
-};\r
-(function(){\r
-  /*大幅な修正をせずに、base関数をsvg.jsのインターフェースに適用させるためのもの*/\r
-  var svg = base("$document").$element.$svgelement,\r
-      list = base("DOMImplementation")["http://www.w3.org/2000/svg"];\r
-  for (var i in list) {\r
-    list.hasOwnProperty(i) && svg.up("http://www.w3.org/2000/svg" + i)\r
-                                 .on("initialize", list[i])\r
-                                 .mix(list[i].prototype);\r
-  }\r
-})();\r
 \r
 NAIBU._fontSearchURI = function(evt){\r
   var doc = evt.target.ownerDocument;\r