Initial attempt at HTML5 parsing in Gecko
authorHenri Sivonen <hsivonen@iki.fi>
Fri, 12 Dec 2008 15:10:39 -0800
changeset 29656 db0fd41f9159fe8d936b3223193a97d1884623ca
parent 20084 1630d60e624e8119944c5e803993ac67bb7845c3
child 29657 9ad10e2f1fe0de26df4f71fd5c35e9db87c3fbe5
push idunknown
push userunknown
push dateunknown
milestone1.9.1b1pre
Initial attempt at HTML5 parsing in Gecko
content/base/src/nsContentSink.cpp
content/base/src/nsContentSink.h
content/html/Makefile.in
content/html/document/src/Makefile.in
content/html/document/src/nsHTMLContentSink.cpp
content/html/document/src/nsHTMLDocument.cpp
content/html/parser/Makefile.in
content/html/parser/public/Makefile.in
content/html/parser/public/nsHtml5Module.h
content/html/parser/src/Makefile.in
content/html/parser/src/jArray.h
content/html/parser/src/nsHtml5ArrayCopy.h
content/html/parser/src/nsHtml5AtomList.h
content/html/parser/src/nsHtml5Atoms.cpp
content/html/parser/src/nsHtml5Atoms.h
content/html/parser/src/nsHtml5AttributeName.cpp
content/html/parser/src/nsHtml5AttributeName.h
content/html/parser/src/nsHtml5DocumentMode.h
content/html/parser/src/nsHtml5ElementName.cpp
content/html/parser/src/nsHtml5ElementName.h
content/html/parser/src/nsHtml5HtmlAttributes.cpp
content/html/parser/src/nsHtml5HtmlAttributes.h
content/html/parser/src/nsHtml5Module.cpp
content/html/parser/src/nsHtml5NamedCharacters.cpp
content/html/parser/src/nsHtml5NamedCharacters.h
content/html/parser/src/nsHtml5Parser.cpp
content/html/parser/src/nsHtml5Parser.h
content/html/parser/src/nsHtml5Portability.cpp
content/html/parser/src/nsHtml5Portability.h
content/html/parser/src/nsHtml5StackNode.cpp
content/html/parser/src/nsHtml5StackNode.h
content/html/parser/src/nsHtml5StringLiterals.cpp
content/html/parser/src/nsHtml5StringLiterals.h
content/html/parser/src/nsHtml5Tokenizer.cpp
content/html/parser/src/nsHtml5Tokenizer.h
content/html/parser/src/nsHtml5TreeBuilder.cpp
content/html/parser/src/nsHtml5TreeBuilder.h
content/html/parser/src/nsHtml5TreeBuilderCppSupplement.h
content/html/parser/src/nsHtml5TreeBuilderHSupplement.h
content/html/parser/src/nsHtml5UTF16Buffer.cpp
content/html/parser/src/nsHtml5UTF16Buffer.h
content/html/parser/src/nsHtml5UTF16BufferCppSupplement.h
content/html/parser/src/nsHtml5UTF16BufferHSupplement.h
content/xml/document/src/nsXMLContentSink.cpp
content/xml/document/src/nsXMLContentSink.h
layout/build/Makefile.in
layout/build/nsLayoutStatics.cpp
--- a/content/base/src/nsContentSink.cpp
+++ b/content/base/src/nsContentSink.cpp
@@ -774,32 +774,42 @@ nsContentSink::ProcessStyleLink(nsIConte
 
   return NS_OK;
 }
 
 
 nsresult
 nsContentSink::ProcessMETATag(nsIContent* aContent)
 {
-  NS_ASSERTION(aContent, "missing base-element");
+  NS_ASSERTION(aContent, "missing meta-element");
 
   nsresult rv = NS_OK;
 
   // set any HTTP-EQUIV data into document's header data as well as url
   nsAutoString header;
   aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::httpEquiv, header);
   if (!header.IsEmpty()) {
     nsAutoString result;
     aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, result);
     if (!result.IsEmpty()) {
       ToLowerCase(header);
       nsCOMPtr<nsIAtom> fieldAtom(do_GetAtom(header));
       rv = ProcessHeaderData(fieldAtom, result, aContent); 
     }
   }
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  /* Look for the viewport meta tag. If we find it, process it and put the
+   * data into the document header. */
+  if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
+                            nsGkAtoms::viewport, eIgnoreCase)) {
+    nsAutoString value;
+    aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
+    rv = nsContentUtils::ProcessViewportInfo(mDocument, value);
+  }
 
   return rv;
 }
 
 
 void
 nsContentSink::PrefetchHref(const nsAString &aHref,
                             nsIContent *aSource,
--- a/content/base/src/nsContentSink.h
+++ b/content/base/src/nsContentSink.h
@@ -142,16 +142,18 @@ class nsContentSink : public nsICSSLoade
   void NotifyAppend(nsIContent* aContent, PRUint32 aStartIndex);
 
   // nsIDocumentObserver
   virtual void BeginUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType);
   virtual void EndUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType);
 
   virtual void UpdateChildCounts() = 0;
 
+  PRBool IsTimeToNotify();
+
 protected:
   nsContentSink();
   virtual ~nsContentSink();
 
   enum CacheSelectionAction {
     // There is no offline cache manifest specified by the document,
     // or the document was loaded from a cache other than the one it
     // specifies via its manifest attribute and IS NOT a top-level
@@ -250,20 +252,19 @@ protected:
   // Tries to scroll to the URI's named anchor. Once we've successfully
   // done that, further calls to this method will be ignored.
   void ScrollToRef();
   nsresult RefreshIfEnabled(nsIViewManager* vm);
 
   // Start layout.  If aIgnorePendingSheets is true, this will happen even if
   // we still have stylesheet loads pending.  Otherwise, we'll wait until the
   // stylesheets are all done loading.
+public:
   void StartLayout(PRBool aIgnorePendingSheets);
-
-  PRBool IsTimeToNotify();
-
+protected:
   void
   FavorPerformanceHint(PRBool perfOverStarvation, PRUint32 starvationDelay);
 
   inline PRInt32 GetNotificationInterval()
   {
     if (mDynamicLowerValue) {
       return 1000;
     }
--- a/content/html/Makefile.in
+++ b/content/html/Makefile.in
@@ -37,11 +37,11 @@
 
 DEPTH		= ../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS		= content document
+DIRS		= content document parser
 
 include $(topsrcdir)/config/rules.mk
--- a/content/html/document/src/Makefile.in
+++ b/content/html/document/src/Makefile.in
@@ -70,16 +70,17 @@ REQUIRES	= xpcom \
 		  imglib2 \
 		  xpconnect \
 		  unicharutil \
 		  commandhandler \
 		  composer \
 		  editor \
 		  plugin \
 		  txtsvc \
+		  html5 \
 		  $(NULL)
 
 CPPSRCS		= \
 		nsHTMLContentSink.cpp \
 		nsHTMLFragmentContentSink.cpp \
 		nsHTMLDocument.cpp \
 		nsMediaDocument.cpp \
 		nsPluginDocument.cpp \
--- a/content/html/document/src/nsHTMLContentSink.cpp
+++ b/content/html/document/src/nsHTMLContentSink.cpp
@@ -205,18 +205,16 @@ public:
   NS_IMETHOD DidProcessAToken(void);
   NS_IMETHOD NotifyTagObservers(nsIParserNode* aNode);
   NS_IMETHOD BeginContext(PRInt32 aID);
   NS_IMETHOD EndContext(PRInt32 aID);
   NS_IMETHOD OpenHead();
   NS_IMETHOD IsEnabled(PRInt32 aTag, PRBool* aReturn);
   NS_IMETHOD_(PRBool) IsFormOnStack();
 
-  virtual nsresult ProcessMETATag(nsIContent* aContent);
-
 #ifdef DEBUG
   // nsIDebugDumpContent
   NS_IMETHOD DumpContentModel();
 #endif
 
 protected:
   // If aCheckIfPresent is true, will only set an attribute in cases
   // when it's not already set.
@@ -2966,43 +2964,16 @@ HTMLContentSink::ProcessLINKTag(const ns
         }
       }
     }
   }
 
   return result;
 }
 
-/* 
- * Extends nsContentSink::ProcessMETATag to grab the 'viewport' meta tag. This
- * information is ignored by the generic content sink because it only stores
- * http-equiv meta tags.
- *
- * Initially implemented for bug #436083
- */
-nsresult
-HTMLContentSink::ProcessMETATag(nsIContent *aContent) {
-
-  /* Call the superclass method. */
-  nsContentSink::ProcessMETATag(aContent);
-
-  nsresult rv = NS_OK;
-
-  /* Look for the viewport meta tag. If we find it, process it and put the
-   * data into the document header. */
-  if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
-                            nsGkAtoms::viewport, eIgnoreCase)) {
-    nsAutoString value;
-    aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
-    rv = nsContentUtils::ProcessViewportInfo(mDocument, value);
-  }
-
-  return rv;
-}
-
 #ifdef DEBUG
 void
 HTMLContentSink::ForceReflow()
 {
   mCurrentContext->FlushTags();
 }
 #endif
 
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -136,16 +136,17 @@
 #include "nsIEditor.h"
 #include "nsNodeInfoManager.h"
 #include "nsIEditor.h"
 #include "nsIEditorDocShell.h"
 #include "nsIEditorStyleSheets.h"
 #include "nsIInlineSpellChecker.h"
 #include "nsRange.h"
 #include "mozAutoDocUpdate.h"
+#include "nsHtml5Module.h"
 
 #define NS_MAX_DOCUMENT_WRITE_DEPTH 20
 
 #define DETECTOR_CONTRACTID_MAX 127
 static char g_detector_contractid[DETECTOR_CONTRACTID_MAX + 1];
 static PRBool gInitDetector = PR_FALSE;
 static PRBool gPlugDetector = PR_FALSE;
 
@@ -645,25 +646,35 @@ nsresult
 nsHTMLDocument::StartDocumentLoad(const char* aCommand,
                                   nsIChannel* aChannel,
                                   nsILoadGroup* aLoadGroup,
                                   nsISupports* aContainer,
                                   nsIStreamListener **aDocListener,
                                   PRBool aReset,
                                   nsIContentSink* aSink)
 {
+  PRBool loadAsHtml5 = nsContentUtils::GetBoolPref("html5.enable", PR_TRUE);
+  if (aSink) {
+    loadAsHtml5 = PR_FALSE;
+  }
+
   nsCAutoString contentType;
   aChannel->GetContentType(contentType);
 
   if (contentType.Equals("application/xhtml+xml") &&
       (!aCommand || nsCRT::strcmp(aCommand, "view-source") != 0)) {
     // We're parsing XHTML as XML, remember that.
 
     mIsRegularHTML = PR_FALSE;
     mCompatMode = eCompatibility_FullStandards;
+    loadAsHtml5 = PR_FALSE;
+  }
+  
+  if (!(contentType.Equals("text/html") && aCommand && !nsCRT::strcmp(aCommand, "view"))) {
+    loadAsHtml5 = PR_FALSE;
   }
 #ifdef DEBUG
   else {
     NS_ASSERTION(mIsRegularHTML,
                  "Hey, someone forgot to reset mIsRegularHTML!!!");
   }
 #endif
 
@@ -700,18 +711,22 @@ nsHTMLDocument::StartDocumentLoad(const 
   if (cachingChan) {
     nsCOMPtr<nsISupports> cacheToken;
     cachingChan->GetCacheToken(getter_AddRefs(cacheToken));
     if (cacheToken)
       cacheDescriptor = do_QueryInterface(cacheToken);
   }
 
   if (needsParser) {
-    mParser = do_CreateInstance(kCParserCID, &rv);
-    NS_ENSURE_SUCCESS(rv, rv);
+    if (loadAsHtml5) {
+      mParser = nsHtml5Module::NewHtml5Parser();
+    } else {
+      mParser = do_CreateInstance(kCParserCID, &rv);
+      NS_ENSURE_SUCCESS(rv, rv);
+    }
   }
 
   PRInt32 textType = GET_BIDI_OPTION_TEXTTYPE(GetBidiOptions());
 
   // Look for the parent document.  Note that at this point we don't have our
   // content viewer set up yet, and therefore do not have a useful
   // mParentDocument.
 
@@ -916,32 +931,38 @@ nsHTMLDocument::StartDocumentLoad(const 
           charset.get(), charsetSource);
 #endif
     mParser->SetDocumentCharset(parserCharset, parserCharsetSource);
     mParser->SetCommand(aCommand);
 
     // create the content sink
     nsCOMPtr<nsIContentSink> sink;
 
-    if (aSink)
+    if (aSink) {
+      NS_ASSERTION((!loadAsHtml5), "Panic: We are loading as HTML5 and someone tries to set an external sink!");
       sink = aSink;
-    else {
+    } else {
       if (IsXHTML()) {
         nsCOMPtr<nsIXMLContentSink> xmlsink;
         rv = NS_NewXMLContentSink(getter_AddRefs(xmlsink), this, uri,
                                   docShell, aChannel);
 
         sink = xmlsink;
       } else {
-        nsCOMPtr<nsIHTMLContentSink> htmlsink;
-
-        rv = NS_NewHTMLContentSink(getter_AddRefs(htmlsink), this, uri,
-                                   docShell, aChannel);
-
-        sink = htmlsink;
+        if (loadAsHtml5) {
+          nsHtml5Module::Initialize(mParser, this, uri, docShell, aChannel);
+          sink = mParser->GetContentSink();
+        } else {
+          nsCOMPtr<nsIHTMLContentSink> htmlsink;
+
+          rv = NS_NewHTMLContentSink(getter_AddRefs(htmlsink), this, uri,
+                                     docShell, aChannel);
+
+          sink = htmlsink;
+        }
       }
       NS_ENSURE_SUCCESS(rv, rv);
 
       NS_ASSERTION(sink,
                    "null sink with successful result from factory method");
     }
 
     mParser->SetContentSink(sink);
@@ -1778,16 +1799,18 @@ nsresult
 nsHTMLDocument::OpenCommon(const nsACString& aContentType, PRBool aReplace)
 {
   if (IsXHTML()) {
     // No calling document.open() on XHTML
 
     return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
   }
 
+  PRBool loadAsHtml5 = nsContentUtils::GetBoolPref("html5.enable", PR_TRUE);
+
   nsresult rv = NS_OK;
 
   // If we already have a parser we ignore the document.open call.
   if (mParser) {
 
     return NS_OK;
   }
 
@@ -1924,16 +1947,33 @@ nsHTMLDocument::OpenCommon(const nsACStr
     SetIsInitialDocument(PR_FALSE);
 
     nsCOMPtr<nsIScriptGlobalObject> newScope(do_QueryReferent(mScopeObject));
     if (oldScope && newScope != oldScope) {
       nsContentUtils::ReparentContentWrappersInScope(oldScope, newScope);
     }
   }
 
+  if (loadAsHtml5) {
+    // Really zap all children (copied from nsDocument.cpp -- maybe factor into a method)
+    PRUint32 count = mChildren.ChildCount();
+    { // Scope for update
+      MOZ_AUTO_DOC_UPDATE(this, UPDATE_CONTENT_MODEL, PR_TRUE);    
+      for (PRInt32 i = PRInt32(count) - 1; i >= 0; i--) {
+        nsCOMPtr<nsIContent> content = mChildren.ChildAt(i);
+        // XXXbz this is backwards from how ContentRemoved normally works.  That
+        // is, usually it's dispatched after the content has been removed from
+        // the tree.
+        nsNodeUtils::ContentRemoved(this, content, i);
+        content->UnbindFromTree();
+        mChildren.RemoveChildAt(i);
+      }
+    }
+  }
+
   // XXX This is a nasty workaround for a scrollbar code bug
   // (http://bugzilla.mozilla.org/show_bug.cgi?id=55334).
 
   // Hold on to our root element
   nsCOMPtr<nsIContent> root = GetRootContent();
 
   if (root) {
     PRInt32 rootIndex = mChildren.IndexOfChild(root);
@@ -1993,36 +2033,45 @@ nsHTMLDocument::OpenCommon(const nsACStr
     TurnEditingOff();
     EditingStateChanged();
   }
 
   // Store the security info of the caller now that we're done
   // resetting the document.
   mSecurityInfo = securityInfo;
 
-  mParser = do_CreateInstance(kCParserCID, &rv);
+  if (loadAsHtml5) {
+    mParser = nsHtml5Module::NewHtml5Parser();
+    rv = NS_OK;
+  } else {
+    mParser = do_CreateInstance(kCParserCID, &rv);  
+  }
 
   // This will be propagated to the parser when someone actually calls write()
   mContentType = aContentType;
 
   mWriteState = eDocumentOpened;
 
   if (NS_SUCCEEDED(rv)) {
-    nsCOMPtr<nsIHTMLContentSink> sink;
-
-    rv = NS_NewHTMLContentSink(getter_AddRefs(sink), this, uri, shell,
-                               channel);
-    if (NS_FAILED(rv)) {
-      // Don't use a parser without a content sink.
-      mParser = nsnull;
-      mWriteState = eNotWriting;
-      return rv;
+    if (loadAsHtml5) {
+      nsHtml5Module::Initialize(mParser, this, uri, shell, channel);
+    } else {
+      nsCOMPtr<nsIHTMLContentSink> sink;
+
+      rv = NS_NewHTMLContentSink(getter_AddRefs(sink), this, uri, shell,
+                                 channel);
+      if (NS_FAILED(rv)) {
+        // Don't use a parser without a content sink.
+        mParser = nsnull;
+        mWriteState = eNotWriting;
+        return rv;
+      }
+
+      mParser->SetContentSink(sink);
     }
-
-    mParser->SetContentSink(sink);
   }
 
   // Prepare the docshell and the document viewer for the impending
   // out of band document.write()
   shell->PrepareForNewContentModel();
 
   // Now check whether we were opened with a "replace" argument.  If
   // so, we need to tell the docshell to not create a new history
new file mode 100644
--- /dev/null
+++ b/content/html/parser/Makefile.in
@@ -0,0 +1,52 @@
+#
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH		= ../../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS		= public src
+
+# ifdef ENABLE_TESTS
+# DIRS		+= test
+# endif
+
+include $(topsrcdir)/config/rules.mk
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/public/Makefile.in
@@ -0,0 +1,51 @@
+#
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH		= ../../../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE		= html5
+
+EXPORTS		= \
+    nsHtml5Module.h \
+		$(NULL)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/content/html/parser/public/nsHtml5Module.h
@@ -0,0 +1,52 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is HTML Parser C++ Translator code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Henri Sivonen <hsivonen@iki.fi>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef nsHtml5Module_h__
+#define nsHtml5Module_h__
+
+#include "nsIParser.h"
+
+class nsHtml5Module
+{
+  public:
+    static void InitializeStatics();
+    static void ReleaseStatics();
+    static already_AddRefed<nsIParser> NewHtml5Parser();
+    static nsresult Initialize(nsIParser* aParser, nsIDocument* aDoc, nsIURI* aURI, nsISupports* aContainer, nsIChannel* aChannel);
+};
+
+#endif // nsHtml5Module_h__
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/Makefile.in
@@ -0,0 +1,89 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH     = ../../../..
+topsrcdir = @top_srcdir@
+srcdir    = @srcdir@
+VPATH     = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE		= html5
+LIBRARY_NAME	= html5p
+LIBXUL_LIBRARY	= 1
+
+REQUIRES	= \
+    gfx \
+    thebes \
+    locale \
+    js \
+    pref \
+		necko \
+		xpcom \
+		string \
+		htmlparser \
+		content \
+		layout \
+		widget \
+		dom \
+		uconv \
+		xpconnect \
+		util \
+		$(NULL)
+
+CPPSRCS		= \
+    nsHtml5Atoms.cpp \
+		nsHtml5Parser.cpp \
+    nsHtml5AttributeName.cpp \
+    nsHtml5ElementName.cpp \
+    nsHtml5HtmlAttributes.cpp \
+    nsHtml5StackNode.cpp \
+    nsHtml5UTF16Buffer.cpp \
+    nsHtml5NamedCharacters.cpp \
+    nsHtml5StringLiterals.cpp \
+    nsHtml5Tokenizer.cpp \
+    nsHtml5TreeBuilder.cpp \
+    nsHtml5Portability.cpp \
+    nsHtml5Module.cpp \
+    $(NULL)
+
+FORCE_STATIC_LIB = 1
+
+include $(topsrcdir)/config/rules.mk
+
+INCLUDES	+= \
+		-I$(srcdir)/../../../base/src \
+		$(NULL)
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/jArray.h
@@ -0,0 +1,103 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is HTML Parser C++ Translator code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Henri Sivonen <hsivonen@iki.fi>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef jArray_h__
+#define jArray_h__
+
+#define J_ARRAY_STATIC(T, L, arr) \
+  jArray<T,L>( (arr), (sizeof(arr)/sizeof(arr[0])) ) 
+
+template<class T, class L> 
+class jArray {
+  private:
+    T* arr;
+  public:
+    L length;
+    jArray(T* const a, L const len);
+    jArray(L const len);
+    jArray(const jArray<T,L>& other);
+    jArray();
+    operator T*() { return arr; }
+    T& operator[] (L const index) { return arr[index]; }
+    void release() { delete[] arr; }
+    L binarySearch(T const elem);
+};
+
+template<class T, class L>
+jArray<T,L>::jArray(T* const a, L const len)
+       : arr(a), length(len)
+{
+}
+
+template<class T, class L>
+jArray<T,L>::jArray(L const len)
+       : arr(new T[len]), length(len)
+{
+}
+
+template<class T, class L>
+jArray<T,L>::jArray(const jArray<T,L>& other)
+       : arr(other.arr), length(other.length)
+{
+}
+
+template<class T, class L>
+jArray<T,L>::jArray()
+       : arr(0), length(0)
+{
+}
+
+template<class T, class L>
+L
+jArray<T,L>::binarySearch(T const elem)
+{
+  L lo = 0;
+  L hi = length - 1;
+  while (lo <= hi) {
+    L mid = (lo + hi) / 2;
+    if (arr[mid] > elem) {
+      hi = mid - 1;
+    } else if (arr[mid] < elem) {
+      lo = mid + 1;
+    } else {
+      return mid;
+    }
+  }
+  return -1;
+}
+
+#endif // jArray_h__
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5ArrayCopy.h
@@ -0,0 +1,102 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is HTML Parser C++ Translator code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Henri Sivonen <hsivonen@iki.fi>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef nsHtml5ArrayCopy_h__
+#define nsHtml5ArrayCopy_h__
+
+#include "prtypes.h"
+
+class nsString;
+class nsHtml5StackNode;
+class nsHtml5AttributeName;
+
+// Unfortunately, these don't work as template functions because the arguments
+// would need coercion from a template class, which complicates things.
+
+class nsHtml5ArrayCopy {
+  public: 
+    static
+    inline
+    void
+    arraycopy(PRUnichar* source, PRInt32 sourceOffset, PRUnichar* target, PRInt32 targetOffset, PRInt32 length)
+    {
+      memcpy(&(target[targetOffset]), &(source[sourceOffset]), length * sizeof(PRUnichar));
+    }
+    
+    static
+    inline
+    void
+    arraycopy(PRUnichar* source, PRUnichar* target, PRInt32 length)
+    {
+      memcpy(target, source, length * sizeof(PRUnichar));
+    }
+    
+    static
+    inline
+    void
+    arraycopy(nsString** source, nsString** target, PRInt32 length)
+    {
+      memcpy(target, source, length * sizeof(nsString*));
+    }
+    
+    static
+    inline
+    void
+    arraycopy(nsHtml5AttributeName** source, nsHtml5AttributeName** target, PRInt32 length)
+    {
+      memcpy(target, source, length * sizeof(nsHtml5AttributeName*));
+    }
+    
+    static
+    inline
+    void
+    arraycopy(nsHtml5StackNode** source, nsHtml5StackNode** target, PRInt32 length)
+    {
+      memcpy(target, source, length * sizeof(nsHtml5StackNode*));
+    }
+    
+    static
+    inline
+    void
+    arraycopy(nsHtml5StackNode** arr, PRInt32 sourceOffset, PRInt32 targetOffset, PRInt32 length)
+    {
+      memmove(&(arr[targetOffset]), &(arr[sourceOffset]), length * sizeof(nsHtml5StackNode*));
+    }
+  
+};
+
+#endif // nsHtml5ArrayCopy_h__
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5AtomList.h
@@ -0,0 +1,1049 @@
+HTML5_ATOM(emptystring, "")
+HTML5_ATOM(title, "title")
+HTML5_ATOM(textarea, "textarea")
+HTML5_ATOM(style, "style")
+HTML5_ATOM(script, "script")
+HTML5_ATOM(xmp, "xmp")
+HTML5_ATOM(iframe, "iframe")
+HTML5_ATOM(noembed, "noembed")
+HTML5_ATOM(noframes, "noframes")
+HTML5_ATOM(noscript, "noscript")
+HTML5_ATOM(plaintext, "plaintext")
+HTML5_ATOM(table, "table")
+HTML5_ATOM(caption, "caption")
+HTML5_ATOM(p, "p")
+HTML5_ATOM(address, "address")
+HTML5_ATOM(div, "div")
+HTML5_ATOM(a, "a")
+HTML5_ATOM(nobr, "nobr")
+HTML5_ATOM(button, "button")
+HTML5_ATOM(input, "input")
+HTML5_ATOM(option, "option")
+HTML5_ATOM(ruby, "ruby")
+HTML5_ATOM(optgroup, "optgroup")
+HTML5_ATOM(frameset, "frameset")
+HTML5_ATOM(select, "select")
+HTML5_ATOM(td, "td")
+HTML5_ATOM(th, "th")
+HTML5_ATOM(tr, "tr")
+HTML5_ATOM(tbody, "tbody")
+HTML5_ATOM(thead, "thead")
+HTML5_ATOM(tfoot, "tfoot")
+HTML5_ATOM(colgroup, "colgroup")
+HTML5_ATOM(head, "head")
+HTML5_ATOM(body, "body")
+HTML5_ATOM(html, "html")
+HTML5_ATOM(form, "form")
+HTML5_ATOM(xmlns, "xmlns")
+HTML5_ATOM(xlink, "xlink")
+HTML5_ATOM(xml, "xml")
+HTML5_ATOM(d, "d")
+HTML5_ATOM(k, "k")
+HTML5_ATOM(r, "r")
+HTML5_ATOM(x, "x")
+HTML5_ATOM(y, "y")
+HTML5_ATOM(z, "z")
+HTML5_ATOM(by, "by")
+HTML5_ATOM(cx, "cx")
+HTML5_ATOM(cy, "cy")
+HTML5_ATOM(dx, "dx")
+HTML5_ATOM(dy, "dy")
+HTML5_ATOM(g2, "g2")
+HTML5_ATOM(g1, "g1")
+HTML5_ATOM(fx, "fx")
+HTML5_ATOM(fy, "fy")
+HTML5_ATOM(k4, "k4")
+HTML5_ATOM(k2, "k2")
+HTML5_ATOM(k3, "k3")
+HTML5_ATOM(k1, "k1")
+HTML5_ATOM(id, "id")
+HTML5_ATOM(in, "in")
+HTML5_ATOM(u2, "u2")
+HTML5_ATOM(u1, "u1")
+HTML5_ATOM(rt, "rt")
+HTML5_ATOM(rx, "rx")
+HTML5_ATOM(ry, "ry")
+HTML5_ATOM(to, "to")
+HTML5_ATOM(y2, "y2")
+HTML5_ATOM(y1, "y1")
+HTML5_ATOM(x1, "x1")
+HTML5_ATOM(x2, "x2")
+HTML5_ATOM(alt, "alt")
+HTML5_ATOM(dir, "dir")
+HTML5_ATOM(dur, "dur")
+HTML5_ATOM(end, "end")
+HTML5_ATOM(for_, "for")
+HTML5_ATOM(in2, "in2")
+HTML5_ATOM(max, "max")
+HTML5_ATOM(min, "min")
+HTML5_ATOM(low, "low")
+HTML5_ATOM(rel, "rel")
+HTML5_ATOM(rev, "rev")
+HTML5_ATOM(src, "src")
+HTML5_ATOM(axis, "axis")
+HTML5_ATOM(abbr, "abbr")
+HTML5_ATOM(bbox, "bbox")
+HTML5_ATOM(cite, "cite")
+HTML5_ATOM(code, "code")
+HTML5_ATOM(bias, "bias")
+HTML5_ATOM(cols, "cols")
+HTML5_ATOM(clip, "clip")
+HTML5_ATOM(char_, "char")
+HTML5_ATOM(base, "base")
+HTML5_ATOM(edge, "edge")
+HTML5_ATOM(data, "data")
+HTML5_ATOM(fill, "fill")
+HTML5_ATOM(from, "from")
+HTML5_ATOM(face, "face")
+HTML5_ATOM(high, "high")
+HTML5_ATOM(href, "href")
+HTML5_ATOM(open, "open")
+HTML5_ATOM(icon, "icon")
+HTML5_ATOM(name, "name")
+HTML5_ATOM(mode, "mode")
+HTML5_ATOM(mask, "mask")
+HTML5_ATOM(link, "link")
+HTML5_ATOM(lang, "lang")
+HTML5_ATOM(list, "list")
+HTML5_ATOM(type, "type")
+HTML5_ATOM(when, "when")
+HTML5_ATOM(wrap, "wrap")
+HTML5_ATOM(text, "text")
+HTML5_ATOM(path, "path")
+HTML5_ATOM(ping, "ping")
+HTML5_ATOM(refx, "refx")
+HTML5_ATOM(refX, "refX")
+HTML5_ATOM(refy, "refy")
+HTML5_ATOM(refY, "refY")
+HTML5_ATOM(size, "size")
+HTML5_ATOM(seed, "seed")
+HTML5_ATOM(rows, "rows")
+HTML5_ATOM(span, "span")
+HTML5_ATOM(step, "step")
+HTML5_ATOM(role, "role")
+HTML5_ATOM(xref, "xref")
+HTML5_ATOM(async, "async")
+HTML5_ATOM(alink, "alink")
+HTML5_ATOM(align, "align")
+HTML5_ATOM(close, "close")
+HTML5_ATOM(color, "color")
+HTML5_ATOM(class_, "class")
+HTML5_ATOM(clear, "clear")
+HTML5_ATOM(begin, "begin")
+HTML5_ATOM(depth, "depth")
+HTML5_ATOM(defer, "defer")
+HTML5_ATOM(fence, "fence")
+HTML5_ATOM(frame, "frame")
+HTML5_ATOM(ismap, "ismap")
+HTML5_ATOM(onend, "onend")
+HTML5_ATOM(index, "index")
+HTML5_ATOM(order, "order")
+HTML5_ATOM(other, "other")
+HTML5_ATOM(oncut, "oncut")
+HTML5_ATOM(nargs, "nargs")
+HTML5_ATOM(media, "media")
+HTML5_ATOM(label, "label")
+HTML5_ATOM(local, "local")
+HTML5_ATOM(width, "width")
+HTML5_ATOM(vlink, "vlink")
+HTML5_ATOM(value, "value")
+HTML5_ATOM(slope, "slope")
+HTML5_ATOM(shape, "shape")
+HTML5_ATOM(scope, "scope")
+HTML5_ATOM(scale, "scale")
+HTML5_ATOM(speed, "speed")
+HTML5_ATOM(rules, "rules")
+HTML5_ATOM(stemh, "stemh")
+HTML5_ATOM(stemv, "stemv")
+HTML5_ATOM(start, "start")
+HTML5_ATOM(accept, "accept")
+HTML5_ATOM(accent, "accent")
+HTML5_ATOM(ascent, "ascent")
+HTML5_ATOM(active, "active")
+HTML5_ATOM(altimg, "altimg")
+HTML5_ATOM(action, "action")
+HTML5_ATOM(border, "border")
+HTML5_ATOM(cursor, "cursor")
+HTML5_ATOM(coords, "coords")
+HTML5_ATOM(filter, "filter")
+HTML5_ATOM(format, "format")
+HTML5_ATOM(hidden, "hidden")
+HTML5_ATOM(hspace, "hspace")
+HTML5_ATOM(height, "height")
+HTML5_ATOM(onmove, "onmove")
+HTML5_ATOM(onload, "onload")
+HTML5_ATOM(ondrag, "ondrag")
+HTML5_ATOM(origin, "origin")
+HTML5_ATOM(onzoom, "onzoom")
+HTML5_ATOM(onhelp, "onhelp")
+HTML5_ATOM(onstop, "onstop")
+HTML5_ATOM(ondrop, "ondrop")
+HTML5_ATOM(onblur, "onblur")
+HTML5_ATOM(object, "object")
+HTML5_ATOM(offset, "offset")
+HTML5_ATOM(orient, "orient")
+HTML5_ATOM(oncopy, "oncopy")
+HTML5_ATOM(nowrap, "nowrap")
+HTML5_ATOM(nohref, "nohref")
+HTML5_ATOM(macros, "macros")
+HTML5_ATOM(method, "method")
+HTML5_ATOM(lowsrc, "lowsrc")
+HTML5_ATOM(lspace, "lspace")
+HTML5_ATOM(lquote, "lquote")
+HTML5_ATOM(usemap, "usemap")
+HTML5_ATOM(widths, "widths")
+HTML5_ATOM(target, "target")
+HTML5_ATOM(values, "values")
+HTML5_ATOM(valign, "valign")
+HTML5_ATOM(vspace, "vspace")
+HTML5_ATOM(poster, "poster")
+HTML5_ATOM(points, "points")
+HTML5_ATOM(prompt, "prompt")
+HTML5_ATOM(scoped, "scoped")
+HTML5_ATOM(string, "string")
+HTML5_ATOM(scheme, "scheme")
+HTML5_ATOM(stroke, "stroke")
+HTML5_ATOM(radius, "radius")
+HTML5_ATOM(result, "result")
+HTML5_ATOM(repeat, "repeat")
+HTML5_ATOM(rspace, "rspace")
+HTML5_ATOM(rotate, "rotate")
+HTML5_ATOM(rquote, "rquote")
+HTML5_ATOM(alttext, "alttext")
+HTML5_ATOM(archive, "archive")
+HTML5_ATOM(azimuth, "azimuth")
+HTML5_ATOM(closure, "closure")
+HTML5_ATOM(checked, "checked")
+HTML5_ATOM(classid, "classid")
+HTML5_ATOM(charoff, "charoff")
+HTML5_ATOM(bgcolor, "bgcolor")
+HTML5_ATOM(colspan, "colspan")
+HTML5_ATOM(charset, "charset")
+HTML5_ATOM(compact, "compact")
+HTML5_ATOM(content, "content")
+HTML5_ATOM(enctype, "enctype")
+HTML5_ATOM(datasrc, "datasrc")
+HTML5_ATOM(datafld, "datafld")
+HTML5_ATOM(declare, "declare")
+HTML5_ATOM(display, "display")
+HTML5_ATOM(divisor, "divisor")
+HTML5_ATOM(default_, "default")
+HTML5_ATOM(descent, "descent")
+HTML5_ATOM(kerning, "kerning")
+HTML5_ATOM(hanging, "hanging")
+HTML5_ATOM(headers, "headers")
+HTML5_ATOM(onpaste, "onpaste")
+HTML5_ATOM(onclick, "onclick")
+HTML5_ATOM(optimum, "optimum")
+HTML5_ATOM(onbegin, "onbegin")
+HTML5_ATOM(onkeyup, "onkeyup")
+HTML5_ATOM(onfocus, "onfocus")
+HTML5_ATOM(onerror, "onerror")
+HTML5_ATOM(oninput, "oninput")
+HTML5_ATOM(onabort, "onabort")
+HTML5_ATOM(onstart, "onstart")
+HTML5_ATOM(onreset, "onreset")
+HTML5_ATOM(opacity, "opacity")
+HTML5_ATOM(noshade, "noshade")
+HTML5_ATOM(minsize, "minsize")
+HTML5_ATOM(maxsize, "maxsize")
+HTML5_ATOM(loopend, "loopend")
+HTML5_ATOM(largeop, "largeop")
+HTML5_ATOM(unicode, "unicode")
+HTML5_ATOM(targetx, "targetx")
+HTML5_ATOM(targetX, "targetX")
+HTML5_ATOM(targety, "targety")
+HTML5_ATOM(targetY, "targetY")
+HTML5_ATOM(viewbox, "viewbox")
+HTML5_ATOM(viewBox, "viewBox")
+HTML5_ATOM(version, "version")
+HTML5_ATOM(pattern, "pattern")
+HTML5_ATOM(profile, "profile")
+HTML5_ATOM(spacing, "spacing")
+HTML5_ATOM(restart, "restart")
+HTML5_ATOM(rowspan, "rowspan")
+HTML5_ATOM(sandbox, "sandbox")
+HTML5_ATOM(summary, "summary")
+HTML5_ATOM(standby, "standby")
+HTML5_ATOM(replace, "replace")
+HTML5_ATOM(autoplay, "autoplay")
+HTML5_ATOM(additive, "additive")
+HTML5_ATOM(calcmode, "calcmode")
+HTML5_ATOM(calcMode, "calcMode")
+HTML5_ATOM(codetype, "codetype")
+HTML5_ATOM(codebase, "codebase")
+HTML5_ATOM(controls, "controls")
+HTML5_ATOM(bevelled, "bevelled")
+HTML5_ATOM(baseline, "baseline")
+HTML5_ATOM(exponent, "exponent")
+HTML5_ATOM(edgemode, "edgemode")
+HTML5_ATOM(edgeMode, "edgeMode")
+HTML5_ATOM(encoding, "encoding")
+HTML5_ATOM(glyphref, "glyphref")
+HTML5_ATOM(glyphRef, "glyphRef")
+HTML5_ATOM(datetime, "datetime")
+HTML5_ATOM(disabled, "disabled")
+HTML5_ATOM(fontsize, "fontsize")
+HTML5_ATOM(keytimes, "keytimes")
+HTML5_ATOM(keyTimes, "keyTimes")
+HTML5_ATOM(panose_1, "panose-1")
+HTML5_ATOM(hreflang, "hreflang")
+HTML5_ATOM(onresize, "onresize")
+HTML5_ATOM(onchange, "onchange")
+HTML5_ATOM(onbounce, "onbounce")
+HTML5_ATOM(onunload, "onunload")
+HTML5_ATOM(onfinish, "onfinish")
+HTML5_ATOM(onscroll, "onscroll")
+HTML5_ATOM(operator_, "operator")
+HTML5_ATOM(overflow, "overflow")
+HTML5_ATOM(onsubmit, "onsubmit")
+HTML5_ATOM(onrepeat, "onrepeat")
+HTML5_ATOM(onselect, "onselect")
+HTML5_ATOM(notation, "notation")
+HTML5_ATOM(noresize, "noresize")
+HTML5_ATOM(manifest, "manifest")
+HTML5_ATOM(mathsize, "mathsize")
+HTML5_ATOM(multiple, "multiple")
+HTML5_ATOM(longdesc, "longdesc")
+HTML5_ATOM(language, "language")
+HTML5_ATOM(template_, "template")
+HTML5_ATOM(tabindex, "tabindex")
+HTML5_ATOM(readonly, "readonly")
+HTML5_ATOM(selected, "selected")
+HTML5_ATOM(rowlines, "rowlines")
+HTML5_ATOM(seamless, "seamless")
+HTML5_ATOM(rowalign, "rowalign")
+HTML5_ATOM(stretchy, "stretchy")
+HTML5_ATOM(required, "required")
+HTML5_ATOM(xml_base, "xml:base")
+HTML5_ATOM(xml_lang, "xml:lang")
+HTML5_ATOM(x_height, "x-height")
+HTML5_ATOM(aria_owns, "aria-owns")
+HTML5_ATOM(autofocus, "autofocus")
+HTML5_ATOM(aria_sort, "aria-sort")
+HTML5_ATOM(accesskey, "accesskey")
+HTML5_ATOM(aria_busy, "aria-busy")
+HTML5_ATOM(aria_grab, "aria-grab")
+HTML5_ATOM(amplitude, "amplitude")
+HTML5_ATOM(aria_live, "aria-live")
+HTML5_ATOM(clip_rule, "clip-rule")
+HTML5_ATOM(clip_path, "clip-path")
+HTML5_ATOM(equalrows, "equalrows")
+HTML5_ATOM(elevation, "elevation")
+HTML5_ATOM(direction, "direction")
+HTML5_ATOM(draggable, "draggable")
+HTML5_ATOM(filterres, "filterres")
+HTML5_ATOM(filterRes, "filterRes")
+HTML5_ATOM(fill_rule, "fill-rule")
+HTML5_ATOM(fontstyle, "fontstyle")
+HTML5_ATOM(font_size, "font-size")
+HTML5_ATOM(keypoints, "keypoints")
+HTML5_ATOM(keyPoints, "keyPoints")
+HTML5_ATOM(hidefocus, "hidefocus")
+HTML5_ATOM(onmessage, "onmessage")
+HTML5_ATOM(intercept, "intercept")
+HTML5_ATOM(ondragend, "ondragend")
+HTML5_ATOM(onmoveend, "onmoveend")
+HTML5_ATOM(oninvalid, "oninvalid")
+HTML5_ATOM(onkeydown, "onkeydown")
+HTML5_ATOM(onfocusin, "onfocusin")
+HTML5_ATOM(onmouseup, "onmouseup")
+HTML5_ATOM(inputmode, "inputmode")
+HTML5_ATOM(onrowexit, "onrowexit")
+HTML5_ATOM(mathcolor, "mathcolor")
+HTML5_ATOM(maskunits, "maskunits")
+HTML5_ATOM(maskUnits, "maskUnits")
+HTML5_ATOM(maxlength, "maxlength")
+HTML5_ATOM(linebreak, "linebreak")
+HTML5_ATOM(loopstart, "loopstart")
+HTML5_ATOM(transform, "transform")
+HTML5_ATOM(v_hanging, "v-hanging")
+HTML5_ATOM(valuetype, "valuetype")
+HTML5_ATOM(pointsatz, "pointsatz")
+HTML5_ATOM(pointsAtZ, "pointsAtZ")
+HTML5_ATOM(pointsatx, "pointsatx")
+HTML5_ATOM(pointsAtX, "pointsAtX")
+HTML5_ATOM(pointsaty, "pointsaty")
+HTML5_ATOM(pointsAtY, "pointsAtY")
+HTML5_ATOM(playcount, "playcount")
+HTML5_ATOM(symmetric, "symmetric")
+HTML5_ATOM(scrolling, "scrolling")
+HTML5_ATOM(repeatdur, "repeatdur")
+HTML5_ATOM(repeatDur, "repeatDur")
+HTML5_ATOM(selection, "selection")
+HTML5_ATOM(separator, "separator")
+HTML5_ATOM(xml_space, "xml:space")
+HTML5_ATOM(space, "space")
+HTML5_ATOM(autosubmit, "autosubmit")
+HTML5_ATOM(alphabetic, "alphabetic")
+HTML5_ATOM(actiontype, "actiontype")
+HTML5_ATOM(accumulate, "accumulate")
+HTML5_ATOM(aria_level, "aria-level")
+HTML5_ATOM(columnspan, "columnspan")
+HTML5_ATOM(cap_height, "cap-height")
+HTML5_ATOM(background, "background")
+HTML5_ATOM(glyph_name, "glyph-name")
+HTML5_ATOM(groupalign, "groupalign")
+HTML5_ATOM(fontfamily, "fontfamily")
+HTML5_ATOM(fontweight, "fontweight")
+HTML5_ATOM(font_style, "font-style")
+HTML5_ATOM(keysplines, "keysplines")
+HTML5_ATOM(keySplines, "keySplines")
+HTML5_ATOM(http_equiv, "http-equiv")
+HTML5_ATOM(onactivate, "onactivate")
+HTML5_ATOM(occurrence, "occurrence")
+HTML5_ATOM(irrelevant, "irrelevant")
+HTML5_ATOM(ondblclick, "ondblclick")
+HTML5_ATOM(ondragdrop, "ondragdrop")
+HTML5_ATOM(onkeypress, "onkeypress")
+HTML5_ATOM(onrowenter, "onrowenter")
+HTML5_ATOM(ondragover, "ondragover")
+HTML5_ATOM(onfocusout, "onfocusout")
+HTML5_ATOM(onmouseout, "onmouseout")
+HTML5_ATOM(numoctaves, "numoctaves")
+HTML5_ATOM(numOctaves, "numOctaves")
+HTML5_ATOM(marker_mid, "marker-mid")
+HTML5_ATOM(marker_end, "marker-end")
+HTML5_ATOM(textlength, "textlength")
+HTML5_ATOM(textLength, "textLength")
+HTML5_ATOM(visibility, "visibility")
+HTML5_ATOM(viewtarget, "viewtarget")
+HTML5_ATOM(viewTarget, "viewTarget")
+HTML5_ATOM(vert_adv_y, "vert-adv-y")
+HTML5_ATOM(pathlength, "pathlength")
+HTML5_ATOM(pathLength, "pathLength")
+HTML5_ATOM(repeat_max, "repeat-max")
+HTML5_ATOM(radiogroup, "radiogroup")
+HTML5_ATOM(stop_color, "stop-color")
+HTML5_ATOM(separators, "separators")
+HTML5_ATOM(repeat_min, "repeat-min")
+HTML5_ATOM(rowspacing, "rowspacing")
+HTML5_ATOM(zoomandpan, "zoomandpan")
+HTML5_ATOM(zoomAndPan, "zoomAndPan")
+HTML5_ATOM(xlink_type, "xlink:type")
+HTML5_ATOM(xlink_role, "xlink:role")
+HTML5_ATOM(xlink_href, "xlink:href")
+HTML5_ATOM(xlink_show, "xlink:show")
+HTML5_ATOM(show, "show")
+HTML5_ATOM(accentunder, "accentunder")
+HTML5_ATOM(aria_secret, "aria-secret")
+HTML5_ATOM(aria_atomic, "aria-atomic")
+HTML5_ATOM(aria_hidden, "aria-hidden")
+HTML5_ATOM(aria_flowto, "aria-flowto")
+HTML5_ATOM(arabic_form, "arabic-form")
+HTML5_ATOM(cellpadding, "cellpadding")
+HTML5_ATOM(cellspacing, "cellspacing")
+HTML5_ATOM(columnwidth, "columnwidth")
+HTML5_ATOM(columnalign, "columnalign")
+HTML5_ATOM(columnlines, "columnlines")
+HTML5_ATOM(contextmenu, "contextmenu")
+HTML5_ATOM(baseprofile, "baseprofile")
+HTML5_ATOM(baseProfile, "baseProfile")
+HTML5_ATOM(font_family, "font-family")
+HTML5_ATOM(frameborder, "frameborder")
+HTML5_ATOM(filterunits, "filterunits")
+HTML5_ATOM(filterUnits, "filterUnits")
+HTML5_ATOM(flood_color, "flood-color")
+HTML5_ATOM(font_weight, "font-weight")
+HTML5_ATOM(horiz_adv_x, "horiz-adv-x")
+HTML5_ATOM(ondragleave, "ondragleave")
+HTML5_ATOM(onmousemove, "onmousemove")
+HTML5_ATOM(orientation, "orientation")
+HTML5_ATOM(onmousedown, "onmousedown")
+HTML5_ATOM(onmouseover, "onmouseover")
+HTML5_ATOM(ondragenter, "ondragenter")
+HTML5_ATOM(ideographic, "ideographic")
+HTML5_ATOM(onbeforecut, "onbeforecut")
+HTML5_ATOM(onforminput, "onforminput")
+HTML5_ATOM(ondragstart, "ondragstart")
+HTML5_ATOM(onmovestart, "onmovestart")
+HTML5_ATOM(markerunits, "markerunits")
+HTML5_ATOM(markerUnits, "markerUnits")
+HTML5_ATOM(mathvariant, "mathvariant")
+HTML5_ATOM(marginwidth, "marginwidth")
+HTML5_ATOM(markerwidth, "markerwidth")
+HTML5_ATOM(markerWidth, "markerWidth")
+HTML5_ATOM(text_anchor, "text-anchor")
+HTML5_ATOM(tablevalues, "tablevalues")
+HTML5_ATOM(tableValues, "tableValues")
+HTML5_ATOM(scriptlevel, "scriptlevel")
+HTML5_ATOM(repeatcount, "repeatcount")
+HTML5_ATOM(repeatCount, "repeatCount")
+HTML5_ATOM(stitchtiles, "stitchtiles")
+HTML5_ATOM(stitchTiles, "stitchTiles")
+HTML5_ATOM(startoffset, "startoffset")
+HTML5_ATOM(startOffset, "startOffset")
+HTML5_ATOM(scrolldelay, "scrolldelay")
+HTML5_ATOM(xmlns_xlink, "xmlns:xlink")
+HTML5_ATOM(xlink_title, "xlink:title")
+HTML5_ATOM(aria_invalid, "aria-invalid")
+HTML5_ATOM(aria_pressed, "aria-pressed")
+HTML5_ATOM(aria_checked, "aria-checked")
+HTML5_ATOM(autocomplete, "autocomplete")
+HTML5_ATOM(aria_setsize, "aria-setsize")
+HTML5_ATOM(aria_channel, "aria-channel")
+HTML5_ATOM(equalcolumns, "equalcolumns")
+HTML5_ATOM(displaystyle, "displaystyle")
+HTML5_ATOM(dataformatas, "dataformatas")
+HTML5_ATOM(fill_opacity, "fill-opacity")
+HTML5_ATOM(font_variant, "font-variant")
+HTML5_ATOM(font_stretch, "font-stretch")
+HTML5_ATOM(framespacing, "framespacing")
+HTML5_ATOM(kernelmatrix, "kernelmatrix")
+HTML5_ATOM(kernelMatrix, "kernelMatrix")
+HTML5_ATOM(ondeactivate, "ondeactivate")
+HTML5_ATOM(onrowsdelete, "onrowsdelete")
+HTML5_ATOM(onmouseleave, "onmouseleave")
+HTML5_ATOM(onformchange, "onformchange")
+HTML5_ATOM(oncellchange, "oncellchange")
+HTML5_ATOM(onmousewheel, "onmousewheel")
+HTML5_ATOM(onmouseenter, "onmouseenter")
+HTML5_ATOM(onafterprint, "onafterprint")
+HTML5_ATOM(onbeforecopy, "onbeforecopy")
+HTML5_ATOM(marginheight, "marginheight")
+HTML5_ATOM(markerheight, "markerheight")
+HTML5_ATOM(markerHeight, "markerHeight")
+HTML5_ATOM(marker_start, "marker-start")
+HTML5_ATOM(mathematical, "mathematical")
+HTML5_ATOM(lengthadjust, "lengthadjust")
+HTML5_ATOM(lengthAdjust, "lengthAdjust")
+HTML5_ATOM(unselectable, "unselectable")
+HTML5_ATOM(unicode_bidi, "unicode-bidi")
+HTML5_ATOM(units_per_em, "units-per-em")
+HTML5_ATOM(word_spacing, "word-spacing")
+HTML5_ATOM(writing_mode, "writing-mode")
+HTML5_ATOM(v_alphabetic, "v-alphabetic")
+HTML5_ATOM(patternunits, "patternunits")
+HTML5_ATOM(patternUnits, "patternUnits")
+HTML5_ATOM(spreadmethod, "spreadmethod")
+HTML5_ATOM(spreadMethod, "spreadMethod")
+HTML5_ATOM(surfacescale, "surfacescale")
+HTML5_ATOM(surfaceScale, "surfaceScale")
+HTML5_ATOM(stroke_width, "stroke-width")
+HTML5_ATOM(repeat_start, "repeat-start")
+HTML5_ATOM(stddeviation, "stddeviation")
+HTML5_ATOM(stdDeviation, "stdDeviation")
+HTML5_ATOM(stop_opacity, "stop-opacity")
+HTML5_ATOM(aria_controls, "aria-controls")
+HTML5_ATOM(aria_haspopup, "aria-haspopup")
+HTML5_ATOM(accent_height, "accent-height")
+HTML5_ATOM(aria_valuenow, "aria-valuenow")
+HTML5_ATOM(aria_relevant, "aria-relevant")
+HTML5_ATOM(aria_posinset, "aria-posinset")
+HTML5_ATOM(aria_valuemax, "aria-valuemax")
+HTML5_ATOM(aria_readonly, "aria-readonly")
+HTML5_ATOM(aria_selected, "aria-selected")
+HTML5_ATOM(aria_required, "aria-required")
+HTML5_ATOM(aria_expanded, "aria-expanded")
+HTML5_ATOM(aria_disabled, "aria-disabled")
+HTML5_ATOM(attributetype, "attributetype")
+HTML5_ATOM(attributeType, "attributeType")
+HTML5_ATOM(attributename, "attributename")
+HTML5_ATOM(attributeName, "attributeName")
+HTML5_ATOM(aria_datatype, "aria-datatype")
+HTML5_ATOM(aria_valuemin, "aria-valuemin")
+HTML5_ATOM(basefrequency, "basefrequency")
+HTML5_ATOM(baseFrequency, "baseFrequency")
+HTML5_ATOM(columnspacing, "columnspacing")
+HTML5_ATOM(color_profile, "color-profile")
+HTML5_ATOM(clippathunits, "clippathunits")
+HTML5_ATOM(clipPathUnits, "clipPathUnits")
+HTML5_ATOM(definitionurl, "definitionurl")
+HTML5_ATOM(definitionURL, "definitionURL")
+HTML5_ATOM(gradientunits, "gradientunits")
+HTML5_ATOM(gradientUnits, "gradientUnits")
+HTML5_ATOM(flood_opacity, "flood-opacity")
+HTML5_ATOM(onafterupdate, "onafterupdate")
+HTML5_ATOM(onerrorupdate, "onerrorupdate")
+HTML5_ATOM(onbeforepaste, "onbeforepaste")
+HTML5_ATOM(onlosecapture, "onlosecapture")
+HTML5_ATOM(oncontextmenu, "oncontextmenu")
+HTML5_ATOM(onselectstart, "onselectstart")
+HTML5_ATOM(onbeforeprint, "onbeforeprint")
+HTML5_ATOM(movablelimits, "movablelimits")
+HTML5_ATOM(linethickness, "linethickness")
+HTML5_ATOM(unicode_range, "unicode-range")
+HTML5_ATOM(thinmathspace, "thinmathspace")
+HTML5_ATOM(vert_origin_x, "vert-origin-x")
+HTML5_ATOM(vert_origin_y, "vert-origin-y")
+HTML5_ATOM(v_ideographic, "v-ideographic")
+HTML5_ATOM(preservealpha, "preservealpha")
+HTML5_ATOM(preserveAlpha, "preserveAlpha")
+HTML5_ATOM(scriptminsize, "scriptminsize")
+HTML5_ATOM(specification, "specification")
+HTML5_ATOM(xlink_actuate, "xlink:actuate")
+HTML5_ATOM(actuate, "actuate")
+HTML5_ATOM(xlink_arcrole, "xlink:arcrole")
+HTML5_ATOM(arcrole, "arcrole")
+HTML5_ATOM(accept_charset, "accept-charset")
+HTML5_ATOM(alignmentscope, "alignmentscope")
+HTML5_ATOM(aria_multiline, "aria-multiline")
+HTML5_ATOM(baseline_shift, "baseline-shift")
+HTML5_ATOM(horiz_origin_x, "horiz-origin-x")
+HTML5_ATOM(horiz_origin_y, "horiz-origin-y")
+HTML5_ATOM(onbeforeupdate, "onbeforeupdate")
+HTML5_ATOM(onfilterchange, "onfilterchange")
+HTML5_ATOM(onrowsinserted, "onrowsinserted")
+HTML5_ATOM(onbeforeunload, "onbeforeunload")
+HTML5_ATOM(mathbackground, "mathbackground")
+HTML5_ATOM(letter_spacing, "letter-spacing")
+HTML5_ATOM(lighting_color, "lighting-color")
+HTML5_ATOM(thickmathspace, "thickmathspace")
+HTML5_ATOM(text_rendering, "text-rendering")
+HTML5_ATOM(v_mathematical, "v-mathematical")
+HTML5_ATOM(pointer_events, "pointer-events")
+HTML5_ATOM(primitiveunits, "primitiveunits")
+HTML5_ATOM(primitiveUnits, "primitiveUnits")
+HTML5_ATOM(systemlanguage, "systemlanguage")
+HTML5_ATOM(systemLanguage, "systemLanguage")
+HTML5_ATOM(stroke_linecap, "stroke-linecap")
+HTML5_ATOM(subscriptshift, "subscriptshift")
+HTML5_ATOM(stroke_opacity, "stroke-opacity")
+HTML5_ATOM(aria_dropeffect, "aria-dropeffect")
+HTML5_ATOM(aria_labelledby, "aria-labelledby")
+HTML5_ATOM(aria_templateid, "aria-templateid")
+HTML5_ATOM(color_rendering, "color-rendering")
+HTML5_ATOM(contenteditable, "contenteditable")
+HTML5_ATOM(diffuseconstant, "diffuseconstant")
+HTML5_ATOM(diffuseConstant, "diffuseConstant")
+HTML5_ATOM(ondataavailable, "ondataavailable")
+HTML5_ATOM(oncontrolselect, "oncontrolselect")
+HTML5_ATOM(image_rendering, "image-rendering")
+HTML5_ATOM(mediummathspace, "mediummathspace")
+HTML5_ATOM(text_decoration, "text-decoration")
+HTML5_ATOM(shape_rendering, "shape-rendering")
+HTML5_ATOM(stroke_linejoin, "stroke-linejoin")
+HTML5_ATOM(repeat_template, "repeat-template")
+HTML5_ATOM(aria_describedby, "aria-describedby")
+HTML5_ATOM(contentstyletype, "contentstyletype")
+HTML5_ATOM(contentStyleType, "contentStyleType")
+HTML5_ATOM(font_size_adjust, "font-size-adjust")
+HTML5_ATOM(kernelunitlength, "kernelunitlength")
+HTML5_ATOM(kernelUnitLength, "kernelUnitLength")
+HTML5_ATOM(onbeforeactivate, "onbeforeactivate")
+HTML5_ATOM(onpropertychange, "onpropertychange")
+HTML5_ATOM(ondatasetchanged, "ondatasetchanged")
+HTML5_ATOM(maskcontentunits, "maskcontentunits")
+HTML5_ATOM(maskContentUnits, "maskContentUnits")
+HTML5_ATOM(patterntransform, "patterntransform")
+HTML5_ATOM(patternTransform, "patternTransform")
+HTML5_ATOM(requiredfeatures, "requiredfeatures")
+HTML5_ATOM(requiredFeatures, "requiredFeatures")
+HTML5_ATOM(rendering_intent, "rendering-intent")
+HTML5_ATOM(specularexponent, "specularexponent")
+HTML5_ATOM(specularExponent, "specularExponent")
+HTML5_ATOM(specularconstant, "specularconstant")
+HTML5_ATOM(specularConstant, "specularConstant")
+HTML5_ATOM(superscriptshift, "superscriptshift")
+HTML5_ATOM(stroke_dasharray, "stroke-dasharray")
+HTML5_ATOM(xchannelselector, "xchannelselector")
+HTML5_ATOM(xChannelSelector, "xChannelSelector")
+HTML5_ATOM(ychannelselector, "ychannelselector")
+HTML5_ATOM(yChannelSelector, "yChannelSelector")
+HTML5_ATOM(aria_autocomplete, "aria-autocomplete")
+HTML5_ATOM(contentscripttype, "contentscripttype")
+HTML5_ATOM(contentScriptType, "contentScriptType")
+HTML5_ATOM(enable_background, "enable-background")
+HTML5_ATOM(dominant_baseline, "dominant-baseline")
+HTML5_ATOM(gradienttransform, "gradienttransform")
+HTML5_ATOM(gradientTransform, "gradientTransform")
+HTML5_ATOM(onbefordeactivate, "onbefordeactivate")
+HTML5_ATOM(ondatasetcomplete, "ondatasetcomplete")
+HTML5_ATOM(overline_position, "overline-position")
+HTML5_ATOM(onbeforeeditfocus, "onbeforeeditfocus")
+HTML5_ATOM(limitingconeangle, "limitingconeangle")
+HTML5_ATOM(limitingConeAngle, "limitingConeAngle")
+HTML5_ATOM(verythinmathspace, "verythinmathspace")
+HTML5_ATOM(stroke_dashoffset, "stroke-dashoffset")
+HTML5_ATOM(stroke_miterlimit, "stroke-miterlimit")
+HTML5_ATOM(alignment_baseline, "alignment-baseline")
+HTML5_ATOM(onreadystatechange, "onreadystatechange")
+HTML5_ATOM(overline_thickness, "overline-thickness")
+HTML5_ATOM(underline_position, "underline-position")
+HTML5_ATOM(verythickmathspace, "verythickmathspace")
+HTML5_ATOM(requiredextensions, "requiredextensions")
+HTML5_ATOM(requiredExtensions, "requiredExtensions")
+HTML5_ATOM(color_interpolation, "color-interpolation")
+HTML5_ATOM(underline_thickness, "underline-thickness")
+HTML5_ATOM(preserveaspectratio, "preserveaspectratio")
+HTML5_ATOM(preserveAspectRatio, "preserveAspectRatio")
+HTML5_ATOM(patterncontentunits, "patterncontentunits")
+HTML5_ATOM(patternContentUnits, "patternContentUnits")
+HTML5_ATOM(aria_multiselectable, "aria-multiselectable")
+HTML5_ATOM(scriptsizemultiplier, "scriptsizemultiplier")
+HTML5_ATOM(aria_activedescendant, "aria-activedescendant")
+HTML5_ATOM(veryverythinmathspace, "veryverythinmathspace")
+HTML5_ATOM(veryverythickmathspace, "veryverythickmathspace")
+HTML5_ATOM(strikethrough_position, "strikethrough-position")
+HTML5_ATOM(strikethrough_thickness, "strikethrough-thickness")
+HTML5_ATOM(externalresourcesrequired, "externalresourcesrequired")
+HTML5_ATOM(externalResourcesRequired, "externalResourcesRequired")
+HTML5_ATOM(glyph_orientation_vertical, "glyph-orientation-vertical")
+HTML5_ATOM(color_interpolation_filters, "color-interpolation-filters")
+HTML5_ATOM(glyph_orientation_horizontal, "glyph-orientation-horizontal")
+HTML5_ATOM(b, "b")
+HTML5_ATOM(g, "g")
+HTML5_ATOM(i, "i")
+HTML5_ATOM(q, "q")
+HTML5_ATOM(s, "s")
+HTML5_ATOM(u, "u")
+HTML5_ATOM(br, "br")
+HTML5_ATOM(ci, "ci")
+HTML5_ATOM(cn, "cn")
+HTML5_ATOM(dd, "dd")
+HTML5_ATOM(dl, "dl")
+HTML5_ATOM(dt, "dt")
+HTML5_ATOM(em, "em")
+HTML5_ATOM(eq, "eq")
+HTML5_ATOM(fn, "fn")
+HTML5_ATOM(h1, "h1")
+HTML5_ATOM(h2, "h2")
+HTML5_ATOM(h3, "h3")
+HTML5_ATOM(h4, "h4")
+HTML5_ATOM(h5, "h5")
+HTML5_ATOM(h6, "h6")
+HTML5_ATOM(gt, "gt")
+HTML5_ATOM(hr, "hr")
+HTML5_ATOM(li, "li")
+HTML5_ATOM(ln, "ln")
+HTML5_ATOM(lt, "lt")
+HTML5_ATOM(mi, "mi")
+HTML5_ATOM(mn, "mn")
+HTML5_ATOM(mo, "mo")
+HTML5_ATOM(ms, "ms")
+HTML5_ATOM(ol, "ol")
+HTML5_ATOM(or_, "or")
+HTML5_ATOM(pi, "pi")
+HTML5_ATOM(rp, "rp")
+HTML5_ATOM(tt, "tt")
+HTML5_ATOM(ul, "ul")
+HTML5_ATOM(and_, "and")
+HTML5_ATOM(arg, "arg")
+HTML5_ATOM(abs, "abs")
+HTML5_ATOM(big, "big")
+HTML5_ATOM(bdo, "bdo")
+HTML5_ATOM(csc, "csc")
+HTML5_ATOM(col, "col")
+HTML5_ATOM(cos, "cos")
+HTML5_ATOM(cot, "cot")
+HTML5_ATOM(del, "del")
+HTML5_ATOM(dfn, "dfn")
+HTML5_ATOM(exp, "exp")
+HTML5_ATOM(gcd, "gcd")
+HTML5_ATOM(geq, "geq")
+HTML5_ATOM(img, "img")
+HTML5_ATOM(ins, "ins")
+HTML5_ATOM(int_, "int")
+HTML5_ATOM(kbd, "kbd")
+HTML5_ATOM(log, "log")
+HTML5_ATOM(lcm, "lcm")
+HTML5_ATOM(leq, "leq")
+HTML5_ATOM(mtd, "mtd")
+HTML5_ATOM(map, "map")
+HTML5_ATOM(mtr, "mtr")
+HTML5_ATOM(neq, "neq")
+HTML5_ATOM(not_, "not")
+HTML5_ATOM(nav, "nav")
+HTML5_ATOM(pre, "pre")
+HTML5_ATOM(rem, "rem")
+HTML5_ATOM(sub, "sub")
+HTML5_ATOM(sec, "sec")
+HTML5_ATOM(svg, "svg")
+HTML5_ATOM(sum, "sum")
+HTML5_ATOM(sin, "sin")
+HTML5_ATOM(sep, "sep")
+HTML5_ATOM(sup, "sup")
+HTML5_ATOM(set, "set")
+HTML5_ATOM(tan, "tan")
+HTML5_ATOM(use, "use")
+HTML5_ATOM(var, "var")
+HTML5_ATOM(wbr, "wbr")
+HTML5_ATOM(xor_, "xor")
+HTML5_ATOM(area, "area")
+HTML5_ATOM(bvar, "bvar")
+HTML5_ATOM(card, "card")
+HTML5_ATOM(csch, "csch")
+HTML5_ATOM(cosh, "cosh")
+HTML5_ATOM(coth, "coth")
+HTML5_ATOM(curl, "curl")
+HTML5_ATOM(desc, "desc")
+HTML5_ATOM(diff, "diff")
+HTML5_ATOM(defs, "defs")
+HTML5_ATOM(font, "font")
+HTML5_ATOM(grad, "grad")
+HTML5_ATOM(line, "line")
+HTML5_ATOM(meta, "meta")
+HTML5_ATOM(msub, "msub")
+HTML5_ATOM(math, "math")
+HTML5_ATOM(mark, "mark")
+HTML5_ATOM(mean, "mean")
+HTML5_ATOM(msup, "msup")
+HTML5_ATOM(menu, "menu")
+HTML5_ATOM(mrow, "mrow")
+HTML5_ATOM(none, "none")
+HTML5_ATOM(nest, "nest")
+HTML5_ATOM(plus, "plus")
+HTML5_ATOM(rule, "rule")
+HTML5_ATOM(real, "real")
+HTML5_ATOM(reln, "reln")
+HTML5_ATOM(rect, "rect")
+HTML5_ATOM(root, "root")
+HTML5_ATOM(sech, "sech")
+HTML5_ATOM(sinh, "sinh")
+HTML5_ATOM(samp, "samp")
+HTML5_ATOM(stop, "stop")
+HTML5_ATOM(sdev, "sdev")
+HTML5_ATOM(time, "time")
+HTML5_ATOM(true_, "true")
+HTML5_ATOM(tref, "tref")
+HTML5_ATOM(tanh, "tanh")
+HTML5_ATOM(view, "view")
+HTML5_ATOM(aside, "aside")
+HTML5_ATOM(audio, "audio")
+HTML5_ATOM(apply, "apply")
+HTML5_ATOM(embed, "embed")
+HTML5_ATOM(false_, "false")
+HTML5_ATOM(floor, "floor")
+HTML5_ATOM(glyph, "glyph")
+HTML5_ATOM(hkern, "hkern")
+HTML5_ATOM(image, "image")
+HTML5_ATOM(ident, "ident")
+HTML5_ATOM(limit, "limit")
+HTML5_ATOM(mfrac, "mfrac")
+HTML5_ATOM(mpath, "mpath")
+HTML5_ATOM(meter, "meter")
+HTML5_ATOM(mover, "mover")
+HTML5_ATOM(minus, "minus")
+HTML5_ATOM(mroot, "mroot")
+HTML5_ATOM(msqrt, "msqrt")
+HTML5_ATOM(mtext, "mtext")
+HTML5_ATOM(notin, "notin")
+HTML5_ATOM(piece, "piece")
+HTML5_ATOM(param, "param")
+HTML5_ATOM(power, "power")
+HTML5_ATOM(reals, "reals")
+HTML5_ATOM(small_, "small")
+HTML5_ATOM(tspan, "tspan")
+HTML5_ATOM(times, "times")
+HTML5_ATOM(union_, "union")
+HTML5_ATOM(vkern, "vkern")
+HTML5_ATOM(video, "video")
+HTML5_ATOM(arcsec, "arcsec")
+HTML5_ATOM(arccsc, "arccsc")
+HTML5_ATOM(arctan, "arctan")
+HTML5_ATOM(arcsin, "arcsin")
+HTML5_ATOM(arccos, "arccos")
+HTML5_ATOM(applet, "applet")
+HTML5_ATOM(arccot, "arccot")
+HTML5_ATOM(approx, "approx")
+HTML5_ATOM(circle, "circle")
+HTML5_ATOM(center, "center")
+HTML5_ATOM(canvas, "canvas")
+HTML5_ATOM(divide, "divide")
+HTML5_ATOM(degree, "degree")
+HTML5_ATOM(dialog, "dialog")
+HTML5_ATOM(domain, "domain")
+HTML5_ATOM(exists, "exists")
+HTML5_ATOM(fetile, "fetile")
+HTML5_ATOM(feTile, "feTile")
+HTML5_ATOM(figure, "figure")
+HTML5_ATOM(forall, "forall")
+HTML5_ATOM(footer, "footer")
+HTML5_ATOM(header, "header")
+HTML5_ATOM(keygen, "keygen")
+HTML5_ATOM(lambda, "lambda")
+HTML5_ATOM(legend, "legend")
+HTML5_ATOM(mspace, "mspace")
+HTML5_ATOM(mtable, "mtable")
+HTML5_ATOM(mstyle, "mstyle")
+HTML5_ATOM(mglyph, "mglyph")
+HTML5_ATOM(median, "median")
+HTML5_ATOM(munder, "munder")
+HTML5_ATOM(marker, "marker")
+HTML5_ATOM(merror, "merror")
+HTML5_ATOM(moment, "moment")
+HTML5_ATOM(matrix, "matrix")
+HTML5_ATOM(output, "output")
+HTML5_ATOM(primes, "primes")
+HTML5_ATOM(source, "source")
+HTML5_ATOM(strike, "strike")
+HTML5_ATOM(strong, "strong")
+HTML5_ATOM(switch_, "switch")
+HTML5_ATOM(symbol, "symbol")
+HTML5_ATOM(spacer, "spacer")
+HTML5_ATOM(subset, "subset")
+HTML5_ATOM(tbreak, "tbreak")
+HTML5_ATOM(vector, "vector")
+HTML5_ATOM(article, "article")
+HTML5_ATOM(animate, "animate")
+HTML5_ATOM(arcsech, "arcsech")
+HTML5_ATOM(arccsch, "arccsch")
+HTML5_ATOM(arctanh, "arctanh")
+HTML5_ATOM(arcsinh, "arcsinh")
+HTML5_ATOM(arccosh, "arccosh")
+HTML5_ATOM(arccoth, "arccoth")
+HTML5_ATOM(acronym, "acronym")
+HTML5_ATOM(bgsound, "bgsound")
+HTML5_ATOM(command, "command")
+HTML5_ATOM(compose, "compose")
+HTML5_ATOM(ceiling, "ceiling")
+HTML5_ATOM(csymbol, "csymbol")
+HTML5_ATOM(discard, "discard")
+HTML5_ATOM(details, "details")
+HTML5_ATOM(ellipse, "ellipse")
+HTML5_ATOM(fefunca, "fefunca")
+HTML5_ATOM(feFuncA, "feFuncA")
+HTML5_ATOM(fefuncb, "fefuncb")
+HTML5_ATOM(feFuncB, "feFuncB")
+HTML5_ATOM(feblend, "feblend")
+HTML5_ATOM(feBlend, "feBlend")
+HTML5_ATOM(feflood, "feflood")
+HTML5_ATOM(feFlood, "feFlood")
+HTML5_ATOM(feimage, "feimage")
+HTML5_ATOM(feImage, "feImage")
+HTML5_ATOM(femerge, "femerge")
+HTML5_ATOM(feMerge, "feMerge")
+HTML5_ATOM(fefuncg, "fefuncg")
+HTML5_ATOM(feFuncG, "feFuncG")
+HTML5_ATOM(fefuncr, "fefuncr")
+HTML5_ATOM(feFuncR, "feFuncR")
+HTML5_ATOM(handler, "handler")
+HTML5_ATOM(inverse, "inverse")
+HTML5_ATOM(implies, "implies")
+HTML5_ATOM(isindex, "isindex")
+HTML5_ATOM(logbase, "logbase")
+HTML5_ATOM(listing, "listing")
+HTML5_ATOM(mfenced, "mfenced")
+HTML5_ATOM(mpadded, "mpadded")
+HTML5_ATOM(marquee, "marquee")
+HTML5_ATOM(maction, "maction")
+HTML5_ATOM(msubsup, "msubsup")
+HTML5_ATOM(polygon, "polygon")
+HTML5_ATOM(product, "product")
+HTML5_ATOM(setdiff, "setdiff")
+HTML5_ATOM(section, "section")
+HTML5_ATOM(tendsto, "tendsto")
+HTML5_ATOM(uplimit, "uplimit")
+HTML5_ATOM(altglyph, "altglyph")
+HTML5_ATOM(altGlyph, "altGlyph")
+HTML5_ATOM(basefont, "basefont")
+HTML5_ATOM(clippath, "clippath")
+HTML5_ATOM(clipPath, "clipPath")
+HTML5_ATOM(codomain, "codomain")
+HTML5_ATOM(datagrid, "datagrid")
+HTML5_ATOM(emptyset, "emptyset")
+HTML5_ATOM(factorof, "factorof")
+HTML5_ATOM(fieldset, "fieldset")
+HTML5_ATOM(feoffset, "feoffset")
+HTML5_ATOM(feOffset, "feOffset")
+HTML5_ATOM(interval, "interval")
+HTML5_ATOM(integers, "integers")
+HTML5_ATOM(infinity, "infinity")
+HTML5_ATOM(listener, "listener")
+HTML5_ATOM(lowlimit, "lowlimit")
+HTML5_ATOM(metadata, "metadata")
+HTML5_ATOM(menclose, "menclose")
+HTML5_ATOM(mphantom, "mphantom")
+HTML5_ATOM(polyline, "polyline")
+HTML5_ATOM(prefetch, "prefetch")
+HTML5_ATOM(progress, "progress")
+HTML5_ATOM(prsubset, "prsubset")
+HTML5_ATOM(quotient, "quotient")
+HTML5_ATOM(selector, "selector")
+HTML5_ATOM(textpath, "textpath")
+HTML5_ATOM(textPath, "textPath")
+HTML5_ATOM(variance, "variance")
+HTML5_ATOM(animation, "animation")
+HTML5_ATOM(conjugate, "conjugate")
+HTML5_ATOM(condition, "condition")
+HTML5_ATOM(complexes, "complexes")
+HTML5_ATOM(font_face, "font-face")
+HTML5_ATOM(factorial, "factorial")
+HTML5_ATOM(intersect, "intersect")
+HTML5_ATOM(imaginary, "imaginary")
+HTML5_ATOM(laplacian, "laplacian")
+HTML5_ATOM(matrixrow, "matrixrow")
+HTML5_ATOM(notsubset, "notsubset")
+HTML5_ATOM(otherwise, "otherwise")
+HTML5_ATOM(piecewise, "piecewise")
+HTML5_ATOM(rationals, "rationals")
+HTML5_ATOM(semantics, "semantics")
+HTML5_ATOM(transpose, "transpose")
+HTML5_ATOM(annotation, "annotation")
+HTML5_ATOM(blockquote, "blockquote")
+HTML5_ATOM(divergence, "divergence")
+HTML5_ATOM(eulergamma, "eulergamma")
+HTML5_ATOM(equivalent, "equivalent")
+HTML5_ATOM(imaginaryi, "imaginaryi")
+HTML5_ATOM(malignmark, "malignmark")
+HTML5_ATOM(munderover, "munderover")
+HTML5_ATOM(mlabeledtr, "mlabeledtr")
+HTML5_ATOM(notanumber, "notanumber")
+HTML5_ATOM(solidcolor, "solidcolor")
+HTML5_ATOM(altglyphdef, "altglyphdef")
+HTML5_ATOM(altGlyphDef, "altGlyphDef")
+HTML5_ATOM(determinant, "determinant")
+HTML5_ATOM(eventsource, "eventsource")
+HTML5_ATOM(femergenode, "femergenode")
+HTML5_ATOM(feMergeNode, "feMergeNode")
+HTML5_ATOM(fecomposite, "fecomposite")
+HTML5_ATOM(feComposite, "feComposite")
+HTML5_ATOM(fespotlight, "fespotlight")
+HTML5_ATOM(feSpotLight, "feSpotLight")
+HTML5_ATOM(maligngroup, "maligngroup")
+HTML5_ATOM(mprescripts, "mprescripts")
+HTML5_ATOM(momentabout, "momentabout")
+HTML5_ATOM(notprsubset, "notprsubset")
+HTML5_ATOM(partialdiff, "partialdiff")
+HTML5_ATOM(altglyphitem, "altglyphitem")
+HTML5_ATOM(altGlyphItem, "altGlyphItem")
+HTML5_ATOM(animatecolor, "animatecolor")
+HTML5_ATOM(animateColor, "animateColor")
+HTML5_ATOM(datatemplate, "datatemplate")
+HTML5_ATOM(exponentiale, "exponentiale")
+HTML5_ATOM(feturbulence, "feturbulence")
+HTML5_ATOM(feTurbulence, "feTurbulence")
+HTML5_ATOM(fepointlight, "fepointlight")
+HTML5_ATOM(fePointLight, "fePointLight")
+HTML5_ATOM(femorphology, "femorphology")
+HTML5_ATOM(feMorphology, "feMorphology")
+HTML5_ATOM(outerproduct, "outerproduct")
+HTML5_ATOM(animatemotion, "animatemotion")
+HTML5_ATOM(animateMotion, "animateMotion")
+HTML5_ATOM(font_face_src, "font-face-src")
+HTML5_ATOM(font_face_uri, "font-face-uri")
+HTML5_ATOM(foreignobject, "foreignobject")
+HTML5_ATOM(foreignObject, "foreignObject")
+HTML5_ATOM(fecolormatrix, "fecolormatrix")
+HTML5_ATOM(feColorMatrix, "feColorMatrix")
+HTML5_ATOM(missing_glyph, "missing-glyph")
+HTML5_ATOM(mmultiscripts, "mmultiscripts")
+HTML5_ATOM(scalarproduct, "scalarproduct")
+HTML5_ATOM(vectorproduct, "vectorproduct")
+HTML5_ATOM(annotation_xml, "annotation-xml")
+HTML5_ATOM(definition_src, "definition-src")
+HTML5_ATOM(font_face_name, "font-face-name")
+HTML5_ATOM(fegaussianblur, "fegaussianblur")
+HTML5_ATOM(feGaussianBlur, "feGaussianBlur")
+HTML5_ATOM(fedistantlight, "fedistantlight")
+HTML5_ATOM(feDistantLight, "feDistantLight")
+HTML5_ATOM(lineargradient, "lineargradient")
+HTML5_ATOM(linearGradient, "linearGradient")
+HTML5_ATOM(naturalnumbers, "naturalnumbers")
+HTML5_ATOM(radialgradient, "radialgradient")
+HTML5_ATOM(radialGradient, "radialGradient")
+HTML5_ATOM(animatetransform, "animatetransform")
+HTML5_ATOM(animateTransform, "animateTransform")
+HTML5_ATOM(cartesianproduct, "cartesianproduct")
+HTML5_ATOM(font_face_format, "font-face-format")
+HTML5_ATOM(feconvolvematrix, "feconvolvematrix")
+HTML5_ATOM(feConvolveMatrix, "feConvolveMatrix")
+HTML5_ATOM(fediffuselighting, "fediffuselighting")
+HTML5_ATOM(feDiffuseLighting, "feDiffuseLighting")
+HTML5_ATOM(fedisplacementmap, "fedisplacementmap")
+HTML5_ATOM(feDisplacementMap, "feDisplacementMap")
+HTML5_ATOM(fespecularlighting, "fespecularlighting")
+HTML5_ATOM(feSpecularLighting, "feSpecularLighting")
+HTML5_ATOM(domainofapplication, "domainofapplication")
+HTML5_ATOM(fecomponenttransfer, "fecomponenttransfer")
+HTML5_ATOM(feComponentTransfer, "feComponentTransfer")
new file mode 100755
--- /dev/null
+++ b/content/html/parser/src/nsHtml5Atoms.cpp
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2006
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * This class wraps up the creation (and destruction) of the standard
+ * set of atoms used by gklayout; the atoms are created when gklayout
+ * is loaded and they are destroyed when gklayout is unloaded.
+ */
+
+#include "nsHtml5Atoms.h"
+#include "nsStaticAtom.h"
+
+// define storage for all atoms
+#define HTML5_ATOM(_name, _value) nsIAtom* nsHtml5Atoms::_name;
+#include "nsHtml5AtomList.h"
+#undef HTML5_ATOM
+
+static const nsStaticAtom Html5Atoms_info[] = {
+#define HTML5_ATOM(name_, value_) { value_, &nsHtml5Atoms::name_ },
+#include "nsHtml5AtomList.h"
+#undef HTML5_ATOM
+};
+
+void nsHtml5Atoms::AddRefAtoms()
+{
+  NS_RegisterStaticAtoms(Html5Atoms_info, NS_ARRAY_LENGTH(Html5Atoms_info));
+}
+
new file mode 100755
--- /dev/null
+++ b/content/html/parser/src/nsHtml5Atoms.h
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2006
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * This class wraps up the creation (and destruction) of the standard
+ * set of atoms used by gklayout; the atoms are created when gklayout
+ * is loaded and they are destroyed when gklayout is unloaded.
+ */
+
+#ifndef nsHtml5Atoms_h___
+#define nsHtml5Atoms_h___
+
+#include "nsIAtom.h"
+
+class nsHtml5Atoms {
+public:
+
+  static void AddRefAtoms();
+
+  /* Declare all atoms
+
+     The atom names and values are stored in nsGkAtomList.h and
+     are brought to you by the magic of C preprocessing
+
+     Add new atoms to nsGkAtomList and all support logic will be auto-generated
+   */
+#define HTML5_ATOM(_name, _value) static nsIAtom* _name;
+#include "nsHtml5AtomList.h"
+#undef HTML5_ATOM
+};
+
+#endif /* nsHtml5Atoms_h___ */
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5AttributeName.cpp
@@ -0,0 +1,1974 @@
+/*
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a 
+ * copy of this software and associated documentation files (the "Software"), 
+ * to deal in the Software without restriction, including without limitation 
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+ * and/or sell copies of the Software, and to permit persons to whom the 
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in 
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
+ * Please edit AttributeName.java instead and regenerate.
+ */
+
+#define nsHtml5AttributeName_cpp__
+
+#include "prtypes.h"
+#include "nsIAtom.h"
+#include "nsString.h"
+#include "nsINameSpaceManager.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "jArray.h"
+#include "nsHtml5DocumentMode.h"
+#include "nsHtml5ArrayCopy.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Parser.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Atoms.h"
+
+#include "nsHtml5Tokenizer.h"
+#include "nsHtml5TreeBuilder.h"
+#include "nsHtml5ElementName.h"
+#include "nsHtml5HtmlAttributes.h"
+#include "nsHtml5StackNode.h"
+#include "nsHtml5UTF16Buffer.h"
+#include "nsHtml5Portability.h"
+
+#include "nsHtml5AttributeName.h"
+
+nsIAtom** 
+nsHtml5AttributeName::SVG_DIFFERENT(nsIAtom* name, nsIAtom* camel)
+{
+  nsIAtom** rv = new nsIAtom*[4];
+  rv[0] = name;
+  rv[1] = name;
+  rv[2] = camel;
+  return rv;
+}
+
+nsIAtom** 
+nsHtml5AttributeName::MATH_DIFFERENT(nsIAtom* name, nsIAtom* camel)
+{
+  nsIAtom** rv = new nsIAtom*[4];
+  rv[0] = name;
+  rv[1] = camel;
+  rv[2] = name;
+  return rv;
+}
+
+nsIAtom** 
+nsHtml5AttributeName::COLONIFIED_LOCAL(nsIAtom* name, nsIAtom* suffix)
+{
+  nsIAtom** rv = new nsIAtom*[4];
+  rv[0] = name;
+  rv[1] = suffix;
+  rv[2] = suffix;
+  return rv;
+}
+
+nsIAtom** 
+nsHtml5AttributeName::SAME_LOCAL(nsIAtom* name)
+{
+  nsIAtom** rv = new nsIAtom*[4];
+  rv[0] = name;
+  rv[1] = name;
+  rv[2] = name;
+  return rv;
+}
+
+nsHtml5AttributeName* 
+nsHtml5AttributeName::nameByBuffer(PRUnichar* buf, PRInt32 offset, PRInt32 length)
+{
+  PRInt32 hash = nsHtml5AttributeName::bufToHash(buf, length);
+  PRInt32 index = nsHtml5AttributeName::ATTRIBUTE_HASHES.binarySearch(hash);
+  if (index < 0) {
+    return nsHtml5AttributeName::create(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length));
+  } else {
+    nsHtml5AttributeName* rv = nsHtml5AttributeName::ATTRIBUTE_NAMES[index];
+    nsIAtom* name = rv->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML);
+    if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) {
+      return nsHtml5AttributeName::create(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length));
+    }
+    return rv;
+  }
+}
+
+PRInt32 
+nsHtml5AttributeName::bufToHash(PRUnichar* buf, PRInt32 len)
+{
+  PRInt32 hash2 = 0;
+  PRInt32 hash = len;
+  hash <<= 5;
+  hash += buf[0] - 0x60;
+  PRInt32 j = len;
+  for (PRInt32 i = 0; i < 4 && j > 0; i++) {
+    j--;
+    hash <<= 5;
+    hash += buf[j] - 0x60;
+    hash2 <<= 6;
+    hash2 += buf[i] - 0x5F;
+  }
+  return hash ^ hash2;
+}
+
+
+nsHtml5AttributeName::nsHtml5AttributeName(PRInt32* uri, nsIAtom** local, nsIAtom** prefix)
+  : uri(uri),
+    local(local),
+    prefix(prefix)
+{
+}
+
+nsHtml5AttributeName* 
+nsHtml5AttributeName::create(nsIAtom* name)
+{
+  return new nsHtml5AttributeName(nsHtml5AttributeName::ALL_NO_NS, nsHtml5AttributeName::SAME_LOCAL(name), ALL_NO_PREFIX);
+}
+
+void 
+nsHtml5AttributeName::release()
+{
+}
+
+void 
+nsHtml5AttributeName::destructor()
+{
+  nsHtml5Portability::releaseLocal(local[0]);
+  delete[] local;
+}
+
+PRInt32 
+nsHtml5AttributeName::getUri(PRInt32 mode)
+{
+  return uri[mode];
+}
+
+nsIAtom* 
+nsHtml5AttributeName::getLocal(PRInt32 mode)
+{
+  return local[mode];
+}
+
+nsIAtom* 
+nsHtml5AttributeName::getPrefix(PRInt32 mode)
+{
+  return prefix[mode];
+}
+
+PRBool 
+nsHtml5AttributeName::equalsAnother(nsHtml5AttributeName* another)
+{
+  return this->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML) == another->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML);
+}
+
+void
+nsHtml5AttributeName::initializeStatics()
+{
+  ALL_NO_NS = new PRInt32[3];
+  ALL_NO_NS[0] = kNameSpaceID_None;
+  ALL_NO_NS[1] = kNameSpaceID_None;
+  ALL_NO_NS[2] = kNameSpaceID_None;
+  XMLNS_NS = new PRInt32[3];
+  XMLNS_NS[0] = kNameSpaceID_None;
+  XMLNS_NS[1] = kNameSpaceID_XMLNS;
+  XMLNS_NS[2] = kNameSpaceID_XMLNS;
+  XML_NS = new PRInt32[3];
+  XML_NS[0] = kNameSpaceID_None;
+  XML_NS[1] = kNameSpaceID_XML;
+  XML_NS[2] = kNameSpaceID_XML;
+  XLINK_NS = new PRInt32[3];
+  XLINK_NS[0] = kNameSpaceID_None;
+  XLINK_NS[1] = kNameSpaceID_XLink;
+  XLINK_NS[2] = kNameSpaceID_XLink;
+  ALL_NO_PREFIX = new nsIAtom*[3];
+  ALL_NO_PREFIX[0] = nsnull;
+  ALL_NO_PREFIX[1] = nsnull;
+  ALL_NO_PREFIX[2] = nsnull;
+  XMLNS_PREFIX = new nsIAtom*[3];
+  XMLNS_PREFIX[0] = nsnull;
+  XMLNS_PREFIX[1] = nsHtml5Atoms::xmlns;
+  XMLNS_PREFIX[2] = nsHtml5Atoms::xmlns;
+  XLINK_PREFIX = new nsIAtom*[3];
+  XLINK_PREFIX[0] = nsnull;
+  XLINK_PREFIX[1] = nsHtml5Atoms::xlink;
+  XLINK_PREFIX[2] = nsHtml5Atoms::xlink;
+  XML_PREFIX = new nsIAtom*[3];
+  XML_PREFIX[0] = nsnull;
+  XML_PREFIX[1] = nsHtml5Atoms::xml;
+  XML_PREFIX[2] = nsHtml5Atoms::xml;
+  D = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::d), ALL_NO_PREFIX);
+  K = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k), ALL_NO_PREFIX);
+  R = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::r), ALL_NO_PREFIX);
+  X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x), ALL_NO_PREFIX);
+  Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y), ALL_NO_PREFIX);
+  Z = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::z), ALL_NO_PREFIX);
+  BY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::by), ALL_NO_PREFIX);
+  CX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cx), ALL_NO_PREFIX);
+  CY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cy), ALL_NO_PREFIX);
+  DX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dx), ALL_NO_PREFIX);
+  DY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dy), ALL_NO_PREFIX);
+  G2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::g2), ALL_NO_PREFIX);
+  G1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::g1), ALL_NO_PREFIX);
+  FX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fx), ALL_NO_PREFIX);
+  FY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fy), ALL_NO_PREFIX);
+  K4 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k4), ALL_NO_PREFIX);
+  K2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k2), ALL_NO_PREFIX);
+  K3 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k3), ALL_NO_PREFIX);
+  K1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::k1), ALL_NO_PREFIX);
+  ID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::id), ALL_NO_PREFIX);
+  IN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::in), ALL_NO_PREFIX);
+  U2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::u2), ALL_NO_PREFIX);
+  U1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::u1), ALL_NO_PREFIX);
+  RT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rt), ALL_NO_PREFIX);
+  RX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rx), ALL_NO_PREFIX);
+  RY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ry), ALL_NO_PREFIX);
+  TO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::to), ALL_NO_PREFIX);
+  Y2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y2), ALL_NO_PREFIX);
+  Y1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::y1), ALL_NO_PREFIX);
+  X1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x1), ALL_NO_PREFIX);
+  X2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x2), ALL_NO_PREFIX);
+  ALT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alt), ALL_NO_PREFIX);
+  DIR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dir), ALL_NO_PREFIX);
+  DUR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dur), ALL_NO_PREFIX);
+  END = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::end), ALL_NO_PREFIX);
+  FOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::for_), ALL_NO_PREFIX);
+  IN2 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::in2), ALL_NO_PREFIX);
+  MAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::max), ALL_NO_PREFIX);
+  MIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::min), ALL_NO_PREFIX);
+  LOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::low), ALL_NO_PREFIX);
+  REL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rel), ALL_NO_PREFIX);
+  REV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rev), ALL_NO_PREFIX);
+  SRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::src), ALL_NO_PREFIX);
+  AXIS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::axis), ALL_NO_PREFIX);
+  ABBR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::abbr), ALL_NO_PREFIX);
+  BBOX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bbox), ALL_NO_PREFIX);
+  CITE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cite), ALL_NO_PREFIX);
+  CODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::code), ALL_NO_PREFIX);
+  BIAS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bias), ALL_NO_PREFIX);
+  COLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cols), ALL_NO_PREFIX);
+  CLIP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip), ALL_NO_PREFIX);
+  CHAR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::char_), ALL_NO_PREFIX);
+  BASE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::base), ALL_NO_PREFIX);
+  EDGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::edge), ALL_NO_PREFIX);
+  DATA = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::data), ALL_NO_PREFIX);
+  FILL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill), ALL_NO_PREFIX);
+  FROM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::from), ALL_NO_PREFIX);
+  FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::form), ALL_NO_PREFIX);
+  FACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::face), ALL_NO_PREFIX);
+  HIGH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::high), ALL_NO_PREFIX);
+  HREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::href), ALL_NO_PREFIX);
+  OPEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::open), ALL_NO_PREFIX);
+  ICON = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::icon), ALL_NO_PREFIX);
+  NAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::name), ALL_NO_PREFIX);
+  MODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mode), ALL_NO_PREFIX);
+  MASK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mask), ALL_NO_PREFIX);
+  LINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::link), ALL_NO_PREFIX);
+  LANG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lang), ALL_NO_PREFIX);
+  LIST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::list), ALL_NO_PREFIX);
+  TYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::type), ALL_NO_PREFIX);
+  WHEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::when), ALL_NO_PREFIX);
+  WRAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::wrap), ALL_NO_PREFIX);
+  TEXT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text), ALL_NO_PREFIX);
+  PATH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::path), ALL_NO_PREFIX);
+  PING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ping), ALL_NO_PREFIX);
+  REFX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::refx, nsHtml5Atoms::refX), ALL_NO_PREFIX);
+  REFY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::refy, nsHtml5Atoms::refY), ALL_NO_PREFIX);
+  SIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::size), ALL_NO_PREFIX);
+  SEED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::seed), ALL_NO_PREFIX);
+  ROWS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rows), ALL_NO_PREFIX);
+  SPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::span), ALL_NO_PREFIX);
+  STEP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::step), ALL_NO_PREFIX);
+  ROLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::role), ALL_NO_PREFIX);
+  XREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::xref), ALL_NO_PREFIX);
+  ASYNC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::async), ALL_NO_PREFIX);
+  ALINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alink), ALL_NO_PREFIX);
+  ALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::align), ALL_NO_PREFIX);
+  CLOSE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::close), ALL_NO_PREFIX);
+  COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color), ALL_NO_PREFIX);
+  CLASS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::class_), ALL_NO_PREFIX);
+  CLEAR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clear), ALL_NO_PREFIX);
+  BEGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::begin), ALL_NO_PREFIX);
+  DEPTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::depth), ALL_NO_PREFIX);
+  DEFER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::defer), ALL_NO_PREFIX);
+  FENCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fence), ALL_NO_PREFIX);
+  FRAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frame), ALL_NO_PREFIX);
+  ISMAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ismap), ALL_NO_PREFIX);
+  ONEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onend), ALL_NO_PREFIX);
+  INDEX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::index), ALL_NO_PREFIX);
+  ORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::order), ALL_NO_PREFIX);
+  OTHER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::other), ALL_NO_PREFIX);
+  ONCUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncut), ALL_NO_PREFIX);
+  NARGS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nargs), ALL_NO_PREFIX);
+  MEDIA = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::media), ALL_NO_PREFIX);
+  LABEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::label), ALL_NO_PREFIX);
+  LOCAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::local), ALL_NO_PREFIX);
+  WIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::width), ALL_NO_PREFIX);
+  TITLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::title), ALL_NO_PREFIX);
+  VLINK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vlink), ALL_NO_PREFIX);
+  VALUE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::value), ALL_NO_PREFIX);
+  SLOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::slope), ALL_NO_PREFIX);
+  SHAPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::shape), ALL_NO_PREFIX);
+  SCOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scope), ALL_NO_PREFIX);
+  SCALE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scale), ALL_NO_PREFIX);
+  SPEED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::speed), ALL_NO_PREFIX);
+  STYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::style), ALL_NO_PREFIX);
+  RULES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rules), ALL_NO_PREFIX);
+  STEMH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stemh), ALL_NO_PREFIX);
+  STEMV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stemv), ALL_NO_PREFIX);
+  START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::start), ALL_NO_PREFIX);
+  XMLNS = new nsHtml5AttributeName(XMLNS_NS, SAME_LOCAL(nsHtml5Atoms::xmlns), ALL_NO_PREFIX);
+  ACCEPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accept), ALL_NO_PREFIX);
+  ACCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accent), ALL_NO_PREFIX);
+  ASCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ascent), ALL_NO_PREFIX);
+  ACTIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::active), ALL_NO_PREFIX);
+  ALTIMG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::altimg), ALL_NO_PREFIX);
+  ACTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::action), ALL_NO_PREFIX);
+  BORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::border), ALL_NO_PREFIX);
+  CURSOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cursor), ALL_NO_PREFIX);
+  COORDS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::coords), ALL_NO_PREFIX);
+  FILTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::filter), ALL_NO_PREFIX);
+  FORMAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::format), ALL_NO_PREFIX);
+  HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hidden), ALL_NO_PREFIX);
+  HSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hspace), ALL_NO_PREFIX);
+  HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::height), ALL_NO_PREFIX);
+  ONMOVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmove), ALL_NO_PREFIX);
+  ONLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onload), ALL_NO_PREFIX);
+  ONDRAG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondrag), ALL_NO_PREFIX);
+  ORIGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::origin), ALL_NO_PREFIX);
+  ONZOOM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onzoom), ALL_NO_PREFIX);
+  ONHELP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onhelp), ALL_NO_PREFIX);
+  ONSTOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onstop), ALL_NO_PREFIX);
+  ONDROP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondrop), ALL_NO_PREFIX);
+  ONBLUR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onblur), ALL_NO_PREFIX);
+  OBJECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::object), ALL_NO_PREFIX);
+  OFFSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::offset), ALL_NO_PREFIX);
+  ORIENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::orient), ALL_NO_PREFIX);
+  ONCOPY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncopy), ALL_NO_PREFIX);
+  NOWRAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nowrap), ALL_NO_PREFIX);
+  NOHREF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::nohref), ALL_NO_PREFIX);
+  MACROS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::macros), ALL_NO_PREFIX);
+  METHOD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::method), ALL_NO_PREFIX);
+  LOWSRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lowsrc), ALL_NO_PREFIX);
+  LSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lspace), ALL_NO_PREFIX);
+  LQUOTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lquote), ALL_NO_PREFIX);
+  USEMAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::usemap), ALL_NO_PREFIX);
+  WIDTHS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::widths), ALL_NO_PREFIX);
+  TARGET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::target), ALL_NO_PREFIX);
+  VALUES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::values), ALL_NO_PREFIX);
+  VALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::valign), ALL_NO_PREFIX);
+  VSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vspace), ALL_NO_PREFIX);
+  POSTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::poster), ALL_NO_PREFIX);
+  POINTS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::points), ALL_NO_PREFIX);
+  PROMPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::prompt), ALL_NO_PREFIX);
+  SCOPED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scoped), ALL_NO_PREFIX);
+  STRING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::string), ALL_NO_PREFIX);
+  SCHEME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scheme), ALL_NO_PREFIX);
+  STROKE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke), ALL_NO_PREFIX);
+  RADIUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::radius), ALL_NO_PREFIX);
+  RESULT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::result), ALL_NO_PREFIX);
+  REPEAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat), ALL_NO_PREFIX);
+  RSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rspace), ALL_NO_PREFIX);
+  ROTATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rotate), ALL_NO_PREFIX);
+  RQUOTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rquote), ALL_NO_PREFIX);
+  ALTTEXT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alttext), ALL_NO_PREFIX);
+  ARCHIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::archive), ALL_NO_PREFIX);
+  AZIMUTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::azimuth), ALL_NO_PREFIX);
+  CLOSURE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::closure), ALL_NO_PREFIX);
+  CHECKED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::checked), ALL_NO_PREFIX);
+  CLASSID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::classid), ALL_NO_PREFIX);
+  CHAROFF = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::charoff), ALL_NO_PREFIX);
+  BGCOLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bgcolor), ALL_NO_PREFIX);
+  COLSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::colspan), ALL_NO_PREFIX);
+  CHARSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::charset), ALL_NO_PREFIX);
+  COMPACT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::compact), ALL_NO_PREFIX);
+  CONTENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::content), ALL_NO_PREFIX);
+  ENCTYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::enctype), ALL_NO_PREFIX);
+  DATASRC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datasrc), ALL_NO_PREFIX);
+  DATAFLD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datafld), ALL_NO_PREFIX);
+  DECLARE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::declare), ALL_NO_PREFIX);
+  DISPLAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::display), ALL_NO_PREFIX);
+  DIVISOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::divisor), ALL_NO_PREFIX);
+  DEFAULT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::default_), ALL_NO_PREFIX);
+  DESCENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::descent), ALL_NO_PREFIX);
+  KERNING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::kerning), ALL_NO_PREFIX);
+  HANGING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hanging), ALL_NO_PREFIX);
+  HEADERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::headers), ALL_NO_PREFIX);
+  ONPASTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onpaste), ALL_NO_PREFIX);
+  ONCLICK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onclick), ALL_NO_PREFIX);
+  OPTIMUM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::optimum), ALL_NO_PREFIX);
+  ONBEGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbegin), ALL_NO_PREFIX);
+  ONKEYUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeyup), ALL_NO_PREFIX);
+  ONFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocus), ALL_NO_PREFIX);
+  ONERROR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onerror), ALL_NO_PREFIX);
+  ONINPUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oninput), ALL_NO_PREFIX);
+  ONABORT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onabort), ALL_NO_PREFIX);
+  ONSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onstart), ALL_NO_PREFIX);
+  ONRESET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onreset), ALL_NO_PREFIX);
+  OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::opacity), ALL_NO_PREFIX);
+  NOSHADE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::noshade), ALL_NO_PREFIX);
+  MINSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::minsize), ALL_NO_PREFIX);
+  MAXSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::maxsize), ALL_NO_PREFIX);
+  LOOPEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::loopend), ALL_NO_PREFIX);
+  LARGEOP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::largeop), ALL_NO_PREFIX);
+  UNICODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode), ALL_NO_PREFIX);
+  TARGETX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::targetx, nsHtml5Atoms::targetX), ALL_NO_PREFIX);
+  TARGETY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::targety, nsHtml5Atoms::targetY), ALL_NO_PREFIX);
+  VIEWBOX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::viewbox, nsHtml5Atoms::viewBox), ALL_NO_PREFIX);
+  VERSION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::version), ALL_NO_PREFIX);
+  PATTERN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::pattern), ALL_NO_PREFIX);
+  PROFILE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::profile), ALL_NO_PREFIX);
+  SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::spacing), ALL_NO_PREFIX);
+  RESTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::restart), ALL_NO_PREFIX);
+  ROWSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowspan), ALL_NO_PREFIX);
+  SANDBOX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::sandbox), ALL_NO_PREFIX);
+  SUMMARY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::summary), ALL_NO_PREFIX);
+  STANDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::standby), ALL_NO_PREFIX);
+  REPLACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::replace), ALL_NO_PREFIX);
+  AUTOPLAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autoplay), ALL_NO_PREFIX);
+  ADDITIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::additive), ALL_NO_PREFIX);
+  CALCMODE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::calcmode, nsHtml5Atoms::calcMode), ALL_NO_PREFIX);
+  CODETYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::codetype), ALL_NO_PREFIX);
+  CODEBASE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::codebase), ALL_NO_PREFIX);
+  CONTROLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::controls), ALL_NO_PREFIX);
+  BEVELLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::bevelled), ALL_NO_PREFIX);
+  BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::baseline), ALL_NO_PREFIX);
+  EXPONENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::exponent), ALL_NO_PREFIX);
+  EDGEMODE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::edgemode, nsHtml5Atoms::edgeMode), ALL_NO_PREFIX);
+  ENCODING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::encoding), ALL_NO_PREFIX);
+  GLYPHREF = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::glyphref, nsHtml5Atoms::glyphRef), ALL_NO_PREFIX);
+  DATETIME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::datetime), ALL_NO_PREFIX);
+  DISABLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::disabled), ALL_NO_PREFIX);
+  FONTSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontsize), ALL_NO_PREFIX);
+  KEYTIMES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keytimes, nsHtml5Atoms::keyTimes), ALL_NO_PREFIX);
+  PANOSE_1 = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::panose_1), ALL_NO_PREFIX);
+  HREFLANG = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hreflang), ALL_NO_PREFIX);
+  ONRESIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onresize), ALL_NO_PREFIX);
+  ONCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onchange), ALL_NO_PREFIX);
+  ONBOUNCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbounce), ALL_NO_PREFIX);
+  ONUNLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onunload), ALL_NO_PREFIX);
+  ONFINISH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfinish), ALL_NO_PREFIX);
+  ONSCROLL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onscroll), ALL_NO_PREFIX);
+  OPERATOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::operator_), ALL_NO_PREFIX);
+  OVERFLOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overflow), ALL_NO_PREFIX);
+  ONSUBMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onsubmit), ALL_NO_PREFIX);
+  ONREPEAT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrepeat), ALL_NO_PREFIX);
+  ONSELECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onselect), ALL_NO_PREFIX);
+  NOTATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::notation), ALL_NO_PREFIX);
+  NORESIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::noresize), ALL_NO_PREFIX);
+  MANIFEST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::manifest), ALL_NO_PREFIX);
+  MATHSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathsize), ALL_NO_PREFIX);
+  MULTIPLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::multiple), ALL_NO_PREFIX);
+  LONGDESC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::longdesc), ALL_NO_PREFIX);
+  LANGUAGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::language), ALL_NO_PREFIX);
+  TEMPLATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::template_), ALL_NO_PREFIX);
+  TABINDEX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::tabindex), ALL_NO_PREFIX);
+  READONLY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::readonly), ALL_NO_PREFIX);
+  SELECTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::selected), ALL_NO_PREFIX);
+  ROWLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowlines), ALL_NO_PREFIX);
+  SEAMLESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::seamless), ALL_NO_PREFIX);
+  ROWALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowalign), ALL_NO_PREFIX);
+  STRETCHY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stretchy), ALL_NO_PREFIX);
+  REQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::required), ALL_NO_PREFIX);
+  XML_BASE = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_base, nsHtml5Atoms::base), XML_PREFIX);
+  XML_LANG = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_lang, nsHtml5Atoms::lang), XML_PREFIX);
+  X_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::x_height), ALL_NO_PREFIX);
+  ARIA_OWNS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_owns), ALL_NO_PREFIX);
+  AUTOFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autofocus), ALL_NO_PREFIX);
+  ARIA_SORT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_sort), ALL_NO_PREFIX);
+  ACCESSKEY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accesskey), ALL_NO_PREFIX);
+  ARIA_BUSY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_busy), ALL_NO_PREFIX);
+  ARIA_GRAB = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_grab), ALL_NO_PREFIX);
+  AMPLITUDE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::amplitude), ALL_NO_PREFIX);
+  ARIA_LIVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_live), ALL_NO_PREFIX);
+  CLIP_RULE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip_rule), ALL_NO_PREFIX);
+  CLIP_PATH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::clip_path), ALL_NO_PREFIX);
+  EQUALROWS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::equalrows), ALL_NO_PREFIX);
+  ELEVATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::elevation), ALL_NO_PREFIX);
+  DIRECTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::direction), ALL_NO_PREFIX);
+  DRAGGABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::draggable), ALL_NO_PREFIX);
+  FILTERRES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::filterres, nsHtml5Atoms::filterRes), ALL_NO_PREFIX);
+  FILL_RULE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill_rule), ALL_NO_PREFIX);
+  FONTSTYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontstyle), ALL_NO_PREFIX);
+  FONT_SIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_size), ALL_NO_PREFIX);
+  KEYPOINTS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keypoints, nsHtml5Atoms::keyPoints), ALL_NO_PREFIX);
+  HIDEFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::hidefocus), ALL_NO_PREFIX);
+  ONMESSAGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmessage), ALL_NO_PREFIX);
+  INTERCEPT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::intercept), ALL_NO_PREFIX);
+  ONDRAGEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragend), ALL_NO_PREFIX);
+  ONMOVEEND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmoveend), ALL_NO_PREFIX);
+  ONINVALID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oninvalid), ALL_NO_PREFIX);
+  ONKEYDOWN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeydown), ALL_NO_PREFIX);
+  ONFOCUSIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocusin), ALL_NO_PREFIX);
+  ONMOUSEUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseup), ALL_NO_PREFIX);
+  INPUTMODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::inputmode), ALL_NO_PREFIX);
+  ONROWEXIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowexit), ALL_NO_PREFIX);
+  MATHCOLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathcolor), ALL_NO_PREFIX);
+  MASKUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::maskunits, nsHtml5Atoms::maskUnits), ALL_NO_PREFIX);
+  MAXLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::maxlength), ALL_NO_PREFIX);
+  LINEBREAK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::linebreak), ALL_NO_PREFIX);
+  LOOPSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::loopstart), ALL_NO_PREFIX);
+  TRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::transform), ALL_NO_PREFIX);
+  V_HANGING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_hanging), ALL_NO_PREFIX);
+  VALUETYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::valuetype), ALL_NO_PREFIX);
+  POINTSATZ = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsatz, nsHtml5Atoms::pointsAtZ), ALL_NO_PREFIX);
+  POINTSATX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsatx, nsHtml5Atoms::pointsAtX), ALL_NO_PREFIX);
+  POINTSATY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pointsaty, nsHtml5Atoms::pointsAtY), ALL_NO_PREFIX);
+  PLAYCOUNT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::playcount), ALL_NO_PREFIX);
+  SYMMETRIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::symmetric), ALL_NO_PREFIX);
+  SCROLLING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scrolling), ALL_NO_PREFIX);
+  REPEATDUR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::repeatdur, nsHtml5Atoms::repeatDur), ALL_NO_PREFIX);
+  SELECTION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::selection), ALL_NO_PREFIX);
+  SEPARATOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::separator), ALL_NO_PREFIX);
+  XML_SPACE = new nsHtml5AttributeName(XML_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xml_space, nsHtml5Atoms::space), XML_PREFIX);
+  AUTOSUBMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autosubmit), ALL_NO_PREFIX);
+  ALPHABETIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alphabetic), ALL_NO_PREFIX);
+  ACTIONTYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::actiontype), ALL_NO_PREFIX);
+  ACCUMULATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accumulate), ALL_NO_PREFIX);
+  ARIA_LEVEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_level), ALL_NO_PREFIX);
+  COLUMNSPAN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnspan), ALL_NO_PREFIX);
+  CAP_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cap_height), ALL_NO_PREFIX);
+  BACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::background), ALL_NO_PREFIX);
+  GLYPH_NAME = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_name), ALL_NO_PREFIX);
+  GROUPALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::groupalign), ALL_NO_PREFIX);
+  FONTFAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontfamily), ALL_NO_PREFIX);
+  FONTWEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fontweight), ALL_NO_PREFIX);
+  FONT_STYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_style), ALL_NO_PREFIX);
+  KEYSPLINES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::keysplines, nsHtml5Atoms::keySplines), ALL_NO_PREFIX);
+  HTTP_EQUIV = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::http_equiv), ALL_NO_PREFIX);
+  ONACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onactivate), ALL_NO_PREFIX);
+  OCCURRENCE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::occurrence), ALL_NO_PREFIX);
+  IRRELEVANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::irrelevant), ALL_NO_PREFIX);
+  ONDBLCLICK = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondblclick), ALL_NO_PREFIX);
+  ONDRAGDROP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragdrop), ALL_NO_PREFIX);
+  ONKEYPRESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onkeypress), ALL_NO_PREFIX);
+  ONROWENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowenter), ALL_NO_PREFIX);
+  ONDRAGOVER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragover), ALL_NO_PREFIX);
+  ONFOCUSOUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfocusout), ALL_NO_PREFIX);
+  ONMOUSEOUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseout), ALL_NO_PREFIX);
+  NUMOCTAVES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::numoctaves, nsHtml5Atoms::numOctaves), ALL_NO_PREFIX);
+  MARKER_MID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_mid), ALL_NO_PREFIX);
+  MARKER_END = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_end), ALL_NO_PREFIX);
+  TEXTLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::textlength, nsHtml5Atoms::textLength), ALL_NO_PREFIX);
+  VISIBILITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::visibility), ALL_NO_PREFIX);
+  VIEWTARGET = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::viewtarget, nsHtml5Atoms::viewTarget), ALL_NO_PREFIX);
+  VERT_ADV_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_adv_y), ALL_NO_PREFIX);
+  PATHLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::pathlength, nsHtml5Atoms::pathLength), ALL_NO_PREFIX);
+  REPEAT_MAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_max), ALL_NO_PREFIX);
+  RADIOGROUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::radiogroup), ALL_NO_PREFIX);
+  STOP_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stop_color), ALL_NO_PREFIX);
+  SEPARATORS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::separators), ALL_NO_PREFIX);
+  REPEAT_MIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_min), ALL_NO_PREFIX);
+  ROWSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rowspacing), ALL_NO_PREFIX);
+  ZOOMANDPAN = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::zoomandpan, nsHtml5Atoms::zoomAndPan), ALL_NO_PREFIX);
+  XLINK_TYPE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_type, nsHtml5Atoms::type), XLINK_PREFIX);
+  XLINK_ROLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_role, nsHtml5Atoms::role), XLINK_PREFIX);
+  XLINK_HREF = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_href, nsHtml5Atoms::href), XLINK_PREFIX);
+  XLINK_SHOW = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_show, nsHtml5Atoms::show), XLINK_PREFIX);
+  ACCENTUNDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accentunder), ALL_NO_PREFIX);
+  ARIA_SECRET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_secret), ALL_NO_PREFIX);
+  ARIA_ATOMIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_atomic), ALL_NO_PREFIX);
+  ARIA_HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_hidden), ALL_NO_PREFIX);
+  ARIA_FLOWTO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_flowto), ALL_NO_PREFIX);
+  ARABIC_FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::arabic_form), ALL_NO_PREFIX);
+  CELLPADDING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellpadding), ALL_NO_PREFIX);
+  CELLSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellspacing), ALL_NO_PREFIX);
+  COLUMNWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnwidth), ALL_NO_PREFIX);
+  COLUMNALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnalign), ALL_NO_PREFIX);
+  COLUMNLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnlines), ALL_NO_PREFIX);
+  CONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::contextmenu), ALL_NO_PREFIX);
+  BASEPROFILE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::baseprofile, nsHtml5Atoms::baseProfile), ALL_NO_PREFIX);
+  FONT_FAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_family), ALL_NO_PREFIX);
+  FRAMEBORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frameborder), ALL_NO_PREFIX);
+  FILTERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::filterunits, nsHtml5Atoms::filterUnits), ALL_NO_PREFIX);
+  FLOOD_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::flood_color), ALL_NO_PREFIX);
+  FONT_WEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_weight), ALL_NO_PREFIX);
+  HORIZ_ADV_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_adv_x), ALL_NO_PREFIX);
+  ONDRAGLEAVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragleave), ALL_NO_PREFIX);
+  ONMOUSEMOVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousemove), ALL_NO_PREFIX);
+  ORIENTATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::orientation), ALL_NO_PREFIX);
+  ONMOUSEDOWN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousedown), ALL_NO_PREFIX);
+  ONMOUSEOVER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseover), ALL_NO_PREFIX);
+  ONDRAGENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragenter), ALL_NO_PREFIX);
+  IDEOGRAPHIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ideographic), ALL_NO_PREFIX);
+  ONBEFORECUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforecut), ALL_NO_PREFIX);
+  ONFORMINPUT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onforminput), ALL_NO_PREFIX);
+  ONDRAGSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondragstart), ALL_NO_PREFIX);
+  ONMOVESTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmovestart), ALL_NO_PREFIX);
+  MARKERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerunits, nsHtml5Atoms::markerUnits), ALL_NO_PREFIX);
+  MATHVARIANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathvariant), ALL_NO_PREFIX);
+  MARGINWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marginwidth), ALL_NO_PREFIX);
+  MARKERWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerwidth, nsHtml5Atoms::markerWidth), ALL_NO_PREFIX);
+  TEXT_ANCHOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_anchor), ALL_NO_PREFIX);
+  TABLEVALUES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::tablevalues, nsHtml5Atoms::tableValues), ALL_NO_PREFIX);
+  SCRIPTLEVEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptlevel), ALL_NO_PREFIX);
+  REPEATCOUNT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::repeatcount, nsHtml5Atoms::repeatCount), ALL_NO_PREFIX);
+  STITCHTILES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::stitchtiles, nsHtml5Atoms::stitchTiles), ALL_NO_PREFIX);
+  STARTOFFSET = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::startoffset, nsHtml5Atoms::startOffset), ALL_NO_PREFIX);
+  SCROLLDELAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scrolldelay), ALL_NO_PREFIX);
+  XMLNS_XLINK = new nsHtml5AttributeName(XMLNS_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xmlns_xlink, nsHtml5Atoms::xlink), XMLNS_PREFIX);
+  XLINK_TITLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_title, nsHtml5Atoms::title), XLINK_PREFIX);
+  ARIA_INVALID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_invalid), ALL_NO_PREFIX);
+  ARIA_PRESSED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_pressed), ALL_NO_PREFIX);
+  ARIA_CHECKED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_checked), ALL_NO_PREFIX);
+  AUTOCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::autocomplete), ALL_NO_PREFIX);
+  ARIA_SETSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_setsize), ALL_NO_PREFIX);
+  ARIA_CHANNEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_channel), ALL_NO_PREFIX);
+  EQUALCOLUMNS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::equalcolumns), ALL_NO_PREFIX);
+  DISPLAYSTYLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::displaystyle), ALL_NO_PREFIX);
+  DATAFORMATAS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dataformatas), ALL_NO_PREFIX);
+  FILL_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::fill_opacity), ALL_NO_PREFIX);
+  FONT_VARIANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_variant), ALL_NO_PREFIX);
+  FONT_STRETCH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_stretch), ALL_NO_PREFIX);
+  FRAMESPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::framespacing), ALL_NO_PREFIX);
+  KERNELMATRIX = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::kernelmatrix, nsHtml5Atoms::kernelMatrix), ALL_NO_PREFIX);
+  ONDEACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondeactivate), ALL_NO_PREFIX);
+  ONROWSDELETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowsdelete), ALL_NO_PREFIX);
+  ONMOUSELEAVE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseleave), ALL_NO_PREFIX);
+  ONFORMCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onformchange), ALL_NO_PREFIX);
+  ONCELLCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncellchange), ALL_NO_PREFIX);
+  ONMOUSEWHEEL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmousewheel), ALL_NO_PREFIX);
+  ONMOUSEENTER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onmouseenter), ALL_NO_PREFIX);
+  ONAFTERPRINT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onafterprint), ALL_NO_PREFIX);
+  ONBEFORECOPY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforecopy), ALL_NO_PREFIX);
+  MARGINHEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marginheight), ALL_NO_PREFIX);
+  MARKERHEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::markerheight, nsHtml5Atoms::markerHeight), ALL_NO_PREFIX);
+  MARKER_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::marker_start), ALL_NO_PREFIX);
+  MATHEMATICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathematical), ALL_NO_PREFIX);
+  LENGTHADJUST = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::lengthadjust, nsHtml5Atoms::lengthAdjust), ALL_NO_PREFIX);
+  UNSELECTABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unselectable), ALL_NO_PREFIX);
+  UNICODE_BIDI = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_bidi), ALL_NO_PREFIX);
+  UNITS_PER_EM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::units_per_em), ALL_NO_PREFIX);
+  WORD_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::word_spacing), ALL_NO_PREFIX);
+  WRITING_MODE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::writing_mode), ALL_NO_PREFIX);
+  V_ALPHABETIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_alphabetic), ALL_NO_PREFIX);
+  PATTERNUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patternunits, nsHtml5Atoms::patternUnits), ALL_NO_PREFIX);
+  SPREADMETHOD = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::spreadmethod, nsHtml5Atoms::spreadMethod), ALL_NO_PREFIX);
+  SURFACESCALE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::surfacescale, nsHtml5Atoms::surfaceScale), ALL_NO_PREFIX);
+  STROKE_WIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_width), ALL_NO_PREFIX);
+  REPEAT_START = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_start), ALL_NO_PREFIX);
+  STDDEVIATION = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::stddeviation, nsHtml5Atoms::stdDeviation), ALL_NO_PREFIX);
+  STOP_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stop_opacity), ALL_NO_PREFIX);
+  ARIA_CONTROLS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_controls), ALL_NO_PREFIX);
+  ARIA_HASPOPUP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_haspopup), ALL_NO_PREFIX);
+  ACCENT_HEIGHT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accent_height), ALL_NO_PREFIX);
+  ARIA_VALUENOW = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuenow), ALL_NO_PREFIX);
+  ARIA_RELEVANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_relevant), ALL_NO_PREFIX);
+  ARIA_POSINSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_posinset), ALL_NO_PREFIX);
+  ARIA_VALUEMAX = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuemax), ALL_NO_PREFIX);
+  ARIA_READONLY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_readonly), ALL_NO_PREFIX);
+  ARIA_SELECTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_selected), ALL_NO_PREFIX);
+  ARIA_REQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_required), ALL_NO_PREFIX);
+  ARIA_EXPANDED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_expanded), ALL_NO_PREFIX);
+  ARIA_DISABLED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_disabled), ALL_NO_PREFIX);
+  ATTRIBUTETYPE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::attributetype, nsHtml5Atoms::attributeType), ALL_NO_PREFIX);
+  ATTRIBUTENAME = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::attributename, nsHtml5Atoms::attributeName), ALL_NO_PREFIX);
+  ARIA_DATATYPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_datatype), ALL_NO_PREFIX);
+  ARIA_VALUEMIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_valuemin), ALL_NO_PREFIX);
+  BASEFREQUENCY = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::basefrequency, nsHtml5Atoms::baseFrequency), ALL_NO_PREFIX);
+  COLUMNSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnspacing), ALL_NO_PREFIX);
+  COLOR_PROFILE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_profile), ALL_NO_PREFIX);
+  CLIPPATHUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::clippathunits, nsHtml5Atoms::clipPathUnits), ALL_NO_PREFIX);
+  DEFINITIONURL = new nsHtml5AttributeName(ALL_NO_NS, MATH_DIFFERENT(nsHtml5Atoms::definitionurl, nsHtml5Atoms::definitionURL), ALL_NO_PREFIX);
+  GRADIENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::gradientunits, nsHtml5Atoms::gradientUnits), ALL_NO_PREFIX);
+  FLOOD_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::flood_opacity), ALL_NO_PREFIX);
+  ONAFTERUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onafterupdate), ALL_NO_PREFIX);
+  ONERRORUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onerrorupdate), ALL_NO_PREFIX);
+  ONBEFOREPASTE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforepaste), ALL_NO_PREFIX);
+  ONLOSECAPTURE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onlosecapture), ALL_NO_PREFIX);
+  ONCONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncontextmenu), ALL_NO_PREFIX);
+  ONSELECTSTART = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onselectstart), ALL_NO_PREFIX);
+  ONBEFOREPRINT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeprint), ALL_NO_PREFIX);
+  MOVABLELIMITS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::movablelimits), ALL_NO_PREFIX);
+  LINETHICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::linethickness), ALL_NO_PREFIX);
+  UNICODE_RANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::unicode_range), ALL_NO_PREFIX);
+  THINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::thinmathspace), ALL_NO_PREFIX);
+  VERT_ORIGIN_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_origin_x), ALL_NO_PREFIX);
+  VERT_ORIGIN_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::vert_origin_y), ALL_NO_PREFIX);
+  V_IDEOGRAPHIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_ideographic), ALL_NO_PREFIX);
+  PRESERVEALPHA = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::preservealpha, nsHtml5Atoms::preserveAlpha), ALL_NO_PREFIX);
+  SCRIPTMINSIZE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptminsize), ALL_NO_PREFIX);
+  SPECIFICATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::specification), ALL_NO_PREFIX);
+  XLINK_ACTUATE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_actuate, nsHtml5Atoms::actuate), XLINK_PREFIX);
+  XLINK_ARCROLE = new nsHtml5AttributeName(XLINK_NS, COLONIFIED_LOCAL(nsHtml5Atoms::xlink_arcrole, nsHtml5Atoms::arcrole), XLINK_PREFIX);
+  ACCEPT_CHARSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::accept_charset), ALL_NO_PREFIX);
+  ALIGNMENTSCOPE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alignmentscope), ALL_NO_PREFIX);
+  ARIA_MULTILINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_multiline), ALL_NO_PREFIX);
+  BASELINE_SHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::baseline_shift), ALL_NO_PREFIX);
+  HORIZ_ORIGIN_X = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_origin_x), ALL_NO_PREFIX);
+  HORIZ_ORIGIN_Y = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::horiz_origin_y), ALL_NO_PREFIX);
+  ONBEFOREUPDATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeupdate), ALL_NO_PREFIX);
+  ONFILTERCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onfilterchange), ALL_NO_PREFIX);
+  ONROWSINSERTED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onrowsinserted), ALL_NO_PREFIX);
+  ONBEFOREUNLOAD = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeunload), ALL_NO_PREFIX);
+  MATHBACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mathbackground), ALL_NO_PREFIX);
+  LETTER_SPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::letter_spacing), ALL_NO_PREFIX);
+  LIGHTING_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::lighting_color), ALL_NO_PREFIX);
+  THICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::thickmathspace), ALL_NO_PREFIX);
+  TEXT_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_rendering), ALL_NO_PREFIX);
+  V_MATHEMATICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::v_mathematical), ALL_NO_PREFIX);
+  POINTER_EVENTS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::pointer_events), ALL_NO_PREFIX);
+  PRIMITIVEUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::primitiveunits, nsHtml5Atoms::primitiveUnits), ALL_NO_PREFIX);
+  SYSTEMLANGUAGE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::systemlanguage, nsHtml5Atoms::systemLanguage), ALL_NO_PREFIX);
+  STROKE_LINECAP = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_linecap), ALL_NO_PREFIX);
+  SUBSCRIPTSHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::subscriptshift), ALL_NO_PREFIX);
+  STROKE_OPACITY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_opacity), ALL_NO_PREFIX);
+  ARIA_DROPEFFECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_dropeffect), ALL_NO_PREFIX);
+  ARIA_LABELLEDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_labelledby), ALL_NO_PREFIX);
+  ARIA_TEMPLATEID = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_templateid), ALL_NO_PREFIX);
+  COLOR_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_rendering), ALL_NO_PREFIX);
+  CONTENTEDITABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::contenteditable), ALL_NO_PREFIX);
+  DIFFUSECONSTANT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::diffuseconstant, nsHtml5Atoms::diffuseConstant), ALL_NO_PREFIX);
+  ONDATAAVAILABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondataavailable), ALL_NO_PREFIX);
+  ONCONTROLSELECT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::oncontrolselect), ALL_NO_PREFIX);
+  IMAGE_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::image_rendering), ALL_NO_PREFIX);
+  MEDIUMMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::mediummathspace), ALL_NO_PREFIX);
+  TEXT_DECORATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::text_decoration), ALL_NO_PREFIX);
+  SHAPE_RENDERING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::shape_rendering), ALL_NO_PREFIX);
+  STROKE_LINEJOIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_linejoin), ALL_NO_PREFIX);
+  REPEAT_TEMPLATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::repeat_template), ALL_NO_PREFIX);
+  ARIA_DESCRIBEDBY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_describedby), ALL_NO_PREFIX);
+  CONTENTSTYLETYPE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::contentstyletype, nsHtml5Atoms::contentStyleType), ALL_NO_PREFIX);
+  FONT_SIZE_ADJUST = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_size_adjust), ALL_NO_PREFIX);
+  KERNELUNITLENGTH = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::kernelunitlength, nsHtml5Atoms::kernelUnitLength), ALL_NO_PREFIX);
+  ONBEFOREACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeactivate), ALL_NO_PREFIX);
+  ONPROPERTYCHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onpropertychange), ALL_NO_PREFIX);
+  ONDATASETCHANGED = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondatasetchanged), ALL_NO_PREFIX);
+  MASKCONTENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::maskcontentunits, nsHtml5Atoms::maskContentUnits), ALL_NO_PREFIX);
+  PATTERNTRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patterntransform, nsHtml5Atoms::patternTransform), ALL_NO_PREFIX);
+  REQUIREDFEATURES = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::requiredfeatures, nsHtml5Atoms::requiredFeatures), ALL_NO_PREFIX);
+  RENDERING_INTENT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::rendering_intent), ALL_NO_PREFIX);
+  SPECULAREXPONENT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::specularexponent, nsHtml5Atoms::specularExponent), ALL_NO_PREFIX);
+  SPECULARCONSTANT = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::specularconstant, nsHtml5Atoms::specularConstant), ALL_NO_PREFIX);
+  SUPERSCRIPTSHIFT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::superscriptshift), ALL_NO_PREFIX);
+  STROKE_DASHARRAY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_dasharray), ALL_NO_PREFIX);
+  XCHANNELSELECTOR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::xchannelselector, nsHtml5Atoms::xChannelSelector), ALL_NO_PREFIX);
+  YCHANNELSELECTOR = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::ychannelselector, nsHtml5Atoms::yChannelSelector), ALL_NO_PREFIX);
+  ARIA_AUTOCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_autocomplete), ALL_NO_PREFIX);
+  CONTENTSCRIPTTYPE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::contentscripttype, nsHtml5Atoms::contentScriptType), ALL_NO_PREFIX);
+  ENABLE_BACKGROUND = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::enable_background), ALL_NO_PREFIX);
+  DOMINANT_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::dominant_baseline), ALL_NO_PREFIX);
+  GRADIENTTRANSFORM = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::gradienttransform, nsHtml5Atoms::gradientTransform), ALL_NO_PREFIX);
+  ONBEFORDEACTIVATE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbefordeactivate), ALL_NO_PREFIX);
+  ONDATASETCOMPLETE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::ondatasetcomplete), ALL_NO_PREFIX);
+  OVERLINE_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overline_position), ALL_NO_PREFIX);
+  ONBEFOREEDITFOCUS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onbeforeeditfocus), ALL_NO_PREFIX);
+  LIMITINGCONEANGLE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::limitingconeangle, nsHtml5Atoms::limitingConeAngle), ALL_NO_PREFIX);
+  VERYTHINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::verythinmathspace), ALL_NO_PREFIX);
+  STROKE_DASHOFFSET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_dashoffset), ALL_NO_PREFIX);
+  STROKE_MITERLIMIT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::stroke_miterlimit), ALL_NO_PREFIX);
+  ALIGNMENT_BASELINE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::alignment_baseline), ALL_NO_PREFIX);
+  ONREADYSTATECHANGE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::onreadystatechange), ALL_NO_PREFIX);
+  OVERLINE_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::overline_thickness), ALL_NO_PREFIX);
+  UNDERLINE_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::underline_position), ALL_NO_PREFIX);
+  VERYTHICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::verythickmathspace), ALL_NO_PREFIX);
+  REQUIREDEXTENSIONS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::requiredextensions, nsHtml5Atoms::requiredExtensions), ALL_NO_PREFIX);
+  COLOR_INTERPOLATION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation), ALL_NO_PREFIX);
+  UNDERLINE_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::underline_thickness), ALL_NO_PREFIX);
+  PRESERVEASPECTRATIO = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::preserveaspectratio, nsHtml5Atoms::preserveAspectRatio), ALL_NO_PREFIX);
+  PATTERNCONTENTUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::patterncontentunits, nsHtml5Atoms::patternContentUnits), ALL_NO_PREFIX);
+  ARIA_MULTISELECTABLE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_multiselectable), ALL_NO_PREFIX);
+  SCRIPTSIZEMULTIPLIER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::scriptsizemultiplier), ALL_NO_PREFIX);
+  ARIA_ACTIVEDESCENDANT = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_activedescendant), ALL_NO_PREFIX);
+  VERYVERYTHINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::veryverythinmathspace), ALL_NO_PREFIX);
+  VERYVERYTHICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::veryverythickmathspace), ALL_NO_PREFIX);
+  STRIKETHROUGH_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_position), ALL_NO_PREFIX);
+  STRIKETHROUGH_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_thickness), ALL_NO_PREFIX);
+  EXTERNALRESOURCESREQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::externalresourcesrequired, nsHtml5Atoms::externalResourcesRequired), ALL_NO_PREFIX);
+  GLYPH_ORIENTATION_VERTICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_vertical), ALL_NO_PREFIX);
+  COLOR_INTERPOLATION_FILTERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation_filters), ALL_NO_PREFIX);
+  GLYPH_ORIENTATION_HORIZONTAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_horizontal), ALL_NO_PREFIX);
+  ATTRIBUTE_NAMES = new nsHtml5AttributeName*[581];
+  ATTRIBUTE_NAMES[0] = D;
+  ATTRIBUTE_NAMES[1] = K;
+  ATTRIBUTE_NAMES[2] = R;
+  ATTRIBUTE_NAMES[3] = X;
+  ATTRIBUTE_NAMES[4] = Y;
+  ATTRIBUTE_NAMES[5] = Z;
+  ATTRIBUTE_NAMES[6] = BY;
+  ATTRIBUTE_NAMES[7] = CX;
+  ATTRIBUTE_NAMES[8] = CY;
+  ATTRIBUTE_NAMES[9] = DX;
+  ATTRIBUTE_NAMES[10] = DY;
+  ATTRIBUTE_NAMES[11] = G2;
+  ATTRIBUTE_NAMES[12] = G1;
+  ATTRIBUTE_NAMES[13] = FX;
+  ATTRIBUTE_NAMES[14] = FY;
+  ATTRIBUTE_NAMES[15] = K4;
+  ATTRIBUTE_NAMES[16] = K2;
+  ATTRIBUTE_NAMES[17] = K3;
+  ATTRIBUTE_NAMES[18] = K1;
+  ATTRIBUTE_NAMES[19] = ID;
+  ATTRIBUTE_NAMES[20] = IN;
+  ATTRIBUTE_NAMES[21] = U2;
+  ATTRIBUTE_NAMES[22] = U1;
+  ATTRIBUTE_NAMES[23] = RT;
+  ATTRIBUTE_NAMES[24] = RX;
+  ATTRIBUTE_NAMES[25] = RY;
+  ATTRIBUTE_NAMES[26] = TO;
+  ATTRIBUTE_NAMES[27] = Y2;
+  ATTRIBUTE_NAMES[28] = Y1;
+  ATTRIBUTE_NAMES[29] = X1;
+  ATTRIBUTE_NAMES[30] = X2;
+  ATTRIBUTE_NAMES[31] = ALT;
+  ATTRIBUTE_NAMES[32] = DIR;
+  ATTRIBUTE_NAMES[33] = DUR;
+  ATTRIBUTE_NAMES[34] = END;
+  ATTRIBUTE_NAMES[35] = FOR;
+  ATTRIBUTE_NAMES[36] = IN2;
+  ATTRIBUTE_NAMES[37] = MAX;
+  ATTRIBUTE_NAMES[38] = MIN;
+  ATTRIBUTE_NAMES[39] = LOW;
+  ATTRIBUTE_NAMES[40] = REL;
+  ATTRIBUTE_NAMES[41] = REV;
+  ATTRIBUTE_NAMES[42] = SRC;
+  ATTRIBUTE_NAMES[43] = AXIS;
+  ATTRIBUTE_NAMES[44] = ABBR;
+  ATTRIBUTE_NAMES[45] = BBOX;
+  ATTRIBUTE_NAMES[46] = CITE;
+  ATTRIBUTE_NAMES[47] = CODE;
+  ATTRIBUTE_NAMES[48] = BIAS;
+  ATTRIBUTE_NAMES[49] = COLS;
+  ATTRIBUTE_NAMES[50] = CLIP;
+  ATTRIBUTE_NAMES[51] = CHAR;
+  ATTRIBUTE_NAMES[52] = BASE;
+  ATTRIBUTE_NAMES[53] = EDGE;
+  ATTRIBUTE_NAMES[54] = DATA;
+  ATTRIBUTE_NAMES[55] = FILL;
+  ATTRIBUTE_NAMES[56] = FROM;
+  ATTRIBUTE_NAMES[57] = FORM;
+  ATTRIBUTE_NAMES[58] = FACE;
+  ATTRIBUTE_NAMES[59] = HIGH;
+  ATTRIBUTE_NAMES[60] = HREF;
+  ATTRIBUTE_NAMES[61] = OPEN;
+  ATTRIBUTE_NAMES[62] = ICON;
+  ATTRIBUTE_NAMES[63] = NAME;
+  ATTRIBUTE_NAMES[64] = MODE;
+  ATTRIBUTE_NAMES[65] = MASK;
+  ATTRIBUTE_NAMES[66] = LINK;
+  ATTRIBUTE_NAMES[67] = LANG;
+  ATTRIBUTE_NAMES[68] = LIST;
+  ATTRIBUTE_NAMES[69] = TYPE;
+  ATTRIBUTE_NAMES[70] = WHEN;
+  ATTRIBUTE_NAMES[71] = WRAP;
+  ATTRIBUTE_NAMES[72] = TEXT;
+  ATTRIBUTE_NAMES[73] = PATH;
+  ATTRIBUTE_NAMES[74] = PING;
+  ATTRIBUTE_NAMES[75] = REFX;
+  ATTRIBUTE_NAMES[76] = REFY;
+  ATTRIBUTE_NAMES[77] = SIZE;
+  ATTRIBUTE_NAMES[78] = SEED;
+  ATTRIBUTE_NAMES[79] = ROWS;
+  ATTRIBUTE_NAMES[80] = SPAN;
+  ATTRIBUTE_NAMES[81] = STEP;
+  ATTRIBUTE_NAMES[82] = ROLE;
+  ATTRIBUTE_NAMES[83] = XREF;
+  ATTRIBUTE_NAMES[84] = ASYNC;
+  ATTRIBUTE_NAMES[85] = ALINK;
+  ATTRIBUTE_NAMES[86] = ALIGN;
+  ATTRIBUTE_NAMES[87] = CLOSE;
+  ATTRIBUTE_NAMES[88] = COLOR;
+  ATTRIBUTE_NAMES[89] = CLASS;
+  ATTRIBUTE_NAMES[90] = CLEAR;
+  ATTRIBUTE_NAMES[91] = BEGIN;
+  ATTRIBUTE_NAMES[92] = DEPTH;
+  ATTRIBUTE_NAMES[93] = DEFER;
+  ATTRIBUTE_NAMES[94] = FENCE;
+  ATTRIBUTE_NAMES[95] = FRAME;
+  ATTRIBUTE_NAMES[96] = ISMAP;
+  ATTRIBUTE_NAMES[97] = ONEND;
+  ATTRIBUTE_NAMES[98] = INDEX;
+  ATTRIBUTE_NAMES[99] = ORDER;
+  ATTRIBUTE_NAMES[100] = OTHER;
+  ATTRIBUTE_NAMES[101] = ONCUT;
+  ATTRIBUTE_NAMES[102] = NARGS;
+  ATTRIBUTE_NAMES[103] = MEDIA;
+  ATTRIBUTE_NAMES[104] = LABEL;
+  ATTRIBUTE_NAMES[105] = LOCAL;
+  ATTRIBUTE_NAMES[106] = WIDTH;
+  ATTRIBUTE_NAMES[107] = TITLE;
+  ATTRIBUTE_NAMES[108] = VLINK;
+  ATTRIBUTE_NAMES[109] = VALUE;
+  ATTRIBUTE_NAMES[110] = SLOPE;
+  ATTRIBUTE_NAMES[111] = SHAPE;
+  ATTRIBUTE_NAMES[112] = SCOPE;
+  ATTRIBUTE_NAMES[113] = SCALE;
+  ATTRIBUTE_NAMES[114] = SPEED;
+  ATTRIBUTE_NAMES[115] = STYLE;
+  ATTRIBUTE_NAMES[116] = RULES;
+  ATTRIBUTE_NAMES[117] = STEMH;
+  ATTRIBUTE_NAMES[118] = STEMV;
+  ATTRIBUTE_NAMES[119] = START;
+  ATTRIBUTE_NAMES[120] = XMLNS;
+  ATTRIBUTE_NAMES[121] = ACCEPT;
+  ATTRIBUTE_NAMES[122] = ACCENT;
+  ATTRIBUTE_NAMES[123] = ASCENT;
+  ATTRIBUTE_NAMES[124] = ACTIVE;
+  ATTRIBUTE_NAMES[125] = ALTIMG;
+  ATTRIBUTE_NAMES[126] = ACTION;
+  ATTRIBUTE_NAMES[127] = BORDER;
+  ATTRIBUTE_NAMES[128] = CURSOR;
+  ATTRIBUTE_NAMES[129] = COORDS;
+  ATTRIBUTE_NAMES[130] = FILTER;
+  ATTRIBUTE_NAMES[131] = FORMAT;
+  ATTRIBUTE_NAMES[132] = HIDDEN;
+  ATTRIBUTE_NAMES[133] = HSPACE;
+  ATTRIBUTE_NAMES[134] = HEIGHT;
+  ATTRIBUTE_NAMES[135] = ONMOVE;
+  ATTRIBUTE_NAMES[136] = ONLOAD;
+  ATTRIBUTE_NAMES[137] = ONDRAG;
+  ATTRIBUTE_NAMES[138] = ORIGIN;
+  ATTRIBUTE_NAMES[139] = ONZOOM;
+  ATTRIBUTE_NAMES[140] = ONHELP;
+  ATTRIBUTE_NAMES[141] = ONSTOP;
+  ATTRIBUTE_NAMES[142] = ONDROP;
+  ATTRIBUTE_NAMES[143] = ONBLUR;
+  ATTRIBUTE_NAMES[144] = OBJECT;
+  ATTRIBUTE_NAMES[145] = OFFSET;
+  ATTRIBUTE_NAMES[146] = ORIENT;
+  ATTRIBUTE_NAMES[147] = ONCOPY;
+  ATTRIBUTE_NAMES[148] = NOWRAP;
+  ATTRIBUTE_NAMES[149] = NOHREF;
+  ATTRIBUTE_NAMES[150] = MACROS;
+  ATTRIBUTE_NAMES[151] = METHOD;
+  ATTRIBUTE_NAMES[152] = LOWSRC;
+  ATTRIBUTE_NAMES[153] = LSPACE;
+  ATTRIBUTE_NAMES[154] = LQUOTE;
+  ATTRIBUTE_NAMES[155] = USEMAP;
+  ATTRIBUTE_NAMES[156] = WIDTHS;
+  ATTRIBUTE_NAMES[157] = TARGET;
+  ATTRIBUTE_NAMES[158] = VALUES;
+  ATTRIBUTE_NAMES[159] = VALIGN;
+  ATTRIBUTE_NAMES[160] = VSPACE;
+  ATTRIBUTE_NAMES[161] = POSTER;
+  ATTRIBUTE_NAMES[162] = POINTS;
+  ATTRIBUTE_NAMES[163] = PROMPT;
+  ATTRIBUTE_NAMES[164] = SCOPED;
+  ATTRIBUTE_NAMES[165] = STRING;
+  ATTRIBUTE_NAMES[166] = SCHEME;
+  ATTRIBUTE_NAMES[167] = STROKE;
+  ATTRIBUTE_NAMES[168] = RADIUS;
+  ATTRIBUTE_NAMES[169] = RESULT;
+  ATTRIBUTE_NAMES[170] = REPEAT;
+  ATTRIBUTE_NAMES[171] = RSPACE;
+  ATTRIBUTE_NAMES[172] = ROTATE;
+  ATTRIBUTE_NAMES[173] = RQUOTE;
+  ATTRIBUTE_NAMES[174] = ALTTEXT;
+  ATTRIBUTE_NAMES[175] = ARCHIVE;
+  ATTRIBUTE_NAMES[176] = AZIMUTH;
+  ATTRIBUTE_NAMES[177] = CLOSURE;
+  ATTRIBUTE_NAMES[178] = CHECKED;
+  ATTRIBUTE_NAMES[179] = CLASSID;
+  ATTRIBUTE_NAMES[180] = CHAROFF;
+  ATTRIBUTE_NAMES[181] = BGCOLOR;
+  ATTRIBUTE_NAMES[182] = COLSPAN;
+  ATTRIBUTE_NAMES[183] = CHARSET;
+  ATTRIBUTE_NAMES[184] = COMPACT;
+  ATTRIBUTE_NAMES[185] = CONTENT;
+  ATTRIBUTE_NAMES[186] = ENCTYPE;
+  ATTRIBUTE_NAMES[187] = DATASRC;
+  ATTRIBUTE_NAMES[188] = DATAFLD;
+  ATTRIBUTE_NAMES[189] = DECLARE;
+  ATTRIBUTE_NAMES[190] = DISPLAY;
+  ATTRIBUTE_NAMES[191] = DIVISOR;
+  ATTRIBUTE_NAMES[192] = DEFAULT;
+  ATTRIBUTE_NAMES[193] = DESCENT;
+  ATTRIBUTE_NAMES[194] = KERNING;
+  ATTRIBUTE_NAMES[195] = HANGING;
+  ATTRIBUTE_NAMES[196] = HEADERS;
+  ATTRIBUTE_NAMES[197] = ONPASTE;
+  ATTRIBUTE_NAMES[198] = ONCLICK;
+  ATTRIBUTE_NAMES[199] = OPTIMUM;
+  ATTRIBUTE_NAMES[200] = ONBEGIN;
+  ATTRIBUTE_NAMES[201] = ONKEYUP;
+  ATTRIBUTE_NAMES[202] = ONFOCUS;
+  ATTRIBUTE_NAMES[203] = ONERROR;
+  ATTRIBUTE_NAMES[204] = ONINPUT;
+  ATTRIBUTE_NAMES[205] = ONABORT;
+  ATTRIBUTE_NAMES[206] = ONSTART;
+  ATTRIBUTE_NAMES[207] = ONRESET;
+  ATTRIBUTE_NAMES[208] = OPACITY;
+  ATTRIBUTE_NAMES[209] = NOSHADE;
+  ATTRIBUTE_NAMES[210] = MINSIZE;
+  ATTRIBUTE_NAMES[211] = MAXSIZE;
+  ATTRIBUTE_NAMES[212] = LOOPEND;
+  ATTRIBUTE_NAMES[213] = LARGEOP;
+  ATTRIBUTE_NAMES[214] = UNICODE;
+  ATTRIBUTE_NAMES[215] = TARGETX;
+  ATTRIBUTE_NAMES[216] = TARGETY;
+  ATTRIBUTE_NAMES[217] = VIEWBOX;
+  ATTRIBUTE_NAMES[218] = VERSION;
+  ATTRIBUTE_NAMES[219] = PATTERN;
+  ATTRIBUTE_NAMES[220] = PROFILE;
+  ATTRIBUTE_NAMES[221] = SPACING;
+  ATTRIBUTE_NAMES[222] = RESTART;
+  ATTRIBUTE_NAMES[223] = ROWSPAN;
+  ATTRIBUTE_NAMES[224] = SANDBOX;
+  ATTRIBUTE_NAMES[225] = SUMMARY;
+  ATTRIBUTE_NAMES[226] = STANDBY;
+  ATTRIBUTE_NAMES[227] = REPLACE;
+  ATTRIBUTE_NAMES[228] = AUTOPLAY;
+  ATTRIBUTE_NAMES[229] = ADDITIVE;
+  ATTRIBUTE_NAMES[230] = CALCMODE;
+  ATTRIBUTE_NAMES[231] = CODETYPE;
+  ATTRIBUTE_NAMES[232] = CODEBASE;
+  ATTRIBUTE_NAMES[233] = CONTROLS;
+  ATTRIBUTE_NAMES[234] = BEVELLED;
+  ATTRIBUTE_NAMES[235] = BASELINE;
+  ATTRIBUTE_NAMES[236] = EXPONENT;
+  ATTRIBUTE_NAMES[237] = EDGEMODE;
+  ATTRIBUTE_NAMES[238] = ENCODING;
+  ATTRIBUTE_NAMES[239] = GLYPHREF;
+  ATTRIBUTE_NAMES[240] = DATETIME;
+  ATTRIBUTE_NAMES[241] = DISABLED;
+  ATTRIBUTE_NAMES[242] = FONTSIZE;
+  ATTRIBUTE_NAMES[243] = KEYTIMES;
+  ATTRIBUTE_NAMES[244] = PANOSE_1;
+  ATTRIBUTE_NAMES[245] = HREFLANG;
+  ATTRIBUTE_NAMES[246] = ONRESIZE;
+  ATTRIBUTE_NAMES[247] = ONCHANGE;
+  ATTRIBUTE_NAMES[248] = ONBOUNCE;
+  ATTRIBUTE_NAMES[249] = ONUNLOAD;
+  ATTRIBUTE_NAMES[250] = ONFINISH;
+  ATTRIBUTE_NAMES[251] = ONSCROLL;
+  ATTRIBUTE_NAMES[252] = OPERATOR;
+  ATTRIBUTE_NAMES[253] = OVERFLOW;
+  ATTRIBUTE_NAMES[254] = ONSUBMIT;
+  ATTRIBUTE_NAMES[255] = ONREPEAT;
+  ATTRIBUTE_NAMES[256] = ONSELECT;
+  ATTRIBUTE_NAMES[257] = NOTATION;
+  ATTRIBUTE_NAMES[258] = NORESIZE;
+  ATTRIBUTE_NAMES[259] = MANIFEST;
+  ATTRIBUTE_NAMES[260] = MATHSIZE;
+  ATTRIBUTE_NAMES[261] = MULTIPLE;
+  ATTRIBUTE_NAMES[262] = LONGDESC;
+  ATTRIBUTE_NAMES[263] = LANGUAGE;
+  ATTRIBUTE_NAMES[264] = TEMPLATE;
+  ATTRIBUTE_NAMES[265] = TABINDEX;
+  ATTRIBUTE_NAMES[266] = READONLY;
+  ATTRIBUTE_NAMES[267] = SELECTED;
+  ATTRIBUTE_NAMES[268] = ROWLINES;
+  ATTRIBUTE_NAMES[269] = SEAMLESS;
+  ATTRIBUTE_NAMES[270] = ROWALIGN;
+  ATTRIBUTE_NAMES[271] = STRETCHY;
+  ATTRIBUTE_NAMES[272] = REQUIRED;
+  ATTRIBUTE_NAMES[273] = XML_BASE;
+  ATTRIBUTE_NAMES[274] = XML_LANG;
+  ATTRIBUTE_NAMES[275] = X_HEIGHT;
+  ATTRIBUTE_NAMES[276] = ARIA_OWNS;
+  ATTRIBUTE_NAMES[277] = AUTOFOCUS;
+  ATTRIBUTE_NAMES[278] = ARIA_SORT;
+  ATTRIBUTE_NAMES[279] = ACCESSKEY;
+  ATTRIBUTE_NAMES[280] = ARIA_BUSY;
+  ATTRIBUTE_NAMES[281] = ARIA_GRAB;
+  ATTRIBUTE_NAMES[282] = AMPLITUDE;
+  ATTRIBUTE_NAMES[283] = ARIA_LIVE;
+  ATTRIBUTE_NAMES[284] = CLIP_RULE;
+  ATTRIBUTE_NAMES[285] = CLIP_PATH;
+  ATTRIBUTE_NAMES[286] = EQUALROWS;
+  ATTRIBUTE_NAMES[287] = ELEVATION;
+  ATTRIBUTE_NAMES[288] = DIRECTION;
+  ATTRIBUTE_NAMES[289] = DRAGGABLE;
+  ATTRIBUTE_NAMES[290] = FILTERRES;
+  ATTRIBUTE_NAMES[291] = FILL_RULE;
+  ATTRIBUTE_NAMES[292] = FONTSTYLE;
+  ATTRIBUTE_NAMES[293] = FONT_SIZE;
+  ATTRIBUTE_NAMES[294] = KEYPOINTS;
+  ATTRIBUTE_NAMES[295] = HIDEFOCUS;
+  ATTRIBUTE_NAMES[296] = ONMESSAGE;
+  ATTRIBUTE_NAMES[297] = INTERCEPT;
+  ATTRIBUTE_NAMES[298] = ONDRAGEND;
+  ATTRIBUTE_NAMES[299] = ONMOVEEND;
+  ATTRIBUTE_NAMES[300] = ONINVALID;
+  ATTRIBUTE_NAMES[301] = ONKEYDOWN;
+  ATTRIBUTE_NAMES[302] = ONFOCUSIN;
+  ATTRIBUTE_NAMES[303] = ONMOUSEUP;
+  ATTRIBUTE_NAMES[304] = INPUTMODE;
+  ATTRIBUTE_NAMES[305] = ONROWEXIT;
+  ATTRIBUTE_NAMES[306] = MATHCOLOR;
+  ATTRIBUTE_NAMES[307] = MASKUNITS;
+  ATTRIBUTE_NAMES[308] = MAXLENGTH;
+  ATTRIBUTE_NAMES[309] = LINEBREAK;
+  ATTRIBUTE_NAMES[310] = LOOPSTART;
+  ATTRIBUTE_NAMES[311] = TRANSFORM;
+  ATTRIBUTE_NAMES[312] = V_HANGING;
+  ATTRIBUTE_NAMES[313] = VALUETYPE;
+  ATTRIBUTE_NAMES[314] = POINTSATZ;
+  ATTRIBUTE_NAMES[315] = POINTSATX;
+  ATTRIBUTE_NAMES[316] = POINTSATY;
+  ATTRIBUTE_NAMES[317] = PLAYCOUNT;
+  ATTRIBUTE_NAMES[318] = SYMMETRIC;
+  ATTRIBUTE_NAMES[319] = SCROLLING;
+  ATTRIBUTE_NAMES[320] = REPEATDUR;
+  ATTRIBUTE_NAMES[321] = SELECTION;
+  ATTRIBUTE_NAMES[322] = SEPARATOR;
+  ATTRIBUTE_NAMES[323] = XML_SPACE;
+  ATTRIBUTE_NAMES[324] = AUTOSUBMIT;
+  ATTRIBUTE_NAMES[325] = ALPHABETIC;
+  ATTRIBUTE_NAMES[326] = ACTIONTYPE;
+  ATTRIBUTE_NAMES[327] = ACCUMULATE;
+  ATTRIBUTE_NAMES[328] = ARIA_LEVEL;
+  ATTRIBUTE_NAMES[329] = COLUMNSPAN;
+  ATTRIBUTE_NAMES[330] = CAP_HEIGHT;
+  ATTRIBUTE_NAMES[331] = BACKGROUND;
+  ATTRIBUTE_NAMES[332] = GLYPH_NAME;
+  ATTRIBUTE_NAMES[333] = GROUPALIGN;
+  ATTRIBUTE_NAMES[334] = FONTFAMILY;
+  ATTRIBUTE_NAMES[335] = FONTWEIGHT;
+  ATTRIBUTE_NAMES[336] = FONT_STYLE;
+  ATTRIBUTE_NAMES[337] = KEYSPLINES;
+  ATTRIBUTE_NAMES[338] = HTTP_EQUIV;
+  ATTRIBUTE_NAMES[339] = ONACTIVATE;
+  ATTRIBUTE_NAMES[340] = OCCURRENCE;
+  ATTRIBUTE_NAMES[341] = IRRELEVANT;
+  ATTRIBUTE_NAMES[342] = ONDBLCLICK;
+  ATTRIBUTE_NAMES[343] = ONDRAGDROP;
+  ATTRIBUTE_NAMES[344] = ONKEYPRESS;
+  ATTRIBUTE_NAMES[345] = ONROWENTER;
+  ATTRIBUTE_NAMES[346] = ONDRAGOVER;
+  ATTRIBUTE_NAMES[347] = ONFOCUSOUT;
+  ATTRIBUTE_NAMES[348] = ONMOUSEOUT;
+  ATTRIBUTE_NAMES[349] = NUMOCTAVES;
+  ATTRIBUTE_NAMES[350] = MARKER_MID;
+  ATTRIBUTE_NAMES[351] = MARKER_END;
+  ATTRIBUTE_NAMES[352] = TEXTLENGTH;
+  ATTRIBUTE_NAMES[353] = VISIBILITY;
+  ATTRIBUTE_NAMES[354] = VIEWTARGET;
+  ATTRIBUTE_NAMES[355] = VERT_ADV_Y;
+  ATTRIBUTE_NAMES[356] = PATHLENGTH;
+  ATTRIBUTE_NAMES[357] = REPEAT_MAX;
+  ATTRIBUTE_NAMES[358] = RADIOGROUP;
+  ATTRIBUTE_NAMES[359] = STOP_COLOR;
+  ATTRIBUTE_NAMES[360] = SEPARATORS;
+  ATTRIBUTE_NAMES[361] = REPEAT_MIN;
+  ATTRIBUTE_NAMES[362] = ROWSPACING;
+  ATTRIBUTE_NAMES[363] = ZOOMANDPAN;
+  ATTRIBUTE_NAMES[364] = XLINK_TYPE;
+  ATTRIBUTE_NAMES[365] = XLINK_ROLE;
+  ATTRIBUTE_NAMES[366] = XLINK_HREF;
+  ATTRIBUTE_NAMES[367] = XLINK_SHOW;
+  ATTRIBUTE_NAMES[368] = ACCENTUNDER;
+  ATTRIBUTE_NAMES[369] = ARIA_SECRET;
+  ATTRIBUTE_NAMES[370] = ARIA_ATOMIC;
+  ATTRIBUTE_NAMES[371] = ARIA_HIDDEN;
+  ATTRIBUTE_NAMES[372] = ARIA_FLOWTO;
+  ATTRIBUTE_NAMES[373] = ARABIC_FORM;
+  ATTRIBUTE_NAMES[374] = CELLPADDING;
+  ATTRIBUTE_NAMES[375] = CELLSPACING;
+  ATTRIBUTE_NAMES[376] = COLUMNWIDTH;
+  ATTRIBUTE_NAMES[377] = COLUMNALIGN;
+  ATTRIBUTE_NAMES[378] = COLUMNLINES;
+  ATTRIBUTE_NAMES[379] = CONTEXTMENU;
+  ATTRIBUTE_NAMES[380] = BASEPROFILE;
+  ATTRIBUTE_NAMES[381] = FONT_FAMILY;
+  ATTRIBUTE_NAMES[382] = FRAMEBORDER;
+  ATTRIBUTE_NAMES[383] = FILTERUNITS;
+  ATTRIBUTE_NAMES[384] = FLOOD_COLOR;
+  ATTRIBUTE_NAMES[385] = FONT_WEIGHT;
+  ATTRIBUTE_NAMES[386] = HORIZ_ADV_X;
+  ATTRIBUTE_NAMES[387] = ONDRAGLEAVE;
+  ATTRIBUTE_NAMES[388] = ONMOUSEMOVE;
+  ATTRIBUTE_NAMES[389] = ORIENTATION;
+  ATTRIBUTE_NAMES[390] = ONMOUSEDOWN;
+  ATTRIBUTE_NAMES[391] = ONMOUSEOVER;
+  ATTRIBUTE_NAMES[392] = ONDRAGENTER;
+  ATTRIBUTE_NAMES[393] = IDEOGRAPHIC;
+  ATTRIBUTE_NAMES[394] = ONBEFORECUT;
+  ATTRIBUTE_NAMES[395] = ONFORMINPUT;
+  ATTRIBUTE_NAMES[396] = ONDRAGSTART;
+  ATTRIBUTE_NAMES[397] = ONMOVESTART;
+  ATTRIBUTE_NAMES[398] = MARKERUNITS;
+  ATTRIBUTE_NAMES[399] = MATHVARIANT;
+  ATTRIBUTE_NAMES[400] = MARGINWIDTH;
+  ATTRIBUTE_NAMES[401] = MARKERWIDTH;
+  ATTRIBUTE_NAMES[402] = TEXT_ANCHOR;
+  ATTRIBUTE_NAMES[403] = TABLEVALUES;
+  ATTRIBUTE_NAMES[404] = SCRIPTLEVEL;
+  ATTRIBUTE_NAMES[405] = REPEATCOUNT;
+  ATTRIBUTE_NAMES[406] = STITCHTILES;
+  ATTRIBUTE_NAMES[407] = STARTOFFSET;
+  ATTRIBUTE_NAMES[408] = SCROLLDELAY;
+  ATTRIBUTE_NAMES[409] = XMLNS_XLINK;
+  ATTRIBUTE_NAMES[410] = XLINK_TITLE;
+  ATTRIBUTE_NAMES[411] = ARIA_INVALID;
+  ATTRIBUTE_NAMES[412] = ARIA_PRESSED;
+  ATTRIBUTE_NAMES[413] = ARIA_CHECKED;
+  ATTRIBUTE_NAMES[414] = AUTOCOMPLETE;
+  ATTRIBUTE_NAMES[415] = ARIA_SETSIZE;
+  ATTRIBUTE_NAMES[416] = ARIA_CHANNEL;
+  ATTRIBUTE_NAMES[417] = EQUALCOLUMNS;
+  ATTRIBUTE_NAMES[418] = DISPLAYSTYLE;
+  ATTRIBUTE_NAMES[419] = DATAFORMATAS;
+  ATTRIBUTE_NAMES[420] = FILL_OPACITY;
+  ATTRIBUTE_NAMES[421] = FONT_VARIANT;
+  ATTRIBUTE_NAMES[422] = FONT_STRETCH;
+  ATTRIBUTE_NAMES[423] = FRAMESPACING;
+  ATTRIBUTE_NAMES[424] = KERNELMATRIX;
+  ATTRIBUTE_NAMES[425] = ONDEACTIVATE;
+  ATTRIBUTE_NAMES[426] = ONROWSDELETE;
+  ATTRIBUTE_NAMES[427] = ONMOUSELEAVE;
+  ATTRIBUTE_NAMES[428] = ONFORMCHANGE;
+  ATTRIBUTE_NAMES[429] = ONCELLCHANGE;
+  ATTRIBUTE_NAMES[430] = ONMOUSEWHEEL;
+  ATTRIBUTE_NAMES[431] = ONMOUSEENTER;
+  ATTRIBUTE_NAMES[432] = ONAFTERPRINT;
+  ATTRIBUTE_NAMES[433] = ONBEFORECOPY;
+  ATTRIBUTE_NAMES[434] = MARGINHEIGHT;
+  ATTRIBUTE_NAMES[435] = MARKERHEIGHT;
+  ATTRIBUTE_NAMES[436] = MARKER_START;
+  ATTRIBUTE_NAMES[437] = MATHEMATICAL;
+  ATTRIBUTE_NAMES[438] = LENGTHADJUST;
+  ATTRIBUTE_NAMES[439] = UNSELECTABLE;
+  ATTRIBUTE_NAMES[440] = UNICODE_BIDI;
+  ATTRIBUTE_NAMES[441] = UNITS_PER_EM;
+  ATTRIBUTE_NAMES[442] = WORD_SPACING;
+  ATTRIBUTE_NAMES[443] = WRITING_MODE;
+  ATTRIBUTE_NAMES[444] = V_ALPHABETIC;
+  ATTRIBUTE_NAMES[445] = PATTERNUNITS;
+  ATTRIBUTE_NAMES[446] = SPREADMETHOD;
+  ATTRIBUTE_NAMES[447] = SURFACESCALE;
+  ATTRIBUTE_NAMES[448] = STROKE_WIDTH;
+  ATTRIBUTE_NAMES[449] = REPEAT_START;
+  ATTRIBUTE_NAMES[450] = STDDEVIATION;
+  ATTRIBUTE_NAMES[451] = STOP_OPACITY;
+  ATTRIBUTE_NAMES[452] = ARIA_CONTROLS;
+  ATTRIBUTE_NAMES[453] = ARIA_HASPOPUP;
+  ATTRIBUTE_NAMES[454] = ACCENT_HEIGHT;
+  ATTRIBUTE_NAMES[455] = ARIA_VALUENOW;
+  ATTRIBUTE_NAMES[456] = ARIA_RELEVANT;
+  ATTRIBUTE_NAMES[457] = ARIA_POSINSET;
+  ATTRIBUTE_NAMES[458] = ARIA_VALUEMAX;
+  ATTRIBUTE_NAMES[459] = ARIA_READONLY;
+  ATTRIBUTE_NAMES[460] = ARIA_SELECTED;
+  ATTRIBUTE_NAMES[461] = ARIA_REQUIRED;
+  ATTRIBUTE_NAMES[462] = ARIA_EXPANDED;
+  ATTRIBUTE_NAMES[463] = ARIA_DISABLED;
+  ATTRIBUTE_NAMES[464] = ATTRIBUTETYPE;
+  ATTRIBUTE_NAMES[465] = ATTRIBUTENAME;
+  ATTRIBUTE_NAMES[466] = ARIA_DATATYPE;
+  ATTRIBUTE_NAMES[467] = ARIA_VALUEMIN;
+  ATTRIBUTE_NAMES[468] = BASEFREQUENCY;
+  ATTRIBUTE_NAMES[469] = COLUMNSPACING;
+  ATTRIBUTE_NAMES[470] = COLOR_PROFILE;
+  ATTRIBUTE_NAMES[471] = CLIPPATHUNITS;
+  ATTRIBUTE_NAMES[472] = DEFINITIONURL;
+  ATTRIBUTE_NAMES[473] = GRADIENTUNITS;
+  ATTRIBUTE_NAMES[474] = FLOOD_OPACITY;
+  ATTRIBUTE_NAMES[475] = ONAFTERUPDATE;
+  ATTRIBUTE_NAMES[476] = ONERRORUPDATE;
+  ATTRIBUTE_NAMES[477] = ONBEFOREPASTE;
+  ATTRIBUTE_NAMES[478] = ONLOSECAPTURE;
+  ATTRIBUTE_NAMES[479] = ONCONTEXTMENU;
+  ATTRIBUTE_NAMES[480] = ONSELECTSTART;
+  ATTRIBUTE_NAMES[481] = ONBEFOREPRINT;
+  ATTRIBUTE_NAMES[482] = MOVABLELIMITS;
+  ATTRIBUTE_NAMES[483] = LINETHICKNESS;
+  ATTRIBUTE_NAMES[484] = UNICODE_RANGE;
+  ATTRIBUTE_NAMES[485] = THINMATHSPACE;
+  ATTRIBUTE_NAMES[486] = VERT_ORIGIN_X;
+  ATTRIBUTE_NAMES[487] = VERT_ORIGIN_Y;
+  ATTRIBUTE_NAMES[488] = V_IDEOGRAPHIC;
+  ATTRIBUTE_NAMES[489] = PRESERVEALPHA;
+  ATTRIBUTE_NAMES[490] = SCRIPTMINSIZE;
+  ATTRIBUTE_NAMES[491] = SPECIFICATION;
+  ATTRIBUTE_NAMES[492] = XLINK_ACTUATE;
+  ATTRIBUTE_NAMES[493] = XLINK_ARCROLE;
+  ATTRIBUTE_NAMES[494] = ACCEPT_CHARSET;
+  ATTRIBUTE_NAMES[495] = ALIGNMENTSCOPE;
+  ATTRIBUTE_NAMES[496] = ARIA_MULTILINE;
+  ATTRIBUTE_NAMES[497] = BASELINE_SHIFT;
+  ATTRIBUTE_NAMES[498] = HORIZ_ORIGIN_X;
+  ATTRIBUTE_NAMES[499] = HORIZ_ORIGIN_Y;
+  ATTRIBUTE_NAMES[500] = ONBEFOREUPDATE;
+  ATTRIBUTE_NAMES[501] = ONFILTERCHANGE;
+  ATTRIBUTE_NAMES[502] = ONROWSINSERTED;
+  ATTRIBUTE_NAMES[503] = ONBEFOREUNLOAD;
+  ATTRIBUTE_NAMES[504] = MATHBACKGROUND;
+  ATTRIBUTE_NAMES[505] = LETTER_SPACING;
+  ATTRIBUTE_NAMES[506] = LIGHTING_COLOR;
+  ATTRIBUTE_NAMES[507] = THICKMATHSPACE;
+  ATTRIBUTE_NAMES[508] = TEXT_RENDERING;
+  ATTRIBUTE_NAMES[509] = V_MATHEMATICAL;
+  ATTRIBUTE_NAMES[510] = POINTER_EVENTS;
+  ATTRIBUTE_NAMES[511] = PRIMITIVEUNITS;
+  ATTRIBUTE_NAMES[512] = SYSTEMLANGUAGE;
+  ATTRIBUTE_NAMES[513] = STROKE_LINECAP;
+  ATTRIBUTE_NAMES[514] = SUBSCRIPTSHIFT;
+  ATTRIBUTE_NAMES[515] = STROKE_OPACITY;
+  ATTRIBUTE_NAMES[516] = ARIA_DROPEFFECT;
+  ATTRIBUTE_NAMES[517] = ARIA_LABELLEDBY;
+  ATTRIBUTE_NAMES[518] = ARIA_TEMPLATEID;
+  ATTRIBUTE_NAMES[519] = COLOR_RENDERING;
+  ATTRIBUTE_NAMES[520] = CONTENTEDITABLE;
+  ATTRIBUTE_NAMES[521] = DIFFUSECONSTANT;
+  ATTRIBUTE_NAMES[522] = ONDATAAVAILABLE;
+  ATTRIBUTE_NAMES[523] = ONCONTROLSELECT;
+  ATTRIBUTE_NAMES[524] = IMAGE_RENDERING;
+  ATTRIBUTE_NAMES[525] = MEDIUMMATHSPACE;
+  ATTRIBUTE_NAMES[526] = TEXT_DECORATION;
+  ATTRIBUTE_NAMES[527] = SHAPE_RENDERING;
+  ATTRIBUTE_NAMES[528] = STROKE_LINEJOIN;
+  ATTRIBUTE_NAMES[529] = REPEAT_TEMPLATE;
+  ATTRIBUTE_NAMES[530] = ARIA_DESCRIBEDBY;
+  ATTRIBUTE_NAMES[531] = CONTENTSTYLETYPE;
+  ATTRIBUTE_NAMES[532] = FONT_SIZE_ADJUST;
+  ATTRIBUTE_NAMES[533] = KERNELUNITLENGTH;
+  ATTRIBUTE_NAMES[534] = ONBEFOREACTIVATE;
+  ATTRIBUTE_NAMES[535] = ONPROPERTYCHANGE;
+  ATTRIBUTE_NAMES[536] = ONDATASETCHANGED;
+  ATTRIBUTE_NAMES[537] = MASKCONTENTUNITS;
+  ATTRIBUTE_NAMES[538] = PATTERNTRANSFORM;
+  ATTRIBUTE_NAMES[539] = REQUIREDFEATURES;
+  ATTRIBUTE_NAMES[540] = RENDERING_INTENT;
+  ATTRIBUTE_NAMES[541] = SPECULAREXPONENT;
+  ATTRIBUTE_NAMES[542] = SPECULARCONSTANT;
+  ATTRIBUTE_NAMES[543] = SUPERSCRIPTSHIFT;
+  ATTRIBUTE_NAMES[544] = STROKE_DASHARRAY;
+  ATTRIBUTE_NAMES[545] = XCHANNELSELECTOR;
+  ATTRIBUTE_NAMES[546] = YCHANNELSELECTOR;
+  ATTRIBUTE_NAMES[547] = ARIA_AUTOCOMPLETE;
+  ATTRIBUTE_NAMES[548] = CONTENTSCRIPTTYPE;
+  ATTRIBUTE_NAMES[549] = ENABLE_BACKGROUND;
+  ATTRIBUTE_NAMES[550] = DOMINANT_BASELINE;
+  ATTRIBUTE_NAMES[551] = GRADIENTTRANSFORM;
+  ATTRIBUTE_NAMES[552] = ONBEFORDEACTIVATE;
+  ATTRIBUTE_NAMES[553] = ONDATASETCOMPLETE;
+  ATTRIBUTE_NAMES[554] = OVERLINE_POSITION;
+  ATTRIBUTE_NAMES[555] = ONBEFOREEDITFOCUS;
+  ATTRIBUTE_NAMES[556] = LIMITINGCONEANGLE;
+  ATTRIBUTE_NAMES[557] = VERYTHINMATHSPACE;
+  ATTRIBUTE_NAMES[558] = STROKE_DASHOFFSET;
+  ATTRIBUTE_NAMES[559] = STROKE_MITERLIMIT;
+  ATTRIBUTE_NAMES[560] = ALIGNMENT_BASELINE;
+  ATTRIBUTE_NAMES[561] = ONREADYSTATECHANGE;
+  ATTRIBUTE_NAMES[562] = OVERLINE_THICKNESS;
+  ATTRIBUTE_NAMES[563] = UNDERLINE_POSITION;
+  ATTRIBUTE_NAMES[564] = VERYTHICKMATHSPACE;
+  ATTRIBUTE_NAMES[565] = REQUIREDEXTENSIONS;
+  ATTRIBUTE_NAMES[566] = COLOR_INTERPOLATION;
+  ATTRIBUTE_NAMES[567] = UNDERLINE_THICKNESS;
+  ATTRIBUTE_NAMES[568] = PRESERVEASPECTRATIO;
+  ATTRIBUTE_NAMES[569] = PATTERNCONTENTUNITS;
+  ATTRIBUTE_NAMES[570] = ARIA_MULTISELECTABLE;
+  ATTRIBUTE_NAMES[571] = SCRIPTSIZEMULTIPLIER;
+  ATTRIBUTE_NAMES[572] = ARIA_ACTIVEDESCENDANT;
+  ATTRIBUTE_NAMES[573] = VERYVERYTHINMATHSPACE;
+  ATTRIBUTE_NAMES[574] = VERYVERYTHICKMATHSPACE;
+  ATTRIBUTE_NAMES[575] = STRIKETHROUGH_POSITION;
+  ATTRIBUTE_NAMES[576] = STRIKETHROUGH_THICKNESS;
+  ATTRIBUTE_NAMES[577] = EXTERNALRESOURCESREQUIRED;
+  ATTRIBUTE_NAMES[578] = GLYPH_ORIENTATION_VERTICAL;
+  ATTRIBUTE_NAMES[579] = COLOR_INTERPOLATION_FILTERS;
+  ATTRIBUTE_NAMES[580] = GLYPH_ORIENTATION_HORIZONTAL;
+}
+
+void
+nsHtml5AttributeName::releaseStatics()
+{
+  delete[] ALL_NO_NS;
+  delete[] XMLNS_NS;
+  delete[] XML_NS;
+  delete[] XLINK_NS;
+  delete[] ALL_NO_PREFIX;
+  delete[] XMLNS_PREFIX;
+  delete[] XLINK_PREFIX;
+  delete[] XML_PREFIX;
+  delete D;
+  delete K;
+  delete R;
+  delete X;
+  delete Y;
+  delete Z;
+  delete BY;
+  delete CX;
+  delete CY;
+  delete DX;
+  delete DY;
+  delete G2;
+  delete G1;
+  delete FX;
+  delete FY;
+  delete K4;
+  delete K2;
+  delete K3;
+  delete K1;
+  delete ID;
+  delete IN;
+  delete U2;
+  delete U1;
+  delete RT;
+  delete RX;
+  delete RY;
+  delete TO;
+  delete Y2;
+  delete Y1;
+  delete X1;
+  delete X2;
+  delete ALT;
+  delete DIR;
+  delete DUR;
+  delete END;
+  delete FOR;
+  delete IN2;
+  delete MAX;
+  delete MIN;
+  delete LOW;
+  delete REL;
+  delete REV;
+  delete SRC;
+  delete AXIS;
+  delete ABBR;
+  delete BBOX;
+  delete CITE;
+  delete CODE;
+  delete BIAS;
+  delete COLS;
+  delete CLIP;
+  delete CHAR;
+  delete BASE;
+  delete EDGE;
+  delete DATA;
+  delete FILL;
+  delete FROM;
+  delete FORM;
+  delete FACE;
+  delete HIGH;
+  delete HREF;
+  delete OPEN;
+  delete ICON;
+  delete NAME;
+  delete MODE;
+  delete MASK;
+  delete LINK;
+  delete LANG;
+  delete LIST;
+  delete TYPE;
+  delete WHEN;
+  delete WRAP;
+  delete TEXT;
+  delete PATH;
+  delete PING;
+  delete REFX;
+  delete REFY;
+  delete SIZE;
+  delete SEED;
+  delete ROWS;
+  delete SPAN;
+  delete STEP;
+  delete ROLE;
+  delete XREF;
+  delete ASYNC;
+  delete ALINK;
+  delete ALIGN;
+  delete CLOSE;
+  delete COLOR;
+  delete CLASS;
+  delete CLEAR;
+  delete BEGIN;
+  delete DEPTH;
+  delete DEFER;
+  delete FENCE;
+  delete FRAME;
+  delete ISMAP;
+  delete ONEND;
+  delete INDEX;
+  delete ORDER;
+  delete OTHER;
+  delete ONCUT;
+  delete NARGS;
+  delete MEDIA;
+  delete LABEL;
+  delete LOCAL;
+  delete WIDTH;
+  delete TITLE;
+  delete VLINK;
+  delete VALUE;
+  delete SLOPE;
+  delete SHAPE;
+  delete SCOPE;
+  delete SCALE;
+  delete SPEED;
+  delete STYLE;
+  delete RULES;
+  delete STEMH;
+  delete STEMV;
+  delete START;
+  delete XMLNS;
+  delete ACCEPT;
+  delete ACCENT;
+  delete ASCENT;
+  delete ACTIVE;
+  delete ALTIMG;
+  delete ACTION;
+  delete BORDER;
+  delete CURSOR;
+  delete COORDS;
+  delete FILTER;
+  delete FORMAT;
+  delete HIDDEN;
+  delete HSPACE;
+  delete HEIGHT;
+  delete ONMOVE;
+  delete ONLOAD;
+  delete ONDRAG;
+  delete ORIGIN;
+  delete ONZOOM;
+  delete ONHELP;
+  delete ONSTOP;
+  delete ONDROP;
+  delete ONBLUR;
+  delete OBJECT;
+  delete OFFSET;
+  delete ORIENT;
+  delete ONCOPY;
+  delete NOWRAP;
+  delete NOHREF;
+  delete MACROS;
+  delete METHOD;
+  delete LOWSRC;
+  delete LSPACE;
+  delete LQUOTE;
+  delete USEMAP;
+  delete WIDTHS;
+  delete TARGET;
+  delete VALUES;
+  delete VALIGN;
+  delete VSPACE;
+  delete POSTER;
+  delete POINTS;
+  delete PROMPT;
+  delete SCOPED;
+  delete STRING;
+  delete SCHEME;
+  delete STROKE;
+  delete RADIUS;
+  delete RESULT;
+  delete REPEAT;
+  delete RSPACE;
+  delete ROTATE;
+  delete RQUOTE;
+  delete ALTTEXT;
+  delete ARCHIVE;
+  delete AZIMUTH;
+  delete CLOSURE;
+  delete CHECKED;
+  delete CLASSID;
+  delete CHAROFF;
+  delete BGCOLOR;
+  delete COLSPAN;
+  delete CHARSET;
+  delete COMPACT;
+  delete CONTENT;
+  delete ENCTYPE;
+  delete DATASRC;
+  delete DATAFLD;
+  delete DECLARE;
+  delete DISPLAY;
+  delete DIVISOR;
+  delete DEFAULT;
+  delete DESCENT;
+  delete KERNING;
+  delete HANGING;
+  delete HEADERS;
+  delete ONPASTE;
+  delete ONCLICK;
+  delete OPTIMUM;
+  delete ONBEGIN;
+  delete ONKEYUP;
+  delete ONFOCUS;
+  delete ONERROR;
+  delete ONINPUT;
+  delete ONABORT;
+  delete ONSTART;
+  delete ONRESET;
+  delete OPACITY;
+  delete NOSHADE;
+  delete MINSIZE;
+  delete MAXSIZE;
+  delete LOOPEND;
+  delete LARGEOP;
+  delete UNICODE;
+  delete TARGETX;
+  delete TARGETY;
+  delete VIEWBOX;
+  delete VERSION;
+  delete PATTERN;
+  delete PROFILE;
+  delete SPACING;
+  delete RESTART;
+  delete ROWSPAN;
+  delete SANDBOX;
+  delete SUMMARY;
+  delete STANDBY;
+  delete REPLACE;
+  delete AUTOPLAY;
+  delete ADDITIVE;
+  delete CALCMODE;
+  delete CODETYPE;
+  delete CODEBASE;
+  delete CONTROLS;
+  delete BEVELLED;
+  delete BASELINE;
+  delete EXPONENT;
+  delete EDGEMODE;
+  delete ENCODING;
+  delete GLYPHREF;
+  delete DATETIME;
+  delete DISABLED;
+  delete FONTSIZE;
+  delete KEYTIMES;
+  delete PANOSE_1;
+  delete HREFLANG;
+  delete ONRESIZE;
+  delete ONCHANGE;
+  delete ONBOUNCE;
+  delete ONUNLOAD;
+  delete ONFINISH;
+  delete ONSCROLL;
+  delete OPERATOR;
+  delete OVERFLOW;
+  delete ONSUBMIT;
+  delete ONREPEAT;
+  delete ONSELECT;
+  delete NOTATION;
+  delete NORESIZE;
+  delete MANIFEST;
+  delete MATHSIZE;
+  delete MULTIPLE;
+  delete LONGDESC;
+  delete LANGUAGE;
+  delete TEMPLATE;
+  delete TABINDEX;
+  delete READONLY;
+  delete SELECTED;
+  delete ROWLINES;
+  delete SEAMLESS;
+  delete ROWALIGN;
+  delete STRETCHY;
+  delete REQUIRED;
+  delete XML_BASE;
+  delete XML_LANG;
+  delete X_HEIGHT;
+  delete ARIA_OWNS;
+  delete AUTOFOCUS;
+  delete ARIA_SORT;
+  delete ACCESSKEY;
+  delete ARIA_BUSY;
+  delete ARIA_GRAB;
+  delete AMPLITUDE;
+  delete ARIA_LIVE;
+  delete CLIP_RULE;
+  delete CLIP_PATH;
+  delete EQUALROWS;
+  delete ELEVATION;
+  delete DIRECTION;
+  delete DRAGGABLE;
+  delete FILTERRES;
+  delete FILL_RULE;
+  delete FONTSTYLE;
+  delete FONT_SIZE;
+  delete KEYPOINTS;
+  delete HIDEFOCUS;
+  delete ONMESSAGE;
+  delete INTERCEPT;
+  delete ONDRAGEND;
+  delete ONMOVEEND;
+  delete ONINVALID;
+  delete ONKEYDOWN;
+  delete ONFOCUSIN;
+  delete ONMOUSEUP;
+  delete INPUTMODE;
+  delete ONROWEXIT;
+  delete MATHCOLOR;
+  delete MASKUNITS;
+  delete MAXLENGTH;
+  delete LINEBREAK;
+  delete LOOPSTART;
+  delete TRANSFORM;
+  delete V_HANGING;
+  delete VALUETYPE;
+  delete POINTSATZ;
+  delete POINTSATX;
+  delete POINTSATY;
+  delete PLAYCOUNT;
+  delete SYMMETRIC;
+  delete SCROLLING;
+  delete REPEATDUR;
+  delete SELECTION;
+  delete SEPARATOR;
+  delete XML_SPACE;
+  delete AUTOSUBMIT;
+  delete ALPHABETIC;
+  delete ACTIONTYPE;
+  delete ACCUMULATE;
+  delete ARIA_LEVEL;
+  delete COLUMNSPAN;
+  delete CAP_HEIGHT;
+  delete BACKGROUND;
+  delete GLYPH_NAME;
+  delete GROUPALIGN;
+  delete FONTFAMILY;
+  delete FONTWEIGHT;
+  delete FONT_STYLE;
+  delete KEYSPLINES;
+  delete HTTP_EQUIV;
+  delete ONACTIVATE;
+  delete OCCURRENCE;
+  delete IRRELEVANT;
+  delete ONDBLCLICK;
+  delete ONDRAGDROP;
+  delete ONKEYPRESS;
+  delete ONROWENTER;
+  delete ONDRAGOVER;
+  delete ONFOCUSOUT;
+  delete ONMOUSEOUT;
+  delete NUMOCTAVES;
+  delete MARKER_MID;
+  delete MARKER_END;
+  delete TEXTLENGTH;
+  delete VISIBILITY;
+  delete VIEWTARGET;
+  delete VERT_ADV_Y;
+  delete PATHLENGTH;
+  delete REPEAT_MAX;
+  delete RADIOGROUP;
+  delete STOP_COLOR;
+  delete SEPARATORS;
+  delete REPEAT_MIN;
+  delete ROWSPACING;
+  delete ZOOMANDPAN;
+  delete XLINK_TYPE;
+  delete XLINK_ROLE;
+  delete XLINK_HREF;
+  delete XLINK_SHOW;
+  delete ACCENTUNDER;
+  delete ARIA_SECRET;
+  delete ARIA_ATOMIC;
+  delete ARIA_HIDDEN;
+  delete ARIA_FLOWTO;
+  delete ARABIC_FORM;
+  delete CELLPADDING;
+  delete CELLSPACING;
+  delete COLUMNWIDTH;
+  delete COLUMNALIGN;
+  delete COLUMNLINES;
+  delete CONTEXTMENU;
+  delete BASEPROFILE;
+  delete FONT_FAMILY;
+  delete FRAMEBORDER;
+  delete FILTERUNITS;
+  delete FLOOD_COLOR;
+  delete FONT_WEIGHT;
+  delete HORIZ_ADV_X;
+  delete ONDRAGLEAVE;
+  delete ONMOUSEMOVE;
+  delete ORIENTATION;
+  delete ONMOUSEDOWN;
+  delete ONMOUSEOVER;
+  delete ONDRAGENTER;
+  delete IDEOGRAPHIC;
+  delete ONBEFORECUT;
+  delete ONFORMINPUT;
+  delete ONDRAGSTART;
+  delete ONMOVESTART;
+  delete MARKERUNITS;
+  delete MATHVARIANT;
+  delete MARGINWIDTH;
+  delete MARKERWIDTH;
+  delete TEXT_ANCHOR;
+  delete TABLEVALUES;
+  delete SCRIPTLEVEL;
+  delete REPEATCOUNT;
+  delete STITCHTILES;
+  delete STARTOFFSET;
+  delete SCROLLDELAY;
+  delete XMLNS_XLINK;
+  delete XLINK_TITLE;
+  delete ARIA_INVALID;
+  delete ARIA_PRESSED;
+  delete ARIA_CHECKED;
+  delete AUTOCOMPLETE;
+  delete ARIA_SETSIZE;
+  delete ARIA_CHANNEL;
+  delete EQUALCOLUMNS;
+  delete DISPLAYSTYLE;
+  delete DATAFORMATAS;
+  delete FILL_OPACITY;
+  delete FONT_VARIANT;
+  delete FONT_STRETCH;
+  delete FRAMESPACING;
+  delete KERNELMATRIX;
+  delete ONDEACTIVATE;
+  delete ONROWSDELETE;
+  delete ONMOUSELEAVE;
+  delete ONFORMCHANGE;
+  delete ONCELLCHANGE;
+  delete ONMOUSEWHEEL;
+  delete ONMOUSEENTER;
+  delete ONAFTERPRINT;
+  delete ONBEFORECOPY;
+  delete MARGINHEIGHT;
+  delete MARKERHEIGHT;
+  delete MARKER_START;
+  delete MATHEMATICAL;
+  delete LENGTHADJUST;
+  delete UNSELECTABLE;
+  delete UNICODE_BIDI;
+  delete UNITS_PER_EM;
+  delete WORD_SPACING;
+  delete WRITING_MODE;
+  delete V_ALPHABETIC;
+  delete PATTERNUNITS;
+  delete SPREADMETHOD;
+  delete SURFACESCALE;
+  delete STROKE_WIDTH;
+  delete REPEAT_START;
+  delete STDDEVIATION;
+  delete STOP_OPACITY;
+  delete ARIA_CONTROLS;
+  delete ARIA_HASPOPUP;
+  delete ACCENT_HEIGHT;
+  delete ARIA_VALUENOW;
+  delete ARIA_RELEVANT;
+  delete ARIA_POSINSET;
+  delete ARIA_VALUEMAX;
+  delete ARIA_READONLY;
+  delete ARIA_SELECTED;
+  delete ARIA_REQUIRED;
+  delete ARIA_EXPANDED;
+  delete ARIA_DISABLED;
+  delete ATTRIBUTETYPE;
+  delete ATTRIBUTENAME;
+  delete ARIA_DATATYPE;
+  delete ARIA_VALUEMIN;
+  delete BASEFREQUENCY;
+  delete COLUMNSPACING;
+  delete COLOR_PROFILE;
+  delete CLIPPATHUNITS;
+  delete DEFINITIONURL;
+  delete GRADIENTUNITS;
+  delete FLOOD_OPACITY;
+  delete ONAFTERUPDATE;
+  delete ONERRORUPDATE;
+  delete ONBEFOREPASTE;
+  delete ONLOSECAPTURE;
+  delete ONCONTEXTMENU;
+  delete ONSELECTSTART;
+  delete ONBEFOREPRINT;
+  delete MOVABLELIMITS;
+  delete LINETHICKNESS;
+  delete UNICODE_RANGE;
+  delete THINMATHSPACE;
+  delete VERT_ORIGIN_X;
+  delete VERT_ORIGIN_Y;
+  delete V_IDEOGRAPHIC;
+  delete PRESERVEALPHA;
+  delete SCRIPTMINSIZE;
+  delete SPECIFICATION;
+  delete XLINK_ACTUATE;
+  delete XLINK_ARCROLE;
+  delete ACCEPT_CHARSET;
+  delete ALIGNMENTSCOPE;
+  delete ARIA_MULTILINE;
+  delete BASELINE_SHIFT;
+  delete HORIZ_ORIGIN_X;
+  delete HORIZ_ORIGIN_Y;
+  delete ONBEFOREUPDATE;
+  delete ONFILTERCHANGE;
+  delete ONROWSINSERTED;
+  delete ONBEFOREUNLOAD;
+  delete MATHBACKGROUND;
+  delete LETTER_SPACING;
+  delete LIGHTING_COLOR;
+  delete THICKMATHSPACE;
+  delete TEXT_RENDERING;
+  delete V_MATHEMATICAL;
+  delete POINTER_EVENTS;
+  delete PRIMITIVEUNITS;
+  delete SYSTEMLANGUAGE;
+  delete STROKE_LINECAP;
+  delete SUBSCRIPTSHIFT;
+  delete STROKE_OPACITY;
+  delete ARIA_DROPEFFECT;
+  delete ARIA_LABELLEDBY;
+  delete ARIA_TEMPLATEID;
+  delete COLOR_RENDERING;
+  delete CONTENTEDITABLE;
+  delete DIFFUSECONSTANT;
+  delete ONDATAAVAILABLE;
+  delete ONCONTROLSELECT;
+  delete IMAGE_RENDERING;
+  delete MEDIUMMATHSPACE;
+  delete TEXT_DECORATION;
+  delete SHAPE_RENDERING;
+  delete STROKE_LINEJOIN;
+  delete REPEAT_TEMPLATE;
+  delete ARIA_DESCRIBEDBY;
+  delete CONTENTSTYLETYPE;
+  delete FONT_SIZE_ADJUST;
+  delete KERNELUNITLENGTH;
+  delete ONBEFOREACTIVATE;
+  delete ONPROPERTYCHANGE;
+  delete ONDATASETCHANGED;
+  delete MASKCONTENTUNITS;
+  delete PATTERNTRANSFORM;
+  delete REQUIREDFEATURES;
+  delete RENDERING_INTENT;
+  delete SPECULAREXPONENT;
+  delete SPECULARCONSTANT;
+  delete SUPERSCRIPTSHIFT;
+  delete STROKE_DASHARRAY;
+  delete XCHANNELSELECTOR;
+  delete YCHANNELSELECTOR;
+  delete ARIA_AUTOCOMPLETE;
+  delete CONTENTSCRIPTTYPE;
+  delete ENABLE_BACKGROUND;
+  delete DOMINANT_BASELINE;
+  delete GRADIENTTRANSFORM;
+  delete ONBEFORDEACTIVATE;
+  delete ONDATASETCOMPLETE;
+  delete OVERLINE_POSITION;
+  delete ONBEFOREEDITFOCUS;
+  delete LIMITINGCONEANGLE;
+  delete VERYTHINMATHSPACE;
+  delete STROKE_DASHOFFSET;
+  delete STROKE_MITERLIMIT;
+  delete ALIGNMENT_BASELINE;
+  delete ONREADYSTATECHANGE;
+  delete OVERLINE_THICKNESS;
+  delete UNDERLINE_POSITION;
+  delete VERYTHICKMATHSPACE;
+  delete REQUIREDEXTENSIONS;
+  delete COLOR_INTERPOLATION;
+  delete UNDERLINE_THICKNESS;
+  delete PRESERVEASPECTRATIO;
+  delete PATTERNCONTENTUNITS;
+  delete ARIA_MULTISELECTABLE;
+  delete SCRIPTSIZEMULTIPLIER;
+  delete ARIA_ACTIVEDESCENDANT;
+  delete VERYVERYTHINMATHSPACE;
+  delete VERYVERYTHICKMATHSPACE;
+  delete STRIKETHROUGH_POSITION;
+  delete STRIKETHROUGH_THICKNESS;
+  delete EXTERNALRESOURCESREQUIRED;
+  delete GLYPH_ORIENTATION_VERTICAL;
+  delete COLOR_INTERPOLATION_FILTERS;
+  delete GLYPH_ORIENTATION_HORIZONTAL;
+  delete[] ATTRIBUTE_NAMES;
+}
+
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5AttributeName.h
@@ -0,0 +1,1281 @@
+/*
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a 
+ * copy of this software and associated documentation files (the "Software"), 
+ * to deal in the Software without restriction, including without limitation 
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+ * and/or sell copies of the Software, and to permit persons to whom the 
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in 
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
+ * Please edit AttributeName.java instead and regenerate.
+ */
+
+#ifndef nsHtml5AttributeName_h__
+#define nsHtml5AttributeName_h__
+
+#include "prtypes.h"
+#include "nsIAtom.h"
+#include "nsString.h"
+#include "nsINameSpaceManager.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "jArray.h"
+#include "nsHtml5DocumentMode.h"
+#include "nsHtml5ArrayCopy.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Parser.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Atoms.h"
+
+class nsHtml5Parser;
+
+class nsHtml5Tokenizer;
+class nsHtml5TreeBuilder;
+class nsHtml5ElementName;
+class nsHtml5HtmlAttributes;
+class nsHtml5StackNode;
+class nsHtml5UTF16Buffer;
+class nsHtml5Portability;
+
+class nsHtml5AttributeName
+{
+  private:
+    static PRInt32* ALL_NO_NS;
+    static PRInt32* XMLNS_NS;
+    static PRInt32* XML_NS;
+    static PRInt32* XLINK_NS;
+    static nsIAtom** ALL_NO_PREFIX;
+    static nsIAtom** XMLNS_PREFIX;
+    static nsIAtom** XLINK_PREFIX;
+    static nsIAtom** XML_PREFIX;
+    static nsIAtom** SVG_DIFFERENT(nsIAtom* name, nsIAtom* camel);
+    static nsIAtom** MATH_DIFFERENT(nsIAtom* name, nsIAtom* camel);
+    static nsIAtom** COLONIFIED_LOCAL(nsIAtom* name, nsIAtom* suffix);
+    static nsIAtom** SAME_LOCAL(nsIAtom* name);
+  public:
+    static nsHtml5AttributeName* nameByBuffer(PRUnichar* buf, PRInt32 offset, PRInt32 length);
+  private:
+    static PRInt32 bufToHash(PRUnichar* buf, PRInt32 len);
+    PRInt32* uri;
+    nsIAtom** local;
+    nsIAtom** prefix;
+    nsHtml5AttributeName(PRInt32* uri, nsIAtom** local, nsIAtom** prefix);
+    static nsHtml5AttributeName* create(nsIAtom* name);
+  public:
+    void release();
+  private:
+    void destructor();
+  public:
+    PRInt32 getUri(PRInt32 mode);
+    nsIAtom* getLocal(PRInt32 mode);
+    nsIAtom* getPrefix(PRInt32 mode);
+    PRBool equalsAnother(nsHtml5AttributeName* another);
+    static nsHtml5AttributeName* D;
+    static nsHtml5AttributeName* K;
+    static nsHtml5AttributeName* R;
+    static nsHtml5AttributeName* X;
+    static nsHtml5AttributeName* Y;
+    static nsHtml5AttributeName* Z;
+    static nsHtml5AttributeName* BY;
+    static nsHtml5AttributeName* CX;
+    static nsHtml5AttributeName* CY;
+    static nsHtml5AttributeName* DX;
+    static nsHtml5AttributeName* DY;
+    static nsHtml5AttributeName* G2;
+    static nsHtml5AttributeName* G1;
+    static nsHtml5AttributeName* FX;
+    static nsHtml5AttributeName* FY;
+    static nsHtml5AttributeName* K4;
+    static nsHtml5AttributeName* K2;
+    static nsHtml5AttributeName* K3;
+    static nsHtml5AttributeName* K1;
+    static nsHtml5AttributeName* ID;
+    static nsHtml5AttributeName* IN;
+    static nsHtml5AttributeName* U2;
+    static nsHtml5AttributeName* U1;
+    static nsHtml5AttributeName* RT;
+    static nsHtml5AttributeName* RX;
+    static nsHtml5AttributeName* RY;
+    static nsHtml5AttributeName* TO;
+    static nsHtml5AttributeName* Y2;
+    static nsHtml5AttributeName* Y1;
+    static nsHtml5AttributeName* X1;
+    static nsHtml5AttributeName* X2;
+    static nsHtml5AttributeName* ALT;
+    static nsHtml5AttributeName* DIR;
+    static nsHtml5AttributeName* DUR;
+    static nsHtml5AttributeName* END;
+    static nsHtml5AttributeName* FOR;
+    static nsHtml5AttributeName* IN2;
+    static nsHtml5AttributeName* MAX;
+    static nsHtml5AttributeName* MIN;
+    static nsHtml5AttributeName* LOW;
+    static nsHtml5AttributeName* REL;
+    static nsHtml5AttributeName* REV;
+    static nsHtml5AttributeName* SRC;
+    static nsHtml5AttributeName* AXIS;
+    static nsHtml5AttributeName* ABBR;
+    static nsHtml5AttributeName* BBOX;
+    static nsHtml5AttributeName* CITE;
+    static nsHtml5AttributeName* CODE;
+    static nsHtml5AttributeName* BIAS;
+    static nsHtml5AttributeName* COLS;
+    static nsHtml5AttributeName* CLIP;
+    static nsHtml5AttributeName* CHAR;
+    static nsHtml5AttributeName* BASE;
+    static nsHtml5AttributeName* EDGE;
+    static nsHtml5AttributeName* DATA;
+    static nsHtml5AttributeName* FILL;
+    static nsHtml5AttributeName* FROM;
+    static nsHtml5AttributeName* FORM;
+    static nsHtml5AttributeName* FACE;
+    static nsHtml5AttributeName* HIGH;
+    static nsHtml5AttributeName* HREF;
+    static nsHtml5AttributeName* OPEN;
+    static nsHtml5AttributeName* ICON;
+    static nsHtml5AttributeName* NAME;
+    static nsHtml5AttributeName* MODE;
+    static nsHtml5AttributeName* MASK;
+    static nsHtml5AttributeName* LINK;
+    static nsHtml5AttributeName* LANG;
+    static nsHtml5AttributeName* LIST;
+    static nsHtml5AttributeName* TYPE;
+    static nsHtml5AttributeName* WHEN;
+    static nsHtml5AttributeName* WRAP;
+    static nsHtml5AttributeName* TEXT;
+    static nsHtml5AttributeName* PATH;
+    static nsHtml5AttributeName* PING;
+    static nsHtml5AttributeName* REFX;
+    static nsHtml5AttributeName* REFY;
+    static nsHtml5AttributeName* SIZE;
+    static nsHtml5AttributeName* SEED;
+    static nsHtml5AttributeName* ROWS;
+    static nsHtml5AttributeName* SPAN;
+    static nsHtml5AttributeName* STEP;
+    static nsHtml5AttributeName* ROLE;
+    static nsHtml5AttributeName* XREF;
+    static nsHtml5AttributeName* ASYNC;
+    static nsHtml5AttributeName* ALINK;
+    static nsHtml5AttributeName* ALIGN;
+    static nsHtml5AttributeName* CLOSE;
+    static nsHtml5AttributeName* COLOR;
+    static nsHtml5AttributeName* CLASS;
+    static nsHtml5AttributeName* CLEAR;
+    static nsHtml5AttributeName* BEGIN;
+    static nsHtml5AttributeName* DEPTH;
+    static nsHtml5AttributeName* DEFER;
+    static nsHtml5AttributeName* FENCE;
+    static nsHtml5AttributeName* FRAME;
+    static nsHtml5AttributeName* ISMAP;
+    static nsHtml5AttributeName* ONEND;
+    static nsHtml5AttributeName* INDEX;
+    static nsHtml5AttributeName* ORDER;
+    static nsHtml5AttributeName* OTHER;
+    static nsHtml5AttributeName* ONCUT;
+    static nsHtml5AttributeName* NARGS;
+    static nsHtml5AttributeName* MEDIA;
+    static nsHtml5AttributeName* LABEL;
+    static nsHtml5AttributeName* LOCAL;
+    static nsHtml5AttributeName* WIDTH;
+    static nsHtml5AttributeName* TITLE;
+    static nsHtml5AttributeName* VLINK;
+    static nsHtml5AttributeName* VALUE;
+    static nsHtml5AttributeName* SLOPE;
+    static nsHtml5AttributeName* SHAPE;
+    static nsHtml5AttributeName* SCOPE;
+    static nsHtml5AttributeName* SCALE;
+    static nsHtml5AttributeName* SPEED;
+    static nsHtml5AttributeName* STYLE;
+    static nsHtml5AttributeName* RULES;
+    static nsHtml5AttributeName* STEMH;
+    static nsHtml5AttributeName* STEMV;
+    static nsHtml5AttributeName* START;
+    static nsHtml5AttributeName* XMLNS;
+    static nsHtml5AttributeName* ACCEPT;
+    static nsHtml5AttributeName* ACCENT;
+    static nsHtml5AttributeName* ASCENT;
+    static nsHtml5AttributeName* ACTIVE;
+    static nsHtml5AttributeName* ALTIMG;
+    static nsHtml5AttributeName* ACTION;
+    static nsHtml5AttributeName* BORDER;
+    static nsHtml5AttributeName* CURSOR;
+    static nsHtml5AttributeName* COORDS;
+    static nsHtml5AttributeName* FILTER;
+    static nsHtml5AttributeName* FORMAT;
+    static nsHtml5AttributeName* HIDDEN;
+    static nsHtml5AttributeName* HSPACE;
+    static nsHtml5AttributeName* HEIGHT;
+    static nsHtml5AttributeName* ONMOVE;
+    static nsHtml5AttributeName* ONLOAD;
+    static nsHtml5AttributeName* ONDRAG;
+    static nsHtml5AttributeName* ORIGIN;
+    static nsHtml5AttributeName* ONZOOM;
+    static nsHtml5AttributeName* ONHELP;
+    static nsHtml5AttributeName* ONSTOP;
+    static nsHtml5AttributeName* ONDROP;
+    static nsHtml5AttributeName* ONBLUR;
+    static nsHtml5AttributeName* OBJECT;
+    static nsHtml5AttributeName* OFFSET;
+    static nsHtml5AttributeName* ORIENT;
+    static nsHtml5AttributeName* ONCOPY;
+    static nsHtml5AttributeName* NOWRAP;
+    static nsHtml5AttributeName* NOHREF;
+    static nsHtml5AttributeName* MACROS;
+    static nsHtml5AttributeName* METHOD;
+    static nsHtml5AttributeName* LOWSRC;
+    static nsHtml5AttributeName* LSPACE;
+    static nsHtml5AttributeName* LQUOTE;
+    static nsHtml5AttributeName* USEMAP;
+    static nsHtml5AttributeName* WIDTHS;
+    static nsHtml5AttributeName* TARGET;
+    static nsHtml5AttributeName* VALUES;
+    static nsHtml5AttributeName* VALIGN;
+    static nsHtml5AttributeName* VSPACE;
+    static nsHtml5AttributeName* POSTER;
+    static nsHtml5AttributeName* POINTS;
+    static nsHtml5AttributeName* PROMPT;
+    static nsHtml5AttributeName* SCOPED;
+    static nsHtml5AttributeName* STRING;
+    static nsHtml5AttributeName* SCHEME;
+    static nsHtml5AttributeName* STROKE;
+    static nsHtml5AttributeName* RADIUS;
+    static nsHtml5AttributeName* RESULT;
+    static nsHtml5AttributeName* REPEAT;
+    static nsHtml5AttributeName* RSPACE;
+    static nsHtml5AttributeName* ROTATE;
+    static nsHtml5AttributeName* RQUOTE;
+    static nsHtml5AttributeName* ALTTEXT;
+    static nsHtml5AttributeName* ARCHIVE;
+    static nsHtml5AttributeName* AZIMUTH;
+    static nsHtml5AttributeName* CLOSURE;
+    static nsHtml5AttributeName* CHECKED;
+    static nsHtml5AttributeName* CLASSID;
+    static nsHtml5AttributeName* CHAROFF;
+    static nsHtml5AttributeName* BGCOLOR;
+    static nsHtml5AttributeName* COLSPAN;
+    static nsHtml5AttributeName* CHARSET;
+    static nsHtml5AttributeName* COMPACT;
+    static nsHtml5AttributeName* CONTENT;
+    static nsHtml5AttributeName* ENCTYPE;
+    static nsHtml5AttributeName* DATASRC;
+    static nsHtml5AttributeName* DATAFLD;
+    static nsHtml5AttributeName* DECLARE;
+    static nsHtml5AttributeName* DISPLAY;
+    static nsHtml5AttributeName* DIVISOR;
+    static nsHtml5AttributeName* DEFAULT;
+    static nsHtml5AttributeName* DESCENT;
+    static nsHtml5AttributeName* KERNING;
+    static nsHtml5AttributeName* HANGING;
+    static nsHtml5AttributeName* HEADERS;
+    static nsHtml5AttributeName* ONPASTE;
+    static nsHtml5AttributeName* ONCLICK;
+    static nsHtml5AttributeName* OPTIMUM;
+    static nsHtml5AttributeName* ONBEGIN;
+    static nsHtml5AttributeName* ONKEYUP;
+    static nsHtml5AttributeName* ONFOCUS;
+    static nsHtml5AttributeName* ONERROR;
+    static nsHtml5AttributeName* ONINPUT;
+    static nsHtml5AttributeName* ONABORT;
+    static nsHtml5AttributeName* ONSTART;
+    static nsHtml5AttributeName* ONRESET;
+    static nsHtml5AttributeName* OPACITY;
+    static nsHtml5AttributeName* NOSHADE;
+    static nsHtml5AttributeName* MINSIZE;
+    static nsHtml5AttributeName* MAXSIZE;
+    static nsHtml5AttributeName* LOOPEND;
+    static nsHtml5AttributeName* LARGEOP;
+    static nsHtml5AttributeName* UNICODE;
+    static nsHtml5AttributeName* TARGETX;
+    static nsHtml5AttributeName* TARGETY;
+    static nsHtml5AttributeName* VIEWBOX;
+    static nsHtml5AttributeName* VERSION;
+    static nsHtml5AttributeName* PATTERN;
+    static nsHtml5AttributeName* PROFILE;
+    static nsHtml5AttributeName* SPACING;
+    static nsHtml5AttributeName* RESTART;
+    static nsHtml5AttributeName* ROWSPAN;
+    static nsHtml5AttributeName* SANDBOX;
+    static nsHtml5AttributeName* SUMMARY;
+    static nsHtml5AttributeName* STANDBY;
+    static nsHtml5AttributeName* REPLACE;
+    static nsHtml5AttributeName* AUTOPLAY;
+    static nsHtml5AttributeName* ADDITIVE;
+    static nsHtml5AttributeName* CALCMODE;
+    static nsHtml5AttributeName* CODETYPE;
+    static nsHtml5AttributeName* CODEBASE;
+    static nsHtml5AttributeName* CONTROLS;
+    static nsHtml5AttributeName* BEVELLED;
+    static nsHtml5AttributeName* BASELINE;
+    static nsHtml5AttributeName* EXPONENT;
+    static nsHtml5AttributeName* EDGEMODE;
+    static nsHtml5AttributeName* ENCODING;
+    static nsHtml5AttributeName* GLYPHREF;
+    static nsHtml5AttributeName* DATETIME;
+    static nsHtml5AttributeName* DISABLED;
+    static nsHtml5AttributeName* FONTSIZE;
+    static nsHtml5AttributeName* KEYTIMES;
+    static nsHtml5AttributeName* PANOSE_1;
+    static nsHtml5AttributeName* HREFLANG;
+    static nsHtml5AttributeName* ONRESIZE;
+    static nsHtml5AttributeName* ONCHANGE;
+    static nsHtml5AttributeName* ONBOUNCE;
+    static nsHtml5AttributeName* ONUNLOAD;
+    static nsHtml5AttributeName* ONFINISH;
+    static nsHtml5AttributeName* ONSCROLL;
+    static nsHtml5AttributeName* OPERATOR;
+    static nsHtml5AttributeName* OVERFLOW;
+    static nsHtml5AttributeName* ONSUBMIT;
+    static nsHtml5AttributeName* ONREPEAT;
+    static nsHtml5AttributeName* ONSELECT;
+    static nsHtml5AttributeName* NOTATION;
+    static nsHtml5AttributeName* NORESIZE;
+    static nsHtml5AttributeName* MANIFEST;
+    static nsHtml5AttributeName* MATHSIZE;
+    static nsHtml5AttributeName* MULTIPLE;
+    static nsHtml5AttributeName* LONGDESC;
+    static nsHtml5AttributeName* LANGUAGE;
+    static nsHtml5AttributeName* TEMPLATE;
+    static nsHtml5AttributeName* TABINDEX;
+    static nsHtml5AttributeName* READONLY;
+    static nsHtml5AttributeName* SELECTED;
+    static nsHtml5AttributeName* ROWLINES;
+    static nsHtml5AttributeName* SEAMLESS;
+    static nsHtml5AttributeName* ROWALIGN;
+    static nsHtml5AttributeName* STRETCHY;
+    static nsHtml5AttributeName* REQUIRED;
+    static nsHtml5AttributeName* XML_BASE;
+    static nsHtml5AttributeName* XML_LANG;
+    static nsHtml5AttributeName* X_HEIGHT;
+    static nsHtml5AttributeName* ARIA_OWNS;
+    static nsHtml5AttributeName* AUTOFOCUS;
+    static nsHtml5AttributeName* ARIA_SORT;
+    static nsHtml5AttributeName* ACCESSKEY;
+    static nsHtml5AttributeName* ARIA_BUSY;
+    static nsHtml5AttributeName* ARIA_GRAB;
+    static nsHtml5AttributeName* AMPLITUDE;
+    static nsHtml5AttributeName* ARIA_LIVE;
+    static nsHtml5AttributeName* CLIP_RULE;
+    static nsHtml5AttributeName* CLIP_PATH;
+    static nsHtml5AttributeName* EQUALROWS;
+    static nsHtml5AttributeName* ELEVATION;
+    static nsHtml5AttributeName* DIRECTION;
+    static nsHtml5AttributeName* DRAGGABLE;
+    static nsHtml5AttributeName* FILTERRES;
+    static nsHtml5AttributeName* FILL_RULE;
+    static nsHtml5AttributeName* FONTSTYLE;
+    static nsHtml5AttributeName* FONT_SIZE;
+    static nsHtml5AttributeName* KEYPOINTS;
+    static nsHtml5AttributeName* HIDEFOCUS;
+    static nsHtml5AttributeName* ONMESSAGE;
+    static nsHtml5AttributeName* INTERCEPT;
+    static nsHtml5AttributeName* ONDRAGEND;
+    static nsHtml5AttributeName* ONMOVEEND;
+    static nsHtml5AttributeName* ONINVALID;
+    static nsHtml5AttributeName* ONKEYDOWN;
+    static nsHtml5AttributeName* ONFOCUSIN;
+    static nsHtml5AttributeName* ONMOUSEUP;
+    static nsHtml5AttributeName* INPUTMODE;
+    static nsHtml5AttributeName* ONROWEXIT;
+    static nsHtml5AttributeName* MATHCOLOR;
+    static nsHtml5AttributeName* MASKUNITS;
+    static nsHtml5AttributeName* MAXLENGTH;
+    static nsHtml5AttributeName* LINEBREAK;
+    static nsHtml5AttributeName* LOOPSTART;
+    static nsHtml5AttributeName* TRANSFORM;
+    static nsHtml5AttributeName* V_HANGING;
+    static nsHtml5AttributeName* VALUETYPE;
+    static nsHtml5AttributeName* POINTSATZ;
+    static nsHtml5AttributeName* POINTSATX;
+    static nsHtml5AttributeName* POINTSATY;
+    static nsHtml5AttributeName* PLAYCOUNT;
+    static nsHtml5AttributeName* SYMMETRIC;
+    static nsHtml5AttributeName* SCROLLING;
+    static nsHtml5AttributeName* REPEATDUR;
+    static nsHtml5AttributeName* SELECTION;
+    static nsHtml5AttributeName* SEPARATOR;
+    static nsHtml5AttributeName* XML_SPACE;
+    static nsHtml5AttributeName* AUTOSUBMIT;
+    static nsHtml5AttributeName* ALPHABETIC;
+    static nsHtml5AttributeName* ACTIONTYPE;
+    static nsHtml5AttributeName* ACCUMULATE;
+    static nsHtml5AttributeName* ARIA_LEVEL;
+    static nsHtml5AttributeName* COLUMNSPAN;
+    static nsHtml5AttributeName* CAP_HEIGHT;
+    static nsHtml5AttributeName* BACKGROUND;
+    static nsHtml5AttributeName* GLYPH_NAME;
+    static nsHtml5AttributeName* GROUPALIGN;
+    static nsHtml5AttributeName* FONTFAMILY;
+    static nsHtml5AttributeName* FONTWEIGHT;
+    static nsHtml5AttributeName* FONT_STYLE;
+    static nsHtml5AttributeName* KEYSPLINES;
+    static nsHtml5AttributeName* HTTP_EQUIV;
+    static nsHtml5AttributeName* ONACTIVATE;
+    static nsHtml5AttributeName* OCCURRENCE;
+    static nsHtml5AttributeName* IRRELEVANT;
+    static nsHtml5AttributeName* ONDBLCLICK;
+    static nsHtml5AttributeName* ONDRAGDROP;
+    static nsHtml5AttributeName* ONKEYPRESS;
+    static nsHtml5AttributeName* ONROWENTER;
+    static nsHtml5AttributeName* ONDRAGOVER;
+    static nsHtml5AttributeName* ONFOCUSOUT;
+    static nsHtml5AttributeName* ONMOUSEOUT;
+    static nsHtml5AttributeName* NUMOCTAVES;
+    static nsHtml5AttributeName* MARKER_MID;
+    static nsHtml5AttributeName* MARKER_END;
+    static nsHtml5AttributeName* TEXTLENGTH;
+    static nsHtml5AttributeName* VISIBILITY;
+    static nsHtml5AttributeName* VIEWTARGET;
+    static nsHtml5AttributeName* VERT_ADV_Y;
+    static nsHtml5AttributeName* PATHLENGTH;
+    static nsHtml5AttributeName* REPEAT_MAX;
+    static nsHtml5AttributeName* RADIOGROUP;
+    static nsHtml5AttributeName* STOP_COLOR;
+    static nsHtml5AttributeName* SEPARATORS;
+    static nsHtml5AttributeName* REPEAT_MIN;
+    static nsHtml5AttributeName* ROWSPACING;
+    static nsHtml5AttributeName* ZOOMANDPAN;
+    static nsHtml5AttributeName* XLINK_TYPE;
+    static nsHtml5AttributeName* XLINK_ROLE;
+    static nsHtml5AttributeName* XLINK_HREF;
+    static nsHtml5AttributeName* XLINK_SHOW;
+    static nsHtml5AttributeName* ACCENTUNDER;
+    static nsHtml5AttributeName* ARIA_SECRET;
+    static nsHtml5AttributeName* ARIA_ATOMIC;
+    static nsHtml5AttributeName* ARIA_HIDDEN;
+    static nsHtml5AttributeName* ARIA_FLOWTO;
+    static nsHtml5AttributeName* ARABIC_FORM;
+    static nsHtml5AttributeName* CELLPADDING;
+    static nsHtml5AttributeName* CELLSPACING;
+    static nsHtml5AttributeName* COLUMNWIDTH;
+    static nsHtml5AttributeName* COLUMNALIGN;
+    static nsHtml5AttributeName* COLUMNLINES;
+    static nsHtml5AttributeName* CONTEXTMENU;
+    static nsHtml5AttributeName* BASEPROFILE;
+    static nsHtml5AttributeName* FONT_FAMILY;
+    static nsHtml5AttributeName* FRAMEBORDER;
+    static nsHtml5AttributeName* FILTERUNITS;
+    static nsHtml5AttributeName* FLOOD_COLOR;
+    static nsHtml5AttributeName* FONT_WEIGHT;
+    static nsHtml5AttributeName* HORIZ_ADV_X;
+    static nsHtml5AttributeName* ONDRAGLEAVE;
+    static nsHtml5AttributeName* ONMOUSEMOVE;
+    static nsHtml5AttributeName* ORIENTATION;
+    static nsHtml5AttributeName* ONMOUSEDOWN;
+    static nsHtml5AttributeName* ONMOUSEOVER;
+    static nsHtml5AttributeName* ONDRAGENTER;
+    static nsHtml5AttributeName* IDEOGRAPHIC;
+    static nsHtml5AttributeName* ONBEFORECUT;
+    static nsHtml5AttributeName* ONFORMINPUT;
+    static nsHtml5AttributeName* ONDRAGSTART;
+    static nsHtml5AttributeName* ONMOVESTART;
+    static nsHtml5AttributeName* MARKERUNITS;
+    static nsHtml5AttributeName* MATHVARIANT;
+    static nsHtml5AttributeName* MARGINWIDTH;
+    static nsHtml5AttributeName* MARKERWIDTH;
+    static nsHtml5AttributeName* TEXT_ANCHOR;
+    static nsHtml5AttributeName* TABLEVALUES;
+    static nsHtml5AttributeName* SCRIPTLEVEL;
+    static nsHtml5AttributeName* REPEATCOUNT;
+    static nsHtml5AttributeName* STITCHTILES;
+    static nsHtml5AttributeName* STARTOFFSET;
+    static nsHtml5AttributeName* SCROLLDELAY;
+    static nsHtml5AttributeName* XMLNS_XLINK;
+    static nsHtml5AttributeName* XLINK_TITLE;
+    static nsHtml5AttributeName* ARIA_INVALID;
+    static nsHtml5AttributeName* ARIA_PRESSED;
+    static nsHtml5AttributeName* ARIA_CHECKED;
+    static nsHtml5AttributeName* AUTOCOMPLETE;
+    static nsHtml5AttributeName* ARIA_SETSIZE;
+    static nsHtml5AttributeName* ARIA_CHANNEL;
+    static nsHtml5AttributeName* EQUALCOLUMNS;
+    static nsHtml5AttributeName* DISPLAYSTYLE;
+    static nsHtml5AttributeName* DATAFORMATAS;
+    static nsHtml5AttributeName* FILL_OPACITY;
+    static nsHtml5AttributeName* FONT_VARIANT;
+    static nsHtml5AttributeName* FONT_STRETCH;
+    static nsHtml5AttributeName* FRAMESPACING;
+    static nsHtml5AttributeName* KERNELMATRIX;
+    static nsHtml5AttributeName* ONDEACTIVATE;
+    static nsHtml5AttributeName* ONROWSDELETE;
+    static nsHtml5AttributeName* ONMOUSELEAVE;
+    static nsHtml5AttributeName* ONFORMCHANGE;
+    static nsHtml5AttributeName* ONCELLCHANGE;
+    static nsHtml5AttributeName* ONMOUSEWHEEL;
+    static nsHtml5AttributeName* ONMOUSEENTER;
+    static nsHtml5AttributeName* ONAFTERPRINT;
+    static nsHtml5AttributeName* ONBEFORECOPY;
+    static nsHtml5AttributeName* MARGINHEIGHT;
+    static nsHtml5AttributeName* MARKERHEIGHT;
+    static nsHtml5AttributeName* MARKER_START;
+    static nsHtml5AttributeName* MATHEMATICAL;
+    static nsHtml5AttributeName* LENGTHADJUST;
+    static nsHtml5AttributeName* UNSELECTABLE;
+    static nsHtml5AttributeName* UNICODE_BIDI;
+    static nsHtml5AttributeName* UNITS_PER_EM;
+    static nsHtml5AttributeName* WORD_SPACING;
+    static nsHtml5AttributeName* WRITING_MODE;
+    static nsHtml5AttributeName* V_ALPHABETIC;
+    static nsHtml5AttributeName* PATTERNUNITS;
+    static nsHtml5AttributeName* SPREADMETHOD;
+    static nsHtml5AttributeName* SURFACESCALE;
+    static nsHtml5AttributeName* STROKE_WIDTH;
+    static nsHtml5AttributeName* REPEAT_START;
+    static nsHtml5AttributeName* STDDEVIATION;
+    static nsHtml5AttributeName* STOP_OPACITY;
+    static nsHtml5AttributeName* ARIA_CONTROLS;
+    static nsHtml5AttributeName* ARIA_HASPOPUP;
+    static nsHtml5AttributeName* ACCENT_HEIGHT;
+    static nsHtml5AttributeName* ARIA_VALUENOW;
+    static nsHtml5AttributeName* ARIA_RELEVANT;
+    static nsHtml5AttributeName* ARIA_POSINSET;
+    static nsHtml5AttributeName* ARIA_VALUEMAX;
+    static nsHtml5AttributeName* ARIA_READONLY;
+    static nsHtml5AttributeName* ARIA_SELECTED;
+    static nsHtml5AttributeName* ARIA_REQUIRED;
+    static nsHtml5AttributeName* ARIA_EXPANDED;
+    static nsHtml5AttributeName* ARIA_DISABLED;
+    static nsHtml5AttributeName* ATTRIBUTETYPE;
+    static nsHtml5AttributeName* ATTRIBUTENAME;
+    static nsHtml5AttributeName* ARIA_DATATYPE;
+    static nsHtml5AttributeName* ARIA_VALUEMIN;
+    static nsHtml5AttributeName* BASEFREQUENCY;
+    static nsHtml5AttributeName* COLUMNSPACING;
+    static nsHtml5AttributeName* COLOR_PROFILE;
+    static nsHtml5AttributeName* CLIPPATHUNITS;
+    static nsHtml5AttributeName* DEFINITIONURL;
+    static nsHtml5AttributeName* GRADIENTUNITS;
+    static nsHtml5AttributeName* FLOOD_OPACITY;
+    static nsHtml5AttributeName* ONAFTERUPDATE;
+    static nsHtml5AttributeName* ONERRORUPDATE;
+    static nsHtml5AttributeName* ONBEFOREPASTE;
+    static nsHtml5AttributeName* ONLOSECAPTURE;
+    static nsHtml5AttributeName* ONCONTEXTMENU;
+    static nsHtml5AttributeName* ONSELECTSTART;
+    static nsHtml5AttributeName* ONBEFOREPRINT;
+    static nsHtml5AttributeName* MOVABLELIMITS;
+    static nsHtml5AttributeName* LINETHICKNESS;
+    static nsHtml5AttributeName* UNICODE_RANGE;
+    static nsHtml5AttributeName* THINMATHSPACE;
+    static nsHtml5AttributeName* VERT_ORIGIN_X;
+    static nsHtml5AttributeName* VERT_ORIGIN_Y;
+    static nsHtml5AttributeName* V_IDEOGRAPHIC;
+    static nsHtml5AttributeName* PRESERVEALPHA;
+    static nsHtml5AttributeName* SCRIPTMINSIZE;
+    static nsHtml5AttributeName* SPECIFICATION;
+    static nsHtml5AttributeName* XLINK_ACTUATE;
+    static nsHtml5AttributeName* XLINK_ARCROLE;
+    static nsHtml5AttributeName* ACCEPT_CHARSET;
+    static nsHtml5AttributeName* ALIGNMENTSCOPE;
+    static nsHtml5AttributeName* ARIA_MULTILINE;
+    static nsHtml5AttributeName* BASELINE_SHIFT;
+    static nsHtml5AttributeName* HORIZ_ORIGIN_X;
+    static nsHtml5AttributeName* HORIZ_ORIGIN_Y;
+    static nsHtml5AttributeName* ONBEFOREUPDATE;
+    static nsHtml5AttributeName* ONFILTERCHANGE;
+    static nsHtml5AttributeName* ONROWSINSERTED;
+    static nsHtml5AttributeName* ONBEFOREUNLOAD;
+    static nsHtml5AttributeName* MATHBACKGROUND;
+    static nsHtml5AttributeName* LETTER_SPACING;
+    static nsHtml5AttributeName* LIGHTING_COLOR;
+    static nsHtml5AttributeName* THICKMATHSPACE;
+    static nsHtml5AttributeName* TEXT_RENDERING;
+    static nsHtml5AttributeName* V_MATHEMATICAL;
+    static nsHtml5AttributeName* POINTER_EVENTS;
+    static nsHtml5AttributeName* PRIMITIVEUNITS;
+    static nsHtml5AttributeName* SYSTEMLANGUAGE;
+    static nsHtml5AttributeName* STROKE_LINECAP;
+    static nsHtml5AttributeName* SUBSCRIPTSHIFT;
+    static nsHtml5AttributeName* STROKE_OPACITY;
+    static nsHtml5AttributeName* ARIA_DROPEFFECT;
+    static nsHtml5AttributeName* ARIA_LABELLEDBY;
+    static nsHtml5AttributeName* ARIA_TEMPLATEID;
+    static nsHtml5AttributeName* COLOR_RENDERING;
+    static nsHtml5AttributeName* CONTENTEDITABLE;
+    static nsHtml5AttributeName* DIFFUSECONSTANT;
+    static nsHtml5AttributeName* ONDATAAVAILABLE;
+    static nsHtml5AttributeName* ONCONTROLSELECT;
+    static nsHtml5AttributeName* IMAGE_RENDERING;
+    static nsHtml5AttributeName* MEDIUMMATHSPACE;
+    static nsHtml5AttributeName* TEXT_DECORATION;
+    static nsHtml5AttributeName* SHAPE_RENDERING;
+    static nsHtml5AttributeName* STROKE_LINEJOIN;
+    static nsHtml5AttributeName* REPEAT_TEMPLATE;
+    static nsHtml5AttributeName* ARIA_DESCRIBEDBY;
+    static nsHtml5AttributeName* CONTENTSTYLETYPE;
+    static nsHtml5AttributeName* FONT_SIZE_ADJUST;
+    static nsHtml5AttributeName* KERNELUNITLENGTH;
+    static nsHtml5AttributeName* ONBEFOREACTIVATE;
+    static nsHtml5AttributeName* ONPROPERTYCHANGE;
+    static nsHtml5AttributeName* ONDATASETCHANGED;
+    static nsHtml5AttributeName* MASKCONTENTUNITS;
+    static nsHtml5AttributeName* PATTERNTRANSFORM;
+    static nsHtml5AttributeName* REQUIREDFEATURES;
+    static nsHtml5AttributeName* RENDERING_INTENT;
+    static nsHtml5AttributeName* SPECULAREXPONENT;
+    static nsHtml5AttributeName* SPECULARCONSTANT;
+    static nsHtml5AttributeName* SUPERSCRIPTSHIFT;
+    static nsHtml5AttributeName* STROKE_DASHARRAY;
+    static nsHtml5AttributeName* XCHANNELSELECTOR;
+    static nsHtml5AttributeName* YCHANNELSELECTOR;
+    static nsHtml5AttributeName* ARIA_AUTOCOMPLETE;
+    static nsHtml5AttributeName* CONTENTSCRIPTTYPE;
+    static nsHtml5AttributeName* ENABLE_BACKGROUND;
+    static nsHtml5AttributeName* DOMINANT_BASELINE;
+    static nsHtml5AttributeName* GRADIENTTRANSFORM;
+    static nsHtml5AttributeName* ONBEFORDEACTIVATE;
+    static nsHtml5AttributeName* ONDATASETCOMPLETE;
+    static nsHtml5AttributeName* OVERLINE_POSITION;
+    static nsHtml5AttributeName* ONBEFOREEDITFOCUS;
+    static nsHtml5AttributeName* LIMITINGCONEANGLE;
+    static nsHtml5AttributeName* VERYTHINMATHSPACE;
+    static nsHtml5AttributeName* STROKE_DASHOFFSET;
+    static nsHtml5AttributeName* STROKE_MITERLIMIT;
+    static nsHtml5AttributeName* ALIGNMENT_BASELINE;
+    static nsHtml5AttributeName* ONREADYSTATECHANGE;
+    static nsHtml5AttributeName* OVERLINE_THICKNESS;
+    static nsHtml5AttributeName* UNDERLINE_POSITION;
+    static nsHtml5AttributeName* VERYTHICKMATHSPACE;
+    static nsHtml5AttributeName* REQUIREDEXTENSIONS;
+    static nsHtml5AttributeName* COLOR_INTERPOLATION;
+    static nsHtml5AttributeName* UNDERLINE_THICKNESS;
+    static nsHtml5AttributeName* PRESERVEASPECTRATIO;
+    static nsHtml5AttributeName* PATTERNCONTENTUNITS;
+    static nsHtml5AttributeName* ARIA_MULTISELECTABLE;
+    static nsHtml5AttributeName* SCRIPTSIZEMULTIPLIER;
+    static nsHtml5AttributeName* ARIA_ACTIVEDESCENDANT;
+    static nsHtml5AttributeName* VERYVERYTHINMATHSPACE;
+    static nsHtml5AttributeName* VERYVERYTHICKMATHSPACE;
+    static nsHtml5AttributeName* STRIKETHROUGH_POSITION;
+    static nsHtml5AttributeName* STRIKETHROUGH_THICKNESS;
+    static nsHtml5AttributeName* EXTERNALRESOURCESREQUIRED;
+    static nsHtml5AttributeName* GLYPH_ORIENTATION_VERTICAL;
+    static nsHtml5AttributeName* COLOR_INTERPOLATION_FILTERS;
+    static nsHtml5AttributeName* GLYPH_ORIENTATION_HORIZONTAL;
+  private:
+    static nsHtml5AttributeName** ATTRIBUTE_NAMES;
+    #ifdef nsHtml5AttributeName_cpp__
+    static PRInt32 ATTRIBUTE_HASHES_DATA[];
+    #endif
+    static jArray<PRInt32,PRInt32> ATTRIBUTE_HASHES;
+  public:
+    static void initializeStatics();
+    static void releaseStatics();
+};
+
+#ifdef nsHtml5AttributeName_cpp__
+PRInt32* nsHtml5AttributeName::ALL_NO_NS = nsnull;
+PRInt32* nsHtml5AttributeName::XMLNS_NS = nsnull;
+PRInt32* nsHtml5AttributeName::XML_NS = nsnull;
+PRInt32* nsHtml5AttributeName::XLINK_NS = nsnull;
+nsIAtom** nsHtml5AttributeName::ALL_NO_PREFIX = nsnull;
+nsIAtom** nsHtml5AttributeName::XMLNS_PREFIX = nsnull;
+nsIAtom** nsHtml5AttributeName::XLINK_PREFIX = nsnull;
+nsIAtom** nsHtml5AttributeName::XML_PREFIX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::D = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::K = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::R = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::X = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::Y = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::Z = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::G2 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::G1 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::K4 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::K2 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::K3 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::K1 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ID = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::IN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::U2 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::U1 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TO = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::Y2 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::Y1 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::X1 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::X2 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DIR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DUR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::END = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::IN2 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MAX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LOW = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REV = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SRC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AXIS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ABBR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BBOX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CITE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BIAS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLIP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CHAR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BASE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::EDGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DATA = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FILL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FROM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FORM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HIGH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HREF = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OPEN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ICON = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NAME = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MASK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LINK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LANG = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LIST = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::WHEN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::WRAP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TEXT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PATH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REFX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REFY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SEED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROWS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPAN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STEP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XREF = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ASYNC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALINK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALIGN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLOSE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLASS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLEAR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BEGIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DEPTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DEFER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FENCE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FRAME = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ISMAP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONEND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::INDEX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ORDER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OTHER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCUT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NARGS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MEDIA = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LABEL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LOCAL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::WIDTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TITLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VLINK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VALUE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SLOPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SHAPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCOPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCALE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPEED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STYLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RULES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STEMH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STEMV = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::START = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XMLNS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCEPT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ASCENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACTIVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALTIMG = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACTION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BORDER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CURSOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COORDS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FILTER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FORMAT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HIDDEN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONLOAD = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAG = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ORIGIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONZOOM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONHELP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONSTOP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDROP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBLUR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OBJECT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OFFSET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ORIENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCOPY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NOWRAP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NOHREF = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MACROS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::METHOD = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LOWSRC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LQUOTE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::USEMAP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::WIDTHS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TARGET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VALUES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VALIGN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::POSTER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::POINTS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PROMPT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCOPED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STRING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCHEME = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RADIUS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RESULT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEAT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROTATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RQUOTE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALTTEXT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARCHIVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AZIMUTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLOSURE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CHECKED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLASSID = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CHAROFF = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BGCOLOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLSPAN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CHARSET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COMPACT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CONTENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ENCTYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DATASRC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DATAFLD = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DECLARE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DISPLAY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DIVISOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DEFAULT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DESCENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::KERNING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HANGING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HEADERS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONPASTE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCLICK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OPTIMUM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEGIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONKEYUP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFOCUS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONERROR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONINPUT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONABORT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONSTART = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONRESET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OPACITY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NOSHADE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MINSIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MAXSIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LOOPEND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LARGEOP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNICODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TARGETX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TARGETY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VIEWBOX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERSION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PATTERN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PROFILE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RESTART = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROWSPAN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SANDBOX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SUMMARY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STANDBY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPLACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AUTOPLAY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ADDITIVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CALCMODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CODETYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CODEBASE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CONTROLS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BEVELLED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BASELINE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::EXPONENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::EDGEMODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ENCODING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GLYPHREF = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DATETIME = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DISABLED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONTSIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::KEYTIMES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PANOSE_1 = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HREFLANG = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONRESIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCHANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBOUNCE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONUNLOAD = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFINISH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONSCROLL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OPERATOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OVERFLOW = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONSUBMIT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONREPEAT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONSELECT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NOTATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NORESIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MANIFEST = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MATHSIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MULTIPLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LONGDESC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LANGUAGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TEMPLATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TABINDEX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::READONLY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SELECTED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROWLINES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SEAMLESS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROWALIGN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STRETCHY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REQUIRED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XML_BASE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XML_LANG = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::X_HEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_OWNS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AUTOFOCUS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_SORT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCESSKEY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_BUSY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_GRAB = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AMPLITUDE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_LIVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLIP_RULE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLIP_PATH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::EQUALROWS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ELEVATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DIRECTION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DRAGGABLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FILTERRES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FILL_RULE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONTSTYLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_SIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::KEYPOINTS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HIDEFOCUS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMESSAGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::INTERCEPT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAGEND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOVEEND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONINVALID = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONKEYDOWN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFOCUSIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEUP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::INPUTMODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONROWEXIT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MATHCOLOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MASKUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MAXLENGTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LINEBREAK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LOOPSTART = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TRANSFORM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::V_HANGING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VALUETYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::POINTSATZ = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::POINTSATX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::POINTSATY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PLAYCOUNT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SYMMETRIC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCROLLING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEATDUR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SELECTION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SEPARATOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XML_SPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AUTOSUBMIT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALPHABETIC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACTIONTYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCUMULATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_LEVEL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLUMNSPAN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CAP_HEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BACKGROUND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GLYPH_NAME = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GROUPALIGN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONTFAMILY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONTWEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_STYLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::KEYSPLINES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HTTP_EQUIV = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONACTIVATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OCCURRENCE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::IRRELEVANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDBLCLICK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAGDROP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONKEYPRESS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONROWENTER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAGOVER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFOCUSOUT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEOUT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::NUMOCTAVES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARKER_MID = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARKER_END = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TEXTLENGTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VISIBILITY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VIEWTARGET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERT_ADV_Y = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PATHLENGTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEAT_MAX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RADIOGROUP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STOP_COLOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SEPARATORS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEAT_MIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ROWSPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ZOOMANDPAN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_TYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_ROLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_HREF = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_SHOW = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCENTUNDER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_SECRET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_ATOMIC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_HIDDEN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_FLOWTO = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARABIC_FORM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CELLPADDING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CELLSPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLUMNWIDTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLUMNALIGN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLUMNLINES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CONTEXTMENU = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BASEPROFILE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_FAMILY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FRAMEBORDER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FILTERUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FLOOD_COLOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_WEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HORIZ_ADV_X = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAGLEAVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEMOVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ORIENTATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEDOWN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEOVER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAGENTER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::IDEOGRAPHIC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFORECUT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFORMINPUT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDRAGSTART = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOVESTART = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARKERUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MATHVARIANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARGINWIDTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARKERWIDTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TEXT_ANCHOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TABLEVALUES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCRIPTLEVEL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEATCOUNT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STITCHTILES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STARTOFFSET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCROLLDELAY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XMLNS_XLINK = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_TITLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_INVALID = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_PRESSED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_CHECKED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::AUTOCOMPLETE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_SETSIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_CHANNEL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::EQUALCOLUMNS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DISPLAYSTYLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DATAFORMATAS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FILL_OPACITY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_VARIANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_STRETCH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FRAMESPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::KERNELMATRIX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDEACTIVATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONROWSDELETE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSELEAVE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFORMCHANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCELLCHANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEWHEEL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONMOUSEENTER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONAFTERPRINT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFORECOPY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARGINHEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARKERHEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MARKER_START = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MATHEMATICAL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LENGTHADJUST = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNSELECTABLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNICODE_BIDI = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNITS_PER_EM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::WORD_SPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::WRITING_MODE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::V_ALPHABETIC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PATTERNUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPREADMETHOD = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SURFACESCALE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_WIDTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEAT_START = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STDDEVIATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STOP_OPACITY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_CONTROLS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_HASPOPUP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCENT_HEIGHT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_VALUENOW = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_RELEVANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_POSINSET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_VALUEMAX = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_READONLY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_SELECTED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_REQUIRED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_EXPANDED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_DISABLED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ATTRIBUTETYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ATTRIBUTENAME = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_DATATYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_VALUEMIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BASEFREQUENCY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLUMNSPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLOR_PROFILE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CLIPPATHUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DEFINITIONURL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GRADIENTUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FLOOD_OPACITY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONAFTERUPDATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONERRORUPDATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFOREPASTE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONLOSECAPTURE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCONTEXTMENU = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONSELECTSTART = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFOREPRINT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MOVABLELIMITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LINETHICKNESS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNICODE_RANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::THINMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERT_ORIGIN_X = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERT_ORIGIN_Y = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::V_IDEOGRAPHIC = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PRESERVEALPHA = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCRIPTMINSIZE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPECIFICATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_ACTUATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XLINK_ARCROLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ACCEPT_CHARSET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALIGNMENTSCOPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_MULTILINE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::BASELINE_SHIFT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HORIZ_ORIGIN_X = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::HORIZ_ORIGIN_Y = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFOREUPDATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONFILTERCHANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONROWSINSERTED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFOREUNLOAD = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MATHBACKGROUND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LETTER_SPACING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LIGHTING_COLOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::THICKMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TEXT_RENDERING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::V_MATHEMATICAL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::POINTER_EVENTS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PRIMITIVEUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SYSTEMLANGUAGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_LINECAP = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SUBSCRIPTSHIFT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_OPACITY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_DROPEFFECT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_LABELLEDBY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_TEMPLATEID = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLOR_RENDERING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CONTENTEDITABLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DIFFUSECONSTANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDATAAVAILABLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONCONTROLSELECT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::IMAGE_RENDERING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MEDIUMMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::TEXT_DECORATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SHAPE_RENDERING = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_LINEJOIN = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REPEAT_TEMPLATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_DESCRIBEDBY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CONTENTSTYLETYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::FONT_SIZE_ADJUST = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::KERNELUNITLENGTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFOREACTIVATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONPROPERTYCHANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDATASETCHANGED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::MASKCONTENTUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PATTERNTRANSFORM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REQUIREDFEATURES = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::RENDERING_INTENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPECULAREXPONENT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SPECULARCONSTANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SUPERSCRIPTSHIFT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_DASHARRAY = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::XCHANNELSELECTOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::YCHANNELSELECTOR = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_AUTOCOMPLETE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::CONTENTSCRIPTTYPE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ENABLE_BACKGROUND = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::DOMINANT_BASELINE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GRADIENTTRANSFORM = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFORDEACTIVATE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONDATASETCOMPLETE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OVERLINE_POSITION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONBEFOREEDITFOCUS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::LIMITINGCONEANGLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERYTHINMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_DASHOFFSET = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STROKE_MITERLIMIT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ALIGNMENT_BASELINE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ONREADYSTATECHANGE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::OVERLINE_THICKNESS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNDERLINE_POSITION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERYTHICKMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::REQUIREDEXTENSIONS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLOR_INTERPOLATION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::UNDERLINE_THICKNESS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PRESERVEASPECTRATIO = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::PATTERNCONTENTUNITS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_MULTISELECTABLE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::SCRIPTSIZEMULTIPLIER = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ARIA_ACTIVEDESCENDANT = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERYVERYTHINMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::VERYVERYTHICKMATHSPACE = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STRIKETHROUGH_POSITION = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::STRIKETHROUGH_THICKNESS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::EXTERNALRESOURCESREQUIRED = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GLYPH_ORIENTATION_VERTICAL = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::COLOR_INTERPOLATION_FILTERS = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::GLYPH_ORIENTATION_HORIZONTAL = nsnull;
+nsHtml5AttributeName** nsHtml5AttributeName::ATTRIBUTE_NAMES = nsnull;
+PRInt32 nsHtml5AttributeName::ATTRIBUTE_HASHES_DATA[] = { 1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471 };
+jArray<PRInt32,PRInt32> nsHtml5AttributeName::ATTRIBUTE_HASHES = J_ARRAY_STATIC(PRInt32, PRInt32, ATTRIBUTE_HASHES_DATA);
+#endif
+
+#define NS_HTML5ATTRIBUTE_NAME_HTML 0
+#define NS_HTML5ATTRIBUTE_NAME_MATHML 1
+#define NS_HTML5ATTRIBUTE_NAME_SVG 2
+
+
+#endif
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5DocumentMode.h
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is HTML Parser C++ Translator code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Henri Sivonen <hsivonen@iki.fi>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef nsHtml5DocumentMode_h__
+#define nsHtml5DocumentMode_h__
+
+enum nsHtml5DocumentMode {
+    STANDARDS_MODE,
+    ALMOST_STANDARDS_MODE,
+    QUIRKS_MODE
+};
+
+#endif // nsHtml5DocumentMode_h__
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5ElementName.cpp
@@ -0,0 +1,1306 @@
+/*
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a 
+ * copy of this software and associated documentation files (the "Software"), 
+ * to deal in the Software without restriction, including without limitation 
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+ * and/or sell copies of the Software, and to permit persons to whom the 
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in 
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
+ * Please edit ElementName.java instead and regenerate.
+ */
+
+#define nsHtml5ElementName_cpp__
+
+#include "prtypes.h"
+#include "nsIAtom.h"
+#include "nsString.h"
+#include "nsINameSpaceManager.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "jArray.h"
+#include "nsHtml5DocumentMode.h"
+#include "nsHtml5ArrayCopy.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Parser.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Atoms.h"
+
+#include "nsHtml5Tokenizer.h"
+#include "nsHtml5TreeBuilder.h"
+#include "nsHtml5AttributeName.h"
+#include "nsHtml5HtmlAttributes.h"
+#include "nsHtml5StackNode.h"
+#include "nsHtml5UTF16Buffer.h"
+#include "nsHtml5Portability.h"
+
+#include "nsHtml5ElementName.h"
+
+nsHtml5ElementName* 
+nsHtml5ElementName::elementNameByBuffer(jArray<PRUnichar,PRInt32> buf, PRInt32 offset, PRInt32 length)
+{
+  PRInt32 hash = nsHtml5ElementName::bufToHash(buf, length);
+  PRInt32 index = nsHtml5ElementName::ELEMENT_HASHES.binarySearch(hash);
+  if (index < 0) {
+    return new nsHtml5ElementName(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length));
+  } else {
+    nsHtml5ElementName* rv = nsHtml5ElementName::ELEMENT_NAMES[index];
+    nsIAtom* name = rv->name;
+    if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) {
+      return new nsHtml5ElementName(nsHtml5Portability::newLocalNameFromBuffer(buf, offset, length));
+    }
+    return rv;
+  }
+}
+
+PRInt32 
+nsHtml5ElementName::bufToHash(jArray<PRUnichar,PRInt32> buf, PRInt32 len)
+{
+  PRInt32 hash = len;
+  hash <<= 5;
+  hash += buf[0] - 0x60;
+  PRInt32 j = len;
+  for (PRInt32 i = 0; i < 4 && j > 0; i++) {
+    j--;
+    hash <<= 5;
+    hash += buf[j] - 0x60;
+  }
+  return hash;
+}
+
+
+nsHtml5ElementName::nsHtml5ElementName(nsIAtom* name, nsIAtom* camelCaseName, PRInt32 group, PRBool special, PRBool scoping, PRBool fosterParenting)
+  : name(name),
+    camelCaseName(camelCaseName),
+    group(group),
+    special(special),
+    scoping(scoping),
+    fosterParenting(fosterParenting)
+{
+}
+
+
+nsHtml5ElementName::nsHtml5ElementName(nsIAtom* name)
+  : name(name),
+    camelCaseName(name),
+    group(NS_HTML5TREE_BUILDER_OTHER),
+    special(PR_FALSE),
+    scoping(PR_FALSE),
+    fosterParenting(PR_FALSE)
+{
+}
+
+void 
+nsHtml5ElementName::release()
+{
+}
+
+void 
+nsHtml5ElementName::destructor()
+{
+  nsHtml5Portability::releaseLocal(name);
+}
+
+void
+nsHtml5ElementName::initializeStatics()
+{
+  NULL_ELEMENT_NAME = new nsHtml5ElementName(nsnull);
+  A = new nsHtml5ElementName(nsHtml5Atoms::a, nsHtml5Atoms::a, NS_HTML5TREE_BUILDER_A, PR_FALSE, PR_FALSE, PR_FALSE);
+  B = new nsHtml5ElementName(nsHtml5Atoms::b, nsHtml5Atoms::b, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  G = new nsHtml5ElementName(nsHtml5Atoms::g, nsHtml5Atoms::g, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  I = new nsHtml5ElementName(nsHtml5Atoms::i, nsHtml5Atoms::i, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  P = new nsHtml5ElementName(nsHtml5Atoms::p, nsHtml5Atoms::p, NS_HTML5TREE_BUILDER_P, PR_TRUE, PR_FALSE, PR_FALSE);
+  Q = new nsHtml5ElementName(nsHtml5Atoms::q, nsHtml5Atoms::q, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  S = new nsHtml5ElementName(nsHtml5Atoms::s, nsHtml5Atoms::s, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  U = new nsHtml5ElementName(nsHtml5Atoms::u, nsHtml5Atoms::u, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  BR = new nsHtml5ElementName(nsHtml5Atoms::br, nsHtml5Atoms::br, NS_HTML5TREE_BUILDER_BR, PR_TRUE, PR_FALSE, PR_FALSE);
+  CI = new nsHtml5ElementName(nsHtml5Atoms::ci, nsHtml5Atoms::ci, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CN = new nsHtml5ElementName(nsHtml5Atoms::cn, nsHtml5Atoms::cn, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DD = new nsHtml5ElementName(nsHtml5Atoms::dd, nsHtml5Atoms::dd, NS_HTML5TREE_BUILDER_DD_OR_DT, PR_TRUE, PR_FALSE, PR_FALSE);
+  DL = new nsHtml5ElementName(nsHtml5Atoms::dl, nsHtml5Atoms::dl, NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL, PR_TRUE, PR_FALSE, PR_FALSE);
+  DT = new nsHtml5ElementName(nsHtml5Atoms::dt, nsHtml5Atoms::dt, NS_HTML5TREE_BUILDER_DD_OR_DT, PR_TRUE, PR_FALSE, PR_FALSE);
+  EM = new nsHtml5ElementName(nsHtml5Atoms::em, nsHtml5Atoms::em, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  EQ = new nsHtml5ElementName(nsHtml5Atoms::eq, nsHtml5Atoms::eq, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FN = new nsHtml5ElementName(nsHtml5Atoms::fn, nsHtml5Atoms::fn, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  H1 = new nsHtml5ElementName(nsHtml5Atoms::h1, nsHtml5Atoms::h1, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, PR_TRUE, PR_FALSE, PR_FALSE);
+  H2 = new nsHtml5ElementName(nsHtml5Atoms::h2, nsHtml5Atoms::h2, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, PR_TRUE, PR_FALSE, PR_FALSE);
+  H3 = new nsHtml5ElementName(nsHtml5Atoms::h3, nsHtml5Atoms::h3, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, PR_TRUE, PR_FALSE, PR_FALSE);
+  H4 = new nsHtml5ElementName(nsHtml5Atoms::h4, nsHtml5Atoms::h4, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, PR_TRUE, PR_FALSE, PR_FALSE);
+  H5 = new nsHtml5ElementName(nsHtml5Atoms::h5, nsHtml5Atoms::h5, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, PR_TRUE, PR_FALSE, PR_FALSE);
+  H6 = new nsHtml5ElementName(nsHtml5Atoms::h6, nsHtml5Atoms::h6, NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, PR_TRUE, PR_FALSE, PR_FALSE);
+  GT = new nsHtml5ElementName(nsHtml5Atoms::gt, nsHtml5Atoms::gt, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  HR = new nsHtml5ElementName(nsHtml5Atoms::hr, nsHtml5Atoms::hr, NS_HTML5TREE_BUILDER_HR, PR_TRUE, PR_FALSE, PR_FALSE);
+  IN = new nsHtml5ElementName(nsHtml5Atoms::in, nsHtml5Atoms::in, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LI = new nsHtml5ElementName(nsHtml5Atoms::li, nsHtml5Atoms::li, NS_HTML5TREE_BUILDER_LI, PR_TRUE, PR_FALSE, PR_FALSE);
+  LN = new nsHtml5ElementName(nsHtml5Atoms::ln, nsHtml5Atoms::ln, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LT = new nsHtml5ElementName(nsHtml5Atoms::lt, nsHtml5Atoms::lt, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MI = new nsHtml5ElementName(nsHtml5Atoms::mi, nsHtml5Atoms::mi, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT, PR_FALSE, PR_FALSE, PR_FALSE);
+  MN = new nsHtml5ElementName(nsHtml5Atoms::mn, nsHtml5Atoms::mn, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT, PR_FALSE, PR_FALSE, PR_FALSE);
+  MO = new nsHtml5ElementName(nsHtml5Atoms::mo, nsHtml5Atoms::mo, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT, PR_FALSE, PR_FALSE, PR_FALSE);
+  MS = new nsHtml5ElementName(nsHtml5Atoms::ms, nsHtml5Atoms::ms, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT, PR_FALSE, PR_FALSE, PR_FALSE);
+  OL = new nsHtml5ElementName(nsHtml5Atoms::ol, nsHtml5Atoms::ol, NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL, PR_TRUE, PR_FALSE, PR_FALSE);
+  OR = new nsHtml5ElementName(nsHtml5Atoms::or_, nsHtml5Atoms::or_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PI = new nsHtml5ElementName(nsHtml5Atoms::pi, nsHtml5Atoms::pi, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  RP = new nsHtml5ElementName(nsHtml5Atoms::rp, nsHtml5Atoms::rp, NS_HTML5TREE_BUILDER_RT_OR_RP, PR_FALSE, PR_FALSE, PR_FALSE);
+  RT = new nsHtml5ElementName(nsHtml5Atoms::rt, nsHtml5Atoms::rt, NS_HTML5TREE_BUILDER_RT_OR_RP, PR_FALSE, PR_FALSE, PR_FALSE);
+  TD = new nsHtml5ElementName(nsHtml5Atoms::td, nsHtml5Atoms::td, NS_HTML5TREE_BUILDER_TD_OR_TH, PR_FALSE, PR_TRUE, PR_FALSE);
+  TH = new nsHtml5ElementName(nsHtml5Atoms::th, nsHtml5Atoms::th, NS_HTML5TREE_BUILDER_TD_OR_TH, PR_FALSE, PR_TRUE, PR_FALSE);
+  TR = new nsHtml5ElementName(nsHtml5Atoms::tr, nsHtml5Atoms::tr, NS_HTML5TREE_BUILDER_TR, PR_TRUE, PR_FALSE, PR_TRUE);
+  TT = new nsHtml5ElementName(nsHtml5Atoms::tt, nsHtml5Atoms::tt, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  UL = new nsHtml5ElementName(nsHtml5Atoms::ul, nsHtml5Atoms::ul, NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL, PR_TRUE, PR_FALSE, PR_FALSE);
+  AND = new nsHtml5ElementName(nsHtml5Atoms::and_, nsHtml5Atoms::and_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARG = new nsHtml5ElementName(nsHtml5Atoms::arg, nsHtml5Atoms::arg, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ABS = new nsHtml5ElementName(nsHtml5Atoms::abs, nsHtml5Atoms::abs, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  BIG = new nsHtml5ElementName(nsHtml5Atoms::big, nsHtml5Atoms::big, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  BDO = new nsHtml5ElementName(nsHtml5Atoms::bdo, nsHtml5Atoms::bdo, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CSC = new nsHtml5ElementName(nsHtml5Atoms::csc, nsHtml5Atoms::csc, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COL = new nsHtml5ElementName(nsHtml5Atoms::col, nsHtml5Atoms::col, NS_HTML5TREE_BUILDER_COL, PR_TRUE, PR_FALSE, PR_FALSE);
+  COS = new nsHtml5ElementName(nsHtml5Atoms::cos, nsHtml5Atoms::cos, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COT = new nsHtml5ElementName(nsHtml5Atoms::cot, nsHtml5Atoms::cot, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DEL = new nsHtml5ElementName(nsHtml5Atoms::del, nsHtml5Atoms::del, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DFN = new nsHtml5ElementName(nsHtml5Atoms::dfn, nsHtml5Atoms::dfn, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  DIV = new nsHtml5ElementName(nsHtml5Atoms::div, nsHtml5Atoms::div, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, PR_TRUE, PR_FALSE, PR_FALSE);
+  EXP = new nsHtml5ElementName(nsHtml5Atoms::exp, nsHtml5Atoms::exp, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  GCD = new nsHtml5ElementName(nsHtml5Atoms::gcd, nsHtml5Atoms::gcd, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  GEQ = new nsHtml5ElementName(nsHtml5Atoms::geq, nsHtml5Atoms::geq, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  IMG = new nsHtml5ElementName(nsHtml5Atoms::img, nsHtml5Atoms::img, NS_HTML5TREE_BUILDER_EMBED_OR_IMG, PR_TRUE, PR_FALSE, PR_FALSE);
+  INS = new nsHtml5ElementName(nsHtml5Atoms::ins, nsHtml5Atoms::ins, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INT = new nsHtml5ElementName(nsHtml5Atoms::int_, nsHtml5Atoms::int_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  KBD = new nsHtml5ElementName(nsHtml5Atoms::kbd, nsHtml5Atoms::kbd, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LOG = new nsHtml5ElementName(nsHtml5Atoms::log, nsHtml5Atoms::log, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LCM = new nsHtml5ElementName(nsHtml5Atoms::lcm, nsHtml5Atoms::lcm, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LEQ = new nsHtml5ElementName(nsHtml5Atoms::leq, nsHtml5Atoms::leq, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MTD = new nsHtml5ElementName(nsHtml5Atoms::mtd, nsHtml5Atoms::mtd, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MIN = new nsHtml5ElementName(nsHtml5Atoms::min, nsHtml5Atoms::min, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MAP = new nsHtml5ElementName(nsHtml5Atoms::map, nsHtml5Atoms::map, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MTR = new nsHtml5ElementName(nsHtml5Atoms::mtr, nsHtml5Atoms::mtr, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MAX = new nsHtml5ElementName(nsHtml5Atoms::max, nsHtml5Atoms::max, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NEQ = new nsHtml5ElementName(nsHtml5Atoms::neq, nsHtml5Atoms::neq, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOT = new nsHtml5ElementName(nsHtml5Atoms::not_, nsHtml5Atoms::not_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  PRE = new nsHtml5ElementName(nsHtml5Atoms::pre, nsHtml5Atoms::pre, NS_HTML5TREE_BUILDER_PRE_OR_LISTING, PR_TRUE, PR_FALSE, PR_FALSE);
+  REM = new nsHtml5ElementName(nsHtml5Atoms::rem, nsHtml5Atoms::rem, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SUB = new nsHtml5ElementName(nsHtml5Atoms::sub, nsHtml5Atoms::sub, NS_HTML5TREE_BUILDER_CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE);
+  SEC = new nsHtml5ElementName(nsHtml5Atoms::sec, nsHtml5Atoms::sec, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SVG = new nsHtml5ElementName(nsHtml5Atoms::svg, nsHtml5Atoms::svg, NS_HTML5TREE_BUILDER_SVG, PR_FALSE, PR_FALSE, PR_FALSE);
+  SUM = new nsHtml5ElementName(nsHtml5Atoms::sum, nsHtml5Atoms::sum, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SIN = new nsHtml5ElementName(nsHtml5Atoms::sin, nsHtml5Atoms::sin, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SEP = new nsHtml5ElementName(nsHtml5Atoms::sep, nsHtml5Atoms::sep, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SUP = new nsHtml5ElementName(nsHtml5Atoms::sup, nsHtml5Atoms::sup, NS_HTML5TREE_BUILDER_CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE);
+  SET = new nsHtml5ElementName(nsHtml5Atoms::set, nsHtml5Atoms::set, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TAN = new nsHtml5ElementName(nsHtml5Atoms::tan, nsHtml5Atoms::tan, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  USE = new nsHtml5ElementName(nsHtml5Atoms::use, nsHtml5Atoms::use, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VAR = new nsHtml5ElementName(nsHtml5Atoms::var, nsHtml5Atoms::var, NS_HTML5TREE_BUILDER_CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE);
+  WBR = new nsHtml5ElementName(nsHtml5Atoms::wbr, nsHtml5Atoms::wbr, NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, PR_TRUE, PR_FALSE, PR_FALSE);
+  XMP = new nsHtml5ElementName(nsHtml5Atoms::xmp, nsHtml5Atoms::xmp, NS_HTML5TREE_BUILDER_XMP, PR_FALSE, PR_FALSE, PR_FALSE);
+  XOR = new nsHtml5ElementName(nsHtml5Atoms::xor_, nsHtml5Atoms::xor_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  AREA = new nsHtml5ElementName(nsHtml5Atoms::area, nsHtml5Atoms::area, NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, PR_TRUE, PR_FALSE, PR_FALSE);
+  ABBR = new nsHtml5ElementName(nsHtml5Atoms::abbr, nsHtml5Atoms::abbr, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  BASE = new nsHtml5ElementName(nsHtml5Atoms::base, nsHtml5Atoms::base, NS_HTML5TREE_BUILDER_BASE, PR_TRUE, PR_FALSE, PR_FALSE);
+  BVAR = new nsHtml5ElementName(nsHtml5Atoms::bvar, nsHtml5Atoms::bvar, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  BODY = new nsHtml5ElementName(nsHtml5Atoms::body, nsHtml5Atoms::body, NS_HTML5TREE_BUILDER_BODY, PR_TRUE, PR_FALSE, PR_FALSE);
+  CARD = new nsHtml5ElementName(nsHtml5Atoms::card, nsHtml5Atoms::card, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CODE = new nsHtml5ElementName(nsHtml5Atoms::code, nsHtml5Atoms::code, NS_HTML5TREE_BUILDER_CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE);
+  CITE = new nsHtml5ElementName(nsHtml5Atoms::cite, nsHtml5Atoms::cite, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CSCH = new nsHtml5ElementName(nsHtml5Atoms::csch, nsHtml5Atoms::csch, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COSH = new nsHtml5ElementName(nsHtml5Atoms::cosh, nsHtml5Atoms::cosh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COTH = new nsHtml5ElementName(nsHtml5Atoms::coth, nsHtml5Atoms::coth, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CURL = new nsHtml5ElementName(nsHtml5Atoms::curl, nsHtml5Atoms::curl, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DESC = new nsHtml5ElementName(nsHtml5Atoms::desc, nsHtml5Atoms::desc, NS_HTML5TREE_BUILDER_FOREIGNOBJECT_OR_DESC, PR_FALSE, PR_FALSE, PR_FALSE);
+  DIFF = new nsHtml5ElementName(nsHtml5Atoms::diff, nsHtml5Atoms::diff, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DEFS = new nsHtml5ElementName(nsHtml5Atoms::defs, nsHtml5Atoms::defs, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FORM = new nsHtml5ElementName(nsHtml5Atoms::form, nsHtml5Atoms::form, NS_HTML5TREE_BUILDER_FORM, PR_TRUE, PR_FALSE, PR_FALSE);
+  FONT = new nsHtml5ElementName(nsHtml5Atoms::font, nsHtml5Atoms::font, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  GRAD = new nsHtml5ElementName(nsHtml5Atoms::grad, nsHtml5Atoms::grad, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  HEAD = new nsHtml5ElementName(nsHtml5Atoms::head, nsHtml5Atoms::head, NS_HTML5TREE_BUILDER_HEAD, PR_TRUE, PR_FALSE, PR_FALSE);
+  HTML = new nsHtml5ElementName(nsHtml5Atoms::html, nsHtml5Atoms::html, NS_HTML5TREE_BUILDER_HTML, PR_FALSE, PR_TRUE, PR_FALSE);
+  LINE = new nsHtml5ElementName(nsHtml5Atoms::line, nsHtml5Atoms::line, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LINK = new nsHtml5ElementName(nsHtml5Atoms::link, nsHtml5Atoms::link, NS_HTML5TREE_BUILDER_LINK, PR_TRUE, PR_FALSE, PR_FALSE);
+  LIST = new nsHtml5ElementName(nsHtml5Atoms::list, nsHtml5Atoms::list, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  META = new nsHtml5ElementName(nsHtml5Atoms::meta, nsHtml5Atoms::meta, NS_HTML5TREE_BUILDER_META, PR_TRUE, PR_FALSE, PR_FALSE);
+  MSUB = new nsHtml5ElementName(nsHtml5Atoms::msub, nsHtml5Atoms::msub, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MODE = new nsHtml5ElementName(nsHtml5Atoms::mode, nsHtml5Atoms::mode, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MATH = new nsHtml5ElementName(nsHtml5Atoms::math, nsHtml5Atoms::math, NS_HTML5TREE_BUILDER_MATH, PR_FALSE, PR_FALSE, PR_FALSE);
+  MARK = new nsHtml5ElementName(nsHtml5Atoms::mark, nsHtml5Atoms::mark, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MASK = new nsHtml5ElementName(nsHtml5Atoms::mask, nsHtml5Atoms::mask, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MEAN = new nsHtml5ElementName(nsHtml5Atoms::mean, nsHtml5Atoms::mean, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MSUP = new nsHtml5ElementName(nsHtml5Atoms::msup, nsHtml5Atoms::msup, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MENU = new nsHtml5ElementName(nsHtml5Atoms::menu, nsHtml5Atoms::menu, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, PR_TRUE, PR_FALSE, PR_FALSE);
+  MROW = new nsHtml5ElementName(nsHtml5Atoms::mrow, nsHtml5Atoms::mrow, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NONE = new nsHtml5ElementName(nsHtml5Atoms::none, nsHtml5Atoms::none, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOBR = new nsHtml5ElementName(nsHtml5Atoms::nobr, nsHtml5Atoms::nobr, NS_HTML5TREE_BUILDER_NOBR, PR_FALSE, PR_FALSE, PR_FALSE);
+  NEST = new nsHtml5ElementName(nsHtml5Atoms::nest, nsHtml5Atoms::nest, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PATH = new nsHtml5ElementName(nsHtml5Atoms::path, nsHtml5Atoms::path, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PLUS = new nsHtml5ElementName(nsHtml5Atoms::plus, nsHtml5Atoms::plus, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  RULE = new nsHtml5ElementName(nsHtml5Atoms::rule, nsHtml5Atoms::rule, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  REAL = new nsHtml5ElementName(nsHtml5Atoms::real, nsHtml5Atoms::real, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  RELN = new nsHtml5ElementName(nsHtml5Atoms::reln, nsHtml5Atoms::reln, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  RECT = new nsHtml5ElementName(nsHtml5Atoms::rect, nsHtml5Atoms::rect, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ROOT = new nsHtml5ElementName(nsHtml5Atoms::root, nsHtml5Atoms::root, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  RUBY = new nsHtml5ElementName(nsHtml5Atoms::ruby, nsHtml5Atoms::ruby, NS_HTML5TREE_BUILDER_CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE);
+  SECH = new nsHtml5ElementName(nsHtml5Atoms::sech, nsHtml5Atoms::sech, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SINH = new nsHtml5ElementName(nsHtml5Atoms::sinh, nsHtml5Atoms::sinh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SPAN = new nsHtml5ElementName(nsHtml5Atoms::span, nsHtml5Atoms::span, NS_HTML5TREE_BUILDER_CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE);
+  SAMP = new nsHtml5ElementName(nsHtml5Atoms::samp, nsHtml5Atoms::samp, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  STOP = new nsHtml5ElementName(nsHtml5Atoms::stop, nsHtml5Atoms::stop, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SDEV = new nsHtml5ElementName(nsHtml5Atoms::sdev, nsHtml5Atoms::sdev, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TIME = new nsHtml5ElementName(nsHtml5Atoms::time, nsHtml5Atoms::time, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TRUE = new nsHtml5ElementName(nsHtml5Atoms::true_, nsHtml5Atoms::true_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TREF = new nsHtml5ElementName(nsHtml5Atoms::tref, nsHtml5Atoms::tref, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TANH = new nsHtml5ElementName(nsHtml5Atoms::tanh, nsHtml5Atoms::tanh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TEXT = new nsHtml5ElementName(nsHtml5Atoms::text, nsHtml5Atoms::text, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VIEW = new nsHtml5ElementName(nsHtml5Atoms::view, nsHtml5Atoms::view, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  AUDIO = new nsHtml5ElementName(nsHtml5Atoms::audio, nsHtml5Atoms::audio, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  APPLY = new nsHtml5ElementName(nsHtml5Atoms::apply, nsHtml5Atoms::apply, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  EMBED = new nsHtml5ElementName(nsHtml5Atoms::embed, nsHtml5Atoms::embed, NS_HTML5TREE_BUILDER_EMBED_OR_IMG, PR_TRUE, PR_FALSE, PR_FALSE);
+  FRAME = new nsHtml5ElementName(nsHtml5Atoms::frame, nsHtml5Atoms::frame, NS_HTML5TREE_BUILDER_FRAME, PR_TRUE, PR_FALSE, PR_FALSE);
+  FALSE = new nsHtml5ElementName(nsHtml5Atoms::false_, nsHtml5Atoms::false_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FLOOR = new nsHtml5ElementName(nsHtml5Atoms::floor, nsHtml5Atoms::floor, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  GLYPH = new nsHtml5ElementName(nsHtml5Atoms::glyph, nsHtml5Atoms::glyph, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  HKERN = new nsHtml5ElementName(nsHtml5Atoms::hkern, nsHtml5Atoms::hkern, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  IMAGE = new nsHtml5ElementName(nsHtml5Atoms::image, nsHtml5Atoms::image, NS_HTML5TREE_BUILDER_IMAGE, PR_TRUE, PR_FALSE, PR_FALSE);
+  IDENT = new nsHtml5ElementName(nsHtml5Atoms::ident, nsHtml5Atoms::ident, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INPUT = new nsHtml5ElementName(nsHtml5Atoms::input, nsHtml5Atoms::input, NS_HTML5TREE_BUILDER_INPUT, PR_TRUE, PR_FALSE, PR_FALSE);
+  LABEL = new nsHtml5ElementName(nsHtml5Atoms::label, nsHtml5Atoms::label, NS_HTML5TREE_BUILDER_OUTPUT_OR_LABEL, PR_FALSE, PR_FALSE, PR_FALSE);
+  LIMIT = new nsHtml5ElementName(nsHtml5Atoms::limit, nsHtml5Atoms::limit, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MFRAC = new nsHtml5ElementName(nsHtml5Atoms::mfrac, nsHtml5Atoms::mfrac, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MPATH = new nsHtml5ElementName(nsHtml5Atoms::mpath, nsHtml5Atoms::mpath, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  METER = new nsHtml5ElementName(nsHtml5Atoms::meter, nsHtml5Atoms::meter, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MOVER = new nsHtml5ElementName(nsHtml5Atoms::mover, nsHtml5Atoms::mover, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MINUS = new nsHtml5ElementName(nsHtml5Atoms::minus, nsHtml5Atoms::minus, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MROOT = new nsHtml5ElementName(nsHtml5Atoms::mroot, nsHtml5Atoms::mroot, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MSQRT = new nsHtml5ElementName(nsHtml5Atoms::msqrt, nsHtml5Atoms::msqrt, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MTEXT = new nsHtml5ElementName(nsHtml5Atoms::mtext, nsHtml5Atoms::mtext, NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOTIN = new nsHtml5ElementName(nsHtml5Atoms::notin, nsHtml5Atoms::notin, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PIECE = new nsHtml5ElementName(nsHtml5Atoms::piece, nsHtml5Atoms::piece, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PARAM = new nsHtml5ElementName(nsHtml5Atoms::param, nsHtml5Atoms::param, NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE, PR_TRUE, PR_FALSE, PR_FALSE);
+  POWER = new nsHtml5ElementName(nsHtml5Atoms::power, nsHtml5Atoms::power, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  REALS = new nsHtml5ElementName(nsHtml5Atoms::reals, nsHtml5Atoms::reals, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  STYLE = new nsHtml5ElementName(nsHtml5Atoms::style, nsHtml5Atoms::style, NS_HTML5TREE_BUILDER_STYLE, PR_TRUE, PR_FALSE, PR_FALSE);
+  SMALL = new nsHtml5ElementName(nsHtml5Atoms::small_, nsHtml5Atoms::small_, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  THEAD = new nsHtml5ElementName(nsHtml5Atoms::thead, nsHtml5Atoms::thead, NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT, PR_TRUE, PR_FALSE, PR_TRUE);
+  TABLE = new nsHtml5ElementName(nsHtml5Atoms::table, nsHtml5Atoms::table, NS_HTML5TREE_BUILDER_TABLE, PR_FALSE, PR_TRUE, PR_TRUE);
+  TITLE = new nsHtml5ElementName(nsHtml5Atoms::title, nsHtml5Atoms::title, NS_HTML5TREE_BUILDER_TITLE, PR_TRUE, PR_FALSE, PR_FALSE);
+  TSPAN = new nsHtml5ElementName(nsHtml5Atoms::tspan, nsHtml5Atoms::tspan, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TIMES = new nsHtml5ElementName(nsHtml5Atoms::times, nsHtml5Atoms::times, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TFOOT = new nsHtml5ElementName(nsHtml5Atoms::tfoot, nsHtml5Atoms::tfoot, NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT, PR_TRUE, PR_FALSE, PR_TRUE);
+  TBODY = new nsHtml5ElementName(nsHtml5Atoms::tbody, nsHtml5Atoms::tbody, NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT, PR_TRUE, PR_FALSE, PR_TRUE);
+  UNION = new nsHtml5ElementName(nsHtml5Atoms::union_, nsHtml5Atoms::union_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VKERN = new nsHtml5ElementName(nsHtml5Atoms::vkern, nsHtml5Atoms::vkern, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VIDEO = new nsHtml5ElementName(nsHtml5Atoms::video, nsHtml5Atoms::video, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCSEC = new nsHtml5ElementName(nsHtml5Atoms::arcsec, nsHtml5Atoms::arcsec, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCCSC = new nsHtml5ElementName(nsHtml5Atoms::arccsc, nsHtml5Atoms::arccsc, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCTAN = new nsHtml5ElementName(nsHtml5Atoms::arctan, nsHtml5Atoms::arctan, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCSIN = new nsHtml5ElementName(nsHtml5Atoms::arcsin, nsHtml5Atoms::arcsin, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCCOS = new nsHtml5ElementName(nsHtml5Atoms::arccos, nsHtml5Atoms::arccos, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  APPLET = new nsHtml5ElementName(nsHtml5Atoms::applet, nsHtml5Atoms::applet, NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET, PR_FALSE, PR_TRUE, PR_FALSE);
+  ARCCOT = new nsHtml5ElementName(nsHtml5Atoms::arccot, nsHtml5Atoms::arccot, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  APPROX = new nsHtml5ElementName(nsHtml5Atoms::approx, nsHtml5Atoms::approx, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  BUTTON = new nsHtml5ElementName(nsHtml5Atoms::button, nsHtml5Atoms::button, NS_HTML5TREE_BUILDER_BUTTON, PR_FALSE, PR_TRUE, PR_FALSE);
+  CIRCLE = new nsHtml5ElementName(nsHtml5Atoms::circle, nsHtml5Atoms::circle, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CENTER = new nsHtml5ElementName(nsHtml5Atoms::center, nsHtml5Atoms::center, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, PR_TRUE, PR_FALSE, PR_FALSE);
+  CURSOR = new nsHtml5ElementName(nsHtml5Atoms::cursor, nsHtml5Atoms::cursor, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CANVAS = new nsHtml5ElementName(nsHtml5Atoms::canvas, nsHtml5Atoms::canvas, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DIVIDE = new nsHtml5ElementName(nsHtml5Atoms::divide, nsHtml5Atoms::divide, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DEGREE = new nsHtml5ElementName(nsHtml5Atoms::degree, nsHtml5Atoms::degree, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DIALOG = new nsHtml5ElementName(nsHtml5Atoms::dialog, nsHtml5Atoms::dialog, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  DOMAIN = new nsHtml5ElementName(nsHtml5Atoms::domain, nsHtml5Atoms::domain, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  EXISTS = new nsHtml5ElementName(nsHtml5Atoms::exists, nsHtml5Atoms::exists, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FETILE = new nsHtml5ElementName(nsHtml5Atoms::fetile, nsHtml5Atoms::feTile, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  FORALL = new nsHtml5ElementName(nsHtml5Atoms::forall, nsHtml5Atoms::forall, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FILTER = new nsHtml5ElementName(nsHtml5Atoms::filter, nsHtml5Atoms::filter, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  IFRAME = new nsHtml5ElementName(nsHtml5Atoms::iframe, nsHtml5Atoms::iframe, NS_HTML5TREE_BUILDER_IFRAME, PR_TRUE, PR_FALSE, PR_FALSE);
+  KEYGEN = new nsHtml5ElementName(nsHtml5Atoms::keygen, nsHtml5Atoms::keygen, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LAMBDA = new nsHtml5ElementName(nsHtml5Atoms::lambda, nsHtml5Atoms::lambda, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LEGEND = new nsHtml5ElementName(nsHtml5Atoms::legend, nsHtml5Atoms::legend, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MSPACE = new nsHtml5ElementName(nsHtml5Atoms::mspace, nsHtml5Atoms::mspace, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MTABLE = new nsHtml5ElementName(nsHtml5Atoms::mtable, nsHtml5Atoms::mtable, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MSTYLE = new nsHtml5ElementName(nsHtml5Atoms::mstyle, nsHtml5Atoms::mstyle, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MGLYPH = new nsHtml5ElementName(nsHtml5Atoms::mglyph, nsHtml5Atoms::mglyph, NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK, PR_FALSE, PR_FALSE, PR_FALSE);
+  MEDIAN = new nsHtml5ElementName(nsHtml5Atoms::median, nsHtml5Atoms::median, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MUNDER = new nsHtml5ElementName(nsHtml5Atoms::munder, nsHtml5Atoms::munder, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MARKER = new nsHtml5ElementName(nsHtml5Atoms::marker, nsHtml5Atoms::marker, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MERROR = new nsHtml5ElementName(nsHtml5Atoms::merror, nsHtml5Atoms::merror, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MOMENT = new nsHtml5ElementName(nsHtml5Atoms::moment, nsHtml5Atoms::moment, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MATRIX = new nsHtml5ElementName(nsHtml5Atoms::matrix, nsHtml5Atoms::matrix, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  OPTION = new nsHtml5ElementName(nsHtml5Atoms::option, nsHtml5Atoms::option, NS_HTML5TREE_BUILDER_OPTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  OBJECT = new nsHtml5ElementName(nsHtml5Atoms::object, nsHtml5Atoms::object, NS_HTML5TREE_BUILDER_OBJECT, PR_FALSE, PR_TRUE, PR_FALSE);
+  OUTPUT = new nsHtml5ElementName(nsHtml5Atoms::output, nsHtml5Atoms::output, NS_HTML5TREE_BUILDER_OUTPUT_OR_LABEL, PR_FALSE, PR_FALSE, PR_FALSE);
+  PRIMES = new nsHtml5ElementName(nsHtml5Atoms::primes, nsHtml5Atoms::primes, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SOURCE = new nsHtml5ElementName(nsHtml5Atoms::source, nsHtml5Atoms::source, NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE, PR_FALSE, PR_FALSE, PR_FALSE);
+  STRIKE = new nsHtml5ElementName(nsHtml5Atoms::strike, nsHtml5Atoms::strike, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  STRONG = new nsHtml5ElementName(nsHtml5Atoms::strong, nsHtml5Atoms::strong, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_EM_OR_FONT_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, PR_FALSE, PR_FALSE, PR_FALSE);
+  SWITCH = new nsHtml5ElementName(nsHtml5Atoms::switch_, nsHtml5Atoms::switch_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SYMBOL = new nsHtml5ElementName(nsHtml5Atoms::symbol, nsHtml5Atoms::symbol, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SPACER = new nsHtml5ElementName(nsHtml5Atoms::spacer, nsHtml5Atoms::spacer, NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, PR_TRUE, PR_FALSE, PR_FALSE);
+  SELECT = new nsHtml5ElementName(nsHtml5Atoms::select, nsHtml5Atoms::select, NS_HTML5TREE_BUILDER_SELECT, PR_TRUE, PR_FALSE, PR_FALSE);
+  SUBSET = new nsHtml5ElementName(nsHtml5Atoms::subset, nsHtml5Atoms::subset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SCRIPT = new nsHtml5ElementName(nsHtml5Atoms::script, nsHtml5Atoms::script, NS_HTML5TREE_BUILDER_SCRIPT, PR_TRUE, PR_FALSE, PR_FALSE);
+  TBREAK = new nsHtml5ElementName(nsHtml5Atoms::tbreak, nsHtml5Atoms::tbreak, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VECTOR = new nsHtml5ElementName(nsHtml5Atoms::vector, nsHtml5Atoms::vector, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  ANIMATE = new nsHtml5ElementName(nsHtml5Atoms::animate, nsHtml5Atoms::animate, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCSECH = new nsHtml5ElementName(nsHtml5Atoms::arcsech, nsHtml5Atoms::arcsech, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCCSCH = new nsHtml5ElementName(nsHtml5Atoms::arccsch, nsHtml5Atoms::arccsch, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCTANH = new nsHtml5ElementName(nsHtml5Atoms::arctanh, nsHtml5Atoms::arctanh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCSINH = new nsHtml5ElementName(nsHtml5Atoms::arcsinh, nsHtml5Atoms::arcsinh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCCOSH = new nsHtml5ElementName(nsHtml5Atoms::arccosh, nsHtml5Atoms::arccosh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ARCCOTH = new nsHtml5ElementName(nsHtml5Atoms::arccoth, nsHtml5Atoms::arccoth, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ACRONYM = new nsHtml5ElementName(nsHtml5Atoms::acronym, nsHtml5Atoms::acronym, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  BGSOUND = new nsHtml5ElementName(nsHtml5Atoms::bgsound, nsHtml5Atoms::bgsound, NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, PR_TRUE, PR_FALSE, PR_FALSE);
+  COMMAND = new nsHtml5ElementName(nsHtml5Atoms::command, nsHtml5Atoms::command, NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE, PR_TRUE, PR_FALSE, PR_FALSE);
+  COMPOSE = new nsHtml5ElementName(nsHtml5Atoms::compose, nsHtml5Atoms::compose, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CEILING = new nsHtml5ElementName(nsHtml5Atoms::ceiling, nsHtml5Atoms::ceiling, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CSYMBOL = new nsHtml5ElementName(nsHtml5Atoms::csymbol, nsHtml5Atoms::csymbol, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CAPTION = new nsHtml5ElementName(nsHtml5Atoms::caption, nsHtml5Atoms::caption, NS_HTML5TREE_BUILDER_CAPTION, PR_FALSE, PR_TRUE, PR_FALSE);
+  DISCARD = new nsHtml5ElementName(nsHtml5Atoms::discard, nsHtml5Atoms::discard, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DECLARE = new nsHtml5ElementName(nsHtml5Atoms::declare, nsHtml5Atoms::declare, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  ELLIPSE = new nsHtml5ElementName(nsHtml5Atoms::ellipse, nsHtml5Atoms::ellipse, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEFUNCA = new nsHtml5ElementName(nsHtml5Atoms::fefunca, nsHtml5Atoms::feFuncA, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEFUNCB = new nsHtml5ElementName(nsHtml5Atoms::fefuncb, nsHtml5Atoms::feFuncB, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEBLEND = new nsHtml5ElementName(nsHtml5Atoms::feblend, nsHtml5Atoms::feBlend, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEFLOOD = new nsHtml5ElementName(nsHtml5Atoms::feflood, nsHtml5Atoms::feFlood, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEIMAGE = new nsHtml5ElementName(nsHtml5Atoms::feimage, nsHtml5Atoms::feImage, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEMERGE = new nsHtml5ElementName(nsHtml5Atoms::femerge, nsHtml5Atoms::feMerge, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEFUNCG = new nsHtml5ElementName(nsHtml5Atoms::fefuncg, nsHtml5Atoms::feFuncG, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEFUNCR = new nsHtml5ElementName(nsHtml5Atoms::fefuncr, nsHtml5Atoms::feFuncR, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  HANDLER = new nsHtml5ElementName(nsHtml5Atoms::handler, nsHtml5Atoms::handler, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INVERSE = new nsHtml5ElementName(nsHtml5Atoms::inverse, nsHtml5Atoms::inverse, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  IMPLIES = new nsHtml5ElementName(nsHtml5Atoms::implies, nsHtml5Atoms::implies, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ISINDEX = new nsHtml5ElementName(nsHtml5Atoms::isindex, nsHtml5Atoms::isindex, NS_HTML5TREE_BUILDER_ISINDEX, PR_TRUE, PR_FALSE, PR_FALSE);
+  LOGBASE = new nsHtml5ElementName(nsHtml5Atoms::logbase, nsHtml5Atoms::logbase, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LISTING = new nsHtml5ElementName(nsHtml5Atoms::listing, nsHtml5Atoms::listing, NS_HTML5TREE_BUILDER_PRE_OR_LISTING, PR_TRUE, PR_FALSE, PR_FALSE);
+  MFENCED = new nsHtml5ElementName(nsHtml5Atoms::mfenced, nsHtml5Atoms::mfenced, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MPADDED = new nsHtml5ElementName(nsHtml5Atoms::mpadded, nsHtml5Atoms::mpadded, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MARQUEE = new nsHtml5ElementName(nsHtml5Atoms::marquee, nsHtml5Atoms::marquee, NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET, PR_FALSE, PR_TRUE, PR_FALSE);
+  MACTION = new nsHtml5ElementName(nsHtml5Atoms::maction, nsHtml5Atoms::maction, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MSUBSUP = new nsHtml5ElementName(nsHtml5Atoms::msubsup, nsHtml5Atoms::msubsup, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOEMBED = new nsHtml5ElementName(nsHtml5Atoms::noembed, nsHtml5Atoms::noembed, NS_HTML5TREE_BUILDER_NOEMBED, PR_TRUE, PR_FALSE, PR_FALSE);
+  POLYGON = new nsHtml5ElementName(nsHtml5Atoms::polygon, nsHtml5Atoms::polygon, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PATTERN = new nsHtml5ElementName(nsHtml5Atoms::pattern, nsHtml5Atoms::pattern, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PRODUCT = new nsHtml5ElementName(nsHtml5Atoms::product, nsHtml5Atoms::product, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SETDIFF = new nsHtml5ElementName(nsHtml5Atoms::setdiff, nsHtml5Atoms::setdiff, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  TENDSTO = new nsHtml5ElementName(nsHtml5Atoms::tendsto, nsHtml5Atoms::tendsto, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  UPLIMIT = new nsHtml5ElementName(nsHtml5Atoms::uplimit, nsHtml5Atoms::uplimit, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ALTGLYPH = new nsHtml5ElementName(nsHtml5Atoms::altglyph, nsHtml5Atoms::altGlyph, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  BASEFONT = new nsHtml5ElementName(nsHtml5Atoms::basefont, nsHtml5Atoms::basefont, NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, PR_TRUE, PR_FALSE, PR_FALSE);
+  CLIPPATH = new nsHtml5ElementName(nsHtml5Atoms::clippath, nsHtml5Atoms::clipPath, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CODOMAIN = new nsHtml5ElementName(nsHtml5Atoms::codomain, nsHtml5Atoms::codomain, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COLGROUP = new nsHtml5ElementName(nsHtml5Atoms::colgroup, nsHtml5Atoms::colgroup, NS_HTML5TREE_BUILDER_COLGROUP, PR_TRUE, PR_FALSE, PR_FALSE);
+  DATAGRID = new nsHtml5ElementName(nsHtml5Atoms::datagrid, nsHtml5Atoms::datagrid, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE);
+  EMPTYSET = new nsHtml5ElementName(nsHtml5Atoms::emptyset, nsHtml5Atoms::emptyset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FACTOROF = new nsHtml5ElementName(nsHtml5Atoms::factorof, nsHtml5Atoms::factorof, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FIELDSET = new nsHtml5ElementName(nsHtml5Atoms::fieldset, nsHtml5Atoms::fieldset, NS_HTML5TREE_BUILDER_FIELDSET, PR_TRUE, PR_FALSE, PR_FALSE);
+  FRAMESET = new nsHtml5ElementName(nsHtml5Atoms::frameset, nsHtml5Atoms::frameset, NS_HTML5TREE_BUILDER_FRAMESET, PR_TRUE, PR_FALSE, PR_FALSE);
+  FEOFFSET = new nsHtml5ElementName(nsHtml5Atoms::feoffset, nsHtml5Atoms::feOffset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  GLYPHREF = new nsHtml5ElementName(nsHtml5Atoms::glyphref, nsHtml5Atoms::glyphRef, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INTERVAL = new nsHtml5ElementName(nsHtml5Atoms::interval, nsHtml5Atoms::interval, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INTEGERS = new nsHtml5ElementName(nsHtml5Atoms::integers, nsHtml5Atoms::integers, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INFINITY = new nsHtml5ElementName(nsHtml5Atoms::infinity, nsHtml5Atoms::infinity, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LISTENER = new nsHtml5ElementName(nsHtml5Atoms::listener, nsHtml5Atoms::listener, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LOWLIMIT = new nsHtml5ElementName(nsHtml5Atoms::lowlimit, nsHtml5Atoms::lowlimit, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  METADATA = new nsHtml5ElementName(nsHtml5Atoms::metadata, nsHtml5Atoms::metadata, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MENCLOSE = new nsHtml5ElementName(nsHtml5Atoms::menclose, nsHtml5Atoms::menclose, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MPHANTOM = new nsHtml5ElementName(nsHtml5Atoms::mphantom, nsHtml5Atoms::mphantom, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOFRAMES = new nsHtml5ElementName(nsHtml5Atoms::noframes, nsHtml5Atoms::noframes, NS_HTML5TREE_BUILDER_NOFRAMES, PR_TRUE, PR_FALSE, PR_FALSE);
+  NOSCRIPT = new nsHtml5ElementName(nsHtml5Atoms::noscript, nsHtml5Atoms::noscript, NS_HTML5TREE_BUILDER_NOSCRIPT, PR_TRUE, PR_FALSE, PR_FALSE);
+  OPTGROUP = new nsHtml5ElementName(nsHtml5Atoms::optgroup, nsHtml5Atoms::optgroup, NS_HTML5TREE_BUILDER_OPTGROUP, PR_TRUE, PR_FALSE, PR_FALSE);
+  POLYLINE = new nsHtml5ElementName(nsHtml5Atoms::polyline, nsHtml5Atoms::polyline, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PREFETCH = new nsHtml5ElementName(nsHtml5Atoms::prefetch, nsHtml5Atoms::prefetch, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PROGRESS = new nsHtml5ElementName(nsHtml5Atoms::progress, nsHtml5Atoms::progress, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PRSUBSET = new nsHtml5ElementName(nsHtml5Atoms::prsubset, nsHtml5Atoms::prsubset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  QUOTIENT = new nsHtml5ElementName(nsHtml5Atoms::quotient, nsHtml5Atoms::quotient, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SELECTOR = new nsHtml5ElementName(nsHtml5Atoms::selector, nsHtml5Atoms::selector, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TEXTAREA = new nsHtml5ElementName(nsHtml5Atoms::textarea, nsHtml5Atoms::textarea, NS_HTML5TREE_BUILDER_TEXTAREA, PR_TRUE, PR_FALSE, PR_FALSE);
+  TEXTPATH = new nsHtml5ElementName(nsHtml5Atoms::textpath, nsHtml5Atoms::textPath, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VARIANCE = new nsHtml5ElementName(nsHtml5Atoms::variance, nsHtml5Atoms::variance, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ANIMATION = new nsHtml5ElementName(nsHtml5Atoms::animation, nsHtml5Atoms::animation, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CONJUGATE = new nsHtml5ElementName(nsHtml5Atoms::conjugate, nsHtml5Atoms::conjugate, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CONDITION = new nsHtml5ElementName(nsHtml5Atoms::condition, nsHtml5Atoms::condition, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COMPLEXES = new nsHtml5ElementName(nsHtml5Atoms::complexes, nsHtml5Atoms::complexes, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FONT_FACE = new nsHtml5ElementName(nsHtml5Atoms::font_face, nsHtml5Atoms::font_face, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FACTORIAL = new nsHtml5ElementName(nsHtml5Atoms::factorial, nsHtml5Atoms::factorial, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  INTERSECT = new nsHtml5ElementName(nsHtml5Atoms::intersect, nsHtml5Atoms::intersect, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  IMAGINARY = new nsHtml5ElementName(nsHtml5Atoms::imaginary, nsHtml5Atoms::imaginary, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LAPLACIAN = new nsHtml5ElementName(nsHtml5Atoms::laplacian, nsHtml5Atoms::laplacian, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MATRIXROW = new nsHtml5ElementName(nsHtml5Atoms::matrixrow, nsHtml5Atoms::matrixrow, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOTSUBSET = new nsHtml5ElementName(nsHtml5Atoms::notsubset, nsHtml5Atoms::notsubset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  OTHERWISE = new nsHtml5ElementName(nsHtml5Atoms::otherwise, nsHtml5Atoms::otherwise, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PIECEWISE = new nsHtml5ElementName(nsHtml5Atoms::piecewise, nsHtml5Atoms::piecewise, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PLAINTEXT = new nsHtml5ElementName(nsHtml5Atoms::plaintext, nsHtml5Atoms::plaintext, NS_HTML5TREE_BUILDER_PLAINTEXT, PR_TRUE, PR_FALSE, PR_FALSE);
+  RATIONALS = new nsHtml5ElementName(nsHtml5Atoms::rationals, nsHtml5Atoms::rationals, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SEMANTICS = new nsHtml5ElementName(nsHtml5Atoms::semantics, nsHtml5Atoms::semantics, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  TRANSPOSE = new nsHtml5ElementName(nsHtml5Atoms::transpose, nsHtml5Atoms::transpose, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ANNOTATION = new nsHtml5ElementName(nsHtml5Atoms::annotation, nsHtml5Atoms::annotation, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  BLOCKQUOTE = new nsHtml5ElementName(nsHtml5Atoms::blockquote, nsHtml5Atoms::blockquote, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, PR_TRUE, PR_FALSE, PR_FALSE);
+  DIVERGENCE = new nsHtml5ElementName(nsHtml5Atoms::divergence, nsHtml5Atoms::divergence, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  EULERGAMMA = new nsHtml5ElementName(nsHtml5Atoms::eulergamma, nsHtml5Atoms::eulergamma, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  EQUIVALENT = new nsHtml5ElementName(nsHtml5Atoms::equivalent, nsHtml5Atoms::equivalent, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  IMAGINARYI = new nsHtml5ElementName(nsHtml5Atoms::imaginaryi, nsHtml5Atoms::imaginaryi, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MALIGNMARK = new nsHtml5ElementName(nsHtml5Atoms::malignmark, nsHtml5Atoms::malignmark, NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK, PR_FALSE, PR_FALSE, PR_FALSE);
+  MUNDEROVER = new nsHtml5ElementName(nsHtml5Atoms::munderover, nsHtml5Atoms::munderover, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MLABELEDTR = new nsHtml5ElementName(nsHtml5Atoms::mlabeledtr, nsHtml5Atoms::mlabeledtr, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOTANUMBER = new nsHtml5ElementName(nsHtml5Atoms::notanumber, nsHtml5Atoms::notanumber, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SOLIDCOLOR = new nsHtml5ElementName(nsHtml5Atoms::solidcolor, nsHtml5Atoms::solidcolor, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ALTGLYPHDEF = new nsHtml5ElementName(nsHtml5Atoms::altglyphdef, nsHtml5Atoms::altGlyphDef, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DETERMINANT = new nsHtml5ElementName(nsHtml5Atoms::determinant, nsHtml5Atoms::determinant, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  EVENTSOURCE = new nsHtml5ElementName(nsHtml5Atoms::eventsource, nsHtml5Atoms::eventsource, NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE, PR_TRUE, PR_FALSE, PR_FALSE);
+  FEMERGENODE = new nsHtml5ElementName(nsHtml5Atoms::femergenode, nsHtml5Atoms::feMergeNode, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FECOMPOSITE = new nsHtml5ElementName(nsHtml5Atoms::fecomposite, nsHtml5Atoms::feComposite, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FESPOTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fespotlight, nsHtml5Atoms::feSpotLight, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MALIGNGROUP = new nsHtml5ElementName(nsHtml5Atoms::maligngroup, nsHtml5Atoms::maligngroup, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MPRESCRIPTS = new nsHtml5ElementName(nsHtml5Atoms::mprescripts, nsHtml5Atoms::mprescripts, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MOMENTABOUT = new nsHtml5ElementName(nsHtml5Atoms::momentabout, nsHtml5Atoms::momentabout, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NOTPRSUBSET = new nsHtml5ElementName(nsHtml5Atoms::notprsubset, nsHtml5Atoms::notprsubset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  PARTIALDIFF = new nsHtml5ElementName(nsHtml5Atoms::partialdiff, nsHtml5Atoms::partialdiff, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ALTGLYPHITEM = new nsHtml5ElementName(nsHtml5Atoms::altglyphitem, nsHtml5Atoms::altGlyphItem, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ANIMATECOLOR = new nsHtml5ElementName(nsHtml5Atoms::animatecolor, nsHtml5Atoms::animateColor, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DATATEMPLATE = new nsHtml5ElementName(nsHtml5Atoms::datatemplate, nsHtml5Atoms::datatemplate, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  EXPONENTIALE = new nsHtml5ElementName(nsHtml5Atoms::exponentiale, nsHtml5Atoms::exponentiale, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FETURBULENCE = new nsHtml5ElementName(nsHtml5Atoms::feturbulence, nsHtml5Atoms::feTurbulence, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEPOINTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fepointlight, nsHtml5Atoms::fePointLight, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEMORPHOLOGY = new nsHtml5ElementName(nsHtml5Atoms::femorphology, nsHtml5Atoms::feMorphology, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  OUTERPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::outerproduct, nsHtml5Atoms::outerproduct, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ANIMATEMOTION = new nsHtml5ElementName(nsHtml5Atoms::animatemotion, nsHtml5Atoms::animateMotion, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  COLOR_PROFILE = new nsHtml5ElementName(nsHtml5Atoms::color_profile, nsHtml5Atoms::color_profile, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FONT_FACE_SRC = new nsHtml5ElementName(nsHtml5Atoms::font_face_src, nsHtml5Atoms::font_face_src, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FONT_FACE_URI = new nsHtml5ElementName(nsHtml5Atoms::font_face_uri, nsHtml5Atoms::font_face_uri, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FOREIGNOBJECT = new nsHtml5ElementName(nsHtml5Atoms::foreignobject, nsHtml5Atoms::foreignObject, NS_HTML5TREE_BUILDER_FOREIGNOBJECT_OR_DESC, PR_FALSE, PR_FALSE, PR_FALSE);
+  FECOLORMATRIX = new nsHtml5ElementName(nsHtml5Atoms::fecolormatrix, nsHtml5Atoms::feColorMatrix, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MISSING_GLYPH = new nsHtml5ElementName(nsHtml5Atoms::missing_glyph, nsHtml5Atoms::missing_glyph, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  MMULTISCRIPTS = new nsHtml5ElementName(nsHtml5Atoms::mmultiscripts, nsHtml5Atoms::mmultiscripts, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  SCALARPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::scalarproduct, nsHtml5Atoms::scalarproduct, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  VECTORPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::vectorproduct, nsHtml5Atoms::vectorproduct, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ANNOTATION_XML = new nsHtml5ElementName(nsHtml5Atoms::annotation_xml, nsHtml5Atoms::annotation_xml, NS_HTML5TREE_BUILDER_ANNOTATION_XML, PR_FALSE, PR_FALSE, PR_FALSE);
+  DEFINITION_SRC = new nsHtml5ElementName(nsHtml5Atoms::definition_src, nsHtml5Atoms::definition_src, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FONT_FACE_NAME = new nsHtml5ElementName(nsHtml5Atoms::font_face_name, nsHtml5Atoms::font_face_name, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEGAUSSIANBLUR = new nsHtml5ElementName(nsHtml5Atoms::fegaussianblur, nsHtml5Atoms::feGaussianBlur, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEDISTANTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fedistantlight, nsHtml5Atoms::feDistantLight, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  LINEARGRADIENT = new nsHtml5ElementName(nsHtml5Atoms::lineargradient, nsHtml5Atoms::linearGradient, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  NATURALNUMBERS = new nsHtml5ElementName(nsHtml5Atoms::naturalnumbers, nsHtml5Atoms::naturalnumbers, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  RADIALGRADIENT = new nsHtml5ElementName(nsHtml5Atoms::radialgradient, nsHtml5Atoms::radialGradient, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ANIMATETRANSFORM = new nsHtml5ElementName(nsHtml5Atoms::animatetransform, nsHtml5Atoms::animateTransform, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  CARTESIANPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::cartesianproduct, nsHtml5Atoms::cartesianproduct, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FONT_FACE_FORMAT = new nsHtml5ElementName(nsHtml5Atoms::font_face_format, nsHtml5Atoms::font_face_format, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FECONVOLVEMATRIX = new nsHtml5ElementName(nsHtml5Atoms::feconvolvematrix, nsHtml5Atoms::feConvolveMatrix, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEDIFFUSELIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fediffuselighting, nsHtml5Atoms::feDiffuseLighting, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FEDISPLACEMENTMAP = new nsHtml5ElementName(nsHtml5Atoms::fedisplacementmap, nsHtml5Atoms::feDisplacementMap, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FESPECULARLIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fespecularlighting, nsHtml5Atoms::feSpecularLighting, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  DOMAINOFAPPLICATION = new nsHtml5ElementName(nsHtml5Atoms::domainofapplication, nsHtml5Atoms::domainofapplication, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  FECOMPONENTTRANSFER = new nsHtml5ElementName(nsHtml5Atoms::fecomponenttransfer, nsHtml5Atoms::feComponentTransfer, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE);
+  ELEMENT_NAMES = new nsHtml5ElementName*[391];
+  ELEMENT_NAMES[0] = A;
+  ELEMENT_NAMES[1] = B;
+  ELEMENT_NAMES[2] = G;
+  ELEMENT_NAMES[3] = I;
+  ELEMENT_NAMES[4] = P;
+  ELEMENT_NAMES[5] = Q;
+  ELEMENT_NAMES[6] = S;
+  ELEMENT_NAMES[7] = U;
+  ELEMENT_NAMES[8] = BR;
+  ELEMENT_NAMES[9] = CI;
+  ELEMENT_NAMES[10] = CN;
+  ELEMENT_NAMES[11] = DD;
+  ELEMENT_NAMES[12] = DL;
+  ELEMENT_NAMES[13] = DT;
+  ELEMENT_NAMES[14] = EM;
+  ELEMENT_NAMES[15] = EQ;
+  ELEMENT_NAMES[16] = FN;
+  ELEMENT_NAMES[17] = H1;
+  ELEMENT_NAMES[18] = H2;
+  ELEMENT_NAMES[19] = H3;
+  ELEMENT_NAMES[20] = H4;
+  ELEMENT_NAMES[21] = H5;
+  ELEMENT_NAMES[22] = H6;
+  ELEMENT_NAMES[23] = GT;
+  ELEMENT_NAMES[24] = HR;
+  ELEMENT_NAMES[25] = IN;
+  ELEMENT_NAMES[26] = LI;
+  ELEMENT_NAMES[27] = LN;
+  ELEMENT_NAMES[28] = LT;
+  ELEMENT_NAMES[29] = MI;
+  ELEMENT_NAMES[30] = MN;
+  ELEMENT_NAMES[31] = MO;
+  ELEMENT_NAMES[32] = MS;
+  ELEMENT_NAMES[33] = OL;
+  ELEMENT_NAMES[34] = OR;
+  ELEMENT_NAMES[35] = PI;
+  ELEMENT_NAMES[36] = RP;
+  ELEMENT_NAMES[37] = RT;
+  ELEMENT_NAMES[38] = TD;
+  ELEMENT_NAMES[39] = TH;
+  ELEMENT_NAMES[40] = TR;
+  ELEMENT_NAMES[41] = TT;
+  ELEMENT_NAMES[42] = UL;
+  ELEMENT_NAMES[43] = AND;
+  ELEMENT_NAMES[44] = ARG;
+  ELEMENT_NAMES[45] = ABS;
+  ELEMENT_NAMES[46] = BIG;
+  ELEMENT_NAMES[47] = BDO;
+  ELEMENT_NAMES[48] = CSC;
+  ELEMENT_NAMES[49] = COL;
+  ELEMENT_NAMES[50] = COS;
+  ELEMENT_NAMES[51] = COT;
+  ELEMENT_NAMES[52] = DEL;
+  ELEMENT_NAMES[53] = DFN;
+  ELEMENT_NAMES[54] = DIR;
+  ELEMENT_NAMES[55] = DIV;
+  ELEMENT_NAMES[56] = EXP;
+  ELEMENT_NAMES[57] = GCD;
+  ELEMENT_NAMES[58] = GEQ;
+  ELEMENT_NAMES[59] = IMG;
+  ELEMENT_NAMES[60] = INS;
+  ELEMENT_NAMES[61] = INT;
+  ELEMENT_NAMES[62] = KBD;
+  ELEMENT_NAMES[63] = LOG;
+  ELEMENT_NAMES[64] = LCM;
+  ELEMENT_NAMES[65] = LEQ;
+  ELEMENT_NAMES[66] = MTD;
+  ELEMENT_NAMES[67] = MIN;
+  ELEMENT_NAMES[68] = MAP;
+  ELEMENT_NAMES[69] = MTR;
+  ELEMENT_NAMES[70] = MAX;
+  ELEMENT_NAMES[71] = NEQ;
+  ELEMENT_NAMES[72] = NOT;
+  ELEMENT_NAMES[73] = NAV;
+  ELEMENT_NAMES[74] = PRE;
+  ELEMENT_NAMES[75] = REM;
+  ELEMENT_NAMES[76] = SUB;
+  ELEMENT_NAMES[77] = SEC;
+  ELEMENT_NAMES[78] = SVG;
+  ELEMENT_NAMES[79] = SUM;
+  ELEMENT_NAMES[80] = SIN;
+  ELEMENT_NAMES[81] = SEP;
+  ELEMENT_NAMES[82] = SUP;
+  ELEMENT_NAMES[83] = SET;
+  ELEMENT_NAMES[84] = TAN;
+  ELEMENT_NAMES[85] = USE;
+  ELEMENT_NAMES[86] = VAR;
+  ELEMENT_NAMES[87] = WBR;
+  ELEMENT_NAMES[88] = XMP;
+  ELEMENT_NAMES[89] = XOR;
+  ELEMENT_NAMES[90] = AREA;
+  ELEMENT_NAMES[91] = ABBR;
+  ELEMENT_NAMES[92] = BASE;
+  ELEMENT_NAMES[93] = BVAR;
+  ELEMENT_NAMES[94] = BODY;
+  ELEMENT_NAMES[95] = CARD;
+  ELEMENT_NAMES[96] = CODE;
+  ELEMENT_NAMES[97] = CITE;
+  ELEMENT_NAMES[98] = CSCH;
+  ELEMENT_NAMES[99] = COSH;
+  ELEMENT_NAMES[100] = COTH;
+  ELEMENT_NAMES[101] = CURL;
+  ELEMENT_NAMES[102] = DESC;
+  ELEMENT_NAMES[103] = DIFF;
+  ELEMENT_NAMES[104] = DEFS;
+  ELEMENT_NAMES[105] = FORM;
+  ELEMENT_NAMES[106] = FONT;
+  ELEMENT_NAMES[107] = GRAD;
+  ELEMENT_NAMES[108] = HEAD;
+  ELEMENT_NAMES[109] = HTML;
+  ELEMENT_NAMES[110] = LINE;
+  ELEMENT_NAMES[111] = LINK;
+  ELEMENT_NAMES[112] = LIST;
+  ELEMENT_NAMES[113] = META;
+  ELEMENT_NAMES[114] = MSUB;
+  ELEMENT_NAMES[115] = MODE;
+  ELEMENT_NAMES[116] = MATH;
+  ELEMENT_NAMES[117] = MARK;
+  ELEMENT_NAMES[118] = MASK;
+  ELEMENT_NAMES[119] = MEAN;
+  ELEMENT_NAMES[120] = MSUP;
+  ELEMENT_NAMES[121] = MENU;
+  ELEMENT_NAMES[122] = MROW;
+  ELEMENT_NAMES[123] = NONE;
+  ELEMENT_NAMES[124] = NOBR;
+  ELEMENT_NAMES[125] = NEST;
+  ELEMENT_NAMES[126] = PATH;
+  ELEMENT_NAMES[127] = PLUS;
+  ELEMENT_NAMES[128] = RULE;
+  ELEMENT_NAMES[129] = REAL;
+  ELEMENT_NAMES[130] = RELN;
+  ELEMENT_NAMES[131] = RECT;
+  ELEMENT_NAMES[132] = ROOT;
+  ELEMENT_NAMES[133] = RUBY;
+  ELEMENT_NAMES[134] = SECH;
+  ELEMENT_NAMES[135] = SINH;
+  ELEMENT_NAMES[136] = SPAN;
+  ELEMENT_NAMES[137] = SAMP;
+  ELEMENT_NAMES[138] = STOP;
+  ELEMENT_NAMES[139] = SDEV;
+  ELEMENT_NAMES[140] = TIME;
+  ELEMENT_NAMES[141] = TRUE;
+  ELEMENT_NAMES[142] = TREF;
+  ELEMENT_NAMES[143] = TANH;
+  ELEMENT_NAMES[144] = TEXT;
+  ELEMENT_NAMES[145] = VIEW;
+  ELEMENT_NAMES[146] = ASIDE;
+  ELEMENT_NAMES[147] = AUDIO;
+  ELEMENT_NAMES[148] = APPLY;
+  ELEMENT_NAMES[149] = EMBED;
+  ELEMENT_NAMES[150] = FRAME;
+  ELEMENT_NAMES[151] = FALSE;
+  ELEMENT_NAMES[152] = FLOOR;
+  ELEMENT_NAMES[153] = GLYPH;
+  ELEMENT_NAMES[154] = HKERN;
+  ELEMENT_NAMES[155] = IMAGE;
+  ELEMENT_NAMES[156] = IDENT;
+  ELEMENT_NAMES[157] = INPUT;
+  ELEMENT_NAMES[158] = LABEL;
+  ELEMENT_NAMES[159] = LIMIT;
+  ELEMENT_NAMES[160] = MFRAC;
+  ELEMENT_NAMES[161] = MPATH;
+  ELEMENT_NAMES[162] = METER;
+  ELEMENT_NAMES[163] = MOVER;
+  ELEMENT_NAMES[164] = MINUS;
+  ELEMENT_NAMES[165] = MROOT;
+  ELEMENT_NAMES[166] = MSQRT;
+  ELEMENT_NAMES[167] = MTEXT;
+  ELEMENT_NAMES[168] = NOTIN;
+  ELEMENT_NAMES[169] = PIECE;
+  ELEMENT_NAMES[170] = PARAM;
+  ELEMENT_NAMES[171] = POWER;
+  ELEMENT_NAMES[172] = REALS;
+  ELEMENT_NAMES[173] = STYLE;
+  ELEMENT_NAMES[174] = SMALL;
+  ELEMENT_NAMES[175] = THEAD;
+  ELEMENT_NAMES[176] = TABLE;
+  ELEMENT_NAMES[177] = TITLE;
+  ELEMENT_NAMES[178] = TSPAN;
+  ELEMENT_NAMES[179] = TIMES;
+  ELEMENT_NAMES[180] = TFOOT;
+  ELEMENT_NAMES[181] = TBODY;
+  ELEMENT_NAMES[182] = UNION;
+  ELEMENT_NAMES[183] = VKERN;
+  ELEMENT_NAMES[184] = VIDEO;
+  ELEMENT_NAMES[185] = ARCSEC;
+  ELEMENT_NAMES[186] = ARCCSC;
+  ELEMENT_NAMES[187] = ARCTAN;
+  ELEMENT_NAMES[188] = ARCSIN;
+  ELEMENT_NAMES[189] = ARCCOS;
+  ELEMENT_NAMES[190] = APPLET;
+  ELEMENT_NAMES[191] = ARCCOT;
+  ELEMENT_NAMES[192] = APPROX;
+  ELEMENT_NAMES[193] = BUTTON;
+  ELEMENT_NAMES[194] = CIRCLE;
+  ELEMENT_NAMES[195] = CENTER;
+  ELEMENT_NAMES[196] = CURSOR;
+  ELEMENT_NAMES[197] = CANVAS;
+  ELEMENT_NAMES[198] = DIVIDE;
+  ELEMENT_NAMES[199] = DEGREE;
+  ELEMENT_NAMES[200] = DIALOG;
+  ELEMENT_NAMES[201] = DOMAIN;
+  ELEMENT_NAMES[202] = EXISTS;
+  ELEMENT_NAMES[203] = FETILE;
+  ELEMENT_NAMES[204] = FIGURE;
+  ELEMENT_NAMES[205] = FORALL;
+  ELEMENT_NAMES[206] = FILTER;
+  ELEMENT_NAMES[207] = FOOTER;
+  ELEMENT_NAMES[208] = HEADER;
+  ELEMENT_NAMES[209] = IFRAME;
+  ELEMENT_NAMES[210] = KEYGEN;
+  ELEMENT_NAMES[211] = LAMBDA;
+  ELEMENT_NAMES[212] = LEGEND;
+  ELEMENT_NAMES[213] = MSPACE;
+  ELEMENT_NAMES[214] = MTABLE;
+  ELEMENT_NAMES[215] = MSTYLE;
+  ELEMENT_NAMES[216] = MGLYPH;
+  ELEMENT_NAMES[217] = MEDIAN;
+  ELEMENT_NAMES[218] = MUNDER;
+  ELEMENT_NAMES[219] = MARKER;
+  ELEMENT_NAMES[220] = MERROR;
+  ELEMENT_NAMES[221] = MOMENT;
+  ELEMENT_NAMES[222] = MATRIX;
+  ELEMENT_NAMES[223] = OPTION;
+  ELEMENT_NAMES[224] = OBJECT;
+  ELEMENT_NAMES[225] = OUTPUT;
+  ELEMENT_NAMES[226] = PRIMES;
+  ELEMENT_NAMES[227] = SOURCE;
+  ELEMENT_NAMES[228] = STRIKE;
+  ELEMENT_NAMES[229] = STRONG;
+  ELEMENT_NAMES[230] = SWITCH;
+  ELEMENT_NAMES[231] = SYMBOL;
+  ELEMENT_NAMES[232] = SPACER;
+  ELEMENT_NAMES[233] = SELECT;
+  ELEMENT_NAMES[234] = SUBSET;
+  ELEMENT_NAMES[235] = SCRIPT;
+  ELEMENT_NAMES[236] = TBREAK;
+  ELEMENT_NAMES[237] = VECTOR;
+  ELEMENT_NAMES[238] = ARTICLE;
+  ELEMENT_NAMES[239] = ANIMATE;
+  ELEMENT_NAMES[240] = ARCSECH;
+  ELEMENT_NAMES[241] = ARCCSCH;
+  ELEMENT_NAMES[242] = ARCTANH;
+  ELEMENT_NAMES[243] = ARCSINH;
+  ELEMENT_NAMES[244] = ARCCOSH;
+  ELEMENT_NAMES[245] = ARCCOTH;
+  ELEMENT_NAMES[246] = ACRONYM;
+  ELEMENT_NAMES[247] = ADDRESS;
+  ELEMENT_NAMES[248] = BGSOUND;
+  ELEMENT_NAMES[249] = COMMAND;
+  ELEMENT_NAMES[250] = COMPOSE;
+  ELEMENT_NAMES[251] = CEILING;
+  ELEMENT_NAMES[252] = CSYMBOL;
+  ELEMENT_NAMES[253] = CAPTION;
+  ELEMENT_NAMES[254] = DISCARD;
+  ELEMENT_NAMES[255] = DECLARE;
+  ELEMENT_NAMES[256] = DETAILS;
+  ELEMENT_NAMES[257] = ELLIPSE;
+  ELEMENT_NAMES[258] = FEFUNCA;
+  ELEMENT_NAMES[259] = FEFUNCB;
+  ELEMENT_NAMES[260] = FEBLEND;
+  ELEMENT_NAMES[261] = FEFLOOD;
+  ELEMENT_NAMES[262] = FEIMAGE;
+  ELEMENT_NAMES[263] = FEMERGE;
+  ELEMENT_NAMES[264] = FEFUNCG;
+  ELEMENT_NAMES[265] = FEFUNCR;
+  ELEMENT_NAMES[266] = HANDLER;
+  ELEMENT_NAMES[267] = INVERSE;
+  ELEMENT_NAMES[268] = IMPLIES;
+  ELEMENT_NAMES[269] = ISINDEX;
+  ELEMENT_NAMES[270] = LOGBASE;
+  ELEMENT_NAMES[271] = LISTING;
+  ELEMENT_NAMES[272] = MFENCED;
+  ELEMENT_NAMES[273] = MPADDED;
+  ELEMENT_NAMES[274] = MARQUEE;
+  ELEMENT_NAMES[275] = MACTION;
+  ELEMENT_NAMES[276] = MSUBSUP;
+  ELEMENT_NAMES[277] = NOEMBED;
+  ELEMENT_NAMES[278] = POLYGON;
+  ELEMENT_NAMES[279] = PATTERN;
+  ELEMENT_NAMES[280] = PRODUCT;
+  ELEMENT_NAMES[281] = SETDIFF;
+  ELEMENT_NAMES[282] = SECTION;
+  ELEMENT_NAMES[283] = TENDSTO;
+  ELEMENT_NAMES[284] = UPLIMIT;
+  ELEMENT_NAMES[285] = ALTGLYPH;
+  ELEMENT_NAMES[286] = BASEFONT;
+  ELEMENT_NAMES[287] = CLIPPATH;
+  ELEMENT_NAMES[288] = CODOMAIN;
+  ELEMENT_NAMES[289] = COLGROUP;
+  ELEMENT_NAMES[290] = DATAGRID;
+  ELEMENT_NAMES[291] = EMPTYSET;
+  ELEMENT_NAMES[292] = FACTOROF;
+  ELEMENT_NAMES[293] = FIELDSET;
+  ELEMENT_NAMES[294] = FRAMESET;
+  ELEMENT_NAMES[295] = FEOFFSET;
+  ELEMENT_NAMES[296] = GLYPHREF;
+  ELEMENT_NAMES[297] = INTERVAL;
+  ELEMENT_NAMES[298] = INTEGERS;
+  ELEMENT_NAMES[299] = INFINITY;
+  ELEMENT_NAMES[300] = LISTENER;
+  ELEMENT_NAMES[301] = LOWLIMIT;
+  ELEMENT_NAMES[302] = METADATA;
+  ELEMENT_NAMES[303] = MENCLOSE;
+  ELEMENT_NAMES[304] = MPHANTOM;
+  ELEMENT_NAMES[305] = NOFRAMES;
+  ELEMENT_NAMES[306] = NOSCRIPT;
+  ELEMENT_NAMES[307] = OPTGROUP;
+  ELEMENT_NAMES[308] = POLYLINE;
+  ELEMENT_NAMES[309] = PREFETCH;
+  ELEMENT_NAMES[310] = PROGRESS;
+  ELEMENT_NAMES[311] = PRSUBSET;
+  ELEMENT_NAMES[312] = QUOTIENT;
+  ELEMENT_NAMES[313] = SELECTOR;
+  ELEMENT_NAMES[314] = TEXTAREA;
+  ELEMENT_NAMES[315] = TEXTPATH;
+  ELEMENT_NAMES[316] = VARIANCE;
+  ELEMENT_NAMES[317] = ANIMATION;
+  ELEMENT_NAMES[318] = CONJUGATE;
+  ELEMENT_NAMES[319] = CONDITION;
+  ELEMENT_NAMES[320] = COMPLEXES;
+  ELEMENT_NAMES[321] = FONT_FACE;
+  ELEMENT_NAMES[322] = FACTORIAL;
+  ELEMENT_NAMES[323] = INTERSECT;
+  ELEMENT_NAMES[324] = IMAGINARY;
+  ELEMENT_NAMES[325] = LAPLACIAN;
+  ELEMENT_NAMES[326] = MATRIXROW;
+  ELEMENT_NAMES[327] = NOTSUBSET;
+  ELEMENT_NAMES[328] = OTHERWISE;
+  ELEMENT_NAMES[329] = PIECEWISE;
+  ELEMENT_NAMES[330] = PLAINTEXT;
+  ELEMENT_NAMES[331] = RATIONALS;
+  ELEMENT_NAMES[332] = SEMANTICS;
+  ELEMENT_NAMES[333] = TRANSPOSE;
+  ELEMENT_NAMES[334] = ANNOTATION;
+  ELEMENT_NAMES[335] = BLOCKQUOTE;
+  ELEMENT_NAMES[336] = DIVERGENCE;
+  ELEMENT_NAMES[337] = EULERGAMMA;
+  ELEMENT_NAMES[338] = EQUIVALENT;
+  ELEMENT_NAMES[339] = IMAGINARYI;
+  ELEMENT_NAMES[340] = MALIGNMARK;
+  ELEMENT_NAMES[341] = MUNDEROVER;
+  ELEMENT_NAMES[342] = MLABELEDTR;
+  ELEMENT_NAMES[343] = NOTANUMBER;
+  ELEMENT_NAMES[344] = SOLIDCOLOR;
+  ELEMENT_NAMES[345] = ALTGLYPHDEF;
+  ELEMENT_NAMES[346] = DETERMINANT;
+  ELEMENT_NAMES[347] = EVENTSOURCE;
+  ELEMENT_NAMES[348] = FEMERGENODE;
+  ELEMENT_NAMES[349] = FECOMPOSITE;
+  ELEMENT_NAMES[350] = FESPOTLIGHT;
+  ELEMENT_NAMES[351] = MALIGNGROUP;
+  ELEMENT_NAMES[352] = MPRESCRIPTS;
+  ELEMENT_NAMES[353] = MOMENTABOUT;
+  ELEMENT_NAMES[354] = NOTPRSUBSET;
+  ELEMENT_NAMES[355] = PARTIALDIFF;
+  ELEMENT_NAMES[356] = ALTGLYPHITEM;
+  ELEMENT_NAMES[357] = ANIMATECOLOR;
+  ELEMENT_NAMES[358] = DATATEMPLATE;
+  ELEMENT_NAMES[359] = EXPONENTIALE;
+  ELEMENT_NAMES[360] = FETURBULENCE;
+  ELEMENT_NAMES[361] = FEPOINTLIGHT;
+  ELEMENT_NAMES[362] = FEMORPHOLOGY;
+  ELEMENT_NAMES[363] = OUTERPRODUCT;
+  ELEMENT_NAMES[364] = ANIMATEMOTION;
+  ELEMENT_NAMES[365] = COLOR_PROFILE;
+  ELEMENT_NAMES[366] = FONT_FACE_SRC;
+  ELEMENT_NAMES[367] = FONT_FACE_URI;
+  ELEMENT_NAMES[368] = FOREIGNOBJECT;
+  ELEMENT_NAMES[369] = FECOLORMATRIX;
+  ELEMENT_NAMES[370] = MISSING_GLYPH;
+  ELEMENT_NAMES[371] = MMULTISCRIPTS;
+  ELEMENT_NAMES[372] = SCALARPRODUCT;
+  ELEMENT_NAMES[373] = VECTORPRODUCT;
+  ELEMENT_NAMES[374] = ANNOTATION_XML;
+  ELEMENT_NAMES[375] = DEFINITION_SRC;
+  ELEMENT_NAMES[376] = FONT_FACE_NAME;
+  ELEMENT_NAMES[377] = FEGAUSSIANBLUR;
+  ELEMENT_NAMES[378] = FEDISTANTLIGHT;
+  ELEMENT_NAMES[379] = LINEARGRADIENT;
+  ELEMENT_NAMES[380] = NATURALNUMBERS;
+  ELEMENT_NAMES[381] = RADIALGRADIENT;
+  ELEMENT_NAMES[382] = ANIMATETRANSFORM;
+  ELEMENT_NAMES[383] = CARTESIANPRODUCT;
+  ELEMENT_NAMES[384] = FONT_FACE_FORMAT;
+  ELEMENT_NAMES[385] = FECONVOLVEMATRIX;
+  ELEMENT_NAMES[386] = FEDIFFUSELIGHTING;
+  ELEMENT_NAMES[387] = FEDISPLACEMENTMAP;
+  ELEMENT_NAMES[388] = FESPECULARLIGHTING;
+  ELEMENT_NAMES[389] = DOMAINOFAPPLICATION;
+  ELEMENT_NAMES[390] = FECOMPONENTTRANSFER;
+}
+
+void
+nsHtml5ElementName::releaseStatics()
+{
+  delete NULL_ELEMENT_NAME;
+  delete A;
+  delete B;
+  delete G;
+  delete I;
+  delete P;
+  delete Q;
+  delete S;
+  delete U;
+  delete BR;
+  delete CI;
+  delete CN;
+  delete DD;
+  delete DL;
+  delete DT;
+  delete EM;
+  delete EQ;
+  delete FN;
+  delete H1;
+  delete H2;
+  delete H3;
+  delete H4;
+  delete H5;
+  delete H6;
+  delete GT;
+  delete HR;
+  delete IN;
+  delete LI;
+  delete LN;
+  delete LT;
+  delete MI;
+  delete MN;
+  delete MO;
+  delete MS;
+  delete OL;
+  delete OR;
+  delete PI;
+  delete RP;
+  delete RT;
+  delete TD;
+  delete TH;
+  delete TR;
+  delete TT;
+  delete UL;
+  delete AND;
+  delete ARG;
+  delete ABS;
+  delete BIG;
+  delete BDO;
+  delete CSC;
+  delete COL;
+  delete COS;
+  delete COT;
+  delete DEL;
+  delete DFN;
+  delete DIR;
+  delete DIV;
+  delete EXP;
+  delete GCD;
+  delete GEQ;
+  delete IMG;
+  delete INS;
+  delete INT;
+  delete KBD;
+  delete LOG;
+  delete LCM;
+  delete LEQ;
+  delete MTD;
+  delete MIN;
+  delete MAP;
+  delete MTR;
+  delete MAX;
+  delete NEQ;
+  delete NOT;
+  delete NAV;
+  delete PRE;
+  delete REM;
+  delete SUB;
+  delete SEC;
+  delete SVG;
+  delete SUM;
+  delete SIN;
+  delete SEP;
+  delete SUP;
+  delete SET;
+  delete TAN;
+  delete USE;
+  delete VAR;
+  delete WBR;
+  delete XMP;
+  delete XOR;
+  delete AREA;
+  delete ABBR;
+  delete BASE;
+  delete BVAR;
+  delete BODY;
+  delete CARD;
+  delete CODE;
+  delete CITE;
+  delete CSCH;
+  delete COSH;
+  delete COTH;
+  delete CURL;
+  delete DESC;
+  delete DIFF;
+  delete DEFS;
+  delete FORM;
+  delete FONT;
+  delete GRAD;
+  delete HEAD;
+  delete HTML;
+  delete LINE;
+  delete LINK;
+  delete LIST;
+  delete META;
+  delete MSUB;
+  delete MODE;
+  delete MATH;
+  delete MARK;
+  delete MASK;
+  delete MEAN;
+  delete MSUP;
+  delete MENU;
+  delete MROW;
+  delete NONE;
+  delete NOBR;
+  delete NEST;
+  delete PATH;
+  delete PLUS;
+  delete RULE;
+  delete REAL;
+  delete RELN;
+  delete RECT;
+  delete ROOT;
+  delete RUBY;
+  delete SECH;
+  delete SINH;
+  delete SPAN;
+  delete SAMP;
+  delete STOP;
+  delete SDEV;
+  delete TIME;
+  delete TRUE;
+  delete TREF;
+  delete TANH;
+  delete TEXT;
+  delete VIEW;
+  delete ASIDE;
+  delete AUDIO;
+  delete APPLY;
+  delete EMBED;
+  delete FRAME;
+  delete FALSE;
+  delete FLOOR;
+  delete GLYPH;
+  delete HKERN;
+  delete IMAGE;
+  delete IDENT;
+  delete INPUT;
+  delete LABEL;
+  delete LIMIT;
+  delete MFRAC;
+  delete MPATH;
+  delete METER;
+  delete MOVER;
+  delete MINUS;
+  delete MROOT;
+  delete MSQRT;
+  delete MTEXT;
+  delete NOTIN;
+  delete PIECE;
+  delete PARAM;
+  delete POWER;
+  delete REALS;
+  delete STYLE;
+  delete SMALL;
+  delete THEAD;
+  delete TABLE;
+  delete TITLE;
+  delete TSPAN;
+  delete TIMES;
+  delete TFOOT;
+  delete TBODY;
+  delete UNION;
+  delete VKERN;
+  delete VIDEO;
+  delete ARCSEC;
+  delete ARCCSC;
+  delete ARCTAN;
+  delete ARCSIN;
+  delete ARCCOS;
+  delete APPLET;
+  delete ARCCOT;
+  delete APPROX;
+  delete BUTTON;
+  delete CIRCLE;
+  delete CENTER;
+  delete CURSOR;
+  delete CANVAS;
+  delete DIVIDE;
+  delete DEGREE;
+  delete DIALOG;
+  delete DOMAIN;
+  delete EXISTS;
+  delete FETILE;
+  delete FIGURE;
+  delete FORALL;
+  delete FILTER;
+  delete FOOTER;
+  delete HEADER;
+  delete IFRAME;
+  delete KEYGEN;
+  delete LAMBDA;
+  delete LEGEND;
+  delete MSPACE;
+  delete MTABLE;
+  delete MSTYLE;
+  delete MGLYPH;
+  delete MEDIAN;
+  delete MUNDER;
+  delete MARKER;
+  delete MERROR;
+  delete MOMENT;
+  delete MATRIX;
+  delete OPTION;
+  delete OBJECT;
+  delete OUTPUT;
+  delete PRIMES;
+  delete SOURCE;
+  delete STRIKE;
+  delete STRONG;
+  delete SWITCH;
+  delete SYMBOL;
+  delete SPACER;
+  delete SELECT;
+  delete SUBSET;
+  delete SCRIPT;
+  delete TBREAK;
+  delete VECTOR;
+  delete ARTICLE;
+  delete ANIMATE;
+  delete ARCSECH;
+  delete ARCCSCH;
+  delete ARCTANH;
+  delete ARCSINH;
+  delete ARCCOSH;
+  delete ARCCOTH;
+  delete ACRONYM;
+  delete ADDRESS;
+  delete BGSOUND;
+  delete COMMAND;
+  delete COMPOSE;
+  delete CEILING;
+  delete CSYMBOL;
+  delete CAPTION;
+  delete DISCARD;
+  delete DECLARE;
+  delete DETAILS;
+  delete ELLIPSE;
+  delete FEFUNCA;
+  delete FEFUNCB;
+  delete FEBLEND;
+  delete FEFLOOD;
+  delete FEIMAGE;
+  delete FEMERGE;
+  delete FEFUNCG;
+  delete FEFUNCR;
+  delete HANDLER;
+  delete INVERSE;
+  delete IMPLIES;
+  delete ISINDEX;
+  delete LOGBASE;
+  delete LISTING;
+  delete MFENCED;
+  delete MPADDED;
+  delete MARQUEE;
+  delete MACTION;
+  delete MSUBSUP;
+  delete NOEMBED;
+  delete POLYGON;
+  delete PATTERN;
+  delete PRODUCT;
+  delete SETDIFF;
+  delete SECTION;
+  delete TENDSTO;
+  delete UPLIMIT;
+  delete ALTGLYPH;
+  delete BASEFONT;
+  delete CLIPPATH;
+  delete CODOMAIN;
+  delete COLGROUP;
+  delete DATAGRID;
+  delete EMPTYSET;
+  delete FACTOROF;
+  delete FIELDSET;
+  delete FRAMESET;
+  delete FEOFFSET;
+  delete GLYPHREF;
+  delete INTERVAL;
+  delete INTEGERS;
+  delete INFINITY;
+  delete LISTENER;
+  delete LOWLIMIT;
+  delete METADATA;
+  delete MENCLOSE;
+  delete MPHANTOM;
+  delete NOFRAMES;
+  delete NOSCRIPT;
+  delete OPTGROUP;
+  delete POLYLINE;
+  delete PREFETCH;
+  delete PROGRESS;
+  delete PRSUBSET;
+  delete QUOTIENT;
+  delete SELECTOR;
+  delete TEXTAREA;
+  delete TEXTPATH;
+  delete VARIANCE;
+  delete ANIMATION;
+  delete CONJUGATE;
+  delete CONDITION;
+  delete COMPLEXES;
+  delete FONT_FACE;
+  delete FACTORIAL;
+  delete INTERSECT;
+  delete IMAGINARY;
+  delete LAPLACIAN;
+  delete MATRIXROW;
+  delete NOTSUBSET;
+  delete OTHERWISE;
+  delete PIECEWISE;
+  delete PLAINTEXT;
+  delete RATIONALS;
+  delete SEMANTICS;
+  delete TRANSPOSE;
+  delete ANNOTATION;
+  delete BLOCKQUOTE;
+  delete DIVERGENCE;
+  delete EULERGAMMA;
+  delete EQUIVALENT;
+  delete IMAGINARYI;
+  delete MALIGNMARK;
+  delete MUNDEROVER;
+  delete MLABELEDTR;
+  delete NOTANUMBER;
+  delete SOLIDCOLOR;
+  delete ALTGLYPHDEF;
+  delete DETERMINANT;
+  delete EVENTSOURCE;
+  delete FEMERGENODE;
+  delete FECOMPOSITE;
+  delete FESPOTLIGHT;
+  delete MALIGNGROUP;
+  delete MPRESCRIPTS;
+  delete MOMENTABOUT;
+  delete NOTPRSUBSET;
+  delete PARTIALDIFF;
+  delete ALTGLYPHITEM;
+  delete ANIMATECOLOR;
+  delete DATATEMPLATE;
+  delete EXPONENTIALE;
+  delete FETURBULENCE;
+  delete FEPOINTLIGHT;
+  delete FEMORPHOLOGY;
+  delete OUTERPRODUCT;
+  delete ANIMATEMOTION;
+  delete COLOR_PROFILE;
+  delete FONT_FACE_SRC;
+  delete FONT_FACE_URI;
+  delete FOREIGNOBJECT;
+  delete FECOLORMATRIX;
+  delete MISSING_GLYPH;
+  delete MMULTISCRIPTS;
+  delete SCALARPRODUCT;
+  delete VECTORPRODUCT;
+  delete ANNOTATION_XML;
+  delete DEFINITION_SRC;
+  delete FONT_FACE_NAME;
+  delete FEGAUSSIANBLUR;
+  delete FEDISTANTLIGHT;
+  delete LINEARGRADIENT;
+  delete NATURALNUMBERS;
+  delete RADIALGRADIENT;
+  delete ANIMATETRANSFORM;
+  delete CARTESIANPRODUCT;
+  delete FONT_FACE_FORMAT;
+  delete FECONVOLVEMATRIX;
+  delete FEDIFFUSELIGHTING;
+  delete FEDISPLACEMENTMAP;
+  delete FESPECULARLIGHTING;
+  delete DOMAINOFAPPLICATION;
+  delete FECOMPONENTTRANSFER;
+  delete[] ELEMENT_NAMES;
+}
+
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5ElementName.h
@@ -0,0 +1,878 @@
+/*
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a 
+ * copy of this software and associated documentation files (the "Software"), 
+ * to deal in the Software without restriction, including without limitation 
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+ * and/or sell copies of the Software, and to permit persons to whom the 
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in 
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
+ * Please edit ElementName.java instead and regenerate.
+ */
+
+#ifndef nsHtml5ElementName_h__
+#define nsHtml5ElementName_h__
+
+#include "prtypes.h"
+#include "nsIAtom.h"
+#include "nsString.h"
+#include "nsINameSpaceManager.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "jArray.h"
+#include "nsHtml5DocumentMode.h"
+#include "nsHtml5ArrayCopy.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Parser.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Atoms.h"
+
+class nsHtml5Parser;
+
+class nsHtml5Tokenizer;
+class nsHtml5TreeBuilder;
+class nsHtml5AttributeName;
+class nsHtml5HtmlAttributes;
+class nsHtml5StackNode;
+class nsHtml5UTF16Buffer;
+class nsHtml5Portability;
+
+class nsHtml5ElementName
+{
+  public:
+    static nsHtml5ElementName* NULL_ELEMENT_NAME;
+    nsIAtom* name;
+    nsIAtom* camelCaseName;
+    PRInt32 group;
+    PRBool special;
+    PRBool scoping;
+    PRBool fosterParenting;
+    static nsHtml5ElementName* elementNameByBuffer(jArray<PRUnichar,PRInt32> buf, PRInt32 offset, PRInt32 length);
+  private:
+    static PRInt32 bufToHash(jArray<PRUnichar,PRInt32> buf, PRInt32 len);
+    nsHtml5ElementName(nsIAtom* name, nsIAtom* camelCaseName, PRInt32 group, PRBool special, PRBool scoping, PRBool fosterParenting);
+    nsHtml5ElementName(nsIAtom* name);
+  public:
+    void release();
+  private:
+    void destructor();
+  public:
+    static nsHtml5ElementName* A;
+    static nsHtml5ElementName* B;
+    static nsHtml5ElementName* G;
+    static nsHtml5ElementName* I;
+    static nsHtml5ElementName* P;
+    static nsHtml5ElementName* Q;
+    static nsHtml5ElementName* S;
+    static nsHtml5ElementName* U;
+    static nsHtml5ElementName* BR;
+    static nsHtml5ElementName* CI;
+    static nsHtml5ElementName* CN;
+    static nsHtml5ElementName* DD;
+    static nsHtml5ElementName* DL;
+    static nsHtml5ElementName* DT;
+    static nsHtml5ElementName* EM;
+    static nsHtml5ElementName* EQ;
+    static nsHtml5ElementName* FN;
+    static nsHtml5ElementName* H1;
+    static nsHtml5ElementName* H2;
+    static nsHtml5ElementName* H3;
+    static nsHtml5ElementName* H4;
+    static nsHtml5ElementName* H5;
+    static nsHtml5ElementName* H6;
+    static nsHtml5ElementName* GT;
+    static nsHtml5ElementName* HR;
+    static nsHtml5ElementName* IN;
+    static nsHtml5ElementName* LI;
+    static nsHtml5ElementName* LN;
+    static nsHtml5ElementName* LT;
+    static nsHtml5ElementName* MI;
+    static nsHtml5ElementName* MN;
+    static nsHtml5ElementName* MO;
+    static nsHtml5ElementName* MS;
+    static nsHtml5ElementName* OL;
+    static nsHtml5ElementName* OR;
+    static nsHtml5ElementName* PI;
+    static nsHtml5ElementName* RP;
+    static nsHtml5ElementName* RT;
+    static nsHtml5ElementName* TD;
+    static nsHtml5ElementName* TH;
+    static nsHtml5ElementName* TR;
+    static nsHtml5ElementName* TT;
+    static nsHtml5ElementName* UL;
+    static nsHtml5ElementName* AND;
+    static nsHtml5ElementName* ARG;
+    static nsHtml5ElementName* ABS;
+    static nsHtml5ElementName* BIG;
+    static nsHtml5ElementName* BDO;
+    static nsHtml5ElementName* CSC;
+    static nsHtml5ElementName* COL;
+    static nsHtml5ElementName* COS;
+    static nsHtml5ElementName* COT;
+    static nsHtml5ElementName* DEL;
+    static nsHtml5ElementName* DFN;
+    static nsHtml5ElementName* DIR;
+    static nsHtml5ElementName* DIV;
+    static nsHtml5ElementName* EXP;
+    static nsHtml5ElementName* GCD;
+    static nsHtml5ElementName* GEQ;
+    static nsHtml5ElementName* IMG;
+    static nsHtml5ElementName* INS;
+    static nsHtml5ElementName* INT;
+    static nsHtml5ElementName* KBD;
+    static nsHtml5ElementName* LOG;
+    static nsHtml5ElementName* LCM;
+    static nsHtml5ElementName* LEQ;
+    static nsHtml5ElementName* MTD;
+    static nsHtml5ElementName* MIN;
+    static nsHtml5ElementName* MAP;
+    static nsHtml5ElementName* MTR;
+    static nsHtml5ElementName* MAX;
+    static nsHtml5ElementName* NEQ;
+    static nsHtml5ElementName* NOT;
+    static nsHtml5ElementName* NAV;
+    static nsHtml5ElementName* PRE;
+    static nsHtml5ElementName* REM;
+    static nsHtml5ElementName* SUB;
+    static nsHtml5ElementName* SEC;
+    static nsHtml5ElementName* SVG;
+    static nsHtml5ElementName* SUM;
+    static nsHtml5ElementName* SIN;
+    static nsHtml5ElementName* SEP;
+    static nsHtml5ElementName* SUP;
+    static nsHtml5ElementName* SET;
+    static nsHtml5ElementName* TAN;
+    static nsHtml5ElementName* USE;
+    static nsHtml5ElementName* VAR;
+    static nsHtml5ElementName* WBR;
+    static nsHtml5ElementName* XMP;
+    static nsHtml5ElementName* XOR;
+    static nsHtml5ElementName* AREA;
+    static nsHtml5ElementName* ABBR;
+    static nsHtml5ElementName* BASE;
+    static nsHtml5ElementName* BVAR;
+    static nsHtml5ElementName* BODY;
+    static nsHtml5ElementName* CARD;
+    static nsHtml5ElementName* CODE;
+    static nsHtml5ElementName* CITE;
+    static nsHtml5ElementName* CSCH;
+    static nsHtml5ElementName* COSH;
+    static nsHtml5ElementName* COTH;
+    static nsHtml5ElementName* CURL;
+    static nsHtml5ElementName* DESC;
+    static nsHtml5ElementName* DIFF;
+    static nsHtml5ElementName* DEFS;
+    static nsHtml5ElementName* FORM;
+    static nsHtml5ElementName* FONT;
+    static nsHtml5ElementName* GRAD;
+    static nsHtml5ElementName* HEAD;
+    static nsHtml5ElementName* HTML;
+    static nsHtml5ElementName* LINE;
+    static nsHtml5ElementName* LINK;
+    static nsHtml5ElementName* LIST;
+    static nsHtml5ElementName* META;
+    static nsHtml5ElementName* MSUB;
+    static nsHtml5ElementName* MODE;
+    static nsHtml5ElementName* MATH;
+    static nsHtml5ElementName* MARK;
+    static nsHtml5ElementName* MASK;
+    static nsHtml5ElementName* MEAN;
+    static nsHtml5ElementName* MSUP;
+    static nsHtml5ElementName* MENU;
+    static nsHtml5ElementName* MROW;
+    static nsHtml5ElementName* NONE;
+    static nsHtml5ElementName* NOBR;
+    static nsHtml5ElementName* NEST;
+    static nsHtml5ElementName* PATH;
+    static nsHtml5ElementName* PLUS;
+    static nsHtml5ElementName* RULE;
+    static nsHtml5ElementName* REAL;
+    static nsHtml5ElementName* RELN;
+    static nsHtml5ElementName* RECT;
+    static nsHtml5ElementName* ROOT;
+    static nsHtml5ElementName* RUBY;
+    static nsHtml5ElementName* SECH;
+    static nsHtml5ElementName* SINH;
+    static nsHtml5ElementName* SPAN;
+    static nsHtml5ElementName* SAMP;
+    static nsHtml5ElementName* STOP;
+    static nsHtml5ElementName* SDEV;
+    static nsHtml5ElementName* TIME;
+    static nsHtml5ElementName* TRUE;
+    static nsHtml5ElementName* TREF;
+    static nsHtml5ElementName* TANH;
+    static nsHtml5ElementName* TEXT;
+    static nsHtml5ElementName* VIEW;
+    static nsHtml5ElementName* ASIDE;
+    static nsHtml5ElementName* AUDIO;
+    static nsHtml5ElementName* APPLY;
+    static nsHtml5ElementName* EMBED;
+    static nsHtml5ElementName* FRAME;
+    static nsHtml5ElementName* FALSE;
+    static nsHtml5ElementName* FLOOR;
+    static nsHtml5ElementName* GLYPH;
+    static nsHtml5ElementName* HKERN;
+    static nsHtml5ElementName* IMAGE;
+    static nsHtml5ElementName* IDENT;
+    static nsHtml5ElementName* INPUT;
+    static nsHtml5ElementName* LABEL;
+    static nsHtml5ElementName* LIMIT;
+    static nsHtml5ElementName* MFRAC;
+    static nsHtml5ElementName* MPATH;
+    static nsHtml5ElementName* METER;
+    static nsHtml5ElementName* MOVER;
+    static nsHtml5ElementName* MINUS;
+    static nsHtml5ElementName* MROOT;
+    static nsHtml5ElementName* MSQRT;
+    static nsHtml5ElementName* MTEXT;
+    static nsHtml5ElementName* NOTIN;
+    static nsHtml5ElementName* PIECE;
+    static nsHtml5ElementName* PARAM;
+    static nsHtml5ElementName* POWER;
+    static nsHtml5ElementName* REALS;
+    static nsHtml5ElementName* STYLE;
+    static nsHtml5ElementName* SMALL;
+    static nsHtml5ElementName* THEAD;
+    static nsHtml5ElementName* TABLE;
+    static nsHtml5ElementName* TITLE;
+    static nsHtml5ElementName* TSPAN;
+    static nsHtml5ElementName* TIMES;
+    static nsHtml5ElementName* TFOOT;
+    static nsHtml5ElementName* TBODY;
+    static nsHtml5ElementName* UNION;
+    static nsHtml5ElementName* VKERN;
+    static nsHtml5ElementName* VIDEO;
+    static nsHtml5ElementName* ARCSEC;
+    static nsHtml5ElementName* ARCCSC;
+    static nsHtml5ElementName* ARCTAN;
+    static nsHtml5ElementName* ARCSIN;
+    static nsHtml5ElementName* ARCCOS;
+    static nsHtml5ElementName* APPLET;
+    static nsHtml5ElementName* ARCCOT;
+    static nsHtml5ElementName* APPROX;
+    static nsHtml5ElementName* BUTTON;
+    static nsHtml5ElementName* CIRCLE;
+    static nsHtml5ElementName* CENTER;
+    static nsHtml5ElementName* CURSOR;
+    static nsHtml5ElementName* CANVAS;
+    static nsHtml5ElementName* DIVIDE;
+    static nsHtml5ElementName* DEGREE;
+    static nsHtml5ElementName* DIALOG;
+    static nsHtml5ElementName* DOMAIN;
+    static nsHtml5ElementName* EXISTS;
+    static nsHtml5ElementName* FETILE;
+    static nsHtml5ElementName* FIGURE;
+    static nsHtml5ElementName* FORALL;
+    static nsHtml5ElementName* FILTER;
+    static nsHtml5ElementName* FOOTER;
+    static nsHtml5ElementName* HEADER;
+    static nsHtml5ElementName* IFRAME;
+    static nsHtml5ElementName* KEYGEN;
+    static nsHtml5ElementName* LAMBDA;
+    static nsHtml5ElementName* LEGEND;
+    static nsHtml5ElementName* MSPACE;
+    static nsHtml5ElementName* MTABLE;
+    static nsHtml5ElementName* MSTYLE;
+    static nsHtml5ElementName* MGLYPH;
+    static nsHtml5ElementName* MEDIAN;
+    static nsHtml5ElementName* MUNDER;
+    static nsHtml5ElementName* MARKER;
+    static nsHtml5ElementName* MERROR;
+    static nsHtml5ElementName* MOMENT;
+    static nsHtml5ElementName* MATRIX;
+    static nsHtml5ElementName* OPTION;
+    static nsHtml5ElementName* OBJECT;
+    static nsHtml5ElementName* OUTPUT;
+    static nsHtml5ElementName* PRIMES;
+    static nsHtml5ElementName* SOURCE;
+    static nsHtml5ElementName* STRIKE;
+    static nsHtml5ElementName* STRONG;
+    static nsHtml5ElementName* SWITCH;
+    static nsHtml5ElementName* SYMBOL;
+    static nsHtml5ElementName* SPACER;
+    static nsHtml5ElementName* SELECT;
+    static nsHtml5ElementName* SUBSET;
+    static nsHtml5ElementName* SCRIPT;
+    static nsHtml5ElementName* TBREAK;
+    static nsHtml5ElementName* VECTOR;
+    static nsHtml5ElementName* ARTICLE;
+    static nsHtml5ElementName* ANIMATE;
+    static nsHtml5ElementName* ARCSECH;
+    static nsHtml5ElementName* ARCCSCH;
+    static nsHtml5ElementName* ARCTANH;
+    static nsHtml5ElementName* ARCSINH;
+    static nsHtml5ElementName* ARCCOSH;
+    static nsHtml5ElementName* ARCCOTH;
+    static nsHtml5ElementName* ACRONYM;
+    static nsHtml5ElementName* ADDRESS;
+    static nsHtml5ElementName* BGSOUND;
+    static nsHtml5ElementName* COMMAND;
+    static nsHtml5ElementName* COMPOSE;
+    static nsHtml5ElementName* CEILING;
+    static nsHtml5ElementName* CSYMBOL;
+    static nsHtml5ElementName* CAPTION;
+    static nsHtml5ElementName* DISCARD;
+    static nsHtml5ElementName* DECLARE;
+    static nsHtml5ElementName* DETAILS;
+    static nsHtml5ElementName* ELLIPSE;
+    static nsHtml5ElementName* FEFUNCA;
+    static nsHtml5ElementName* FEFUNCB;
+    static nsHtml5ElementName* FEBLEND;
+    static nsHtml5ElementName* FEFLOOD;
+    static nsHtml5ElementName* FEIMAGE;
+    static nsHtml5ElementName* FEMERGE;
+    static nsHtml5ElementName* FEFUNCG;
+    static nsHtml5ElementName* FEFUNCR;
+    static nsHtml5ElementName* HANDLER;
+    static nsHtml5ElementName* INVERSE;
+    static nsHtml5ElementName* IMPLIES;
+    static nsHtml5ElementName* ISINDEX;
+    static nsHtml5ElementName* LOGBASE;
+    static nsHtml5ElementName* LISTING;
+    static nsHtml5ElementName* MFENCED;
+    static nsHtml5ElementName* MPADDED;
+    static nsHtml5ElementName* MARQUEE;
+    static nsHtml5ElementName* MACTION;
+    static nsHtml5ElementName* MSUBSUP;
+    static nsHtml5ElementName* NOEMBED;
+    static nsHtml5ElementName* POLYGON;
+    static nsHtml5ElementName* PATTERN;
+    static nsHtml5ElementName* PRODUCT;
+    static nsHtml5ElementName* SETDIFF;
+    static nsHtml5ElementName* SECTION;
+    static nsHtml5ElementName* TENDSTO;
+    static nsHtml5ElementName* UPLIMIT;
+    static nsHtml5ElementName* ALTGLYPH;
+    static nsHtml5ElementName* BASEFONT;
+    static nsHtml5ElementName* CLIPPATH;
+    static nsHtml5ElementName* CODOMAIN;
+    static nsHtml5ElementName* COLGROUP;
+    static nsHtml5ElementName* DATAGRID;
+    static nsHtml5ElementName* EMPTYSET;
+    static nsHtml5ElementName* FACTOROF;
+    static nsHtml5ElementName* FIELDSET;
+    static nsHtml5ElementName* FRAMESET;
+    static nsHtml5ElementName* FEOFFSET;
+    static nsHtml5ElementName* GLYPHREF;
+    static nsHtml5ElementName* INTERVAL;
+    static nsHtml5ElementName* INTEGERS;
+    static nsHtml5ElementName* INFINITY;
+    static nsHtml5ElementName* LISTENER;
+    static nsHtml5ElementName* LOWLIMIT;
+    static nsHtml5ElementName* METADATA;
+    static nsHtml5ElementName* MENCLOSE;
+    static nsHtml5ElementName* MPHANTOM;
+    static nsHtml5ElementName* NOFRAMES;
+    static nsHtml5ElementName* NOSCRIPT;
+    static nsHtml5ElementName* OPTGROUP;
+    static nsHtml5ElementName* POLYLINE;
+    static nsHtml5ElementName* PREFETCH;
+    static nsHtml5ElementName* PROGRESS;
+    static nsHtml5ElementName* PRSUBSET;
+    static nsHtml5ElementName* QUOTIENT;
+    static nsHtml5ElementName* SELECTOR;
+    static nsHtml5ElementName* TEXTAREA;
+    static nsHtml5ElementName* TEXTPATH;
+    static nsHtml5ElementName* VARIANCE;
+    static nsHtml5ElementName* ANIMATION;
+    static nsHtml5ElementName* CONJUGATE;
+    static nsHtml5ElementName* CONDITION;
+    static nsHtml5ElementName* COMPLEXES;
+    static nsHtml5ElementName* FONT_FACE;
+    static nsHtml5ElementName* FACTORIAL;
+    static nsHtml5ElementName* INTERSECT;
+    static nsHtml5ElementName* IMAGINARY;
+    static nsHtml5ElementName* LAPLACIAN;
+    static nsHtml5ElementName* MATRIXROW;
+    static nsHtml5ElementName* NOTSUBSET;
+    static nsHtml5ElementName* OTHERWISE;
+    static nsHtml5ElementName* PIECEWISE;
+    static nsHtml5ElementName* PLAINTEXT;
+    static nsHtml5ElementName* RATIONALS;
+    static nsHtml5ElementName* SEMANTICS;
+    static nsHtml5ElementName* TRANSPOSE;
+    static nsHtml5ElementName* ANNOTATION;
+    static nsHtml5ElementName* BLOCKQUOTE;
+    static nsHtml5ElementName* DIVERGENCE;
+    static nsHtml5ElementName* EULERGAMMA;
+    static nsHtml5ElementName* EQUIVALENT;
+    static nsHtml5ElementName* IMAGINARYI;
+    static nsHtml5ElementName* MALIGNMARK;
+    static nsHtml5ElementName* MUNDEROVER;
+    static nsHtml5ElementName* MLABELEDTR;
+    static nsHtml5ElementName* NOTANUMBER;
+    static nsHtml5ElementName* SOLIDCOLOR;
+    static nsHtml5ElementName* ALTGLYPHDEF;
+    static nsHtml5ElementName* DETERMINANT;
+    static nsHtml5ElementName* EVENTSOURCE;
+    static nsHtml5ElementName* FEMERGENODE;
+    static nsHtml5ElementName* FECOMPOSITE;
+    static nsHtml5ElementName* FESPOTLIGHT;
+    static nsHtml5ElementName* MALIGNGROUP;
+    static nsHtml5ElementName* MPRESCRIPTS;
+    static nsHtml5ElementName* MOMENTABOUT;
+    static nsHtml5ElementName* NOTPRSUBSET;
+    static nsHtml5ElementName* PARTIALDIFF;
+    static nsHtml5ElementName* ALTGLYPHITEM;
+    static nsHtml5ElementName* ANIMATECOLOR;
+    static nsHtml5ElementName* DATATEMPLATE;
+    static nsHtml5ElementName* EXPONENTIALE;
+    static nsHtml5ElementName* FETURBULENCE;
+    static nsHtml5ElementName* FEPOINTLIGHT;
+    static nsHtml5ElementName* FEMORPHOLOGY;
+    static nsHtml5ElementName* OUTERPRODUCT;
+    static nsHtml5ElementName* ANIMATEMOTION;
+    static nsHtml5ElementName* COLOR_PROFILE;
+    static nsHtml5ElementName* FONT_FACE_SRC;
+    static nsHtml5ElementName* FONT_FACE_URI;
+    static nsHtml5ElementName* FOREIGNOBJECT;
+    static nsHtml5ElementName* FECOLORMATRIX;
+    static nsHtml5ElementName* MISSING_GLYPH;
+    static nsHtml5ElementName* MMULTISCRIPTS;
+    static nsHtml5ElementName* SCALARPRODUCT;
+    static nsHtml5ElementName* VECTORPRODUCT;
+    static nsHtml5ElementName* ANNOTATION_XML;
+    static nsHtml5ElementName* DEFINITION_SRC;
+    static nsHtml5ElementName* FONT_FACE_NAME;
+    static nsHtml5ElementName* FEGAUSSIANBLUR;
+    static nsHtml5ElementName* FEDISTANTLIGHT;
+    static nsHtml5ElementName* LINEARGRADIENT;
+    static nsHtml5ElementName* NATURALNUMBERS;
+    static nsHtml5ElementName* RADIALGRADIENT;
+    static nsHtml5ElementName* ANIMATETRANSFORM;
+    static nsHtml5ElementName* CARTESIANPRODUCT;
+    static nsHtml5ElementName* FONT_FACE_FORMAT;
+    static nsHtml5ElementName* FECONVOLVEMATRIX;
+    static nsHtml5ElementName* FEDIFFUSELIGHTING;
+    static nsHtml5ElementName* FEDISPLACEMENTMAP;
+    static nsHtml5ElementName* FESPECULARLIGHTING;
+    static nsHtml5ElementName* DOMAINOFAPPLICATION;
+    static nsHtml5ElementName* FECOMPONENTTRANSFER;
+  private:
+    static nsHtml5ElementName** ELEMENT_NAMES;
+    #ifdef nsHtml5ElementName_cpp__
+    static PRInt32 ELEMENT_HASHES_DATA[];
+    #endif
+    static jArray<PRInt32,PRInt32> ELEMENT_HASHES;
+  public:
+    static void initializeStatics();
+    static void releaseStatics();
+};
+
+#ifdef nsHtml5ElementName_cpp__
+nsHtml5ElementName* nsHtml5ElementName::NULL_ELEMENT_NAME = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::A = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::B = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::G = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::I = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::P = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::Q = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::S = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::U = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CI = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EQ = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::H1 = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::H2 = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::H3 = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::H4 = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::H5 = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::H6 = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::GT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::HR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LI = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MI = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MO = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PI = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::UL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::AND = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ABS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BIG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BDO = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CSC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DEL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DFN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DIR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DIV = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EXP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::GCD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::GEQ = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IMG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::KBD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LOG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LCM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LEQ = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MTD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MIN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MAP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MTR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MAX = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NEQ = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NAV = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PRE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::REM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SUB = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SEC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SVG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SUM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SIN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SEP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SUP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::USE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VAR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::WBR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::XMP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::XOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::AREA = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ABBR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BASE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BVAR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BODY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CARD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CODE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CITE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CSCH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COSH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COTH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CURL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DESC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DIFF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DEFS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FORM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FONT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::GRAD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::HEAD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::HTML = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LINE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LINK = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LIST = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::META = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MSUB = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MODE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MATH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MARK = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MASK = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MEAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MSUP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MENU = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MROW = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NONE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOBR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NEST = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PATH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PLUS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RULE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::REAL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RELN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RECT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ROOT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RUBY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SECH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SINH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SPAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SAMP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::STOP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SDEV = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TIME = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TRUE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TREF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TANH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TEXT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VIEW = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ASIDE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::AUDIO = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::APPLY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EMBED = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FRAME = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FALSE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FLOOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::GLYPH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::HKERN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IMAGE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IDENT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INPUT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LABEL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LIMIT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MFRAC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MPATH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::METER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MOVER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MINUS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MROOT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MSQRT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MTEXT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOTIN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PIECE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PARAM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::POWER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::REALS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::STYLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SMALL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::THEAD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TABLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TITLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TSPAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TIMES = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TFOOT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TBODY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::UNION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VKERN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VIDEO = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCSEC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCCSC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCTAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCSIN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCCOS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::APPLET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCCOT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::APPROX = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BUTTON = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CIRCLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CENTER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CURSOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CANVAS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DIVIDE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DEGREE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DIALOG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DOMAIN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EXISTS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FETILE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FIGURE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FORALL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FILTER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FOOTER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::HEADER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IFRAME = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::KEYGEN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LAMBDA = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LEGEND = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MSPACE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MTABLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MSTYLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MGLYPH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MEDIAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MUNDER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MARKER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MERROR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MOMENT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MATRIX = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OPTION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OBJECT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OUTPUT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PRIMES = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SOURCE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::STRIKE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::STRONG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SWITCH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SYMBOL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SPACER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SELECT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SUBSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SCRIPT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TBREAK = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VECTOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARTICLE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANIMATE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCSECH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCCSCH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCTANH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCSINH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCCOSH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ARCCOTH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ACRONYM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ADDRESS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BGSOUND = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COMMAND = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COMPOSE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CEILING = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CSYMBOL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CAPTION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DISCARD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DECLARE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DETAILS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ELLIPSE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEFUNCA = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEFUNCB = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEBLEND = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEFLOOD = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEIMAGE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEMERGE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEFUNCG = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEFUNCR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::HANDLER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INVERSE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IMPLIES = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ISINDEX = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LOGBASE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LISTING = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MFENCED = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MPADDED = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MARQUEE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MACTION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MSUBSUP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOEMBED = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::POLYGON = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PATTERN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PRODUCT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SETDIFF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SECTION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TENDSTO = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::UPLIMIT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ALTGLYPH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BASEFONT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CLIPPATH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CODOMAIN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COLGROUP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DATAGRID = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EMPTYSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FACTOROF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FIELDSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FRAMESET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEOFFSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::GLYPHREF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INTERVAL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INTEGERS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INFINITY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LISTENER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LOWLIMIT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::METADATA = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MENCLOSE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MPHANTOM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOFRAMES = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOSCRIPT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OPTGROUP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::POLYLINE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PREFETCH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PROGRESS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PRSUBSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::QUOTIENT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SELECTOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TEXTAREA = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TEXTPATH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VARIANCE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANIMATION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CONJUGATE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CONDITION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COMPLEXES = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FONT_FACE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FACTORIAL = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::INTERSECT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IMAGINARY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LAPLACIAN = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MATRIXROW = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOTSUBSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OTHERWISE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PIECEWISE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PLAINTEXT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RATIONALS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SEMANTICS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::TRANSPOSE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANNOTATION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::BLOCKQUOTE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DIVERGENCE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EULERGAMMA = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EQUIVALENT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::IMAGINARYI = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MALIGNMARK = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MUNDEROVER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MLABELEDTR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOTANUMBER = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SOLIDCOLOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ALTGLYPHDEF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DETERMINANT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EVENTSOURCE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEMERGENODE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FECOMPOSITE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FESPOTLIGHT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MALIGNGROUP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MPRESCRIPTS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MOMENTABOUT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NOTPRSUBSET = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::PARTIALDIFF = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ALTGLYPHITEM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANIMATECOLOR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DATATEMPLATE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::EXPONENTIALE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FETURBULENCE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEPOINTLIGHT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEMORPHOLOGY = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::OUTERPRODUCT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANIMATEMOTION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::COLOR_PROFILE = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FONT_FACE_SRC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FONT_FACE_URI = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FOREIGNOBJECT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FECOLORMATRIX = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MISSING_GLYPH = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::MMULTISCRIPTS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::SCALARPRODUCT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::VECTORPRODUCT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANNOTATION_XML = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DEFINITION_SRC = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FONT_FACE_NAME = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEGAUSSIANBLUR = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEDISTANTLIGHT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::LINEARGRADIENT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::NATURALNUMBERS = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::RADIALGRADIENT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::ANIMATETRANSFORM = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::CARTESIANPRODUCT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FONT_FACE_FORMAT = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FECONVOLVEMATRIX = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEDIFFUSELIGHTING = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FEDISPLACEMENTMAP = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FESPECULARLIGHTING = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::DOMAINOFAPPLICATION = nsnull;
+nsHtml5ElementName* nsHtml5ElementName::FECOMPONENTTRANSFER = nsnull;
+nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = nsnull;
+PRInt32 nsHtml5ElementName::ELEMENT_HASHES_DATA[] = { 1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 374509141, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819 };
+jArray<PRInt32,PRInt32> nsHtml5ElementName::ELEMENT_HASHES = J_ARRAY_STATIC(PRInt32, PRInt32, ELEMENT_HASHES_DATA);
+#endif
+
+
+
+#endif
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5HtmlAttributes.cpp
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2007 Henri Sivonen
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a 
+ * copy of this software and associated documentation files (the "Software"), 
+ * to deal in the Software without restriction, including without limitation 
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+ * and/or sell copies of the Software, and to permit persons to whom the 
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in 
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
+ * Please edit HtmlAttributes.java instead and regenerate.
+ */
+
+#define nsHtml5HtmlAttributes_cpp__
+
+#include "prtypes.h"
+#include "nsIAtom.h"
+#include "nsString.h"
+#include "nsINameSpaceManager.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "jArray.h"
+#include "nsHtml5DocumentMode.h"
+#include "nsHtml5ArrayCopy.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Parser.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Atoms.h"
+
+#include "nsHtml5Tokenizer.h"
+#include "nsHtml5TreeBuilder.h"
+#include "nsHtml5AttributeName.h"
+#include "nsHtml5ElementName.h"
+#include "nsHtml5StackNode.h"
+#include "nsHtml5UTF16Buffer.h"
+#include "nsHtml5Portability.h"
+
+#include "nsHtml5HtmlAttributes.h"
+
+
+nsHtml5HtmlAttributes::nsHtml5HtmlAttributes(PRInt32 mode)
+  : mode(mode),
+    length(0),
+    names(jArray<nsHtml5AttributeName*,PRInt32>(5)),
+    values(jArray<nsString*,PRInt32>(5))
+{
+}
+
+void 
+nsHtml5HtmlAttributes::destructor()
+{
+  clear(0);
+  names.release();
+  values.release();
+}
+
+PRInt32 
+nsHtml5HtmlAttributes::getIndex(nsHtml5AttributeName* name)
+{
+  for (PRInt32 i = 0; i < length; i++) {
+    if (names[i] == name) {
+      return i;
+    }
+  }
+  return -1;
+}
+
+PRInt32 
+nsHtml5HtmlAttributes::getLength()
+{
+  return length;
+}
+
+nsIAtom* 
+nsHtml5HtmlAttributes::getLocalName(PRInt32 index)
+{
+  if (index < length && index >= 0) {
+    return names[index]->getLocal(mode);
+  } else {
+    return nsnull;
+  }
+}
+
+nsHtml5AttributeName* 
+nsHtml5HtmlAttributes::getAttributeName(PRInt32 index)
+{
+  if (index < length && index >= 0) {
+    return names[index];
+  } else {
+    return nsnull;
+  }
+}
+
+PRInt32 
+nsHtml5HtmlAttributes::getURI(PRInt32 index)
+{
+  if (index < length && index >= 0) {
+    return names[index]->getUri(mode);
+  } else {
+    return nsnull;
+  }
+}
+
+nsIAtom* 
+nsHtml5HtmlAttributes::getPrefix(PRInt32 index)
+{
+  if (index < length && index >= 0) {
+    return names[index]->getPrefix(mode);
+  } else {
+    return nsnull;
+  }
+}
+
+nsString* 
+nsHtml5HtmlAttributes::getValue(PRInt32 index)
+{
+  if (index < length && index >= 0) {
+    return values[index];
+  } else {
+    return nsnull;
+  }
+}
+
+nsString* 
+nsHtml5HtmlAttributes::getValue(nsHtml5AttributeName* name)
+{
+  PRInt32 index = getIndex(name);
+  if (index == -1) {
+    return nsnull;
+  } else {
+    return getValue(index);
+  }
+}
+
+void 
+nsHtml5HtmlAttributes::addAttribute(nsHtml5AttributeName* name, nsString* value)
+{
+  if (names.length == length) {
+    PRInt32 newLen = length << 1;
+    jArray<nsHtml5AttributeName*,PRInt32> newNames = jArray<nsHtml5AttributeName*,PRInt32>(newLen);
+    nsHtml5ArrayCopy::arraycopy(names, newNames, names.length);
+    names.release();
+    names = newNames;
+    jArray<nsString*,PRInt32> newValues = jArray<nsString*,PRInt32>(newLen);
+    nsHtml5ArrayCopy::arraycopy(values, newValues, values.length);
+    values.release();
+    values = newValues;
+  }
+  names[length] = name;
+  values[length] = value;
+  length++;
+}
+
+void 
+nsHtml5HtmlAttributes::clear(PRInt32 m)
+{
+  for (PRInt32 i = 0; i < length; i++) {
+    names[i]->release();
+    names[i] = nsnull;
+    nsHtml5Portability::releaseString(values[i]);
+    values[i] = nsnull;
+  }
+  length = 0;
+  mode = m;
+}
+
+PRBool 
+nsHtml5HtmlAttributes::contains(nsHtml5AttributeName* name)
+{
+  for (PRInt32 i = 0; i < length; i++) {
+    if (name->equalsAnother(names[i])) {
+      return PR_TRUE;
+    }
+  }
+  return PR_FALSE;
+}
+
+void 
+nsHtml5HtmlAttributes::adjustForMath()
+{
+  mode = NS_HTML5ATTRIBUTE_NAME_MATHML;
+}
+
+void 
+nsHtml5HtmlAttributes::adjustForSvg()
+{
+  mode = NS_HTML5ATTRIBUTE_NAME_SVG;
+}
+
+void
+nsHtml5HtmlAttributes::initializeStatics()
+{
+  EMPTY_ATTRIBUTES = new nsHtml5HtmlAttributes(NS_HTML5ATTRIBUTE_NAME_HTML);
+}
+
+void
+nsHtml5HtmlAttributes::releaseStatics()
+{
+  delete EMPTY_ATTRIBUTES;
+}
+
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5HtmlAttributes.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2007 Henri Sivonen
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a 
+ * copy of this software and associated documentation files (the "Software"), 
+ * to deal in the Software without restriction, including without limitation 
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+ * and/or sell copies of the Software, and to permit persons to whom the 
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in 
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
+ * Please edit HtmlAttributes.java instead and regenerate.
+ */
+
+#ifndef nsHtml5HtmlAttributes_h__
+#define nsHtml5HtmlAttributes_h__
+
+#include "prtypes.h"
+#include "nsIAtom.h"
+#include "nsString.h"
+#include "nsINameSpaceManager.h"
+#include "nsIContent.h"
+#include "nsIDocument.h"
+#include "jArray.h"
+#include "nsHtml5DocumentMode.h"
+#include "nsHtml5ArrayCopy.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Parser.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Atoms.h"
+
+class nsHtml5Parser;
+
+class nsHtml5Tokenizer;
+class nsHtml5TreeBuilder;
+class nsHtml5AttributeName;
+class nsHtml5ElementName;
+class nsHtml5StackNode;
+class nsHtml5UTF16Buffer;
+class nsHtml5Portability;
+
+class nsHtml5HtmlAttributes
+{
+  public:
+    static nsHtml5HtmlAttributes* EMPTY_ATTRIBUTES;
+  private:
+    PRInt32 mode;
+    PRInt32 length;
+    jArray<nsHtml5AttributeName*,PRInt32> names;
+    jArray<nsString*,PRInt32> values;
+  public:
+    nsHtml5HtmlAttributes(PRInt32 mode);
+    void destructor();
+    PRInt32 getIndex(nsHtml5AttributeName* name);
+    PRInt32 getLength();
+    nsIAtom* getLocalName(PRInt32 index);
+    nsHtml5AttributeName* getAttributeName(PRInt32 index);
+    PRInt32 getURI(PRInt32 index);
+    nsIAtom* getPrefix(PRInt32 index);
+    nsString* getValue(PRInt32 index);
+    nsString* getValue(nsHtml5AttributeName* name);
+    void addAttribute(nsHtml5AttributeName* name, nsString* value);
+    void clear(PRInt32 m);
+    PRBool contains(nsHtml5AttributeName* name);
+    void adjustForMath();
+    void adjustForSvg();
+    static void initializeStatics();
+    static void releaseStatics();
+};
+
+#ifdef nsHtml5HtmlAttributes_cpp__
+nsHtml5HtmlAttributes* nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES = nsnull;
+#endif
+
+
+
+#endif
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5Module.cpp
@@ -0,0 +1,101 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is HTML Parser C++ Translator code.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Henri Sivonen <hsivonen@iki.fi>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "nsHtml5AttributeName.h"
+#include "nsHtml5ElementName.h"
+#include "nsHtml5HtmlAttributes.h"
+#include "nsHtml5NamedCharacters.h"
+#include "nsHtml5Portability.h"
+#include "nsHtml5StackNode.h"
+#include "nsHtml5StringLiterals.h"
+#include "nsHtml5Tokenizer.h"
+#include "nsHtml5TreeBuilder.h"
+#include "nsHtml5UTF16Buffer.h"
+
+#include "nsHtml5Module.h"
+
+// static
+void
+nsHtml5Module::InitializeStatics()
+{
+  nsHtml5Atoms::AddRefAtoms();
+  nsHtml5AttributeName::initializeStatics();
+  nsHtml5ElementName::initializeStatics();
+  nsHtml5HtmlAttributes::initializeStatics();
+  nsHtml5NamedCharacters::initializeStatics();
+  nsHtml5Portability::initializeStatics();
+  nsHtml5StackNode::initializeStatics();
+  nsHtml5StringLiterals::initializeStatics();
+  nsHtml5Tokenizer::initializeStatics();
+  nsHtml5TreeBuilder::initializeStatics();
+  nsHtml5UTF16Buffer::initializeStatics();
+}
+
+// static
+void
+nsHtml5Module::ReleaseStatics()
+{
+  nsHtml5AttributeName::releaseStatics();
+  nsHtml5ElementName::releaseStatics();
+  nsHtml5HtmlAttributes::releaseStatics();
+  nsHtml5NamedCharacters::releaseStatics();
+  nsHtml5Portability::releaseStatics();
+  nsHtml5StackNode::releaseStatics();
+  nsHtml5StringLiterals::releaseStatics();
+  nsHtml5Tokenizer::releaseStatics();
+  nsHtml5TreeBuilder::releaseStatics();
+  nsHtml5UTF16Buffer::releaseStatics();
+}
+
+// static
+already_AddRefed<nsIParser> 
+nsHtml5Module::NewHtml5Parser()
+{
+  nsIParser* rv = static_cast<nsIParser*> (new nsHtml5Parser());
+  NS_ADDREF(rv);
+  return rv;
+}
+
+// static
+
+nsresult 
+nsHtml5Module::Initialize(nsIParser* aParser, nsIDocument* aDoc, nsIURI* aURI, nsISupports* aContainer, nsIChannel* aChannel)
+{
+  nsHtml5Parser* parser = static_cast<nsHtml5Parser*> (aParser);
+  return parser->Initialize(aDoc, aURI, aContainer, aChannel);
+}
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/src/nsHtml5NamedCharacters.cpp
@@ -0,0 +1,17160 @@
+#define nsHtml5NamedCharacters_cpp__
+#include "prtypes.h"
+#include "jArray.h"
+#include "nscore.h"
+
+#include "nsHtml5NamedCharacters.h"
+
+jArray<jArray<PRUnichar,PRInt32>,PRInt32> nsHtml5NamedCharacters::NAMES = jArray<jArray<PRUnichar,PRInt32>,PRInt32>();
+jArray<PRUnichar,PRInt32>* nsHtml5NamedCharacters::VALUES = nsnull;
+PRUnichar** nsHtml5NamedCharacters::WINDOWS_1252 = nsnull;
+PRUnichar nsHtml5NamedCharacters::WINDOWS_1252_DATA[] = {
+  0x20AC,
+  0xFFFD,
+  0x201A,
+  0x0192,
+  0x201E,
+  0x2026,
+  0x2020,
+  0x2021,
+  0x02C6,
+  0x2030,
+  0x0160,
+  0x2039,
+  0x0152,
+  0xFFFD,
+  0x017D,
+  0xFFFD,
+  0xFFFD,
+  0x2018,
+  0x2019,
+  0x201C,
+  0x201D,
+  0x2022,
+  0x2013,
+  0x2014,
+  0x02DC,
+  0x2122,
+  0x0161,
+  0x203A,
+  0x0153,
+  0xFFFD,
+  0x017E,
+  0x0178
+};
+PRUnichar nsHtml5NamedCharacters::NAME_0[] = {
+  'A', 'E', 'l', 'i', 'g'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_0[] = {
+  0x00c6
+};
+PRUnichar nsHtml5NamedCharacters::NAME_1[] = {
+  'A', 'E', 'l', 'i', 'g', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_1[] = {
+  0x00c6
+};
+PRUnichar nsHtml5NamedCharacters::NAME_2[] = {
+  'A', 'M', 'P'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_2[] = {
+  0x0026
+};
+PRUnichar nsHtml5NamedCharacters::NAME_3[] = {
+  'A', 'M', 'P', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_3[] = {
+  0x0026
+};
+PRUnichar nsHtml5NamedCharacters::NAME_4[] = {
+  'A', 'a', 'c', 'u', 't', 'e'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_4[] = {
+  0x00c1
+};
+PRUnichar nsHtml5NamedCharacters::NAME_5[] = {
+  'A', 'a', 'c', 'u', 't', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_5[] = {
+  0x00c1
+};
+PRUnichar nsHtml5NamedCharacters::NAME_6[] = {
+  'A', 'b', 'r', 'e', 'v', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_6[] = {
+  0x0102
+};
+PRUnichar nsHtml5NamedCharacters::NAME_7[] = {
+  'A', 'c', 'i', 'r', 'c'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_7[] = {
+  0x00c2
+};
+PRUnichar nsHtml5NamedCharacters::NAME_8[] = {
+  'A', 'c', 'i', 'r', 'c', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_8[] = {
+  0x00c2
+};
+PRUnichar nsHtml5NamedCharacters::NAME_9[] = {
+  'A', 'c', 'y', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_9[] = {
+  0x0410
+};
+PRUnichar nsHtml5NamedCharacters::NAME_10[] = {
+  'A', 'f', 'r', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_10[] = {
+  0xd835, 0xdd04
+};
+PRUnichar nsHtml5NamedCharacters::NAME_11[] = {
+  'A', 'g', 'r', 'a', 'v', 'e'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_11[] = {
+  0x00c0
+};
+PRUnichar nsHtml5NamedCharacters::NAME_12[] = {
+  'A', 'g', 'r', 'a', 'v', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_12[] = {
+  0x00c0
+};
+PRUnichar nsHtml5NamedCharacters::NAME_13[] = {
+  'A', 'l', 'p', 'h', 'a', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_13[] = {
+  0x0391
+};
+PRUnichar nsHtml5NamedCharacters::NAME_14[] = {
+  'A', 'm', 'a', 'c', 'r', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_14[] = {
+  0x0100
+};
+PRUnichar nsHtml5NamedCharacters::NAME_15[] = {
+  'A', 'n', 'd', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_15[] = {
+  0x2a53
+};
+PRUnichar nsHtml5NamedCharacters::NAME_16[] = {
+  'A', 'o', 'g', 'o', 'n', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_16[] = {
+  0x0104
+};
+PRUnichar nsHtml5NamedCharacters::NAME_17[] = {
+  'A', 'o', 'p', 'f', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_17[] = {
+  0xd835, 0xdd38
+};
+PRUnichar nsHtml5NamedCharacters::NAME_18[] = {
+  'A', 'p', 'p', 'l', 'y', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_18[] = {
+  0x2061
+};
+PRUnichar nsHtml5NamedCharacters::NAME_19[] = {
+  'A', 'r', 'i', 'n', 'g'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_19[] = {
+  0x00c5
+};
+PRUnichar nsHtml5NamedCharacters::NAME_20[] = {
+  'A', 'r', 'i', 'n', 'g', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_20[] = {
+  0x00c5
+};
+PRUnichar nsHtml5NamedCharacters::NAME_21[] = {
+  'A', 's', 'c', 'r', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_21[] = {
+  0xd835, 0xdc9c
+};
+PRUnichar nsHtml5NamedCharacters::NAME_22[] = {
+  'A', 's', 's', 'i', 'g', 'n', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_22[] = {
+  0x2254
+};
+PRUnichar nsHtml5NamedCharacters::NAME_23[] = {
+  'A', 't', 'i', 'l', 'd', 'e'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_23[] = {
+  0x00c3
+};
+PRUnichar nsHtml5NamedCharacters::NAME_24[] = {
+  'A', 't', 'i', 'l', 'd', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_24[] = {
+  0x00c3
+};
+PRUnichar nsHtml5NamedCharacters::NAME_25[] = {
+  'A', 'u', 'm', 'l'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_25[] = {
+  0x00c4
+};
+PRUnichar nsHtml5NamedCharacters::NAME_26[] = {
+  'A', 'u', 'm', 'l', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_26[] = {
+  0x00c4
+};
+PRUnichar nsHtml5NamedCharacters::NAME_27[] = {
+  'B', 'a', 'c', 'k', 's', 'l', 'a', 's', 'h', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_27[] = {
+  0x2216
+};
+PRUnichar nsHtml5NamedCharacters::NAME_28[] = {
+  'B', 'a', 'r', 'v', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_28[] = {
+  0x2ae7
+};
+PRUnichar nsHtml5NamedCharacters::NAME_29[] = {
+  'B', 'a', 'r', 'w', 'e', 'd', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_29[] = {
+  0x2306
+};
+PRUnichar nsHtml5NamedCharacters::NAME_30[] = {
+  'B', 'c', 'y', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_30[] = {
+  0x0411
+};
+PRUnichar nsHtml5NamedCharacters::NAME_31[] = {
+  'B', 'e', 'c', 'a', 'u', 's', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_31[] = {
+  0x2235
+};
+PRUnichar nsHtml5NamedCharacters::NAME_32[] = {
+  'B', 'e', 'r', 'n', 'o', 'u', 'l', 'l', 'i', 's', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_32[] = {
+  0x212c
+};
+PRUnichar nsHtml5NamedCharacters::NAME_33[] = {
+  'B', 'e', 't', 'a', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_33[] = {
+  0x0392
+};
+PRUnichar nsHtml5NamedCharacters::NAME_34[] = {
+  'B', 'f', 'r', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_34[] = {
+  0xd835, 0xdd05
+};
+PRUnichar nsHtml5NamedCharacters::NAME_35[] = {
+  'B', 'o', 'p', 'f', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_35[] = {
+  0xd835, 0xdd39
+};
+PRUnichar nsHtml5NamedCharacters::NAME_36[] = {
+  'B', 'r', 'e', 'v', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_36[] = {
+  0x02d8
+};
+PRUnichar nsHtml5NamedCharacters::NAME_37[] = {
+  'B', 's', 'c', 'r', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_37[] = {
+  0x212c
+};
+PRUnichar nsHtml5NamedCharacters::NAME_38[] = {
+  'B', 'u', 'm', 'p', 'e', 'q', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_38[] = {
+  0x224e
+};
+PRUnichar nsHtml5NamedCharacters::NAME_39[] = {
+  'C', 'H', 'c', 'y', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_39[] = {
+  0x0427
+};
+PRUnichar nsHtml5NamedCharacters::NAME_40[] = {
+  'C', 'O', 'P', 'Y'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_40[] = {
+  0x00a9
+};
+PRUnichar nsHtml5NamedCharacters::NAME_41[] = {
+  'C', 'O', 'P', 'Y', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_41[] = {
+  0x00a9
+};
+PRUnichar nsHtml5NamedCharacters::NAME_42[] = {
+  'C', 'a', 'c', 'u', 't', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_42[] = {
+  0x0106
+};
+PRUnichar nsHtml5NamedCharacters::NAME_43[] = {
+  'C', 'a', 'p', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_43[] = {
+  0x22d2
+};
+PRUnichar nsHtml5NamedCharacters::NAME_44[] = {
+  'C', 'a', 'p', 'i', 't', 'a', 'l', 'D', 'i', 'f', 'f', 'e', 'r', 'e', 'n', 't', 'i', 'a', 'l', 'D', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_44[] = {
+  0x2145
+};
+PRUnichar nsHtml5NamedCharacters::NAME_45[] = {
+  'C', 'a', 'y', 'l', 'e', 'y', 's', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_45[] = {
+  0x212d
+};
+PRUnichar nsHtml5NamedCharacters::NAME_46[] = {
+  'C', 'c', 'a', 'r', 'o', 'n', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_46[] = {
+  0x010c
+};
+PRUnichar nsHtml5NamedCharacters::NAME_47[] = {
+  'C', 'c', 'e', 'd', 'i', 'l'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_47[] = {
+  0x00c7
+};
+PRUnichar nsHtml5NamedCharacters::NAME_48[] = {
+  'C', 'c', 'e', 'd', 'i', 'l', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_48[] = {
+  0x00c7
+};
+PRUnichar nsHtml5NamedCharacters::NAME_49[] = {
+  'C', 'c', 'i', 'r', 'c', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_49[] = {
+  0x0108
+};
+PRUnichar nsHtml5NamedCharacters::NAME_50[] = {
+  'C', 'c', 'o', 'n', 'i', 'n', 't', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_50[] = {
+  0x2230
+};
+PRUnichar nsHtml5NamedCharacters::NAME_51[] = {
+  'C', 'd', 'o', 't', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_51[] = {
+  0x010a
+};
+PRUnichar nsHtml5NamedCharacters::NAME_52[] = {
+  'C', 'e', 'd', 'i', 'l', 'l', 'a', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_52[] = {
+  0x00b8
+};
+PRUnichar nsHtml5NamedCharacters::NAME_53[] = {
+  'C', 'e', 'n', 't', 'e', 'r', 'D', 'o', 't', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_53[] = {
+  0x00b7
+};
+PRUnichar nsHtml5NamedCharacters::NAME_54[] = {
+  'C', 'f', 'r', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_54[] = {
+  0x212d
+};
+PRUnichar nsHtml5NamedCharacters::NAME_55[] = {
+  'C', 'h', 'i', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_55[] = {
+  0x03a7
+};
+PRUnichar nsHtml5NamedCharacters::NAME_56[] = {
+  'C', 'i', 'r', 'c', 'l', 'e', 'D', 'o', 't', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_56[] = {
+  0x2299
+};
+PRUnichar nsHtml5NamedCharacters::NAME_57[] = {
+  'C', 'i', 'r', 'c', 'l', 'e', 'M', 'i', 'n', 'u', 's', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_57[] = {
+  0x2296
+};
+PRUnichar nsHtml5NamedCharacters::NAME_58[] = {
+  'C', 'i', 'r', 'c', 'l', 'e', 'P', 'l', 'u', 's', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_58[] = {
+  0x2295
+};
+PRUnichar nsHtml5NamedCharacters::NAME_59[] = {
+  'C', 'i', 'r', 'c', 'l', 'e', 'T', 'i', 'm', 'e', 's', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_59[] = {
+  0x2297
+};
+PRUnichar nsHtml5NamedCharacters::NAME_60[] = {
+  'C', 'l', 'o', 'c', 'k', 'w', 'i', 's', 'e', 'C', 'o', 'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e', 'g', 'r', 'a', 'l', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_60[] = {
+  0x2232
+};
+PRUnichar nsHtml5NamedCharacters::NAME_61[] = {
+  'C', 'l', 'o', 's', 'e', 'C', 'u', 'r', 'l', 'y', 'D', 'o', 'u', 'b', 'l', 'e', 'Q', 'u', 'o', 't', 'e', ';'
+};
+PRUnichar nsHtml5NamedCharacters::VALUE_61[]