parser/html/javasrc/ElementName.java

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/parser/html/javasrc/ElementName.java	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,1598 @@
     1.4 +/*
     1.5 + * Copyright (c) 2008-2014 Mozilla Foundation
     1.6 + *
     1.7 + * Permission is hereby granted, free of charge, to any person obtaining a 
     1.8 + * copy of this software and associated documentation files (the "Software"), 
     1.9 + * to deal in the Software without restriction, including without limitation 
    1.10 + * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
    1.11 + * and/or sell copies of the Software, and to permit persons to whom the 
    1.12 + * Software is furnished to do so, subject to the following conditions:
    1.13 + *
    1.14 + * The above copyright notice and this permission notice shall be included in 
    1.15 + * all copies or substantial portions of the Software.
    1.16 + *
    1.17 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
    1.18 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
    1.19 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
    1.20 + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
    1.21 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
    1.22 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
    1.23 + * DEALINGS IN THE SOFTWARE.
    1.24 + */
    1.25 +
    1.26 +package nu.validator.htmlparser.impl;
    1.27 +
    1.28 +import java.util.Arrays;
    1.29 +
    1.30 +import nu.validator.htmlparser.annotation.Inline;
    1.31 +import nu.validator.htmlparser.annotation.Local;
    1.32 +import nu.validator.htmlparser.annotation.NoLength;
    1.33 +import nu.validator.htmlparser.annotation.Virtual;
    1.34 +import nu.validator.htmlparser.common.Interner;
    1.35 +
    1.36 +public final class ElementName
    1.37 +// uncomment when regenerating self
    1.38 +//        implements Comparable<ElementName>
    1.39 +{
    1.40 +
    1.41 +    /**
    1.42 +     * The mask for extracting the dispatch group.
    1.43 +     */
    1.44 +    public static final int GROUP_MASK = 127;
    1.45 +
    1.46 +    /**
    1.47 +     * Indicates that the element is not a pre-interned element. Forbidden 
    1.48 +     * on preinterned elements.
    1.49 +     */
    1.50 +    public static final int CUSTOM = (1 << 30);
    1.51 +
    1.52 +    /**
    1.53 +     * Indicates that the element is in the "special" category. This bit
    1.54 +     * should not be pre-set on MathML or SVG specials--only on HTML specials.
    1.55 +     */
    1.56 +    public static final int SPECIAL = (1 << 29);
    1.57 +
    1.58 +    /**
    1.59 +     * The element is foster-parenting. This bit should be pre-set on elements
    1.60 +     * that are foster-parenting as HTML.
    1.61 +     */
    1.62 +    public static final int FOSTER_PARENTING = (1 << 28);
    1.63 +
    1.64 +    /**
    1.65 +     * The element is scoping. This bit should be pre-set on elements
    1.66 +     * that are scoping as HTML.
    1.67 +     */
    1.68 +    public static final int SCOPING = (1 << 27);
    1.69 +
    1.70 +    /**
    1.71 +     * The element is scoping as SVG.
    1.72 +     */
    1.73 +    public static final int SCOPING_AS_SVG = (1 << 26);
    1.74 +
    1.75 +    /**
    1.76 +     * The element is scoping as MathML.
    1.77 +     */
    1.78 +    public static final int SCOPING_AS_MATHML = (1 << 25);
    1.79 +
    1.80 +    /**
    1.81 +     * The element is an HTML integration point.
    1.82 +     */
    1.83 +    public static final int HTML_INTEGRATION_POINT = (1 << 24);
    1.84 +
    1.85 +    /**
    1.86 +     * The element has an optional end tag.
    1.87 +     */
    1.88 +    public static final int OPTIONAL_END_TAG = (1 << 23);
    1.89 +
    1.90 +    public static final ElementName NULL_ELEMENT_NAME = new ElementName(null);
    1.91 +
    1.92 +    public final @Local String name;
    1.93 +
    1.94 +    public final @Local String camelCaseName;
    1.95 +
    1.96 +    /**
    1.97 +     * The lowest 7 bits are the dispatch group. The high bits are flags.
    1.98 +     */
    1.99 +    public final int flags;
   1.100 +
   1.101 +    @Inline public int getFlags() {
   1.102 +        return flags;
   1.103 +    }
   1.104 +    
   1.105 +    public int getGroup() {
   1.106 +        return flags & GROUP_MASK;
   1.107 +    }
   1.108 +    
   1.109 +    public boolean isCustom() {
   1.110 +        return (flags & CUSTOM) != 0;
   1.111 +    }
   1.112 +
   1.113 +    static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) {
   1.114 +        int hash = ElementName.bufToHash(buf, length);
   1.115 +        int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash);
   1.116 +        if (index < 0) {
   1.117 +            return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length, interner));
   1.118 +        } else {
   1.119 +            ElementName elementName = ElementName.ELEMENT_NAMES[index];
   1.120 +            @Local String name = elementName.name;
   1.121 +            if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
   1.122 +                return new ElementName(Portability.newLocalNameFromBuffer(buf,
   1.123 +                        offset, length, interner));
   1.124 +            }
   1.125 +            return elementName;
   1.126 +        }
   1.127 +    }
   1.128 +
   1.129 +    /**
   1.130 +     * This method has to return a unique integer for each well-known
   1.131 +     * lower-cased element name.
   1.132 +     * 
   1.133 +     * @param buf
   1.134 +     * @param len
   1.135 +     * @return
   1.136 +     */
   1.137 +    private static int bufToHash(@NoLength char[] buf, int len) {
   1.138 +        int hash = len;
   1.139 +        hash <<= 5;
   1.140 +        hash += buf[0] - 0x60;
   1.141 +        int j = len;
   1.142 +        for (int i = 0; i < 4 && j > 0; i++) {
   1.143 +            j--;
   1.144 +            hash <<= 5;
   1.145 +            hash += buf[j] - 0x60;
   1.146 +        }
   1.147 +        return hash;
   1.148 +    }
   1.149 +
   1.150 +    private ElementName(@Local String name, @Local String camelCaseName,
   1.151 +            int flags) {
   1.152 +        this.name = name;
   1.153 +        this.camelCaseName = camelCaseName;
   1.154 +        this.flags = flags;
   1.155 +    }
   1.156 +
   1.157 +    protected ElementName(@Local String name) {
   1.158 +        this.name = name;
   1.159 +        this.camelCaseName = name;
   1.160 +        this.flags = TreeBuilder.OTHER | CUSTOM;
   1.161 +    }
   1.162 +    
   1.163 +    @Virtual void release() {
   1.164 +        // No-op in Java. 
   1.165 +        // Implement as delete this in subclass.
   1.166 +        // Be sure to release the local name
   1.167 +    }
   1.168 +    
   1.169 +    @SuppressWarnings("unused") @Virtual private void destructor() {
   1.170 +    }
   1.171 +
   1.172 +    @Virtual public ElementName cloneElementName(Interner interner) {
   1.173 +        return this;
   1.174 +    }
   1.175 +    
   1.176 +    // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
   1.177 +
   1.178 +//    /**
   1.179 +//     * @see java.lang.Object#toString()
   1.180 +//     */
   1.181 +//    @Override public String toString() {
   1.182 +//        return "(\"" + name + "\", \"" + camelCaseName + "\", " + decomposedFlags() + ")";
   1.183 +//    }
   1.184 +//
   1.185 +//    private String decomposedFlags() {
   1.186 +//        StringBuilder buf = new StringBuilder("TreeBuilder.");
   1.187 +//        buf.append(treeBuilderGroupToName());
   1.188 +//        if ((flags & SPECIAL) != 0) {
   1.189 +//            buf.append(" | SPECIAL");
   1.190 +//        }
   1.191 +//        if ((flags & FOSTER_PARENTING) != 0) {
   1.192 +//            buf.append(" | FOSTER_PARENTING");
   1.193 +//        }
   1.194 +//        if ((flags & SCOPING) != 0) {
   1.195 +//            buf.append(" | SCOPING");
   1.196 +//        }
   1.197 +//        if ((flags & SCOPING_AS_MATHML) != 0) {
   1.198 +//            buf.append(" | SCOPING_AS_MATHML");
   1.199 +//        }
   1.200 +//        if ((flags & SCOPING_AS_SVG) != 0) {
   1.201 +//            buf.append(" | SCOPING_AS_SVG");
   1.202 +//        }
   1.203 +//        if ((flags & OPTIONAL_END_TAG) != 0) {
   1.204 +//            buf.append(" | OPTIONAL_END_TAG");
   1.205 +//        }
   1.206 +//        return buf.toString();
   1.207 +//    }
   1.208 +//
   1.209 +//    private String constName() {
   1.210 +//        char[] buf = new char[name.length()];
   1.211 +//        for (int i = 0; i < name.length(); i++) {
   1.212 +//            char c = name.charAt(i);
   1.213 +//            if (c == '-') {
   1.214 +//                buf[i] = '_';
   1.215 +//            } else if (c >= '0' && c <= '9') {
   1.216 +//                buf[i] = c;
   1.217 +//            } else {
   1.218 +//                buf[i] = (char) (c - 0x20);
   1.219 +//            }
   1.220 +//        }
   1.221 +//        return new String(buf);
   1.222 +//    }
   1.223 +//
   1.224 +//    private int hash() {
   1.225 +//        return bufToHash(name.toCharArray(), name.length());
   1.226 +//    }
   1.227 +//
   1.228 +//    public int compareTo(ElementName other) {
   1.229 +//        int thisHash = this.hash();
   1.230 +//        int otherHash = other.hash();
   1.231 +//        if (thisHash < otherHash) {
   1.232 +//            return -1;
   1.233 +//        } else if (thisHash == otherHash) {
   1.234 +//            return 0;
   1.235 +//        } else {
   1.236 +//            return 1;
   1.237 +//        }
   1.238 +//    }
   1.239 +//
   1.240 +//    private String treeBuilderGroupToName() {
   1.241 +//        switch (getGroup()) {
   1.242 +//            case TreeBuilder.OTHER:
   1.243 +//                return "OTHER";
   1.244 +//            case TreeBuilder.A:
   1.245 +//                return "A";
   1.246 +//            case TreeBuilder.BASE:
   1.247 +//                return "BASE";
   1.248 +//            case TreeBuilder.BODY:
   1.249 +//                return "BODY";
   1.250 +//            case TreeBuilder.BR:
   1.251 +//                return "BR";
   1.252 +//            case TreeBuilder.BUTTON:
   1.253 +//                return "BUTTON";
   1.254 +//            case TreeBuilder.CAPTION:
   1.255 +//                return "CAPTION";
   1.256 +//            case TreeBuilder.COL:
   1.257 +//                return "COL";
   1.258 +//            case TreeBuilder.COLGROUP:
   1.259 +//                return "COLGROUP";
   1.260 +//            case TreeBuilder.FONT:
   1.261 +//                return "FONT";
   1.262 +//            case TreeBuilder.FORM:
   1.263 +//                return "FORM";
   1.264 +//            case TreeBuilder.FRAME:
   1.265 +//                return "FRAME";
   1.266 +//            case TreeBuilder.FRAMESET:
   1.267 +//                return "FRAMESET";
   1.268 +//            case TreeBuilder.IMAGE:
   1.269 +//                return "IMAGE";
   1.270 +//            case TreeBuilder.INPUT:
   1.271 +//                return "INPUT";
   1.272 +//            case TreeBuilder.ISINDEX:
   1.273 +//                return "ISINDEX";
   1.274 +//            case TreeBuilder.LI:
   1.275 +//                return "LI";
   1.276 +//            case TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND:
   1.277 +//                return "LINK_OR_BASEFONT_OR_BGSOUND";
   1.278 +//            case TreeBuilder.MATH:
   1.279 +//                return "MATH";
   1.280 +//            case TreeBuilder.META:
   1.281 +//                return "META";
   1.282 +//            case TreeBuilder.SVG:
   1.283 +//                return "SVG";
   1.284 +//            case TreeBuilder.HEAD:
   1.285 +//                return "HEAD";
   1.286 +//            case TreeBuilder.HR:
   1.287 +//                return "HR";
   1.288 +//            case TreeBuilder.HTML:
   1.289 +//                return "HTML";
   1.290 +//            case TreeBuilder.KEYGEN:
   1.291 +//                return "KEYGEN";
   1.292 +//            case TreeBuilder.NOBR:
   1.293 +//                return "NOBR";
   1.294 +//            case TreeBuilder.NOFRAMES:
   1.295 +//                return "NOFRAMES";
   1.296 +//            case TreeBuilder.NOSCRIPT:
   1.297 +//                return "NOSCRIPT";
   1.298 +//            case TreeBuilder.OPTGROUP:
   1.299 +//                return "OPTGROUP";
   1.300 +//            case TreeBuilder.OPTION:
   1.301 +//                return "OPTION";
   1.302 +//            case TreeBuilder.P:
   1.303 +//                return "P";
   1.304 +//            case TreeBuilder.PLAINTEXT:
   1.305 +//                return "PLAINTEXT";
   1.306 +//            case TreeBuilder.SCRIPT:
   1.307 +//                return "SCRIPT";
   1.308 +//            case TreeBuilder.SELECT:
   1.309 +//                return "SELECT";
   1.310 +//            case TreeBuilder.STYLE:
   1.311 +//                return "STYLE";
   1.312 +//            case TreeBuilder.TABLE:
   1.313 +//                return "TABLE";
   1.314 +//            case TreeBuilder.TEXTAREA:
   1.315 +//                return "TEXTAREA";
   1.316 +//            case TreeBuilder.TITLE:
   1.317 +//                return "TITLE";
   1.318 +//            case TreeBuilder.TEMPLATE:
   1.319 +//                return "TEMPLATE";
   1.320 +//            case TreeBuilder.TR:
   1.321 +//                return "TR";
   1.322 +//            case TreeBuilder.XMP:
   1.323 +//                return "XMP";
   1.324 +//            case TreeBuilder.TBODY_OR_THEAD_OR_TFOOT:
   1.325 +//                return "TBODY_OR_THEAD_OR_TFOOT";
   1.326 +//            case TreeBuilder.TD_OR_TH:
   1.327 +//                return "TD_OR_TH";
   1.328 +//            case TreeBuilder.DD_OR_DT:
   1.329 +//                return "DD_OR_DT";
   1.330 +//            case TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6:
   1.331 +//                return "H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6";
   1.332 +//            case TreeBuilder.OBJECT:
   1.333 +//                return "OBJECT";
   1.334 +//            case TreeBuilder.OUTPUT_OR_LABEL:
   1.335 +//                return "OUTPUT_OR_LABEL";
   1.336 +//            case TreeBuilder.MARQUEE_OR_APPLET:
   1.337 +//                return "MARQUEE_OR_APPLET";
   1.338 +//            case TreeBuilder.PRE_OR_LISTING:
   1.339 +//                return "PRE_OR_LISTING";
   1.340 +//            case TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U:
   1.341 +//                return "B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U";
   1.342 +//            case TreeBuilder.UL_OR_OL_OR_DL:
   1.343 +//                return "UL_OR_OL_OR_DL";
   1.344 +//            case TreeBuilder.IFRAME:
   1.345 +//                return "IFRAME";
   1.346 +//            case TreeBuilder.NOEMBED:
   1.347 +//                return "NOEMBED";
   1.348 +//            case TreeBuilder.EMBED:
   1.349 +//                return "EMBED";
   1.350 +//            case TreeBuilder.IMG:
   1.351 +//                return "IMG";
   1.352 +//            case TreeBuilder.AREA_OR_WBR:
   1.353 +//                return "AREA_OR_WBR";
   1.354 +//            case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
   1.355 +//                return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU";
   1.356 +//            case TreeBuilder.FIELDSET:
   1.357 +//                return "FIELDSET";
   1.358 +//            case TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY:
   1.359 +//                return "ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY";
   1.360 +//            case TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR:
   1.361 +//                return "RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR";
   1.362 +//            case TreeBuilder.RT_OR_RP:
   1.363 +//                return "RT_OR_RP";
   1.364 +//            case TreeBuilder.PARAM_OR_SOURCE_OR_TRACK:
   1.365 +//                return "PARAM_OR_SOURCE_OR_TRACK";
   1.366 +//            case TreeBuilder.MGLYPH_OR_MALIGNMARK:
   1.367 +//                return "MGLYPH_OR_MALIGNMARK";
   1.368 +//            case TreeBuilder.MI_MO_MN_MS_MTEXT:
   1.369 +//                return "MI_MO_MN_MS_MTEXT";
   1.370 +//            case TreeBuilder.ANNOTATION_XML:
   1.371 +//                return "ANNOTATION_XML";
   1.372 +//            case TreeBuilder.FOREIGNOBJECT_OR_DESC:
   1.373 +//                return "FOREIGNOBJECT_OR_DESC";
   1.374 +//            case TreeBuilder.MENUITEM:
   1.375 +//                return "MENUITEM";
   1.376 +//        }
   1.377 +//        return null;
   1.378 +//    }
   1.379 +//
   1.380 +//    /**
   1.381 +//     * Regenerate self
   1.382 +//     *
   1.383 +//     * @param args
   1.384 +//     */
   1.385 +//    public static void main(String[] args) {
   1.386 +//        Arrays.sort(ELEMENT_NAMES);
   1.387 +//        for (int i = 1; i < ELEMENT_NAMES.length; i++) {
   1.388 +//            if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) {
   1.389 +//                System.err.println("Hash collision: " + ELEMENT_NAMES[i].name
   1.390 +//                        + ", " + ELEMENT_NAMES[i - 1].name);
   1.391 +//                return;
   1.392 +//            }
   1.393 +//        }
   1.394 +//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
   1.395 +//            ElementName el = ELEMENT_NAMES[i];
   1.396 +//            System.out.println("public static final ElementName "
   1.397 +//                    + el.constName() + " = new ElementName" + el.toString()
   1.398 +//                    + ";");
   1.399 +//        }
   1.400 +//        System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {");
   1.401 +//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
   1.402 +//            ElementName el = ELEMENT_NAMES[i];
   1.403 +//            System.out.println(el.constName() + ",");
   1.404 +//        }
   1.405 +//        System.out.println("};");
   1.406 +//        System.out.println("private final static int[] ELEMENT_HASHES = {");
   1.407 +//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
   1.408 +//            ElementName el = ELEMENT_NAMES[i];
   1.409 +//            System.out.println(Integer.toString(el.hash()) + ",");
   1.410 +//        }
   1.411 +//        System.out.println("};");
   1.412 +//    }
   1.413 +
   1.414 +    // START GENERATED CODE
   1.415 +    public static final ElementName A = new ElementName("a", "a", TreeBuilder.A);
   1.416 +    public static final ElementName B = new ElementName("b", "b", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.417 +    public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER);
   1.418 +    public static final ElementName I = new ElementName("i", "i", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.419 +    public static final ElementName P = new ElementName("p", "p", TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG);
   1.420 +    public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER);
   1.421 +    public static final ElementName S = new ElementName("s", "s", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.422 +    public static final ElementName U = new ElementName("u", "u", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.423 +    public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR | SPECIAL);
   1.424 +    public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER);
   1.425 +    public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER);
   1.426 +    public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG);
   1.427 +    public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
   1.428 +    public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG);
   1.429 +    public static final ElementName EM = new ElementName("em", "em", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.430 +    public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER);
   1.431 +    public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER);
   1.432 +    public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   1.433 +    public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   1.434 +    public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   1.435 +    public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   1.436 +    public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   1.437 +    public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   1.438 +    public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER);
   1.439 +    public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR | SPECIAL);
   1.440 +    public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER);
   1.441 +    public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG);
   1.442 +    public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER);
   1.443 +    public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER);
   1.444 +    public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   1.445 +    public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   1.446 +    public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   1.447 +    public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   1.448 +    public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
   1.449 +    public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER);
   1.450 +    public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER);
   1.451 +    public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG);
   1.452 +    public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG);
   1.453 +    public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG);
   1.454 +    public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG);
   1.455 +    public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   1.456 +    public static final ElementName TT = new ElementName("tt", "tt", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.457 +    public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
   1.458 +    public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER);
   1.459 +    public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER);
   1.460 +    public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER);
   1.461 +    public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.462 +    public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER);
   1.463 +    public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER);
   1.464 +    public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL | SPECIAL);
   1.465 +    public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER);
   1.466 +    public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER);
   1.467 +    public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER);
   1.468 +    public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER);
   1.469 +    public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.470 +    public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   1.471 +    public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER);
   1.472 +    public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER);
   1.473 +    public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER);
   1.474 +    public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.IMG | SPECIAL);
   1.475 +    public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER);
   1.476 +    public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER);
   1.477 +    public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER);
   1.478 +    public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER);
   1.479 +    public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER);
   1.480 +    public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER);
   1.481 +    public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER);
   1.482 +    public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER);
   1.483 +    public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER);
   1.484 +    public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER);
   1.485 +    public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER);
   1.486 +    public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER);
   1.487 +    public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER);
   1.488 +    public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.489 +    public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING | SPECIAL);
   1.490 +    public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER);
   1.491 +    public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   1.492 +    public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER);
   1.493 +    public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG);
   1.494 +    public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER);
   1.495 +    public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER);
   1.496 +    public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER);
   1.497 +    public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   1.498 +    public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER);
   1.499 +    public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER);
   1.500 +    public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER);
   1.501 +    public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   1.502 +    public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_WBR | SPECIAL);
   1.503 +    public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP | SPECIAL);
   1.504 +    public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER);
   1.505 +    public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_WBR | SPECIAL);
   1.506 +    public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER);
   1.507 +    public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE | SPECIAL);
   1.508 +    public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER);
   1.509 +    public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG);
   1.510 +    public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER);
   1.511 +    public static final ElementName CODE = new ElementName("code", "code", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.512 +    public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER);
   1.513 +    public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER);
   1.514 +    public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER);
   1.515 +    public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER);
   1.516 +    public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER);
   1.517 +    public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG);
   1.518 +    public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER);
   1.519 +    public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER);
   1.520 +    public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM | SPECIAL);
   1.521 +    public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT);
   1.522 +    public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER);
   1.523 +    public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD | SPECIAL | OPTIONAL_END_TAG);
   1.524 +    public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG);
   1.525 +    public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER);
   1.526 +    public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
   1.527 +    public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER);
   1.528 +    public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META | SPECIAL);
   1.529 +    public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER);
   1.530 +    public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER);
   1.531 +    public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH);
   1.532 +    public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER);
   1.533 +    public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER);
   1.534 +    public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER);
   1.535 +    public static final ElementName MAIN = new ElementName("main", "main", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.536 +    public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER);
   1.537 +    public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   1.538 +    public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER);
   1.539 +    public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER);
   1.540 +    public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR);
   1.541 +    public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER);
   1.542 +    public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER);
   1.543 +    public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER);
   1.544 +    public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER);
   1.545 +    public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER);
   1.546 +    public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER);
   1.547 +    public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER);
   1.548 +    public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER);
   1.549 +    public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   1.550 +    public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER);
   1.551 +    public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER);
   1.552 +    public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   1.553 +    public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER);
   1.554 +    public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER);
   1.555 +    public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER);
   1.556 +    public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER);
   1.557 +    public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER);
   1.558 +    public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER);
   1.559 +    public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER);
   1.560 +    public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER);
   1.561 +    public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER);
   1.562 +    public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.563 +    public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER);
   1.564 +    public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER);
   1.565 +    public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED | SPECIAL);
   1.566 +    public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME | SPECIAL);
   1.567 +    public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER);
   1.568 +    public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER);
   1.569 +    public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER);
   1.570 +    public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER);
   1.571 +    public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE);
   1.572 +    public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER);
   1.573 +    public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT | SPECIAL);
   1.574 +    public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OUTPUT_OR_LABEL);
   1.575 +    public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER);
   1.576 +    public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER);
   1.577 +    public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER);
   1.578 +    public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER);
   1.579 +    public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER);
   1.580 +    public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER);
   1.581 +    public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER);
   1.582 +    public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER);
   1.583 +    public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   1.584 +    public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER);
   1.585 +    public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER);
   1.586 +    public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL);
   1.587 +    public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER);
   1.588 +    public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER);
   1.589 +    public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE | SPECIAL);
   1.590 +    public static final ElementName SMALL = new ElementName("small", "small", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.591 +    public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   1.592 +    public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE | SPECIAL | FOSTER_PARENTING | SCOPING);
   1.593 +    public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE | SPECIAL | SCOPING_AS_SVG);
   1.594 +    public static final ElementName TRACK = new ElementName("track", "track", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL);
   1.595 +    public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER);
   1.596 +    public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER);
   1.597 +    public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   1.598 +    public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   1.599 +    public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER);
   1.600 +    public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER);
   1.601 +    public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER);
   1.602 +    public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER);
   1.603 +    public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER);
   1.604 +    public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER);
   1.605 +    public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER);
   1.606 +    public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER);
   1.607 +    public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING);
   1.608 +    public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER);
   1.609 +    public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER);
   1.610 +    public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON | SPECIAL);
   1.611 +    public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER);
   1.612 +    public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   1.613 +    public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER);
   1.614 +    public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER);
   1.615 +    public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER);
   1.616 +    public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER);
   1.617 +    public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER);
   1.618 +    public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER);
   1.619 +    public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER);
   1.620 +    public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.621 +    public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER);
   1.622 +    public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER);
   1.623 +    public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.624 +    public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.625 +    public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.626 +    public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME | SPECIAL);
   1.627 +    public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN);
   1.628 +    public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER);
   1.629 +    public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER);
   1.630 +    public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER);
   1.631 +    public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER);
   1.632 +    public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER);
   1.633 +    public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK);
   1.634 +    public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER);
   1.635 +    public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER);
   1.636 +    public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER);
   1.637 +    public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER);
   1.638 +    public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER);
   1.639 +    public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER);
   1.640 +    public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION | OPTIONAL_END_TAG);
   1.641 +    public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT | SPECIAL | SCOPING);
   1.642 +    public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT_OR_LABEL);
   1.643 +    public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER);
   1.644 +    public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK);
   1.645 +    public static final ElementName STRIKE = new ElementName("strike", "strike", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.646 +    public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   1.647 +    public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER);
   1.648 +    public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER);
   1.649 +    public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT | SPECIAL);
   1.650 +    public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER);
   1.651 +    public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT | SPECIAL);
   1.652 +    public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER);
   1.653 +    public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER);
   1.654 +    public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.655 +    public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER);
   1.656 +    public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER);
   1.657 +    public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER);
   1.658 +    public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER);
   1.659 +    public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER);
   1.660 +    public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER);
   1.661 +    public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER);
   1.662 +    public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER);
   1.663 +    public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.664 +    public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
   1.665 +    public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER);
   1.666 +    public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER);
   1.667 +    public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER);
   1.668 +    public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION | SPECIAL | SCOPING);
   1.669 +    public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER);
   1.670 +    public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER);
   1.671 +    public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.672 +    public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER);
   1.673 +    public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER);
   1.674 +    public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER);
   1.675 +    public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER);
   1.676 +    public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER);
   1.677 +    public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER);
   1.678 +    public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER);
   1.679 +    public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER);
   1.680 +    public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER);
   1.681 +    public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER);
   1.682 +    public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER);
   1.683 +    public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER);
   1.684 +    public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX | SPECIAL);
   1.685 +    public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER);
   1.686 +    public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING | SPECIAL);
   1.687 +    public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER);
   1.688 +    public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER);
   1.689 +    public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING);
   1.690 +    public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER);
   1.691 +    public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER);
   1.692 +    public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED | SPECIAL);
   1.693 +    public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER);
   1.694 +    public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER);
   1.695 +    public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER);
   1.696 +    public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER);
   1.697 +    public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.698 +    public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.699 +    public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER);
   1.700 +    public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER);
   1.701 +    public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER);
   1.702 +    public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
   1.703 +    public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER);
   1.704 +    public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER);
   1.705 +    public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG);
   1.706 +    public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER);
   1.707 +    public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER);
   1.708 +    public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET | SPECIAL);
   1.709 +    public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET | SPECIAL);
   1.710 +    public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER);
   1.711 +    public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER);
   1.712 +    public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER);
   1.713 +    public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER);
   1.714 +    public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER);
   1.715 +    public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER);
   1.716 +    public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER);
   1.717 +    public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER);
   1.718 +    public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER);
   1.719 +    public static final ElementName MENUITEM = new ElementName("menuitem", "menuitem", TreeBuilder.MENUITEM);
   1.720 +    public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER);
   1.721 +    public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES | SPECIAL);
   1.722 +    public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT | SPECIAL);
   1.723 +    public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP | OPTIONAL_END_TAG);
   1.724 +    public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER);
   1.725 +    public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER);
   1.726 +    public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER);
   1.727 +    public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER);
   1.728 +    public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER);
   1.729 +    public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER);
   1.730 +    public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA | SPECIAL);
   1.731 +    public static final ElementName TEMPLATE = new ElementName("template", "template", TreeBuilder.TEMPLATE | SPECIAL | SCOPING);
   1.732 +    public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER);
   1.733 +    public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER);
   1.734 +    public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER);
   1.735 +    public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER);
   1.736 +    public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER);
   1.737 +    public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER);
   1.738 +    public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER);
   1.739 +    public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER);
   1.740 +    public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER);
   1.741 +    public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER);
   1.742 +    public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER);
   1.743 +    public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER);
   1.744 +    public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER);
   1.745 +    public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER);
   1.746 +    public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER);
   1.747 +    public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT | SPECIAL);
   1.748 +    public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER);
   1.749 +    public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER);
   1.750 +    public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER);
   1.751 +    public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER);
   1.752 +    public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   1.753 +    public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER);
   1.754 +    public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER);
   1.755 +    public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER);
   1.756 +    public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   1.757 +    public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER);
   1.758 +    public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK);
   1.759 +    public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER);
   1.760 +    public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER);
   1.761 +    public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER);
   1.762 +    public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER);
   1.763 +    public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER);
   1.764 +    public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER);
   1.765 +    public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER);
   1.766 +    public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER);
   1.767 +    public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER);
   1.768 +    public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER);
   1.769 +    public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER);
   1.770 +    public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER);
   1.771 +    public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER);
   1.772 +    public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER);
   1.773 +    public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER);
   1.774 +    public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER);
   1.775 +    public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER);
   1.776 +    public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER);
   1.777 +    public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER);
   1.778 +    public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER);
   1.779 +    public static final ElementName FEDROPSHADOW = new ElementName("fedropshadow", "feDropShadow", TreeBuilder.OTHER);
   1.780 +    public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER);
   1.781 +    public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER);
   1.782 +    public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER);
   1.783 +    public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER);
   1.784 +    public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER);
   1.785 +    public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER);
   1.786 +    public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG);
   1.787 +    public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER);
   1.788 +    public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER);
   1.789 +    public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER);
   1.790 +    public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER);
   1.791 +    public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER);
   1.792 +    public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML);
   1.793 +    public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER);
   1.794 +    public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER);
   1.795 +    public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER);
   1.796 +    public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER);
   1.797 +    public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER);
   1.798 +    public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER);
   1.799 +    public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER);
   1.800 +    public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER);
   1.801 +    public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER);
   1.802 +    public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER);
   1.803 +    public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER);
   1.804 +    public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER);
   1.805 +    public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER);
   1.806 +    public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER);
   1.807 +    public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER);
   1.808 +    public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER);
   1.809 +    private final static @NoLength ElementName[] ELEMENT_NAMES = {
   1.810 +    A,
   1.811 +    B,
   1.812 +    G,
   1.813 +    I,
   1.814 +    P,
   1.815 +    Q,
   1.816 +    S,
   1.817 +    U,
   1.818 +    BR,
   1.819 +    CI,
   1.820 +    CN,
   1.821 +    DD,
   1.822 +    DL,
   1.823 +    DT,
   1.824 +    EM,
   1.825 +    EQ,
   1.826 +    FN,
   1.827 +    H1,
   1.828 +    H2,
   1.829 +    H3,
   1.830 +    H4,
   1.831 +    H5,
   1.832 +    H6,
   1.833 +    GT,
   1.834 +    HR,
   1.835 +    IN,
   1.836 +    LI,
   1.837 +    LN,
   1.838 +    LT,
   1.839 +    MI,
   1.840 +    MN,
   1.841 +    MO,
   1.842 +    MS,
   1.843 +    OL,
   1.844 +    OR,
   1.845 +    PI,
   1.846 +    RP,
   1.847 +    RT,
   1.848 +    TD,
   1.849 +    TH,
   1.850 +    TR,
   1.851 +    TT,
   1.852 +    UL,
   1.853 +    AND,
   1.854 +    ARG,
   1.855 +    ABS,
   1.856 +    BIG,
   1.857 +    BDO,
   1.858 +    CSC,
   1.859 +    COL,
   1.860 +    COS,
   1.861 +    COT,
   1.862 +    DEL,
   1.863 +    DFN,
   1.864 +    DIR,
   1.865 +    DIV,
   1.866 +    EXP,
   1.867 +    GCD,
   1.868 +    GEQ,
   1.869 +    IMG,
   1.870 +    INS,
   1.871 +    INT,
   1.872 +    KBD,
   1.873 +    LOG,
   1.874 +    LCM,
   1.875 +    LEQ,
   1.876 +    MTD,
   1.877 +    MIN,
   1.878 +    MAP,
   1.879 +    MTR,
   1.880 +    MAX,
   1.881 +    NEQ,
   1.882 +    NOT,
   1.883 +    NAV,
   1.884 +    PRE,
   1.885 +    REM,
   1.886 +    SUB,
   1.887 +    SEC,
   1.888 +    SVG,
   1.889 +    SUM,
   1.890 +    SIN,
   1.891 +    SEP,
   1.892 +    SUP,
   1.893 +    SET,
   1.894 +    TAN,
   1.895 +    USE,
   1.896 +    VAR,
   1.897 +    WBR,
   1.898 +    XMP,
   1.899 +    XOR,
   1.900 +    AREA,
   1.901 +    ABBR,
   1.902 +    BASE,
   1.903 +    BVAR,
   1.904 +    BODY,
   1.905 +    CARD,
   1.906 +    CODE,
   1.907 +    CITE,
   1.908 +    CSCH,
   1.909 +    COSH,
   1.910 +    COTH,
   1.911 +    CURL,
   1.912 +    DESC,
   1.913 +    DIFF,
   1.914 +    DEFS,
   1.915 +    FORM,
   1.916 +    FONT,
   1.917 +    GRAD,
   1.918 +    HEAD,
   1.919 +    HTML,
   1.920 +    LINE,
   1.921 +    LINK,
   1.922 +    LIST,
   1.923 +    META,
   1.924 +    MSUB,
   1.925 +    MODE,
   1.926 +    MATH,
   1.927 +    MARK,
   1.928 +    MASK,
   1.929 +    MEAN,
   1.930 +    MAIN,
   1.931 +    MSUP,
   1.932 +    MENU,
   1.933 +    MROW,
   1.934 +    NONE,
   1.935 +    NOBR,
   1.936 +    NEST,
   1.937 +    PATH,
   1.938 +    PLUS,
   1.939 +    RULE,
   1.940 +    REAL,
   1.941 +    RELN,
   1.942 +    RECT,
   1.943 +    ROOT,
   1.944 +    RUBY,
   1.945 +    SECH,
   1.946 +    SINH,
   1.947 +    SPAN,
   1.948 +    SAMP,
   1.949 +    STOP,
   1.950 +    SDEV,
   1.951 +    TIME,
   1.952 +    TRUE,
   1.953 +    TREF,
   1.954 +    TANH,
   1.955 +    TEXT,
   1.956 +    VIEW,
   1.957 +    ASIDE,
   1.958 +    AUDIO,
   1.959 +    APPLY,
   1.960 +    EMBED,
   1.961 +    FRAME,
   1.962 +    FALSE,
   1.963 +    FLOOR,
   1.964 +    GLYPH,
   1.965 +    HKERN,
   1.966 +    IMAGE,
   1.967 +    IDENT,
   1.968 +    INPUT,
   1.969 +    LABEL,
   1.970 +    LIMIT,
   1.971 +    MFRAC,
   1.972 +    MPATH,
   1.973 +    METER,
   1.974 +    MOVER,
   1.975 +    MINUS,
   1.976 +    MROOT,
   1.977 +    MSQRT,
   1.978 +    MTEXT,
   1.979 +    NOTIN,
   1.980 +    PIECE,
   1.981 +    PARAM,
   1.982 +    POWER,
   1.983 +    REALS,
   1.984 +    STYLE,
   1.985 +    SMALL,
   1.986 +    THEAD,
   1.987 +    TABLE,
   1.988 +    TITLE,
   1.989 +    TRACK,
   1.990 +    TSPAN,
   1.991 +    TIMES,
   1.992 +    TFOOT,
   1.993 +    TBODY,
   1.994 +    UNION,
   1.995 +    VKERN,
   1.996 +    VIDEO,
   1.997 +    ARCSEC,
   1.998 +    ARCCSC,
   1.999 +    ARCTAN,
  1.1000 +    ARCSIN,
  1.1001 +    ARCCOS,
  1.1002 +    APPLET,
  1.1003 +    ARCCOT,
  1.1004 +    APPROX,
  1.1005 +    BUTTON,
  1.1006 +    CIRCLE,
  1.1007 +    CENTER,
  1.1008 +    CURSOR,
  1.1009 +    CANVAS,
  1.1010 +    DIVIDE,
  1.1011 +    DEGREE,
  1.1012 +    DOMAIN,
  1.1013 +    EXISTS,
  1.1014 +    FETILE,
  1.1015 +    FIGURE,
  1.1016 +    FORALL,
  1.1017 +    FILTER,
  1.1018 +    FOOTER,
  1.1019 +    HGROUP,
  1.1020 +    HEADER,
  1.1021 +    IFRAME,
  1.1022 +    KEYGEN,
  1.1023 +    LAMBDA,
  1.1024 +    LEGEND,
  1.1025 +    MSPACE,
  1.1026 +    MTABLE,
  1.1027 +    MSTYLE,
  1.1028 +    MGLYPH,
  1.1029 +    MEDIAN,
  1.1030 +    MUNDER,
  1.1031 +    MARKER,
  1.1032 +    MERROR,
  1.1033 +    MOMENT,
  1.1034 +    MATRIX,
  1.1035 +    OPTION,
  1.1036 +    OBJECT,
  1.1037 +    OUTPUT,
  1.1038 +    PRIMES,
  1.1039 +    SOURCE,
  1.1040 +    STRIKE,
  1.1041 +    STRONG,
  1.1042 +    SWITCH,
  1.1043 +    SYMBOL,
  1.1044 +    SELECT,
  1.1045 +    SUBSET,
  1.1046 +    SCRIPT,
  1.1047 +    TBREAK,
  1.1048 +    VECTOR,
  1.1049 +    ARTICLE,
  1.1050 +    ANIMATE,
  1.1051 +    ARCSECH,
  1.1052 +    ARCCSCH,
  1.1053 +    ARCTANH,
  1.1054 +    ARCSINH,
  1.1055 +    ARCCOSH,
  1.1056 +    ARCCOTH,
  1.1057 +    ACRONYM,
  1.1058 +    ADDRESS,
  1.1059 +    BGSOUND,
  1.1060 +    COMPOSE,
  1.1061 +    CEILING,
  1.1062 +    CSYMBOL,
  1.1063 +    CAPTION,
  1.1064 +    DISCARD,
  1.1065 +    DECLARE,
  1.1066 +    DETAILS,
  1.1067 +    ELLIPSE,
  1.1068 +    FEFUNCA,
  1.1069 +    FEFUNCB,
  1.1070 +    FEBLEND,
  1.1071 +    FEFLOOD,
  1.1072 +    FEIMAGE,
  1.1073 +    FEMERGE,
  1.1074 +    FEFUNCG,
  1.1075 +    FEFUNCR,
  1.1076 +    HANDLER,
  1.1077 +    INVERSE,
  1.1078 +    IMPLIES,
  1.1079 +    ISINDEX,
  1.1080 +    LOGBASE,
  1.1081 +    LISTING,
  1.1082 +    MFENCED,
  1.1083 +    MPADDED,
  1.1084 +    MARQUEE,
  1.1085 +    MACTION,
  1.1086 +    MSUBSUP,
  1.1087 +    NOEMBED,
  1.1088 +    POLYGON,
  1.1089 +    PATTERN,
  1.1090 +    PRODUCT,
  1.1091 +    SETDIFF,
  1.1092 +    SECTION,
  1.1093 +    SUMMARY,
  1.1094 +    TENDSTO,
  1.1095 +    UPLIMIT,
  1.1096 +    ALTGLYPH,
  1.1097 +    BASEFONT,
  1.1098 +    CLIPPATH,
  1.1099 +    CODOMAIN,
  1.1100 +    COLGROUP,
  1.1101 +    EMPTYSET,
  1.1102 +    FACTOROF,
  1.1103 +    FIELDSET,
  1.1104 +    FRAMESET,
  1.1105 +    FEOFFSET,
  1.1106 +    GLYPHREF,
  1.1107 +    INTERVAL,
  1.1108 +    INTEGERS,
  1.1109 +    INFINITY,
  1.1110 +    LISTENER,
  1.1111 +    LOWLIMIT,
  1.1112 +    METADATA,
  1.1113 +    MENCLOSE,
  1.1114 +    MENUITEM,
  1.1115 +    MPHANTOM,
  1.1116 +    NOFRAMES,
  1.1117 +    NOSCRIPT,
  1.1118 +    OPTGROUP,
  1.1119 +    POLYLINE,
  1.1120 +    PREFETCH,
  1.1121 +    PROGRESS,
  1.1122 +    PRSUBSET,
  1.1123 +    QUOTIENT,
  1.1124 +    SELECTOR,
  1.1125 +    TEXTAREA,
  1.1126 +    TEMPLATE,
  1.1127 +    TEXTPATH,
  1.1128 +    VARIANCE,
  1.1129 +    ANIMATION,
  1.1130 +    CONJUGATE,
  1.1131 +    CONDITION,
  1.1132 +    COMPLEXES,
  1.1133 +    FONT_FACE,
  1.1134 +    FACTORIAL,
  1.1135 +    INTERSECT,
  1.1136 +    IMAGINARY,
  1.1137 +    LAPLACIAN,
  1.1138 +    MATRIXROW,
  1.1139 +    NOTSUBSET,
  1.1140 +    OTHERWISE,
  1.1141 +    PIECEWISE,
  1.1142 +    PLAINTEXT,
  1.1143 +    RATIONALS,
  1.1144 +    SEMANTICS,
  1.1145 +    TRANSPOSE,
  1.1146 +    ANNOTATION,
  1.1147 +    BLOCKQUOTE,
  1.1148 +    DIVERGENCE,
  1.1149 +    EULERGAMMA,
  1.1150 +    EQUIVALENT,
  1.1151 +    FIGCAPTION,
  1.1152 +    IMAGINARYI,
  1.1153 +    MALIGNMARK,
  1.1154 +    MUNDEROVER,
  1.1155 +    MLABELEDTR,
  1.1156 +    NOTANUMBER,
  1.1157 +    SOLIDCOLOR,
  1.1158 +    ALTGLYPHDEF,
  1.1159 +    DETERMINANT,
  1.1160 +    FEMERGENODE,
  1.1161 +    FECOMPOSITE,
  1.1162 +    FESPOTLIGHT,
  1.1163 +    MALIGNGROUP,
  1.1164 +    MPRESCRIPTS,
  1.1165 +    MOMENTABOUT,
  1.1166 +    NOTPRSUBSET,
  1.1167 +    PARTIALDIFF,
  1.1168 +    ALTGLYPHITEM,
  1.1169 +    ANIMATECOLOR,
  1.1170 +    DATATEMPLATE,
  1.1171 +    EXPONENTIALE,
  1.1172 +    FETURBULENCE,
  1.1173 +    FEPOINTLIGHT,
  1.1174 +    FEDROPSHADOW,
  1.1175 +    FEMORPHOLOGY,
  1.1176 +    OUTERPRODUCT,
  1.1177 +    ANIMATEMOTION,
  1.1178 +    COLOR_PROFILE,
  1.1179 +    FONT_FACE_SRC,
  1.1180 +    FONT_FACE_URI,
  1.1181 +    FOREIGNOBJECT,
  1.1182 +    FECOLORMATRIX,
  1.1183 +    MISSING_GLYPH,
  1.1184 +    MMULTISCRIPTS,
  1.1185 +    SCALARPRODUCT,
  1.1186 +    VECTORPRODUCT,
  1.1187 +    ANNOTATION_XML,
  1.1188 +    DEFINITION_SRC,
  1.1189 +    FONT_FACE_NAME,
  1.1190 +    FEGAUSSIANBLUR,
  1.1191 +    FEDISTANTLIGHT,
  1.1192 +    LINEARGRADIENT,
  1.1193 +    NATURALNUMBERS,
  1.1194 +    RADIALGRADIENT,
  1.1195 +    ANIMATETRANSFORM,
  1.1196 +    CARTESIANPRODUCT,
  1.1197 +    FONT_FACE_FORMAT,
  1.1198 +    FECONVOLVEMATRIX,
  1.1199 +    FEDIFFUSELIGHTING,
  1.1200 +    FEDISPLACEMENTMAP,
  1.1201 +    FESPECULARLIGHTING,
  1.1202 +    DOMAINOFAPPLICATION,
  1.1203 +    FECOMPONENTTRANSFER,
  1.1204 +    };
  1.1205 +    private final static int[] ELEMENT_HASHES = {
  1.1206 +    1057,
  1.1207 +    1090,
  1.1208 +    1255,
  1.1209 +    1321,
  1.1210 +    1552,
  1.1211 +    1585,
  1.1212 +    1651,
  1.1213 +    1717,
  1.1214 +    68162,
  1.1215 +    68899,
  1.1216 +    69059,
  1.1217 +    69764,
  1.1218 +    70020,
  1.1219 +    70276,
  1.1220 +    71077,
  1.1221 +    71205,
  1.1222 +    72134,
  1.1223 +    72232,
  1.1224 +    72264,
  1.1225 +    72296,
  1.1226 +    72328,
  1.1227 +    72360,
  1.1228 +    72392,
  1.1229 +    73351,
  1.1230 +    74312,
  1.1231 +    75209,
  1.1232 +    78124,
  1.1233 +    78284,
  1.1234 +    78476,
  1.1235 +    79149,
  1.1236 +    79309,
  1.1237 +    79341,
  1.1238 +    79469,
  1.1239 +    81295,
  1.1240 +    81487,
  1.1241 +    82224,
  1.1242 +    84498,
  1.1243 +    84626,
  1.1244 +    86164,
  1.1245 +    86292,
  1.1246 +    86612,
  1.1247 +    86676,
  1.1248 +    87445,
  1.1249 +    3183041,
  1.1250 +    3186241,
  1.1251 +    3198017,
  1.1252 +    3218722,
  1.1253 +    3226754,
  1.1254 +    3247715,
  1.1255 +    3256803,
  1.1256 +    3263971,
  1.1257 +    3264995,
  1.1258 +    3289252,
  1.1259 +    3291332,
  1.1260 +    3295524,
  1.1261 +    3299620,
  1.1262 +    3326725,
  1.1263 +    3379303,
  1.1264 +    3392679,
  1.1265 +    3448233,
  1.1266 +    3460553,
  1.1267 +    3461577,
  1.1268 +    3510347,
  1.1269 +    3546604,
  1.1270 +    3552364,
  1.1271 +    3556524,
  1.1272 +    3576461,
  1.1273 +    3586349,
  1.1274 +    3588141,
  1.1275 +    3590797,
  1.1276 +    3596333,
  1.1277 +    3622062,
  1.1278 +    3625454,
  1.1279 +    3627054,
  1.1280 +    3675728,
  1.1281 +    3749042,
  1.1282 +    3771059,
  1.1283 +    3771571,
  1.1284 +    3776211,
  1.1285 +    3782323,
  1.1286 +    3782963,
  1.1287 +    3784883,
  1.1288 +    3785395,
  1.1289 +    3788979,
  1.1290 +    3815476,
  1.1291 +    3839605,
  1.1292 +    3885110,
  1.1293 +    3917911,
  1.1294 +    3948984,
  1.1295 +    3951096,
  1.1296 +    135304769,
  1.1297 +    135858241,
  1.1298 +    136498210,
  1.1299 +    136906434,
  1.1300 +    137138658,
  1.1301 +    137512995,
  1.1302 +    137531875,
  1.1303 +    137548067,
  1.1304 +    137629283,
  1.1305 +    137645539,
  1.1306 +    137646563,
  1.1307 +    137775779,
  1.1308 +    138529956,
  1.1309 +    138615076,
  1.1310 +    139040932,
  1.1311 +    140954086,
  1.1312 +    141179366,
  1.1313 +    141690439,
  1.1314 +    142738600,
  1.1315 +    143013512,
  1.1316 +    146979116,
  1.1317 +    147175724,
  1.1318 +    147475756,
  1.1319 +    147902637,
  1.1320 +    147936877,
  1.1321 +    148017645,
  1.1322 +    148131885,
  1.1323 +    148228141,
  1.1324 +    148229165,
  1.1325 +    148309165,
  1.1326 +    148317229,
  1.1327 +    148395629,
  1.1328 +    148551853,
  1.1329 +    148618829,
  1.1330 +    149076462,
  1.1331 +    149490158,
  1.1332 +    149572782,
  1.1333 +    151277616,
  1.1334 +    151639440,
  1.1335 +    153268914,
  1.1336 +    153486514,
  1.1337 +    153563314,
  1.1338 +    153750706,
  1.1339 +    153763314,
  1.1340 +    153914034,
  1.1341 +    154406067,
  1.1342 +    154417459,
  1.1343 +    154600979,
  1.1344 +    154678323,
  1.1345 +    154680979,
  1.1346 +    154866835,
  1.1347 +    155366708,
  1.1348 +    155375188,
  1.1349 +    155391572,
  1.1350 +    155465780,
  1.1351 +    155869364,
  1.1352 +    158045494,
  1.1353 +    168988979,
  1.1354 +    169321621,
  1.1355 +    169652752,
  1.1356 +    173151309,
  1.1357 +    174240818,
  1.1358 +    174247297,
  1.1359 +    174669292,
  1.1360 +    175391532,
  1.1361 +    176638123,
  1.1362 +    177380397,
  1.1363 +    177879204,
  1.1364 +    177886734,
  1.1365 +    180753473,
  1.1366 +    181020073,
  1.1367 +    181503558,
  1.1368 +    181686320,
  1.1369 +    181999237,
  1.1370 +    181999311,
  1.1371 +    182048201,
  1.1372 +    182074866,
  1.1373 +    182078003,
  1.1374 +    182083764,
  1.1375 +    182920847,
  1.1376 +    184716457,
  1.1377 +    184976961,
  1.1378 +    185145071,
  1.1379 +    187281445,
  1.1380 +    187872052,
  1.1381 +    188100653,
  1.1382 +    188875944,
  1.1383 +    188919873,
  1.1384 +    188920457,
  1.1385 +    189107250,
  1.1386 +    189203987,
  1.1387 +    189371817,
  1.1388 +    189414886,
  1.1389 +    189567458,
  1.1390 +    190266670,
  1.1391 +    191318187,
  1.1392 +    191337609,
  1.1393 +    202479203,
  1.1394 +    202493027,
  1.1395 +    202835587,
  1.1396 +    202843747,
  1.1397 +    203013219,
  1.1398 +    203036048,
  1.1399 +    203045987,
  1.1400 +    203177552,
  1.1401 +    203898516,
  1.1402 +    204648562,
  1.1403 +    205067918,
  1.1404 +    205078130,
  1.1405 +    205096654,
  1.1406 +    205689142,
  1.1407 +    205690439,
  1.1408 +    205988909,
  1.1409 +    207213161,
  1.1410 +    207794484,
  1.1411 +    207800999,
  1.1412 +    208023602,
  1.1413 +    208213644,
  1.1414 +    208213647,
  1.1415 +    210261490,
  1.1416 +    210310273,
  1.1417 +    210940978,
  1.1418 +    213325049,
  1.1419 +    213946445,
  1.1420 +    214055079,
  1.1421 +    215125040,
  1.1422 +    215134273,
  1.1423 +    215135028,
  1.1424 +    215237420,
  1.1425 +    215418148,
  1.1426 +    215553166,
  1.1427 +    215553394,
  1.1428 +    215563858,
  1.1429 +    215627949,
  1.1430 +    215754324,
  1.1431 +    217529652,
  1.1432 +    217713834,
  1.1433 +    217732628,
  1.1434 +    218731945,
  1.1435 +    221417045,
  1.1436 +    221424946,
  1.1437 +    221493746,
  1.1438 +    221515401,
  1.1439 +    221658189,
  1.1440 +    221908140,
  1.1441 +    221910626,
  1.1442 +    221921586,
  1.1443 +    222659762,
  1.1444 +    225001091,
  1.1445 +    236105833,
  1.1446 +    236113965,
  1.1447 +    236194995,
  1.1448 +    236195427,
  1.1449 +    236206132,
  1.1450 +    236206387,
  1.1451 +    236211683,
  1.1452 +    236212707,
  1.1453 +    236381647,
  1.1454 +    236571826,
  1.1455 +    237124271,
  1.1456 +    238210544,
  1.1457 +    238270764,
  1.1458 +    238435405,
  1.1459 +    238501172,
  1.1460 +    239224867,
  1.1461 +    239257644,
  1.1462 +    239710497,
  1.1463 +    240307721,
  1.1464 +    241208789,
  1.1465 +    241241557,
  1.1466 +    241318060,
  1.1467 +    241319404,
  1.1468 +    241343533,
  1.1469 +    241344069,
  1.1470 +    241405397,
  1.1471 +    241765845,
  1.1472 +    243864964,
  1.1473 +    244502085,
  1.1474 +    244946220,
  1.1475 +    245109902,
  1.1476 +    247647266,
  1.1477 +    247707956,
  1.1478 +    248648814,
  1.1479 +    248648836,
  1.1480 +    248682161,
  1.1481 +    248986932,
  1.1482 +    249058914,
  1.1483 +    249697357,
  1.1484 +    252132601,
  1.1485 +    252135604,
  1.1486 +    252317348,
  1.1487 +    255007012,
  1.1488 +    255278388,
  1.1489 +    255641645,
  1.1490 +    256365156,
  1.1491 +    257566121,
  1.1492 +    269763372,
  1.1493 +    271202790,
  1.1494 +    271863856,
  1.1495 +    272049197,
  1.1496 +    272127474,
  1.1497 +    274339449,
  1.1498 +    274939471,
  1.1499 +    275388004,
  1.1500 +    275388005,
  1.1501 +    275388006,
  1.1502 +    275977800,
  1.1503 +    278267602,
  1.1504 +    278513831,
  1.1505 +    278712622,
  1.1506 +    281613765,
  1.1507 +    281683369,
  1.1508 +    282120228,
  1.1509 +    282250732,
  1.1510 +    282498697,
  1.1511 +    282508942,
  1.1512 +    283743649,
  1.1513 +    283787570,
  1.1514 +    284710386,
  1.1515 +    285391148,
  1.1516 +    285478533,
  1.1517 +    285854898,
  1.1518 +    285873762,
  1.1519 +    286931113,
  1.1520 +    288964227,
  1.1521 +    289445441,
  1.1522 +    289591340,
  1.1523 +    289689648,
  1.1524 +    291671489,
  1.1525 +    303512884,
  1.1526 +    305319975,
  1.1527 +    305610036,
  1.1528 +    305764101,
  1.1529 +    308448294,
  1.1530 +    308675890,
  1.1531 +    312085683,
  1.1532 +    312264750,
  1.1533 +    315032867,
  1.1534 +    316391000,
  1.1535 +    317331042,
  1.1536 +    317902135,
  1.1537 +    318950711,
  1.1538 +    319447220,
  1.1539 +    321499182,
  1.1540 +    322538804,
  1.1541 +    323145200,
  1.1542 +    337067316,
  1.1543 +    337826293,
  1.1544 +    339905989,
  1.1545 +    340833697,
  1.1546 +    341457068,
  1.1547 +    342310196,
  1.1548 +    345302593,
  1.1549 +    349554733,
  1.1550 +    349771471,
  1.1551 +    349786245,
  1.1552 +    350819405,
  1.1553 +    356072847,
  1.1554 +    370349192,
  1.1555 +    373962798,
  1.1556 +    375558638,
  1.1557 +    375574835,
  1.1558 +    376053993,
  1.1559 +    383276530,
  1.1560 +    383373833,
  1.1561 +    383407586,
  1.1562 +    384439906,
  1.1563 +    386079012,
  1.1564 +    404133513,
  1.1565 +    404307343,
  1.1566 +    407031852,
  1.1567 +    408072233,
  1.1568 +    409112005,
  1.1569 +    409608425,
  1.1570 +    409713793,
  1.1571 +    409771500,
  1.1572 +    419040932,
  1.1573 +    437730612,
  1.1574 +    439529766,
  1.1575 +    442616365,
  1.1576 +    442813037,
  1.1577 +    443157674,
  1.1578 +    443295316,
  1.1579 +    450118444,
  1.1580 +    450482697,
  1.1581 +    456789668,
  1.1582 +    459935396,
  1.1583 +    471217869,
  1.1584 +    474073645,
  1.1585 +    476230702,
  1.1586 +    476665218,
  1.1587 +    476717289,
  1.1588 +    483014825,
  1.1589 +    485083298,
  1.1590 +    489306281,
  1.1591 +    538364390,
  1.1592 +    540675748,
  1.1593 +    543819186,
  1.1594 +    543958612,
  1.1595 +    576960820,
  1.1596 +    577242548,
  1.1597 +    610515252,
  1.1598 +    642202932,
  1.1599 +    644420819,
  1.1600 +    };
  1.1601 +}

mercurial